: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}.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}}
