:root{--bg: #07111a;--glass: rgba(8, 20, 30, .62);--glass-strong: rgba(8, 18, 28, .86);--line: rgba(255, 255, 255, .14);--text: #eef3f6;--muted: #9fb3c1;--celeste: #74acdf;--accent: #ffc83d;--accent-2: #ff7a2a;--good: #49d17d;--bad: #ff5a4f;--font: "Rajdhani", "Segoe UI", system-ui, sans-serif;--display: "Teko", "Rajdhani", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font)}button{font-family:inherit}kbd{display:inline-block;min-width:1.6em;padding:0 .35em;margin:0 .12em;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;background:#ffffff14;font-family:var(--font);font-weight:700;font-size:.85em;text-align:center}.app{position:fixed;top:0;right:0;bottom:0;left:0}.canvas-host{position:absolute;top:0;right:0;bottom:0;left:0}.game-canvas{width:100%;height:100%;display:block}.screen{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:10}.panel{background:var(--glass);border:1px solid var(--line);border-radius:14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 10px 40px #00000059}.btn{display:block;width:100%;margin:8px 0;padding:11px 18px;border-radius:10px;border:1px solid var(--line);background:#ffffff12;color:var(--text);font-size:18px;font-weight:700;letter-spacing:.04em;cursor:pointer;transition:transform .12s,background .15s,border-color .15s}.btn:hover{background:#ffffff24;border-color:#ffffff4d;transform:translateY(-1px)}.btn.primary{background:linear-gradient(180deg,#ffd45e,#f0a81c);color:#1b1203;border-color:transparent}.btn.danger{background:#ff5a4f29;border-color:#ff5a4f66}.btn.ghost-btn{width:auto;display:inline-block;padding:8px 16px;font-size:16px}.logo{font-family:var(--display);font-weight:600;font-size:128px;line-height:.85;margin:0;letter-spacing:.04em;color:#fff;text-shadow:0 6px 30px rgba(0,0,0,.5)}.logo span{color:var(--accent)}.logo.small{font-size:40px}.loading-screen{background:radial-gradient(ellipse at 50% 30%,#12324a,#07111a 70%)}.loading-box{width:min(560px,86vw);text-align:center}.progress{margin:28px 0 12px;height:8px;border-radius:99px;background:#ffffff1a;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--celeste),var(--accent));transition:width .25s}.loading-label{color:var(--muted);font-size:18px}.loading-label b{color:var(--text);margin-left:6px}.loading-tip{margin-top:26px;color:var(--muted);font-size:15px;opacity:.8}.error-screen{background:#07111af0}.error-screen .panel{padding:28px 32px;max-width:640px}.error-screen pre{white-space:pre-wrap;max-height:220px;overflow:auto;font-size:12px;background:#00000059;padding:10px;border-radius:8px;color:#ffb4ad}.title-screen{justify-content:flex-start}.title-vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#040c14d1,#040c1459 45%,#040c1400 70%),linear-gradient(0deg,#040c1499,#040c1400 35%);pointer-events:none}.title-content{position:relative;margin-left:7vw;width:460px;animation:rise .9s ease-out both}.title-kicker{color:var(--celeste);letter-spacing:.32em;font-weight:700;font-size:14px;margin-bottom:10px}.title-sub{color:var(--muted);font-size:20px;margin:10px 0 36px;letter-spacing:.12em}.title-content .logo{margin-bottom:40px}.btn.play{font-family:var(--display);font-size:44px;padding:6px 0 0;background:linear-gradient(180deg,#ffd45e,#f0a81c);color:#1b1203;border:none;letter-spacing:.18em;box-shadow:0 10px 30px #f0a81c59;width:320px}.btn.play:hover{transform:translateY(-2px) scale(1.02)}.title-content .ghost-btn{margin-top:6px}.title-foot{position:absolute;bottom:22px;left:7vw;color:var(--muted);font-size:15px;letter-spacing:.06em}@keyframes rise{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.menu-screen{background:linear-gradient(0deg,#040c14bf,#040c1459)}.menu-panel{width:min(1180px,94vw);max-height:90vh;overflow:auto;padding:22px 26px 26px;background:var(--glass-strong);border:1px solid var(--line);border-radius:18px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:rise .45s ease-out both}.menu-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.menu-actions{display:flex;gap:10px}.mode-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.mode-card{text-align:left;padding:26px 24px;min-height:280px;border-radius:16px;border:1px solid var(--line);color:var(--text);cursor:pointer;display:flex;flex-direction:column;transition:transform .15s,border-color .15s,box-shadow .15s}.mode-card:hover{transform:translateY(-4px);border-color:#fff6;box-shadow:0 14px 40px #0006}.mode-card.explore{background:linear-gradient(160deg,#286e5a8c,#0a1e1e99)}.mode-card.race{background:linear-gradient(160deg,#c8781480,#28140599)}.mode-card.challenge{background:linear-gradient(160deg,#3c6ec880,#0a143299)}.mode-icon{font-size:40px}.mode-card h3{font-family:var(--display);font-weight:500;font-size:44px;margin:10px 0 4px;line-height:1}.mode-card p{color:#d6e2ea;font-size:17px;line-height:1.35;flex:1}.mode-meta{color:var(--accent);font-weight:700;letter-spacing:.05em}.event-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px}.event-cols.single{grid-template-columns:1fr}.col-title{font-family:var(--display);font-weight:500;font-size:30px;margin:4px 0 8px;color:var(--accent);letter-spacing:.05em}.event-card{display:block;width:100%;text-align:left;padding:14px 16px;margin-bottom:12px;border-radius:12px;border:1px solid var(--line);background:#ffffff0d;color:var(--text);cursor:pointer;transition:background .15s,border-color .15s,transform .12s}.event-card:hover{background:#ffffff1c;border-color:#ffffff59;transform:translate(3px)}.event-head{display:flex;justify-content:space-between;align-items:baseline}.event-name{font-size:22px;font-weight:700}.diff{color:var(--accent);letter-spacing:2px}.event-sub{color:var(--celeste);font-weight:600}.event-desc{color:var(--muted);font-size:15px;margin:6px 0;line-height:1.3}.event-rec{font-size:15px;color:#cfdbe3;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.medal{padding:1px 8px;border-radius:99px;font-size:13px;font-weight:700;margin-left:6px}.medal-oro{background:#f6c945;color:#2b1d00}.medal-plata{background:#cfd8dc;color:#1c2427}.medal-bronce{background:#d08a4e;color:#2a1404}.pause-screen,.settings-screen,.results-screen{background:#040c1480}.settings-screen{z-index:30}.pause-panel{width:340px;padding:26px;text-align:center}.pause-panel h2,.settings-panel h2{font-family:var(--display);font-weight:500;font-size:48px;margin:0 0 10px;letter-spacing:.1em}.settings-panel{width:min(520px,92vw);padding:24px 28px}.settings-panel .row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 0;border-bottom:1px solid var(--line);font-size:18px}.settings-panel select,.settings-panel input[type=range]{background:#ffffff14;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-family:inherit;font-size:16px;min-width:210px}.settings-panel select option{background:#0c1c28}.settings-panel input[type=checkbox]{width:22px;height:22px;accent-color:var(--accent)}.hint{color:var(--muted);font-size:13px;padding:4px 0 2px}.settings-foot{display:flex;gap:12px;margin-top:14px}.results-panel{width:min(560px,92vw);padding:26px 30px;text-align:center;animation:rise .4s ease-out both}.results-kicker{color:var(--celeste);letter-spacing:.25em;font-weight:700}.results-panel h2{font-family:var(--display);font-weight:500;font-size:46px;margin:4px 0 8px}.medal-big{display:inline-block;padding:4px 22px;border-radius:99px;font-weight:800;font-size:20px;letter-spacing:.1em;text-transform:uppercase}.medal-big.medal-none{background:#ffffff1a;color:var(--muted)}.results-time{font-family:var(--display);font-size:84px;line-height:1;margin:12px 0 4px}.new-record{color:var(--accent);font-weight:800;letter-spacing:.12em;animation:pulse 1s infinite alternate}@keyframes pulse{0%{opacity:.6}to{opacity:1}}.results-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin:16px 0;text-align:left}.results-grid label,.race-grid label{display:block;color:var(--muted);font-size:13px;letter-spacing:.06em;text-transform:uppercase}.results-grid b{font-size:20px}.laps{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;color:var(--muted);margin-bottom:8px}.results-actions{display:flex;gap:12px}.hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.hud button{pointer-events:auto}.hud-top-left{position:absolute;top:18px;left:22px;text-shadow:0 2px 8px rgba(0,0,0,.7)}.zone{font-family:var(--display);font-size:40px;line-height:.95;font-weight:500;letter-spacing:.02em}.coords{color:#d6e2ea;font-size:15px;font-weight:600;letter-spacing:.05em}.zones-found{color:var(--accent);font-size:14px;font-weight:700;margin-top:2px}.hud-top-right{position:absolute;top:16px;right:18px;display:flex;align-items:center;gap:8px}.cam-name{color:#d6e2ea;font-weight:600;font-size:15px;margin-right:6px;text-shadow:0 2px 6px rgba(0,0,0,.7)}.icon-btn{width:42px;height:42px;border-radius:10px;border:1px solid var(--line);background:var(--glass);color:var(--text);font-size:18px;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.icon-btn:hover{background:#ffffff29}.compass{position:absolute;top:14px;left:50%;transform:translate(-50%);width:420px;height:40px;overflow:hidden;border-radius:10px;background:var(--glass);border:1px solid var(--line);-webkit-mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent);mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent)}.cmp-strip{position:absolute;top:0;left:50%;height:100%}.cmp-mark{position:absolute;top:0;height:100%;width:0}.cmp-mark:before{content:"";position:absolute;top:0;left:0;width:1px;height:8px;background:#ffffff80}.cmp-mark span{position:absolute;top:12px;transform:translate(-50%);font-size:13px;color:var(--muted);font-weight:600}.cmp-mark.major span{font-size:20px;color:#fff;top:8px;font-weight:700}.cmp-mark.major:before{height:6px;background:var(--accent);width:2px}.cmp-center{position:absolute;left:50%;top:0;width:2px;height:100%;background:var(--accent);transform:translate(-1px);opacity:.85}.cmp-deg{position:absolute;right:70px;top:10px;font-size:13px;color:var(--accent);font-weight:700;display:none}.race-panel{position:absolute;top:66px;left:50%;transform:translate(-50%);padding:8px 18px 10px;text-align:center;min-width:360px}.race-name{color:var(--celeste);font-weight:700;letter-spacing:.12em;font-size:14px;text-transform:uppercase}.race-time{font-family:var(--display);font-size:52px;line-height:.95;letter-spacing:.03em}.race-grid{display:flex;gap:18px;justify-content:center}.race-grid b{font-size:18px}.race-grid .pen b{color:var(--bad)}.countdown{position:absolute;top:34%;left:50%;transform:translate(-50%,-50%);font-family:var(--display);font-size:220px;color:var(--accent);text-shadow:0 10px 40px rgba(0,0,0,.6);animation:pop .9s ease-out both}@keyframes pop{0%{transform:translate(-50%,-50%) scale(1.8);opacity:0}30%{opacity:1}to{transform:translate(-50%,-50%) scale(1);opacity:.85}}.minimap-wrap{position:absolute;left:22px;bottom:22px;width:214px;height:214px;border-radius:50%;padding:2px;background:linear-gradient(140deg,#fff6,#ffffff0d);box-shadow:0 8px 30px #00000073}.minimap{width:210px;height:210px;border-radius:50%;display:block}.dash{position:absolute;right:22px;bottom:16px;display:flex;align-items:flex-end;gap:10px}.speedo{width:236px;height:236px;filter:drop-shadow(0 8px 24px rgba(0,0,0,.5))}.speedo-bg{fill:#061018b3;stroke:#ffffff24;stroke-width:1.5}.rpm-track{fill:none;stroke:#ffffff1a;stroke-width:5}.rpm-red{fill:none;stroke:#ff50468c;stroke-width:5}.rpm-bar{fill:none;stroke:var(--celeste);stroke-width:5;stroke-linecap:round}.rpm-bar.hot{stroke:var(--bad)}.spd-track{fill:none;stroke:#ffffff14;stroke-width:9}.spd-bar{fill:none;stroke:var(--accent);stroke-width:9;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(255,200,61,.5))}.tick{stroke:#ffffff59;stroke-width:1.5}.tick.major{stroke:#ffffffd9;stroke-width:2.5}.tick-label{fill:#c9d6df;font-size:11px;text-anchor:middle;font-weight:700;font-family:var(--font)}.needle{stroke:#ff4d3d;stroke-width:3;stroke-linecap:round}.needle-hub{fill:#fff}.speed-num{fill:#fff;font-family:var(--display);font-size:54px;text-anchor:middle}.speed-unit{fill:var(--muted);font-size:13px;text-anchor:middle;font-weight:700;letter-spacing:.1em;font-family:var(--font)}.rpm-num{fill:var(--celeste);font-size:12px;text-anchor:middle;font-weight:700;font-family:var(--font)}.dash-side{display:flex;flex-direction:column;gap:8px;padding-bottom:18px;width:128px}.gear{align-self:flex-start;font-family:var(--display);font-size:56px;line-height:.85;width:64px;height:60px;text-align:center;padding-top:6px;border-radius:10px;background:var(--glass);border:1px solid var(--line)}.gear-F{color:var(--good)}.gear-N{color:var(--muted)}.gear-R{color:var(--bad)}.bar{background:var(--glass);border:1px solid var(--line);border-radius:8px;padding:4px 8px 6px}.bar-label{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted)}.bar-track{height:6px;background:#ffffff1a;border-radius:99px;overflow:hidden;margin-top:2px}.bar-fill{height:100%;border-radius:99px;transition:width .1s linear}.bar.fuel .bar-fill{background:linear-gradient(90deg,#49d17d,#b5e655)}.bar.fuel.low .bar-fill{background:var(--bad)}.bar.fuel.low{animation:pulse .6s infinite alternate}.bar.thr .bar-fill{background:var(--celeste)}.help{position:absolute;bottom:22px;left:50%;transform:translate(-50%);display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;padding:9px 16px;max-width:760px;font-size:15px;color:#dbe6ee}.bigmap-wrap{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#040c148c}.bigmap{width:min(94vw,128.125vh);height:auto;aspect-ratio:1100 / 704;border-radius:16px;border:1px solid var(--line);box-shadow:0 20px 60px #0009}.bigmap-title{margin-top:10px;color:#dbe6ee;font-weight:600}.speedlines{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .3s;background:repeating-conic-gradient(from 0deg at 50% 55%,#fff0,#fff0 2.2deg,#ffffff14,#ffffff14,#fff0 2.8deg,#fff0 6deg);-webkit-mask-image:radial-gradient(ellipse at 50% 55%,transparent 35%,#000 75%);mask-image:radial-gradient(ellipse at 50% 55%,transparent 35%,#000 75%);animation:speedspin .35s linear infinite}@keyframes speedspin{0%{transform:scale(1)}50%{transform:scale(1.03)}to{transform:scale(1)}}.toasts{position:absolute;top:172px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;z-index:40;pointer-events:none}.toast{padding:8px 18px;border-radius:10px;background:var(--glass-strong);border:1px solid var(--line);font-size:18px;font-weight:700;letter-spacing:.03em;animation:toastIn 2.9s ease-out both}.toast-good{border-color:#49d17d99;color:#b8f5cf}.toast-bad{border-color:#ff5a4f99;color:#ffc2bd}.toast-gold{border-color:#ffc83db3;color:#ffe39a}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)}10%{opacity:1;transform:none}85%{opacity:1}to{opacity:0}}.gps-panel{position:absolute;top:66px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:8px 12px 8px 10px;max-width:min(520px,92vw);border-color:#3fe0ff73}.gps-arrow{width:52px;height:52px;flex:none;transition:transform .15s linear}.gps-arrow path{fill:#3fe0ff;stroke:#06202a;stroke-width:2}.gps-text{min-width:0}.gps-instr{font-size:22px;font-weight:700;line-height:1.05}.gps-instr b{color:#3fe0ff}.gps-dest{color:var(--muted);font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gps-dest b{color:var(--text)}.gps-x{pointer-events:auto;flex:none;width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:#ffffff0f;color:var(--text);cursor:pointer;font-size:15px}.icon-btn.gps-btn{width:auto;padding:0 12px;font-weight:800;letter-spacing:.06em;font-size:15px}.icon-btn.gps-btn.on{border-color:#3fe0ff;color:#3fe0ff}.dest-picker{pointer-events:auto;position:absolute;top:66px;right:18px;width:min(360px,92vw);max-height:calc(100% - 90px);display:flex;flex-direction:column;padding:14px;z-index:8}.dest-head{display:flex;justify-content:space-between;align-items:center}.dest-head h3{margin:0;font-family:var(--display);font-weight:500;font-size:30px}.dest-map-btn{font-size:16px;padding:9px 12px}.dest-list{overflow-y:auto;min-height:0}.dest-group{color:var(--accent);font-weight:700;font-size:13px;letter-spacing:.1em;text-transform:uppercase;margin:10px 0 4px}.dest-item{display:block;width:100%;text-align:left;padding:8px 10px;margin:2px 0;border-radius:8px;border:1px solid transparent;background:#ffffff0a;color:var(--text);font-size:17px;font-weight:600;cursor:pointer}.dest-item:hover,.dest-item:focus-visible{border-color:#3fe0ff;background:#3fe0ff1a}.minimap-wrap{pointer-events:auto;cursor:pointer}.bigmap-wrap{pointer-events:auto}html,body{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}.menu-panel,.dest-list,.settings-panel,.results-panel{touch-action:pan-y}.touch-controls{position:absolute;inset:auto 0 0 0;height:0}.touch-btn{pointer-events:auto;position:absolute;touch-action:none;border-radius:18px;border:2px solid rgba(255,255,255,.28);background:#08141e73;color:#fff;font-family:var(--font);font-weight:800;letter-spacing:.06em;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.touch-btn.pressed{background:#ffc83d73;border-color:var(--accent)}@media (max-width: 900px),(max-height: 520px){.logo{font-size:84px}.logo.small{font-size:30px}.mode-grid,.event-cols{grid-template-columns:1fr}.mode-card{min-height:0;padding:18px}.mode-card h3{font-size:34px}.title-content{margin-left:5vw;width:auto}.btn.play{width:260px;font-size:38px}.compass{width:240px;height:34px;top:10px}.cmp-mark.major span{font-size:16px}.zone{font-size:26px}.coords,.zones-found{font-size:12px}.hud-top-left{top:10px;left:max(12px,env(safe-area-inset-left));max-width:30vw}.hud-top-right{top:8px;right:max(10px,env(safe-area-inset-right))}.icon-btn{width:36px;height:36px;font-size:15px}.race-panel{top:50px;min-width:0;padding:4px 12px 6px}.race-time{font-size:34px}.race-grid{gap:10px}.race-grid .opt{display:none}.race-grid b{font-size:14px}.gps-panel{top:50px;padding:5px 8px}.gps-arrow{width:38px;height:38px}.gps-instr{font-size:16px}.gps-dest{font-size:12px}.countdown{font-size:140px}.toasts{top:120px}.toast{font-size:14px}.menu-panel{padding:14px;max-height:94vh}.results-time{font-size:56px}.dest-picker{top:52px;right:10px;max-height:calc(100% - 64px)}}@media (max-height: 520px) and (min-width: 600px){.mode-grid{grid-template-columns:repeat(4,1fr);gap:10px}.mode-card p{display:none}.mode-icon{font-size:28px}.event-cols{grid-template-columns:1fr 1fr}.event-desc,.hud-top-left .coords{display:none}}@media (max-height: 520px){.title-content{margin-top:0}.logo{font-size:64px}.title-content .logo{margin-bottom:18px}}.mode-card.garage{background:linear-gradient(160deg,#963ca080,#1e0a2899)}.mode-card h3{font-size:38px}.garage-screen{justify-content:flex-start;align-items:stretch;background:linear-gradient(90deg,#040c148c,#040c1400 55%);pointer-events:none}.garage-panel{pointer-events:auto;width:min(430px,46vw);margin:14px;padding:16px 18px 18px;overflow:auto;max-height:calc(100vh - 28px);background:var(--glass-strong);border:1px solid var(--line);border-radius:18px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:rise .35s ease-out both;touch-action:pan-y}.garage-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.garage-panel .col-title{font-size:22px;margin:12px 0 6px}.model-list{display:grid;gap:8px}.model-card{text-align:left;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:#ffffff0d;color:var(--text);cursor:pointer;display:flex;flex-direction:column;gap:2px;font-family:var(--font)}.model-card b{font-size:18px;letter-spacing:.02em}.model-card span{color:#cfdbe3;font-size:14px;line-height:1.25}.model-card em{color:var(--muted);font-size:12.5px;font-style:normal}.model-card.on{border-color:var(--accent);background:#ffbe3c24;box-shadow:0 0 0 1px var(--accent) inset}.model-card.soon{opacity:.45;cursor:default}.preset-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.preset{display:grid;grid-template-columns:repeat(3,1fr);gap:0;padding:0;border-radius:9px;overflow:hidden;border:1px solid var(--line);background:#0000004d;cursor:pointer;color:var(--text);font-family:var(--font)}.preset i{height:20px;display:block}.preset span{grid-column:1 / -1;font-size:12px;padding:3px 4px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preset:hover{border-color:#ffffff80}.color-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.color-field{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:13px;color:#d6e2ea;cursor:pointer}.color-field input[type=color]{width:100%;height:34px;padding:0;border:1px solid var(--line);border-radius:8px;background:none;cursor:pointer}.garage-panel .row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);font-size:16px}.garage-panel input[type=text],.garage-panel select{flex:1;min-width:0;max-width:240px;padding:6px 8px;border-radius:8px;border:1px solid var(--line);background:#00000059;color:var(--text);font-family:var(--font);font-size:16px;-webkit-user-select:text;user-select:text}@media (max-height: 520px){.garage-panel{width:min(360px,52vw);padding:10px 12px;margin:8px;max-height:calc(100vh - 16px)}.garage-panel .col-title{font-size:18px;margin:8px 0 4px}.model-card span{display:none}}@media (max-width: 900px) and (min-height: 521px){.mode-grid{grid-template-columns:1fr 1fr}.garage-screen{align-items:flex-end;background:none}.garage-panel{width:auto;max-height:52vh;margin:8px}}.chat{position:absolute;left:22px;bottom:252px;width:min(440px,calc(100vw - 44px));display:flex;flex-direction:column;gap:6px;z-index:9}.chat-lines{display:flex;flex-direction:column;gap:3px}.chat-line{align-self:flex-start;max-width:100%;padding:4px 10px;border-radius:8px;background:#0610189e;color:#e8f0f5;font-size:16px;font-weight:600;line-height:1.25;text-shadow:0 1px 2px rgba(0,0,0,.6);overflow-wrap:anywhere;animation:rise .2s ease-out both}.chat-line.cmd{color:#9fb4c2}.chat-line.ok{color:#7ff0c0}.chat-line.err{color:#ffb38a}.chat-input{pointer-events:auto;width:100%;padding:9px 12px;border-radius:10px;border:1px solid #3fe0ff;background:#061018d9;color:#fff;font-family:var(--font);font-size:18px;font-weight:600;outline:none}.chat-input::placeholder{color:#7f93a1}.chat-hints{pointer-events:auto;display:flex;flex-direction:column;padding:4px}.chat-hint{display:flex;justify-content:space-between;gap:12px;text-align:left;padding:6px 9px;border:1px solid transparent;border-radius:7px;background:none;color:var(--text);font-family:var(--font);font-size:16px;font-weight:600;cursor:pointer}.chat-hint span{color:#8fa3b1;font-weight:500;font-size:14px}.chat-hint.sel,.chat-hint:hover{border-color:#3fe0ff;background:#3fe0ff1a}.trim-gauge{position:absolute;right:22px;bottom:236px;width:124px;height:124px;filter:drop-shadow(0 6px 14px rgba(0,0,0,.45));pointer-events:none}.trim-gauge svg{width:100%;height:100%;display:block}.tg-needle{transition:transform .12s linear}:root{--tsafe-l: max(12px, env(safe-area-inset-left));--tsafe-r: max(12px, env(safe-area-inset-right));--tsafe-b: max(10px, env(safe-area-inset-bottom))}.touch-left .steer{bottom:var(--tsafe-b);width:74px;height:74px;font-size:30px;border-radius:50%}.touch-left .steer:first-child{left:var(--tsafe-l)}.touch-left .steer:last-child{left:calc(var(--tsafe-l) + 86px)}.touch-right .gas{right:var(--tsafe-r);bottom:var(--tsafe-b);width:100px;height:112px;font-size:15px;background:#49d17d4d}.touch-right .brake{right:calc(var(--tsafe-r) + 112px);bottom:var(--tsafe-b);width:74px;height:74px;font-size:13px;background:#ff5a4f40}.hud.is-touch .dash-side{display:none}.hud.is-touch .minimap-wrap{left:var(--tsafe-l);right:auto;top:62px;bottom:auto;transform:scale(.55);transform-origin:top left}.hud.is-touch .help,.hud.is-touch .cam-name{display:none}.hud.is-touch .hud-top-right{gap:5px}.hud.is-touch .icon-btn{width:34px;height:34px;font-size:14px}.hud.is-touch .icon-btn.gps-btn{width:auto;padding:0 8px;font-size:13px}.hud.is-touch .hud-top-left{max-width:26vw}.hud.is-touch .compass{width:180px}.hud.is-touch .chat{left:calc(var(--tsafe-l) + 120px);bottom:auto;top:62px;width:min(360px,38vw)}.hud.is-touch .race-panel{top:46px}@media (max-width: 800px){.hud.is-touch .compass{display:none}}@media (max-height: 400px){.touch-left .steer{width:64px;height:64px;font-size:26px}.touch-left .steer:last-child{left:calc(var(--tsafe-l) + 76px)}.touch-right .gas{width:90px;height:98px}.touch-right .brake{width:64px;height:64px;right:calc(var(--tsafe-r) + 100px)}.hud.is-touch .minimap-wrap{transform:scale(.45)}.hud.is-touch .chat{left:calc(var(--tsafe-l) + 100px)}}.fs-btn{position:fixed;top:8px;right:8px;z-index:30;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--glass);color:var(--text);font-size:16px;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);touch-action:manipulation}.fs-btn.in-hud{position:static}.rotate-hint{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#07111a;color:#fff;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:24px;font-family:var(--font)}.rotate-hint .ph{font-size:64px;animation:rot 2.4s ease-in-out infinite}.rotate-hint b{font-family:var(--display);font-weight:500;font-size:34px;letter-spacing:.03em}.rotate-hint span{color:var(--muted);font-size:17px;max-width:280px}.rotate-hint button{padding:12px 22px;border-radius:12px;border:1px solid var(--accent);background:#ffc83d26;color:var(--accent);font-weight:800;font-size:16px;font-family:var(--font)}@keyframes rot{0%,20%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}@media (orientation: portrait) and (pointer: coarse) and (max-width: 820px){.rotate-hint{display:flex}}.touch-right .trimb{left:var(--tsafe-l);right:auto;width:82px;height:44px;font-size:13px;border-radius:12px;background:#ffb74d38;bottom:calc(var(--tsafe-b) + 84px)}.touch-right .trimdn{left:calc(var(--tsafe-l) + 90px)}.hud.is-touch .trim-gauge{right:auto;left:calc(var(--tsafe-l) + 180px);bottom:calc(var(--tsafe-b) + 80px);width:76px;height:76px}.hud.is-touch .dash{left:auto;right:var(--tsafe-r);bottom:calc(var(--tsafe-b) + 116px);transform:scale(.5);transform-origin:bottom right}@media (max-height: 400px){.touch-right .trimb{width:74px;height:38px;bottom:calc(var(--tsafe-b) + 72px)}.touch-right .trimdn{left:calc(var(--tsafe-l) + 82px)}.hud.is-touch .trim-gauge{left:calc(var(--tsafe-l) + 164px);bottom:calc(var(--tsafe-b) + 68px);width:68px;height:68px}.hud.is-touch .dash{bottom:calc(var(--tsafe-b) + 104px)}}.hud:not(.is-touch) .help{left:256px;right:420px;transform:none;max-width:none;width:auto;bottom:16px;font-size:14px;padding:8px 12px}@media (max-width: 1250px){.hud:not(.is-touch) .cam-name{display:none}.hud:not(.is-touch) .compass{width:260px}}@media (max-width: 1050px){.hud:not(.is-touch) .help{display:none}}.wreck-overlay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:14px;z-index:20;pointer-events:none;animation:rise .35s ease-out both}.wreck-title{font-family:var(--display);font-size:44px;letter-spacing:.06em;color:#ff8d80;text-shadow:0 4px 22px rgba(0,0,0,.75)}.wreck-btn{pointer-events:auto;font-size:26px;padding:14px 34px;min-width:220px}.hud.is-touch .wreck-title{font-size:28px}.hud.is-touch .wreck-btn{font-size:20px;padding:10px 24px;min-width:180px}.online-panel{display:flex;flex-direction:column;gap:12px;max-width:560px}.online-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.online-row>span{color:var(--muted);font-weight:700;min-width:80px}.online-input{flex:1;min-width:140px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:#00000059;color:var(--text);font-family:var(--font);font-size:18px;font-weight:600;-webkit-user-select:text;user-select:text;touch-action:manipulation}.online-input.code{flex:0 0 120px;min-width:0;text-align:center;letter-spacing:.25em;text-transform:uppercase}.online-or{color:var(--muted)}.online-code{font-family:var(--display);font-size:64px;letter-spacing:.2em;color:var(--accent);line-height:1}.online-room{display:flex;flex-direction:column;gap:10px}.online-list{display:flex;flex-wrap:wrap;gap:8px}.online-list span{padding:4px 10px;border-radius:99px;background:#ffffff1a;font-weight:700}.online-note{color:#cfdbe3;font-size:15px}.online-note.small{color:var(--muted);font-size:13px;line-height:1.3}.online-err{color:#ffb38a;font-weight:700}.room-status{margin-top:2px;font-size:13px;color:#9fe8ff;font-weight:600;text-shadow:0 2px 6px rgba(0,0,0,.7)}.room-status span{display:block;color:#d6e2ea;font-weight:500}.hud.is-touch .room-status span{display:none}.register-screen{justify-content:center;align-items:center;background:linear-gradient(180deg,#040c148c,#040c14cc);overflow:auto}.register-panel{pointer-events:auto;width:min(520px,94vw);max-height:96vh;overflow:auto;padding:22px 24px 24px;background:var(--glass-strong);border:1px solid var(--line);border-radius:20px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);display:flex;flex-direction:column;gap:12px;touch-action:pan-y;animation:rise .35s ease-out both}.register-panel h2{margin:0;font-family:var(--display);font-weight:500;font-size:34px;letter-spacing:.03em}.register-sub{margin:-6px 0 0;color:var(--muted);font-size:15px}.register-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.register-grid label{display:flex;flex-direction:column;gap:4px;color:#cfdbe3;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.register-grid label.wide{grid-column:1 / -1}.register-grid input{padding:11px 12px;border-radius:10px;border:1px solid var(--line);background:#00000059;color:var(--text);font-family:var(--font);font-size:18px;font-weight:600;text-transform:none;letter-spacing:0;-webkit-user-select:text;user-select:text;touch-action:manipulation}.register-grid input:focus{outline:none;border-color:var(--accent)}.register-consent{display:flex;gap:10px;align-items:flex-start;color:#cfdbe3;font-size:13px;line-height:1.35;cursor:pointer}.register-consent input{width:22px;height:22px;flex:none;margin-top:2px;accent-color:#ffc83d}.register-err{color:#ffb38a;font-weight:700;font-size:15px}.register-btn{width:100%;font-size:24px;padding:12px 0}@media (max-height: 520px){.register-panel{padding:12px 16px 14px;gap:6px}.register-panel h2{font-size:24px}.register-sub{display:none}.register-grid{gap:6px}.register-grid input{padding:7px 10px;font-size:16px}.register-consent{font-size:11px}.register-btn{font-size:18px;padding:8px 0}}.bigmap-wrap{flex-direction:column}.bigmap-row{display:flex;align-items:flex-start;justify-content:center;gap:14px;max-width:98vw;max-height:90vh}.bigmap-stage{position:relative;line-height:0;touch-action:none}.bigmap{width:min(calc(98vw - 330px),128.125vh);max-width:1100px;touch-action:none;cursor:grab}.bigmap.pickable{cursor:crosshair}.map-zoom{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:6px;line-height:1}.map-zoom button{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:var(--glass-strong);color:var(--text);font-size:20px;font-weight:700;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.map-zoom button:hover{background:#ffffff2e}.bigmap-side{width:300px;flex:none;max-height:82vh;overflow-y:auto;overflow-x:hidden;box-sizing:border-box;padding:12px 10px 12px 12px;background:var(--glass-strong);border:1px solid var(--line);border-radius:14px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);touch-action:pan-y}.bigmap-side-title{font-family:var(--display);font-size:22px;letter-spacing:.06em;color:var(--accent);margin-bottom:4px}.legend-cv{width:100%;height:auto;display:block}.bigmap-hint{color:var(--muted);font-size:12.5px;line-height:1.35;margin-top:8px}@media (max-width: 900px),(max-height: 520px){.bigmap{width:min(calc(98vw - 200px),121.875vh)}.bigmap-side{width:190px;padding:8px 6px 8px 8px;max-height:80vh}.bigmap-side-title{font-size:16px}.bigmap-hint{font-size:11px}.map-zoom button{width:34px;height:34px;font-size:17px}}
