.game{height:100svh;padding:calc(var(--sat) + 6px) calc(var(--sar) + 8px) calc(var(--sab) + 6px) calc(var(--sal) + 8px);grid-template-rows:auto auto auto auto minmax(96px,1fr) auto auto;grid-template-areas:"clock""down""possession""timers""primary""results""meta";gap:6px;display:grid;overflow:hidden}.clockBand{grid-area:clock}.downBand{grid-area:down}.possession{grid-area:possession;grid-template-rows:minmax(0,1fr) auto;gap:4px;display:grid}.timerBand{grid-area:timers}.primarySlot{grid-area:primary}.actionRow.results{grid-area:results}.actionRow.meta{grid-area:meta}.game>*{min-width:0;min-height:0;overflow:hidden}.clockBand{background:var(--surface);border-radius:var(--radius);text-align:center;padding:4px 12px 8px;position:relative}.clockBand.stopped{background:#16120a}.clockBand.lastTwo{background:#2a1206}.quarter{letter-spacing:3px;color:var(--accent);font-size:15px;font-weight:800}.clockTime{letter-spacing:-2px;font-size:clamp(56px,19vw,104px);font-weight:800;line-height:.98}.clockTime.stoppedText{color:var(--text-dim)}.clockHint{letter-spacing:2px;color:var(--text-dim);text-transform:uppercase;font-size:11px}.banner{letter-spacing:2px;color:#000;background:var(--danger);border-radius:6px;margin-top:2px;padding:2px 8px;font-size:12px;font-weight:800;display:inline-block}.banner.mercy{background:var(--accent)}.downBand{background:var(--surface);border-radius:var(--radius);text-align:center;letter-spacing:1px;padding:8px;font-size:clamp(22px,7.5vw,34px);font-weight:800}.downBand .nrz{letter-spacing:2px;color:#000;background:var(--accent);vertical-align:middle;border-radius:5px;margin-left:8px;padding:2px 7px;font-size:12px;display:inline-block}.scoreBand{gap:6px;min-height:0;display:flex}.team{background:var(--surface);border-radius:var(--radius);text-align:center;border:3px solid #0000;flex:1;min-width:0;padding:8px 6px 6px}.team.hasBall{border-color:var(--team);background:color-mix(in srgb, var(--team) 26%, #000)}.teamName{letter-spacing:1px;white-space:nowrap;text-overflow:ellipsis;color:var(--text-dim);font-size:13px;font-weight:800;overflow:hidden}.team.hasBall .teamName{color:#fff}.teamScore{font-size:clamp(30px,10vw,46px);font-weight:800;line-height:1.05}.timeouts{letter-spacing:3px;color:var(--text-dim);font-size:15px}.timeouts b{color:var(--accent)}.direction{text-align:center;letter-spacing:2px;color:var(--text-dim);text-transform:uppercase;font-size:12px}.timerBand{gap:6px;display:flex}.timer{background:var(--surface);border-radius:var(--radius);text-align:center;flex:1;padding:6px}.timerLabel{letter-spacing:2px;color:var(--text-dim);font-size:11px}.timerValue{font-size:clamp(26px,9vw,40px);font-weight:800;line-height:1.1}.timer.warn .timerValue{color:var(--accent)}.timer.danger{background:#2a0a08}.timer.danger .timerValue{color:var(--danger)}.timer.idle .timerValue{color:#444}.primary{border-radius:var(--radius);background:var(--accent);color:#000;letter-spacing:2px;border:none;width:100%;height:100%;min-height:104px;font-size:clamp(30px,10vw,46px);font-weight:900}.primary:active{filter:brightness(.82)}.primary.snap{background:var(--ok)}.primary.live{background:var(--danger);color:#fff}.primary.whistle{color:#000;background:#fff}.primary.stoppage{color:#8fc4ff;background:#10243a;border:3px solid #2f6fb3;font-size:clamp(22px,6.5vw,34px)}.primary.stoppage small{letter-spacing:1px;opacity:.8;margin-top:6px;font-size:12px;font-weight:700;display:block}.actionRow{gap:6px;display:flex}.action{border-radius:var(--radius);background:var(--surface-hi);min-height:66px;color:var(--text);letter-spacing:1px;border:2px solid #3a3a3a;flex:1;padding:0 2px;font-size:15px;font-weight:800}.action:active{filter:brightness(1.4)}.action.score{border-color:var(--ok);color:var(--ok)}.action.first{border-color:var(--accent);color:var(--accent)}.action.undo{color:var(--text-dim);border-color:#555}.action:disabled{opacity:.32}.action small{letter-spacing:1px;opacity:.75;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:10px;font-weight:700;display:block;overflow:hidden}.prompt{border-radius:var(--radius);background:#10243a;border:2px solid #2f6fb3;padding:10px}.promptTitle{letter-spacing:2px;color:#8fc4ff;text-align:center;text-transform:uppercase;margin-bottom:8px;font-size:13px;font-weight:800}.promptRow{gap:6px;display:flex}.promptBtn{border-radius:var(--radius);color:#fff;letter-spacing:1px;background:#143050;border:2px solid #2f6fb3;flex:1;min-height:72px;font-size:16px;font-weight:800}.promptBtn.suggested{background:#2f6fb3;border-color:#8fc4ff}.promptBtn small{opacity:.8;font-size:10px;font-weight:700;display:block}.lockOverlay{z-index:50;background:#000000d1;flex-direction:column;justify-content:center;align-items:center;gap:18px;display:flex;position:fixed;inset:0}.lockOverlay .lockClock{font-size:20vw;font-weight:800;line-height:1}.lockOverlay .lockNote{color:var(--text-dim);letter-spacing:2px;font-size:13px}.unlockBtn{border-radius:var(--radius);border:3px solid var(--accent);min-width:70vw;min-height:84px;color:var(--accent);letter-spacing:2px;background:0 0;font-size:18px;font-weight:800}@media (orientation:landscape){.game{grid-template:"clock primary""down primary""possession results"minmax(0,1fr)"timers meta"/1.02fr 1fr;gap:5px}.clockTime{letter-spacing:-1px;font-size:clamp(34px,17vh,76px)}.quarter{font-size:13px}.clockHint{font-size:10px}.downBand{padding:5px;font-size:clamp(18px,6.5vh,30px)}.teamScore{font-size:clamp(24px,9vh,40px)}.teamName{font-size:12px}.timerValue{font-size:clamp(20px,7.5vh,34px)}.primary{height:100%;min-height:0;font-size:clamp(26px,9vh,46px)}.primary.stoppage{font-size:clamp(18px,5.5vh,30px)}.primary.stoppage small{margin-top:3px;font-size:11px}.action{min-height:56px;font-size:14px}.promptBtn{min-height:58px;font-size:15px}.clockBand{padding:2px 10px 4px}.team{padding:5px 4px 3px}.timer{padding:4px}.downBand .nrz{font-size:10px}.timeouts{letter-spacing:2px;font-size:13px}.direction{font-size:11px}.banner{padding:1px 6px;font-size:10px}}@media (orientation:landscape) and (height<=400px){.clockHint,.action small,.promptBtn small{display:none}.direction{font-size:10px}.action{min-height:48px}}.sheet{z-index:40;padding:calc(var(--sat) + 10px) calc(var(--sar) + 10px) calc(var(--sab) + 10px) calc(var(--sal) + 10px);background:#000000f0;flex-direction:column;display:flex;position:fixed;inset:0;overflow-y:auto}.sheetHead{flex:none;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.sheetTitle{letter-spacing:3px;color:var(--accent);text-transform:uppercase;font-size:15px;font-weight:800}.sheetClose{border-radius:var(--radius);background:var(--surface-hi);min-width:96px;min-height:56px;color:var(--text);letter-spacing:1px;border:2px solid #3a3a3a;font-size:15px;font-weight:800}.sheetLabel{letter-spacing:2px;color:var(--text-dim);text-transform:uppercase;margin:12px 0 6px;font-size:11px}.sheetGrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.sheetBtn{border-radius:var(--radius);background:var(--surface-hi);min-height:74px;color:var(--text);letter-spacing:1px;border:2px solid #3a3a3a;padding:6px 8px;font-size:16px;font-weight:800}.sheetBtn small{opacity:.7;letter-spacing:0;margin-top:3px;font-size:11px;font-weight:700;display:block}.sheetBtn:disabled{opacity:.3}.sheetBtn.on{background:var(--accent);border-color:var(--accent);color:#000}.sheetBtn.good{border-color:var(--ok);color:var(--ok)}.sheetBtn.bad{border-color:var(--danger);color:var(--danger)}.nudgeRow{gap:6px;display:flex}.nudge{border-radius:var(--radius);background:var(--surface-hi);border:2px solid var(--accent);min-height:72px;color:var(--accent);flex:1;font-size:18px;font-weight:800}.correctValue{text-align:center;padding:4px 0;font-size:clamp(38px,13vw,60px);font-weight:800}.stepRow{align-items:center;gap:8px;display:flex}.stepRow .stepVal{text-align:center;flex:1;font-size:26px;font-weight:800}.step{border-radius:var(--radius);background:var(--surface-hi);min-width:72px;min-height:66px;color:var(--text);border:2px solid #3a3a3a;font-size:24px;font-weight:800}.logList{margin:0;padding:0;list-style:none}.logItem{border-bottom:1px solid #242424;justify-content:space-between;gap:12px;padding:13px 10px;font-size:15px;display:flex}.logItem:first-child{border-radius:var(--radius);background:#161616}.logTime{color:var(--text-dim);font-variant-numeric:tabular-nums}.logQ{color:var(--accent);letter-spacing:1px;font-size:12px}.holdBtn{position:relative;overflow:hidden}.holdFill{background:var(--danger);opacity:.35;pointer-events:none;transition:width 60ms linear;position:absolute;inset:0 auto 0 0}:root{--bg:#000;--surface:#121212;--surface-hi:#1e1e1e;--text:#fff;--text-dim:#9a9a9a;--accent:#ffb020;--danger:#ff3b30;--ok:#30d158;--radius:14px;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;overscroll-behavior:none;touch-action:manipulation;margin:0;padding:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-weight:600}#root{min-height:100svh;padding:var(--sat) var(--sar) var(--sab) var(--sal)}button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}
