@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700;800;900&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#0a1224;--panel:#121e34;--line:#29364e;--muted:#9eafc6;--cyan:#6ce5f4;--yellow:#f8df57;--white:#eff6ff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--white);font-family:'Space Grotesk','Noto Sans JP',sans-serif;font-size:16px}button,input,select{font:inherit}button{cursor:pointer;border:1px solid var(--line);color:var(--white);background:#1c2a42;border-radius:9px;padding:11px 17px;font-weight:700;transition:background .15s,transform .15s}button:hover:enabled{background:#2a3b55;transform:translateY(-1px)}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}button.primary{background:var(--yellow);color:#142032;border-color:var(--yellow)}button.primary:hover:enabled{background:#ffeb83}.shell{max-width:1400px;margin:auto;padding:28px 48px 16px}.header{display:flex;justify-content:space-between;align-items:center;padding-bottom:27px;border-bottom:1px solid var(--line);gap:12px}.brand{display:flex;align-items:center;gap:16px}.brandmark{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border:1px solid #506071;border-radius:13px;font-size:27px;letter-spacing:-7px;padding-right:7px;font-weight:700;color:var(--cyan);transform:skew(-7deg)}.brandmark span{color:var(--yellow)}.eyebrow{font-size:12px;font-weight:700;letter-spacing:2px;margin:0 0 5px}.eyebrow span{color:#8193af;letter-spacing:1px;margin-left:7px}h1{font-size:23px;margin:0;font-weight:800;letter-spacing:.01em}.roomtag{font-size:12px;font-weight:500;color:var(--muted);background:#17243b;padding:4px 7px;border-radius:4px;vertical-align:middle;margin-left:12px}.invite{min-height:46px}.sectionline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px}.sectionline h2{font-size:15px;margin:0;font-weight:700}.sectionline h2>span:not(.badge){font-size:13px;color:var(--muted);font-weight:500;margin-left:10px}.sectionline>span{font-size:12px;color:var(--muted)}.members-section{padding:23px 0}.connection{display:flex;align-items:center;gap:7px}.connection:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--muted)}.connection.live:before{background:var(--cyan)}.members{display:flex;gap:10px;overflow-x:auto;padding:2px 1px 5px}.empty-member{width:100%;border:1px dashed #35445e;border-radius:12px;padding:13px 18px;display:flex;align-items:center;gap:13px;color:#c2cede;font-size:14px}.empty-member small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.empty-avatar{height:40px;width:40px;display:grid;place-items:center;background:#18263d;border-radius:50%;font-size:23px;color:var(--cyan)}.member{min-width:180px;flex:1;border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:12px;display:flex;align-items:center;gap:10px}.member.me{border-color:#457d89}.avatar{font-size:27px;display:grid;place-items:center;min-width:42px;height:42px;border-radius:50%;background:#26334b}.member b{font-size:14px;display:block;max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member small{font-size:12px;color:var(--muted);display:block;margin-top:3px}.member.ready small{color:var(--cyan)}.game-heading{margin-bottom:16px}.cyan{color:var(--cyan)}.game-heading h2{font-size:22px}.badge{display:inline-block;color:var(--yellow);background:#f8df5714;border:1px solid #f8df5740;font-size:10px;letter-spacing:1px;padding:3px 7px;vertical-align:middle;margin-left:12px;border-radius:4px}.timer{font-size:27px!important;color:var(--white)!important;letter-spacing:2px;font-variant-numeric:tabular-nums}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px}.arena{position:relative;min-height:375px;overflow:hidden;border:1px solid #3a5369;border-radius:14px;background:#101f33}.arena canvas{width:100%;height:100%;display:block;object-fit:contain;position:absolute;inset:0}.arena-corner,.arena-bottom{position:absolute;left:21px;right:21px;display:flex;justify-content:space-between;font-size:11px;letter-spacing:1px;color:#93afc6;pointer-events:none}.arena-corner{top:17px}.arena-corner span{color:var(--cyan)}.arena-bottom{bottom:17px;letter-spacing:0;font-size:12px}kbd{font:11px 'Space Grotesk',sans-serif;background:#23364b;padding:4px 6px;border-radius:4px;color:#b5c6da}.arena-message{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;pointer-events:none;background:radial-gradient(ellipse,#0b182ccc,transparent 70%);padding:20px}.arena-message h3{font-size:25px;margin:12px 0 8px;font-weight:800}.arena-message p{font-size:13px;color:#aabbcf;margin:0}.arena-icon{font-size:33px;color:var(--yellow);width:70px;height:70px;display:grid;place-items:center;border:1px solid #8d8541;border-radius:20px;background:#e8d5490b;transform:rotate(-8deg)}.pit{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:21px}.pit h3{font-size:20px;margin:9px 0 18px}.pit label{display:block;font-size:12px;margin:14px 0 7px;font-weight:600}.pit label span{color:var(--muted);font-weight:400;font-size:11px;margin-left:8px}input,select{background:#0b1629;border:1px solid #34435a;border-radius:7px;color:var(--white);padding:11px 12px;min-width:0;width:100%;font-size:14px}input::placeholder{color:#7d91ac}select{padding:10px 8px}.avatar-options{display:flex;gap:6px}.avatar-options button{padding:6px 0;flex:1;font-size:23px;border-radius:8px;background:#203047}.avatar-options button.selected,.role-buttons .selected{border-color:var(--cyan);background:#6ce5f419;box-shadow:inset 0 0 0 1px var(--cyan)}.skill-description{font-size:11px;line-height:1.6;min-height:18px;color:var(--muted);margin:7px 0 17px}.full{width:100%}.full span{float:right}.micro{color:var(--muted);font-size:11px;text-align:center;line-height:1.7;margin:10px 0 0}.voice{display:flex;justify-content:space-between;gap:15px;align-items:center;background:#13263a;border:1px solid #2e5365;border-radius:12px;padding:17px 21px;margin:18px 0 22px}.voice-title{display:flex;align-items:center;gap:14px}.voice-icon{color:var(--cyan);font-size:27px}.voice h2{font-size:15px;margin:0 0 5px}.voice h2 span{font-size:11px;color:var(--muted);margin-left:9px;font-weight:400}.voice p{font-size:12px;color:var(--muted);margin:0}.voice-buttons{display:flex;gap:7px;flex-shrink:0}.voice-buttons button{font-size:12px;padding:10px 12px}.voice-buttons button:first-child{color:var(--cyan);border-color:#427787;background:#214052}.chat-section{border:1px solid var(--line);border-radius:12px;padding:17px 20px;background:#101b30}.chat-section .sectionline{margin-bottom:10px}.messages{height:94px;overflow-y:auto;overflow-wrap:anywhere;padding:2px 0 9px}.chat-empty{color:var(--muted);font-size:13px;padding:15px 0}.message{display:flex;align-items:baseline;gap:9px;margin:8px 0;font-size:13px}.message .sender{font-weight:700;color:#bfe9f1;white-space:nowrap}.message time{color:#7185a0;font-size:10px}.message.system{color:#a0b6cc;font-size:12px}.chat-form{display:flex;gap:10px;border-top:1px solid #24334b;padding-top:12px}.chat-form input{background:#17243b;border-color:transparent}.chat-form button{color:var(--cyan);background:#243b50;border-color:#324f65;white-space:nowrap;font-size:13px}footer{font-size:10px;letter-spacing:1px;display:flex;justify-content:space-between;color:#687e9b;padding:19px 0 0}footer i{font-style:normal;color:var(--cyan);margin:0 9px;font-size:7px}.lobby-copy{color:var(--muted);font-size:14px;line-height:1.7}.role-buttons{display:flex;gap:7px;margin:17px 0}.role-buttons button{padding:10px 7px;flex:1;font-size:12px}.start{margin-top:10px;color:var(--cyan);border-color:#3a6a77}.rules{border-top:1px solid var(--line);margin-top:22px;padding-top:18px;font-size:13px;line-height:1.8}.rules p{font-size:12px;color:var(--muted);margin:7px 0}.text-button{border:0;background:transparent;color:var(--muted);font-size:12px;padding:10px 0}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#e4f8ff;color:#10233b;padding:14px 22px;border-radius:12px;box-shadow:0 10px 45px #0008;max-width:90%;z-index:10;font-size:14px}.touch{position:absolute;bottom:12px;left:12px;right:12px;display:none;justify-content:space-between;align-items:end}.dpad{display:grid;grid-template-columns:repeat(3,40px);gap:3px}.dpad button{padding:8px;touch-action:none;background:#142d46d9}.dpad button:first-child{grid-column:2}.dpad button:nth-child(2){grid-column:1;grid-row:2}.dpad button:nth-child(3){grid-column:2;grid-row:2}.dpad button:nth-child(4){grid-column:3;grid-row:2}.skill-touch{touch-action:none;width:65px;height:65px;padding:7px;background:#594f27df;border-color:#aa9945;font-size:25px}.skill-touch small{display:block;font-size:10px;color:var(--yellow)}[hidden]{display:none!important}
@media(min-width:1450px){.arena{min-height:430px}.messages{height:105px}}@media(max-width:900px){.shell{padding:22px}.game-layout{grid-template-columns:minmax(0,1fr) 265px}.brandmark{display:none}.roomtag{display:none}.voice{align-items:flex-start;flex-direction:column}.voice-buttons{width:100%}.voice-buttons button{flex:1}.arena-bottom{display:none}.touch:not([hidden]){display:flex}.eyebrow span{display:none}}
@media(max-width:650px){.shell{padding:17px 15px 12px}.header{padding-bottom:17px}.eyebrow{font-size:10px;letter-spacing:1.5px}h1{font-size:18px}.invite{font-size:12px;padding:10px 11px;min-height:41px}.members-section{padding:17px 0 13px}.sectionline h2{font-size:13px}.sectionline>span{font-size:10px}.connection{max-width:135px}.empty-member{padding:10px 12px;font-size:12px}.empty-member small{font-size:10px}.member{min-width:155px;padding:10px}.game-heading{margin-bottom:10px}.game-heading h2{font-size:18px}.badge{margin-left:5px;font-size:8px;padding:3px 5px}.timer{font-size:21px!important}.game-layout{grid-template-columns:1fr;gap:10px}.arena{min-height:245px}.arena-message h3{font-size:20px}.arena-message p{font-size:11px}.arena-icon{width:49px;height:49px;font-size:26px;border-radius:14px}.arena-corner{left:12px;right:12px;top:12px;font-size:9px}.pit{padding:16px}.pit h3{font-size:18px;margin:6px 0 10px}.pit label{margin-top:11px}.avatar-options button{font-size:22px}.skill-description{margin-bottom:12px}.voice{margin:12px 0;padding:13px;gap:11px}.voice h2{font-size:14px}.voice p{font-size:11px}.voice-icon{font-size:23px}.voice-buttons button{font-size:11px;padding:10px 7px}.chat-section{padding:13px}.messages{height:110px}.chat-form{gap:7px}.chat-form input{font-size:13px}.chat-form button{padding:10px}.message{font-size:12px;flex-wrap:wrap;gap:5px}.message .body{flex-basis:100%;padding-left:25px}footer{font-size:8px;letter-spacing:.7px}footer>span:last-child{display:none}.rules{margin-top:13px;padding-top:12px}.rules p{margin:5px 0}.role-buttons{margin:10px 0}.lobby-copy{font-size:12px;margin:6px 0}.touch:not([hidden]){display:flex}}

