:root{--teal: #12756b;--teal-deep: #0d5a52;--lime: #c6f135;--lime-deep: #a8d61a;--ink: #0e1c1a;--mist: #edf2f0;--paper: #ffffff;--line: #d5e0dc;--muted: #5c716c;--danger: #d5432f;--danger-bg: #fbe6e2;--bg: var(--mist);--surface: var(--paper);--text: var(--ink);--text-muted: var(--muted);--border: var(--line);--accent: var(--teal);--r-lg: 20px;--r-md: 14px;--r-sm: 9px;--shadow: 0 1px 2px rgba(14, 28, 26, .06), 0 8px 24px -12px rgba(14, 28, 26, .18);--display: "Anton", "Hanken Grotesk", system-ui, sans-serif;--body: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mono: "Space Mono", ui-monospace, monospace}@media (prefers-color-scheme: dark){:root{--bg: #0b1614;--surface: #12211f;--text: #eaf2ef;--text-muted: #8ba39d;--border: #22332f;--paper: #12211f;--danger-bg: #34211d;--accent: var(--lime)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}.app{max-width:560px;margin:0 auto;min-height:100%;display:flex;flex-direction:column}.screen{padding:20px 18px 96px;flex:1}.stack{display:flex;flex-direction:column;gap:14px}.row{display:flex;gap:10px;align-items:center}.spread{display:flex;justify-content:space-between;align-items:center;gap:12px}.wrap{flex-wrap:wrap}.grow{flex:1}.center{text-align:center}.muted{color:var(--text-muted)}.mono{font-family:var(--mono)}.hide{display:none!important}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.wordmark{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--text)}.wordmark .ball{width:26px;height:26px}.wordmark b{font-family:var(--display);font-weight:400;font-size:20px;letter-spacing:.06em;text-transform:uppercase;line-height:1}.display{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:.01em;line-height:.92;margin:0}.display.xl{font-size:clamp(44px,15vw,72px)}.display.lg{font-size:clamp(30px,9vw,44px)}.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--text-muted);margin:0 0 6px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow)}.card.flat{box-shadow:none}.card h2{font-family:var(--display);font-weight:400;letter-spacing:.03em;text-transform:uppercase;font-size:22px;margin:0 0 4px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;cursor:pointer;font-family:var(--body);font-weight:700;font-size:16px;padding:13px 18px;border-radius:var(--r-md);line-height:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .06s ease,background .15s ease,border-color .15s ease}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--teal);color:#fff}.btn.primary:hover{background:var(--teal-deep)}.btn.go{background:var(--lime);color:var(--ink)}.btn.go:hover{background:var(--lime-deep)}.btn.ghost{background:transparent;border-color:var(--border);color:var(--text)}.btn.ghost:hover{border-color:var(--accent)}.btn.danger{background:var(--danger-bg);color:var(--danger)}.btn.block{width:100%}.btn.sm{padding:9px 13px;font-size:14px;border-radius:var(--r-sm)}label.field{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:14px}label.field .hint{font-weight:400;color:var(--text-muted);font-size:13px}input,select,textarea{font-family:var(--body);font-size:16px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}input.code{font-family:var(--mono);font-size:26px;letter-spacing:.28em;text-transform:uppercase;text-align:center}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;letter-spacing:.04em;text-transform:uppercase;background:color-mix(in srgb,var(--teal) 14%,transparent);color:var(--teal)}@media (prefers-color-scheme: dark){.pill{color:var(--lime);background:color-mix(in srgb,var(--lime) 16%,transparent)}}.pill.live{background:var(--lime);color:var(--ink)}.pill.done{background:color-mix(in srgb,var(--muted) 20%,transparent);color:var(--text-muted)}.ondeck{position:relative;overflow:hidden;background:var(--ink);color:#fff;border-radius:var(--r-lg);padding:20px;border:1px solid var(--ink)}.ondeck:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 1px 1px,rgba(198,241,53,.14) 1px,transparent 0);background-size:14px 14px;opacity:.6}.ondeck .label{font-family:var(--mono);font-size:12px;letter-spacing:.28em;color:var(--lime);text-transform:uppercase}.ondeck .court{display:flex;align-items:baseline;gap:12px;margin:6px 0}.ondeck .court .num{font-family:var(--display);font-size:68px;line-height:.8;color:var(--lime)}.ondeck .court .cap{font-family:var(--mono);font-size:13px;color:#cfe0db;letter-spacing:.1em;text-transform:uppercase}.ondeck .vs{font-size:18px;font-weight:700;position:relative;z-index:1}.ondeck .when{font-family:var(--mono);font-size:14px;color:#cfe0db;margin-top:4px;position:relative;z-index:1}.pulse{width:9px;height:9px;border-radius:999px;background:var(--lime);box-shadow:0 0 #c6f13599;animation:pulse 1.8s infinite}@keyframes pulse{0%{box-shadow:0 0 #c6f13580}70%{box-shadow:0 0 0 10px #c6f13500}to{box-shadow:0 0 #c6f13500}}.match{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);padding:10px 12px;display:flex;flex-direction:column;gap:6px}.match.live{border-color:var(--lime);box-shadow:0 0 0 2px color-mix(in srgb,var(--lime) 45%,transparent)}.match.mine{border-left:4px solid var(--teal)}.match .team{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:3px 0}.match .team .name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.match .team.win .name{color:var(--teal)}@media (prefers-color-scheme: dark){.match .team.win .name{color:var(--lime)}}.match .team .sc{font-family:var(--display);font-size:22px;min-width:24px;text-align:right}.match .team.tbd .name{color:var(--text-muted);font-style:italic;font-weight:500}.match .meta{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;border-top:1px dashed var(--border);padding-top:6px}.bracket{display:flex;gap:14px;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x proximity}.bcol{min-width:210px;scroll-snap-align:start;display:flex;flex-direction:column;gap:10px}.bcol>.colhead{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted)}.section-h{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:.05em;font-size:15px;color:var(--text-muted);margin:18px 0 8px}.court-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow)}.court-card .cnum{font-family:var(--display);font-size:40px;color:var(--teal);line-height:.9}@media (prefers-color-scheme: dark){.court-card .cnum{color:var(--lime)}}.court-card .now{border-left:3px solid var(--lime);padding-left:10px;margin-top:8px}.court-card .next{color:var(--text-muted);padding-left:10px;margin-top:8px;border-left:3px solid var(--border)}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;max-width:560px;margin:0 auto;display:flex;background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);padding:6px 8px calc(6px + env(safe-area-inset-bottom))}.tabbar a{flex:1;text-align:center;text-decoration:none;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:6px 4px;border-radius:var(--r-sm);display:flex;flex-direction:column;gap:3px;align-items:center}.tabbar a.active{color:var(--accent)}.tabbar a svg{width:22px;height:22px}.day{display:inline-block;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--teal);background:color-mix(in srgb,var(--teal) 13%,transparent);border-radius:4px;padding:1px 6px}.match .when-row{display:flex;align-items:center;gap:7px;white-space:nowrap;margin-top:-1px}.match .when-row .at{font-family:var(--mono);font-size:12.5px;font-weight:700}@media (prefers-color-scheme: dark){.day{color:var(--lime);background:color-mix(in srgb,var(--lime) 18%,transparent)}}.ondeck .when-day{font-weight:700;color:var(--lime);background:#c6f13529;border-radius:4px;padding:1px 6px;letter-spacing:.06em}.match .team .name.tap{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px;text-decoration-color:var(--border)}.match .team .name.tap:hover{text-decoration-color:var(--accent)}.teams-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 16px;cursor:pointer;font:inherit;color:inherit}.teams-toggle h2{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:.04em;font-size:18px;margin:0}.teams-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}@media (max-width: 460px){.teams-grid{grid-template-columns:1fr}}.team-chip{display:flex;align-items:center;gap:10px;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:10px 12px;cursor:pointer;font:inherit;color:inherit}.team-chip:hover{border-color:var(--accent)}.team-chip.eliminated{opacity:.55}.seed{flex:none;width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font-family:var(--mono);font-size:12px;font-weight:700;background:color-mix(in srgb,var(--teal) 14%,transparent);color:var(--teal)}@media (prefers-color-scheme: dark){.seed{background:color-mix(in srgb,var(--lime) 16%,transparent);color:var(--lime)}}.team-chip .who{min-width:0}.team-chip .who b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-chip .who small{color:var(--text-muted)}.zoomable{touch-action:pan-x pan-y}.zoombar{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:4px}.zoombar button{width:34px;height:34px;border-radius:999px;border:none;background:transparent;color:var(--text);font-size:20px;font-weight:700;cursor:pointer;display:grid;place-items:center}.zoombar button:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}.zoombar button:disabled{opacity:.35;cursor:default}.zoombar .pct{font-family:var(--mono);font-size:13px;min-width:40px;text-align:center}.zoombar .fit{width:auto;padding:0 12px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.record{display:flex;gap:8px}.record .stat{flex:1;text-align:center;border:1px solid var(--border);border-radius:var(--r-md);padding:10px}.record .stat .n{font-family:var(--display);font-size:30px;line-height:1}.record .stat .l{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.notice{border-radius:var(--r-md);padding:12px 14px;font-size:14px;font-weight:600}.notice.warn{background:#fff4d6;color:#7a5a00}.notice.err{background:var(--danger-bg);color:var(--danger)}@media (prefers-color-scheme: dark){.notice.warn{background:#2e2712;color:#e6c964}}.divider{height:1px;background:var(--border);margin:6px 0}.codebox{font-family:var(--mono);font-size:34px;letter-spacing:.2em;font-weight:700;text-align:center;padding:14px;border:2px dashed var(--accent);border-radius:var(--r-md)}a.link{color:var(--teal);font-weight:700}@media (prefers-color-scheme: dark){a.link{color:var(--lime)}}.spinner{width:26px;height:26px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.pulse,.spinner{animation:none}}
