:root{color:#22242a;font-synthesis:none;--ink:#22242a;--paper:#fffdf5;--red:#ff5d73;--blue:#47f;--green:#5ee18b;--shadow:0 16px 50px #29251d1f;background:#f7f2e6;font-family:DM Sans,system-ui,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 10% 10%,#fff 0,#0000 28%),linear-gradient(140deg,#f9f4e8,#eee8d9);min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{border:2px solid var(--ink);color:var(--ink);cursor:pointer;box-shadow:3px 3px 0 var(--ink);background:#fffdf5;border-radius:12px;padding:.75rem 1.1rem;font-weight:800;transition:transform .14s,box-shadow .14s}button:hover:not(:disabled){box-shadow:5px 5px 0 var(--ink);transform:translate(-1px,-1px)}button:active:not(:disabled){box-shadow:1px 1px 0 var(--ink);transform:translate(2px,2px)}button:disabled{opacity:.46;cursor:not-allowed}.primary{background:var(--red);color:#fff}.welcome{place-items:center;min-height:100vh;padding:24px;display:grid}.hero-card,.center-card{border:2px solid var(--ink);width:min(560px,100%);box-shadow:8px 8px 0 var(--ink),var(--shadow);text-align:center;background:#fffdf5f0;border-radius:28px;padding:clamp(24px,5vw,48px)}.logo-mark,.spinner{color:var(--red);font:700 4rem/.6 Fredoka}.eyebrow{letter-spacing:.18em;color:#73706a;font-size:.74rem;font-weight:800}.hero-card h1,.center-card h2,.section-heading h2,.waiting-screen h2{margin:.3em 0;font-family:Fredoka,sans-serif;font-size:clamp(2rem,5vw,3.5rem);line-height:1}.lead{color:#66645f;max-width:440px;margin:0 auto 28px;line-height:1.6}.hero-card label{text-align:left;gap:8px;margin:16px 0;font-weight:700;display:grid}.hero-card input,.code-row input{border:2px solid var(--ink);background:#fff;border-radius:12px;outline:none;width:100%;padding:.85rem 1rem;font-weight:700}.hero-card input:focus{box-shadow:0 0 0 4px #ff5d7330}.hero-card>.primary{width:100%;margin-top:8px}.divider{color:#888;align-items:center;gap:12px;margin:20px 0;display:flex}.divider:before,.divider:after{content:"";background:#ccc;flex:1;height:1px}.code-row{gap:10px;display:flex}.join-box{background:#f2eddf;border-radius:16px;padding:14px}.connection{color:#777;margin:22px 0 0;font-size:.8rem}.connection i,.status-dot{border-radius:50%;width:9px;height:9px;margin-right:7px;display:inline-block}.online{background:#28bd69}.offline{background:#ff5d73}.form-error,.toast.error{color:#a11930;background:#ffe4e8;border-radius:10px;padding:10px}.app-shell{grid-template-rows:auto 1fr auto;min-height:100vh;display:grid}.topbar{background:var(--paper);border-bottom:2px solid var(--ink);align-items:center;gap:18px;height:68px;padding:0 clamp(14px,3vw,34px);display:flex}.brand{font-family:Fredoka;font-size:1.2rem}.brand:first-letter{color:var(--red)}.phase-pill{background:#eee8d9;border-radius:99px;margin:auto;padding:7px 14px;font-size:.82rem;font-weight:800}.invite{box-shadow:none;padding:.48rem .8rem;font-size:.8rem}.status-dot{margin:0}.game-main{min-height:0;padding:clamp(18px,3vw,38px)}.center-card{margin:4vh auto}.big-icon{font-size:4rem}.roster{gap:8px;margin:25px 0;display:grid}.roster-player{text-align:left;background:#f2eddf;border-radius:12px;align-items:center;gap:10px;padding:12px 15px;display:flex}.roster-player i,.player-strip i{border:2px solid var(--ink);border-radius:50%;width:14px;height:14px}.roster-player span{letter-spacing:.1em;background:var(--ink);color:#fff;border-radius:5px;margin-left:auto;padding:4px 7px;font-size:.65rem}.jumbo{width:100%;padding:1rem}.waiting{color:#777}.player-strip{background:var(--paper);border-top:2px solid var(--ink);justify-content:center;align-items:center;gap:20px;min-height:48px;padding:8px 18px;font-size:.78rem;display:flex;overflow-x:auto}.player-strip span{white-space:nowrap}.player-strip i{width:10px;height:10px;margin-right:5px;display:inline-block}.section-heading{justify-content:space-between;align-items:end;gap:30px;max-width:1100px;margin:0 auto 18px;display:flex}.section-heading h2{font-size:2.3rem}.section-heading p{color:#6c6963;max-width:430px}.drawing-board{background:var(--paper);border:2px solid var(--ink);max-width:1100px;box-shadow:6px 6px 0 var(--ink);border-radius:20px;margin:auto;padding:12px}.drawing-board canvas{touch-action:none;cursor:crosshair;border-radius:12px;width:100%;height:min(63vh,650px);display:block}.canvas-actions{align-items:center;gap:10px;padding:12px 4px 2px;display:flex}.canvas-actions span{color:#777;margin-right:auto}.canvas-actions .valid{color:#168248;font-weight:800}.waiting-screen{text-align:center;place-content:center;min-height:65vh;display:grid}.spinner{animation:1s infinite alternate pulse}@keyframes pulse{to{color:var(--blue);transform:scale(1.15)}}.track-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;max-width:1100px;margin:auto;display:grid}.track-card{background:var(--paper);border:2px solid var(--ink);box-shadow:5px 5px 0 var(--ink);border-radius:18px;overflow:hidden}.track-card.own{opacity:.72}.track-preview{width:100%;height:210px;display:block}.track-card>div{align-items:center;gap:10px;padding:14px;display:flex}.track-card button,.track-card span{margin-left:auto;font-size:.75rem}.vote-count{text-align:center;font-weight:800}.countdown{background:var(--red);color:#fff;border:2px solid var(--ink);box-shadow:3px 3px var(--ink);border-radius:12px;padding:9px 14px;font:700 2rem Fredoka}.race-layout{grid-template-rows:auto 1fr;max-width:1400px;height:calc(100vh - 154px);margin:auto;display:grid}.race-hud{gap:20px;padding:0 4px 10px;font-size:1rem;display:flex}.race-hud span:last-child{color:#777;margin-left:auto}.race-canvas-wrap{border:2px solid var(--ink);min-height:0;box-shadow:6px 6px var(--ink);border-radius:20px;position:relative;overflow:hidden}.race-canvas-wrap>canvas{width:100%;height:100%;display:block}.touch-controls{pointer-events:none;justify-content:space-between;display:none;position:absolute;inset:auto 18px 18px}.touch-controls>div{gap:8px;display:flex}.touch-controls button{pointer-events:auto;touch-action:none;background:#fff9;width:58px;height:58px;padding:0}.results ol{gap:8px;padding:0;list-style:none;display:grid}.results li{text-align:left;background:#f2eddf;border-radius:12px;grid-template-columns:40px 1fr auto;align-items:center;padding:12px;display:grid}.results li>span{font:700 1.3rem Fredoka}.button-row{gap:12px;margin-top:24px;display:flex}.button-row button{flex:1}.toast{z-index:10;box-shadow:var(--shadow);position:fixed;top:78px;left:50%;transform:translate(-50%)}@media (width<=700px){.brand strong{display:none}.phase-pill{margin-left:0}.invite{margin-left:auto;font-size:0}.invite b{font-size:.8rem}.topbar{gap:10px}.game-main{padding:14px}.section-heading{flex-direction:column;align-items:start;gap:0}.section-heading>p{margin-top:0}.drawing-board canvas{height:58vh}.canvas-actions{flex-wrap:wrap}.canvas-actions span{width:100%;margin:0}.canvas-actions button{flex:1}.player-strip{justify-content:start}.touch-controls{display:flex}.race-layout{height:calc(100vh - 146px)}.race-hud span:last-child{display:none}.track-preview{height:170px}.code-row{flex-direction:column}}.countdown-screen{text-align:center;place-content:center;min-height:70vh;display:grid}.countdown-screen h2{margin:.1em 0;font:700 clamp(2.2rem,7vw,5rem) Fredoka}.big-countdown{color:var(--red);text-shadow:6px 6px 0 var(--ink);font:700 clamp(5rem,18vw,13rem)/1 Fredoka;animation:.45s ease-out countpop}@keyframes countpop{0%{opacity:0;transform:scale(1.7)}to{opacity:1;transform:scale(1)}}.results.compact{margin-top:1vh}.results li{grid-template-columns:38px 1fr auto 50px;gap:10px}.results li>strong{text-align:right;color:var(--red);font:800 1.05rem Fredoka}.results li>i{border:2px solid var(--ink);border-radius:50%;width:15px;height:15px}.results:not(.compact) li{grid-template-columns:34px 18px 1fr auto auto}.results li small{color:#777}.race-hud time{font-variant-numeric:tabular-nums;margin-left:auto;font-weight:800}.race-hud span+time{margin-left:0}.roster-player em{letter-spacing:.1em;background:#ddd5c5;border-radius:5px;padding:4px 7px;font-size:.62rem;font-style:normal}.roster-player .remove-bot{width:28px;height:28px;box-shadow:none;color:#a11930;background:#ffe4e8;border-radius:8px;margin-left:4px;padding:0}.bot-button{color:#294a9b;background:#e8f0ff;width:100%;margin:-10px 0 18px}.drift-hint{color:#fff;letter-spacing:.08em;pointer-events:none;background:#141518b8;border-radius:9px;padding:7px 10px;font-size:.7rem;font-weight:800;position:absolute;top:14px;right:14px}.touch-controls>.drift-button{color:#fff;background:#ff5d73e0;align-self:flex-end;width:72px;font-size:.72rem}@media (width<=700px){.drift-hint{display:none}}:root{font-family:Inter,ui-rounded,Segoe UI,system-ui,sans-serif}.landing,.legal-shell{color:#17181b;background:#f5f1e8;min-height:100vh}.landing-nav,.legal-shell>header{justify-content:space-between;align-items:center;padding:20px clamp(20px,5vw,72px);display:flex}.landing a,.legal-shell a,.site-footer a{color:inherit;text-decoration:none}.landing-hero{grid-template-columns:1.05fr .95fr;align-items:center;gap:6vw;min-height:68vh;padding:40px clamp(20px,7vw,100px);display:grid}.landing-hero h1{max-width:850px;margin:.2em 0;font-size:clamp(44px,6vw,82px);line-height:.95}.landing-hero p{max-width:700px;font-size:clamp(18px,2vw,24px)}.hero-art{background:#24262b;border-radius:48% 52% 42% 58%;height:430px;position:relative;box-shadow:inset 0 0 0 4px #fff,0 30px 80px #0002}.hero-art:after{content:"";border:4px dashed #fff8;border-radius:50%;position:absolute;inset:20%}.hero-art span{z-index:2;font-size:58px;position:absolute}.hero-art span:first-child{top:22%;left:15%;transform:rotate(30deg)}.hero-art span:nth-child(2){top:45%;right:13%;transform:rotate(-20deg)}.hero-art span:nth-child(3){bottom:12%;left:35%;transform:rotate(130deg)}.steps,.faq{padding:80px clamp(20px,7vw,100px)}.steps>div{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.steps article,.faq details{background:#fff;border:2px solid #17181b;border-radius:22px;padding:24px;box-shadow:6px 6px #17181b}.steps article>b{color:#ff5d73;font-size:36px}.faq{max-width:900px}.faq details{margin:12px 0}.faq summary{cursor:pointer;font-weight:800}.site-footer{color:#fff;background:#17181b;justify-content:space-between;gap:20px;padding:22px clamp(20px,5vw,72px);font-size:13px;display:flex}.site-footer.compact{padding:8px 20px}.site-footer nav{flex-wrap:wrap;gap:16px;display:flex}.site-footer button{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.legal-shell main{max-width:860px;margin:auto;padding:40px 24px 100px}.legal-shell article{background:#fff;border:2px solid #17181b;border-radius:24px;padding:clamp(22px,5vw,60px);line-height:1.65}.notice{background:#fff3c4;border-left:5px solid #ffc857;padding:14px}.modal-backdrop{z-index:9999;background:#0009;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{color:#17181b;background:#fff;border:2px solid #17181b;border-radius:22px;width:100%;max-width:580px;padding:28px;position:relative;box-shadow:8px 8px #17181b}.modal .close{position:absolute;top:10px;right:12px}.modal label{grid-template-columns:1fr 2fr 60px;gap:10px;margin:16px 0;display:grid}.choice{border-top:1px solid #ddd;justify-content:space-between;padding:14px;display:flex}.admin{color:#f7f7f7;background:#121419;min-height:100vh;padding:28px}.admin>header{justify-content:space-between;align-items:center;gap:20px;display:flex}.admin>header>div{margin-right:auto}.live-bar{color:#5ee18b;padding:18px 0}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;display:grid}.kpi-grid article,.chart-card{background:#20232b;border:1px solid #343844;border-radius:18px;padding:20px}.kpi-grid span{color:#aeb4c0;display:block}.kpi-grid strong{margin-top:8px;font-size:34px;display:block}.admin-grid{grid-template-columns:2fr 1fr;gap:16px;margin-top:16px;display:grid}.chart-card:first-child{grid-row:span 2}.bar-chart{align-items:end;gap:10px;height:280px;display:flex}.bar-chart>div{flex:1;align-items:end;gap:2px;height:100%;display:flex;position:relative}.bar-chart i,.bar-chart b{background:#51a8ff;width:45%;min-height:2px}.bar-chart b{background:#ff5d73}.bar-chart span{font-size:10px;position:absolute;bottom:-24px}.admin-login{background:#121419;place-items:center;min-height:100vh;display:grid}.admin-login form{background:#fff;border-radius:20px;gap:14px;width:min(400px,90vw);padding:36px;display:grid}.admin-login label{gap:6px;display:grid}.loading{place-items:center;min-height:100vh;display:grid}@media (width<=800px){.landing-hero{grid-template-columns:1fr}.hero-art{height:280px}.steps>div,.admin-grid{grid-template-columns:1fr}.admin>header{flex-wrap:wrap}.site-footer{flex-direction:column}.landing-hero h1{font-size:48px}}.topbar .brand{color:var(--ink);text-decoration:none}.game-content-only{min-height:0}.ad-game-grid{grid-template-columns:minmax(130px,180px) minmax(0,1fr) minmax(130px,180px);align-items:stretch;gap:16px;min-height:0;padding:0 14px;display:grid}.ad-game-grid>.game-main{grid-column:2;padding-left:0;padding-right:0}.ad-rail-left{grid-area:1/1}.ad-rail-right{grid-area:1/3}.ad-rail{border-radius:16px;flex-direction:column;justify-content:center;min-height:250px;margin:28px 0 18px;display:flex;position:relative;overflow:hidden}.ad-label{letter-spacing:.14em;color:#777;text-align:center;margin-bottom:5px;font-size:9px}.ad-consent-placeholder{min-height:250px;box-shadow:none;color:#777;background:#ffffff80;border:1px dashed #aaa;font-size:11px;line-height:1.5}.ad-consent-placeholder span{letter-spacing:.14em;font-size:9px;display:block}.consent-toggle{border-top:1px solid #ddd;justify-content:space-between;align-items:center;padding:14px;grid-template-columns:none!important;margin:0!important;display:flex!important}.consent-toggle span{gap:3px;display:grid}.consent-toggle small{color:#666}.consent-toggle input{width:22px;height:22px}.consent-actions{flex-wrap:wrap}.consent-actions button{min-width:145px}@media (width<=1050px){.ad-game-grid{grid-template-columns:minmax(0,1fr)}.ad-game-grid>.game-main{grid-column:1}.ad-rail{display:none}}.lobby-card{border:2px solid var(--ink);width:min(900px,100%);box-shadow:8px 8px 0 var(--ink),var(--shadow);background:#fffdf5f5;border-radius:26px;margin:4vh auto;padding:clamp(20px,3vw,34px)}.lobby-heading{border-bottom:2px solid #ded8c9;justify-content:space-between;align-items:center;gap:20px;padding-bottom:22px;display:flex}.lobby-heading>div{align-items:center;gap:16px;display:flex}.lobby-flag{border:2px solid var(--ink);width:58px;height:58px;box-shadow:3px 3px 0 var(--ink);background:#ffc857;border-radius:16px;place-items:center;font-size:28px;display:grid}.lobby-heading h2{margin:3px 0;font:700 clamp(32px,4vw,48px)/1 Fredoka,sans-serif}.lobby-heading p{margin:0}.lobby-rule{text-align:right;color:#6f6b63;font-size:13px;line-height:1.45}.lobby-content{grid-template-columns:minmax(0,1.55fr) minmax(230px,.8fr);gap:24px;padding-top:24px;display:grid}.lobby-roster{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.lobby-roster .roster-player,.roster-slot{border:2px solid var(--ink);min-height:70px;box-shadow:2px 2px 0 var(--ink);border-radius:14px;padding:10px}.lobby-roster .roster-player{background:#fff;align-items:center;gap:10px;display:flex}.driver-avatar{border:2px solid var(--ink);border-radius:12px;flex:none;place-items:center;width:42px;height:42px;font-size:20px;display:grid}.driver-copy{text-align:left;min-width:0;display:grid}.driver-copy b{text-overflow:ellipsis;overflow:hidden}.driver-copy small{color:#777;font-size:11px}.lobby-roster .roster-player em{background:#d9e6ff;border-radius:5px;padding:4px 6px;font-size:9px;font-style:normal}.lobby-roster .roster-player span{margin-left:auto}.roster-slot{color:#999;box-shadow:none;background:#f6f1e6;border-style:dashed;justify-content:center;align-items:center;gap:8px;font-size:12px;display:flex}.roster-slot b{font-size:21px}.lobby-actions{text-align:left;background:#f0eadc;border-radius:18px;flex-direction:column;justify-content:center;padding:20px;display:flex}.lobby-actions h3{margin:0 0 8px;font:700 24px Fredoka}.lobby-actions p{color:#706c64;font-size:13px;line-height:1.45}.lobby-actions .bot-button{margin:12px 0}.lobby-actions .jumbo{margin-top:4px}.lobby-actions .waiting{text-align:center}.lobby-actions .remove-bot{width:auto}@media (width<=760px){.lobby-card{border-radius:20px;margin:1vh auto;padding:18px}.lobby-heading{align-items:flex-start}.lobby-rule{display:none}.lobby-content,.lobby-roster{grid-template-columns:1fr}.roster-slot:nth-of-type(n+4){display:none}.lobby-actions{padding:16px}.lobby-flag{width:48px;height:48px}.lobby-heading h2{font-size:34px}}.finish-overlay{z-index:20;color:#17181b;text-align:center;pointer-events:none;background:#fffdf5f0;border:3px solid #17181b;border-radius:18px;gap:5px;min-width:260px;padding:18px 26px;display:grid;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);box-shadow:7px 7px #17181b}.finish-overlay strong{color:#ff5d73;font-size:2rem}.customizer-card{max-width:620px}.car-customizer{background:#f4f1e9;border:2px solid #17181b;border-radius:18px;grid-template-columns:150px 1fr;align-items:center;gap:22px;margin:16px 0;padding:16px;display:grid;box-shadow:4px 4px #17181b}.car-customizer h3{margin:0 0 10px}.color-picks{flex-wrap:wrap;gap:7px;display:flex}.color-picks button{border:2px solid #fff;border-radius:50%;width:25px;height:25px;padding:0;box-shadow:0 0 0 1px #17181b}.color-picks button.selected{transform:scale(1.18);box-shadow:0 0 0 3px #17181b}.custom-row{gap:12px;margin-top:10px;display:flex}.custom-row label{gap:3px;font-size:12px;font-weight:700;display:grid}.custom-row select{border:1px solid #17181b;border-radius:8px;padding:6px 8px}.car-preview{--car-color:#ff5d73;background:var(--car-color);border:3px solid #17181b;border-radius:20px;width:105px;height:54px;margin:auto;position:relative;box-shadow:8px 9px #0002}.car-preview.compact{border-radius:24px;width:82px;height:58px}.car-preview.muscle{border-radius:10px;width:112px;height:60px}.car-preview>b{background:#dff4ff;border:2px solid #17181b;border-radius:7px;width:28px;height:30px;position:absolute;top:9px;right:18px}.preview-wheel{background:#17181b;border-radius:3px;width:22px;height:8px;position:absolute}.preview-wheel.racing:after,.preview-wheel.neon:after{content:"";background:#eee;position:absolute;inset:2px 5px}.preview-wheel.neon:after{background:#7dffda;box-shadow:0 0 7px #4de1c1}.preview-wheel.w1{top:-7px;left:12px}.preview-wheel.w2{top:-7px;right:12px}.preview-wheel.w3{bottom:-7px;left:12px}.preview-wheel.w4{bottom:-7px;right:12px}@media (width<=520px){.car-customizer{grid-template-columns:1fr}.custom-row{justify-content:center}}.track-editor{gap:10px;width:min(1280px,100%);margin:0 auto;display:grid}.drawing-layout .section-heading{max-width:1280px}.track-editor .drawing-board{width:100%;max-width:none}.track-editor .drawing-board canvas{height:min(70vh,720px)}.route-ready{font-weight:800;color:#1767a8!important}.route-check{white-space:nowrap}.editor-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.editor-top select{border:2px solid #17181b;border-radius:10px;padding:9px 12px;font-weight:800}.editor-steps{letter-spacing:.08em;font-size:12px;font-weight:900}.editor-steps b{color:#ff5d73;margin:0 5px}.editor-body{grid-template-columns:116px 1fr;gap:12px;display:grid}.editor-tools{align-content:start;gap:7px;display:grid}.editor-tools button{text-align:left;background:#fff;border:2px solid #17181b;border-radius:11px;grid-template-columns:25px 1fr;align-items:center;padding:8px;font-weight:800;display:grid;box-shadow:2px 2px #17181b}.editor-tools button.active{box-shadow:none;background:#ffc857;transform:translate(2px,2px)}.editor-tools button span{font-size:18px}.editor-tools button small{color:#777;grid-column:2}.editor-help{color:#666;margin:0;font-size:12px}.item-hud{z-index:8;color:#fff;background:#17181be8;border:3px solid #fff;border-radius:14px;gap:2px;min-width:116px;padding:12px;display:grid;position:absolute;bottom:64px;right:18px;box-shadow:0 5px 18px #0005}.item-hud small{color:#ffc857;font-size:9px}.drawing-board canvas{touch-action:none}@media (width<=720px){.track-editor .drawing-board canvas{height:62vh}.editor-body{grid-template-columns:1fr}.editor-tools{display:flex;overflow-x:auto}.editor-tools button{text-align:center;grid-template-columns:1fr;min-width:83px;display:grid}.editor-tools button small{grid-column:1}.editor-top{align-items:flex-start}.editor-steps{max-width:210px}.canvas-actions{flex-wrap:wrap}.item-hud{bottom:125px;right:10px}}
