*{box-sizing:border-box}:root{color-scheme:dark;--bg: #0b1018;--panel: #111827;--panel-2: #151e2d;--panel-3: #0f1624;--line: #263246;--line-soft: #1d2738;--text: #e7edf7;--muted: #94a0b4;--faint: #667389;--accent: #4da36b;--accent-strong: #65c986;--warn: #e9b949;--danger: #ef6b6b;--blue: #72a7df;--red: #e16b63;--radius: 8px;--shadow: 0 12px 32px rgba(0, 0, 0, .28)}[hidden]{display:none!important}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{min-height:100dvh;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}button,input,select{font:inherit}button,select,input{min-height:34px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-3);color:var(--text)}input,select{width:100%;padding:7px 10px}button{padding:7px 12px;background:var(--panel-2);cursor:pointer}button:hover:not(:disabled),button:focus-visible{border-color:#3b4b64;background:#1b2638}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid rgba(101,201,134,.55);outline-offset:2px}button:disabled{cursor:default;opacity:.45}button.primary{background:#25573a;border-color:var(--accent)}button.primary:hover:not(:disabled),button.primary:focus-visible{background:#2f6847}.panel{width:min(100%,860px);height:100dvh;margin:0 auto;padding:18px;display:flex;flex-direction:column;gap:12px;min-height:0}.panel.wide{width:min(100%,1280px)}h1,h2,h3,p{margin-top:0}h1{flex:0 0 auto;margin-bottom:0;font-size:clamp(1.2rem,2vw,1.55rem);line-height:1.1;letter-spacing:0}.subtitle{font-size:.82rem;font-weight:400;color:var(--muted)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.card h2{margin:0 0 10px;font-size:1rem;line-height:1.2}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}.form-grid label,.field{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:.8rem}.label-row,.field-label{display:flex;align-items:center;gap:6px}.field-with-help{position:relative}.info-bubble,.info{position:relative;width:18px;min-width:18px;height:18px;min-height:18px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);font-size:.72rem;line-height:1;cursor:help}.field-help,.info:after{position:absolute;z-index:20;width:min(250px,calc(100vw - 32px));padding:8px 9px;border:1px solid var(--line);border-radius:var(--radius);background:#0c1320;color:#c8d2e2;font-size:.78rem;font-weight:400;line-height:1.35;box-shadow:var(--shadow);opacity:0;visibility:hidden;pointer-events:none}.field-help{top:22px;left:0}.info:after{content:attr(data-tip);top:calc(100% + 8px);left:0}.field-with-help:focus-within .field-help,.field-with-help:hover .field-help,.info:hover:after,.info:focus:after{opacity:1;visibility:visible}.hint,.warning{color:var(--muted);font-size:.8rem}.warning{color:var(--warn)}#setup-panel{width:min(100%,900px)}#arcade{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:10px}#view-root{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.metrics,.controls,.status,.mode-toggle,.log-section,#power-graph,#log{max-width:100%}@media(max-width:820px){body{font-size:13px}.panel{padding:10px;gap:8px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}@media(max-width:560px){.panel{padding:8px}h1{font-size:1.05rem}.subtitle{display:block;margin-top:2px}.card{padding:10px}.form-grid{grid-template-columns:1fr}button,input,select{min-height:32px}}.overlay[hidden]{display:none}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:16px;background:#05080ed1}.overlay-card{position:relative;width:min(560px,100%);max-height:min(720px,calc(100dvh - 32px));overflow:auto;padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);text-align:center;box-shadow:var(--shadow)}.overlay-card h2{margin:0 0 10px}.overlay-card table{width:100%;margin:10px 0;border-collapse:collapse;text-align:left;font-size:.85rem}.overlay-card td{padding:6px;border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums}.overlay-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.countdown-hint{margin:0 0 6px;color:var(--muted);font-size:.9rem;text-transform:uppercase;letter-spacing:.08em}.countdown-number{color:var(--text);font-size:clamp(5rem,16vw,9rem);font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.countdown-number.final{color:var(--danger)}.countdown-number.go{color:var(--accent-strong)}.overlay-card.celebrate{border-color:#756838}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-12px;width:7px;height:10px;border-radius:1px;opacity:.9;animation-name:confetti-fall;animation-timing-function:linear;animation-iteration-count:1}@keyframes confetti-fall{0%{transform:translateY(-12px) rotate(0);opacity:1}to{transform:translateY(420px) rotate(360deg);opacity:0}}.arcade-bar{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:8px 10px;border:1px solid var(--line-soft);border-radius:var(--radius);background:#111827b8;color:var(--muted);font-size:.82rem}.arcade-bar strong{color:var(--text)}.arcade-bar .bar-btn{min-height:28px;padding:4px 10px;font-size:.8rem}.arcade-bar #arcade-trainer-state{margin-left:auto}.picker-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:10px 0}.picker-btn{min-height:74px;padding:12px;display:flex;align-items:center;justify-content:center;text-align:center;border-color:var(--line);background:var(--panel-2);font-weight:650}.picker-btn:disabled{cursor:not-allowed;opacity:.5}.game-title{flex:0 0 auto;margin:0;font-size:1rem;line-height:1.2}.toast{position:fixed;top:14px;left:50%;z-index:50;padding:10px 14px;transform:translate(-50%);border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text);box-shadow:var(--shadow);opacity:0;pointer-events:none}.toast.show{opacity:1}#lobby-panel,#game-panel{flex:1 1 auto;min-height:0}#lobby-panel{display:flex;flex-direction:column;gap:10px;overflow:hidden}#lobby-panel>h2{flex:0 0 auto;margin-bottom:0}.lobby-controls{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.bot-ftp-label,.minutes-label,.rounds-label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.8rem}.bot-ftp-label input{width:82px}.rider-list{min-height:0;max-height:28dvh;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;overflow:auto;list-style:none}.rider-list li{min-height:32px;padding:7px 9px;display:flex;align-items:baseline;gap:8px;border:1px solid var(--line-soft);border-radius:7px;background:var(--panel-3)}.rider-list .host-badge{color:var(--warn);font-size:.68rem;font-weight:700}.rider-list .ftp{margin-left:auto;color:var(--muted);font-size:.76rem}.hud{flex:0 0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:8px;margin-bottom:8px}.hud-item{min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);font-size:clamp(1rem,1.6vw,1.22rem);font-weight:750;font-variant-numeric:tabular-nums}.hud-label{display:block;margin-bottom:2px;color:var(--muted);font-size:.66rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em}.game-layout{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,280px);gap:10px;align-items:stretch}#game-canvas{display:block;width:100%;height:auto;max-width:100%;max-height:100%;align-self:center;justify-self:center;border:1px solid var(--line);border-radius:var(--radius);background:#0d1320}.game-layout>#game-canvas{width:100%;height:100%;object-fit:contain}.leaderboard{min-width:0;min-height:0;padding:10px;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.leaderboard h2{flex:0 0 auto;margin:0 0 8px;color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.06em}.leaderboard table{width:100%;border-collapse:collapse;font-size:.82rem}.leaderboard tbody{display:block;max-height:100%;overflow:auto}.leaderboard tr{display:table;width:100%;table-layout:fixed}.leaderboard td{padding:7px 6px;border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums}.rl-name{display:block;overflow:hidden;color:var(--text);font-size:.95rem;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.rl-sub{display:block;margin-top:1px;color:var(--muted);font-size:.76rem}.rl-gap{color:var(--text);font-size:clamp(1rem,1.7vw,1.28rem);font-weight:750;text-align:right;white-space:nowrap}.rl-gap.gap-safe{color:var(--accent-strong)}.rl-gap.gap-warn{color:var(--warn)}.rl-gap.gap-danger{color:var(--danger)}.rl-gap.gap-zombie{color:#d39292;font-size:1rem}.rl-gap.finished{color:var(--warn);font-size:1rem}.leaderboard tr.self td{background:#e9b94914}.leaderboard tr.self td:first-child{border-left:3px solid var(--warn)}.leaderboard tr.self .rl-name{color:#f1cd73}body.in-game{overflow:hidden}body.in-game main>h1,body.in-game .arcade-bar,body.in-game .game-title{display:none}body.in-game .panel.wide{padding:8px}body.in-game .panel.wide,body.in-game #arcade,body.in-game #view-root,body.in-game #game-panel{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}body.in-game .hud{margin-bottom:8px}body.in-game .game-layout{flex:1 1 auto;min-height:0}body.in-game #game-panel>#game-canvas{flex:1 1 auto;min-height:0;width:100%;height:auto;object-fit:contain}body.in-game .leaderboard{align-self:stretch}@media(max-width:960px){.picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.game-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(96px,26dvh)}.leaderboard{max-height:26dvh}}@media(max-width:640px){.arcade-bar{gap:6px 10px;padding:7px 8px;font-size:.78rem}.picker-grid{grid-template-columns:1fr;gap:8px}.picker-btn{min-height:48px}.game-title{font-size:.92rem}.hud{grid-template-columns:repeat(2,minmax(0,1fr))}.hud-item{padding:7px 8px}.rider-list{max-height:24dvh}.overlay-card{padding:14px}}
