:root{--bg-void:#04060b;--bg-deep:#080c14;--bg-surface:#0c1220;--bg-raised:#111827;--bg-elevated:#162032;--bg-glass:#0c1220b8;--accent:#3b82f6;--accent-bright:#60a5fa;--accent-dim:#1d4ed8;--accent-glow:#3b82f666;--accent-glow-intense:#3b82f699;--accent-surface:#3b82f60f;--accent-surface-hover:#3b82f61f;--cyan:#22d3ee;--cyan-dim:#0891b2;--cyan-glow:#22d3ee59;--success:#10b981;--success-bright:#34d399;--success-glow:#10b98166;--success-surface:#10b98114;--danger:#ef4444;--danger-bright:#f87171;--danger-glow:#ef444466;--danger-surface:#ef444414;--warning:#f59e0b;--warning-surface:#f59e0b14;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#475569;--text-ghost:#334155;--border-ghost:#94a3b80f;--border-subtle:#94a3b81a;--border-medium:#94a3b82e;--border-accent:#3b82f64d;--font-heading:"Sora",system-ui,sans-serif;--font-body:"IBM Plex Sans",system-ui,sans-serif;--font-mono:"JetBrains Mono",monospace;--r-xs:6px;--r-sm:10px;--r-md:14px;--r-lg:20px;--r-xl:28px;--r-2xl:36px;--shadow-glow:0 0 40px -8px var(--accent-glow);--shadow-glow-lg:0 0 80px -12px var(--accent-glow-intense);--shadow-card:0 4px 24px -4px #0006,0 0 0 1px var(--border-ghost);--shadow-elevated:0 12px 48px -8px #0009}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-size:16px}body{font-family:var(--font-body);background:var(--bg-void);color:var(--text-primary);min-height:100vh;line-height:1.6;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(800px 500px at 15% 5%,#3b82f612 0%,#0000 70%),radial-gradient(600px 400px at 85% 85%,#22d3ee0a 0%,#0000 70%),radial-gradient(400px 300px,#3b82f608 0%,#0000 70%);position:fixed;inset:0}body:after{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#94a3b808 1px,#0000 1px),linear-gradient(90deg,#94a3b808 1px,#0000 1px);background-size:60px 60px;position:fixed;inset:0}.app-container{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}.app-header{border-bottom:1px solid var(--border-ghost);-webkit-backdrop-filter:blur(24px)saturate(180%);backdrop-filter:blur(24px)saturate(180%);z-index:100;background:#04060bbf;justify-content:space-between;align-items:center;padding:14px 28px;display:flex;position:sticky;top:0}.app-logo{align-items:center;gap:12px;display:flex}.app-logo-icon{border-radius:var(--r-sm);background:linear-gradient(135deg,var(--accent),var(--cyan-dim));width:38px;height:38px;font-family:var(--font-heading);color:#fff;box-shadow:0 0 24px var(--accent-glow),inset 0 1px 0 #ffffff26;justify-content:center;align-items:center;font-size:17px;font-weight:800;display:flex;position:relative}.app-logo-icon:after{content:"";border-radius:calc(var(--r-sm) + 2px);border:1px solid #3b82f640;position:absolute;inset:-2px}.app-logo-text{font-family:var(--font-heading);letter-spacing:-.03em;color:var(--text-primary);font-size:18px;font-weight:700}.app-logo-text span{background:linear-gradient(135deg,var(--accent-bright),var(--cyan));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.app-badge{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);background:#22d3ee14;border:1px solid #22d3ee2e;border-radius:100px;padding:4px 12px;font-size:10px;font-weight:600}.app-main{flex:1;justify-content:center;align-items:center;padding:40px 24px;display:flex}.screen{opacity:0;width:100%;max-width:500px;animation:.6s cubic-bezier(.16,1,.3,1) forwards screenReveal}@keyframes screenReveal{0%{opacity:0;filter:blur(4px);transform:translateY(20px)scale(.98)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}.screen-header{margin-bottom:28px}.screen-title{font-family:var(--font-heading);letter-spacing:-.04em;margin-bottom:10px;font-size:28px;font-weight:700;line-height:1.15}.screen-title-gradient{background:linear-gradient(135deg,var(--text-primary)40%,var(--accent-bright));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.screen-subtitle{color:var(--text-secondary);font-size:15px;font-weight:400;line-height:1.65}.steps{align-items:center;gap:6px;margin-bottom:32px;display:flex}.step-pip{background:var(--border-subtle);border-radius:100px;flex:1;height:3px;transition:all .4s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}.step-pip.active{background:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.step-pip.completed{background:var(--success)}.step-pip.active:after{content:"";background:linear-gradient(90deg,#0000,#fff6,#0000);animation:2s ease-in-out infinite shimmer;position:absolute;inset:0}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.card{background:var(--bg-raised);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:32px;transition:border-color .3s;position:relative;overflow:hidden}.card:before{content:"";background:linear-gradient(90deg,transparent,var(--accent-glow),transparent);opacity:0;height:1px;transition:opacity .3s;position:absolute;top:0;left:0;right:0}.card:hover:before{opacity:1}.card:hover{border-color:var(--border-medium)}.input-group{margin-bottom:28px}.input-label{color:var(--text-secondary);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:6px;margin-bottom:10px;font-size:12px;font-weight:600;display:flex}.input-label-icon{opacity:.7;font-size:14px}.input-wrapper{position:relative}.input-field{background:var(--bg-deep);border:1.5px solid var(--border-medium);border-radius:var(--r-md);width:100%;font-family:var(--font-mono);letter-spacing:.08em;color:var(--text-primary);outline:none;padding:16px 20px;font-size:22px;font-weight:500;transition:all .25s}.input-field::placeholder{color:var(--text-ghost);font-weight:400;font-family:var(--font-body);letter-spacing:.02em;font-size:16px}.input-field:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-surface),var(--shadow-glow);background:var(--bg-surface)}.input-field.has-error{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-surface)}.input-hint{color:var(--text-muted);align-items:center;gap:6px;margin-top:10px;font-size:13px;display:flex}.input-error{color:var(--danger-bright);align-items:center;gap:6px;margin-top:10px;font-size:13px;animation:.4s shakeX;display:flex}@keyframes shakeX{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.btn{border-radius:var(--r-md);font-family:var(--font-heading);letter-spacing:-.01em;cursor:pointer;border:none;justify-content:center;align-items:center;gap:10px;padding:15px 28px;font-size:14px;font-weight:600;transition:all .25s cubic-bezier(.16,1,.3,1);display:inline-flex;position:relative;overflow:hidden}.btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none!important;transform:none!important}.btn-primary{background:linear-gradient(135deg,var(--accent)0%,var(--accent-dim)100%);color:#fff;width:100%;box-shadow:0 4px 24px var(--accent-glow),inset 0 1px 0 #ffffff1a}.btn-primary:before{content:"";opacity:0;background:linear-gradient(135deg,#ffffff1a 0%,#0000 50%);transition:opacity .25s;position:absolute;inset:0}.btn-primary:not(:disabled):hover{box-shadow:0 8px 32px var(--accent-glow-intense),inset 0 1px 0 #ffffff26;transform:translateY(-2px)}.btn-primary:not(:disabled):hover:before{opacity:1}.btn-primary:not(:disabled):active{transform:translateY(0)}.btn-ghost{width:100%;color:var(--text-secondary);border:1px solid var(--border-subtle);background:0 0}.btn-ghost:not(:disabled):hover{background:var(--accent-surface);border-color:var(--border-accent);color:var(--accent-bright)}.btn-success{background:linear-gradient(135deg,var(--success)0%,#059669 100%);color:#fff;width:100%;box-shadow:0 4px 24px var(--success-glow),inset 0 1px 0 #ffffff1a}.capture-wrapper{aspect-ratio:3/4;border-radius:var(--r-xl);width:100%;max-width:500px;box-shadow:var(--shadow-elevated),0 0 0 1px var(--border-ghost);background:#000;position:relative;overflow:hidden}.capture-video{object-fit:cover;width:100%;height:100%;transform:scaleX(-1)}.capture-overlay{pointer-events:none;z-index:2;position:absolute;inset:0}.capture-overlay svg{width:100%;height:100%}.oval-bg{fill:#0000008c}.oval-stroke{fill:none;stroke-width:2.5px;transition:all .4s}.oval-stroke.idle{stroke:#94a3b859;stroke-dasharray:8 6;animation:6s linear infinite dashSpin}.oval-stroke.found{stroke:var(--accent-bright);stroke-dasharray:none;filter:drop-shadow(0 0 10px var(--accent-glow))}.oval-stroke.locked{stroke:var(--success);stroke-dasharray:none;filter:drop-shadow(0 0 14px var(--success-glow))}@keyframes dashSpin{to{stroke-dashoffset:-56px}}.capture-corners{pointer-events:none;z-index:3;position:absolute;inset:0}.corner-mark{border-color:var(--accent);opacity:.5;border-style:solid;border-width:0;width:24px;height:24px;transition:opacity .3s,border-color .3s;position:absolute}.corner-mark.locked{border-color:var(--success);opacity:.8}.corner-tl{border-top-width:2px;border-left-width:2px;border-top-left-radius:8px;top:12%;left:15%}.corner-tr{border-top-width:2px;border-right-width:2px;border-top-right-radius:8px;top:12%;right:15%}.corner-bl{border-bottom-width:2px;border-left-width:2px;border-bottom-left-radius:8px;bottom:22%;left:15%}.corner-br{border-bottom-width:2px;border-right-width:2px;border-bottom-right-radius:8px;bottom:22%;right:15%}.scan-line{background:linear-gradient(90deg,transparent,var(--accent-bright),transparent);z-index:4;opacity:0;pointer-events:none;height:2px;animation:3s ease-in-out infinite scanDown;position:absolute;left:15%;right:15%}.scan-line.active{opacity:.6}@keyframes scanDown{0%{top:14%}50%{top:68%}to{top:14%}}.capture-hud{z-index:5;background:linear-gradient(#0000 0%,#0006 40%,#000000d9 100%);flex-direction:column;align-items:center;gap:16px;padding:28px 24px 24px;display:flex;position:absolute;bottom:0;left:0;right:0}.capture-status{color:#fff;text-shadow:0 1px 8px #0009;align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.status-dot{background:var(--text-muted);border-radius:50%;width:8px;height:8px;transition:all .3s}.status-dot.searching{background:var(--accent);animation:1.5s ease-in-out infinite statusPulse}.status-dot.locked{background:var(--success);box-shadow:0 0 8px var(--success-glow)}@keyframes statusPulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}.auto-capture-ring{justify-content:center;align-items:center;width:72px;height:72px;display:flex;position:relative}.auto-capture-ring svg{position:absolute;inset:0;transform:rotate(-90deg)}.auto-capture-ring .ring-bg{fill:none;stroke:#ffffff26;stroke-width:3px}.auto-capture-ring .ring-progress{fill:none;stroke:var(--success);stroke-width:3px;stroke-linecap:round;filter:drop-shadow(0 0 6px var(--success-glow));transition:stroke-dashoffset .1s linear}.auto-capture-ring .ring-label{font-family:var(--font-mono);color:var(--success-bright);z-index:1;letter-spacing:.05em;font-size:11px;font-weight:600}.capture-loading{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10;background:#000000bf;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.capture-loading-text{color:#fff;letter-spacing:.02em;font-size:13px;font-weight:500}.camera-error{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:20px;height:100%;padding:48px 32px;display:flex}.camera-error-icon{opacity:.4;font-size:56px}.camera-error-msg{color:var(--text-secondary);font-size:15px;line-height:1.6}.processing{text-align:center;flex-direction:column;align-items:center;gap:36px;padding:20px 0;display:flex}.processing-orb{justify-content:center;align-items:center;width:160px;height:160px;display:flex;position:relative}.orb-ring{border:1.5px solid var(--border-subtle);border-radius:50%;position:absolute}.orb-ring:first-child{border-color:var(--accent);opacity:.6;border-top-color:#0000;border-right-color:#0000;animation:2.5s linear infinite orbSpin;inset:0}.orb-ring:nth-child(2){border-color:var(--cyan);opacity:.4;border-bottom-color:#0000;border-left-color:#0000;animation:3.5s linear infinite reverse orbSpin;inset:14px}.orb-ring:nth-child(3){border-color:var(--accent-bright);opacity:.3;border-top-color:#0000;animation:4.5s linear infinite orbSpin;inset:28px}@keyframes orbSpin{to{transform:rotate(360deg)}}.orb-core{background:radial-gradient(circle,var(--accent-surface-hover)0%,transparent 70%);z-index:1;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;font-size:28px;animation:2s ease-in-out infinite orbPulse;display:flex}@keyframes orbPulse{0%,to{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.processing-label{font-family:var(--font-heading);letter-spacing:-.02em;font-size:20px;font-weight:600}.processing-step{color:var(--text-secondary);min-height:20px;font-size:14px;animation:.35s forwards stepFade}@keyframes stepFade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.loading-dots{vertical-align:middle;gap:3px;margin-left:2px;display:inline-flex}.loading-dots span{background:var(--accent);border-radius:50%;width:4px;height:4px;animation:1.4s ease-in-out infinite dotPop}.loading-dots span:nth-child(2){animation-delay:.16s}.loading-dots span:nth-child(3){animation-delay:.32s}@keyframes dotPop{0%,80%,to{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1.1)}}.result{text-align:center}.result-badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-radius:100px;align-items:center;gap:6px;margin-bottom:24px;padding:6px 14px;font-size:11px;font-weight:600;display:inline-flex}.result-badge.clear{color:var(--success-bright);background:var(--success-surface);border:1px solid #10b98133}.result-badge.fraud{color:var(--danger-bright);background:var(--danger-surface);border:1px solid #ef444433}.result-badge.error{color:var(--warning);background:var(--warning-surface);border:1px solid #f59e0b33}.result-icon{opacity:0;border-radius:50%;justify-content:center;align-items:center;width:96px;height:96px;margin:0 auto 24px;font-size:44px;animation:.7s cubic-bezier(.16,1,.3,1) forwards iconPop;display:flex}.result-icon.clear{background:var(--success-surface);box-shadow:0 0 48px var(--success-glow),0 0 96px #10b98126;border:2px solid #10b98140}.result-icon.fraud{background:var(--danger-surface);box-shadow:0 0 48px var(--danger-glow),0 0 96px #ef444426;border:2px solid #ef444440}.result-icon.error{background:var(--warning-surface);border:2px solid #f59e0b40}@keyframes iconPop{0%{opacity:0;transform:scale(.2)rotate(-10deg)}60%{transform:scale(1.15)rotate(3deg)}to{opacity:1;transform:scale(1)rotate(0)}}.result-title{font-family:var(--font-heading);letter-spacing:-.03em;margin-bottom:10px;font-size:24px;font-weight:700}.result-title.clear{color:var(--success-bright)}.result-title.fraud{color:var(--danger-bright)}.result-title.error{color:var(--warning)}.result-desc{color:var(--text-secondary);max-width:380px;margin-bottom:28px;margin-left:auto;margin-right:auto;font-size:15px;line-height:1.65}.result-data{background:var(--bg-deep);border:1px solid var(--border-ghost);border-radius:var(--r-md);margin-bottom:28px;overflow:hidden}.result-row{justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.result-row+.result-row{border-top:1px solid var(--border-ghost)}.result-row-label{color:var(--text-muted);font-size:13px;font-weight:400}.result-row-value{font-family:var(--font-mono);color:var(--text-primary);font-size:13px;font-weight:500}.result-actions{flex-direction:column;gap:10px;display:flex}.spinner{border:2px solid #ffffff26;border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:.7s linear infinite orbSpin}.spinner-lg{border-width:2.5px;width:36px;height:36px}@media (max-width:640px){.app-header{padding:12px 16px}.app-main{padding:24px 16px}.screen-title{font-size:24px}.card{border-radius:var(--r-md);padding:24px}.input-field{padding:14px 16px;font-size:20px}.capture-wrapper{border-radius:var(--r-lg)}}
