:root{color-scheme:dark;--bg:#111216;--surface:#1d2026;--text:#f3f3f0;--muted:#a1a4aa;--lime:#c6ec9c;--violet:#b6a1e4;--line:rgba(255,255,255,.13);--amber:#e9c795;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.44}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--lime);outline-offset:4px}button{color:inherit}a{color:inherit;text-decoration:none}button svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}button svg rect{fill:none} [hidden]{display:none!important}
#app{height:100svh;min-height:640px;position:relative;overflow:hidden}.ambient{position:absolute;inset:0;background:radial-gradient(ellipse at 77% 43%,rgba(99,86,120,.13),transparent 45%),radial-gradient(ellipse at 24% 94%,rgba(127,160,103,.065),transparent 45%);pointer-events:none}.ambient:after{content:"";position:absolute;inset:0;background-image:radial-gradient(#727478 0.65px,transparent .65px);background-size:24px 24px;opacity:.11;mask-image:linear-gradient(to right,transparent,#000)}
.topbar{position:absolute;z-index:5;top:0;left:0;right:0;padding:calc(27px + env(safe-area-inset-top)) 38px 24px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.brand,.privacy-pill{pointer-events:auto}.brand{display:flex;align-items:center;gap:13px;font-size:14px;font-weight:760;letter-spacing:.10em;white-space:nowrap}.brand svg{width:29px;height:29px;stroke:var(--lime);fill:none;stroke-width:1.7}.brand-divider{color:#61636b;padding:0 12px}.brand-light{font-weight:420;letter-spacing:.12em}.privacy-pill{border:1px solid var(--line);background:rgba(17,18,22,.65);border-radius:30px;padding:9px 13px;font-size:11px;display:flex;gap:8px;align-items:center;backdrop-filter:blur(14px)}.dot{display:inline-block;width:6px;height:6px;background:var(--lime);border-radius:50%;flex:none}
.welcome{position:absolute;inset:100px 0 94px;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;padding:0 max(7%,40px);gap:5%}.eyebrow{font:10px var(--mono);letter-spacing:.11em;font-weight:500;color:var(--lime);line-height:1.6}.welcome .eyebrow{margin:0 0 30px}.eyebrow span{color:#83868d;display:block;font-size:9px;margin-top:3px}.welcome h1{font-size:clamp(46px,5.8vw,86px);line-height:1.04;font-weight:530;letter-spacing:-.055em;margin:0}.welcome h1 em{color:var(--lime);font-style:normal}.intro{font-size:15px;line-height:1.85;color:var(--muted);margin:25px 0 27px}.welcome-actions{display:flex;gap:10px;flex-wrap:wrap}.button{display:inline-flex;gap:10px;align-items:center;justify-content:center;border:1px solid transparent;border-radius:12px;padding:12px 17px;font-size:12px;font-weight:620;transition:background .15s,transform .15s;min-height:44px}.button:active:not(:disabled){transform:scale(.98)}.button.primary{background:var(--lime);color:#202719}.button.primary:hover:not(:disabled){background:#d3f5b0}.button.secondary{border-color:var(--line);background:rgba(255,255,255,.035)}.button.secondary:hover:not(:disabled){background:rgba(255,255,255,.08)}.button.large{padding:15px 21px;min-height:52px;font-size:13px}.welcome-note{font-size:10px;line-height:1.8;color:#8d9199;margin-top:15px}.experiment-note{border-left:1px solid #4d5944;padding-left:14px;margin-top:32px}.experiment-note>span{font:9px var(--mono);letter-spacing:.10em;color:#89977b}.experiment-note p{font-size:11px;line-height:1.7;color:#9c9ea3;margin:7px 0 0}.experiment-note strong{font-weight:500;color:#d2d4cc}.welcome-visual{height:410px;max-width:430px;position:relative;display:grid;place-items:center}.orbital{width:310px;height:310px;border:1px solid #303238;border-radius:50%;display:grid;place-items:center;transform:rotate(-23deg) scaleY(.83)}.orbital:before{content:"";width:100%;height:100%;position:absolute;border:1px solid #2b2e33;border-radius:50%;transform:scale(.77)}.orbital-inner{width:230px;height:230px;border:1px dashed #444748;border-radius:50%;transform:rotate(30deg) scaleY(1.7);opacity:.4}.visual-frame{width:244px;height:244px;position:absolute;display:grid;place-items:center}.visual-frame i,#reticle i{position:absolute;width:23px;height:23px;border:1.5px solid var(--lime);opacity:.8}.visual-frame i:nth-child(1),#reticle i:nth-child(1){top:0;left:0;border-right:0;border-bottom:0;border-radius:9px 0 0 0}.visual-frame i:nth-child(2),#reticle i:nth-child(2){top:0;right:0;border-left:0;border-bottom:0;border-radius:0 9px 0 0}.visual-frame i:nth-child(3),#reticle i:nth-child(3){bottom:0;left:0;border-right:0;border-top:0;border-radius:0 0 0 9px}.visual-frame i:nth-child(4),#reticle i:nth-child(4){bottom:0;right:0;border-left:0;border-top:0;border-radius:0 0 9px 0}.focus-mark{color:var(--lime);font-weight:200;font-size:27px}.visual-label{font:9px var(--mono);letter-spacing:.15em;position:absolute;bottom:40px;color:#a0ab98}.visual-coordinate{position:absolute;font:9px var(--mono);letter-spacing:.14em;color:#7e8187}.visual-coordinate.top{top:10px;left:15px}.visual-coordinate.bottom{bottom:10px;right:0}.visual-dot{position:absolute;width:6px;height:6px;background:var(--violet);border-radius:50%}.visual-dot.one{top:110px;right:50px}.visual-dot.two{bottom:85px;left:40px;width:4px;height:4px;background:var(--lime)}.welcome-footer{position:absolute;bottom:26px;left:38px;right:38px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:20px}.welcome-footer>span{font:9px var(--mono);letter-spacing:.08em;color:#878b91}.welcome-footer b{font-weight:400;margin-left:10px;color:#b9bdb4}.text-button{background:none;border:0;padding:6px 0;color:var(--muted);font-size:11px}.text-button:hover{color:var(--lime)}.text-button span{padding-left:12px}
#stage{position:absolute;inset:0;overflow:hidden;background:transparent;touch-action:manipulation}#stage video,#stage img,#overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}#overlay{pointer-events:none}#reticle{position:absolute;width:108px;height:108px;transform:translate(-50%,-50%);pointer-events:none;transition:left .15s,top .15s}#reticle i{width:18px;height:18px;border-color:rgba(255,255,255,.85)}#reticle span{position:absolute;width:5px;height:5px;background:#fff;border-radius:50%;top:calc(50% - 2.5px);left:calc(50% - 2.5px);box-shadow:0 0 0 5px #0002}#app[data-state="ready"] #reticle i{border-color:var(--lime);border-width:2px}#app[data-state="ready"] #reticle span{background:var(--lime)}#app[data-active="true"] .ambient{display:none}#app[data-active="true"] .topbar{background:linear-gradient(rgba(0,0,0,.65),transparent);padding-bottom:50px}#app[data-active="true"] #stage{background:#08090b}
.source-badge{position:absolute;top:calc(95px + env(safe-area-inset-top));left:38px;display:flex;align-items:center;gap:8px;font:9px var(--mono);letter-spacing:.08em;background:#16181dd9;border:1px solid var(--line);padding:8px 11px;border-radius:9px;backdrop-filter:blur(12px)}.source-badge .text-button{border-left:1px solid var(--line);padding:2px 0 2px 10px;margin-left:4px;font-size:9px;letter-spacing:0}.feedback{position:absolute;bottom:148px;left:50%;transform:translateX(-50%);width:min(500px,calc(100% - 32px));padding:22px 25px 18px;border-radius:18px;background:rgba(17,19,23,.77);border:1px solid rgba(255,255,255,.15);backdrop-filter:blur(18px);box-shadow:0 4px 35px #0002}.state-kicker{display:flex;align-items:center;gap:7px;font:9px var(--mono);letter-spacing:.09em;color:#c9cec6}.state-kicker #coverage-chip{margin-left:auto;color:#a2a9a0;letter-spacing:0;font-size:9px}.feedback h2{font-size:24px;font-weight:550;letter-spacing:-.035em;margin:12px 0 8px;line-height:1.15}.feedback p{font-size:11px;line-height:1.6;color:#b0b4b6;margin:0;min-height:18px}.hold-track{height:3px;border-radius:3px;background:#ffffff1a;margin-top:17px;overflow:hidden}.hold-track>div{height:100%;width:0;background:var(--lime);transition:width .2s}.gate-row{display:flex;justify-content:space-between;gap:7px;margin-top:13px;font-size:9px;color:#a9aeb0}.gate-row>span{display:flex;align-items:center;gap:5px}.gate-row i{display:grid;place-items:center;font-style:normal;width:13px;height:13px;border:1px solid #ffffff26;border-radius:50%;font-size:8px}.gate-row .passed{color:var(--lime)}.gate-row .passed i{border-color:#c6ec9c66;background:#c6ec9c14}.gate-row .failed i{color:var(--amber)}.controls{position:absolute;bottom:calc(40px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(600px,calc(100% - 32px));display:flex;align-items:center;gap:5px;background:rgba(21,23,27,.84);border:1px solid var(--line);border-radius:19px;padding:9px 10px;backdrop-filter:blur(16px)}.dock-button{display:flex;flex-direction:column;align-items:center;gap:4px;border:none;background:none;min-width:52px;min-height:46px;justify-content:center;color:#b7babd;font-size:8px;border-radius:9px;padding:4px}.dock-button:hover{background:#ffffff0b}.dock-button[aria-pressed="true"]{color:var(--lime)}.dock-button svg{width:19px;height:19px}.scan-button{flex:1;font-size:11px;padding:13px 10px;min-height:45px}.camera-footnote{position:absolute;bottom:calc(11px + env(safe-area-inset-bottom));left:0;right:0;text-align:center;font:8px var(--mono);letter-spacing:.06em;margin:0;color:#bec2bd;text-shadow:0 1px 4px #000;background:#0004;padding:3px}.camera-footnote span{padding:0 8px}
.debug{position:absolute;right:28px;top:calc(99px + env(safe-area-inset-top));width:255px;background:rgba(19,21,25,.74);border:1px solid var(--line);backdrop-filter:blur(16px);border-radius:15px;padding:18px;max-height:calc(100svh - 220px);overflow:auto}.panel-heading{display:flex;align-items:center;justify-content:space-between}.panel-heading .eyebrow{color:#bcb6cc;font-size:9px}.panel-heading>span:last-child{font:9px var(--mono);color:#b0b6ae}.debug-score{display:flex;align-items:center;gap:10px;margin:15px 0}.debug-score>span{font-size:35px;line-height:1;letter-spacing:-.07em;color:var(--lime);font-weight:400}.debug-score>div{font-size:10px;color:#d2d5cf}.debug-score small{display:block;font-size:9px;color:#919791;margin-top:4px}.metrics{margin:0;font-size:10px}.metrics>div{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid #ffffff0c}.metrics dt{color:#a3a8a5}.metrics dd{font:9px var(--mono);margin:0;text-align:right;max-width:128px;word-break:break-word;color:#edf0e7}.metrics dd.muted{color:#939992}.debug-note{font-size:9px;line-height:1.6;color:#939a95;margin:12px 0 8px}.session-link{font-size:10px;display:flex;justify-content:space-between;width:100%}
.notice{position:absolute;z-index:20;top:calc(90px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(650px,calc(100% - 32px));border:1px solid #a67c5277;border-radius:12px;background:#2b241ef5;padding:13px 16px;display:flex;align-items:flex-start;gap:13px;box-shadow:0 6px 30px #0005}.notice p{font-size:12px;line-height:1.6;margin:0;flex:1}.notice button{background:transparent;border:0;font-size:22px;color:#cbb6a0;padding:0 3px}.loading-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#20232af5;border:1px solid var(--line);padding:24px;border-radius:18px;display:flex;align-items:center;gap:17px;z-index:12;width:min(470px,calc(100% - 32px));box-shadow:0 20px 100px #0008}.loading-card strong{font-size:14px;font-weight:550}.loading-card p{color:var(--muted);font-size:11px;line-height:1.6;margin:7px 0 0}.loading-card>div{flex:1}.spinner{width:25px;height:25px;flex-shrink:0;border:2px solid #ffffff20;border-top-color:var(--lime);border-radius:50%;animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:130px;left:50%;transform:translateX(-50%);z-index:100;max-width:90%;border:1px solid #a4bc8766;background:#20281fee;border-radius:11px;padding:13px 20px;font-size:12px;text-align:center;box-shadow:0 6px 25px #0007}
.settings-dialog{position:fixed;top:0;bottom:0;left:auto;right:0;margin:0;width:min(440px,100%);max-width:100%;height:100svh;max-height:100svh;border:0;border-left:1px solid var(--line);padding:0;background:#191b20;color:var(--text);overflow:hidden;box-shadow:-20px 0 100px #0007}.settings-dialog::backdrop{background:#0009;backdrop-filter:blur(3px)}.sheet-header{height:110px;padding:28px 26px 22px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.sheet-header h2{font-size:23px;letter-spacing:-.035em;font-weight:500;margin:5px 0 0}.close-button{border:1px solid var(--line);background:transparent;width:33px;height:33px;border-radius:50%;font-size:23px;font-weight:300}.sheet-body{padding:0 26px 32px;overflow:auto;height:calc(100% - 110px)}.settings-section{border-bottom:1px solid var(--line);padding:22px 0}.settings-section h3{margin:0 0 16px;font-size:12px;font-weight:600;display:flex;justify-content:space-between}.settings-section h3>span{font:9px var(--mono);color:#989e98;font-weight:400}.presets{display:flex;background:#111318;border:1px solid var(--line);border-radius:10px;overflow:hidden}.presets button{flex:1;border:0;background:transparent;color:#a7aba6;font-size:11px;padding:11px 0}.presets button[aria-pressed="true"]{background:#30382a;color:var(--lime)}.help{font-size:10px;color:#a0a59e;line-height:1.7;margin:10px 0 15px}.range-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin:17px 0 10px;color:#cbd0c8}.range-label output{font:10px var(--mono);color:var(--lime)}input[type=range]{width:100%;accent-color:var(--lime);height:15px;margin:0;cursor:pointer}.full{width:100%;font-size:10px;margin-top:15px}.select-row{display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:11px;color:#cbd0c8}.select-row select{max-width:220px;font-size:10px;padding:8px;background:#25282e;color:#cbd0c8;border:1px solid var(--line);border-radius:7px}.toggle-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:11px 0;color:#cbd0c8}.toggle-row input{width:17px;height:17px;accent-color:var(--lime)}details{margin-top:12px;border-top:1px solid #ffffff0b;padding-top:16px}summary{font-size:11px;cursor:pointer;color:#a5ada0}.field-label{font-size:10px;display:block;color:#b6bdb2;margin:14px 0 8px}input[type=text],input[type=number],textarea{background:#111318;border:1px solid var(--line);color:var(--text);border-radius:9px;padding:11px 12px;font-size:11px;width:100%;line-height:1.6}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#797f83;font-size:10px}.distance-input{display:flex;align-items:center;gap:10px}.distance-input>span{font-size:10px;color:#949e90}.two-buttons{display:flex;gap:8px;margin-top:12px}.two-buttons>.button{flex:1;font-size:10px}.export-buttons{margin-top:9px}.settings-end{display:flex;justify-content:space-between;align-items:center;padding-top:20px}.settings-end>span{font:9px var(--mono);color:#959e90}
@media(min-width:1200px){.feedback{bottom:155px}.welcome{padding-left:9%;padding-right:9%}}
@media(max-width:1050px) and (min-width:761px){.debug{width:215px;padding:14px;right:18px}.feedback{left:38%;width:440px}.welcome-visual{transform:scale(.85)}.welcome{gap:0;padding:0 6%}.welcome h1{font-size:62px}}
@media(max-width:760px){#app{min-height:560px;height:100svh}.topbar{padding:calc(20px + env(safe-area-inset-top)) 20px 20px}.brand{font-size:11px;gap:9px}.brand svg{width:25px;height:25px}.brand-divider{padding:0 8px}.privacy-pill{font-size:9px;padding:7px 10px;gap:6px}.welcome{display:flex;align-items:flex-start;padding:0 28px;inset:120px 0 70px}.welcome-copy{position:relative;z-index:1}.welcome .eyebrow{margin-bottom:24px}.welcome h1{font-size:clamp(44px,10vw,65px);line-height:1.07}.intro{font-size:13px;line-height:1.8;margin:21px 0 25px}.button.large{padding:14px 18px;min-height:48px;font-size:12px}.welcome-note{font-size:9px}.experiment-note{margin-top:27px}.welcome-visual{position:absolute;right:-60px;bottom:-18px;width:230px;height:230px;opacity:.28;transform:scale(.7);transform-origin:right bottom}.welcome-footer{left:20px;right:20px;bottom:20px;padding-top:17px}.welcome-footer>span{font-size:8px}.welcome-footer .text-button{font-size:10px}.source-badge{left:16px;top:calc(78px + env(safe-area-inset-top));font-size:8px;padding:7px 9px}.source-badge .text-button{font-size:8px}.feedback{padding:17px 18px 15px;bottom:calc(120px + env(safe-area-inset-bottom));width:calc(100% - 28px);max-width:480px;border-radius:15px}.feedback h2{font-size:22px;margin:11px 0 7px}.feedback p{font-size:10px;min-height:16px}.state-kicker{font-size:8px}.state-kicker #coverage-chip{font-size:8px}.hold-track{margin-top:13px}.gate-row{font-size:8px;margin-top:11px}.controls{bottom:calc(36px + env(safe-area-inset-bottom));width:calc(100% - 24px);padding:7px 5px;gap:1px;border-radius:15px}.dock-button{min-width:41px;font-size:7px;gap:3px;min-height:43px}.dock-button svg{width:18px;height:18px}.scan-button{font-size:10px;min-height:43px;padding:8px 6px;border-radius:10px}.camera-footnote{font-size:6.5px;letter-spacing:.01em;bottom:calc(13px + env(safe-area-inset-bottom))}.camera-footnote span{padding:0 5px}.debug{right:14px;top:calc(121px + env(safe-area-inset-top));width:173px;padding:12px;border-radius:12px;max-height:calc(100svh - 443px - env(safe-area-inset-bottom));min-height:140px}.panel-heading .eyebrow{font-size:7px;letter-spacing:.05em}.panel-heading>span:last-child{font-size:8px}.debug-score{margin:10px 0;gap:8px}.debug-score>span{font-size:28px}.debug-score>div{font-size:8px}.debug-score small{font-size:7px}.metrics{font-size:8px}.metrics>div{padding:6px 0;gap:4px}.metrics dd{font-size:7px;max-width:83px}.debug-note{font-size:8px}.session-link{font-size:8px}#reticle{width:89px;height:89px}.notice{top:calc(73px + env(safe-area-inset-top))}.loading-card{padding:19px;gap:12px}.loading-card strong{font-size:12px}.loading-card p{font-size:10px}.loading-card .text-button{font-size:10px}}
@media(max-width:760px) and (max-height:710px){.welcome{top:104px}.welcome .eyebrow{margin-bottom:18px}.welcome h1{font-size:44px}.intro{margin:16px 0 20px}.experiment-note{margin-top:18px}.welcome-note{margin-top:11px}.experiment-note p{font-size:10px}.feedback{bottom:111px;padding-top:13px}.feedback h2{font-size:20px}.debug{max-height:165px}.camera-footnote{font-size:6px}}
@media(orientation:landscape) and (max-height:560px){#app{min-height:360px}.welcome{inset:90px 0 60px;padding:0 40px;display:block}.welcome .eyebrow{margin-bottom:10px}.welcome h1{font-size:40px}.intro{font-size:11px;margin:12px 0}.experiment-note,.welcome-note,.welcome-visual{display:none}.welcome-actions .large{min-height:39px;padding:10px 16px}.welcome-footer{bottom:12px;padding-top:10px}.topbar{padding:15px 25px}.feedback{left:22px;transform:none;bottom:100px;width:370px;padding:12px 16px}.feedback h2{font-size:20px;margin:8px 0 5px}.feedback p{font-size:9px}.debug{top:75px;right:20px;max-height:calc(100svh - 175px);width:200px}.debug-score,.debug-note{display:none}.source-badge{top:67px;left:24px}.controls{max-width:520px;bottom:32px}.camera-footnote{bottom:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
