:root{--bg: #fafaf7;--surface: #f3f1ec;--surface-2: #ebe9e3;--ink: #0f0f0e;--ink-2: #4a4a47;--ink-3: #8a8a85;--rule: #e3e0d8;--brand-green: #2da94a;--brand-green-2: #34c354;--brand-blue: #2570b8;--brand-blue-2: #3a8ad4;--accent: var(--brand-green);--accent-2: var(--brand-green-2);--accent-soft: rgba(45, 169, 74, .1);--accent-blue-soft: rgba(37, 112, 184, .1);--ok: var(--brand-green);--bad: #cc2424;--font-display: "Bricolage Grotesque", system-ui, -apple-system, sans-serif;--font-body: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;--r-sm: 10px;--r-md: 16px;--r-lg: 22px;--ease: cubic-bezier(.22, 1, .36, 1);--shadow-soft: 0 1px 2px rgba(15, 15, 14, .04), 0 10px 28px -10px rgba(15, 15, 14, .1)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{min-height:100vh;background-image:radial-gradient(at 100% 0%,rgba(45,169,74,.07),transparent 50%),radial-gradient(at 0% 100%,rgba(37,112,184,.05),transparent 50%);background-attachment:fixed}#root{position:relative;min-height:100vh}::selection{background:var(--ink);color:var(--bg)}a,.link{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:var(--ink-3);cursor:pointer;background:none;border:0;padding:0;font:inherit;transition:color .2s var(--ease),text-decoration-color .2s var(--ease)}.link:hover{color:var(--accent);text-decoration-color:var(--accent)}button{font:inherit;cursor:pointer;color:inherit}input,button{font-family:inherit}.muted{color:var(--ink-3)}.mono{font-family:var(--font-mono)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--ink);color:var(--bg);border:1px solid var(--ink);padding:14px 22px;border-radius:999px;font-weight:600;font-size:14.5px;letter-spacing:-.005em;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:transform .2s var(--ease),background .2s var(--ease),box-shadow .2s var(--ease)}.btn:hover{background:#000;transform:translateY(-1px);box-shadow:var(--shadow-soft)}.btn:active{transform:translateY(0)}.btn .arrow{transition:transform .2s var(--ease)}.btn:hover .arrow{transform:translate(3px)}.btn.accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn.accent:hover{background:var(--accent-2)}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--rule)}.btn.ghost:hover{background:var(--surface);box-shadow:none}.app{max-width:1120px;margin:0 auto;padding:26px 32px 96px}.app-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:22px;border-bottom:1px solid var(--rule)}.brand{display:inline-flex;align-items:center}.brand img{height:30px;width:auto;display:block}.brand.lg img{height:44px}.header-right{display:inline-flex;align-items:center;gap:18px}.chip{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);background:var(--surface);border:1px solid var(--rule);padding:6px 12px;border-radius:999px}.chip .dot{width:7px;height:7px;border-radius:50%;background:var(--ink-3)}.chip.ok .dot{background:var(--ok)}.chip.ok{color:var(--ok);border-color:#1b8f3a40;background:#1b8f3a0f}.chip.bad .dot{background:var(--bad)}.chip.bad{color:var(--bad);border-color:#cc242440;background:#cc24240f}.signout{font-size:13.5px;color:var(--ink-2);text-decoration:none}.signout:hover{color:var(--accent)}.banner{margin-top:18px;padding:14px 18px;background:#cc24240f;border:1px solid rgba(204,36,36,.2);color:var(--ink-2);font-size:14px;border-radius:var(--r-md)}.banner code{font-family:var(--font-mono);font-size:12px;background:#0f0f0e0f;padding:2px 7px;border-radius:4px}.hero{padding:48px 0 32px;max-width:760px}.hero h1{font-family:var(--font-display);font-weight:700;font-variation-settings:"opsz" 96,"wdth" 95;font-size:clamp(38px,6vw,58px);line-height:1.02;letter-spacing:-.035em}.hero h1 span{color:var(--accent)}.hero p{margin-top:18px;max-width:540px;color:var(--ink-2);font-size:16.5px}.steps{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:32px}@media (max-width: 880px){.steps{grid-template-columns:1fr}}.step{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-lg);padding:24px;display:flex;flex-direction:column}.step-head{display:flex;align-items:center;gap:14px}.step-num{font-family:var(--font-display);font-weight:700;font-variation-settings:"opsz" 96,"wdth" 90;font-size:30px;line-height:1;letter-spacing:-.04em;color:#fff;background:var(--ink);border-radius:14px;width:52px;height:52px;display:inline-flex;align-items:center;justify-content:center}.step .step-num.green{background:var(--brand-green)}.step .step-num.blue{background:var(--brand-blue)}.step-title{font-family:var(--font-display);font-weight:600;font-variation-settings:"opsz" 32,"wdth" 95;font-size:22px;line-height:1.2;letter-spacing:-.02em;color:var(--ink)}.step-sub{margin-top:4px;font-size:13.5px;color:var(--ink-3)}.dropzone{margin-top:18px;position:relative;border:1.5px dashed var(--ink-3);border-radius:var(--r-md);min-height:240px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;padding:30px;text-align:center;background:#ffffff80;transition:border-color .2s var(--ease),background .2s var(--ease);cursor:pointer}.dropzone:hover{border-color:var(--accent);background:var(--accent-soft)}.dropzone input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.dropzone .ic{width:36px;height:36px;color:var(--ink-3);transition:color .2s var(--ease)}.dropzone:hover .ic{color:var(--accent)}.dropzone .label{font-size:15px;color:var(--ink-2)}.dropzone .label b{color:var(--ink);font-weight:600}.dropzone .hint{font-size:12.5px;color:var(--ink-3)}.ine-preview{margin-top:18px;position:relative;border-radius:var(--r-md);overflow:hidden;background:var(--ink);aspect-ratio:16 / 10;box-shadow:var(--shadow-soft)}.ine-preview img{width:100%;height:100%;object-fit:cover;display:block}.ine-preview .change{position:absolute;bottom:12px;right:12px;background:#fafaf7f0;color:var(--ink);border:0;font-size:12.5px;font-weight:500;padding:8px 14px;border-radius:999px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;transition:background .2s var(--ease)}.ine-preview .change:hover{background:#fff}.ine-preview .badge{position:absolute;top:12px;left:12px;font-size:12px;font-weight:500;color:#fff;background:#0f0f0e8c;padding:5px 11px;border-radius:999px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.video-wrap{margin-top:18px;position:relative;border-radius:var(--r-md);overflow:hidden;background:var(--ink);aspect-ratio:4 / 3;box-shadow:var(--shadow-soft)}.video-wrap video{width:100%;height:100%;object-fit:cover;display:block}.face-guide{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.face-guide svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.face-guide .oval{fill:none;stroke:#ffffff73;stroke-width:1.5;stroke-dasharray:5 6;transition:stroke .25s var(--ease),stroke-width .25s var(--ease),stroke-dasharray .25s var(--ease)}.face-guide.near .oval{stroke:#ffffffd9;stroke-dasharray:0}.face-guide.aligned .oval{stroke:var(--accent-2);stroke-width:2.5;stroke-dasharray:0}.brackets{position:absolute;top:18px;right:18px;bottom:18px;left:18px;pointer-events:none}.brackets:before,.brackets:after,.brackets>span:before,.brackets>span:after{content:"";position:absolute;width:18px;height:18px;border:1.5px solid rgba(255,255,255,.7);transition:border-color .25s var(--ease);border-radius:2px}.brackets:before{top:0;left:0;border-right:0;border-bottom:0;border-top-left-radius:6px}.brackets:after{top:0;right:0;border-left:0;border-bottom:0;border-top-right-radius:6px}.brackets>span:before{bottom:0;left:0;border-right:0;border-top:0;border-bottom-left-radius:6px}.brackets>span:after{bottom:0;right:0;border-left:0;border-top:0;border-bottom-right-radius:6px}.brackets.aligned:before,.brackets.aligned:after,.brackets.aligned>span:before,.brackets.aligned>span:after{border-color:var(--accent-2)}.cam-progress{position:absolute;top:0;left:0;right:0;height:3px;background:#ffffff1f;z-index:2}.cam-progress>span{display:block;height:100%;background:var(--accent-2);transition:width .25s var(--ease)}.cam-status{position:absolute;bottom:14px;left:14px;right:14px;background:#0f0f0e99;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--bg);padding:11px 16px;border-radius:12px;font-size:14px;font-weight:500;display:flex;align-items:center;gap:12px;border:1px solid rgba(255,255,255,.08)}.cam-status .pulse{width:8px;height:8px;border-radius:50%;background:var(--accent-2);flex-shrink:0;box-shadow:0 0 #ff7a5f80;animation:pulse 1.8s infinite}@keyframes pulse{0%{box-shadow:0 0 #ff7a5f8c}70%{box-shadow:0 0 0 12px #ff7a5f00}to{box-shadow:0 0 #ff7a5f00}}.cam-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fafaf7b3;font-size:13px}.result{margin-top:32px;padding:36px 32px;background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-lg);display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center;animation:rise .55s var(--ease)}@media (max-width: 760px){.result{grid-template-columns:1fr;gap:28px;padding:28px 22px}}@keyframes rise{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.result .badge-status{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;padding:5px 12px;border-radius:999px;margin-bottom:14px}.result.ok .badge-status{background:#1b8f3a1f;color:var(--ok)}.result.bad .badge-status{background:#cc24241a;color:var(--bad)}.result h2{font-family:var(--font-display);font-weight:700;font-variation-settings:"opsz" 96,"wdth" 95;font-size:clamp(32px,4.8vw,48px);line-height:1;letter-spacing:-.035em;color:var(--ink)}.result .reason{margin-top:14px;color:var(--ink-2);font-size:15.5px;max-width:420px}.result .actions{margin-top:26px;display:flex;gap:10px;flex-wrap:wrap}.metrics{border-top:1px solid var(--rule)}.metrics .row{display:flex;justify-content:space-between;align-items:center;padding:13px 0;border-bottom:1px solid var(--rule);font-size:14px}.metrics .row .k{color:var(--ink-3)}.metrics .row .v{color:var(--ink);font-weight:600;font-family:var(--font-mono);font-size:13px}.metrics .row .v.ok{color:var(--ok)}.metrics .row .v.bad{color:var(--bad)}.error{margin-top:14px;color:var(--bad);font-size:14px}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background-image:radial-gradient(at 20% 0%,rgba(45,169,74,.12),transparent 50%),radial-gradient(at 80% 100%,rgba(37,112,184,.1),transparent 50%)}.login-card{width:100%;max-width:420px;background:#fff;border:1px solid var(--rule);border-radius:24px;padding:40px 36px 32px;box-shadow:var(--shadow-soft);position:relative}.login-card .brand{margin-bottom:28px;display:flex;justify-content:flex-start}.login-card h1{font-family:var(--font-display);font-weight:700;font-variation-settings:"opsz" 96,"wdth" 95;font-size:36px;line-height:1.05;letter-spacing:-.035em;margin-bottom:6px}.login-card h1 span{color:var(--accent)}.login-card .sub{color:var(--ink-2);font-size:15px;margin-bottom:28px}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:500;color:var(--ink-2);margin-bottom:6px}.field input{width:100%;background:var(--bg);border:1.5px solid var(--rule);border-radius:12px;padding:13px 14px;font:inherit;font-size:15px;color:var(--ink);outline:none;transition:border-color .2s var(--ease),background .2s var(--ease)}.field input:focus{border-color:var(--ink);background:#fff}.field input::placeholder{color:var(--ink-3)}.login-card .btn{width:100%;margin-top:8px;padding:14px 22px}.login-card .demo-hint{margin-top:22px;padding:12px 14px;background:var(--surface);border-radius:12px;font-size:13px;color:var(--ink-2);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.login-card .demo-hint .label{font-size:12px;font-weight:500;color:var(--ink-3)}.login-card .demo-hint code{font-family:var(--font-mono);font-size:12.5px;background:#fff;padding:3px 8px;border-radius:6px;border:1px solid var(--rule);color:var(--ink)}.login-card .foot{margin-top:24px;text-align:center;font-size:12px;color:var(--ink-3)}.fade-in{opacity:0;transform:translateY(8px);animation:fadeIn .6s var(--ease) forwards}.fade-in.d1{animation-delay:.04s}.fade-in.d2{animation-delay:.11s}.fade-in.d3{animation-delay:.18s}.fade-in.d4{animation-delay:.25s}.fade-in.d5{animation-delay:.32s}@keyframes fadeIn{to{opacity:1;transform:translateY(0)}}
