*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0b0d14;--panel: rgba(24, 27, 40, .82);--inset: rgba(255, 255, 255, .04);--border: rgba(255, 255, 255, .09);--border-strong: rgba(255, 255, 255, .16);--text: #eef0f7;--muted: #9097ad;--accent: #ffcf4a;--primary: #3ddc84;--primary-dark: #1fae5f;--danger: #ff6b6b;--radius: 16px;--radius-sm: 10px;--shadow: 0 20px 50px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--shadow-sm: 0 6px 18px rgba(0, 0, 0, .35)}body{background:radial-gradient(1200px 700px at 15% 10%,rgba(80,90,200,.22),transparent 60%),radial-gradient(900px 600px at 90% 90%,rgba(61,220,132,.12),transparent 60%),var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-weight:500;-webkit-font-smoothing:antialiased;overflow:hidden}#root{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center}.screen{display:flex;flex-direction:column;align-items:center;gap:14px;background:var(--panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow);padding:32px 44px;max-width:680px;max-height:92vh;overflow-y:auto}.title{font-size:44px;font-weight:900;font-style:italic;letter-spacing:1px;background:linear-gradient(100deg,#ffe27a,#ff9d3d 55%,#ff5f6d);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 4px 14px rgba(255,140,60,.35))}.title-sm{font-size:26px;font-weight:800;letter-spacing:2px;color:var(--accent)}.subtitle{color:var(--muted);font-size:14px}.blink{animation:blink 1.6s ease-in-out infinite}@keyframes blink{50%{opacity:.35}}.field-label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:1.5px;margin-top:8px;align-self:flex-start}.text-input{background:#0000004d;border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:16px;padding:10px 14px;width:100%;outline:none;transition:border-color .15s,box-shadow .15s}.text-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #ffcf4a33}.code-input{width:130px;text-align:center;letter-spacing:6px;font-weight:700}.btn{background:#ffffff14;border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:15px;font-weight:700;letter-spacing:.5px;padding:11px 22px;cursor:pointer;transition:transform .12s,background .15s,box-shadow .15s}.btn:hover:not(:disabled){background:#ffffff24;transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(1px)}.btn.primary{background:linear-gradient(180deg,var(--primary),var(--primary-dark));border-color:transparent;color:#06210f;box-shadow:0 6px 20px #3ddc844d}.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,#57e898,var(--primary));box-shadow:0 8px 26px #3ddc8466}.btn.small{font-size:13px;padding:7px 14px}.btn:disabled{opacity:.5;cursor:default}.error{color:var(--danger);font-size:13px}.char-grid,.car-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:100%}@media(max-width:520px){.car-grid,.char-grid{grid-template-columns:repeat(2,1fr)}}.char-option,.car-option{background:var(--inset);border:1px solid var(--border);border-radius:14px;color:var(--muted);font:inherit;font-size:12px;font-weight:600;padding:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;transition:transform .15s,border-color .15s,background .15s}.char-option:hover,.car-option:hover{transform:translateY(-2px);background:#ffffff12}.char-option.selected,.car-option.selected{border-color:var(--accent);color:var(--accent);background:#ffcf4a14;box-shadow:0 0 0 1px var(--accent),0 8px 22px #ffcf4a26}.char-preview{width:54px;height:72px;object-fit:contain}.char-chip{width:24px;height:32px;object-fit:contain}.char-name{color:var(--muted);font-size:12px}.car-preview{width:100%;max-width:110px;aspect-ratio:16 / 10;object-fit:contain}.join-actions{display:flex;align-items:center;gap:24px;margin-top:12px}.join-with-code{display:flex;gap:8px}.room-code{font-size:46px;font-weight:800;letter-spacing:12px;color:var(--primary);background:#0000004d;border:1px dashed var(--border-strong);border-radius:14px;padding:8px 24px 8px 36px}.player-list{width:100%;display:flex;flex-direction:column;gap:6px;margin:12px 0}.player-row{display:flex;align-items:center;gap:10px;background:var(--inset);border:1px solid var(--border);border-radius:12px;padding:6px 14px;font-size:15px}.host-tag{color:#2a1e00;background:var(--accent);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:800;margin-left:auto}.me-tag{color:var(--muted);font-size:12px}.track-selector{display:flex;align-items:center;gap:14px}.track-info{display:flex;flex-direction:column;align-items:center;gap:6px}.track-preview{border:1px solid var(--border);border-radius:12px}.track-name{font-size:15px;font-weight:700;color:var(--accent)}.track-count{color:var(--muted);font-size:12px;font-weight:500}.race-screen{width:100vw;height:100vh;display:flex;align-items:stretch;gap:14px;padding:14px;box-sizing:border-box}.race-view{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:center}.race-frame{position:relative;width:min(100%,calc((100vh - 28px)*1.6));aspect-ratio:16 / 10;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--border)}.game-canvas{display:block;width:100%;height:100%}.race-side{flex:0 0 260px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}.side-card,.hud-card{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column}.side-card{padding:10px 12px 12px;gap:8px}.side-title{font-size:11px;font-weight:700;letter-spacing:1.5px;color:var(--muted)}.camera-btn{margin-top:auto}.hud{display:grid;grid-template-columns:1fr 1fr;gap:8px}.hud-card{padding:8px 10px;gap:4px}.hud-label{font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--muted)}.hud-value{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.hud-position{grid-column:span 2;flex-direction:row;align-items:center;justify-content:space-between;border-color:#ffcf4a73;background:linear-gradient(135deg,rgba(255,207,74,.14),var(--panel) 60%)}.hud-big{font-size:40px;font-weight:900;font-style:italic;color:var(--accent);line-height:1}.hud-big small{font-size:16px;font-weight:600;font-style:normal;color:var(--muted)}.hud-speed{color:var(--primary)}.hud-card:last-child{grid-column:span 2}.lap-pips{display:flex;gap:4px}.lap-pip{flex:1;height:6px;border-radius:999px;background:#ffffff1a}.lap-pip.current{background:var(--accent);animation:blink 1.2s ease-in-out infinite}.lap-pip.done{background:var(--primary)}.speed-bar{height:6px;border-radius:999px;overflow:hidden;background:#ffffff1a}.speed-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--primary),var(--accent) 70%,var(--danger));transition:width .12s linear}.leaderboard{display:flex;flex-direction:column;gap:4px}.lb-row{display:flex;align-items:center;gap:8px;background:var(--inset);border:1px solid var(--border);border-radius:8px;padding:4px 8px;font-size:13px}.lb-row.lb-me,tr.lb-me{border-color:#ffcf4a80;color:var(--accent)}.lb-pos{width:16px;color:var(--muted);font-weight:700}.lb-lap{margin-left:auto;color:var(--muted);font-size:11px}.lb-chip{display:inline-block;width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 2px #0006;margin-right:4px}.minimap{align-self:center;border-radius:8px}.countdown{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%);font-size:130px;font-weight:900;font-style:italic;color:var(--accent);text-shadow:0 8px 30px rgba(0,0,0,.5);pointer-events:none;animation:pop .9s ease-out both}.countdown.go{color:var(--primary)}@keyframes pop{0%{transform:translate(-50%,-50%) scale(2.2);opacity:0}25%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(.9);opacity:.9}}.lap-banner,.finished-banner{position:absolute;left:50%;transform:translate(-50%);background:#0f111abf;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:999px;box-shadow:var(--shadow-sm);pointer-events:none;white-space:nowrap}.lap-banner{top:14%;border:1px solid rgba(255,207,74,.6);color:var(--accent);padding:10px 30px;font-size:26px;font-weight:800;letter-spacing:2px;animation:slide-in .3s ease-out}@keyframes slide-in{0%{transform:translate(-50%,-40px);opacity:0}}.slip-warning{position:absolute;bottom:18%;left:50%;transform:translate(-50%);color:#9fd4ff;font-size:18px;font-weight:800;letter-spacing:2px;text-shadow:0 2px 10px rgba(0,0,0,.7);pointer-events:none;animation:blink .7s ease-in-out infinite}.finished-banner{bottom:40px;border:1px solid rgba(61,220,132,.6);color:var(--primary);padding:12px 26px;font-size:18px;font-weight:700}@media(max-width:760px){.race-screen{flex-direction:column}.race-side{flex:0 0 auto}}.podium-frame{position:relative;width:720px;max-width:100%;aspect-ratio:16 / 9;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow);flex-shrink:0}.podium-canvas{display:block;width:100%;height:100%}.results-char{display:inline-block;vertical-align:middle;margin-right:6px}.results-char-img{display:block;width:21px;height:28px;object-fit:contain}.dance-hint{font-size:12px;color:var(--muted)}.podium-frame .dance-hint{position:absolute;right:10px;bottom:10px;background:#0f111ab3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:6px 10px;border:1px solid var(--border);border-radius:10px}.dance-hint kbd{display:inline-block;font:inherit;font-weight:700;color:#14141a;background:var(--text);border-radius:5px;box-shadow:0 2px #0006;padding:0 6px;margin-right:4px}.dance-hint .walk-hint{margin-left:10px;color:var(--muted)}.dance-hint.on{color:var(--accent);animation:dance-blink .8s ease-in-out infinite}@keyframes dance-blink{50%{opacity:.6}}.char-showcase{display:flex;align-items:center;gap:14px;background:var(--inset);border:1px solid var(--border);border-radius:14px;padding:4px 18px 4px 4px}.char-3d-canvas{width:90px;height:120px}.char-showcase-info{display:flex;flex-direction:column;gap:8px;min-width:150px}.char-showcase-info strong{color:var(--accent);font-size:17px;font-weight:800}.results-table{border-collapse:separate;border-spacing:0;font-size:15px;margin:12px 0;border:1px solid var(--border);border-radius:12px;overflow:hidden}.results-table th,.results-table td{border-bottom:1px solid var(--border);padding:8px 16px;text-align:left;vertical-align:middle;font-variant-numeric:tabular-nums}.results-table tr:last-child td{border-bottom:none}.results-table th{background:var(--inset);color:var(--muted);font-size:11px;font-weight:700;letter-spacing:1.5px}.dnf{color:var(--muted);font-size:12px;margin-left:4px}.auth-tabs{display:flex;gap:10px}.auth-form{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}.auth-form .btn{margin-top:8px}.session-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;font-size:14px}.track-ranking{width:100%;display:flex;flex-direction:column;align-items:center}.ranking-table{width:100%;font-size:13px;margin:6px 0 0;font-variant-numeric:tabular-nums}.ranking-table td{padding:4px 10px}.lobby-canvas{display:block;width:100%;height:100%}.lobby-room-code{font-size:34px;letter-spacing:8px;padding:6px 12px 6px 20px;text-align:center}.lobby-player-list{margin:0}.lobby-player-list .player-row{padding:4px 10px;font-size:14px}.lobby-player-name{display:flex;flex-direction:column;line-height:1.2;min-width:0}.lobby-player-name .char-name{font-size:11px}.lobby-leave{margin-top:auto}.lobby-code-chip,.lobby-prompt,.lobby-frame .dance-hint{position:absolute;background:#0f111ab8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:10px}.lobby-code-chip{top:12px;left:12px;padding:6px 12px;font-size:12px;letter-spacing:1.5px;color:var(--muted)}.lobby-code-chip strong{color:var(--primary);letter-spacing:3px;margin-left:4px}.lobby-frame .dance-hint{right:12px;bottom:12px;padding:6px 10px}.lobby-prompt{left:50%;bottom:56px;transform:translate(-50%);padding:10px 18px;font:inherit;font-size:15px;font-weight:700;color:var(--text);border-color:#3ddc848c;box-shadow:0 0 24px #3ddc8440;cursor:pointer;animation:prompt-in .25s ease-out}.lobby-prompt kbd{display:inline-block;font:inherit;color:#14141a;background:var(--primary);border-radius:5px;padding:0 7px;margin-right:6px}@keyframes prompt-in{0%{opacity:0;transform:translate(-50%,8px)}}.lobby-panel{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(440px,calc(100% - 32px));max-height:calc(100% - 32px);overflow-y:auto;display:flex;flex-direction:column;align-items:center;gap:12px;padding:22px 24px;background:var(--panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);animation:panel-in .2s ease-out}@keyframes panel-in{0%{opacity:0;transform:translate(-50%,-46%)}}.lobby-panel .subtitle{text-align:center}.lobby-panel-title{font-size:20px;font-weight:800;color:var(--accent)}.lobby-panel-close{position:absolute;top:10px;right:10px;width:30px;height:30px;border-radius:999px;border:1px solid var(--border);background:var(--inset);color:var(--muted);font:inherit;cursor:pointer}.lobby-panel-close:hover{color:var(--text)}.minigame-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}.minigame-slot{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;border:1px dashed var(--border-strong);border-radius:12px;background:var(--inset);color:var(--muted);font-size:12px}.minigame-icon{font-size:26px;font-weight:800;color:var(--border-strong)}.minigame-slot.playable{font:inherit;font-size:13px;color:var(--text);border:1px solid rgba(61,220,132,.5);background:#3ddc8414;cursor:pointer;transition:transform .15s,background .15s}.minigame-slot.playable:hover{transform:translateY(-2px);background:#3ddc8429}.minigame-slot.playable .minigame-icon{color:var(--primary)}.minigame-slot small{font-size:11px;color:var(--muted)}.ttt{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%}.ttt-seats{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}.ttt-seat{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--border);border-radius:10px;background:var(--inset);font-size:13px;min-width:0;transition:border-color .2s,box-shadow .2s}.ttt-seat.active{border-color:currentColor;box-shadow:0 0 14px #ffffff1f}.ttt-seat-mark{font-weight:900;font-size:18px}.ttt-seat-name{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ttt-x{color:#ff6b6b}.ttt-o{color:#5ab0ff}.ttt-board{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:min(240px,100%);aspect-ratio:1}.ttt-cell{font:inherit;font-size:44px;font-weight:900;border:1px solid var(--border);border-radius:12px;background:#00000040;cursor:default;transition:background .15s,transform .15s}.ttt-board.playable .ttt-cell:not(:disabled){cursor:pointer}.ttt-board.playable .ttt-cell:not(:disabled):hover{background:#ffffff14}.ttt-cell.ttt-x,.ttt-cell.ttt-o{animation:ttt-pop .2s ease-out}.ttt-cell.win{background:#ffcf4a33;border-color:var(--accent)}@keyframes ttt-pop{0%{transform:scale(.6);opacity:0}}.ttt-status{font-size:15px;font-weight:700;color:var(--muted)}.ttt-status.mine{color:var(--primary)}.ttt-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
