:root{--vc-primary:#2b3c72;--vc-primary-dark:#1f2c55;--vc-primary-light:#4a5a95;--vc-surface:#eef1f8;--vc-border:#d8deec;--vc-text-primary:#1a2340;--vc-text-secondary:#5a6480;--vc-success:#1f9d55;--vc-danger:#c0392b;--vc-radius:8px;--vc-shadow:0 1px 3px #2b3c7214, 0 4px 12px #2b3c720a;--vc-font:"Inter", "Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--vc-font);background:var(--vc-surface);color:var(--vc-text-primary);-webkit-tap-highlight-color:transparent}button{font-family:var(--vc-font);border:1px solid var(--vc-border);color:var(--vc-text-primary);border-radius:var(--vc-radius);cursor:pointer;background:#fff;padding:12px 18px;font-size:15px}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--vc-primary);border-color:var(--vc-primary);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:var(--vc-primary-dark)}button.danger{border-color:var(--vc-danger);color:var(--vc-danger);background:#fff}input,select,textarea{font-family:var(--vc-font);border:1px solid var(--vc-border);border-radius:var(--vc-radius);width:100%;color:var(--vc-text-primary);background:#fff;padding:10px 12px;font-size:15px}.app-shell{flex-direction:column;min-height:100%;display:flex}.app-header{background:var(--vc-primary);color:#fff;flex-shrink:0;align-items:center;gap:12px;padding:14px 20px;display:flex}.app-header img{height:28px}.app-header h1{align-items:baseline;gap:8px;margin:0;font-size:16px;font-weight:600;display:flex}.app-version{opacity:.6;font-family:ui-monospace,monospace;font-size:11px;font-weight:400}.app-main{flex:1;width:100%;max-width:480px;margin:0 auto;padding:20px}.card{border:1px solid var(--vc-border);border-radius:var(--vc-radius);box-shadow:var(--vc-shadow);background:#fff;padding:20px}.field-group{margin-bottom:14px}.field-group label{color:var(--vc-text-secondary);margin-bottom:4px;font-size:13px;font-weight:600;display:block}.banner{color:#7a5200;border-radius:var(--vc-radius);background:#fff4e5;border:1px solid #f0c36d;margin-bottom:16px;padding:12px 14px;font-size:14px}.banner.error{border-color:var(--vc-danger);color:var(--vc-danger);background:#fbeae8}.banner.success{border-color:var(--vc-success);color:#14532d;background:#e9f7ef}.button-row{gap:10px;margin-top:16px;display:flex}.button-row button{flex:1}.capture-cta{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:60px 20px;display:flex}.capture-cta p{margin:0;line-height:1.5}.capture-tip{color:var(--vc-text-secondary);font-size:13px;margin-top:-8px!important}.capture-cta .icon-circle{background:var(--vc-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:88px;height:88px;font-size:36px;display:flex}.scan-card{border:2px solid var(--vc-border);width:150px;height:92px;box-shadow:var(--vc-shadow);background:#fff;border-radius:10px;position:relative;overflow:hidden}.scan-line{background:var(--vc-border);border-radius:3px;height:6px;position:absolute;left:14px}.scan-beam{background:linear-gradient(90deg, transparent, var(--vc-primary), transparent);height:3px;box-shadow:0 0 10px var(--vc-primary);animation:1.8s ease-in-out infinite scan-sweep;position:absolute;top:6px;left:0;right:0}@keyframes scan-sweep{0%{opacity:0;top:6px}12%{opacity:1}88%{opacity:1}to{opacity:0;top:78px}}@media (prefers-reduced-motion:reduce){.scan-beam{opacity:.6;animation:none}}