.practice-button{margin-top:15px;color:var(--cyan);border-color:#467e8c;background:#18394b}.practice-score{font-size:30px;font-weight:700;color:var(--yellow);margin:18px 0 8px}#practiceSkill{font-size:14px;color:var(--cyan)}.practicing .touch:not([hidden]){display:flex}.practicing .arena-bottom{display:none}#practicePanel .rules{margin-bottom:20px}#practicePanel .text-button{width:100%;margin-top:8px}

.arena{min-height:410px}.dpad{grid-template-columns:repeat(3,52px)}.dpad button{font-size:12px;min-height:42px}.dpad button:first-child{grid-column:1 / 4;background:#f8df57;color:#182539;min-height:42px}.dpad button:nth-child(2){grid-row:2}.dpad button:nth-child(3){grid-row:2}.dpad button:nth-child(4){grid-row:2}.practicing .arena{min-height:410px}@media(max-width:650px){.arena,.practicing .arena{min-height:320px}.arena canvas{height:240px;top:15px}.touch{bottom:7px}.dpad{grid-template-columns:repeat(3,42px)}.dpad button{min-height:35px;padding:6px}.dpad button:first-child{min-height:35px}.arena-corner{font-size:9px}.practice-score{margin:8px 0}.pit .rules{margin-top:10px}}

.solo-entry{display:flex;justify-content:space-between;gap:12px;padding:16px 20px;margin-top:18px;background:#f8df57;color:#142032;font-weight:700;border-radius:10px;text-decoration:none}.solo-entry span{font-size:13px}.practicing .solo-entry{display:none}@media(max-width:650px){.solo-entry{padding:14px 12px;font-size:14px}.solo-entry span{font-size:11px}}

.view-controls{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:14px}.view-controls button{padding:9px 13px;font-size:14px}.view-controls button[aria-pressed="true"]{color:#102539;background:var(--cyan);border-color:var(--cyan)}.view-controls small{color:var(--muted);margin-left:auto;font-size:12px}.touch{justify-content:flex-start;gap:10px}.dpad{grid-template-columns:repeat(3,56px)}.dpad button:first-child small{display:block;font-size:10px;margin-top:4px}.dpad button:first-child{min-height:55px}.skill-touch{width:65px;height:65px;margin-bottom:3px}@media(max-width:650px){.view-controls{flex-wrap:wrap;gap:6px}.view-controls button{padding:9px;font-size:13px}.view-controls small{display:none}.dpad{grid-template-columns:repeat(3,50px)}.dpad button:first-child{min-height:51px}.arena,.practicing .arena{min-height:345px}.touch{gap:9px}}

.course-picker{margin:0 0 18px}.course-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.course-cards button{text-align:left;padding:10px;min-width:0}.course-cards button[aria-pressed="true"]{border-color:var(--cyan);box-shadow:inset 0 0 0 1px var(--cyan);background:#1d3849}.course-cards canvas{width:100%;height:80px;object-fit:contain;border-radius:7px;background:#0e2330}.course-cards strong{display:block;font-size:14px;margin:8px 0 5px}.course-cards small{display:block;font-size:12px;color:var(--muted);line-height:1.6}#courseHint{font-size:12px}@media(max-width:650px){.course-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.course-cards canvas{height:55px}.course-cards button{padding:8px}.course-cards strong{font-size:12px}.course-cards small{font-size:11px}.course-picker .sectionline{align-items:flex-start;flex-direction:column;gap:5px}}

.course-cards{grid-template-columns:repeat(5,minmax(0,1fr))}@media(max-width:1100px) and (min-width:651px){.course-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:650px){.course-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}

@media(min-width:1101px){.course-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.course-cards canvas{height:65px}}
/* Thumb controls: full pad capture supports diagonal input and two thumbs. */
.touch{justify-content:space-between;align-items:flex-end;left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));pointer-events:none}
.touch>*{pointer-events:auto}.dpad{position:relative;display:block;width:150px;height:150px;border:3px solid #238aff;border-radius:50%;background:#101b32bb;touch-action:none;user-select:none;-webkit-user-select:none}.dpad:before{content:'';position:absolute;inset:27%;border-radius:50%;background:#283b57}
.dpad button{position:absolute;width:42px;height:42px;min-height:0!important;padding:0!important;background:#238aff!important;color:white!important;border:0;border-radius:9px;font-size:18px;touch-action:none;transform:none!important;line-height:1}
.dpad button span{position:absolute;font-size:11px;font-weight:800;color:#e6f2ff}.dpad button[data-key=up]{left:51px;top:14px}.dpad button[data-key=up] span{top:-12px;left:16px}.dpad button[data-key=down]{left:51px;bottom:14px}.dpad button[data-key=down] span{bottom:-12px;left:16px}.dpad button[data-key=left]{left:14px;top:51px}.dpad button[data-key=left] span{left:-11px;top:15px}.dpad button[data-key=right]{right:14px;top:51px}.dpad button[data-key=right] span{right:-12px;top:15px}.dpad button.held{background:#72e5ff!important;box-shadow:0 0 18px #238aff;color:#10243b!important}
.skill-touch{width:82px;height:82px;border-radius:50%;border:3px solid #f8df57;background:#403e28e8;font-size:32px;margin:0;user-select:none}.skill-touch small{font-size:12px}.race-menu{display:none}.arena{min-height:460px}.practicing .arena{min-height:460px}
@media(max-width:650px){.arena,.practicing .arena{min-height:380px}.arena canvas{height:100%;top:0}.dpad{width:140px;height:140px;transform:scale(.9);transform-origin:bottom left}.dpad button[data-key=up],.dpad button[data-key=down]{left:46px}.dpad button[data-key=left],.dpad button[data-key=right]{top:46px}.skill-touch{width:72px;height:72px}}
@media(orientation:landscape) and (max-height:600px) and (max-width:1100px){
body.race-playing:not(.garage-open){overflow:hidden}
.race-playing:not(.garage-open) .arena,.race-playing:not(.garage-open).practicing .arena{position:fixed;inset:0;width:100%;height:100dvh;min-height:0;border:0;border-radius:0;z-index:30;background:#101f33}
.race-playing:not(.garage-open) .arena canvas{width:100%;height:100%;top:0;object-fit:contain}
.race-playing:not(.garage-open) .touch:not([hidden]){display:flex}
.race-playing:not(.garage-open) .arena-bottom{display:none}
.race-playing:not(.garage-open) .race-menu{display:block;position:fixed;top:max(8px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));padding:8px 12px;background:#10243bdd;font-size:12px}
.race-playing:not(.garage-open) .arena-corner{right:150px;top:12px;font-size:10px}
.toast{z-index:50}.dpad{width:150px;height:150px}.dpad button[data-key=up],.dpad button[data-key=down]{left:51px}.dpad button[data-key=left],.dpad button[data-key=right]{top:51px}
}
/* Split mobile controls: steering on left, pedals and skill on right. */
.steering-buttons{display:flex;gap:10px;align-items:flex-end}.steering-buttons button,.pedal-row button{width:68px;height:70px;padding:8px;border:2px solid #409aff;border-radius:16px;background:#163c66e8;color:#eaf7ff;font-size:26px;touch-action:none;user-select:none;-webkit-user-select:none;transform:none!important}
.steering-buttons small,.pedal-row small{display:block;font-size:12px;margin-top:3px}.pedal-controls{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.pedal-row{display:flex;gap:10px}.pedal-row .accelerator-touch{background:#f8df57;color:#15233a;border-color:#ffef94}.pedal-row .brake-touch{background:#582c3ce8;border-color:#ff9393;color:#ffe4e4}.pedal-controls .skill-touch{width:60px;height:60px;font-size:23px}.pedal-controls .skill-touch small{font-size:10px}.touch .held{box-shadow:0 0 0 3px #fff9,0 0 18px #6ce5f4;filter:brightness(1.25)}
@media(max-width:650px) and (orientation:portrait){.steering-buttons,.pedal-row{gap:6px}.steering-buttons button,.pedal-row button{width:60px;height:64px}.touch{left:10px;right:10px}.pedal-controls{gap:7px}}
