:root{--ground: #0b1114;--panel: #111a1e;--panel-2: #17262c;--line: #24383f;--ink: #e9f2f4;--ink-dim: #9db1b7;--ink-faint: #67818a;--accent: #3fc8d6;--amber: #f5b94d;--danger: #e6626e;--good: #5ecf9e;--radius: 10px;--radius-lg: 16px;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{background:var(--ground)}body{margin:0;background:var(--ground);color:var(--ink);font-family:Archivo,system-ui,sans-serif;-webkit-font-smoothing:antialiased;min-height:100vh}h1,.display{font-family:Big Shoulders Display,Archivo Narrow,sans-serif;font-weight:800;text-transform:uppercase;letter-spacing:.02em;line-height:.95;margin:0}.mono,code{font-family:JetBrains Mono,ui-monospace,monospace;font-variant-numeric:tabular-nums}p{color:var(--ink-dim);line-height:1.55;margin:0}button{font-family:inherit;cursor:pointer}[hidden]{display:none!important}.bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 20px;background:#0b1114e6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:baseline;gap:10px}.brand .display{font-size:22px}.brand .tag{font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.14em}.pills{display:flex;gap:8px;flex-wrap:wrap}.pill{display:flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:6px 11px;font-size:12px;color:var(--ink-faint)}.pill b{color:var(--ink);font-family:JetBrains Mono,monospace;font-weight:600}.pill.warn{border-color:var(--amber);color:var(--amber)}.dot{width:7px;height:7px;border-radius:50%;background:var(--ink-faint)}.dot.ok{background:var(--good);box-shadow:0 0 8px var(--good)}.dot.warn{background:var(--amber);box-shadow:0 0 8px var(--amber)}.dot.bad{background:var(--danger)}main{max-width:1000px;margin:0 auto;padding:24px 20px 40px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px;display:flex;flex-direction:column;gap:16px}.panel h1{font-size:34px}.lede{max-width:62ch}.row{display:flex;gap:10px;flex-wrap:wrap}.note{font-size:12px;color:var(--ink-faint);line-height:1.6;max-width:76ch}.note b{color:var(--ink-dim)}.btn{background:var(--panel-2);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);padding:10px 16px;font-size:14px;font-weight:600;transition:border-color .12s,transform .08s}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.4;cursor:default}.btn--primary{background:var(--accent);color:#06231f;border-color:var(--accent)}.btn--sm{padding:6px 12px;font-size:12px}.btn.is-on{background:var(--accent);color:#06231f;border-color:var(--accent)}#mute.is-on{background:transparent;color:var(--amber);border-color:var(--amber)}.progress{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.progress__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.log li{font-size:12px;color:var(--ink-faint);padding:5px 0;border-bottom:1px solid var(--line)}.log li b{color:var(--ink)}.log__band{text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-size:10px;margin:0 6px}.controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-faint)}.controls .grow{flex:1 1 40px}.controls label{display:flex;align-items:center;gap:6px}.controls select{background:var(--panel-2);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:5px 8px;font-family:JetBrains Mono,monospace;font-size:12px}.controls .check{gap:7px}canvas{width:100%;height:420px;display:block;background:#080e11;border:1px solid var(--line);border-radius:var(--radius)}.fit{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.head{color:var(--ink-dim);flex:0 0 132px}.head svg{width:132px;height:auto}.e{fill:var(--panel-2);stroke:var(--line);stroke-width:1.5;transition:fill .3s,stroke .3s}.e.good{fill:var(--good);stroke:var(--good)}.e.fair{fill:var(--amber);stroke:var(--amber)}.e.poor{fill:var(--danger);stroke:var(--danger)}.quality{flex:1 1 380px;border-collapse:collapse;font-size:13px}.quality th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);font-weight:600;padding:0 10px 8px 0;border-bottom:1px solid var(--line)}.quality td{padding:8px 10px 8px 0;border-bottom:1px solid var(--line);color:var(--ink-dim)}.quality td.mono{color:var(--ink)}.grade{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.grade.good{color:var(--good)}.grade.fair{color:var(--amber)}.grade.poor{color:var(--danger)}.grade.waiting{color:var(--ink-faint)}footer{max-width:1000px;margin:0 auto;padding:0 20px 40px}@media (max-width: 620px){canvas{height:320px}.panel{padding:16px}.panel h1{font-size:26px}}.probe{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;background:#0d1417}.probe summary{font-size:13px;font-weight:600;cursor:pointer;color:var(--ink-dim)}.probe summary:hover{color:var(--ink)}.probe pre{font-size:11px;line-height:1.5;color:var(--ink-dim);background:#080e11;border:1px solid var(--line);border-radius:8px;padding:10px;overflow-x:auto;white-space:pre;margin:10px 0}.tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.tab{background:transparent;border:1px solid var(--line);color:var(--ink-dim);border-radius:999px;padding:7px 18px;font-size:13px;font-weight:600;transition:border-color .12s,color .12s,background .12s}.tab:hover{color:var(--ink)}.tab.is-on{background:var(--accent);border-color:var(--accent);color:#06231f}.hoop-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}.hoop-head h1{font-size:32px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);font-weight:600}#court{width:100%;height:460px;display:block;background:#080e11;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px}.calbar{height:8px;background:var(--panel-2);border:1px solid var(--line);border-radius:999px;overflow:hidden;margin-top:14px}.calbar__fill{height:100%;width:0%;background:var(--accent);transition:width .1s linear}#cal-wrap{display:flex;flex-direction:column;gap:14px}input[type=range]{accent-color:var(--accent);width:130px}@media (max-width: 620px){#court{height:360px}}.tab--star{color:var(--accent)}.train-stage{display:flex;gap:22px;align-items:stretch;margin:18px 0;flex-wrap:wrap}.train-meter{position:relative;width:92px;min-height:300px;flex:0 0 92px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.train-zoneline{position:absolute;left:0;right:0;bottom:31.25%;border-top:2px dashed var(--ink-faint);opacity:.7}.train-fill{position:absolute;left:0;right:0;bottom:0;height:0%;background:linear-gradient(to top,var(--ink-faint),var(--ink-dim));transition:height .12s linear,background .25s ease}.train-fill.is-zone{background:linear-gradient(to top,var(--accent),#7ee6f0);box-shadow:0 0 26px var(--accent)}.train-side{flex:1 1 240px;display:flex;flex-direction:column;gap:14px;justify-content:center}.train-state{font-size:20px;font-weight:600;padding:14px 16px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);color:var(--ink-dim)}.train-state.zone{color:#06231f;background:var(--accent);border-color:var(--accent);box-shadow:0 0 20px #3fc8d666}.train-state.build{color:var(--amber);border-color:var(--amber)}.train-state.quiet{color:var(--ink-dim)}.train-state.warn{color:var(--amber);border-color:var(--amber)}.train-state.off{color:var(--danger);border-color:var(--danger)}.ears{display:flex;gap:12px;flex-wrap:wrap}.earbox{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-faint);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:6px 12px;text-transform:uppercase;letter-spacing:.08em}.eardot{font-family:JetBrains Mono,monospace;font-size:15px;line-height:1}.eardot.ok{color:var(--good);text-shadow:0 0 8px var(--good)}.eardot.warn{color:var(--amber)}.eardot.bad{color:var(--danger)}
