:root{font-family:Trebuchet MS,Segoe UI,sans-serif;color:#ecf2ff;background:#0b1622}*{box-sizing:border-box}html,body,#app{width:100%;height:var(--app-dynamic-height, 100dvh);min-height:var(--app-dynamic-height, 100dvh);margin:0;overflow:hidden}#app{position:relative;touch-action:manipulation}canvas{display:block}.mobile-splash{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 50% 40%,#0e1a2ce5,#04080ef7);opacity:1;transition:opacity .4s ease;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.mobile-splash--out{opacity:0;pointer-events:none}.mobile-splash__card{width:min(92vw,520px);text-align:center;pointer-events:none}.mobile-splash__logo{width:min(84vw,480px);max-height:min(40dvh,320px);object-fit:contain;filter:drop-shadow(0 14px 28px rgb(0 0 0 / 56%))}.mobile-splash__hint{margin:20px 0 32px;color:#c8dcf5bf;font-size:clamp(.78rem,2.4vw,.9rem);line-height:1.55}.mobile-splash__cta{display:inline-block;padding:14px 40px;border-radius:999px;border:1px solid rgb(237 245 255 / 34%);background:linear-gradient(180deg,#e9f2ff,#cbdcf3);color:#172437;font-size:.9rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;box-shadow:inset 0 1px #ffffff94,0 8px 20px #00000061;animation:mobile-splash-pulse 2.2s ease-in-out infinite}@keyframes mobile-splash-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.78;transform:scale(.96)}}.mouse-lock-splash{position:absolute;inset:0;z-index:12;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 38%,#1a2c4205,#080e1614 58%,#04080e24);pointer-events:none;opacity:1;transition:opacity 7s linear}.mouse-lock-splash--fading{opacity:0}.mouse-lock-splash__logo{width:min(82vw,880px);max-height:min(64dvh,560px);object-fit:contain;filter:drop-shadow(0 14px 24px rgb(0 0 0 / 48%))}.mouse-lock-splash--hidden{display:none}.run-end-overlay{position:absolute;inset:0;z-index:14;display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;background:radial-gradient(circle at 50% 38%,#111d2c6b,#060a10d1);transition:opacity .65s ease}.run-end-overlay--hidden{display:none}.run-end-overlay--visible{opacity:1;pointer-events:auto}.run-end-overlay__card{width:min(92vw,680px);padding:clamp(18px,3vw,28px);border-radius:18px;text-align:center;background:linear-gradient(180deg,#162334eb,#080e17f0);border:1px solid rgb(199 228 255 / 26%);box-shadow:0 28px 42px #00000085,inset 0 1px #f0f8ff2e}.run-end-overlay.is-won .run-end-overlay__card{border-color:#abf3c473}.run-end-overlay.is-failed .run-end-overlay__card{border-color:#ffbfbf73}.run-end-overlay__logo{width:min(84vw,560px);max-height:min(36dvh,260px);object-fit:contain;filter:drop-shadow(0 12px 20px rgb(0 0 0 / 42%))}.run-end-overlay__title{margin:8px 0 6px;font-size:clamp(1.15rem,2.4vw,1.6rem);letter-spacing:.08em;text-transform:uppercase}.run-end-overlay__message{margin:0;color:#d9e7f5ed;font-size:clamp(.84rem,1.6vw,1rem)}.run-end-overlay__restart{margin-top:16px;padding:10px 24px;border-radius:999px;border:1px solid rgb(237 245 255 / 34%);background:linear-gradient(180deg,#e9f2ff,#cbdcf3);color:#172437;font-size:.86rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;cursor:pointer}.run-end-overlay__restart:hover{filter:brightness(1.04)}.run-end-overlay__restart:active{transform:translateY(1px)}.cabin-chrome{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:hidden}.cabin-chrome:before{content:"";position:absolute;inset:0;background:radial-gradient(130% 110% at 50% -12%,rgb(0 0 0 / 36%) 0%,transparent 47%),radial-gradient(120% 125% at 50% 50%,transparent 60%,rgb(0 0 0 / 42%) 100%)}.cabin-chrome__roof{position:absolute;top:0;left:0;right:0;height:clamp(34px,6.8dvh,84px);background:linear-gradient(180deg,#48525d,#2e363f 48%,#161c22),repeating-linear-gradient(90deg,#ffffff08 0 14px,#0000 14px 28px);box-shadow:inset 0 -1px #d1e4f633,0 14px 24px #0000006b}.cabin-chrome__roof:after{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:8px;width:min(72vw,760px);height:2px;background:linear-gradient(90deg,#91a7bc00,#b8cee494,#91a7bc00)}.cabin-chrome__pillar{position:absolute;top:0;bottom:clamp(30px,5.6dvh,74px);width:clamp(10px,2vw,24px);background:linear-gradient(180deg,#4a545f,#283039 44%,#12171d),repeating-linear-gradient(180deg,#ffffff08 0 11px,#0000 11px 22px);box-shadow:inset -1px 0 #e0efff17,inset 0 0 0 1px #0000007a,0 10px 16px #00000057}.cabin-chrome__pillar--left{left:0;clip-path:polygon(0 0,100% 10%,100% 100%,0 100%)}.cabin-chrome__pillar--right{right:0;clip-path:polygon(0 10%,100% 0,100% 100%,0 100%)}.cabin-chrome__sill{position:absolute;left:0;right:0;bottom:0;height:clamp(30px,5.6dvh,74px);background:linear-gradient(180deg,#39434e,#202730 54%,#10141a),repeating-linear-gradient(90deg,#ffffff08 0 16px,#0000 16px 30px);box-shadow:inset 0 1px #cde2f733,0 -10px 24px #00000075}.cabin-chrome__sill:before{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:0;width:clamp(120px,32vw,420px);height:clamp(16px,3dvh,40px);border-top-left-radius:42% 100%;border-top-right-radius:42% 100%;background:linear-gradient(180deg,#4e5a68,#1b222b 56%,#0d1116);box-shadow:inset 0 1px #e0f0ff33,0 -8px 20px #0006}.cabin-chrome__glass-sheen{position:absolute;top:clamp(40px,7dvh,88px);left:clamp(14px,2.8vw,36px);right:clamp(14px,2.8vw,36px);bottom:clamp(34px,6.4dvh,90px);border-radius:clamp(10px,2.6vw,24px);background:linear-gradient(118deg,rgb(255 255 255 / 22%) 0%,rgb(255 255 255 / 5%) 14%,transparent 34%),linear-gradient(66deg,transparent 62%,rgb(189 222 255 / 10%) 78%,transparent 100%);opacity:.52}.hud{position:absolute;inset:0;pointer-events:none;z-index:5}.hud-status-banner{position:absolute;top:14px;left:50%;transform:translate(-50%);max-width:min(74vw,720px);padding:8px 14px;border-radius:999px;border:1px solid rgb(255 255 255 / 22%);background:#0e16229e;color:#e9f4fff2;text-align:center;font-size:clamp(.72rem,1.2vw,.9rem);line-height:1.2;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 2px 6px rgb(0 0 0 / 36%);box-shadow:0 10px 18px #00000038;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.hud-status-banner.is-running{border-color:#aad3ff4d;background:#101e2e9e}.hud-status-banner.is-won{border-color:#b6ffce8f;background:#0a2e1fb8;color:#e1ffecfa}.hud-status-banner.is-failed{border-color:#ffbaba8f;background:#3c0e0eb8;color:#ffe4e4fc}.hud-preview-cluster{position:absolute;top:14px;left:14px;display:flex;flex-direction:column;align-items:flex-start;gap:10px}.hud-speed{margin:0;display:flex;align-items:baseline;gap:6px;color:#f6fbff;line-height:1}.hud-speed-floating{position:absolute;top:8px;right:8px}.hud-speed-value{font-size:clamp(1.7rem,3.2vw,2.3rem);font-weight:700;font-variant-numeric:tabular-nums}.hud-speed-unit{font-size:clamp(.78rem,1.5vw,.95rem);letter-spacing:.08em;text-transform:uppercase;color:#d7e9ffe5}.minimap-canvas{width:min(260px,33vw);height:118px;border-radius:6px;border:none;background:linear-gradient(180deg,#414e5d38,#a4c5ec00);box-shadow:0 0 0 1px #abd1ff2e}.speed-limit-sign{position:absolute;top:14px;right:14px;align-self:flex-start;width:clamp(42px,8.5vw,68px);min-height:76px;border-radius:8px;padding:8px 7px;background:#fafbff;color:#111;border:4px solid #121212;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;box-shadow:0 8px 17px #00000054}.speed-limit-label{font-size:.5rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;line-height:1.15}.speed-limit-value{margin-top:6px;font-size:clamp(1.45rem,3vw,1.9rem);font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.speed-limit-unit{margin-top:4px;font-size:.55rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.comfort-gauge{position:fixed;top:50dvh;right:18px;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:5px;width:62px;color:#ebf3ff;text-transform:uppercase;letter-spacing:.08em}.comfort-gauge-label{font-size:.5rem;font-weight:700}.comfort-gauge-track{position:relative;width:22px;height:122px;border-radius:999px;background:#080f18b3;border:1px solid rgb(176 211 245 / 34%);overflow:hidden;box-shadow:inset 0 1px 3px #00000073,0 3px 10px #00000042}.comfort-gauge-track:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(to top,#fff0 0 10px,#ffffff29 10px 11px);pointer-events:none}.comfort-gauge-fill{position:absolute;left:0;right:0;bottom:0;height:100%;background:linear-gradient(180deg,#74df97,#b7d96d 60%,#df9a62 82%,#d16363);transition:height .18s linear}.comfort-gauge-value{font-size:.6rem;font-weight:700;font-variant-numeric:tabular-nums}.comfort-gauge.is-warning .comfort-gauge-value{color:#ffd88d}.comfort-gauge.is-low .comfort-gauge-value{color:#ff9b9b}.throttle-overlay-canvas{pointer-events:auto}.brake-button{position:absolute;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));width:122px;height:122px;border-radius:999px;border:2px solid rgb(252 224 224 / 70%);background:radial-gradient(circle at 35% 28%,rgb(255 165 165 / 42%) 0%,transparent 42%),linear-gradient(165deg,#b92a2af2,#600b0bf5);color:#ffecee;font-size:.82rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;box-shadow:inset 0 1px #ffdddd5c,inset 0 -3px 10px #2300005c,0 10px 24px #0000006b;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;cursor:pointer;transition:transform 90ms ease,box-shadow .12s ease,filter .12s ease}.brake-button.is-pressed{transform:translateY(1px) scale(.97);box-shadow:inset 0 2px 8px #2c00006b,inset 0 -1px #ffecec42,0 5px 14px #00000057}.brake-button.is-braking{filter:brightness(1.1) saturate(1.18);box-shadow:inset 0 1px #ffdada6b,inset 0 -3px 10px #23000057,0 0 0 2px #ff7e7e59,0 12px 24px #00000075}@media(max-width:1023px){.cabin-chrome__roof{height:clamp(30px,5.6dvh,62px)}.cabin-chrome__pillar{bottom:clamp(28px,5.2dvh,62px);width:clamp(8px,1.8vw,16px)}.cabin-chrome__sill{height:clamp(28px,5.2dvh,62px)}.cabin-chrome__sill:before{width:clamp(108px,30vw,300px);height:clamp(12px,2.5dvh,28px)}.cabin-chrome__glass-sheen{top:clamp(34px,5.8dvh,74px);left:clamp(10px,2.1vw,22px);right:clamp(10px,2.1vw,22px);bottom:clamp(28px,5.2dvh,64px)}.hud-status-banner{top:10px;max-width:min(80vw,620px);padding:7px 12px;font-size:clamp(.64rem,1.25vw,.8rem)}.hud-preview-cluster{top:12px;left:12px;gap:8px}.hud-speed-floating{top:7px;right:7px}.hud-speed-value{font-size:clamp(1.35rem,2.9vw,1.95rem)}.hud-speed-unit{font-size:clamp(.66rem,1.35vw,.82rem)}.minimap-canvas{width:min(218px,30vw);height:98px}.speed-limit-sign{top:12px;right:12px;width:clamp(38px,7.3vw,56px);min-height:62px;border-width:3px;padding:6px 5px;border-radius:7px}.speed-limit-label{font-size:.42rem}.speed-limit-value{margin-top:4px;font-size:clamp(1.05rem,2.5vw,1.45rem)}.speed-limit-unit{margin-top:2px;font-size:.44rem}.comfort-gauge{top:50dvh;right:12px;width:50px;gap:4px}.comfort-gauge-track{width:18px;height:92px}.comfort-gauge-value{font-size:.52rem}.brake-button{right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));width:min(20vw,92px);height:min(20vw,92px);min-width:72px;min-height:72px;font-size:clamp(.66rem,1.8vw,.78rem);letter-spacing:.1em}}@media(max-width:720px){.hud-status-banner{top:8px;max-width:min(94vw,620px);padding:6px 10px;font-size:clamp(.58rem,2.2vw,.72rem)}.hud-preview-cluster{top:36px;left:8px;gap:6px}.hud-speed-floating{top:32px;right:8px}.minimap-canvas{width:min(178px,50vw);height:82px}.speed-limit-sign{top:36px;right:8px;width:56px;min-height:72px;border-width:3px;padding:6px 4px}.speed-limit-label{font-size:.4rem}.speed-limit-value{margin-top:4px;font-size:clamp(.95rem,4vw,1.25rem)}.speed-limit-unit{margin-top:2px;font-size:.42rem}.comfort-gauge{top:50dvh;right:8px;width:46px}.comfort-gauge-track{width:16px;height:80px}.brake-button{right:max(8px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));width:min(10vw,72px);height:min(10vw,72px);min-width:64px;min-height:64px;font-size:clamp(.6rem,2.4vw,.72rem)}}
