html,body{background:#0e1220;width:100%;height:100%;margin:0;font-family:system-ui,sans-serif;overflow:hidden}#render-canvas{touch-action:none;outline:none;width:100%;height:100%;display:block}#hud{color:#fff;pointer-events:none;white-space:pre;background:#0000008c;border-radius:6px;padding:6px 10px;font-size:13px;line-height:1.4;position:fixed;top:12px;left:12px}#controls{color:#fff;pointer-events:none;zoom:var(--ui-scale,1);background:#00000073;border-radius:6px;padding:4px 10px;font-size:12px;position:fixed;bottom:12px;left:50%;transform:translate(-50%)}#hud .status-connected{color:#7dff9b}#hud .status-connecting{color:#ffd66b}#hud .status-disconnected{color:#ff7d7d}#race{pointer-events:none;color:#fff}#race [hidden]{display:none}.net-stats{font-variant-numeric:tabular-nums;zoom:var(--ui-scale,1);background:#00000073;border-radius:6px;padding:4px 10px;font-size:12px;position:fixed;bottom:12px;right:12px}.lobby-panel{border-top:6px solid var(--gold);pointer-events:auto;zoom:var(--ui-scale,1);background:#0a0e1ee6;border-radius:14px;min-width:340px;padding:16px 24px;font-size:17px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 20px 60px #00000080}.lobby-panel h2{text-align:center;text-transform:uppercase;margin:0 0 12px;font-size:30px;font-style:italic;font-weight:900}.lobby-panel ol{margin:0;padding-left:22px}.lobby-panel li{padding:2px 0}.lobby-panel li span{float:right;opacity:.6;margin-left:16px;font-size:13px}.lobby-panel li.ready span{color:#7dff9b;opacity:1}.lobby-panel li.me{color:#ffd66b;font-weight:700}.lobby-panel p{text-align:center;margin:12px 0 0;font-size:14px}.lobby-panel p.hint{opacity:.7;font-size:12px}.lobby-panel .menu-row{justify-content:center;gap:8px;margin-top:12px;display:flex}.lobby-panel button{color:#fff;cursor:pointer;background:#e8343f;border:none;border-radius:6px;padding:12px 22px;font-size:18px;font-weight:800;transition:transform .1s;box-shadow:0 4px #7a1020}.lobby-panel button:hover{background:#ff4b55;transform:translateY(-2px)}.lobby-panel button:disabled{cursor:default;background:#555b6e}.viewer-panel{color:#fff;pointer-events:auto;background:#0a0e1ed1;border-radius:10px;width:300px;padding:12px 16px;font-size:14px;position:fixed;top:12px;right:12px}.viewer-panel h2{margin:0 0 10px;font-size:18px}.viewer-row{justify-content:space-between;align-items:center;gap:10px;margin:6px 0;display:flex}.viewer-row select{border:none;border-radius:5px;flex:1;max-width:170px;padding:4px 6px}.viewer-row input[type=range]{flex:1}.viewer-buttons{flex-wrap:wrap;align-items:center;gap:5px;margin:10px 0;display:flex}.viewer-buttons span{opacity:.75;width:100%;font-size:12px}.viewer-buttons button{color:#fff;cursor:pointer;background:#3a3f52;border:none;border-radius:5px;padding:5px 10px;font-size:13px}.viewer-buttons button:hover{background:#4a5068}.viewer-buttons button.active{background:#e8343f}.viewer-panel p.hint{opacity:.7;margin:10px 0 0;font-size:12px}.garage-panel{width:470px;max-height:calc(100vh / var(--ui-scale,1) - 40px);color:#fff;text-align:center;pointer-events:auto;scrollbar-width:thin;zoom:var(--ui-scale,1);background:#0a0e1ed9;border-radius:12px;padding:16px 20px;position:fixed;top:50%;left:28px;overflow-y:auto;translate:0 -50%}.garage-panel h2{text-transform:uppercase;margin:0 0 6px;font-size:22px;font-style:italic;font-weight:900}.garage-panel h3{letter-spacing:2px;text-align:left;text-transform:uppercase;color:var(--gold);margin:10px 0 6px;font-size:12px}.garage-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.garage-grid.paints{grid-template-columns:repeat(5,1fr)}.garage-tile{color:#fff;font:inherit;cursor:pointer;background:#ffffff12;border:2px solid #0000;border-radius:9px;flex-direction:column;align-items:center;gap:3px;padding:5px 4px 6px;transition:transform .12s,background .12s;display:flex;position:relative}.garage-tile:hover{background:#ffffff24;transform:translateY(-2px)}.garage-tile.selected{border-color:var(--gold);background:#ffd23f29}.garage-tile img{aspect-ratio:1;object-fit:cover;border-radius:6px;width:100%}.garage-tile b{white-space:nowrap;font-size:13px}.garage-tile small{color:var(--gold);font-size:10.5px;line-height:1.15}.garage-tile.locked img,.garage-tile.locked .garage-swatch{filter:grayscale()brightness(.55)}.garage-tile.locked b{opacity:.6}.garage-swatch{border-radius:50%;width:44px;height:44px;margin:4px 0 2px;display:block;box-shadow:inset 0 -4px 8px #00000059}.garage-swatch.team{background:linear-gradient(135deg,#ff6a73,#e8343f 55%,#a0242c)}.garage-swatch.carbon{background:repeating-linear-gradient(45deg,#2c2f38 0 5px,#3d414c 5px 10px)}.garage-swatch.chrome{background:linear-gradient(135deg,#fff,#b9c0cc 45%,#f2f5f9 60%,#8a93a2)}.garage-swatch.neon{background:radial-gradient(circle,#ff8a92,#e8343f 60%,#5a1018);box-shadow:0 0 14px #ff5560,inset 0 -4px 8px #00000059}.garage-swatch.gold{background:linear-gradient(135deg,#fff1b0,#f0b93a 45%,#ffe17a 60%,#b07d12)}.garage-confirm{color:#fff;text-transform:uppercase;cursor:pointer;background:#e8343f;border:none;border-radius:7px;margin-top:12px;padding:12px 36px;font-size:20px;font-style:italic;font-weight:900;box-shadow:0 5px #7a1020}.garage-confirm:hover{background:var(--accent-hot)}.garage-confirm:disabled{cursor:not-allowed;background:#555a66;box-shadow:0 5px #2b2d36}.garage-lock{color:var(--gold);margin:10px 0 0;font-weight:700}.garage-lock[hidden]{display:none}.garage-panel p.hint{opacity:.7;margin:10px 0 0;font-size:12px}:root{--accent:#e8343f;--accent-hot:#ff5560;--gold:#ffd23f;--panel:#0c1022d1}body.menu-open #controls,body.menu-open #hud{display:none}#menu{color:#fff;pointer-events:none;position:fixed;inset:0}#menu[hidden]{display:none}.menu-side{scrollbar-width:thin;width:min(560px, 100vw / var(--ui-scale,1));zoom:var(--ui-scale,1);box-sizing:border-box;pointer-events:auto;background:repeating-linear-gradient(115deg,#ffffff08 0 18px,#0000 18px 46px) 0 0/200px 100%,linear-gradient(90deg,#0a0e1ef0 0%,#0a0e1edb 70%,#0a0e1e00 100%) 0 0/100% 100%;flex-direction:column;justify-content:safe center;gap:20px;padding:32px 48px;animation:6s linear infinite stripes;display:flex;position:absolute;inset:0 auto 0 0;overflow-y:auto}@keyframes stripes{to{background-position:200px 0,0 0}}.menu-logo{text-transform:uppercase;flex-direction:column;font-style:italic;font-weight:900;line-height:.88;display:flex;transform:skew(-6deg)}.logo-turbo{letter-spacing:2px;background:linear-gradient(180deg, #fff3a0 0%, var(--gold) 45%, #ff8a1f 100%);color:#0000;filter:drop-shadow(0 4px #8c1d24)drop-shadow(0 8px 16px #00000080);-webkit-background-clip:text;background-clip:text;font-size:84px}.logo-circuit{letter-spacing:10px;background:var(--accent);align-self:flex-start;margin-top:8px;padding:4px 14px 6px;font-size:34px;box-shadow:0 6px 18px #e8343f73}.menu-tiles{flex-direction:column;gap:10px;display:flex}.menu-row{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.menu-tile.compact{min-height:0;box-shadow:none;text-align:center;background:#ffffff0f;flex-direction:column;gap:4px;padding:10px 8px}.menu-tile.compact .tile-icon{width:auto;font-size:26px}.menu-tile.compact .tile-text b{font-size:17px}.menu-tile.compact .tile-text small,.menu-tile.compact .tile-arrow{display:none}.menu-tile.compact:hover,.menu-tile.compact:focus-visible{transform:translateY(-3px)scale(1.03)}.menu-tile{color:#fff;width:100%;min-height:72px;font:inherit;text-align:left;cursor:pointer;background:linear-gradient(100deg,#2b3150 0%,#222741 100%);border:2px solid #ffffff1a;border-radius:14px;align-items:center;gap:18px;padding:10px 22px;transition:transform .12s,background .12s,border-color .12s,box-shadow .12s;display:flex;box-shadow:0 6px #00000059}.menu-tile.primary{background:linear-gradient(100deg, var(--accent) 0%, #c41f3a 100%);min-height:104px;box-shadow:0 6px #7a1020,0 10px 30px #e8343f59}.menu-tile.small{min-height:60px;box-shadow:none;background:#ffffff0f}.menu-tile:hover,.menu-tile:focus-visible{border-color:var(--gold);outline:none;transform:translate(10px)scale(1.02)}.menu-tile:active{transform:translate(10px)scale(.99);box-shadow:0 2px #00000059}.tile-icon{text-align:center;filter:drop-shadow(0 3px 4px #0006);width:52px;font-size:40px}.menu-tile.small .tile-icon{font-size:26px}.tile-text{flex-direction:column;flex:1;gap:4px;display:flex}.tile-text b{letter-spacing:.5px;text-transform:uppercase;font-size:28px;font-style:italic;font-weight:900}.menu-tile.primary .tile-text b{font-size:34px}.menu-tile.small .tile-text b{font-size:19px}.tile-text small{opacity:.75;font-size:15px}.tile-text small:empty{display:none}.tile-arrow{opacity:.35;font-size:40px;font-weight:900;transition:transform .12s,opacity .12s}.menu-tile:hover .tile-arrow,.menu-tile:focus-visible .tile-arrow{opacity:1;transform:translate(6px)}.menu-name{align-items:center;gap:14px;margin:-4px 0 4px 16px;font-size:15px;display:flex}.menu-name span{opacity:.7}.menu-name input{color:#fff;max-width:260px;font:inherit;background:#00000059;border:2px solid #ffffff26;border-radius:10px;flex:1;padding:10px 14px;font-size:17px;font-weight:700}.menu-name input:focus{border-color:var(--gold);outline:none}.menu-keys{opacity:.8;flex-wrap:wrap;gap:8px 16px;font-size:13px;display:flex}kbd{background:#ffffff14;border:1px solid #ffffff40;border-bottom-width:3px;border-radius:5px;padding:2px 7px;font:700 12px system-ui,sans-serif;display:inline-block}.menu-driver-card{border-left:6px solid var(--gold);background:var(--panel);zoom:var(--ui-scale,1);border-radius:8px;flex-direction:column;padding:14px 26px 16px;display:flex;position:absolute;bottom:48px;right:48px;transform:skew(-6deg)}.menu-driver-card small{letter-spacing:3px;text-transform:uppercase;opacity:.6;font-size:12px}.menu-driver-card b{font-size:32px;font-style:italic;font-weight:900}.menu-driver-card span{opacity:.85;font-size:17px}.menu-driver-card .menu-level{color:var(--gold);margin-top:8px;font-size:14px;font-style:normal;font-weight:700}.menu-xp{background:#ffffff26;border-radius:4px;height:8px;margin-top:4px;overflow:hidden}.menu-xp>div{background:var(--gold);border-radius:4px;height:100%;transition:width .6s}.menu-xp[hidden]{display:none}.menu-toast{border-left:6px solid var(--gold);zoom:var(--ui-scale,1);background:#0a0e1eeb;border-radius:8px;min-width:300px;padding:14px 22px;position:absolute;top:40px;right:48px;box-shadow:0 12px 40px #00000073}.menu-toast.show{animation:.5s cubic-bezier(.2,1.2,.4,1) both slide-in-right}.menu-toast b{text-transform:uppercase;color:var(--gold);font-size:22px;font-style:italic;font-weight:900}.menu-toast ul{margin:6px 0 0;padding-left:18px;font-size:16px}#menu.enter .menu-logo{animation:.5s cubic-bezier(.2,1.4,.4,1) both drop-in}#menu.enter .menu-tiles>*{animation:.45s cubic-bezier(.2,1.2,.4,1) both slide-in;animation-delay:calc(.12s + var(--i,0) * 70ms)}#menu.enter .menu-driver-card{animation:.5s cubic-bezier(.2,1.2,.4,1) .4s both slide-in-right}#menu.enter .menu-keys{animation:.6s .6s both fade-in}@keyframes drop-in{0%{opacity:0;transform:skew(-6deg)translateY(-60px)scale(1.2)}}@keyframes slide-in{0%{opacity:0;transform:translate(-80px)}}@keyframes slide-in-right{0%{opacity:0;transform:skew(-6deg)translate(80px)}}@keyframes fade-in{0%{opacity:0}}#loading{color:#fff;letter-spacing:2px;text-transform:uppercase;background:#0e1220;flex-direction:column;justify-content:center;align-items:center;gap:20px;font-size:22px;font-style:italic;font-weight:900;animation:.2s both fade-in;display:flex;position:fixed;inset:0}#loading[hidden]{display:none}.loading-flag{background:repeating-conic-gradient(#fff 0 25%, #1a1f33 0 50%) 0 0 / 16px 16px;border-radius:8px;width:64px;height:64px;animation:1s cubic-bezier(.6,0,.4,1) infinite flag-spin}@keyframes flag-spin{to{transform:rotate(360deg)}}.race-panel{border-right:6px solid var(--gold);background:var(--panel);zoom:var(--ui-scale,1);border-radius:10px;align-items:center;gap:16px;padding:8px 18px 10px 14px;display:flex;position:fixed;top:16px;right:16px}.race-position{text-shadow:0 3px #0006;font-style:italic;font-weight:900;line-height:1}.race-position b{font-size:64px}.race-position span{opacity:.7;font-size:24px}.race-position.first b{color:var(--gold)}.race-position.gained{animation:.6s ease-out pop-gained}.race-position.lost{animation:.6s ease-out pop-lost}@keyframes pop-gained{0%{color:#7dff9b;transform:scale(1.6)}to{transform:scale(1)}}@keyframes pop-lost{0%{color:#ff6b6b;transform:scale(.7)translateY(6px)}to{transform:none}}.race-details{font-variant-numeric:tabular-nums;white-space:pre;font-size:15px;line-height:1.45}.race-banner{text-transform:uppercase;white-space:nowrap;text-shadow:0 5px #00000059,0 8px 24px #00000080;zoom:var(--ui-scale,1);font-size:72px;font-style:italic;font-weight:900;position:fixed;top:26%;left:50%;translate:-50%}.race-banner.count{color:#fff;font-size:140px}.race-banner.count.show{animation:1s cubic-bezier(.2,1.6,.4,1) both count-pop}.race-banner.go{color:#7dff9b;font-size:150px}.race-banner.go.show{animation:1.5s ease-out both go-burst}.race-banner.lap{background:var(--accent);text-shadow:none;padding:6px 36px;transform:skew(-8deg);box-shadow:0 8px 24px #e8343f66}.race-banner.lap.show{animation:1.5s both lap-swipe}.race-banner.warn{color:var(--gold);font-size:54px}.race-banner.warn.show{animation:.4s both warn-shake}@keyframes count-pop{0%{opacity:0;scale:2.4}25%{opacity:1;scale:1}85%{opacity:1}to{opacity:.2;scale:.85}}@keyframes go-burst{0%{opacity:0;scale:.4}15%{opacity:1;scale:1.15}30%{scale:1}75%{opacity:1}to{opacity:0;scale:1.6}}@keyframes lap-swipe{0%{opacity:0;translate:40vw}15%{opacity:1;translate:-50%}80%{opacity:1;translate:-50%}to{opacity:0;translate:-140vw}}@keyframes warn-shake{0%,to{rotate:0deg}25%{rotate:-3deg}75%{rotate:3deg}}.item-slot{background:var(--panel);text-align:center;white-space:pre;zoom:var(--ui-scale,1);border:3px solid #ffffff26;border-radius:14px;min-width:150px;padding:10px 18px;font-size:24px;font-weight:800;position:fixed;top:16px;left:50%;translate:-50%}.item-slot.rolling{border-color:var(--gold);animation:.14s linear infinite roll}.item-slot.landed{animation:.45s cubic-bezier(.2,1.8,.4,1) land}@keyframes roll{50%{translate:-50% 3px}}@keyframes land{0%{border-color:var(--gold);scale:1.35}to{scale:1}}.race-results{border-top:6px solid var(--gold);font-variant-numeric:tabular-nums;text-align:center;zoom:var(--ui-scale,1);background:#0a0e1ee6;border-radius:14px;min-width:460px;padding:20px 30px 18px;font-size:18px;position:fixed;top:50%;left:50%;translate:-50% -50%;box-shadow:0 20px 60px #00000080}.race-results-note{color:var(--gold);margin:12px 0 0;font-weight:700}.race-results.show{animation:.45s cubic-bezier(.2,1.3,.4,1) both results-in}.race-results h2{text-transform:uppercase;margin:0 0 14px;font-size:34px;font-style:italic;font-weight:900}.race-results table{border-collapse:collapse;width:100%}.race-results th,.race-results td{text-align:left;padding:7px 12px}.race-results th{letter-spacing:1px;text-transform:uppercase;opacity:.6;font-size:12px}.race-results tbody tr{animation:.4s cubic-bezier(.2,1.2,.4,1) both row-in;animation-delay:calc(.25s + var(--i,0) * .12s)}.race-results tbody tr:nth-child(odd){background:#ffffff0a}.race-results tr.winner td:first-child{color:var(--gold);font-weight:900}.race-results tr.player{color:#ffe27a;font-weight:800;background:#ffd23f29!important}.race-results p{opacity:.8;margin:14px 0 0;font-size:14px}@keyframes results-in{0%{opacity:0;scale:.8}}@keyframes row-in{0%{opacity:0;translate:-60px}}.menu-track{border:2px solid #0000;border-radius:10px;align-items:center;gap:10px;margin:-4px 0 4px 16px;padding:4px 8px;font-size:15px;display:flex}.menu-track:focus-visible{border-color:var(--gold);outline:none}.menu-track span{opacity:.7;width:70px}.menu-track b{text-align:center;text-transform:uppercase;min-width:150px;font-size:20px;font-style:italic;font-weight:900}.track-arrow{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:8px;width:38px;height:34px;font-size:15px}.track-arrow:hover{background:#ffffff38}.lobby-track{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin:0 0 12px;display:flex}.lobby-track b{text-align:center;text-transform:uppercase;min-width:160px;font-size:20px;font-style:italic;font-weight:900}.lobby-track small{text-align:center;opacity:.65;width:100%;font-size:12px}.lobby-track small:empty{display:none}.lobby-panel .lobby-track button.track-arrow{width:40px;box-shadow:none;background:#ffffff1f;padding:6px 0;font-size:15px}.lobby-difficulty span{text-align:center;opacity:.85;min-width:160px;font-size:15px;font-weight:700}.rocket-warning{color:#fff;text-transform:uppercase;white-space:nowrap;zoom:var(--ui-scale,1);animation:rocket-alarm var(--pulse,.4s) ease-in-out infinite alternate;background:#c8141ee0;border-radius:12px;padding:8px 24px;font-size:30px;font-style:italic;font-weight:900;position:fixed;top:112px;left:50%;translate:-50%;box-shadow:0 0 28px #ff2828b3}@keyframes rocket-alarm{0%{background:#c8141ee0;scale:1}to{background:#ff4628f2;scale:1.08}}.item-slot.urgent{border-color:#ff4a3a;animation:.2s ease-in-out infinite alternate rocket-alarm}.race-split{color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap;text-shadow:0 3px #0000004d;zoom:var(--ui-scale,1);border-radius:12px;padding:4px 26px;font-size:44px;font-style:italic;font-weight:900;position:fixed;top:16%;left:50%;translate:-50%}.race-split.ahead{background:#1ea046e0;box-shadow:0 0 24px #3cdc6e8c}.race-split.behind{background:#c81e28e0;box-shadow:0 0 24px #ff32328c}.race-split.show{animation:.35s cubic-bezier(.2,1.6,.4,1) both split-in}@keyframes split-in{0%{opacity:0;scale:1.6}to{opacity:1;scale:1}}.profile-panel{z-index:30;background:#00000073;place-items:center;display:grid;position:fixed;inset:0}.profile-panel[hidden]{display:none}.profile-card{border-top:6px solid var(--gold);color:#fff;font-variant-numeric:tabular-nums;zoom:var(--ui-scale,1);background:#0a0e1ef0;border-radius:14px;min-width:560px;max-height:86vh;padding:22px 32px 20px;font-size:17px;overflow:auto;box-shadow:0 20px 60px #00000080}.profile-card.show{animation:.4s cubic-bezier(.2,1.3,.4,1) both results-in}.profile-card h2{text-transform:uppercase;margin:0;font-size:34px;font-style:italic;font-weight:900}.profile-card h3{letter-spacing:1px;text-transform:uppercase;color:var(--gold);margin:16px 0 8px;font-size:13px}.profile-note{opacity:.7;margin:4px 0 0}.profile-stats{grid-template-columns:1fr 1fr;gap:24px;display:grid}.profile-block dl{grid-template-columns:auto auto;gap:4px 16px;margin:0;display:grid}.profile-block dt{opacity:.7}.profile-block dd{text-align:right;margin:0;font-weight:800}.profile-card table{border-collapse:collapse;width:100%}.profile-card th,.profile-card td{text-align:left;padding:6px 10px}.profile-card th{letter-spacing:1px;text-transform:uppercase;opacity:.6;font-size:12px}.profile-card tbody tr:nth-child(odd){background:#ffffff0a}.profile-close{background:var(--accent);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:10px;margin:18px auto 0;padding:10px 28px;font-weight:800;display:block}.profile-close:hover,.profile-close:focus-visible{background:var(--accent-hot);outline:none}.board-header{text-align:center;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.board-header small{letter-spacing:1px;text-transform:uppercase;color:var(--gold);font-size:12px}.board-table tr.me{font-weight:800;background:#ffc83c38!important}.board-table tr.gap td{text-align:center;opacity:.5;padding:0 10px}.profile-level{grid-template-columns:auto 1fr;align-items:baseline;gap:4px 14px;margin-top:12px;display:grid}.profile-level b{color:var(--gold);font-size:22px;font-style:italic}.profile-level span{opacity:.8}.profile-level .menu-xp{grid-column:1/-1}.profile-achievements{grid-template-columns:1fr 1fr;gap:8px 18px;margin:0;padding:0;list-style:none;display:grid}.profile-achievements li{opacity:.55;flex-direction:column;display:flex}.profile-achievements li.done{opacity:1}.profile-achievements li.done b{color:var(--gold)}.profile-achievements span{opacity:.8;font-size:13px}
