@font-face{font-family:Russo One;font-style:normal;font-display:swap;font-weight:400;src:url(/turbo/assets/russo-one-latin-400-normal-BfOuQF9V.woff2)format("woff2"),url(/turbo/assets/russo-one-latin-400-normal-CosRecV9.woff)format("woff")}@font-face{font-family:Russo One;font-style:normal;font-display:swap;font-weight:400;src:url(/turbo/assets/russo-one-cyrillic-400-normal-BXZIn0h3.woff2)format("woff2"),url(/turbo/assets/russo-one-cyrillic-400-normal-rRbrNFRA.woff)format("woff")}@font-face{font-family:"Exo 2 Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/turbo/assets/exo-2-cyrillic-ext-wght-normal-Duf7tWJ7.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Exo 2 Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/turbo/assets/exo-2-cyrillic-wght-normal-DINSYtDx.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Exo 2 Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/turbo/assets/exo-2-vietnamese-wght-normal-DlPkZmYr.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Exo 2 Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/turbo/assets/exo-2-latin-ext-wght-normal-B5pmZ151.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Exo 2 Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/turbo/assets/exo-2-latin-wght-normal-CQ1lLIdm.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#0b061c;--night:#140b2e;--deep:#1b1042;--panel:#1b1040db;--panel-solid:#1d1247;--panel-raised:#271a5c;--line:#9680ff42;--line-strong:#aa96ff80;--text:#f4f0ff;--muted:#aa9fd8;--faint:#7467a8;--magenta:#ff4fd8;--cyan:#4ce1ff;--gold:#ffd23f;--orange:#ff7a3d;--lime:#8dff6a;--danger:#ff5470;--cut:14px;--cut-small:8px;--display:"Russo One", "Exo 2 Variable", system-ui, sans-serif;--body:"Exo 2 Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--body);color:var(--text);background:radial-gradient(1200px 600px at 50% -10%, #ff4fd829, transparent 60%), radial-gradient(900px 500px at 100% 100%, #4ce1ff1f, transparent 60%), linear-gradient(180deg, var(--night), var(--ink));-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;font-size:15px;line-height:1.45;overflow-x:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}img{max-width:100%;display:block}h1,h2,h3{font-family:var(--display);letter-spacing:.02em;margin:0;font-weight:400}h2{text-transform:uppercase;font-size:18px}kbd{min-width:26px;height:24px;font-family:var(--display);color:var(--text);border:1px solid var(--line-strong);background:linear-gradient(#3a2a7e,#241860);border-bottom-width:3px;border-radius:4px;place-items:center;padding:0 6px;font-size:11px;display:inline-grid}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.hint{color:var(--muted);margin:0;font-size:13px}.error{color:#ffe3e8;border-left:3px solid var(--danger);background:#ff547029;margin:0;padding:10px 14px;font-weight:600}.eyebrow{font-family:var(--display);letter-spacing:.16em;text-transform:uppercase;color:var(--cyan);font-size:12px}.panel{background:linear-gradient(180deg, #ffffff0a, transparent 40%) padding-box, linear-gradient(var(--panel), var(--panel)) padding-box, linear-gradient(135deg, #ff4fd899, #4ce1ff59 45%, #9680ff40) border-box;clip-path:polygon(var(--cut) 0, 100% 0, 100% calc(100% - var(--cut)), calc(100% - var(--cut)) 100%, 0 100%, 0 var(--cut));border:1px solid #0000;padding:18px;position:relative}.panel:before{content:"";top:0;left:var(--cut);background:linear-gradient(90deg, var(--magenta), var(--cyan));width:72px;height:3px;position:absolute}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 14px;margin-bottom:14px;display:flex}.panel-head h2{align-items:center;gap:10px;display:flex}.count-badge{min-width:28px;height:22px;color:var(--ink);background:var(--cyan);clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);place-items:center;padding:0 7px;font-size:12px;display:inline-grid}.live-dot{background:var(--lime);width:8px;height:8px;box-shadow:0 0 10px var(--lime);border-radius:50%;animation:1.6s ease-in-out infinite live-pulse;display:inline-block}@keyframes live-pulse{50%{opacity:.35}}.button{--slant:12px;min-height:44px;padding:0 calc(18px + var(--slant) / 2);font-family:var(--display);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:var(--text);background:var(--panel-raised);clip-path:polygon(var(--slant) 0, 100% 0, calc(100% - var(--slant)) 100%, 0 100%);border:0;justify-content:center;align-items:center;gap:8px;font-size:14px;transition:transform .12s,filter .12s,background .12s;display:inline-flex;position:relative}.button:hover:not(:disabled){filter:brightness(1.12);transform:translateY(-1px)}.button:active:not(:disabled){transform:translateY(1px)scale(.98)}.button:disabled{filter:grayscale(.7)brightness(.7);opacity:.6}.button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px #fff}.button.primary{color:#fff;background:linear-gradient(100deg, var(--magenta), #ff5f9a 50%, var(--orange));text-shadow:0 1px #50003c73}.button.secondary{color:var(--cyan);background:linear-gradient(#4ce1ff1a, #4ce1ff1a), var(--panel-solid);box-shadow:inset 0 0 0 1px #4ce1ff8c}.button.gold{color:#2a1600;background:linear-gradient(100deg, var(--gold), #ffb53a)}.button.ghost{color:var(--muted);box-shadow:inset 0 0 0 1px var(--line);background:#ffffff0a}.button.ghost:hover:not(:disabled){color:var(--text)}.button.big{--slant:16px;min-height:56px;font-size:17px}.button.small{--slant:8px;min-height:34px;padding:0 calc(12px + var(--slant) / 2);font-size:12px}.icon-button{min-width:38px;height:38px;color:var(--text);border:1px solid var(--line);clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px);background:#ffffff0f;grid-auto-flow:column;place-items:center;gap:4px;padding:0 8px;transition:background .12s,color .12s;display:inline-grid;position:relative}.icon-button:hover{background:#ffffff1f}.icon-button.active{color:var(--gold)}.icon-button.off{color:var(--faint)}.volume-bars{align-items:flex-end;gap:2px;height:14px;display:inline-flex}.volume-bars i{background:var(--faint);width:3px}.volume-bars i:first-child{height:5px}.volume-bars i:nth-child(2){height:9px}.volume-bars i:nth-child(3){height:14px}.volume-bars i.on{background:var(--cyan)}.field{gap:6px;display:grid}.field>span{font-family:var(--display);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:11px}.field input{border:1px solid var(--line);border-bottom:2px solid var(--line-strong);background:#08041899;outline:none;width:100%;height:44px;padding:0 14px;font-size:16px;font-weight:600;transition:border-color .15s,background .15s}.field input::placeholder{color:var(--faint);font-weight:500}.field input:focus{border-color:#4ce1ff80;border-bottom-color:var(--cyan);background:#080418d9}.segmented{border:1px solid var(--line);background:#0804188c;flex-wrap:wrap;gap:4px;padding:4px;display:inline-flex}.segmented button{min-height:32px;font-family:var(--display);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);background:0 0;border:0;padding:0 12px;font-size:12px;transition:color .12s,background .12s}.segmented button:hover:not(:disabled){color:var(--text);background:#ffffff0f}.segmented button.active{color:var(--ink);background:linear-gradient(100deg, var(--cyan), #8cf0ff)}.segmented button:disabled:not(.active){opacity:.45}.segmented.small button{min-height:28px;padding:0 9px;font-size:11px}.stepper{border:1px solid var(--line);background:#0804188c;align-items:stretch;display:inline-flex}.stepper button{width:36px;min-height:34px;color:var(--cyan);background:0 0;border:0;font-size:18px;font-weight:700}.stepper button:hover:not(:disabled){background:#4ce1ff1f}.stepper button:disabled{color:var(--faint);opacity:.5}.stepper output{min-width:40px;font-family:var(--display);border-inline:1px solid var(--line);place-items:center;font-size:16px;display:grid}.toggle{color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:14px;font-weight:600;display:inline-flex;position:relative}.toggle input{opacity:0;width:1px;height:1px;position:absolute}.toggle-track{border:1px solid var(--line-strong);clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);background:#080418b3;flex:none;width:40px;height:22px;transition:background .15s;position:relative}.toggle-track:after{content:"";background:var(--muted);clip-path:polygon(3px 0,100% 0,calc(100% - 3px) 100%,0 100%);width:14px;height:14px;transition:transform .15s,background .15s;position:absolute;top:3px;left:5px}.toggle input:checked+.toggle-track{border-color:var(--magenta);background:#ff4fd859}.toggle input:checked+.toggle-track:after{background:#fff;transform:translate(15px)}.toggle input:checked~svg{color:var(--text)}.toggle:has(input:checked){color:var(--text)}.toggle input:focus-visible+.toggle-track{outline:2px solid var(--cyan);outline-offset:2px}.toggle input:disabled+.toggle-track{opacity:.5}.topbar{z-index:2;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:16px 24px 8px;display:grid;position:relative}.topbar-tools{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.hub-link{height:36px;font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%);background:#ffffff0d;justify-self:start;align-items:center;gap:6px;padding:0 14px 0 10px;font-size:12px;text-decoration:none;display:inline-flex}.hub-link:hover{color:var(--text);background:#ffffff1a}.preferences{align-items:center;gap:8px;display:flex}.graphics-label{letter-spacing:.06em;white-space:nowrap;color:var(--muted);font-size:11px;font-weight:800}@media (width<=560px){.graphics-toggle{display:none}}.connection{letter-spacing:.04em;height:30px;color:var(--muted);border:1px solid var(--line);background:#08041880;align-items:center;gap:7px;padding:0 12px;font-size:12px;font-weight:700;display:inline-flex}.connection i{background:var(--gold);width:8px;height:8px;box-shadow:0 0 8px var(--gold);border-radius:50%}.connection.online i{background:var(--lime);box-shadow:0 0 8px var(--lime)}.connection.offline i{background:var(--danger);box-shadow:0 0 8px var(--danger)}.logo{-webkit-user-select:none;user-select:none;align-items:center;gap:12px;display:inline-flex}.logo-mark{filter:drop-shadow(0 0 12px #ff4fd88c);width:54px;height:54px}.logo-words{line-height:.92;display:grid;transform:skew(-10deg)}.logo-turbo{font-family:var(--display);letter-spacing:.04em;background:linear-gradient(90deg, #fff, var(--cyan) 40%, var(--magenta));color:#0000;filter:drop-shadow(0 2px #3b1080);-webkit-background-clip:text;background-clip:text;font-size:34px}.logo-party{font-family:var(--display);letter-spacing:.42em;color:var(--gold);text-shadow:0 0 14px #ffd23f8c;font-size:20px}.logo.small .logo-mark{width:38px;height:38px}.logo.small .logo-turbo{font-size:24px}.logo.small .logo-party{font-size:14px}.portrait{background:radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--glow) 55%, transparent), transparent 70%), linear-gradient(160deg, var(--paint), color-mix(in srgb, var(--paint) 45%, #0b061c));clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);flex:none;display:inline-block;position:relative}.portrait img{object-fit:cover;width:100%;height:100%}.portrait-placeholder{clip-path:inherit;background:#ffffff40;position:absolute;inset:22%}.track-card{aspect-ratio:16/10;text-align:left;width:100%;color:var(--text);background:var(--deep);clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);isolation:isolate;border:0;padding:0;display:block;position:relative}.track-art{z-index:-1;background:linear-gradient(180deg, #0b061c0d 30%, #0b061ce0 100%), var(--art) center / cover;transition:transform .35s;position:absolute;inset:0}button.track-card:hover .track-art{transform:scale(1.06)}.track-card:after{content:"";clip-path:inherit;pointer-events:none;border:1px solid #ffffff1f;position:absolute;inset:0}.track-card.selected:after{border:3px solid var(--neon-a);box-shadow:inset 0 0 24px color-mix(in srgb, var(--neon-a) 60%, transparent)}.track-card .track-outline{width:40%;height:58%;position:absolute;top:8%;right:5%}.track-outline-shadow{fill:none;stroke:#0b061cbf;stroke-width:9px;stroke-linejoin:round}.track-outline-road{fill:none;stroke:#fff;stroke-width:3.6px;stroke-linejoin:round}.track-outline-shortcut{fill:none;stroke:var(--gold);stroke-width:2.2px;stroke-dasharray:3 3}.track-outline-start{fill:var(--neon-a,var(--magenta));stroke:#0b061c;stroke-width:.8px}.track-meta{gap:3px;display:grid;position:absolute;inset:auto 12px 10px}.track-meta strong{font-family:var(--display);text-shadow:0 2px 6px #0009;font-size:17px;font-weight:400;line-height:1.1}.track-facts{color:#f4f0ffcc;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:12px;font-weight:600;display:flex}.cup{font-family:var(--display);letter-spacing:.12em;text-transform:uppercase;color:var(--ink);background:var(--lime);clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);justify-self:start;padding:2px 9px;font-size:10px}.cup-2{background:var(--gold)}.cup-3{color:#fff;background:linear-gradient(90deg, var(--magenta), var(--danger))}.difficulty{gap:3px;display:inline-flex}.difficulty i{background:#ffffff40;width:10px;height:6px;transform:skew(-20deg)}.difficulty i.on{background:var(--gold)}.track-card.compact .track-meta strong{font-size:14px}.loading-screen,.restoring-session{text-align:center;place-content:center;justify-items:center;gap:14px;min-height:100vh;padding:24px;display:grid}.restoring-session p{color:var(--muted);margin:0}.restoring-spinner{background:conic-gradient(from 0deg, var(--magenta), var(--cyan), var(--gold), var(--magenta));clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);width:54px;height:54px;animation:1.1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.notice{z-index:30;background:var(--panel-raised);border-left:3px solid var(--gold);align-items:center;gap:12px;max-width:min(560px,100vw - 24px);padding:10px 10px 10px 16px;font-weight:600;display:flex;position:fixed;top:14px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #00000073}.home-backdrop{z-index:-1;background:linear-gradient(180deg, #0b061c8c 0%, #0b061ce0 55%, var(--ink) 100%), url(/turbo/art/cover.webp) center 30% / cover no-repeat;pointer-events:none;position:fixed;inset:0}.home-backdrop:after{content:"";transform-origin:top;background:repeating-linear-gradient(90deg,#4ce1ff14 0 1px,#0000 1px 64px),repeating-linear-gradient(0deg,#ff4fd812 0 1px,#0000 1px 40px);position:absolute;inset:45% 0 0;transform:perspective(500px)rotateX(55deg);-webkit-mask-image:linear-gradient(#0000,#000 60%);mask-image:linear-gradient(#0000,#000 60%)}@media (width<=760px){.topbar{grid-template-columns:auto 1fr;padding:12px 14px 6px}.topbar .logo{justify-self:end}.topbar-tools{grid-column:1/-1;justify-content:space-between}.hub-link span{display:none}.logo-mark{width:40px;height:40px}.logo-turbo{font-size:26px}.logo-party{font-size:15px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.home,.room,.practice{min-height:100vh;padding-bottom:32px;position:relative}.tagline{text-align:center;max-width:760px;color:var(--muted);margin:0 auto 18px;padding:0 20px;font-size:16px;font-weight:600}.home-layout{grid-template-columns:minmax(0,1.3fr) minmax(320px,1fr);align-items:start;gap:18px;width:min(1320px,100%);margin:0 auto;padding:0 24px;display:grid}.home-side{gap:18px;display:grid}.name-field{margin-bottom:14px}.play-panel{gap:14px;display:grid}.play-panel .panel-head{margin-bottom:0}.create-row{gap:10px;display:grid}.create-row .button{width:100%}.join-row{grid-template-columns:1fr auto;align-items:end;gap:10px;display:grid}.join-row input{font-family:var(--display);letter-spacing:.24em;text-transform:uppercase}.divider{font-family:var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--faint);align-items:center;gap:12px;font-size:11px;display:flex}.divider:before,.divider:after{content:"";background:linear-gradient(90deg, transparent, var(--line-strong), transparent);flex:1;height:1px}.play-panel .button.gold{width:100%}.invite-banner{color:var(--gold);border-left:3px solid var(--gold);background:#ffd23f1a;padding:10px 14px;font-weight:700}.character-picker{gap:14px;display:grid}.character-stage{background:radial-gradient(60% 70% at 62% 60%, color-mix(in srgb, var(--glow) 32%, transparent), transparent 70%), linear-gradient(180deg, #08041833, #080418b3), repeating-linear-gradient(115deg, #ffffff08 0 2px, transparent 2px 22px);border:1px solid var(--line);clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);height:300px;position:relative;overflow:hidden}.character-stage:after{content:"";background:linear-gradient(90deg, var(--paint), var(--glow));height:4px;position:absolute;inset:auto 0 0}.character-canvas{width:70%;height:100%;position:absolute;inset:0 0 0 30%}.character-card{border-left:3px solid var(--paint);background:#0b061ccc;width:min(230px,46%);padding:12px 14px 14px;position:absolute;top:16px;left:16px}.character-card h3{text-transform:uppercase;font-size:26px;line-height:1.05}.character-card p{color:var(--muted);margin:0 0 10px;font-weight:600}.weight{font-family:var(--display);letter-spacing:.14em;text-transform:uppercase;color:var(--ink);background:var(--cyan);clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);margin-bottom:6px;padding:2px 8px;font-size:10px;display:inline-block}.weight-medium{background:var(--gold)}.weight-heavy{color:#fff;background:var(--magenta)}.stats{gap:6px;margin:0;display:grid}.stats div{grid-template-columns:96px 1fr;align-items:center;gap:8px;display:grid}.stats dt{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700}.stats dd{background:#ffffff1a;height:8px;margin:0;transform:skew(-20deg)}.stats dd span{background:linear-gradient(90deg, var(--paint), var(--glow));height:100%;transition:width .35s;display:block}.random-racer{position:absolute;top:14px;right:14px}.character-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;display:grid}.character-tile{color:var(--muted);border:1px solid var(--line);clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);background:#ffffff0a;justify-items:center;gap:4px;padding:10px 4px 8px;font-size:12px;font-weight:700;transition:transform .12s,background .12s,color .12s;display:grid;position:relative}.character-tile:hover{color:var(--text);background:#ffffff17;transform:translateY(-2px)}.character-tile.selected{color:var(--text);background:linear-gradient(180deg, color-mix(in srgb, var(--paint) 38%, transparent), transparent), #ffffff0f;border-color:var(--glow);box-shadow:inset 0 -3px 0 var(--glow)}.character-tile span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.room-browser .panel-head{margin-bottom:10px}.online-count{color:var(--muted);align-items:center;gap:7px;font-size:13px;font-weight:700;display:inline-flex}.room-list{gap:8px;max-height:340px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.room-entry{background:linear-gradient(90deg, #0b061ceb 30%, #0b061cb3), var(--art) center / cover;border-left:3px solid var(--neon-a);grid-template-columns:64px 1fr auto;align-items:center;gap:12px;padding:8px 10px 8px 8px;display:grid;position:relative}.room-thumb{background:#08041899;place-items:center;width:64px;height:48px;display:grid}.room-thumb .track-outline{width:44px;height:44px}.room-body{gap:2px;min-width:0;display:grid}.room-body strong{font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;font-weight:400;overflow:hidden}.room-host,.room-meta,.room-meta>span{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:inline-flex}.room-host{white-space:nowrap;overflow:hidden}.room-meta{flex-wrap:wrap;gap:4px 12px}.room-phase{letter-spacing:.04em;text-transform:uppercase;color:var(--ink);background:var(--lime);padding:0 7px;font-weight:800}.room-phase.race{background:var(--magenta);color:#fff}.room-phase.results{background:var(--gold)}.room-empty{text-align:center;color:var(--muted);border:1px dashed var(--line-strong);margin:0;padding:22px 12px}.controls-panel summary{font-family:var(--display);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;font-size:15px;list-style:none}.controls-panel summary::-webkit-details-marker{display:none}.controls-panel summary:after{content:"+";float:right;color:var(--cyan)}.controls-panel[open] summary:after{content:"−"}.controls-panel dl{grid-template-columns:auto 1fr;align-items:center;gap:8px 14px;margin:14px 0 10px;display:grid}.controls-panel dt{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px;display:flex}.controls-panel dd{margin:0;font-weight:600}.controls-panel p{color:var(--muted);margin:0;font-size:13px}.practice-layout{grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);align-items:start;gap:18px;width:min(1320px,100%);margin:0 auto;padding:0 24px;display:grid}.practice-side{gap:16px;display:grid;position:sticky;top:16px}.practice-side .panel-head{margin-bottom:0}.practice-side .button.big{width:100%}.track-picker{gap:12px;display:grid}.track-picker-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.track-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));grid-auto-rows:max-content;gap:10px;max-height:min(68vh,760px);padding-right:4px;display:grid;overflow-y:auto}.race-settings{gap:12px;display:grid}.setting{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 14px;display:flex}.setting-label{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:12px}.setting-toggle{margin-top:2px}@media (width<=1040px){.home-layout,.practice-layout{grid-template-columns:1fr}.practice-side{position:static}}@media (width<=640px){.home-layout,.practice-layout{padding:0 12px}.panel{padding:14px}.character-stage{height:340px}.character-canvas{width:100%;height:230px;inset:0}.character-card{width:calc(100% - 80px);top:auto;bottom:12px;left:12px}.character-card .stats{display:none}.character-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr))}.character-tile .portrait{width:46px!important;height:46px!important}.room-entry{grid-template-columns:1fr auto}.room-thumb{display:none}.track-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}.room-code{border:1px solid var(--line-strong);background:#08041899;align-items:center;gap:8px;height:38px;padding:0 4px 0 12px;display:inline-flex}.room-code>span{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700}.room-code strong{font-family:var(--display);letter-spacing:.18em;color:var(--gold);font-size:18px;font-weight:400}.room-code .icon-button{min-width:30px;height:30px}.copied{color:var(--lime);font-size:12px;font-style:normal;font-weight:700}.room-layout{grid-template-columns:minmax(300px,.85fr) minmax(0,1.6fr);align-items:start;gap:18px;width:min(1320px,100%);margin:12px auto 0;padding:0 24px;display:grid}.players-panel{gap:12px;display:grid}.players-panel .panel-head{margin-bottom:0}.spectators{color:var(--muted);align-items:center;gap:6px;font-size:13px;font-weight:700;display:inline-flex}.player-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.player-list li{background:linear-gradient(90deg, color-mix(in srgb, var(--paint,#6b5bd6) 26%, transparent), transparent 70%), #ffffff08;border-left:3px solid var(--paint,var(--line-strong));align-items:center;gap:10px;min-height:58px;padding:6px 10px 6px 6px;display:flex}.player-list li.self{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--glow,var(--cyan)) 70%, transparent)}.player-list li.offline{opacity:.55}.player-name{flex:1;min-width:0;display:grid}.player-name strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.player-name small{color:var(--muted);font-size:12px}.host-badge{width:26px;height:26px;color:var(--ink);background:var(--gold);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);place-items:center;display:grid}.you-badge,.offline-badge{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);background:var(--cyan);padding:2px 8px;font-size:10px}.offline-badge{color:var(--text);background:#ffffff24}.player-list li.bot-slot{border:1px dashed var(--line);background:0 0;border-left-width:3px;min-height:46px}.bot-chip{width:46px;height:34px;font-family:var(--display);color:var(--muted);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:#ffffff0f;place-items:center;font-size:12px;display:grid}.change-racer{justify-self:start}.setup-panel{gap:16px;display:grid}.setup-panel .panel-head{margin-bottom:0}.chosen-track{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;display:grid}.chosen-track .track-card{max-width:460px}.start-row{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px 18px;padding-top:14px;display:flex}.waiting{font-family:var(--display);letter-spacing:.04em;color:var(--gold);font-size:15px;animation:1.8s ease-in-out infinite live-pulse}.results-page{min-height:100vh}.results-overlay{z-index:40;background:radial-gradient(70% 60% at 50% 20%,#ff4fd838,#0000 70%),#080418d1;place-items:center;padding:18px;animation:.35s fade-in;display:grid;position:fixed;inset:0;overflow-y:auto}@keyframes fade-in{0%{opacity:0}}.results-card{background:linear-gradient(180deg, var(--panel-raised), var(--panel-solid));clip-path:polygon(18px 0,100% 0,100% calc(100% - 18px),calc(100% - 18px) 100%,0 100%,0 18px);width:min(760px,100%);padding:22px 22px 18px;animation:.45s cubic-bezier(.2,1.4,.4,1) card-in;box-shadow:0 20px 60px #00000080}@keyframes card-in{0%{opacity:0;transform:translateY(24px)scale(.96)}}.results-card header{text-align:center;gap:2px;display:grid}.results-card h2{background:linear-gradient(90deg, var(--gold), #fff, var(--cyan));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:32px}.podium{justify-content:center;align-items:flex-end;gap:14px;margin:18px 0 14px;display:flex}.podium-step{text-align:center;justify-items:center;gap:6px;width:150px;display:grid}.podium-step strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:14px;overflow:hidden}.step-block{width:100%;height:54px;font-family:var(--display);color:var(--ink);clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 100%,0 100%);background:linear-gradient(#d9d4ff,#9b92d6);justify-content:center;align-items:center;gap:6px;font-size:26px;display:flex}.step-1 .step-block{background:linear-gradient(180deg, #ffe680, var(--gold) 60%, #e0a400);height:82px}.step-3 .step-block{background:linear-gradient(#ffc49a,#d98a52);height:40px}.step-1 .portrait{animation:1.6s ease-in-out infinite winner-bob}@keyframes winner-bob{50%{transform:translateY(-6px)}}.results-table{border-collapse:collapse;width:100%;font-size:14px}.results-table th{font-family:var(--display);letter-spacing:.12em;text-align:left;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line-strong);padding:6px 8px;font-size:11px;font-weight:400}.results-table td{border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;padding:6px 8px}.results-table td:first-child{width:46px;font-family:var(--display);font-size:16px}.results-table sup{font-size:10px}.results-table tr.self td{background:#4ce1ff1a}.results-table tr.self td:first-child{box-shadow:inset 3px 0 0 var(--cyan)}.results-racer{align-items:center;gap:10px;display:flex}.results-racer>span{line-height:1.2;display:grid}.results-racer em{color:var(--muted);font-size:11px;font-style:normal}.results-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px 12px;margin-top:16px;display:flex}.results-timer{text-align:center;width:100%;color:var(--gold);font-weight:700}@media (width<=1040px){.room-layout{grid-template-columns:1fr}}@media (width<=640px){.room-layout{padding:0 12px}.chosen-track{grid-template-columns:1fr}.podium-step{width:30%}.results-table th:last-child,.results-table td:last-child{display:none}.results-card h2{font-size:24px}.room-code>span{display:none}}.race-screen{touch-action:none;-webkit-user-select:none;user-select:none;background:#05030d;position:fixed;inset:0;overflow:hidden}.race-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.race-hud{pointer-events:none;font-variant-numeric:tabular-nums;position:absolute;inset:0}.race-hud button{pointer-events:auto}.speed-lines{opacity:0;background:repeating-conic-gradient(from 0deg at 50% 55%, #ffffff38 0 .6deg, transparent .6deg 7deg);transition:opacity .25s;position:absolute;inset:-10%;-webkit-mask-image:radial-gradient(circle at 50% 55%,#0000 26%,#000 62%);mask-image:radial-gradient(circle at 50% 55%,#0000 26%,#000 62%)}.speed-lines.active{opacity:.55;animation:.45s linear infinite streaks}@keyframes streaks{to{transform:rotate(7deg)}}.hud-chip{background:#0b061cc7}.hud-top{align-items:stretch;gap:6px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.lap-box,.time-box{border-bottom:3px solid var(--cyan);clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);background:#0b061cc7;align-items:center;gap:8px;padding:6px 16px;display:flex}.lap-box .label{font-family:var(--display);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:11px}.lap-box strong{font-family:var(--display);font-size:26px;font-weight:400;line-height:1}.lap-box small{color:var(--muted);font-size:15px}.time-box{min-width:132px;font-family:var(--display);color:var(--gold);border-bottom-color:var(--gold);justify-content:center;font-size:19px}.item-box{justify-items:center;gap:6px;width:96px;display:grid;position:absolute;top:14px;left:16px}.item-slot{clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:radial-gradient(circle at 50% 40%,#4ce1ff2e,#0000 70%),#0b061cd1;place-items:center;width:92px;height:80px;display:grid;position:relative;box-shadow:inset 0 0 0 2px #9680ff73}.item-slot:before{content:"";background:linear-gradient(160deg, var(--magenta), var(--cyan));clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%,4% 50%,27% 96%,73% 96%,96% 50%,73% 4%,27% 4%,4% 50%,0 50%);opacity:.55;position:absolute;inset:0}.item-slot.filled:before{opacity:1;animation:1.2s ease-in-out infinite alternate slot-glow}@keyframes slot-glow{to{filter:brightness(1.5)}}.item-slot.rolling{animation:.12s linear infinite slot-shake}@keyframes slot-shake{50%{transform:translateY(-2px)}}.item-slot em{font-family:var(--display);color:var(--gold);text-shadow:0 2px #000;font-size:16px;font-style:normal;position:absolute;bottom:6px;right:12px}.item-reel{place-items:center;display:grid}.item-name{letter-spacing:.04em;text-align:center;text-transform:uppercase;white-space:nowrap;background:#0b061cc7;max-width:140px;padding:2px 8px;font-size:11px;font-weight:800}.coin-box{color:var(--gold);clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);background:#0b061cc7;align-items:center;gap:4px;padding:3px 10px 3px 6px;display:flex}.coin-box strong{font-family:var(--display);font-size:18px;font-weight:400}.coin-box small{color:var(--muted);font-size:12px}.coin-box.full{color:#2a1600;background:var(--gold)}.coin-box.full small{color:#2a1600b3}.standings{gap:3px;width:168px;margin:0;padding:0;list-style:none;display:grid;position:absolute;top:170px;left:16px}.standings li{border-left:3px solid var(--paint);background:#0b061ca8;grid-template-columns:18px 26px 1fr auto;align-items:center;gap:6px;height:30px;padding:0 8px 0 4px;font-size:12px;font-weight:700;transition:transform .25s;display:grid}.standings li b{font-family:var(--display);text-align:center;color:var(--muted);font-weight:400}.standings li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.standings li.self{background:linear-gradient(90deg,#4ce1ff66,#0b061cb3)}.standings li.self b{color:#fff}.standings li.finished{color:var(--gold)}.place-box{justify-items:start;display:grid;position:absolute;bottom:18px;left:18px}.place{font-family:var(--display);color:#fff;text-shadow:0 4px #3b1080,0 0 24px #ff4fd88c;font-size:76px;font-weight:400;line-height:.9;transform:skew(-8deg)}.place sup{vertical-align:top;font-size:28px}.place-1{color:var(--gold)}.place-2{color:#e6e3ff}.place-3{color:#ffb27a}.place-box>span{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-left:6px;font-size:13px}.speedometer{grid-template-columns:auto auto;place-items:end;gap:2px 8px;width:210px;display:grid;position:absolute;bottom:20px;right:20px}.speed-bar{background:#0b061cc7;grid-column:1/-1;width:100%;height:10px;overflow:hidden;transform:skew(-24deg)}.speed-bar span{background:linear-gradient(90deg, var(--cyan), var(--magenta) 70%, var(--gold));width:0;height:100%;display:block}.speed-value{font-family:var(--display);color:#fff;text-shadow:0 3px #3b1080;font-size:44px;line-height:1}.speedometer small{font-family:var(--display);letter-spacing:.1em;color:var(--muted);margin-bottom:6px;font-size:12px}.drift-pips{grid-column:1/-1;gap:5px;display:flex}.drift-pips i{background:#0b061cb3;width:26px;height:8px;transition:background .1s;transform:skew(-24deg)}.drift-pips[data-tier="0"] i:first-child{background:#ffffff73}.drift-pips[data-tier="1"] i:first-child,.drift-pips[data-tier="2"] i:nth-child(-n+2),.drift-pips[data-tier="3"] i{box-shadow:0 0 10px}.drift-pips[data-tier="1"] i:first-child{color:var(--cyan);background:var(--cyan)}.drift-pips[data-tier="2"] i:nth-child(-n+2){color:var(--magenta);background:var(--magenta)}.drift-pips[data-tier="3"] i{color:var(--gold);background:var(--gold)}.hud-buttons{gap:6px;display:flex;position:absolute;top:14px;right:16px}.hud-buttons .icon-button{background:#0b061cb8}.minimap{clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:radial-gradient(circle,#0b061c9e,#0b061c40 70%,#0000);width:176px;height:176px;position:absolute;top:62px;right:16px}.spectate-bar{background:#0b061cd1;align-items:center;gap:10px;padding:4px;font-weight:700;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.spectate-bar span{white-space:nowrap;align-items:center;gap:6px;padding:0 6px;display:inline-flex}.countdown{font-family:var(--display);color:#fff;text-shadow:0 8px 0 #3b1080, 0 0 40px var(--magenta);font-size:clamp(90px,16vw,190px);line-height:1;animation:.9s cubic-bezier(.2,1.6,.4,1) both count-pop;position:absolute;top:34%;left:50%;transform:translate(-50%,-50%)}.countdown.go{color:var(--lime);text-shadow:0 8px 0 #0c4a1c, 0 0 50px var(--lime)}@keyframes count-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(2.2)skew(-8deg)}35%{opacity:1;transform:translate(-50%,-50%)scale(1)skew(-8deg)}to{opacity:.9;transform:translate(-50%,-50%)scale(.92)skew(-8deg)}}.toasts{justify-items:center;gap:6px;display:grid;position:absolute;top:19%;left:50%;transform:translate(-50%)}.toast{font-family:var(--display);letter-spacing:.04em;white-space:nowrap;color:#fff;border-bottom:3px solid var(--cyan);clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);background:#0b061ccc;padding:6px 18px;font-size:18px;animation:.3s cubic-bezier(.2,1.5,.4,1) toast-in}.toast.good{border-bottom-color:var(--lime)}.toast.bad{border-bottom-color:var(--danger)}.toast.big{color:var(--gold);border-bottom-color:var(--gold);padding:8px 26px;font-size:30px}@keyframes toast-in{0%{opacity:0;transform:translateY(-12px)scale(.85)}}.race-waiting{font-family:var(--display);letter-spacing:.06em;background:#0b061cd9;padding:12px 22px;animation:1.4s ease-in-out infinite live-pulse;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.overlay{z-index:20;background:#080418a8;place-items:center;padding:18px;display:grid;position:absolute;inset:0}.pause-card{background:linear-gradient(180deg, var(--panel-raised), var(--panel-solid));clip-path:polygon(16px 0,100% 0,100% calc(100% - 16px),calc(100% - 16px) 100%,0 100%,0 16px);gap:16px;width:min(420px,100%);padding:22px;animation:.3s card-in;display:grid}.pause-card h2{text-align:center;font-size:28px}.pause-actions{gap:8px;display:grid}.pause-actions .button{width:100%}.controls-help{color:var(--muted);grid-template-columns:1fr 1fr;gap:6px 12px;font-size:12px;display:grid}.controls-help span{align-items:center;gap:4px;display:flex}.touch-controls{z-index:10;padding:0 16px calc(16px + env(safe-area-inset-bottom));pointer-events:none;justify-content:space-between;align-items:flex-end;display:flex;position:absolute;inset:auto 0 0}.touch-steer{pointer-events:auto;touch-action:none;place-items:center;width:min(46vw,260px);height:140px;display:grid}.touch-track{clip-path:polygon(14px 0,calc(100% - 14px) 0,100% 50%,calc(100% - 14px) 100%,14px 100%,0 50%);background:#0b061c8c;border:2px solid #4ce1ff73;place-items:center;width:170px;height:52px;display:grid;position:relative}.touch-knob{background:linear-gradient(160deg, var(--cyan), #2d7bff);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);width:56px;height:44px;transition:transform 50ms linear}.touch-buttons{pointer-events:auto;grid-template-rows:52px 76px;grid-template-columns:repeat(2,76px);gap:10px;display:grid}.touch-button{font-family:var(--display);letter-spacing:.06em;color:#fff;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);touch-action:none;background:#0b061c99;border:0;place-items:center;font-size:13px;display:grid;box-shadow:inset 0 0 0 2px #ffffff4d}.touch-button:active{filter:brightness(1.4)}.touch-button.back{color:var(--muted)}.touch-button.brake{background:#ff54706b}.touch-button.item{background:linear-gradient(160deg,#ff4fd8b3,#ff7a3db3)}.touch-button.drift{background:linear-gradient(160deg,#4ce1ffa6,#2d7bffa6)}@media (width<=900px),(height<=560px){.standings{display:none}.minimap{width:120px;height:120px;top:58px}.place{font-size:54px}.speedometer{width:150px}.speed-value{font-size:32px}.lap-box strong{font-size:20px}.time-box{min-width:110px;font-size:15px}.item-slot{width:76px;height:66px}.toast{font-size:15px}.toast.big{font-size:22px}}.race-screen:has(.touch-controls) .place-box{top:150px;bottom:auto}.race-screen:has(.touch-controls) .speedometer{width:120px;top:196px;bottom:auto;right:16px}.race-screen:has(.touch-controls) .speed-value{font-size:26px}.race-screen:has(.touch-controls) .spectate-bar{bottom:170px}
