:root{--race-yellow:#f5ce47;--race-slate:#203542;--race-ink:#132934;--race-paper:#edf1ef}.service-menu{background:var(--race-paper);color:var(--race-ink);overflow:auto}.service-menu #view,.service-menu #hud,.service-menu #info,.service-menu #help,.play-mode #hud,.play-mode #info,.play-mode #help{display:none}#service{box-sizing:border-box;flex-direction:column;max-width:1440px;min-height:100vh;margin:auto;padding:28px 5vw 20px;display:flex}#service button,#service a,#service input{-webkit-tap-highlight-color:transparent}#service button{font:inherit;cursor:pointer}#service a{color:inherit}:is(#service,#play-hud) :focus-visible{outline-offset:4px;outline:3px solid #e0a82e}.service-header{border-bottom:1px solid #b9c7cb;justify-content:space-between;align-items:center;padding-bottom:18px;display:flex}.wordmark{align-items:center;gap:10px;font-size:20px;font-style:italic;font-weight:750;text-decoration:none;display:flex}.wordmark img{width:34px;height:34px}.wordmark b{color:#907005;font-style:normal}.version{color:#536c79;font-size:12px}.service-content{flex:1;grid-template-columns:minmax(0,1.25fr) minmax(320px,.8fr);align-items:center;gap:6%;padding:26px 0;display:grid}.garage{flex-direction:column;align-self:stretch;display:flex;position:relative}.garage h1{letter-spacing:-.045em;margin:14px 0 0;font-family:Arial Narrow,Impact,sans-serif;font-weight:900;line-height:.92}.garage h1 span{font-size:clamp(40px,5.8vw,78px);font-style:italic;display:block}.garage h1 small{letter-spacing:-.04em;margin-top:12px;font-family:Avenir Next,Apple SD Gothic Neo,sans-serif;font-size:clamp(19px,2.25vw,32px);font-weight:600;display:block}.intro{color:#506773;margin:22px 0 0;font-size:15px}.garage-model{flex:1;height:320px;min-height:240px;margin:12px -30px 0 -25px;position:relative}#menu-car{cursor:grab;width:100%;height:100%;display:block}.car-caption{border-left:4px solid #d8ab1d;flex-direction:column;gap:2px;padding-left:12px;display:flex}.car-caption span{letter-spacing:.07em;font-size:16px;font-weight:750}.car-caption small{color:#6b818d;font-size:11px}.garage-note{color:#5b717e;margin:16px 0 0;font-size:13px;line-height:1.7}.race-setup{border-top:5px solid var(--race-yellow);background:#fff;padding:25px 28px;box-shadow:0 7px 30px #27475912}.race-setup h2{letter-spacing:-.035em;margin:0 0 20px;font-size:22px}.race-setup fieldset{border:0;margin:0 0 17px;padding:0}.race-setup legend{color:#5c7482;margin-bottom:6px;padding:0;font-size:12px;font-weight:650}.single-choice{cursor:pointer;background:#eef3f4;border:1px solid #cdd9dc;align-items:center;gap:10px;padding:10px 13px;display:flex}.single-choice input{accent-color:#947411}.single-choice>span{flex-direction:column;flex:1;gap:2px;display:flex}.single-choice strong{font-size:14px;font-weight:650}.single-choice small{color:#637b88;font-size:10px;font-weight:400}.single-choice b{color:#907005}.segmented{gap:6px;display:flex}.segmented label{cursor:pointer;flex:1;position:relative}.segmented input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute}.segmented span{background:#f1f4f3;border:1px solid #ced9db;justify-content:center;align-items:baseline;gap:5px;padding:9px;font-weight:650;display:flex}.segmented input:checked+span{color:#f7f7e9;background:#203542;border-color:#355869}.segmented input:focus-visible+span{outline-offset:2px;outline:3px solid #d4a82f}.laps span{font-size:22px}.laps small{font-size:11px}.time span{padding:10px;font-size:13px}.night-note{color:#71818a;min-height:35px;margin:7px 0 0;font-size:11px;line-height:1.6}.night-note.warning{color:#886609}.menu-record{border-top:1px solid #dfe6e7;justify-content:space-between;align-items:center;gap:8px;padding:13px 0;display:flex}.menu-record div{flex-direction:column;gap:2px;font-size:12px;display:flex}.record-condition{color:#6d818b;font-size:9px}.record-value{font-variant-numeric:tabular-nums;letter-spacing:-.06em;font-family:Avenir Next,sans-serif;font-size:23px}.start-button{background:var(--race-yellow);color:#203542;text-align:left;border:0;align-items:center;gap:12px;width:100%;padding:15px 18px;display:flex;font-size:25px!important;font-style:italic!important;font-weight:850!important}.start-button span{font-size:12px;font-style:normal;font-weight:500}.start-button i{margin-left:auto;font-size:18px}.start-button:hover{background:#ffe075}.record-note{text-align:center;color:#728690;margin:10px 0 0;font-size:9px;line-height:1.5}.service-footer{color:#6c808a;border-top:1px solid #c6d3d7;justify-content:space-between;padding-top:15px;font-size:10px;display:flex}#play-hud{color:#f4f7f4;pointer-events:none;font-family:Avenir Next,Apple SD Gothic Neo,sans-serif;position:fixed;inset:0}#play-hud button,#play-hud a{pointer-events:auto}#play-hud [hidden]{display:none!important}.lap-clock{text-align:center;border-top:3px solid var(--race-yellow);background:#162c3ddd;min-width:145px;padding:10px 25px;position:absolute;top:25px;left:50%;transform:translate(-50%);box-shadow:0 5px 18px #0003}.lap-label{letter-spacing:.15em;color:#c2d4dd;font-size:11px;display:block}.lap-time{letter-spacing:.04em;font-variant-numeric:tabular-nums;font-size:32px;line-height:1.4;display:block}.lap-clock small{color:#b0c9d6;font-size:9px}.lap-clock b{margin-left:6px;font-weight:500}.play-home{color:#d8e4e8;background:#162c3dc4;border:1px solid #6b828b6b;padding:7px 16px;font-size:11px;text-decoration:none;position:absolute;top:20px;right:24px}.map-hud{text-align:center;position:absolute;bottom:20px;left:24px}.minimap{width:172px;height:172px;display:block}.map-hud>span{text-shadow:0 1px 3px #000;margin-top:3px;font-size:12px;display:block}.map-hud small{color:#b8c9d5;margin-left:8px;font-size:9px}.gauge-hud{border-bottom:3px solid var(--race-yellow);background:#132b3ce0;width:234px;padding:15px 18px 10px;position:absolute;bottom:25px;right:28px;transform:skew(-5deg)}.gauge-hud>div{transform:skew(5deg)}.rpm-label{color:#b5ccd9;justify-content:space-between;align-items:center;font-size:10px;display:flex}.rpm-value{font-variant-numeric:tabular-nums;color:#f1f6ed;font-size:13px}.rpm-track{gap:3px;height:6px;margin:7px 0 5px;display:flex;position:relative;overflow:hidden}.rpm-track i{z-index:1;background:#556e7a;border-left:3px solid #132b3c;flex:1}.rpm-fill{background:var(--race-yellow);z-index:2;opacity:.95;width:0;position:absolute;inset:0 auto 0 0}.speed-row{justify-content:space-between;align-items:end;gap:20px;display:flex}.gear-box{border-right:1px solid #69808e;padding-bottom:6px;padding-right:18px}.gear-box small{color:#a8bfca;font-size:9px;display:block}.gear-value{text-align:center;color:#f5ce47;font-size:39px;line-height:1;display:block}.speed-box{align-items:baseline;gap:7px;display:flex}.speed-value{letter-spacing:-.055em;font-variant-numeric:tabular-nums;font-size:67px;font-weight:750;line-height:1.1}.speed-box small{color:#b5c9d3;font-size:9px}.play-controls{text-align:center;color:#d3dee2;text-shadow:0 1px 3px #000;font-size:10px;position:absolute;bottom:30px;left:50%;transform:translate(-50%)}.play-controls>div{justify-content:center;gap:10px;display:flex}.play-controls button{color:#d2e2ea;font:inherit;cursor:pointer;background:#162e3dc9;border:1px solid #708c9959;padding:7px 10px}.play-controls b{color:var(--race-yellow);margin-left:4px;font-size:8px;font-weight:400}.play-controls p{justify-content:center;gap:14px;margin:9px 0 0;display:flex}#play-hud kbd{color:#f4f3dc;font:inherit;border:1px solid #8ea4af;margin-right:4px;padding:1px 4px;display:inline-block}.start-prompt{text-align:center;border-top:3px solid var(--race-yellow);background:#182f40ed;min-width:300px;max-width:calc(100vw - 100px);padding:26px 32px;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 40px #0005}.start-prompt p{color:#f2d354;margin:0 0 12px;font-size:16px}.start-prompt p span{color:#b4cbd8;margin-left:8px;font-size:11px}.start-prompt h2{letter-spacing:-.04em;margin:0 0 22px;font-size:23px}.enter-start{color:#e6f0f3;font:inherit;cursor:pointer;background:0 0;border:1px solid #617f90;padding:11px 16px;font-size:13px}.start-prompt>small{color:#b4c5d0;margin-top:17px;font-size:10px;display:block}.play-count{object-fit:contain;width:200px;height:160px;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.play-warning{text-align:center;background:#852b28ee;padding:9px 20px;font-size:17px;font-weight:750;position:absolute;top:155px;left:50%;transform:translate(-50%)}.play-warning span{margin-top:3px;font-size:10px;font-weight:400;display:block}.record-toast{text-align:center;background:#193443df;border-top:3px solid #f5ce47;min-width:250px;padding:18px 35px;position:absolute;top:34%;left:50%;transform:translate(-50%,-50%)}.record-toast small{color:#f5ce47;font-size:16px;font-weight:700;display:block}.record-toast strong{font-variant-numeric:tabular-nums;margin:3px 0;font-size:42px;display:block}.record-toast span{font-size:13px;display:block}.record-toast em{color:#f2d354;margin-top:6px;font-size:9px;font-style:normal;display:block}.record-particles{position:absolute;top:25%;left:50%}.record-particles i{width:6px;height:10px;animation:2.3s ease-out both celebrate;position:absolute}@keyframes celebrate{0%{opacity:1;transform:translate(0)rotate(0)}to{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--spin))}}.race-results{top:45%}.race-results h2{margin-bottom:12px}.race-results ol{margin:0 0 15px;padding:0;list-style:none}.race-results li{border-bottom:1px solid #5e7a8845;align-items:baseline;gap:15px;padding:7px 0;font-size:12px;display:flex}.race-results li strong{font-variant-numeric:tabular-nums;margin-left:auto;font-size:20px}.race-results li small{color:#f5ce47;font-size:8px}.race-results a{color:#e2edf2;padding:10px 16px;font-size:12px;text-decoration:none;display:inline-block}.race-results .menu-link{color:#203542;background:#f5ce47;font-weight:700}#play-hud .race-results .menu-link kbd{color:inherit;border-color:#7d7439}.result-record{border-top:1px solid #5e7a8845;padding:10px 0 15px}.result-record small,.result-record strong,.result-record span,.result-record em{display:block}.result-record small{color:#f5ce47;font-size:12px}.result-record strong{font-size:24px}.result-record span{font-size:11px}.result-record em{font-size:9px;font-style:normal}@media (max-width:850px){#service{padding:20px 4vw}.service-content{grid-template-columns:minmax(0,1fr) 340px;gap:3%}.race-setup{padding:20px}.garage h1 span{font-size:46px}.garage-model{margin-left:-10px;margin-right:-10px}.gauge-hud{width:190px;right:15px}.speed-value{font-size:57px}.minimap{width:145px;height:145px}.map-hud{left:15px}.play-controls{bottom:22px}.play-controls button{padding:6px}.play-controls b{display:none}}@media (max-width:650px){.service-content{flex-direction:column;padding:20px 0;display:flex}.garage{width:100%}.garage h1 span{font-size:48px}.garage h1 small{font-size:21px}.intro{margin-top:15px}.garage-model{height:220px;min-height:220px}.garage-note{display:none}.race-setup{align-self:stretch;margin-top:24px}.car-caption{font-size:12px}.service-footer>span{font-size:8px}.lap-clock{min-width:130px;padding:7px 16px;top:12px}.lap-time{font-size:25px}.play-home{padding:5px 10px;top:12px;right:10px}.minimap{width:110px;height:110px}.map-hud{bottom:67px;left:8px}.gauge-hud{width:165px;padding:10px;bottom:70px;right:10px}.speed-value{font-size:48px}.gear-value{font-size:30px}.speed-row{gap:9px}.gear-box{padding-right:10px}.play-controls{width:100%;bottom:10px}.start-prompt{min-width:250px;padding:20px}.start-prompt h2{font-size:20px}.record-toast{min-width:230px;padding:15px}.play-warning{top:120px}.play-warning span{white-space:nowrap}}@media (prefers-reduced-motion:reduce){.record-particles i{animation:none;display:none}}.fullscreen-choice{cursor:pointer;align-items:center;gap:8px;margin:0 0 12px;font-size:12px;display:flex}.fullscreen-choice[hidden]{display:none}.fullscreen-choice input{accent-color:#947411;width:17px;height:17px}.touch-start-note{color:#536c79;margin:0 0 10px;font-size:11px}.play-shell{background:#132934;overflow:hidden}.play-shell #service{visibility:hidden}#play-frame{z-index:20;background:#132934;border:0;width:100%;height:100%;position:fixed;inset:0}.fullscreen-notice{color:#edf1ef;background:#162c3dc9;max-width:220px;padding:8px 12px;font-size:10px;line-height:1.5;position:absolute;top:18px;left:18px}.touch-play{--touch-edge-left:max(12px, env(safe-area-inset-left));--touch-edge-right:max(12px, env(safe-area-inset-right));--touch-bottom:max(12px, env(safe-area-inset-bottom));--touch-map-size:104px;--touch-gauge-width:180px}.touch-play .play-controls{display:none}.touch-play .map-hud{left:var(--touch-edge-left);bottom:var(--touch-bottom)}.touch-play .minimap{width:var(--touch-map-size);height:var(--touch-map-size)}.touch-play .map-hud>span{font-size:10px}.touch-play .gauge-hud{right:var(--touch-edge-right);bottom:var(--touch-bottom);width:var(--touch-gauge-width);box-sizing:border-box;height:103px;padding:10px 12px;transform:none}.touch-play .gauge-hud>div{transform:none}.touch-play .gear-value{font-size:30px}.touch-play .speed-value{font-size:48px}.touch-play .speed-row{gap:8px}.touch-play .gear-box{padding-right:12px}.touch-play .play-home{top:max(12px, env(safe-area-inset-top));right:var(--touch-edge-right)}.touch-play .lap-clock{top:max(10px, env(safe-area-inset-top));min-width:120px;padding:6px 14px}.touch-play .lap-time{font-size:26px}#mobile-controls{pointer-events:none;color:#edf1ef;font-family:Avenir Next,Apple SD Gothic Neo,sans-serif;position:fixed;inset:0}#mobile-controls button,.drive-pad{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#mobile-controls button{color:inherit;font:inherit;cursor:pointer;background:#162c3d9c;border:1px solid #b5ccd970}#mobile-controls button:focus-visible{outline-offset:3px;outline:3px solid #f5ce47}.touch-pedals{left:var(--touch-edge-left);bottom:calc(var(--touch-bottom) + var(--touch-map-size) + 28px);gap:8px;display:flex;position:absolute}.touch-pedals button{border-radius:12px;width:76px;height:66px;line-height:1.5;font-size:11px!important;font-weight:650!important}#mobile-controls button.held,#mobile-controls button[aria-pressed=true]{color:#132934;background:#f5ce47ca;border-color:#f5ce47}.drive-pad{right:var(--touch-edge-right);bottom:calc(var(--touch-bottom) + 116px);width:var(--touch-gauge-width);box-sizing:border-box;background:#162c3d7a;border:1px solid #b5ccd98c;border-radius:12px;height:136px;position:absolute;overflow:hidden}.drive-pad:before,.drive-pad:after{content:"";background:#b5ccd938;position:absolute}.drive-pad:before{height:1px;top:50%;left:24px;right:24px}.drive-pad:after{width:1px;top:24px;bottom:24px;left:50%}.drive-pad span,.drive-pad small{pointer-events:none;color:#edf1efc9;font-size:10px;position:absolute}.pad-forward{top:9px;left:50%;transform:translate(-50%)}.pad-reverse{white-space:nowrap;bottom:9px;left:50%;transform:translate(-50%)}.drive-pad .pad-left,.drive-pad .pad-right{font-size:25px;top:50%;transform:translateY(-50%)}.pad-left{left:9px}.pad-right{right:9px}.drive-pad small{text-align:center;width:100%;font-size:9px;top:54%}.pad-thumb{left:var(--pad-x,50%);top:var(--pad-y,50%);opacity:0;pointer-events:none;background:#edf1ef40;border:1px solid #edf1ef80;border-radius:50%;width:22px;height:22px;position:absolute;transform:translate(-50%,-50%)}.drive-pad.held{border-color:#f5ce47}.drive-pad.held .pad-thumb{opacity:1;background:#f5ce47ca;border-color:#f5ce47}.drive-pad.held small{opacity:0}#mobile-controls:not(.driving) .touch-pedals,#mobile-controls:not(.driving) .drive-pad{opacity:.45}#mobile-controls:not(.driving) .touch-pedals button,#mobile-controls:not(.driving) .drive-pad{pointer-events:none}.touch-play .start-prompt,.touch-play .play-count{z-index:2}.touch-play .start-prompt.race-results{max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));pointer-events:auto;box-sizing:border-box;top:50%;overflow-y:auto}.touch-actions{left:50%;bottom:var(--touch-bottom);grid-template-columns:repeat(6,24px);gap:7px;display:grid;position:absolute;transform:translate(-50%)}.touch-actions button{border-radius:50%;flex-direction:column;grid-column:span 2;justify-content:center;align-items:center;gap:2px;width:55px;height:55px;padding:6px 2px;display:flex}.touch-actions button:nth-child(4){grid-column:2/span 2}.touch-actions button:nth-child(5){grid-column:4/span 2}.touch-actions svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.touch-actions span{font-size:8px;line-height:1}#mobile-controls button:disabled{opacity:.42;cursor:default}@media (max-width:650px){.touch-play{--touch-edge-left:max(8px, env(safe-area-inset-left));--touch-edge-right:max(8px, env(safe-area-inset-right));--touch-map-size:96px;--touch-gauge-width:154px}.touch-play .map-hud,.touch-play .gauge-hud{bottom:calc(var(--touch-bottom) + 118px)}.touch-play .gauge-hud{padding:10px}.touch-play .speed-value{font-size:42px}.touch-pedals{bottom:calc(var(--touch-bottom) + 118px + var(--touch-map-size) + 28px)}.touch-pedals button{width:64px}.drive-pad{bottom:calc(var(--touch-bottom) + 234px)}.touch-play .start-prompt{box-sizing:border-box;width:calc(100vw - 56px);min-width:0;max-width:350px;padding:18px 14px;top:35%}.touch-play .start-prompt h2{margin-bottom:15px;font-size:20px}.touch-play .fullscreen-notice{text-align:center;width:max-content;max-width:calc(100vw - 48px);margin:0;top:92px;left:50%;transform:translate(-50%)}}@media (max-height:450px) and (min-width:480px){.touch-play{--touch-map-size:88px;--touch-bottom:max(8px, env(safe-area-inset-bottom))}.touch-play .map-hud,.touch-play .gauge-hud{bottom:var(--touch-bottom)}.touch-pedals{bottom:calc(var(--touch-bottom) + var(--touch-map-size) + 28px)}.touch-play .lap-time{font-size:22px}.touch-play .lap-clock{padding:4px 14px}.drive-pad{bottom:calc(var(--touch-bottom) + 116px);height:120px}.touch-pedals button{height:60px}.touch-play .start-prompt{padding:16px 24px;top:35%}.touch-play .start-prompt h2{margin-bottom:12px}.touch-play .start-prompt>small{margin-top:10px}}#race-ui{pointer-events:none;--speed-effect:0;position:fixed;inset:0}#race-ui [hidden]{display:none!important}.race-timer{letter-spacing:.08em;text-shadow:0 2px 5px #000;background:#10151c88;border-top:2px solid #f4d35e;padding:10px 18px;font:700 24px/1 ui-monospace,monospace;position:absolute;top:20px;left:50%;transform:translate(-50%)}.race-panel{text-align:center;box-sizing:border-box;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(120deg,#10151ce8,#263340dc);border-left:4px solid #f4d35e;width:min(480px,90vw);padding:24px;position:absolute;top:20%;left:50%;transform:translate(-50%)}.race-panel h1{letter-spacing:-.035em;margin:0 0 8px;font:italic 900 clamp(24px,4vw,38px)/1 system-ui,sans-serif}.race-panel p{letter-spacing:.13em;color:#c3d1dd;margin:0 0 22px;font-size:12px}#race-ui button{pointer-events:auto;cursor:pointer;color:#fff;font:inherit;background:#17212cdd;border:1px solid #6e839680;border-radius:3px;padding:8px 12px}#race-ui button:hover{background:#354959}#race-ui button:focus-visible,#race-ui input:focus-visible{outline-offset:3px;outline:2px solid #f4d35e}#race-ui .race-panel button{color:#151c24;background:#f4d35e;border:0;min-width:160px;padding:12px 28px;font-weight:800}#race-ui button:disabled{opacity:.6;cursor:wait}.race-count{object-fit:contain;filter:drop-shadow(0 8px 12px #0008);width:min(440px,48vw);height:min(280px,32vh);animation:.65s ease-out both race-count-pop;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.race-sound{align-items:center;gap:6px;display:flex;position:absolute;bottom:100px;right:16px}.race-sound input{pointer-events:auto;accent-color:#f4d35e;width:84px}#race-ui .race-headlights[aria-pressed=true]{color:#c7e9ff;background:#164f7ee6;border-color:#80c7ff}#race-ui .race-headlights:disabled{cursor:default}.race-shift{color:#f4d35e;text-shadow:0 2px 4px #000;font:italic 800 20px system-ui;position:absolute;top:65%;left:50%;transform:translate(-50%)}.race-speed-effect{opacity:var(--speed-effect);background:radial-gradient(#0000 43%,#14223466 78%,#061220 100%);border-left:3px solid #bee9ff66;border-right:3px solid #bee9ff66;position:absolute;inset:0}@keyframes race-count-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(1.55)}18%{opacity:1}70%{opacity:1}to{opacity:.85;transform:translate(-50%,-50%)scale(.92)}}@media (prefers-reduced-motion:reduce){.race-count{animation:none}.race-speed-effect{display:none}}@media (max-width:700px){.race-sound{bottom:110px;right:8px}.race-timer{font-size:18px;top:140px}.race-panel{top:195px}}
