:root{--bg:#101313;--panel:#191d1c;--line:#30352f;--muted:#7d887f;--text:#f0f2e8;--lime:#d7fc70;--pink:#f288a6;--mono:Consolas,'Courier New',monospace;--sans:'Segoe UI',Arial,sans-serif;color-scheme:dark}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;color:var(--text);font-family:var(--sans);font-size:14px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--lime);outline-offset:5px}button:disabled{cursor:default;opacity:.42}.hidden{display:none!important}.app{max-width:1480px;padding:0 48px;margin:0 auto}.topbar{height:89px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:11px;font-size:17px;letter-spacing:1.6px;font-weight:800;text-decoration:none;color:var(--text)}.brand-mark{background:var(--lime);color:#101313;font-size:28px;font-weight:900;font-style:italic;line-height:38px;width:39px;height:38px;text-align:center;letter-spacing:-6px;padding-right:6px;border-radius:2px}.brand-mark span{font-size:24px}.brand-light{font-weight:350;margin-left:5px;color:#bec5ba}.edition{color:var(--muted);font:9px var(--mono);border:1px solid #3b4238;padding:4px 5px;margin-left:4px;letter-spacing:1px}.top-right{display:flex;align-items:center;gap:20px}.offline{font:10px var(--mono);letter-spacing:1.4px;color:#aab3a6;display:flex;align-items:center;gap:9px}.offline i,.track-tag i{height:6px;width:6px;border-radius:50%;background:var(--lime);box-shadow:0 0 10px #d7fc7040}.icon-button{background:none;border:0;display:flex;align-items:center;gap:8px;font-size:21px;color:#a8b0a5;padding:8px}.icon-button span{font:9px var(--mono);letter-spacing:1px}.fullscreen{font-size:27px;padding-right:0}.intro{display:flex;justify-content:space-between;align-items:center;padding:30px 0 26px}.eyebrow{font:10px var(--mono);letter-spacing:2px;color:var(--lime);display:flex;align-items:center;gap:10px}.little-line{display:inline-block;width:22px;height:2px;background:var(--lime)}h1{font-size:49px;letter-spacing:-2.5px;line-height:1.08;margin:10px 0 8px;font-weight:750}h1>span{color:var(--lime)}.intro p{margin:0;color:#96a091;font-size:12px;letter-spacing:.2px}.session-stats{display:flex;gap:40px;margin-top:22px}.session-stats>div{display:flex;flex-direction:column;gap:8px}.session-stats>div>span{font:9px var(--mono);letter-spacing:1.2px;color:var(--muted)}.session-stats strong{font:29px var(--mono);letter-spacing:-1px}.session-stats small{font:10px var(--mono);letter-spacing:0;color:#a5ada0}.track-weather{border-left:1px solid var(--line);padding-left:32px}.race-stage{position:relative;width:100%;height:432px;background:#172022;border:1px solid #3b453d;border-radius:5px 5px 0 0;overflow:hidden;isolation:isolate}.race-stage canvas{width:100%;height:100%;display:block}.stage-top{position:absolute;left:23px;right:23px;top:20px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.track-tag{display:flex;align-items:center;gap:8px;font:11px var(--mono);letter-spacing:2px}.track-tag span{font-size:8px;color:#8d9a9e;letter-spacing:1.3px;margin-left:7px}.race-status{font:9px var(--mono);letter-spacing:1.3px;color:#b4bdaf}.race-status span{color:var(--lime);margin-left:7px}.opponent-badge,.player-badge{position:absolute;left:24px;display:flex;align-items:center;gap:7px;pointer-events:none;font:9px var(--mono);letter-spacing:1px}.opponent-badge{top:38%}.player-badge{top:69%}.lane-dot{width:5px;height:5px;background:var(--lime);border-radius:50%}.lane-dot.pink{background:var(--pink)}.opponent-badge b{color:var(--pink)}.player-badge b{color:var(--lime)}.opponent-badge>span:not(.lane-dot),.player-badge>span:not(.lane-dot){color:#a0aba4}.opponent-badge em{font:8px var(--mono);color:#909c95;border:1px solid #58605b;padding:2px 3px;margin-left:3px}.stage-distance{position:absolute;right:24px;bottom:31px;font:27px var(--mono);letter-spacing:-1px}.stage-distance small{font-size:10px;letter-spacing:1px;color:#8b9991;margin-left:8px}.stage-hint{position:absolute;bottom:33px;left:24px;color:#9fac9f;font:10px var(--mono);letter-spacing:.2px}.stage-hint span{color:var(--lime);border:1px solid #657451;padding:4px 5px;margin-right:9px}.progress-strip{position:absolute;bottom:0;left:0;right:0;background:#0b100be8;height:15px;padding:6px 25px}.progress-line{height:2px;background:#343e33;position:relative}.progress-line>i{position:absolute;top:-3px;height:4px;width:16px;left:0;background:var(--pink);transition:left 60ms linear}.progress-line>i#playerProgress{background:var(--lime);top:2px}.finish-flag{position:absolute;right:-10px;top:-8px;font-size:13px;color:#bec6b4}.race-message{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);font:700 17px var(--mono);letter-spacing:2px;text-shadow:0 2px 20px #000;color:var(--lime);white-space:nowrap;pointer-events:none}.race-message.bad{color:#ffa889}.countdown{position:absolute;top:40%;left:69%;transform:translate(-50%,-50%);font-size:92px;line-height:1;font-style:italic;font-weight:900;letter-spacing:-7px;color:var(--lime);text-shadow:0 0 35px #d7fc7040;pointer-events:none}.countdown small{font:10px var(--mono);letter-spacing:1.6px;display:block;text-align:center;padding-top:13px;color:#e2ebd6}.pause-button{position:absolute;right:20px;top:57px;border:1px solid #718073;background:#111b16b0;width:31px;height:29px}.dashboard{border:1px solid #3b453d;border-top:0;border-radius:0 0 5px 5px;background:#1a201c;display:grid;grid-template-columns:210px 1fr 145px 272px;align-items:center;min-height:124px;padding:22px 24px;gap:28px}.speed-module{display:flex;gap:22px;align-items:center}.gear-box{display:flex;flex-direction:column;align-items:center;border:1px solid #414b3a;border-radius:4px;width:54px;padding:8px 4px 4px}.gear-box>span{font:8px var(--mono);letter-spacing:1px;color:#94a085}.gear-box>strong{font:38px var(--mono);line-height:1.15;color:var(--lime)}.speed-readout{display:flex;flex-direction:column}.speed-readout strong{font:50px var(--mono);letter-spacing:-3px;line-height:1}.speed-readout>span{font:8px var(--mono);letter-spacing:2px;color:#89957f;margin:6px 0 0 4px}.module-top{display:flex;align-items:center;justify-content:space-between;font:9px var(--mono);letter-spacing:1px;color:#b4beaa;margin-bottom:12px}.module-top b{font-weight:400;color:#e0e6d5}.module-top small{color:#7c8a72}.rpm-track{height:16px;position:relative;background:#323b2d;overflow:hidden;clip-path:polygon(0 0,100% 0,98% 100%,0 100%)}.rpm-track:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(4% - 2px),#1a201c calc(4% - 2px),#1a201c 4%);z-index:4}.rpm-perfect{position:absolute;left:75.3%;width:11.8%;height:100%;background:#8cab3d77}.rpm-fill{position:absolute;inset:0 auto 0 0;width:10.6%;background:#d7fc70;opacity:.8}.rpm-needle{position:absolute;left:10.6%;width:2px;background:#fff;height:100%;z-index:5}.rpm-scale{display:flex;justify-content:space-between;color:#809174;font:8px var(--mono);padding-top:6px}.rpm-scale .red{color:#e69979}.shift-hint{font-size:9px;color:#93a181;margin-top:11px;white-space:nowrap}.green-dot{display:inline-block;width:4px;height:4px;background:var(--lime);border-radius:50%;margin-right:5px}.nitro-module{padding-left:22px;border-left:1px solid #384130}.nitro-module .module-top{margin-bottom:15px}.nitro-cells{display:flex;gap:4px;height:12px;transform:skew(-14deg);margin-right:5px}.nitro-cells i{background:#90ccda;flex:1;transition:opacity .15s}.nitro-caption{font:7px var(--mono);letter-spacing:.8px;color:#91a8a5;display:block;margin-top:13px}.primary{background:var(--lime);border:0;border-radius:3px;color:#202619;font-size:11px;font-weight:800;letter-spacing:1.5px;padding:18px 20px;display:flex;justify-content:space-between;align-items:center;gap:25px;min-height:48px}.primary:hover{background:#e5ff9e;box-shadow:0 0 25px #d7fc7015}.primary>span{font-size:22px;line-height:1;font-weight:400}.start-button{width:100%}.launch-module>small{display:block;font:7px var(--mono);letter-spacing:1px;text-align:center;color:#86947a;margin-top:10px}.section-heading{display:flex;justify-content:space-between;align-items:center;margin:28px 0 14px}.section-heading h2{font:10px var(--mono);letter-spacing:1.6px;margin:0}.section-heading h2>span{color:var(--lime);margin-right:10px}.difficulty{display:flex;gap:3px;align-items:center}.difficulty>span{color:#818f7c;font:8px var(--mono);letter-spacing:1.4px;margin-right:12px}.difficulty-button{border:1px solid transparent;background:none;color:#98a58f;font-size:10px;padding:6px 13px;border-radius:3px}.difficulty-button.selected{background:#2c3525;border-color:#4a593b;color:var(--lime)}.car-options{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.car-card{border:1px solid #333b30;border-radius:4px;background:linear-gradient(125deg,#1b211c,#161a17);padding:14px 18px 15px;text-align:left;position:relative;overflow:hidden;transition:background .2s,border-color .2s}.car-card:hover{border-color:#758467}.car-card.selected{border-color:#a6c55b;background:radial-gradient(ellipse at 50% 40%,#3f4e2238,transparent 75%),#1b2218}.car-card-top{display:flex;justify-content:space-between;align-items:center;position:relative;z-index:1}.car-class{color:#7f8c76;font:8px var(--mono);letter-spacing:1.5px}.selected .car-class{color:#c1d9a0}.selection-dot{height:14px;width:14px;border-radius:50%;border:1px solid #4b5542;color:transparent;font-size:10px;text-align:center;line-height:12px}.selected .selection-dot{background:var(--lime);color:#283119;border-color:var(--lime)}.car-thumbnail{width:100%;height:94px;display:block;margin:1px 0 7px}.car-card-bottom{display:flex;align-items:center;justify-content:space-between}.car-card h3{margin:0 0 5px;font-size:19px;letter-spacing:-.6px;font-weight:600}.car-card h3 em{font-style:normal;color:#909d85;font-weight:350}.car-card-bottom>div>span{font:7px var(--mono);letter-spacing:1px;color:#7f8c76}.car-spec{font:18px var(--mono);letter-spacing:-1px;text-align:right}.car-spec small{font-size:8px;letter-spacing:0;color:#98a68b}.car-spec>span{display:block;margin-top:6px;letter-spacing:.7px!important}footer{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:67px;color:#788571;font:8px var(--mono);letter-spacing:.8px}footer>div{display:flex;align-items:center;gap:7px}kbd{font:8px var(--mono);padding:3px 5px;border:1px solid #46513d;border-bottom-width:2px;border-radius:3px;color:#aab59d;background:#232b20;white-space:nowrap}footer i{height:10px;width:1px;background:#30392a;margin:0 5px}footer>span{font-size:7px;letter-spacing:1px}footer b{font-size:15px;color:var(--lime);margin-left:10px}.active-controls{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:6px}.drive-button{background:#293426;border:1px solid #56664b;border-radius:3px;padding:12px 3px;font-size:10px;touch-action:none;user-select:none;-webkit-user-select:none}.drive-button kbd{display:block;width:max-content;margin:8px auto 0;font-size:7px}.drive-button.throttle{background:var(--lime);color:#29311c;border-color:var(--lime)}.drive-button.throttle kbd{background:#b6d954;color:#3f4b26;border-color:#92ae47}.drive-button.nitro{color:#a7e2ed}.drive-button.held{filter:brightness(1.3);transform:translateY(1px)}.pause-overlay,.result-overlay{position:absolute;inset:0;z-index:10;background:#0c130ddc;backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;justify-content:center}.pause-overlay h2{font-size:30px;letter-spacing:-1px}.pause-overlay .primary{min-width:240px}.result-card{max-width:570px;width:90%;text-align:center}.result-card .eyebrow{justify-content:center}.result-card h2{font-size:52px;letter-spacing:-2px;margin:10px 0;color:var(--lime)}.result-card>p{color:#b1bfa7;margin:0;font-size:13px}.result-times{display:flex;justify-content:center;gap:40px;margin:25px 0}.result-times>div{display:flex;flex-direction:column;gap:9px}.result-times span{color:#8b9c7f;font:8px var(--mono);letter-spacing:1.3px}.result-times strong{font:28px var(--mono)}.result-actions{display:flex;justify-content:center;gap:12px}.secondary{border:1px solid #697956;background:#273021;border-radius:3px;padding:15px 20px;font-size:10px;letter-spacing:1px}.result-card>small{display:block;font-size:11px;color:#8ea07c;margin-top:20px}
@media(min-width:1550px){.app{max-width:1560px}.race-stage{height:470px}.intro{padding-top:34px;padding-bottom:30px}.car-thumbnail{height:106px}}
@media(max-width:1150px){.app{padding:0 28px}.dashboard{grid-template-columns:174px 1fr 108px 230px;gap:17px;padding:20px}.speed-module{gap:15px}.speed-readout strong{font-size:44px}.nitro-module{padding-left:15px}.session-stats{gap:27px}.track-weather{padding-left:25px}.top-right{gap:10px}footer>span{display:none}.car-thumbnail{height:83px}.car-card h3{font-size:17px}}
@media(max-width:900px){.app{padding:0 20px}.offline{display:none}.topbar{height:72px}.intro{padding:25px 0}.session-stats{gap:24px}.track-weather{display:none!important}.dashboard{grid-template-columns:160px 1fr 220px;gap:18px}.nitro-module{display:none}.car-card{padding:12px}.car-card-bottom>div>span{font-size:6px}.car-spec{font-size:15px}.car-thumbnail{height:70px}.race-stage{height:400px}.race-message{font-size:13px}.countdown{font-size:76px}.brand{font-size:14px}.edition{display:none}.track-tag span{display:none}}
@media(max-width:650px){.app{padding:0 12px}.topbar{height:62px}.brand{font-size:12px;gap:8px;letter-spacing:1px}.brand-mark{width:30px;height:30px;line-height:30px;font-size:23px}.brand-mark span{font-size:18px}.brand-light{margin-left:3px}.icon-button span{display:none}.icon-button{padding:6px}.top-right{gap:8px}.intro{padding:23px 2px 20px}.intro .eyebrow{font-size:8px;letter-spacing:1.3px}h1{font-size:39px;margin-top:10px}.intro p{font-size:10px;max-width:200px;line-height:1.5}.session-stats{gap:17px;margin-top:25px}.session-stats>div>span{font-size:7px;letter-spacing:.3px}.session-stats strong{font-size:22px}.session-stats small{font-size:8px}.race-stage{height:360px}.stage-top{left:13px;right:13px;top:14px}.track-tag{font-size:9px;letter-spacing:1px}.race-status{font-size:7px;letter-spacing:.4px}.opponent-badge,.player-badge{left:14px;font-size:7px;gap:5px}.opponent-badge{top:37%}.player-badge{top:67%}.stage-hint{left:13px;bottom:31px;max-width:200px;font-size:8px;line-height:1.8}.stage-hint span{display:none}.stage-distance{font-size:21px;right:13px;bottom:31px}.stage-distance small{font-size:8px;letter-spacing:0;margin-left:3px}.countdown{font-size:62px;left:76%;letter-spacing:-3px}.countdown small{font-size:7px;letter-spacing:.4px}.race-message{top:31%;font-size:12px;letter-spacing:1px}.dashboard{grid-template-columns:130px 1fr;padding:16px 14px 13px;gap:16px 19px;min-height:190px}.speed-module{gap:12px}.gear-box{width:40px;padding:6px 3px 2px}.gear-box>strong{font-size:31px}.gear-box>span{font-size:6px}.speed-readout strong{font-size:38px}.rpm-module .module-top{font-size:8px;margin-bottom:9px}.shift-hint{font-size:7px;margin-top:8px}.launch-module{grid-column:1 / -1}.launch-module small{font-size:7px;margin-top:8px}.primary{padding:13px 17px;min-height:44px;font-size:10px}.start-button{justify-content:center}.start-button>span{margin-left:20px}.active-controls{gap:10px}.drive-button{padding:10px;font-size:11px;display:flex;gap:10px;justify-content:center;align-items:center}.drive-button kbd{margin:0}.section-heading{margin:23px 0 12px;gap:4px}.section-heading h2{font-size:8px;letter-spacing:1px}.section-heading h2>span{margin-right:5px}.difficulty>span{display:none}.difficulty-button{font-size:9px;padding:5px 9px}.car-options{gap:7px}.car-card{padding:9px 8px}.car-class{font-size:6px;letter-spacing:.4px}.selection-dot{height:11px;width:11px;font-size:8px;line-height:9px}.car-thumbnail{height:49px;margin:3px 0 6px}.car-card-bottom{display:block}.car-card h3{font-size:14px;margin-bottom:3px}.car-card-bottom>div>span{font-size:5px;letter-spacing:.2px}.car-spec{font-size:12px;text-align:left;margin-top:10px;letter-spacing:-.2px}.car-spec>span{display:none!important}.car-spec small{font-size:7px}footer{min-height:55px;font-size:6px;letter-spacing:0}footer>div{gap:4px;flex-wrap:wrap}footer i{margin:0 2px}footer kbd{font-size:6px;padding:2px 3px}.result-card h2{font-size:39px}.result-card>p{font-size:11px}.result-times{gap:24px;margin:23px 0}.result-times strong{font-size:23px}.result-times span{font-size:6px;letter-spacing:.6px}.result-card>small{font-size:9px;line-height:1.5}.result-actions{gap:8px}.secondary{padding:12px;font-size:8px}.pause-overlay h2{font-size:25px}.pause-button{right:13px;top:42px}.progress-strip{padding-left:14px;padding-right:17px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.stage-hint{top:57px;bottom:auto;color:#c0cbb9}.stage-hint span{border-color:#536249}.race-stage:fullscreen{height:100vh}
.crossing-time{font:9px var(--mono);letter-spacing:.4px;color:var(--lime);background:#18231be6;border:1px solid #708851;padding:4px 6px;margin-left:7px}.opponent-badge .crossing-time{color:#ffc2d2;border-color:#9c6277}

/* Racing points, map choices and per-car parts */
.session-stats{gap:27px}.track-weather{padding-left:26px}.section-note,.balance-chip{font:9px var(--mono);letter-spacing:1px;color:#a5b59a}.balance-chip{color:var(--lime);background:#263020;border:1px solid #5b7440;border-radius:3px;padding:8px 12px}.maps,.garage,.upgrade-section{scroll-margin-top:18px}.map-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px}.map-card{display:block;text-align:left;background:#171e1d;border:1px solid #35413a;border-radius:4px;padding:0;overflow:hidden;min-width:0;transition:transform .15s,border-color .15s}.map-card:hover{transform:translateY(-2px);border-color:#95b76a}.map-card.selected{border-color:var(--lime);box-shadow:inset 0 0 0 1px #d7fc704a}.map-visual{display:block;height:105px;position:relative;overflow:hidden;background:linear-gradient(#142637,#56645e 63%,#253335 64%,#242b30 100%)}.map-visual:before{content:'';position:absolute;left:-6%;right:-6%;bottom:32%;height:24px;background:repeating-linear-gradient(90deg,#182c32 0 17px,#283b3e 17px 23px,#172830 23px 39px);clip-path:polygon(0 60%,10% 25%,16% 50%,25% 0,35% 60%,46% 8%,52% 55%,64% 16%,75% 51%,86% 0,100% 45%,100% 100%,0 100%)}.map-visual:after{content:'';position:absolute;left:-10%;right:-10%;bottom:16%;border-top:2px dashed #dbe4d473;transform:skewY(-5deg)}.map-visual i{position:absolute;width:22px;height:22px;background:#dfe9cb;border-radius:50%;right:18%;top:14%;box-shadow:0 0 25px #e1e5a465}.map-visual b{position:absolute;z-index:2;bottom:10px;left:13px;font:700 12px var(--mono);letter-spacing:1.5px;text-shadow:0 2px 8px #000}.map-rain .map-visual{background:repeating-linear-gradient(106deg,transparent 0 12px,#b1d7ec16 12px 13px,transparent 13px 24px),linear-gradient(#0a1b32,#365b73 66%,#142a3f 67%)}.map-pass .map-visual{background:linear-gradient(#162a2f,#697974 64%,#273630 65%)}.map-pass .map-visual:before{height:65px;background:#263f3e;clip-path:polygon(0 100%,0 62%,22% 12%,38% 65%,58% 0,78% 60%,100% 9%,100% 100%)}.map-salt .map-visual{background:linear-gradient(#513448,#d29468 65%,#8d6c61 66%)}.map-salt .map-visual:before{background:#835348;height:42px;clip-path:polygon(0 100%,0 30%,16% 28%,21% 100%,50% 100%,58% 0,72% 0,80% 100%,100% 100%)}.map-tunnel .map-visual{background:repeating-linear-gradient(90deg,#192338 0 12%,#51607b 12% 13%,#152132 13% 26%)}.map-tunnel .map-visual:before{height:36px;background:#0b1728;clip-path:none}.map-card-body{display:flex;flex-direction:column;padding:12px 13px;gap:6px}.map-card-body strong{font-size:13px}.map-card-body small,.map-card-body em{font:8px var(--mono);color:#a4b1a6;letter-spacing:.4px}.map-card-body em{color:var(--lime);font-style:normal;margin-top:3px}.map-detail{display:flex;align-items:center;gap:17px;border:1px solid #344138;background:#1c261f;padding:13px 16px;margin-top:10px;color:#a6b3a6;font-size:10px}.map-detail strong{font:10px var(--mono);color:var(--lime);white-space:nowrap}.map-detail span:nth-of-type(2){margin-left:auto;color:#ccd7bf}.map-detail b{font:9px var(--mono);color:#d7fc70;white-space:nowrap}.garage-note{color:#9eae94;font:9px var(--mono);letter-spacing:.3px;margin:-2px 0 11px}.car-card-top .car-upgrade-count{margin-left:auto;margin-right:10px;color:var(--lime);font:8px var(--mono)}.upgrade-section{padding-bottom:28px}.upgrade-intro{background:linear-gradient(100deg,#253421,#1b2520);border:1px solid #455940;padding:18px 21px;display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:12px}.upgrade-intro .eyebrow{font-size:8px}.upgrade-intro strong{display:block;font-size:22px;margin-top:5px}.upgrade-intro p{margin:5px 0 0;color:#b0bdad;font-size:11px}.upgrade-meter{min-width:175px;color:var(--lime);font:9px var(--mono);letter-spacing:1px}.upgrade-meter>div{height:7px;background:#354631;margin-top:8px}.upgrade-meter i{display:block;height:100%;background:var(--lime)}.upgrade-layout{display:grid;grid-template-columns:minmax(0,1fr) 276px;gap:12px}.upgrade-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.upgrade-card{background:linear-gradient(140deg,#262c29,#1a201e);border:1px solid #3f4940;min-height:148px;padding:12px 8px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px}.upgrade-card:hover{border-color:#9ab66f}.upgrade-card.selected{border-color:var(--lime);background:linear-gradient(140deg,#37462a,#1c271f)}.upgrade-card.recommended:not(.selected){border-color:#6a7856}.upgrade-icon{font:40px var(--sans);height:48px;line-height:48px;color:#bac6b7;text-shadow:0 3px 10px #000}.upgrade-card.selected .upgrade-icon{color:var(--lime)}.upgrade-card strong{font-size:11px;line-height:1.2}.upgrade-card small{color:#bed47d;font:7px var(--mono);letter-spacing:.4px}.upgrade-bars{display:flex;gap:3px;margin-top:auto}.upgrade-bars i{display:block;width:18px;height:4px;background:#435041}.upgrade-bars i.filled{background:var(--lime)}.upgrade-card em{font:8px var(--mono);color:#98a797;font-style:normal}.upgrade-detail{border:1px solid #4b5c42;background:#202921;padding:16px;display:flex;flex-direction:column;min-height:304px}.upgrade-detail-top{display:flex;justify-content:space-between;color:#a3b396;font:9px var(--mono);letter-spacing:1px}.upgrade-detail-icon{font-size:53px;line-height:1;margin:18px 0 4px;color:var(--lime)}.upgrade-detail h3{font-size:23px;margin:0 0 7px}.upgrade-detail p{color:#afbeac;font-size:11px;line-height:1.45;margin:0 0 13px}.upgrade-benefit{color:var(--lime);font:10px var(--mono);margin-top:auto}.upgrade-cost{display:flex;justify-content:space-between;gap:7px;margin:15px 0 9px;color:#c4d0b7;font:8px var(--mono)}.upgrade-buy{width:100%}.upgrade-buy:disabled{background:#5a6751;color:#e1e7db;opacity:.7}.upgrade-status{min-height:20px;color:var(--lime);font:10px var(--mono);margin-top:9px}.reward-line{font:700 14px var(--mono);letter-spacing:1px;color:var(--lime);margin:-8px 0 18px}.result-overlay .result-times{margin-bottom:19px}.result-actions{flex-wrap:wrap}
@media(max-width:1150px){.map-detail{flex-wrap:wrap}.map-detail span:nth-of-type(2){margin-left:0}.upgrade-layout{grid-template-columns:1fr}.upgrade-detail{min-height:0}.upgrade-grid{grid-template-columns:repeat(5,1fr)}}
@media(max-width:900px){.map-grid{grid-template-columns:repeat(3,1fr)}.session-stats{gap:16px}.session-stats strong{font-size:24px}}
@media(max-width:650px){.intro{align-items:flex-start}.session-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 17px;margin-top:13px}.session-stats strong{font-size:18px}.map-grid{grid-template-columns:repeat(2,1fr);gap:7px}.map-visual{height:81px}.map-card-body{padding:8px}.map-card-body strong{font-size:11px}.map-card-body small,.map-card-body em{font-size:7px}.map-detail{font-size:9px;gap:6px;padding:10px}.map-detail>*{display:block;width:100%}.section-note{display:none}.garage-note{font-size:7px;line-height:1.5}.upgrade-intro{padding:12px;display:block}.upgrade-intro strong{font-size:18px}.upgrade-intro p{font-size:9px;line-height:1.4}.upgrade-meter{margin-top:12px}.upgrade-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.upgrade-card{min-height:120px;padding:8px}.upgrade-icon{font-size:30px;height:35px;line-height:35px}.upgrade-card strong{font-size:10px}.upgrade-card small,.upgrade-card em{font-size:7px}.upgrade-detail{padding:13px}.upgrade-detail-icon{font-size:36px;margin-top:10px}.upgrade-detail h3{font-size:18px}.upgrade-detail p{font-size:10px}.balance-chip{font-size:7px;padding:5px}.result-card h2{font-size:33px}.result-times{gap:15px!important}.result-times strong{font-size:19px!important}.reward-line{font-size:10px;margin-bottom:10px}.result-actions .primary,.result-actions .secondary{min-height:36px;padding:8px 10px;font-size:8px}}

/* The race switches from garage view to a focused two-dial cockpit. */
.race-cockpit{display:none;grid-template-columns:minmax(0,1fr) minmax(235px,.84fr) minmax(0,1fr);grid-template-areas:"speed build rpm";border:1px solid #455243;border-top:0;background:radial-gradient(ellipse at 50% 0,#34472b38,transparent 55%),#111917;min-height:247px}.race-cockpit>.dial-panel:first-child{grid-area:speed}.race-cockpit>.dial-panel:last-child{grid-area:rpm}.dial-panel{min-width:0;padding:13px 17px 9px;background:linear-gradient(140deg,#18211e,#111816)}.dial-panel:first-child{border-right:1px solid #3b4939}.dial-panel:last-child{border-left:1px solid #3b4939}.dial-heading,.dial-foot,.loadout-top{display:flex;justify-content:space-between;align-items:center;gap:8px;font:9px var(--mono);letter-spacing:1px;color:#9dac9a}.dial-heading strong{font-size:8px;color:#e3cd8a;white-space:nowrap}.race-dial{display:block;width:100%;height:193px}.dial-foot{font-size:8px;color:#8fa48f}.dial-foot span:last-child{color:var(--lime)}.cockpit-loadout{grid-area:build;min-width:0;display:flex;flex-direction:column;padding:17px 17px 12px}.loadout-top{font-size:8px;color:#a4b59d}.loadout-top b{color:var(--lime);font-weight:400;white-space:nowrap}.cockpit-loadout>strong{font-size:22px;letter-spacing:-.4px;margin-top:13px}.cockpit-loadout>small{font:9px var(--mono);color:#b7c7ac;margin-top:4px}.loadout-label{font:8px var(--mono);color:#e3cd8a;letter-spacing:1.3px;margin:16px 0 8px}.installed-mods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;max-height:118px;overflow-y:auto;scrollbar-color:#677c52 #1a241d}.installed-mod{display:flex;align-items:center;gap:5px;min-width:0;border:1px solid #55654a;background:#293628;padding:5px 6px;color:#e5edda;font:8px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.installed-mod i{font-style:normal;color:#e3cd8a;font-size:13px;line-height:9px}.installed-mod b{margin-left:auto;color:var(--lime);font-weight:600}.mods-empty{font:9px var(--mono);color:#859686;line-height:1.5}.race-active .race-cockpit{display:grid}.race-active .intro,.race-active .maps,.race-active .garage,.race-active .upgrade-section,.race-active footer{display:none}.race-active .topbar{height:62px}.race-active .race-stage{height:clamp(335px,43vh,405px)}.race-active .dashboard{grid-template-columns:minmax(130px,1fr) minmax(310px,2.1fr);min-height:82px;padding:11px 20px;gap:22px}.race-active .dashboard .speed-module,.race-active .dashboard .rpm-module{display:none}.race-active .dashboard .nitro-module{display:block}.race-active .dashboard .launch-module{grid-column:auto}.race-active .launch-module>small{margin-top:7px}.race-active .result-overlay{overflow-y:auto}.race-active .result-card{margin:auto}
@media(max-width:900px){.race-cockpit{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"speed rpm" "build build"}.dial-panel:first-child{border-right:1px solid #3b4939}.dial-panel:last-child{border-left:0}.race-dial{height:170px}.cockpit-loadout{padding:10px 15px;border-top:1px solid #3b4939}.cockpit-loadout>strong{font-size:17px;margin-top:4px}.loadout-label{margin:8px 0 5px}.installed-mods{grid-template-columns:repeat(3,minmax(0,1fr));max-height:70px}.race-active .dashboard{grid-template-columns:minmax(110px,1fr) minmax(260px,2fr)}}
@media(max-width:650px){.race-active .topbar{height:56px}.race-active .race-stage{height:300px}.race-cockpit{min-height:0}.dial-panel{padding:8px 6px 6px}.dial-heading,.dial-foot{font-size:6px;letter-spacing:.2px}.dial-heading strong{font-size:6px}.race-dial{height:144px}.cockpit-loadout{padding:8px 10px}.cockpit-loadout>strong{font-size:15px}.cockpit-loadout>small,.loadout-top,.loadout-label{font-size:7px}.loadout-label{margin:5px 0 4px}.installed-mods{grid-template-columns:repeat(2,minmax(0,1fr));max-height:66px}.installed-mod{font-size:7px;padding:4px}.race-active .dashboard{display:block;min-height:0;padding:9px}.race-active .dashboard .nitro-module{display:none}.race-active .dashboard .launch-module{grid-column:auto}.race-active .active-controls{gap:6px}.race-active .drive-button{padding:8px 5px}.race-active .launch-module>small{margin-top:5px}.race-active .result-card{width:96%}}

/* Larger race instruments while keeping the driving controls in view. */
.race-dial{height:240px}
.dial-panel{padding:10px 14px 7px}
.cockpit-loadout{justify-content:center}
.race-active .topbar{height:56px}
.race-active .race-stage{height:clamp(300px,39vh,375px)}
@media(max-width:900px){.race-dial{height:210px}.race-active .race-stage{height:clamp(300px,40vh,360px)}}
@media(max-width:650px){.race-dial{height:185px}.race-active .race-stage{height:300px}.dial-panel{padding:8px 6px 6px}}

/* Fullscreen uses the available display instead of leaving a small game at the top. */
html:fullscreen{overflow:auto}
html:fullscreen .app{max-width:none;width:100%;padding-inline:clamp(12px,2vw,36px)}
html:fullscreen .race-stage{height:clamp(400px,56vh,700px)}
html:fullscreen body.race-active .app{min-height:100vh;display:flex;flex-direction:column}
html:fullscreen body.race-active .race-stage{height:auto;min-height:310px;flex:1 1 auto}
html:fullscreen body.race-active .race-cockpit,html:fullscreen body.race-active .dashboard{flex:none}
@media(max-width:650px){html:fullscreen .race-stage{height:clamp(300px,50vh,480px)}html:fullscreen body.race-active .race-stage{min-height:300px}}
