*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{touch-action:none;-ms-touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;color:#fff;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background:#9ad2ff;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}#game{z-index:0;position:fixed;inset:0}#game canvas{width:100%;height:100%;display:block}#ui{z-index:10;pointer-events:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);position:fixed;inset:0}.hud-top{z-index:20;text-align:center;text-shadow:0 2px 8px #00000073;flex-direction:column;align-items:center;gap:clamp(2px,1vmin,8px);display:flex;position:absolute;top:clamp(8px,2.5vmin,24px);left:0;right:0}.hud-biome{letter-spacing:.18em;text-transform:uppercase;background:#121a266b;border-radius:999px;padding:.32em .95em;font-size:clamp(11px,2.6vmin,25px);font-weight:700}.hud-distance{align-items:baseline;gap:.12em;font-weight:800;line-height:1;display:flex}.hud-dist-val{font-variant-numeric:tabular-nums;font-size:clamp(40px,12vmin,96px)}.hud-dist-unit{opacity:.85;font-size:clamp(16px,4vmin,43px)}.hud-stats{gap:clamp(8px,2.4vmin,18px);margin-top:clamp(2px,1vmin,6px);display:flex}.hud-chip{background:#121a266b;border-radius:14px;min-width:clamp(56px,16vmin,88px);padding:.4em .8em}.hud-chip-label{letter-spacing:.12em;opacity:.8;font-size:clamp(9px,2vmin,17px)}.hud-chip-val{font-variant-numeric:tabular-nums;font-size:clamp(16px,4.4vmin,40px);font-weight:700}.touch-controls{z-index:20;pointer-events:none;height:56%;display:none;position:absolute;bottom:0;left:0;right:0}@media (pointer:coarse){.touch-controls{display:flex}}#ui.has-touch .touch-controls{display:flex}.touch-zone{pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;background:linear-gradient(#121a2600,#121a2638);border:none;flex:50%;justify-content:center;align-items:flex-end;height:100%;padding-bottom:clamp(18px,7vmin,56px);transition:background 70ms;display:flex}.touch-left{border-right:1px solid #ffffff0f}.touch-zone.active{background:linear-gradient(#ffc82800,#ffc82857)}.hud-pause{z-index:41;pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;background:#121a266b;border:2px solid #ffffff80;border-radius:14px;justify-content:center;align-items:center;gap:clamp(4px,1.2vmin,7px);width:clamp(44px,11vmin,60px);height:clamp(44px,11vmin,60px);transition:transform 60ms;display:flex;position:absolute;top:clamp(8px,2.5vmin,24px);right:clamp(8px,2.5vmin,24px)}.hud-pause:active{transform:scale(.94)}.pause-bar{background:#fff;border-radius:2px;width:clamp(4px,1.2vmin,6px);height:clamp(16px,4.4vmin,24px)}.hud-horn{z-index:22;pointer-events:auto;color:#fff;letter-spacing:.08em;touch-action:none;-webkit-tap-highlight-color:transparent;background:#121a266b;border:2px solid #ffffff80;border-radius:14px;min-width:clamp(58px,15vmin,80px);height:clamp(44px,11vmin,60px);padding:0 .6em;font-size:clamp(13px,3.2vmin,28px);font-weight:900;transition:transform 60ms,background 60ms;position:absolute;top:clamp(8px,2.5vmin,24px);left:clamp(8px,2.5vmin,24px)}.hud-horn:active{background:#ffc82880;transform:scale(.94)}.paused{z-index:35;pointer-events:auto;text-align:center;background:#080c16b3;flex-direction:column;justify-content:center;align-items:center;gap:clamp(14px,4vmin,28px);display:flex;position:absolute;inset:0}.paused.hidden{display:none}.paused-title{letter-spacing:.06em;color:#fff;text-shadow:0 3px #00000040;font-size:clamp(40px,13vmin,96px);font-weight:900}.touch-arrow{pointer-events:none;border-style:solid;width:0;height:0}.touch-left .touch-arrow{border-width:clamp(11px,3.2vmin,18px) clamp(16px,4.6vmin,26px) clamp(11px,3.2vmin,18px) 0;border-color:#0000 #fff #0000 #0000}.touch-right .touch-arrow{border-width:clamp(11px,3.2vmin,18px) 0 clamp(11px,3.2vmin,18px) clamp(16px,4.6vmin,26px);border-color:#0000 #0000 #0000 #fff}.gameover{z-index:30;pointer-events:auto;text-align:center;background:#0a101a8c;flex-direction:column;justify-content:center;align-items:center;gap:clamp(10px,3vmin,22px);padding:clamp(16px,4vmin,40px);display:flex;position:absolute;inset:0}.gameover.hidden{display:none}.go-title{letter-spacing:.04em;color:#ffd23c;text-shadow:0 3px #00000040;font-size:clamp(40px,13vmin,96px);font-weight:900}.go-stats{font-variant-numeric:tabular-nums;gap:clamp(16px,5vmin,40px);font-size:clamp(16px,4.5vmin,43px);font-weight:700;display:flex}.go-restart{pointer-events:auto;letter-spacing:.08em;color:#1a1410;touch-action:none;-webkit-tap-highlight-color:transparent;background:#ffd23c;border:none;border-radius:16px;min-width:clamp(180px,50vmin,280px);min-height:clamp(56px,12vmin,72px);margin-top:.3em;font-size:clamp(18px,5vmin,43px);font-weight:800;transition:transform 50ms,box-shadow 50ms;box-shadow:0 6px #c79a14,0 10px 20px #0000004d}.go-restart:active{transform:translateY(3px);box-shadow:0 3px #c79a14,0 6px 12px #0000004d}.go-hint{letter-spacing:.1em;text-transform:uppercase;opacity:.7;font-size:clamp(11px,2.6vmin,23px)}.go-ad,.go-promo{background:#060a108c;border:1px solid #ffffff1f;border-radius:6px;width:min(468px,88vw);margin-top:clamp(4px,1.5vmin,12px);padding:6px}.go-ad-label{letter-spacing:.18em;text-transform:uppercase;opacity:.45;margin-bottom:4px;font-size:9px}.go-ad iframe{border:0;width:100%;height:90px;max-height:18vh;display:block}@media (max-height:420px){.go-ad,.go-promo{display:none}}.go-promo-link{color:inherit;padding:8px 10px;text-decoration:none;display:block}.go-promo-link strong{letter-spacing:.06em;color:#ffe08a;font-size:clamp(13px,3vmin,20px);display:block}.go-promo-link span{opacity:.75;margin-top:2px;font-size:clamp(10px,2.2vmin,14px);display:block}.go-promo-link:hover strong{color:#fff3c4}.go-earned{color:#ffe08a;font-size:clamp(15px,4vmin,37px);font-weight:800}.go-buttons{flex-wrap:wrap;justify-content:center;gap:clamp(10px,3vmin,18px);display:flex}.go-menu{pointer-events:auto;letter-spacing:.08em;color:#fff;touch-action:none;-webkit-tap-highlight-color:transparent;background:#121a2680;border:2px solid #ffffff80;border-radius:16px;min-width:clamp(120px,30vmin,170px);min-height:clamp(56px,12vmin,72px);font-size:clamp(15px,4vmin,34px);font-weight:800}.go-menu:active{transform:translateY(2px)}body.menu-open .hud-top,body.menu-open .hud-pause,body.menu-open .hud-horn,body.menu-open .touch-controls{display:none!important}.menu,.shop,.upgrades{z-index:40;pointer-events:auto;padding:clamp(16px,4vmin,40px);position:absolute;inset:0}.menu.hidden,.shop.hidden,.upgrades.hidden{display:none}.menu{flex-direction:column;justify-content:space-between;align-items:center;display:flex}.menu-bg{z-index:-1;background:linear-gradient(#04070edb 0%,#060a1457 38%,#060a146b 60%,#04070eeb 100%);position:absolute;inset:0;overflow:hidden}.menu-bg:after{content:"";background:linear-gradient(115deg,#0000 42%,#ffffff0d 50%,#0000 58%);animation:7s linear infinite menu-sheen;position:absolute;inset:-50%}@keyframes menu-sheen{0%{transform:translate(-28%)}to{transform:translate(28%)}}.menu-top{text-align:center}.menu-trafficlight{background:#080a108c;border:1px solid #ffffff1f;border-radius:999px;gap:clamp(6px,1.6vmin,10px);margin-bottom:clamp(10px,2.4vmin,18px);padding:clamp(6px,1.6vmin,10px) clamp(9px,2.2vmin,13px);display:inline-flex}.tl-lamp{opacity:.3;border-radius:50%;width:clamp(10px,2.4vmin,15px);height:clamp(10px,2.4vmin,15px)}.tl-red{opacity:1;background:#ff3b30;animation:1.4s ease-in-out infinite tl-pulse;box-shadow:0 0 12px #ff3b30}.tl-yellow{background:#ffd23b}.tl-green{background:#37e06a}@keyframes tl-pulse{0%,to{opacity:1}50%{opacity:.35}}.menu-kicker{letter-spacing:.34em;text-transform:uppercase;color:#ffd8b0;opacity:.92;text-shadow:0 0 14px #ff783c80;margin-bottom:clamp(4px,1.2vmin,10px);font-size:clamp(11px,2.6vmin,23px);font-weight:800}.menu-title{letter-spacing:.01em;color:#ff3b30;text-shadow:0 0 8px #ff3b30e6,0 0 28px #ff3b3080,0 4px #00000059;font-size:clamp(48px,16vmin,150px);font-weight:900;line-height:.84}.menu-title-2{color:#ffce3a;text-shadow:0 0 8px #ffce3ae6,0 0 30px #ffaa288c,0 4px #00000059;animation:3.6s linear infinite gaslight-flicker}@keyframes gaslight-flicker{0%,43%,47%,76%,80%,to{opacity:1}45%{opacity:.62}78%{opacity:.4}4%{opacity:.55}}.menu-tag{letter-spacing:.12em;color:#ffffffc7;text-shadow:0 2px 8px #0009;margin-top:clamp(8px,2vmin,16px);font-size:clamp(11px,2.8vmin,25px);font-style:italic}.menu-mid{flex-direction:column;gap:clamp(12px,3vmin,20px);width:min(86vw,380px);display:flex}.menu-btn{pointer-events:auto;letter-spacing:.14em;text-transform:uppercase;touch-action:none;-webkit-tap-highlight-color:transparent;border:none;border-radius:16px;width:100%;min-height:clamp(58px,13vmin,80px);font-size:clamp(20px,5.6vmin,50px);font-weight:900;transition:transform 60ms,box-shadow 60ms,filter .1s}.menu-play{color:#1a1006;background:linear-gradient(#ffe35a,#ffb31e);animation:2.2s ease-in-out infinite play-glow;box-shadow:inset 0 0 0 2px #ffffff40,0 8px #b9790f,0 16px 30px #ffa01e73}@keyframes play-glow{0%,to{box-shadow:inset 0 0 0 2px #ffffff40,0 8px #b9790f,0 16px 30px #ffa01e66}50%{box-shadow:inset 0 0 0 2px #ffffff59,0 8px #b9790f,0 18px 44px #ffb428b8}}.menu-shop{color:#fff;background:#ffffff14;border:2px solid #ffffff59;box-shadow:0 8px 22px #0006}.menu-btn:active{filter:brightness(1.06);transform:translateY(4px)}.menu-play:active{box-shadow:inset 0 0 0 2px #ffffff4d,0 3px #b9790f,0 8px 16px #ffa01e66}.menu-foot{align-items:center;gap:clamp(10px,3vmin,18px);display:flex}.menu-coins,.menu-best{color:#fff;background:#0a0e1899;border:1px solid #ffffff24;border-radius:999px;align-items:center;padding:.5em 1.1em;font-size:clamp(14px,3.4vmin,31px);font-weight:800;display:inline-flex}.shop{background:#080c16e0;flex-direction:column;align-items:center;gap:clamp(10px,2.5vmin,18px);display:flex}.shop-head,.shop-grid,.shop-note{width:100%;max-width:720px;margin-inline:auto}.shop-head{align-items:center;gap:clamp(8px,2vmin,16px);display:flex}.shop-back{pointer-events:auto;color:#fff;touch-action:none;-webkit-tap-highlight-color:transparent;background:#ffffff24;border:none;border-radius:12px;padding:.5em .9em;font-size:clamp(14px,3.4vmin,28px);font-weight:800}.shop-title{letter-spacing:.06em;color:#ffd23c;flex:1;font-size:clamp(22px,6vmin,36px);font-weight:900}.shop-coins{background:#ffd23c2e;border-radius:999px;padding:.4em .9em;font-size:clamp(15px,3.6vmin,34px);font-weight:800}.shop-preview{aspect-ratio:16/10;background:radial-gradient(120% 100% at 50% 18%,#2a3344,#11151e);border-radius:16px;width:100%;max-width:560px;max-height:36vh;margin-inline:auto;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff14}.skin3d{width:100%;height:100%;display:block}.shop-grid{touch-action:pan-y;-webkit-overflow-scrolling:touch;flex:1;grid-template-columns:repeat(auto-fill,minmax(clamp(120px,30vw,160px),1fr));align-content:start;gap:clamp(10px,2.5vmin,16px);padding:4px;display:grid;overflow-y:auto}.skin-card{background:#ffffff12;border:2px solid #ffffff14;border-radius:16px;flex-direction:column;gap:clamp(6px,1.5vmin,10px);padding:clamp(8px,2vmin,12px);display:flex}.skin-card.selected{background:#ffd23c1f;border-color:#ffd23c}.skin-swatch{aspect-ratio:16/9;background:linear-gradient(160deg,#2a3344,#161d29);border-radius:10px;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.skin-bus{filter:drop-shadow(0 3px 4px #00000059);width:86%;height:86%;display:block}.skin-prem{color:#fff2c0;text-shadow:0 1px 3px #0009;font-size:clamp(14px,3.6vmin,31px);position:absolute;top:6px;right:8px}.skin-name{text-align:center;font-size:clamp(13px,3vmin,26px);font-weight:800}.skin-btn{pointer-events:auto;letter-spacing:.04em;color:#16202e;touch-action:none;-webkit-tap-highlight-color:transparent;background:#ffd23c;border:none;border-radius:12px;min-height:clamp(40px,9vmin,52px);font-size:clamp(12px,3vmin,25px);font-weight:800}.skin-card.selected .skin-btn{background:#37e06a}.skin-card.locked .skin-btn{background:#ffffffd9}.skin-btn:disabled{opacity:.45}.shop-note{text-align:center;opacity:.7;font-size:clamp(11px,2.6vmin,22px)}.menu-row{gap:clamp(10px,3vmin,16px);width:100%;display:flex}.menu-sub{letter-spacing:.08em;flex:1;min-height:clamp(50px,11vmin,66px);font-size:clamp(15px,4.4vmin,34px)}.menu-garage{color:#16202e;background:#ffffffeb;box-shadow:0 6px #78829199,0 10px 20px #0000004d}.menu-upgrade{color:#06222e;background:linear-gradient(#8fe0ff,#36a9e0);box-shadow:0 6px #1f6c92,0 10px 20px #0000004d}.menu-sub:active{filter:brightness(1.06);transform:translateY(3px)}.menu-sound{pointer-events:auto;letter-spacing:.1em;color:#fff;touch-action:none;-webkit-tap-highlight-color:transparent;background:#0a0e1899;border:1px solid #ffffff24;border-radius:999px;padding:.5em .9em;font-size:clamp(12px,3vmin,25px);font-weight:800}.menu-sound.off{opacity:.5;text-decoration:line-through}.menu-options{pointer-events:auto;flex-direction:column;gap:clamp(4px,1.2vmin,8px);margin-top:clamp(4px,1.5vmin,10px);display:flex}.opt-row{color:#cfd6e4;letter-spacing:.12em;align-items:center;gap:clamp(8px,2vmin,14px);font-size:clamp(10px,2.4vmin,20px);font-weight:800;display:flex}.opt-name{text-align:right;width:5.5em}.opt-slider{accent-color:#ffd23c;cursor:pointer;width:clamp(120px,34vmin,220px)}.upgrades{background:#080c16ed;flex-direction:column;align-items:center;gap:clamp(8px,2.2vmin,16px);display:flex}.upgrades .shop-head,.up-list{width:100%;max-width:560px;margin-inline:auto}.up-busname{color:#ffd23c;letter-spacing:.06em;font-size:clamp(15px,4vmin,34px);font-weight:900}.up-preview{aspect-ratio:16/9;width:min(70vw,240px)}.up-preview .skin-bus{filter:drop-shadow(0 4px 6px #0006);width:100%;height:100%;display:block}.up-maxed{letter-spacing:.14em;color:#37e06a;text-shadow:0 0 12px #37e06a99;font-weight:900}.up-maxed.hidden{display:none}.up-list{-webkit-overflow-scrolling:touch;touch-action:pan-y;flex-direction:column;flex:1;align-content:start;gap:clamp(8px,2vmin,12px);padding:4px;display:flex;overflow-y:auto}.up-row{background:#ffffff0f;border:1px solid #ffffff14;border-radius:14px;align-items:center;gap:clamp(8px,2vmin,14px);padding:clamp(8px,2vmin,14px);display:flex}.up-info{flex:1;min-width:0}.up-name{font-size:clamp(14px,3.6vmin,29px);font-weight:800}.up-desc{opacity:.72;margin:.1em 0 .45em;font-size:clamp(10px,2.6vmin,20px)}.up-pips{gap:5px;display:flex}.up-pip{background:#ffffff29;border-radius:3px;width:clamp(16px,5vmin,28px);height:clamp(6px,1.6vmin,9px)}.up-pip.on{background:#37e06a;box-shadow:0 0 8px #37e06a99}.up-buy{pointer-events:auto;color:#1a1410;touch-action:none;-webkit-tap-highlight-color:transparent;background:#ffd23c;border:none;border-radius:12px;justify-content:center;align-items:center;min-width:clamp(74px,22vmin,112px);min-height:clamp(44px,10vmin,58px);font-size:clamp(13px,3.4vmin,28px);font-weight:800;display:inline-flex}.up-buy:disabled{opacity:.42}.up-buy.maxed{color:#06210f;background:#37e06a}.menu-quick{grid-template-columns:repeat(4,1fr);gap:clamp(6px,1.6vmin,10px);width:100%;display:grid}.quick-up{pointer-events:auto;color:#fff;touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0c121e9e;border:1px solid #ffffff29;border-radius:12px;flex-direction:column;align-items:center;gap:clamp(2px,.7vmin,5px);padding:clamp(6px,1.6vmin,10px) 2px;font-weight:800;transition:transform 60ms,background .1s,border-color .1s;display:flex}.quick-up:active{background:#1e2c42bf;transform:translateY(2px)}.quick-up:disabled{opacity:.45}.quick-up.maxed{border-color:#37e06a99}.quick-icon{font-size:clamp(15px,4vmin,34px);line-height:1}.quick-name{letter-spacing:.1em;opacity:.85;font-size:clamp(8px,2vmin,17px)}.quick-pips{gap:3px;display:flex}.quick-pip{background:#ffffff2e;border-radius:2px;width:clamp(7px,2vmin,12px);height:clamp(3px,.9vmin,5px)}.quick-pip.on{background:#37e06a;box-shadow:0 0 6px #37e06ab3}.quick-cost{color:#ffd23c;font-variant-numeric:tabular-nums;align-items:center;font-size:clamp(10px,2.6vmin,22px);display:inline-flex}.quick-up.maxed .quick-cost{color:#37e06a}.coin{vertical-align:-.12em;background:radial-gradient(circle at 35% 30%,#ffe9a0,#f4b81e 68%,#c8901a 100%);border-radius:50%;width:.95em;height:.95em;margin-right:.3em;display:inline-block;box-shadow:inset 0 0 0 2px #ffffff59}.popup-layer{z-index:24;pointer-events:none;position:absolute;inset:0;overflow:hidden}.popup{color:#ffd23c;text-shadow:0 2px 6px #0000008c;white-space:nowrap;font-size:clamp(22px,6.5vmin,44px);font-weight:900;animation:.9s ease-out forwards popup-rise;position:absolute;top:58%;transform:translate(-50%)}.popup.nm{color:#7fd0ff}.popup.cp{color:#fff;font-size:clamp(16px,4.5vmin,47px)}@keyframes popup-rise{0%{opacity:0;transform:translate(-50%,14px)scale(.8)}18%{opacity:1;transform:translate(-50%)scale(1.06)}to{opacity:0;transform:translate(-50%,-66px)scale(1)}}.nearmiss-flash{z-index:5;pointer-events:none;opacity:0;mix-blend-mode:screen;background:radial-gradient(#fff0 52%,#96d2ff59 86%,#78beff8c 100%);position:absolute;inset:0}.camera-flash{z-index:5;pointer-events:none;opacity:0;mix-blend-mode:screen;background:#fff;position:absolute;inset:0}.hud-combo{letter-spacing:.06em;color:#fff;text-shadow:0 2px 4px #0006;background:#ff3b30d9;border-radius:999px;align-self:center;margin-top:2px;padding:2px 12px;font-size:clamp(15px,4.2vmin,40px);font-weight:900;box-shadow:0 0 14px #ff3b308c}.hud-combo.hidden{display:none}#game canvas{image-rendering:pixelated;image-rendering:crisp-edges;width:100%!important;height:100%!important}.menu-missions{color:#ffffffd9;text-shadow:0 2px 6px #0009;flex-direction:column;gap:3px;font-size:clamp(11px,2.6vmin,22px);display:flex}.menu-mission{text-align:left}.menu-daily{color:#2a1c00;text-shadow:none;background:linear-gradient(#ffd23c,#e8a21e)}.hud-pursuit{letter-spacing:.16em;color:#fff;text-shadow:0 1px 2px #0009;background:#be1820eb;border-radius:3px;align-self:center;align-items:center;gap:.5em;padding:.22em .7em;font-size:clamp(10px,2.5vmin,22px);font-weight:800;display:flex;box-shadow:0 2px 10px #00000073}.hud-pursuit:before{content:"";background:#fff;border-radius:50%;width:.6em;height:.6em;animation:1.1s step-end infinite pursuit-live}@keyframes pursuit-live{0%,55%{opacity:1}56%,to{opacity:.15}}.hud-pursuit.hidden{display:none}@media (prefers-reduced-motion:reduce){.hud-pursuit:before{animation:none}}.go-reds{color:#ff6b61;font-size:clamp(13px,3.4vmin,29px);font-weight:700}.go-reds.hidden{display:none}.go-lb{pointer-events:auto;background:#0c101899;border-radius:14px;width:min(86vw,360px);padding:clamp(8px,2.2vmin,14px);display:none}.go-lb.show{display:block}.go-lb-title{letter-spacing:.22em;opacity:.8;margin-bottom:6px;font-size:clamp(11px,2.8vmin,22px);font-weight:800}.go-lb-list{font-variant-numeric:tabular-nums;max-height:clamp(90px,20vmin,150px);margin:0 0 8px;padding:0;font-size:clamp(12px,3.2vmin,23px);list-style:none;overflow-y:auto}.go-lb-list li{gap:8px;padding:2px 0;display:flex}.go-lb-list .rank{opacity:.6;text-align:right;min-width:1.6em}.go-lb-list .nm{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.go-lb-list .sv{color:#ffd23c;font-weight:800}.go-lb-form{gap:8px;display:flex}.go-lb-name{color:#fff;background:#080a10b3;border:2px solid #ffffff40;border-radius:10px;flex:1;min-width:0;min-height:44px;padding:0 12px;font-size:16px;font-weight:600}.go-lb-name:focus{border-color:#ffd23c;outline:none}.go-lb-submit{color:#1a1410;letter-spacing:.06em;-webkit-tap-highlight-color:transparent;background:#ffd23c;border:none;border-radius:10px;min-height:44px;padding:0 14px;font-size:clamp(12px,3.2vmin,22px);font-weight:800}.go-lb-submit:disabled{opacity:.5}.go-lb-msg{color:#ff8d96;margin-top:6px;font-size:clamp(11px,2.8vmin,20px)}.go-lb-msg.hidden{display:none}.speedo{z-index:21;width:clamp(92px,17vmin,170px);height:clamp(92px,17vmin,170px);position:absolute;bottom:clamp(70px,14vmin,120px);right:clamp(12px,3vmin,30px)}.speedo.hidden{display:none}.speedo-arc{--v:0;background:conic-gradient(from -135deg, #ffd23c 0deg, #ff5a4d calc(var(--v) * 270deg), #121a268c calc(var(--v) * 270deg), #121a268c 270deg, transparent 270deg);border-radius:50%;position:absolute;inset:0;-webkit-mask:radial-gradient(closest-side,#0000 72%,#000 73%);mask:radial-gradient(closest-side,#0000 72%,#000 73%)}.speedo-body{text-shadow:0 2px 8px #0000008c;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.speedo-val{font-variant-numeric:tabular-nums;font-size:clamp(26px,5.4vmin,52px);font-weight:900;line-height:1}.speedo-unit{letter-spacing:.18em;opacity:.8;font-size:clamp(9px,1.9vmin,15px);font-weight:800}.routemap{z-index:21;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#121a266b;border-radius:12px;width:clamp(96px,16vmin,160px);height:clamp(96px,16vmin,160px);position:absolute;bottom:clamp(70px,14vmin,120px);left:clamp(12px,3vmin,30px)}.routemap.hidden{display:none}.news{z-index:22;pointer-events:none;font-family:Helvetica Neue,Helvetica,Arial,Arial Narrow,sans-serif;position:absolute;inset:0}.news.hidden{display:none}.news-third{color:#10141c;background:linear-gradient(#f6f7fa 0%,#dfe3ea 52%,#c9cfd9 100%);border-top:2px solid #ffffffe6;align-items:stretch;min-height:clamp(46px,9vmin,84px);display:flex;position:absolute;bottom:clamp(24px,5vmin,50px);left:0;right:0;box-shadow:0 -6px 20px #00000059,inset 0 -1px #0000002e}.news-bug{color:#fff;background:linear-gradient(#1d3f8f 0%,#14275a 100%);align-items:center;gap:.4em;padding:0 clamp(10px,2.2vmin,22px);display:flex;box-shadow:inset -1px 0 #00000059}.news-bug b{text-shadow:0 1px #00000080;font-size:clamp(20px,5vmin,42px);font-style:italic;font-weight:900;line-height:1}.news-bug span{letter-spacing:.16em;opacity:.92;font-size:clamp(9px,2.1vmin,16px);font-weight:800}.news-tag{color:#fff;letter-spacing:.13em;white-space:nowrap;text-shadow:0 1px 1px #00000073;background:linear-gradient(#e8253a 0%,#b6111f 100%);align-items:center;padding:0 clamp(10px,2.2vmin,24px);font-size:clamp(10px,2.4vmin,19px);font-weight:900;display:flex;box-shadow:inset 0 1px #ffffff59}.news-tag.is-breaking{animation:1.1s ease-in-out infinite news-flash}@keyframes news-flash{0%,to{filter:brightness()}50%{filter:brightness(1.45)}}.news-body{flex-direction:column;flex:1;justify-content:center;gap:2px;min-width:0;padding:clamp(4px,1vmin,10px) clamp(10px,2.2vmin,26px);display:flex;overflow:hidden}.news-src{letter-spacing:.14em;color:#1d3f8f;white-space:nowrap;text-overflow:ellipsis;font-size:clamp(9px,2.1vmin,16px);font-weight:800;overflow:hidden}.news-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:clamp(13px,3vmin,26px);font-weight:700;line-height:1.15;display:-webkit-box;overflow:hidden}.news-text.news-in{animation:.34s ease-out news-wipe}@keyframes news-wipe{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:none}}.news-live{font-variant-numeric:tabular-nums;color:#10141c;background:#10141c0f;border-left:1px solid #10141c2e;align-items:center;gap:.42em;padding:0 clamp(10px,2.2vmin,22px);font-size:clamp(10px,2.4vmin,19px);font-weight:800;display:flex}.news-dot{background:#e8253a;border-radius:50%;width:.62em;height:.62em;animation:1.6s ease-in-out infinite news-pulse;box-shadow:0 0 0 2px #e8253a40}@keyframes news-pulse{0%,to{opacity:1}50%{opacity:.25}}.news-crawl{color:#eef2fb;letter-spacing:.02em;background:linear-gradient(#14275a 0%,#0b1836 100%);height:clamp(24px,5vmin,50px);font-size:clamp(11px,2.5vmin,20px);font-weight:700;position:absolute;bottom:0;left:0;right:0;overflow:hidden;box-shadow:inset 0 1px #ffffff2e}.news-track{white-space:nowrap;align-items:center;width:max-content;height:100%;animation:78s linear infinite news-crawl;display:flex}.news-track span{padding-right:0}@keyframes news-crawl{0%{transform:translate(0)}to{transform:translate(-50%)}}.news-stack{flex-direction:column;gap:clamp(7px,1.2vmin,12px);width:clamp(220px,26vw,460px);display:flex;position:absolute;top:24%;right:clamp(8px,2vmin,26px)}.news-card{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:#10141c;background:linear-gradient(#f6f7faf5 0%,#d7dce5f5 100%);border-left:clamp(4px,.7vmin,7px) solid #e8253a;border-radius:3px;padding:clamp(7px,1.2vmin,13px) clamp(10px,1.7vmin,18px);animation:.42s cubic-bezier(.2,.9,.3,1) news-cut-in;box-shadow:0 3px 12px #0006}.news-card.out{animation:.42s ease-in forwards news-cut-out}.news-card-src{letter-spacing:.12em;color:#b6111f;margin-bottom:2px;font-size:clamp(9px,2vmin,15px);font-weight:800}.news-card-text{-webkit-line-clamp:4;-webkit-box-orient:vertical;font-size:clamp(12px,2.4vmin,19px);font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}@keyframes news-cut-in{0%{opacity:0;transform:translate(38px)}to{opacity:1;transform:none}}@keyframes news-cut-out{0%{opacity:1;transform:none}to{opacity:0;transform:translate(38px)}}@media (max-width:720px),(max-height:460px){.news-stack{display:none}}@media (prefers-reduced-motion:reduce){.news-track,.news-tag.is-breaking,.news-dot,.news-text.news-in,.news-card,.news-card.out{animation:none}}
/*$vite$:1*/
/* MENU OVERFLOW FIX 2026-08-17.
   `.menu` was height:100% with overflow visible, so once its children were taller
   than the viewport the bottom of the menu was not merely clipped, it was
   UNREACHABLE: no scroll, no way to press Garage, Upgrades or the quick row.
   Measured before the fix: 1181px of content in 1080px at 1920x1080, 1079 in 768,
   813 in 540, 895 in 800x600. Only a portrait phone happened to fit. */
.menu{
  /* Nothing can ever be stranded again. space-between packs from the start once
     free space goes negative, so the overflow lands at the bottom where a scroll
     can reach it. This is the safety net, not the fix. */
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  padding:clamp(6px,1.6vmin,14px) 0;
}
/* The actual fix: stop the stack costing more height than it has. vmin on a
   landscape window is driven by HEIGHT, so these shrink exactly when height is
   what ran out. Desktop at 16:9 and taller keeps the authored sizes. */
@media (max-height:900px){
  .menu-title{font-size:clamp(34px,11vmin,96px)}
  .menu-kicker{margin-bottom:clamp(2px,.6vmin,6px)}
  .menu-trafficlight{margin-bottom:clamp(4px,1.2vmin,10px)}
  .menu-tag{margin-top:clamp(3px,1vmin,8px)}
  .menu-mid{gap:clamp(7px,1.8vmin,13px)}
  .menu-btn{min-height:clamp(42px,9vmin,60px);font-size:clamp(16px,4.2vmin,34px)}
  .menu-sub{min-height:clamp(36px,7.5vmin,48px);font-size:clamp(13px,3.2vmin,24px)}
  .menu-foot{gap:clamp(6px,1.8vmin,12px)}
  .menu-options{margin-top:clamp(2px,.8vmin,6px);gap:clamp(2px,.7vmin,5px)}
}
@media (max-height:620px){
  .menu-title{font-size:clamp(26px,8.5vmin,64px)}
  .menu-tag{display:none}          /* the tagline is the first thing worth losing */
  .menu-btn{min-height:clamp(36px,7.5vmin,48px);font-size:clamp(14px,3.6vmin,26px)}
  .menu-sub{min-height:clamp(30px,6vmin,40px)}
  .menu-missions{font-size:clamp(10px,2.2vmin,16px)}
}

/* The options block was the last thing still hanging past the bottom at every
   size. It is three slider rows whose height barely responds to vmin, so it is
   shrunk directly rather than left to the clamps. */
@media (max-height:900px){
  .opt-row{gap:clamp(5px,1.2vmin,9px);font-size:clamp(9px,1.9vmin,14px)}
  .opt-slider{width:clamp(90px,22vmin,150px)}
  .opt-name{width:4.6em}
}
@media (max-height:620px){
  .opt-row{font-size:clamp(8px,1.6vmin,12px);gap:4px}
  .opt-slider{width:clamp(70px,17vmin,110px)}
  .menu-foot{gap:6px}
}

/* The 900px breakpoint above never fired on a 1080p desktop, which is why the
   options block still hung 59px past the bottom there. These rows are three
   small slider lines; they do not need to scale with the viewport at all, so the
   compaction is unconditional and the media queries above only tighten it
   further on genuinely short screens. */
.menu-options{margin-top:6px;gap:4px}
.opt-row{gap:8px;font-size:14px;font-weight:700}
.opt-name{width:4.6em}
.opt-slider{width:150px}
.menu-foot{gap:clamp(8px,2vmin,14px)}
