:root{color-scheme:dark;--bg: #0f1115;--panel: #171a21;--panel-raised: #1c1f28;--text: #e8e8ea;--dim: #8a8f98;--accent: #4f8ef7;--accent-dim: #2a5490;--border: #2a2e37;--good: #34c77b;--bad: #e65b5b;--warn: #d9a441;--radius: 10px;--radius-sm: 6px;--space-1: 4px;--space-2: 8px;--space-3: 16px;--space-4: 24px;--space-5: 32px;--heat-0: #20242d;--heat-1: #1c3a63;--heat-2: #2a5490;--heat-3: #3a72c2;--heat-4: #4f8ef7}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}.shell{display:grid;grid-template-columns:240px 1fr;align-items:start}button{background:var(--panel-raised);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 14px;cursor:pointer;font-size:.9rem}button:hover{border-color:var(--accent)}.mic-toggle{background:var(--accent);border-color:var(--accent);color:#fff}.mic-status{color:var(--dim);font-size:.8rem}.settings-toggle{display:flex;align-items:center;gap:var(--space-2);color:var(--dim);font-size:.85rem;cursor:pointer}.settings-toggle input{cursor:pointer}select{background:var(--panel-raised);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px}.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4) var(--space-3)}.brand{font-size:1.05rem;font-weight:700;padding:0 var(--space-2)}.nav{display:flex;flex-direction:column;gap:2px}.tab-button[hidden]{display:none}.tab-button{display:block;width:100%;text-align:left;background:transparent;border:none;border-radius:var(--radius-sm);padding:9px var(--space-2);font-size:.9rem;font-weight:500;color:var(--dim);cursor:pointer}.tab-button:hover{background:var(--panel-raised);color:var(--text);border-color:transparent}.tab-button.active{background:var(--accent);color:#fff}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border);font-size:.85rem}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--dim)}.field-row{display:flex;gap:var(--space-2)}.field select,.field-row select{flex:1;min-width:0}.auth-group{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.sidebar .auth-form{flex-direction:column;align-items:stretch}.sidebar .auth-form input{width:100%}.main{padding:var(--space-4) var(--space-5) 64px;min-width:0}.tab-panel[hidden]{display:none}#timer-tab:not([hidden]){display:grid;grid-template-columns:1fr 320px;gap:var(--space-4);align-items:start}.timer-main{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);min-width:0}.live-view{width:100%;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:56px 32px;text-align:center}.quick-rail{display:flex;flex-direction:column;gap:var(--space-3)}.rail-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3)}.rail-card h3{margin:0 0 var(--space-2);font-size:.75rem;text-transform:uppercase;letter-spacing:.07em;color:var(--dim);font-weight:600}.rail-card .stats-tiles{grid-template-columns:1fr}.live-time{font-size:4.5rem;font-weight:600;font-family:SFMono-Regular,Consolas,monospace;line-height:1}.live-status{color:var(--dim);margin-top:var(--space-2);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem}.manual-stopwatch-view{position:relative}.manual-stopwatch-reset{margin-top:var(--space-4)}.manual-stopwatch-reset:disabled{opacity:.4;cursor:not-allowed}.last-result{min-height:1.4em;font-size:1rem;color:var(--dim)}.last-result strong{color:var(--text)}.last-result.new-pb,.last-result.new-pb strong{color:var(--good)}.judgment-buttons,.judgment-cell{display:flex;gap:4px}.judgment-buttons{margin-top:var(--space-4);gap:var(--space-2);flex-wrap:wrap}.judgment-btn{padding:4px 10px;font-size:.8rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--dim)}.judgment-buttons .judgment-btn{padding:16px 28px;font-size:1.1rem;font-weight:600;border-radius:var(--radius);flex:1 1 auto}.judgment-btn.judgment-good.active,.judgment-btn.judgment-good:hover{border-color:var(--good);color:var(--good)}.judgment-btn.judgment-under-review.active,.judgment-btn.judgment-under-review:hover{border-color:var(--warn);color:var(--warn)}.judgment-btn.judgment-scratch.active,.judgment-btn.judgment-scratch:hover{border-color:var(--bad);color:var(--bad)}.mini-stats{width:100%}.agrid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.agrid .span-2{grid-column:span 2}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);min-width:0}h2{font-size:1rem;margin:0 0 var(--space-3);font-weight:600}.dim{color:var(--dim);font-weight:400}.error-text{color:var(--warn);margin:0}.pad-mode-badge{font-size:.7rem;color:var(--dim);border:1px solid var(--border);border-radius:var(--radius);padding:1px 5px;white-space:nowrap}.section-hint{font-size:.85rem;margin:-8px 0 var(--space-3)}.chart-header{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-3);font-size:.85rem;color:var(--dim)}.chart-metric-toggles{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.chart-toggle{display:flex;align-items:center;gap:4px;cursor:pointer;margin-left:var(--space-2)}.chart-toggle input{cursor:pointer}.stats-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--space-2)}.stat-tile{background:var(--panel-raised);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 10px;text-align:center}.stat-label{color:var(--dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:1.15rem;margin-top:var(--space-1);font-weight:600}.heatmap{display:grid;grid-template-rows:auto auto;gap:3px;overflow-x:auto;padding-bottom:4px}.heatmap-month-label{grid-row:1;font-size:.7rem;color:var(--dim);height:14px}.heatmap-col{display:grid;grid-template-rows:repeat(7,11px);gap:3px;grid-row:2}.heatmap-cell{width:11px;height:11px;border-radius:2px;background:var(--heat-0)}.heatmap-cell.future{background:transparent}.heatmap-cell[data-level="0"]{background:var(--heat-0)}.heatmap-cell[data-level="1"]{background:var(--heat-1)}.heatmap-cell[data-level="2"]{background:var(--heat-2)}.heatmap-cell[data-level="3"]{background:var(--heat-3)}.heatmap-cell[data-level="4"]{background:var(--heat-4)}.heatmap-legend{display:flex;align-items:center;gap:4px;margin-top:var(--space-2);font-size:.75rem;color:var(--dim)}.heatmap-legend .heatmap-cell{width:10px;height:10px}.session-compare-controls{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-3)}.session-toggle{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--dim);cursor:pointer}.session-toggle input{cursor:pointer}.session-swatch{width:10px;height:10px;border-radius:50%;display:inline-block}.history-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap}.history-table{width:100%;border-collapse:collapse;font-size:.9rem}.history-table th,.history-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}.history-table .empty{color:var(--dim);text-align:center}.admin-time-input{width:100%;min-width:5em;box-sizing:border-box}.delete-btn{padding:4px 10px;font-size:.8rem}.auth-panel{display:flex;align-items:center;gap:var(--space-2)}.auth-form{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.auth-form input{background:var(--panel-raised);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;font-size:.85rem;width:150px}.auth-link{background:transparent;border:none;color:var(--accent);padding:4px 2px;font-size:.8rem}.auth-link:hover{border-color:transparent;text-decoration:underline}.auth-error{color:var(--bad);font-size:.8rem}.auth-user{color:var(--text);font-size:.85rem}.auth-logout{padding:6px 12px;font-size:.8rem}.sync-status{font-size:.75rem;color:var(--dim);text-transform:uppercase;letter-spacing:.04em}.sync-status[data-status=idle]{color:var(--good)}.sync-status[data-status=syncing]{color:var(--accent)}.sync-status[data-status=offline]{color:var(--warn)}.sync-status[data-status=error]{color:var(--bad)}.sync-force-btn{padding:4px 8px;font-size:.9rem;line-height:1}.tournament-subnav{display:flex;gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap}.tournament-subtab-button{background:transparent}.tournament-subtab-button.active{background:var(--accent);border-color:var(--accent);color:#fff}.tournament-subtab-panel[hidden]{display:none}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.secondary{background:transparent}.run-progress{display:flex;gap:var(--space-2);margin-bottom:var(--space-3)}.run-progress-step{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;border:1px solid var(--border);font-size:.75rem;font-weight:600;color:var(--dim)}.run-progress-step.done{border-color:var(--good);color:var(--good)}.run-progress-step.active{border-color:var(--accent);color:var(--accent)}.run-current-step{margin-bottom:var(--space-3)}.run-current-step-label{font-size:1.1rem;font-weight:600}.run-complete{margin-bottom:var(--space-3)}.run-complete-heading{font-weight:600;margin-bottom:var(--space-1)}.run-complete-best{margin-bottom:var(--space-2)}.run-complete-attempts{margin:0;padding-left:1.2em;color:var(--dim)}.official-badge{display:inline-block;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:1px 6px;margin-left:var(--space-2)}.tournament-form{display:flex;flex-direction:column;gap:var(--space-2);max-width:360px;margin-bottom:var(--space-4)}.tournament-form input,.tournament-form select{width:100%}.admin-typeahead{position:relative;max-width:420px;margin-bottom:var(--space-4)}.admin-typeahead-input{width:100%;background:var(--panel-raised);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px}.admin-typeahead-input:focus{outline:none;border-color:var(--accent)}.admin-typeahead-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;margin:0;padding:4px;list-style:none;max-height:280px;overflow-y:auto;background:var(--panel-raised);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 8px 24px #00000073}.admin-typeahead-option{display:flex;flex-direction:column;gap:2px;padding:7px 9px;border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem}.admin-typeahead-option.active{background:var(--accent);color:#fff}.admin-typeahead-option.active .dim{color:#fffc}.admin-typeahead-option.selected .admin-typeahead-email:after{content:" ✓";color:var(--good)}.admin-typeahead-option.active.selected .admin-typeahead-email:after{color:#fff}.admin-typeahead-empty{padding:8px 9px;color:var(--dim);font-size:.9rem}.tournament-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.tournament-list-item{background:var(--panel-raised);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.tournament-status-badge{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--dim);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1px 6px}.tournament-status-badge[data-status=active]{color:var(--good);border-color:var(--good)}.tournament-classification-tabs{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.public-tournament-page{max-width:720px;margin:0 auto;padding:var(--space-5) var(--space-4)}.public-tournament-page h1{font-size:1.4rem;margin:var(--space-3) 0 var(--space-1)}.public-tournament-page .card{margin-top:var(--space-3)}.toast{position:fixed;bottom:var(--space-4);left:50%;transform:translate(-50%);background:var(--panel-raised);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:10px 18px;font-size:.85rem;box-shadow:0 4px 16px #0006;z-index:100}.duel-entry-forms{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-3);margin-top:var(--space-3)}.duel-form{background:var(--panel-raised);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3)}.duel-form h3{margin:0 0 var(--space-2);font-size:.95rem}.duel-form label{display:block;font-size:.8rem;color:var(--dim);margin-bottom:var(--space-2)}.duel-form input{display:block;width:100%;margin-top:var(--space-1)}#duel-code{text-transform:uppercase;letter-spacing:.18em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.duel-recent{margin-top:var(--space-4)}.duel-recent ul{list-style:none;padding:0;margin:var(--space-2) 0 0}.duel-recent li{padding:var(--space-1) 0}.duel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:var(--space-2);margin-bottom:var(--space-3)}.duel-header .duel-name{margin:0}.duel-header-right{display:flex;align-items:center;gap:var(--space-2)}.duel-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.18em;background:var(--panel-raised);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 10px;color:var(--text);cursor:pointer}.duel-conn{font-size:.75rem;color:var(--dim)}.duel-conn:before{content:"●";margin-right:4px;color:var(--dim)}.duel-conn.connected:before{color:var(--good)}.duel-conn.reconnecting:before,.duel-conn.connecting:before{color:var(--warn)}.duel-error{color:var(--warn);font-size:.85rem}.duel-members{list-style:none;padding:0;margin:0 0 var(--space-3)}.duel-member{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:var(--space-1)}.duel-member.ready{border-color:var(--good)}.duel-member-state{font-size:.78rem;color:var(--dim)}.duel-member.ready .duel-member-state{color:var(--good)}.duel-tally{min-width:1.7em;text-align:center;font-variant-numeric:tabular-nums;background:var(--panel-raised);border-radius:var(--radius-sm);padding:2px 6px;font-size:.8rem;color:var(--dim)}.duel-ready-toggle{display:flex;align-items:center;gap:var(--space-2);font-size:.95rem}.duel-countdown{text-align:center;padding:var(--space-5) 0}.duel-countdown-number{font-size:clamp(4rem,22vw,11rem);font-weight:700;line-height:1;font-variant-numeric:tabular-nums;color:var(--accent)}.duel-countdown.go .duel-countdown-number{color:var(--good)}.duel-racers{list-style:none;padding:0;margin:0}.duel-racer{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name time" "meta time";align-items:center;gap:0 var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:var(--space-2)}.duel-racer.finished{border-color:var(--good)}.duel-racer.dnf{border-color:var(--bad);opacity:.75}.duel-racer-name{grid-area:name;font-weight:600}.duel-racer-meta{grid-area:meta;display:flex;gap:var(--space-2);font-size:.75rem;color:var(--dim)}.duel-racer-time{grid-area:time;font-size:1.9rem;font-variant-numeric:tabular-nums;line-height:1}.duel-flag{border:1px solid var(--border);border-radius:999px;padding:0 6px}.duel-flag.warn{border-color:var(--warn);color:var(--warn)}.duel-since-go{font-variant-numeric:tabular-nums}.duel-result{background:var(--panel-raised);border:1px solid var(--accent);border-radius:var(--radius);padding:var(--space-3);margin-bottom:var(--space-3)}.duel-result-heading{font-size:1.15rem;font-weight:600;margin-bottom:var(--space-2)}.duel-result-list{list-style:none;padding:0;margin:0}.duel-result-list li{display:flex;justify-content:space-between;gap:var(--space-3);padding:2px 0;font-variant-numeric:tabular-nums}.rail-card .duel-countdown{padding:var(--space-2) 0}.rail-card .duel-countdown-number{font-size:3.5rem}.rail-card .duel-racer-time{font-size:1.2rem}.rail-card .duel-header{display:none}
