@font-face{font-family:Plex Sans;src:url(/fonts/plex-sans.woff2) format("woff2-variations");font-weight:400 700;font-display:swap}@font-face{font-family:Plex Mono;src:url(/fonts/plex-mono-500.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Plex Mono;src:url(/fonts/plex-mono-700.woff2) format("woff2");font-weight:700;font-display:swap}:root{--base: #08090c;--raise: #0f1217;--line: rgba(255, 255, 255, .09);--line-strong: rgba(255, 255, 255, .16);--ink: #f2f4f7;--ink-dim: #8b94a7;--signal: #5be7c4;--warn: #ffb224;--stop: #ff6b6b;--sans: "Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ink-faint: #7a8294;--ease: cubic-bezier(.16, 1, .3, 1);--t-tap: .11s;--t-state: .22s;--t-view: .42s;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--base);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}::selection{background:var(--signal);color:var(--base)}:focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:4px}:focus:not(:focus-visible){outline:none}.backdrop{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.backdrop:after{content:"";position:absolute;top:150px;left:50%;width:620px;height:620px;margin:-310px 0 0 -310px;border-radius:50%;background:radial-gradient(circle,rgba(91,231,196,.115) 0%,rgba(91,231,196,.045) 38%,transparent 66%);animation:breathe 7.5s ease-in-out infinite}@keyframes breathe{0%,to{opacity:.6;transform:scale(.95)}50%{opacity:1;transform:scale(1.05)}}.facescan{display:block;width:min(58vw,216px);height:auto;margin:4px auto 26px;overflow:visible}.fs-head{fill:none;stroke:currentColor;stroke-width:1.1}.fs-edge-line{stroke:currentColor;stroke-width:.7}.fs-dot{fill:currentColor}.fs-rest{color:#ffffff29}.fs-live{color:var(--signal)}.fs-frame{fill:none;stroke:var(--ink-dim);stroke-width:1.2;opacity:.35}.fs-sweep{animation:fs-pass 3.8s cubic-bezier(.5,0,.5,1) infinite;will-change:transform}.fs-line{fill:var(--signal);opacity:.5;animation:fs-pass 3.8s cubic-bezier(.5,0,.5,1) infinite;will-change:transform}@keyframes fs-pass{0%{transform:translateY(0)}to{transform:translateY(258px)}}.screen{position:relative;z-index:1;min-height:100%;max-width:460px;margin:0 auto;padding:max(28px,env(safe-area-inset-top)) 22px max(28px,env(safe-area-inset-bottom));display:flex;flex-direction:column}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes settle{0%{opacity:0;transform:translateY(6px) scale(.995)}to{opacity:1;transform:none}}.facescan{animation:rise .38s var(--ease) both}.login-head{animation:rise .38s var(--ease) 60ms both}.login-form{animation:rise .38s var(--ease) .12s both}.login-foot{animation:rise .38s var(--ease) .18s both}.capture,.done{animation:settle var(--t-view) var(--ease) both}.login-head{margin-bottom:36px}.login-head h1{margin:0 0 10px;font-size:34px;font-weight:700;line-height:1.05;letter-spacing:-.022em}.login-head p{margin:0;max-width:34ch;color:var(--ink-dim);font-size:15px}.panel{border:1px solid var(--line);border-radius:14px;background:var(--raise);overflow:hidden}.field{padding:16px 18px}.field+.field{border-top:1px solid var(--line)}.field label{display:block;margin-bottom:6px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim)}.field input{width:100%;padding:0;border:0;background:none;color:var(--ink);caret-color:var(--signal);font-family:var(--mono);font-size:20px;font-weight:500;letter-spacing:.14em}.field{transition:background var(--t-state) var(--ease)}.field label{transition:color var(--t-state) var(--ease)}.field input::placeholder{color:var(--ink-faint);letter-spacing:.14em}.field input:focus{outline:none}.field:focus-within{background:#5be7c408}.field:focus-within label{color:var(--signal)}@keyframes flag{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.form-error{animation:flag .24s var(--ease) both;display:flex;align-items:flex-start;gap:10px;margin-top:16px;color:var(--stop);font-size:14px}.form-error svg{flex:none;margin-top:2px}.login-foot{margin-top:auto;padding-top:32px;color:var(--ink-dim);font-size:13px}.login-foot p{margin:0;max-width:38ch}.btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:54px;margin-top:20px;padding:0 20px;border:1px solid transparent;border-radius:12px;background:var(--signal);color:var(--base);font-family:var(--sans);font-size:16px;font-weight:600;letter-spacing:-.01em;cursor:pointer;transition:background var(--t-state) var(--ease),border-color var(--t-state) var(--ease),color var(--t-state) var(--ease),transform var(--t-tap) var(--ease)}.btn:hover:not(:disabled){background:#74f0d2}.btn:active:not(:disabled){background:#46d1ae;transform:scale(.985)}.btn:disabled{background:transparent;border-color:var(--line);color:var(--ink-dim);cursor:not-allowed}.btn.ghost{background:transparent;border-color:var(--line-strong);color:var(--ink)}.btn.ghost:hover{background:#ffffff0a}.capture{padding-bottom:max(20px,env(safe-area-inset-bottom))}.cap-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding-bottom:14px;margin-bottom:18px;border-bottom:1px solid var(--line)}.cap-head .name{font-size:17px;font-weight:600;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cap-head .id{flex:none;font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;color:var(--ink-dim)}.stage{position:relative;width:100%;aspect-ratio:3 / 4;background:#000;border:1px solid var(--line);border-radius:18px;overflow:hidden}.feed,.overlay{position:absolute;inset:0;width:100%;height:100%}.feed{object-fit:cover;transform:scaleX(-1)}.overlay{transform:scaleX(-1);pointer-events:none}.flash{position:absolute;inset:0;background:var(--signal);animation:commit .34s var(--ease) forwards;pointer-events:none}@keyframes commit{0%{opacity:.42}to{opacity:0}}.stage-cover{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;padding:28px;text-align:center;background:#08090ce6;color:var(--ink-dim);font-size:14px}.stage-cover.is-error{color:var(--stop)}.boot{min-height:100%;display:grid;place-items:center;opacity:0;animation:boot-in .22s var(--ease) .4s forwards}@keyframes boot-in{to{opacity:1}}.loader{width:64px;height:1px;background:var(--line-strong);position:relative;overflow:hidden}.loader:after{content:"";position:absolute;inset:0;background:var(--signal);animation:sweep 1.4s var(--ease) infinite}@keyframes sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}.readout{position:absolute;left:12px;right:12px;bottom:12px;display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#08090cd1;backdrop-filter:blur(14px)}.readout .dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--ink-dim);transition:background .25s var(--ease)}.readout[data-tone=go] .dot{background:var(--signal)}.readout[data-tone=warn] .dot{background:var(--warn)}.readout[data-tone=stop] .dot{background:var(--stop)}@keyframes readout-in{0%{opacity:0}to{opacity:1}}.readout .text{animation:readout-in .18s var(--ease) both;font-size:16px;font-weight:600;letter-spacing:-.015em;line-height:1.25}.readout[data-tone=warn] .text{color:var(--warn)}.readout[data-tone=stop] .text{color:var(--stop)}.readout{transition:border-color var(--t-state) var(--ease)}.readout[data-tone=go]{border-color:#5be7c466}.readout[data-tone=warn]{border-color:#ffb22459}.readout[data-tone=stop]{border-color:#ff6b6b59}.meter{margin-top:20px}.meter-top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}.meter-step{font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:.06em;font-variant-numeric:tabular-nums}.meter-step .of{color:var(--ink-dim);font-weight:500}.meter-label{font-size:13px;color:var(--ink-dim);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.segments{display:flex;gap:3px}.segments i{flex:1;height:4px;border-radius:1px;background:var(--line);transition:background .3s var(--ease),transform .3s var(--ease);transform-origin:bottom}.segments i.on{background:var(--signal)}.segments i.just{transform:scaleY(2.25)}.actions{margin-top:auto;padding-top:22px}.done{justify-content:center;align-items:center;text-align:center}.done-mark:not(.tone-wait) svg path{stroke-dasharray:26;stroke-dashoffset:26;animation:draw .46s var(--ease) .26s forwards}@keyframes draw{to{stroke-dashoffset:0}}.done-mark{display:grid;place-items:center;width:66px;height:66px;margin-bottom:26px;border:1px solid var(--signal);border-radius:50%;color:var(--signal);animation:lock .52s var(--ease) both}@keyframes lock{0%{opacity:0;transform:scale(.86)}to{opacity:1;transform:scale(1)}}.done-mark.tone-wait{border-color:var(--warn);color:var(--warn)}.done-mark.tone-done{border-color:var(--signal);color:var(--signal)}.who-card{width:100%;max-width:320px;margin:30px 0 0;padding:4px 18px;border:1px solid var(--line);border-radius:14px;background:var(--raise);text-align:left}.who-card>div{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:13px 0}.who-card>div+div{border-top:1px solid var(--line)}.who-card dt{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim)}.who-card dd{margin:0;font-size:15px;font-weight:600;text-align:right}.who-card dd.mono{font-family:var(--mono);font-size:13px;letter-spacing:.08em}.who-card dd.tone-wait{color:var(--warn)}.who-card dd.tone-done{color:var(--signal)}.end-actions{width:100%;max-width:320px;margin-top:30px}.end-actions .btn{margin-top:10px}.end-actions .btn:first-child{margin-top:0}.done h1{margin:0 0 12px;font-size:28px;font-weight:700;letter-spacing:-.02em}.done p{margin:0 0 10px;max-width:32ch;color:var(--ink-dim);font-size:15px}.done .lede{color:var(--ink);font-size:17px}.notice{animation:flag .24s var(--ease) both;display:flex;align-items:flex-start;gap:10px;max-width:460px;margin:18px auto -10px;padding:13px 16px;border:1px solid rgba(255,178,36,.3);border-radius:12px;background:#ffb22412;color:var(--warn);font-size:14px}.notice svg{flex:none;margin-top:2px}@media(prefers-reduced-motion:reduce){.fs-sweep,.fs-line{animation:none}.backdrop:after{animation:none;opacity:.8;transform:none}.fs-line{opacity:0}.fs-rest{color:var(--signal);opacity:.5}.facescan,.login-head,.login-form,.login-foot,.capture,.done,.form-error,.notice,.done-mark{animation:none}.done-mark:not(.tone-wait) svg path{animation:none;stroke-dashoffset:0}.btn:active:not(:disabled){transform:none}.segments i.just{transform:none}.loader:after{animation:none;opacity:.5}.flash{animation:commit .2s linear forwards}}
