:root{--bg:#07140f;--panel:#10231b;--panel2:#163027;--ink:#f4f6eb;--muted:#93a89c;--lime:#c8f23d;--orange:#ff7448;--line:rgba(255,255,255,.1);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"SF Pro Display",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;min-height:100%;background:var(--bg)}body{overscroll-behavior:none}button,input{font:inherit}button{color:inherit}.topbar{height:72px;padding:max(18px,env(safe-area-inset-top)) 22px 0;display:flex;align-items:center;justify-content:space-between}.brand{font-weight:900;font-size:14px;letter-spacing:2.5px;display:flex;gap:9px;align-items:center}.ball{color:var(--lime);font-size:25px;line-height:0;text-shadow:0 0 20px rgba(200,242,61,.35)}.icon-btn,.back-btn,.round-btn{border:0;background:rgba(255,255,255,.08);width:42px;height:42px;border-radius:50%;font-size:20px}.screen{display:none;min-height:calc(100dvh - 138px);padding:26px 22px 110px}.screen.active{display:block}.hero{padding-top:8vh}.eyebrow,.step-head span,.tip-card>span,.stat-label,.metric-grid span,.confidence span{font-size:10px;letter-spacing:1.7px;font-weight:800;color:var(--lime)}h1{font-size:56px;line-height:.9;letter-spacing:-3px;margin:15px 0 22px;max-width:340px}h1 em{font-weight:300;color:var(--lime)}.hero p{color:var(--muted);font-size:16px;line-height:1.55;max-width:340px}.quick-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:20px;margin:30px 0 18px;background:linear-gradient(145deg,rgba(255,255,255,.06),rgba(255,255,255,.015))}.quick-stats>div{padding:19px 10px;text-align:center;border-right:1px solid var(--line)}.quick-stats>div:last-child{border:0}.stat-value{display:block;font-size:25px;font-weight:850}.stat-label{display:block;color:var(--muted);font-size:8px;margin-top:5px}.primary-btn,.secondary-btn,.camera-action{width:100%;height:58px;border:0;border-radius:16px;font-weight:800}.primary-btn{background:var(--lime);color:#102008;display:flex;align-items:center;justify-content:space-between;padding:0 20px;font-size:16px}.primary-btn b{font-size:24px}.secondary-btn{background:transparent;border:1px solid var(--line);margin-top:10px;color:var(--muted)}.tip-card{margin-top:24px;background:var(--panel);border-left:3px solid var(--lime);border-radius:4px 15px 15px 4px;padding:16px}.tip-card p{font-size:13px;color:var(--muted);line-height:1.4;margin:8px 0 0}.step-head{display:flex;gap:15px;align-items:center;margin:4px 0 26px}.step-head h2{font-size:26px;margin:3px 0 0;letter-spacing:-.7px}.form-card{background:var(--panel);padding:21px;border-radius:24px;margin-bottom:18px}.form-card>label,.sheet-panel>label:not(.toggle-row){display:flex;justify-content:space-between;font-size:12px;font-weight:750;color:var(--muted);margin:20px 0 10px}.form-card>label:first-child{margin-top:0}.form-card output{color:var(--ink)}.segment,.chips{display:flex;padding:4px;background:var(--bg);border-radius:12px;gap:4px}.segment button,.chips button{flex:1;border:0;background:transparent;color:var(--muted);height:39px;border-radius:9px;font-size:13px;font-weight:750}.segment button.selected,.chips button.selected{background:var(--panel2);color:var(--lime)}input[type=range]{width:100%;accent-color:var(--lime)}.mode-list{display:grid;gap:8px}.mode{border:1px solid var(--line);background:transparent;border-radius:14px;padding:13px;display:grid;grid-template-columns:42px 1fr 20px;text-align:left;align-items:center}.mode.selected{border-color:var(--lime);background:rgba(200,242,61,.05)}.mode-icon{background:rgba(255,255,255,.07);width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--lime);font-weight:900}.mode b,.mode small{display:block}.mode small{color:var(--muted);font-size:11px;margin-top:2px}.mode i{color:var(--lime)}.camera-screen{position:fixed;inset:0;z-index:20;padding:0;min-height:100dvh;background:#000;overflow:hidden}.camera-screen.active{display:block}#camera{width:100%;height:100%;object-fit:cover}.camera-shade{position:absolute;inset:0;background:linear-gradient(#0008,transparent 25%,transparent 65%,#000b)}.camera-top{position:absolute;top:0;left:0;right:0;padding:max(16px,env(safe-area-inset-top)) 18px 0;display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:2px;font-weight:850}.round-btn{background:#07140faa;backdrop-filter:blur(8px)}.calibration-layer,.tracking-layer{position:absolute;inset:0}#courtOverlay{position:absolute;inset:15% 3% 10%;width:94%;height:75%;overflow:visible}#courtOverlay polygon{fill:rgba(200,242,61,.06);stroke:var(--lime);stroke-width:.5;vector-effect:non-scaling-stroke}#courtOverlay line{stroke:rgba(200,242,61,.25);stroke-width:.3;vector-effect:non-scaling-stroke}.marker{position:absolute;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50%;border:2px solid #fff;background:var(--lime);color:#102008;font-weight:900;touch-action:none;box-shadow:0 3px 18px #0008}.instruction{position:absolute;top:13%;left:50%;transform:translateX(-50%);background:#07140fdd;border:1px solid var(--line);border-radius:14px;padding:11px 18px;text-align:center;white-space:nowrap}.instruction b,.instruction span{display:block}.instruction span{font-size:11px;color:var(--muted);margin-top:3px}.camera-action{position:absolute;bottom:max(27px,env(safe-area-inset-bottom));left:22px;width:calc(100% - 44px);background:var(--lime);color:#102008}.hidden{display:none!important}.status-pill{position:absolute;top:14%;left:50%;transform:translateX(-50%);background:#07140fdd;padding:10px 16px;border-radius:99px;font-size:11px;font-weight:900;letter-spacing:2px;display:flex;gap:8px;align-items:center}.status-pill i{width:8px;height:8px;background:var(--lime);border-radius:50%}.status-pill i.recording{background:var(--orange);animation:pulse 1s infinite}.live-guide{position:absolute;top:50%;left:0;right:0;text-align:center;text-shadow:0 2px 4px #000}.live-guide span,.live-guide b{display:block}.live-guide b{font-size:80px}.record-btn{position:absolute;bottom:max(35px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:86px;height:86px;border-radius:50%;border:3px solid #fff;background:#07140f99;display:grid;place-items:center}.record-btn span{width:48px;height:48px;border-radius:50%;background:var(--lime);grid-area:1/1}.record-btn b{grid-area:1/1;color:#102008;font-size:10px;z-index:1}.record-btn.recording span{background:var(--orange);border-radius:12px}.speed-card{background:radial-gradient(circle at 50% 45%,#1c3b2e,var(--panel) 60%);height:260px;border-radius:26px;display:grid;place-items:center;position:relative}.speed-ring{width:174px;height:174px;border-radius:50%;border:2px solid var(--lime);box-shadow:0 0 45px rgba(200,242,61,.12),inset 0 0 35px rgba(200,242,61,.07);display:grid;place-content:center;text-align:center}.speed-ring span{font-size:66px;line-height:.9;font-weight:900;letter-spacing:-4px}.speed-ring small{font-size:11px;letter-spacing:2px;color:var(--lime);margin-top:8px}.confidence{position:absolute;bottom:16px;display:flex;gap:8px;align-items:center}.confidence b{font-size:11px}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin:14px 0}.metric-grid>div{background:var(--panel);padding:17px}.metric-grid span{display:block;color:var(--muted);font-size:8px}.metric-grid b{display:block;margin-top:6px;font-size:19px}.session-strip{display:flex;justify-content:space-around;color:var(--muted);font-size:10px;letter-spacing:1px;margin:21px 0}.session-strip b{color:var(--ink);margin-left:4px}.danger-text{border:0;background:transparent;color:var(--orange);width:100%;padding:17px;font-size:12px}.history-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:24px}.history-summary div{background:var(--panel);padding:16px 8px;border-radius:15px;text-align:center}.history-summary b,.history-summary span{display:block}.history-summary b{font-size:21px}.history-summary span{font-size:8px;color:var(--muted);letter-spacing:1px;margin-top:4px}.history-list{display:grid;gap:10px}.history-item{background:var(--panel);border-radius:17px;padding:15px 17px;display:grid;grid-template-columns:1fr auto;align-items:center}.history-item h3{margin:0;font-size:14px}.history-item p{margin:5px 0 0;font-size:11px;color:var(--muted)}.history-item strong{font-size:26px;color:var(--lime)}.history-item strong small{font-size:9px}.empty{color:var(--muted);text-align:center;padding:60px 20px}.tabbar{position:fixed;bottom:0;left:0;right:0;height:76px;padding-bottom:env(safe-area-inset-bottom);background:rgba(7,20,15,.92);backdrop-filter:blur(18px);border-top:1px solid var(--line);display:flex;z-index:10}.tabbar button{flex:1;border:0;background:transparent;color:#6f8277;font-size:9px;letter-spacing:1.5px;font-weight:850}.tabbar button span{display:block;font-size:21px;margin-bottom:3px}.tabbar button.active{color:var(--lime)}.sheet{position:fixed;inset:0;background:#0009;z-index:30;display:flex;align-items:flex-end}.sheet-panel{background:var(--panel);border-radius:26px 26px 0 0;padding:12px 22px max(28px,env(safe-area-inset-bottom));width:100%}.sheet-handle{width:42px;height:4px;background:#ffffff30;border-radius:9px;margin:0 auto 18px}.sheet-panel h2{margin:0 0 24px}.toggle-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:17px 0}.toggle-row b,.toggle-row small{display:block}.toggle-row small{color:var(--muted);font-size:11px;margin-top:3px}.toggle-row input{width:45px;height:25px;accent-color:var(--lime)}.privacy-note{font-size:11px;color:var(--muted);line-height:1.5;margin:20px 0}.toast{position:fixed;bottom:95px;left:50%;transform:translate(-50%,20px);background:#eef5eb;color:#102008;border-radius:12px;padding:12px 17px;font-size:12px;font-weight:750;opacity:0;pointer-events:none;transition:.25s;z-index:40}.toast.show{opacity:1;transform:translate(-50%,0)}@keyframes pulse{50%{opacity:.35}}@media(min-width:600px){#app{max-width:430px;margin:auto;min-height:100vh;box-shadow:0 0 60px #000}.tabbar{left:50%;right:auto;width:430px;transform:translateX(-50%)}.camera-screen{left:50%;right:auto;width:430px;transform:translateX(-50%)}}
