:root,:root[data-theme="track-dark"]{color-scheme:dark;--color-background:#0b141b;--color-surface:#111d25;--color-elevated:#18262f;--color-border:#2b3a43;--color-text:#e9eff2;--color-text-secondary:#91a0a8;--color-accent:#ff5a2a;--color-accent-foreground:#170703;--color-ready:#43c47a;--color-warning:#e4ad4f;--color-error:#ef665d;--color-disabled:#56636a;--color-focus:#8fcdf2;--chart-1:#ff6b3d;--chart-2:#5aaee8;--chart-3:#57c98a;--chart-4:#e4bd64;--chart-grid:#2d3c45}
:root[data-theme="daylight"]{color-scheme:light;--color-background:#f3f5f4;--color-surface:#fff;--color-elevated:#e8ecea;--color-border:#cbd3cf;--color-text:#18242b;--color-text-secondary:#58676e;--color-accent:#b63e1f;--color-accent-foreground:#fff;--color-ready:#167345;--color-warning:#946514;--color-error:#b32626;--color-disabled:#9aa4a0;--color-focus:#075a9c;--chart-1:#b63e1f;--chart-2:#176da3;--chart-3:#167345;--chart-4:#946514;--chart-grid:#cbd3cf}
:root[data-theme="circuit"]{color-scheme:dark;--color-background:#050807;--color-surface:#0b110e;--color-elevated:#111a15;--color-border:#27362d;--color-text:#f1f5ef;--color-text-secondary:#9aa89e;--color-accent:#a8f238;--color-accent-foreground:#071002;--color-ready:#64dc8e;--color-warning:#ecc65d;--color-error:#ff6b61;--color-disabled:#526057;--color-focus:#d2ff8d;--chart-1:#a8f238;--chart-2:#58c9d6;--chart-3:#64dc8e;--chart-4:#ecc65d;--chart-grid:#27362d}
:root[data-theme="heritage"]{color-scheme:dark;--color-background:#182a25;--color-surface:#20362f;--color-elevated:#29443a;--color-border:#466156;--color-text:#edf2e9;--color-text-secondary:#a9b8ae;--color-accent:#e6b96c;--color-accent-foreground:#241706;--color-ready:#75c893;--color-warning:#e6b96c;--color-error:#e97568;--color-disabled:#697a72;--color-focus:#ffe0a5;--chart-1:#e6b96c;--chart-2:#7eb7b1;--chart-3:#75c893;--chart-4:#d98d62;--chart-grid:#466156}
:root{--bg:var(--color-background);--surface:var(--color-surface);--surface-2:var(--color-elevated);--text:var(--color-text);--muted:var(--color-text-secondary);--hairline:var(--color-border);--accent:var(--color-accent);--accent-soft:color-mix(in srgb,var(--color-accent) 15%,transparent);--accent-hot:var(--color-accent);--good:var(--color-ready);--warn:var(--color-warning);--error:var(--color-error)}
html,body{background:var(--color-background)!important;background-image:none!important}.topbar,.dyno-bar{background:var(--color-background)}.tabbar{background:color-mix(in srgb,var(--color-background) 94%,transparent)}
.brand-mark,.btn-primary,.install-btn,.nd-bar-fill,.tc-band-bar i{color:var(--color-accent-foreground)}.status.err,.ds-status.err,.btn-danger,.v-bad{color:var(--color-error)}button:disabled,.btn:disabled{color:var(--color-disabled);cursor:not-allowed;opacity:.7}
.input:focus-visible,.btn:focus-visible,.tab:focus-visible,.tool-card:focus-visible,.theme-select:focus-visible,.daylight-toggle:focus-visible,.unit-toggle:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}
.theme-controls{display:flex;align-items:center;gap:6px}.theme-select,.daylight-toggle{height:32px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-text);font:600 11px var(--font);padding:0 8px}.daylight-toggle{width:34px;padding:0;font-size:16px}.theme-select{max-width:104px}
.tool-card{border-radius:10px;min-height:104px;padding:14px}.tool-card.is-hero{min-height:88px}.card-lite,.stat,.readout,.drag-speed,.drag-tile,.dy-card,.nd-item,.hint,.adv{border-radius:10px}
.race-replay,.track-map{background:var(--color-elevated)}.race-replay polyline,.track-map polyline{stroke:var(--chart-2)}.race-replay circle{fill:var(--color-ready)}.race-replay circle.finish{fill:var(--color-accent)}
.track-kpis{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--color-border);border-radius:10px;overflow:hidden}.track-kpis>div{padding:15px;text-align:center;background:var(--color-surface);border-right:1px solid var(--color-border)}.track-kpis>div:last-child{border:0}.track-kpis strong{display:block;font:750 25px var(--mono);font-variant-numeric:tabular-nums}.track-kpis span{font-size:10px;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.08em}
.track-stage{min-height:240px;display:grid;place-content:center;text-align:center;gap:8px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface)}.track-stage span{color:var(--color-text-secondary);font-size:12px}.track-pulse{width:16px;height:16px;margin:auto;border-radius:50%;background:var(--color-disabled)}.track-stage.active .track-pulse{background:var(--color-error);box-shadow:0 0 0 7px color-mix(in srgb,var(--color-error) 18%,transparent)}.track-map{display:block;width:100%;border:1px solid var(--color-border);border-radius:10px}.track-map polyline{fill:none;stroke-width:4}.quality-row{display:flex;justify-content:space-between;color:var(--color-text-secondary);font-size:12px}
.garage-list{display:grid;gap:9px}.garage-card{display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface)}.garage-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:8px;background:var(--color-elevated);color:var(--color-accent);font:800 14px var(--mono)}.garage-card b,.garage-card span,.garage-card small{display:block}.garage-card span,.garage-card small{color:var(--color-text-secondary);font-size:12px;margin-top:2px}.icon-btn{border:0;background:transparent;color:var(--color-text-secondary);font-size:22px}.garage-form{display:grid;gap:12px}
@media(max-width:620px){.brand-by,.theme-select{display:none}.topbar{gap:6px}.topbar-right{gap:5px}.install-btn{display:none}.track-kpis strong{font-size:20px}}
.route-map-shell{position:relative;height:clamp(250px,38vw,360px);min-height:250px;overflow:hidden;border:1px solid var(--color-border);border-radius:10px;background:var(--color-elevated);isolation:isolate}.route-map-canvas{position:absolute;inset:0;width:100%;height:100%;min-height:250px}.route-map-shell .maplibregl-map{width:100%;height:100%;font:11px var(--font)}.map-loading{position:absolute;inset:0;display:grid;place-items:center;color:var(--color-text-secondary);background:var(--color-elevated)}.map-fullscreen{position:absolute;z-index:3;right:10px;bottom:34px;width:34px;height:34px;border:1px solid var(--color-border);border-radius:7px;background:var(--color-surface);color:var(--color-text);font-size:17px}.map-provider,.map-attribution{position:absolute;z-index:2;left:8px;bottom:6px;max-width:calc(100% - 16px);padding:3px 6px;border-radius:4px;background:color-mix(in srgb,var(--color-background) 88%,transparent);color:var(--color-text-secondary);font-size:9px}.map-provider a{color:inherit}.route-empty{height:100%;display:grid;place-content:center;text-align:center;gap:5px;padding:24px}.route-empty span{color:var(--color-text-secondary);font-size:12px}.local-route-map{width:100%;height:100%;cursor:grab;touch-action:none}.local-route-map:active{cursor:grabbing}.local-route-map pattern path{fill:none;stroke:var(--chart-grid);stroke-width:1}.local-route-map .route-raw line{stroke:var(--chart-2);stroke-width:3;stroke-dasharray:5 5;opacity:.7}.local-route-map .route-valid line{fill:none;stroke:var(--color-accent);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.local-route-map .route-raw-point{fill:var(--chart-2);stroke:var(--color-text);stroke-width:1.5}.local-route-map .route-raw-point.is-rejected{fill:var(--color-error)}.local-route-map .route-start{fill:var(--color-ready);stroke:var(--color-text);stroke-width:2}.local-route-map .route-finish{fill:var(--color-accent);stroke:var(--color-text);stroke-width:2}.local-map-toolbar{position:absolute;z-index:3;top:10px;right:10px;display:flex;gap:4px}.local-map-toolbar button{min-width:32px;height:32px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface);color:var(--color-text);font-weight:700}.route-state{display:grid;gap:3px;padding:10px 12px;border-left:3px solid var(--color-warning);background:color-mix(in srgb,var(--color-warning) 9%,var(--color-surface));font-size:12px}.route-state.ok{border-color:var(--color-ready);background:color-mix(in srgb,var(--color-ready) 9%,var(--color-surface))}.route-state span{color:var(--color-text-secondary)}.track-summary{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--color-border);border-radius:10px;overflow:hidden}.track-summary>div{min-width:0;padding:12px;background:var(--color-surface);border-right:1px solid var(--color-border)}.track-summary>div:last-child{border:0}.track-summary span,.track-summary strong{display:block}.track-summary span{margin-bottom:4px;color:var(--color-text-secondary);font-size:9px;text-transform:uppercase;letter-spacing:.08em}.track-summary strong{font:700 15px var(--mono);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.track-times{display:grid;grid-template-columns:1fr 1fr;gap:8px;color:var(--color-text-secondary);font-size:11px}.track-times span{padding:9px 11px;border:1px solid var(--color-border);border-radius:8px}.track-times b{display:block;margin-bottom:3px;color:var(--color-text);text-transform:uppercase;font-size:9px;letter-spacing:.08em}.diagnostic-grid{display:grid;grid-template-columns:1fr auto;gap:8px 18px;margin-top:12px;color:var(--color-text-secondary);font-size:12px}.diagnostic-grid b{color:var(--color-text);text-align:right}.export-row{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.route-map-shell:fullscreen{height:100%;border:0;border-radius:0}.route-map-shell:fullscreen .map-fullscreen{bottom:40px}
@media(max-width:620px){.route-map-shell{height:260px}.track-summary{grid-template-columns:1fr 1fr}.track-summary>div:nth-child(2){border-right:0}.track-summary>div:nth-child(-n+2){border-bottom:1px solid var(--color-border)}.track-summary strong{font-size:13px}.track-times{grid-template-columns:1fr}.map-provider{font-size:8px}}.route-direction{display:grid;place-items:center;width:20px;height:20px;border:1px solid var(--color-border);border-radius:50%;background:var(--color-surface);color:var(--color-accent);font-size:11px;line-height:1;box-shadow:0 2px 8px color-mix(in srgb,var(--color-background) 55%,transparent)}
