:root{color-scheme:dark;--bg-a: #02060a;--bg-b: #0b1320;--ink: #f6fbff;--muted: #a8c4d8;--cyan: #79efff;--amber: #ffab61;--glass: rgba(8, 15, 24, .52);--border: rgba(164, 224, 255, .18)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;overflow:hidden;background:radial-gradient(circle at 20% 20%,rgba(17,54,83,.48),transparent 32%),radial-gradient(circle at 82% 16%,rgba(156,90,32,.32),transparent 28%),linear-gradient(135deg,var(--bg-a),var(--bg-b));color:var(--ink);font-family:Bahnschrift,Segoe UI Variable,Trebuchet MS,sans-serif}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(rgba(121,239,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(121,239,255,.06) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(circle at center,rgba(0,0,0,.7),transparent 82%);mask-image:radial-gradient(circle at center,rgba(0,0,0,.7),transparent 82%)}#app{position:relative;width:100vw;height:100vh;isolation:isolate}#viewport,.chrome,.vignette{position:absolute;inset:0}#viewport{width:100%;height:100%;display:block;cursor:grab}#viewport:active{cursor:grabbing}#webcam-feed{display:none}.ui-toggle-button{position:absolute;top:clamp(18px,4vw,34px);right:clamp(18px,4vw,34px);z-index:4;appearance:none;border:1px solid rgba(142,214,245,.24);border-radius:999px;padding:12px 16px;color:#eaf7ff;background:#060f18c7;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 16px 36px #00000047;font:inherit;font-weight:700;cursor:pointer;transition:transform .16s ease,background-color .16s ease,border-color .16s ease}.ui-toggle-button:hover{transform:translateY(-1px);background:#0a1520eb;border-color:#8fdaff6b}.intro{position:absolute;inset:0;display:grid;place-items:center;padding:24px;z-index:3;background:radial-gradient(circle at center,#02080e52,#000000b8);transition:opacity .22s ease,visibility .22s ease,transform .22s ease;pointer-events:none}.intro.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.intro-card{width:min(620px,calc(100vw - 32px));padding:26px 28px;border-radius:28px;border:1px solid rgba(146,220,255,.16);background:linear-gradient(180deg,#060c12eb,#060c12b3);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 0 0 1px #ffffff08 inset,0 36px 90px #0000006b;text-align:center;pointer-events:auto}.intro-card h2{margin:0;font-size:clamp(2rem,5vw,3.6rem);letter-spacing:-.04em;line-height:1}.intro-copy{margin:14px auto 0;max-width:34ch;color:var(--muted);font-size:clamp(1rem,2vw,1.08rem);line-height:1.6}#camera-access-button{appearance:none;margin-top:20px;min-width:min(360px,100%);border:0;padding:15px 18px;border-radius:18px;color:#020810;background:linear-gradient(135deg,#effcff,#d8f1ff 48%,#ffcb8d);font:inherit;font-size:1.06rem;font-weight:800;cursor:pointer;transition:transform .16s ease,filter .16s ease,opacity .16s ease}#camera-access-button:hover{transform:translateY(-1px);filter:brightness(1.04)}#camera-access-button:disabled{opacity:.72;cursor:wait}.intro-status{margin:14px 0 0;color:#c1d9ea;font-size:.95rem;line-height:1.6}.chrome{pointer-events:none;background:radial-gradient(circle at center,transparent 42%,rgba(0,0,0,.56) 100%),linear-gradient(180deg,rgba(0,0,0,.2),transparent 22%,transparent 76%,rgba(0,0,0,.32));mix-blend-mode:screen}.vignette{pointer-events:none;box-shadow:inset 0 0 160px #000000c7}.hud{position:absolute;top:clamp(18px,4vw,40px);left:clamp(18px,4vw,42px);width:min(560px,calc(100vw - 36px));padding:20px 22px;border:1px solid var(--border);border-radius:24px;background:linear-gradient(180deg,#08101ad1,#060c1257);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 0 0 1px #ffffff08 inset,0 24px 80px #0000005c;animation:enter .85s cubic-bezier(.2,.8,.2,1);transition:opacity .18s ease,transform .18s ease,visibility .18s ease}.eyebrow{margin:0 0 12px;color:var(--cyan);font-size:.82rem;letter-spacing:.18em;text-transform:uppercase}.hud h1{margin:0;font-size:clamp(2.5rem,6vw,5.4rem);line-height:.94;letter-spacing:-.04em}.lede{margin:14px 0 0;color:var(--muted);max-width:48ch;font-size:clamp(.95rem,2vw,1.08rem);line-height:1.55}.metric-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.metric{display:inline-flex;gap:8px;align-items:baseline;padding:10px 12px;border-radius:999px;background:#050a108c;border:1px solid rgba(143,210,243,.1);color:#d7ecf8;font-size:.9rem}.metric strong{color:#7dbad5;font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.metric b{font-weight:700;color:var(--ink)}.actions{position:absolute;left:clamp(18px,4vw,42px);bottom:clamp(18px,4vw,34px);display:flex;align-items:center;flex-wrap:wrap;gap:14px;max-width:min(720px,calc(100vw - 36px));z-index:2;transition:opacity .18s ease,transform .18s ease,visibility .18s ease}#app:not([data-camera=ready]):not([data-mode=manual]) #recenter-button{opacity:.4;pointer-events:none}#recenter-button{appearance:none;border:0;padding:13px 18px;border-radius:999px;color:#04101c;background:linear-gradient(135deg,#76f0ff,#ffb86c);font:inherit;font-weight:800;letter-spacing:.02em;cursor:pointer;box-shadow:0 16px 42px #00000047;transition:transform .16s ease,filter .16s ease}#recenter-button:hover{transform:translateY(-1px);filter:brightness(1.05)}.secondary-button{appearance:none;border:1px solid rgba(134,208,240,.22);padding:12px 16px;border-radius:999px;color:#d9effc;background:#060f18c7;font:inherit;font-weight:700;letter-spacing:.02em;cursor:pointer;transition:transform .16s ease,background-color .16s ease,border-color .16s ease}.secondary-button:hover{transform:translateY(-1px);background:#0a1520eb;border-color:#8fdaff61}.secondary-button:disabled{opacity:.5;cursor:default;transform:none}.model-pill{display:inline-flex;align-items:baseline;gap:8px;padding:10px 12px;border-radius:999px;border:1px solid rgba(143,210,243,.12);background:#050a108c;color:#d7ecf8;font-size:.9rem}.model-pill strong{color:#7dbad5;font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.model-pill b{max-width:18ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hint{color:#eef8ffb8;font-size:.88rem}.capture-panel{position:absolute;right:clamp(18px,4vw,34px);bottom:clamp(18px,4vw,34px);width:min(360px,calc(100vw - 36px));padding:16px;border-radius:24px;border:1px solid rgba(144,218,255,.22);background:linear-gradient(180deg,#08101aeb,#050b11bd);box-shadow:0 24px 60px #00000052;z-index:2;transition:opacity .18s ease,transform .18s ease,visibility .18s ease}.capture-panel.is-hidden{opacity:0;transform:translateY(10px);visibility:hidden;pointer-events:none}#app[data-ui=closed] .ui-surface{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(12px)}.capture-panel h2{margin:0;font-size:1.45rem;letter-spacing:-.03em}.capture-lede{margin:10px 0 0;color:#e1f1fac7;font-size:.92rem;line-height:1.5}.capture-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.capture-metric{display:grid;gap:4px;padding:10px 12px;border-radius:16px;border:1px solid rgba(143,210,243,.1);background:#050a107a}.capture-metric strong{color:#7dbad5;font-size:.76rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.capture-metric b{color:var(--ink);font-size:.96rem}.capture-hint{margin:12px 0 0;color:#e9f3f9d6;font-size:.88rem;line-height:1.5}#tracking-debug{display:block;width:100%;margin-top:14px;aspect-ratio:16 / 9;border-radius:18px;background:#0003}.lil-gui.root{--background-color: rgba(6, 12, 18, .92);--widget-color: rgba(12, 22, 32, .98);--hover-color: rgba(25, 40, 56, .96);--focus-color: rgba(38, 56, 72, .98);--text-color: #e9f5ff;--title-background-color: rgba(12, 26, 42, .98);--number-color: #7ceeff;--string-color: #ffbc73}@keyframes enter{0%{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:translateZ(0)}}@media(max-width:720px){.ui-toggle-button{top:12px;right:12px}.hud{width:calc(100vw - 24px);left:12px;top:12px;padding:16px;border-radius:18px}.actions{left:12px;right:12px;bottom:12px;flex-direction:column;align-items:flex-start;max-width:48vw}.capture-panel{width:46vw;right:12px;bottom:12px}.capture-metrics{grid-template-columns:1fr}}
