:root{--bg: #f8fafc;--bg-2: #f1f5f9;--panel: #ffffff;--panel-border: #e2e8f0;--text: #0f172a;--muted: #475569;--primary: #4f46e5;--primary-hover: #4338ca;--primary-light: #e0e7ff;--signal: #ea580c;--good: #16a34a;--bad: #dc2626;--shadow: 0 10px 25px -5px rgba(0, 0, 0, .05), 0 8px 10px -6px rgba(0, 0, 0, .05)}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:Space Grotesk,Segoe UI,sans-serif;color:var(--text);background:linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 100%)}button,input{font:inherit}.app-shell{display:flex;flex-direction:column;height:100dvh;max-width:480px;width:100%;margin:0 auto;background:var(--bg-2);position:relative;overflow:hidden;border-left:1px solid var(--panel-border);border-right:1px solid var(--panel-border)}.top-bar{height:56px;padding:0 16px;display:flex;align-items:center;justify-content:space-between;background:#ffffffd9;border-bottom:1px solid var(--panel-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;flex-shrink:0}.brand-title{display:flex;align-items:center;gap:8px}.brand-title h2{margin:0;font-size:1.1rem;font-weight:800;letter-spacing:-.02em;text-transform:uppercase;background:linear-gradient(135deg,var(--primary) 30%,#6366f1 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-family:Space Grotesk,Segoe UI,sans-serif}.brand-logo{font-size:1.25rem}.bottom-nav{height:76px;display:flex;justify-content:space-around;align-items:center;background:#ffffffe6;border-top:1px solid var(--panel-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;flex-shrink:0;padding:8px 12px}.bottom-nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0px;height:100%;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);font-size:.85rem;font-weight:500;border-radius:14px;margin:0 6px;padding:2px 0}.bottom-nav-btn:hover{background:#4f46e50a;color:var(--primary)}.bottom-nav-btn .nav-icon{font-size:1.4rem;transition:transform .2s ease}.bottom-nav-btn.active{color:var(--primary);background:var(--primary-light);border-color:#4f46e526;font-weight:700;box-shadow:0 4px 12px #4f46e514}.bottom-nav-btn.active .nav-icon{transform:translateY(-2px) scale(1.1);filter:drop-shadow(0 2px 4px rgba(79,70,229,.2))}.primary-btn,.ghost-btn{border:0;border-radius:999px;padding:12px 24px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background-color .15s ease;display:inline-flex;align-items:center;justify-content:center;font-weight:600;min-height:48px;text-decoration:none}.primary-btn{background:var(--primary);color:#fff;box-shadow:0 4px 14px #4f46e540}.primary-btn:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-1px);box-shadow:0 6px 20px #4f46e559}.primary-btn:active:not(:disabled){transform:scale(.98)}.ghost-btn{background:#fff;color:var(--text);border:1px solid var(--panel-border)}.ghost-btn:hover:not(:disabled){background:var(--bg-2);transform:translateY(-1px)}.ghost-btn:active:not(:disabled){transform:scale(.98)}.content-area{flex:1;overflow-y:auto;padding:16px;box-sizing:border-box}.page-grid,.page-grid.single{display:flex;flex-direction:column;gap:16px;width:100%}.panel{padding:24px;border-radius:18px;background:var(--panel);border:1px solid var(--panel-border);box-shadow:var(--shadow)}.panel-heading{text-align:center;margin-bottom:24px}.panel-title{margin:0 0 6px!important;font-size:1.15rem!important;font-weight:700!important;letter-spacing:.03em!important;text-transform:uppercase!important;color:var(--text)!important;font-family:Space Grotesk,Segoe UI,sans-serif!important}.panel-subtitle{margin:0!important;font-size:.88rem!important;color:var(--muted)!important;line-height:1.4!important}.result-card h3,.empty-state h3{margin:0 0 10px}.result-card p,.empty-state p{margin:0;line-height:1.55;color:var(--muted)}.profile-form{display:grid;gap:16px;margin-top:20px}.profile-form label,.inline-field{display:grid;gap:8px}.profile-form input,.inline-field input{padding:14px 16px;border-radius:12px;border:1px solid var(--panel-border);background:#fff;color:var(--text);min-height:48px;transition:border-color .2s ease,box-shadow .2s ease}.profile-form input:focus,.inline-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f46e526;outline:none}.button-strip{display:flex;gap:12px;margin-top:8px}.result-shell{display:grid;gap:18px;margin-top:20px}.result-card,.empty-state{padding:18px;border-radius:14px;border:1px solid var(--panel-border);background:var(--panel)}.result-card.success{border-color:#16a34a4d;background:#16a34a0f;color:#15803d}.result-card.error{border-color:#dc262642;background:#dc26260f;color:#b91c1c}.camera-surface{position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--bg-2);display:flex;flex-direction:column;box-sizing:border-box;overflow-y:auto;padding:16px}.camera-header{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:16px;flex-shrink:0;background:#fff;padding:10px 16px;border-radius:16px;border:1px solid var(--panel-border);box-shadow:var(--shadow)}.camera-header h3{margin:0;font-size:1.05rem;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.02em}.header-controls{display:flex;align-items:center;gap:10px}.camera-header .close-btn{background:#ef4444;border:0;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;font-size:1.2rem;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 12px #ef444440}.camera-header .close-btn:hover{background:#dc2626;transform:scale(1.05)}.camera-header .close-btn:active{transform:scale(.96)}.sound-toggle-btn{background:var(--primary);border:0;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;font-size:1.25rem;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 12px #4f46e540}.sound-toggle-btn:hover{background:var(--primary-hover);transform:scale(1.05)}.sound-toggle-btn:active{transform:scale(.96)}.sound-toggle-btn.disabled{color:#fff;background:#64748b;box-shadow:0 4px 12px #64748b26}.camera-layout{display:flex;flex-direction:column;gap:16px;width:100%;align-items:center}button:disabled{cursor:not-allowed;opacity:.55;transform:none}.register-workspace{max-width:100%}.viewport{position:relative;width:100%;aspect-ratio:1 / 1;max-width:440px;overflow:hidden;border-radius:24px;border:2px solid rgba(255,255,255,.1);background:#02060e;box-shadow:var(--shadow)}.viewport video,.viewport canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border-radius:22px}.viewport video{object-fit:cover;transform:scaleX(-1)}.oval-guide{position:absolute;left:50%;bottom:7%;width:54%;height:66%;transform:translate(-50%);border-radius:48% 48% 52% 52%/38% 38% 62% 62%;border:4px solid rgba(99,102,241,.95);box-shadow:0 0 0 999px #000000a6,0 0 26px #6366f159;pointer-events:none;transition:border-color .2s ease,box-shadow .2s ease}.oval-guide.ready{border-color:#79efb3fa;box-shadow:0 0 0 999px #000000a6,0 0 28px #79efb359}.oval-guide.error{border-color:#ff8f8ffa;box-shadow:0 0 0 999px #000000a6,0 0 28px #ff8f8f59}.hud-card{position:relative;width:100%;max-width:440px;height:120px;background:#ffffffe6;border:1.5px solid var(--panel-border);border-radius:18px;padding:0 16px 0 20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow);z-index:5;display:flex;align-items:center;justify-content:space-between;pointer-events:none;transition:all .2s ease;box-sizing:border-box;overflow:hidden}.hud-text-content{display:flex;flex-direction:column;align-items:flex-start;text-align:left;flex:1;padding:16px 12px 16px 0}.hud-card.success{border-color:var(--good);background:#16a34a0d;box-shadow:0 8px 32px #16a34a14}.hud-card.error{border-color:var(--bad);background:#dc26260d;box-shadow:0 8px 32px #dc262614}.hud-card.info{border-color:var(--primary);background:#4f46e50d;box-shadow:0 8px 32px #4f46e514}.hud-eyebrow{font-size:.75rem;font-family:Space Grotesk,sans-serif;letter-spacing:.08em;color:var(--muted);margin-bottom:4px;text-transform:uppercase}.hud-instruction{font-size:1.25rem;font-weight:700;line-height:1.35;color:var(--text)}.hud-card .liveness-feedback-area{background:none;border:none;padding:0;margin:0;height:100%;min-height:auto;box-shadow:none;width:auto;flex-shrink:0;display:flex;align-items:center;justify-content:center}.hud-card .anim-container{width:120px;height:100%;display:flex;align-items:center;justify-content:center}.hud-card .anim-svg{width:100%;height:100%;transform:scale(1.15);transform-origin:center}.hud-card .anim-turn-right{transform:scale(1.15) translate(-5px)}.camera-controls{display:flex;gap:12px;width:100%;max-width:440px;justify-content:center;margin-top:4px}.camera-controls button{flex:1;padding:10px 16px;font-size:.9rem}.debug-panel{display:grid;gap:7px;max-height:none;overflow:visible;padding:16px;border-radius:18px;background:#fff;border:1.5px solid var(--panel-border);box-shadow:var(--shadow);width:100%;max-width:440px;margin-top:12px}.debug-panel>strong{color:var(--primary);font-family:Space Grotesk,sans-serif;font-size:1rem;font-weight:700}.debug-line{display:block;padding:8px 12px;border-radius:10px;border:1px solid var(--panel-border);background:var(--bg);font-family:Space Grotesk,IBM Plex Mono,monospace;font-size:.85rem;line-height:1.3;color:var(--text)}.debug-line strong{color:var(--primary)}.debug-line.pass{color:#15803d;background:#16a34a0f;border-color:#16a34a26}.debug-line.fail{color:#b91c1c;background:#dc26260f;border-color:#dc262626}.debug-line.warn{color:#b45309;background:#d977060f;border-color:#d9770626}.debug-line.neutral{color:var(--text)}.blocking-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:12;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;text-align:center;background:#0f172ae6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.blocking-overlay strong{font-size:1.15rem;color:#fff;font-weight:600}.blocking-overlay span{max-width:280px;color:#94a3b8;font-size:.9rem;line-height:1.45}.biometric-loader{position:relative;width:100px;height:100px;margin:0 auto 8px}.scanner-frame{position:relative;width:100px;height:100px;border-radius:20px;border:1.5px dashed rgba(255,255,255,.25);background:#ffffff08;overflow:hidden;display:flex;align-items:center;justify-content:center}.scanner-line{position:absolute;left:0;width:100%;height:4px;background:linear-gradient(180deg,#4f46e500,#4f46e5e6,#4f46e500);box-shadow:0 0 10px #4f46e5e6;animation:scan-vertical 2s infinite ease-in-out;z-index:2}.face-outline-svg{width:56px;height:56px;color:var(--primary);opacity:.8;animation:pulse-soft 1.8s infinite ease-in-out}@keyframes scan-vertical{0%,to{top:5%}50%{top:90%}}@keyframes pulse-soft{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.05);opacity:.95}}.radar-loader{position:relative;width:120px;height:120px;margin:20px auto;display:flex;align-items:center;justify-content:center}.radar-circle{position:absolute;width:100%;height:100%;border-radius:50%;border:1.5px solid var(--primary);opacity:0;animation:radar-pulse 2s infinite cubic-bezier(.1,.8,.3,1)}.radar-circle:nth-child(2){animation-delay:.6s}.radar-circle:nth-child(3){animation-delay:1.2s}.radar-pin{z-index:2;color:var(--primary);filter:drop-shadow(0 4px 8px rgba(79,70,229,.3));animation:pin-bounce 1.2s infinite ease-in-out}@keyframes radar-pulse{0%{transform:scale(.2);opacity:.8}to{transform:scale(1.1);opacity:0}}@keyframes pin-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.liveness-feedback-area{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:440px;background:#ffffffb3;border:1px solid var(--panel-border);border-radius:20px;padding:10px;margin-top:4px;text-align:center;min-height:clamp(160px,24vh,220px);box-shadow:inset 0 0 10px #00000005}.anim-container{display:flex;align-items:center;justify-content:center;width:100%;height:clamp(140px,22vh,200px)}.anim-svg{filter:drop-shadow(0 0 8px rgba(79,70,229,.08));overflow:visible!important}.anim-svg [stroke="#f3f1ea"]{stroke:var(--text)!important}.anim-svg [fill="rgba(255,255,255,0.06)"]{fill:#4f46e50a!important}.anim-svg [stroke="#ffd449"]{stroke:var(--primary)!important}.anim-svg [fill="#ffd449"]{fill:var(--primary)!important}.anim-svg [stroke="#79efb3"]{stroke:var(--good)!important}.anim-svg [stroke="#ff8f8f"]{stroke:var(--bad)!important}.anim-svg [fill="#ff8f8f"]{fill:var(--bad)!important}.arrow-left{animation:arrow-bounce-left 1.2s infinite ease-in-out}.arrow-right{animation:arrow-bounce-right 1.2s infinite ease-in-out}@keyframes arrow-bounce-left{0%,to{transform:translate(0);opacity:.3}50%{transform:translate(-6px);opacity:1}}@keyframes arrow-bounce-right{0%,to{transform:translate(0);opacity:.3}50%{transform:translate(6px);opacity:1}}.anim-turn-left .parallax-head{transform-origin:50px 50px}.anim-turn-left .head-circle{animation:head-move-l 2.4s infinite ease-in-out}.anim-turn-left .face-features{transform-origin:50px 50px;animation:face-turn-l 2.4s infinite ease-in-out}@keyframes head-move-l{0%,to{transform:translate(0)}50%{transform:translate(-6px)}}@keyframes face-turn-l{0%,to{transform:translate(0) scaleX(1)}50%{transform:translate(-15px) scaleX(.75)}}.anim-turn-right .parallax-head{transform-origin:50px 50px}.anim-turn-right .head-circle{animation:head-move-r 2.4s infinite ease-in-out}.anim-turn-right .face-features{transform-origin:50px 50px;animation:face-turn-r 2.4s infinite ease-in-out}@keyframes head-move-r{0%,to{transform:translate(0)}50%{transform:translate(6px)}}@keyframes face-turn-r{0%,to{transform:translate(0) scaleX(1)}50%{transform:translate(15px) scaleX(.75)}}.mouth-ellipse{transform-origin:50px 61px;animation:mouth-open-close 1.6s infinite ease-in-out}@keyframes mouth-open-close{0%,to{transform:scaleY(.2);fill:#ffd449}50%{transform:scaleY(1);fill:#ff8f8f}}.eye-left{transform-origin:39px 44px;animation:eye-blink 1.8s infinite ease-in-out}.eye-right{transform-origin:61px 44px;animation:eye-blink 1.8s infinite ease-in-out}@keyframes eye-blink{0%,80%,to{transform:scaleY(1)}88%,92%{transform:scaleY(.08)}}.focus-corner{transform-origin:50px 50px;animation:focus-blink .8s infinite steps(1,start)}.focus-corner.tl{transform-origin:16px 16px}.focus-corner.tr{transform-origin:84px 16px}.focus-corner.bl{transform-origin:16px 84px}.focus-corner.br{transform-origin:84px 84px}@keyframes focus-blink{0%,to{transform:scale(1.02);opacity:.2}50%{transform:scale(1);opacity:1}}.confirm-modal-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:110;display:grid;place-items:center;align-content:center;padding:24px;background:#0f172a66;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fadeIn .2s ease-out}.confirm-modal-content{background:#fff;border:1.5px solid var(--panel-border);border-radius:24px;padding:24px;max-width:380px;width:100%;text-align:center;box-shadow:var(--shadow);transform:translateY(0);animation:slideUp .25s cubic-bezier(.16,1,.3,1);box-sizing:border-box}.confirm-modal-text{font-size:1.05rem;font-weight:600;line-height:1.5;color:var(--text);margin-bottom:24px}.confirm-modal-actions{display:flex;gap:12px;justify-content:center;width:100%}.confirm-modal-actions button{flex:1;padding:12px 16px;font-size:.9rem;border-radius:999px;font-weight:600;cursor:pointer;border:0;transition:transform .12s ease,background-color .15s ease}.confirm-btn-stay{background:var(--primary-light);color:var(--primary);border:1px solid rgba(79,70,229,.15)!important}.confirm-btn-stay:hover{background:#4f46e526;transform:translateY(-1px)}.confirm-btn-leave{background:#ef4444;color:#fff;box-shadow:0 4px 12px #ef444426}.confirm-btn-leave:hover{background:#dc2626;transform:translateY(-1px)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(15px);opacity:0}to{transform:translateY(0);opacity:1}}.brand-dot{width:8px;height:8px;border-radius:50%;background-color:var(--primary);display:inline-block;box-shadow:0 0 8px var(--primary);animation:brand-dot-pulse 2s infinite ease-in-out;margin-right:2px}@keyframes brand-dot-pulse{0%,to{transform:scale(1);opacity:.6;background-color:var(--primary);box-shadow:0 0 8px var(--primary)}50%{transform:scale(1.3);opacity:1;background-color:#6366f1;box-shadow:0 0 12px #6366f1}}.embedded-shell{width:100vw;height:100vh;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-2);z-index:9999;display:flex;flex-direction:column}.embedded-shell .camera-surface{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;padding:12px;overflow-y:auto;box-sizing:border-box}.embedded-shell .camera-header{margin-bottom:8px;padding:8px 14px}
.hourglass-loader{position:relative;width:96px;height:96px;margin:0 auto 10px;display:flex;align-items:center;justify-content:center;border-radius:24px;border:1.5px dashed rgba(255,255,255,.25);background:#ffffff08}.hourglass-svg{width:52px;height:52px;color:var(--primary,#6366f1);animation:hourglass-spin 2.4s cubic-bezier(.45,.05,.55,.95) infinite;filter:drop-shadow(0 0 10px rgba(99,102,241,.6))}@keyframes hourglass-spin{0%{transform:rotate(0deg)}40%,50%{transform:rotate(180deg)}90%,to{transform:rotate(0deg)}}