:root{--bg: #0b0420;--bg2: #140a33;--ink: #ffffff;--muted: #b9a9e6;--accent: #ff4d6d;--accent2: #39e0e0;--radius: 22px;font-family:"Baloo 2",Nunito,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);overflow:hidden}#app{position:fixed;inset:0}button{font-family:inherit;cursor:pointer;border:none}.host-body canvas{position:fixed;inset:0}#host-overlay{position:fixed;inset:0;pointer-events:none;display:flex;align-items:center;justify-content:center}#host-overlay>*{pointer-events:auto}.logo{font-weight:900;letter-spacing:2px;font-size:clamp(40px,9vw,120px);background:linear-gradient(180deg,#fff,#ffd23f);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 6px 0 rgba(255,77,109,.25);margin:0}.logo span{color:transparent;background:linear-gradient(180deg,#4da3ff,#b66dff);-webkit-background-clip:text;background-clip:text}.logo.small{font-size:clamp(28px,11vw,56px)}.lobby{text-align:center;background:#0b0420a8;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius);padding:32px 44px;max-width:880px}.tag{color:var(--muted);margin:0 0 22px;font-weight:700}.join{display:flex;gap:26px;justify-content:center;margin-bottom:22px}.join-card{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:18px 22px}.join-step{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:10px;font-weight:800}.qr{width:200px;height:200px;border-radius:12px;display:block}.join-url{margin-top:8px;font-weight:700;color:var(--accent2)}.big-code{display:flex;flex-direction:column;justify-content:center}.code{font-size:72px;font-weight:900;letter-spacing:10px;color:#fff;text-shadow:0 4px 0 var(--accent)}.roster{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;min-height:40px;margin-bottom:20px}.roster-empty{color:var(--muted)}.chip{background:#ffffff14;padding:8px 16px;border-radius:999px;font-weight:800;display:flex;align-items:center;gap:8px}.dot{width:12px;height:12px;border-radius:50%;background:var(--c, #fff);display:inline-block;box-shadow:0 0 10px var(--c)}.start-btn{background:linear-gradient(180deg,#ff7a93,var(--accent));color:#fff;font-weight:900;font-size:22px;padding:16px 40px;border-radius:999px;box-shadow:0 8px #b8284a,0 14px 24px #0006;transition:transform .08s}.start-btn:active{transform:translateY(4px);box-shadow:0 4px #b8284a}.start-btn:disabled{opacity:.5;filter:grayscale(.5)}.race-hud{position:fixed;inset:0;pointer-events:none}.count{position:fixed;top:18%;left:0;right:0;text-align:center;font-size:140px;font-weight:900;color:#fff;text-shadow:0 0 40px var(--accent2),0 8px 0 var(--accent)}.standings-live{position:fixed;top:20px;right:20px;background:#0b042099;border-radius:16px;padding:12px 16px;min-width:220px}.srow{display:flex;align-items:center;gap:8px;font-weight:800;padding:3px 0}.srow .pl{width:22px;color:var(--accent2)}.srow .lap{margin-left:auto;color:var(--muted);font-size:13px}.results{text-align:center;background:#0b0420cc;padding:30px 50px;border-radius:var(--radius);border:1px solid rgba(255,255,255,.12)}.results h2{font-size:40px;margin:0 0 18px}.board{border-collapse:collapse;margin:0 auto 22px;min-width:360px}.board th,.board td{padding:8px 18px;text-align:left;font-weight:800}.board thead th{color:var(--muted);font-size:13px;text-transform:uppercase}.board tbody tr{background:#ffffff0d}.champ-name{font-size:26px;font-weight:900;color:#ffd23f}.controller-body{overscroll-behavior:none;touch-action:none}.ctrl-join{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:14px;padding:24px}.sub{color:var(--muted);font-weight:700;margin:0 0 8px}.field{width:100%;max-width:320px;padding:16px;border-radius:16px;border:2px solid rgba(255,255,255,.15);background:#ffffff12;color:#fff;font-size:18px;font-weight:700;text-align:center;outline:none}.code-field{letter-spacing:8px;font-size:28px;font-weight:900}.cta{width:100%;max-width:320px;padding:18px;border-radius:16px;font-size:20px;font-weight:900;color:#fff;background:linear-gradient(180deg,#5ae08a,#28b463);box-shadow:0 6px #1d8049}.cta:active{transform:translateY(3px);box-shadow:0 3px #1d8049}.err{color:#ff8a8a;font-weight:700;min-height:20px}.pad{height:100%;display:flex;flex-direction:column}.pad-top{display:flex;justify-content:space-between;align-items:center;padding:12px 16px}.badge{background:#ffffff14;border-radius:999px;padding:8px 16px;font-weight:900;display:flex;align-items:center;gap:8px}.badge .dot{background:var(--c)}.status{position:fixed;top:54px;left:0;right:0;text-align:center;font-weight:900;font-size:28px;opacity:0;transition:opacity .2s}.status.show{opacity:1}.status.good{color:#5ae08a}.status.bad{color:var(--accent)}.pad-main{flex:1;display:flex}.steer-zone{flex:1.3;position:relative;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 60%,rgba(77,163,255,.18),transparent 70%);touch-action:none}.steer-hint{position:absolute;bottom:18px;color:var(--muted);font-weight:800;letter-spacing:2px}.wheel{width:120px;height:120px;border-radius:50%;border:10px solid var(--c);box-shadow:0 0 30px var(--c),inset 0 0 20px #fff3;transition:transform .05s linear}.right-zone{flex:1;display:flex;flex-direction:column;gap:12px;padding:16px;justify-content:flex-end}.gas-btn{height:140px;border-radius:28px;font-size:30px;font-weight:900;color:#06210f;background:linear-gradient(180deg,#7dffb0,#28b463);box-shadow:0 8px #1d8049}.gas-btn.active{transform:translateY(5px);box-shadow:0 3px #1d8049}.drift-btn{height:70px;border-radius:22px;font-size:18px;font-weight:900;color:#1a1030;background:linear-gradient(180deg,#ffe27a,#ffd23f);box-shadow:0 6px #c9a21f}.drift-btn.active{transform:translateY(4px);box-shadow:0 2px #c9a21f}.power-btn{height:80px;border-radius:22px;font-size:18px;font-weight:900;color:#fff;background:linear-gradient(180deg,#555,#333);box-shadow:0 6px #222;opacity:.6}.power-btn.ready{background:linear-gradient(180deg,#b66dff,#8a3dff);box-shadow:0 6px #5e1fb8;opacity:1;animation:pulse 1s infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.ctrl-result{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:10px}.ctrl-result h2{font-size:64px;margin:0}.pts{font-size:28px;font-weight:900;color:#ffd23f}.time{color:var(--muted);font-weight:700}.frow{font-weight:800}
