:root{--bg: #000;--surface: #111;--surface-2: #1a1a1a;--surface-press: #222;--line: #1c1c1c;--line-strong: #2a2a2a;--text: #fff;--muted: #9a9a9a;--faint: #5f5f5f;--accent: #ff2d2d;--accent-press: #d91f1f;--ok: #2fbf4a;--warn: #ffb020;--stale: #6b6b6b;--radius: 18px;--radius-sm: 12px;--gap: 12px;--pad: 16px;--tabbar-h: 64px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;color-scheme:dark}.muted{color:var(--muted)}.hint{font-size:13px;color:var(--muted);margin:10px 2px 0}.err-text{color:var(--accent)}.ok-text{color:var(--ok)}.btn-link{display:flex;align-items:center;justify-content:center}.icon-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line-strong);background:#111111d9;color:var(--text);display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);flex:none}.icon-btn svg{width:22px;height:22px}.flip{transform:scaleX(-1)}.back-head{display:flex;align-items:center;gap:12px;margin:4px 0 16px;min-height:44px}.back-title{flex:1;font-size:20px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.back-right{flex:none}.row.bad .row-icon,.row.bad .row-title{color:var(--accent)}.row.unknown .row-title{color:var(--muted)}.saved-ico{display:inline-flex;align-items:center;justify-content:center;color:var(--ok);flex:none}.saved-ico svg{width:20px;height:20px}.perf-top .saved-ico{width:34px;height:34px;border-radius:50%;background:#0009}.badge{font-size:11px;font-weight:700;color:var(--ok);border:1px solid #1f4a28;border-radius:999px;padding:2px 8px}.text-input{display:block;width:100%;height:50px;margin-top:8px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:#000;color:var(--text);font-size:16px;padding:0 12px;outline:none}.text-input:focus{border-color:var(--muted)}.pills{display:flex;gap:10px;overflow-x:auto;padding-bottom:2px;margin-bottom:16px;scrollbar-width:none}.pills::-webkit-scrollbar{display:none}.pill{flex:none;width:64px;height:40px;border-radius:999px;border:0;background:var(--surface-2);color:var(--text);display:grid;place-items:center;cursor:pointer}.pill svg{width:22px;height:22px}.pill.on{background:#fff;color:#000}.chart-head{display:flex;justify-content:space-between;font-size:15px;font-weight:600;margin:4px 2px 0}.kpis{display:grid;grid-template-columns:1fr 1fr;gap:18px 12px;margin-top:18px;text-align:center}.kpi svg{width:28px;height:28px}.kpi .value{font-size:22px;margin-top:6px}.kpi .label{margin-top:4px}.trip-head{margin-bottom:12px}.trip-map{height:220px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}.charge-gauge{display:grid;grid-template-columns:1fr 140px 1fr;align-items:center;gap:12px}.gauge-side{text-align:center}.gauge-side .big{font-size:30px;font-weight:800}.gauge{position:relative;height:220px;border:1px solid var(--line-strong);border-radius:6px;overflow:hidden;background:repeating-linear-gradient(135deg,#141414 0,#141414 6px,#0b0b0b 6px,#0b0b0b 12px)}.gauge-fill{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(#1c8a3a,#0a3a18);transition:height .6s ease}.gauge-fill.charging{animation:pulse 2.4s ease-in-out infinite}.gauge-target{position:absolute;left:0;right:0;height:2px;background:#fff;z-index:2}@keyframes pulse{50%{filter:brightness(1.25)}}.charge-status{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;font-weight:600;flex-wrap:wrap}.charge-status svg{width:22px;height:22px}.perf{position:fixed;inset:0 0 calc(var(--tabbar-h) + var(--safe-b)) 0;display:flex;flex-direction:column;background:var(--bg)}.perf-map{position:relative;flex:1 1 auto;min-height:140px}.perf-map .map-fill.maplibregl-map{position:absolute;top:0;right:0;bottom:0;left:0}.perf-top{position:absolute;top:calc(8px + var(--safe-t));left:12px;right:12px;z-index:5}.perf-top .back-head{margin:0}.perf-top .back-title{text-shadow:0 1px 8px #000}.map-ctrl{position:absolute;right:12px;bottom:16px;z-index:5;display:flex;flex-direction:column;gap:8px}.map-car{width:18px;height:18px;border-radius:50%;background:#fff;border:4px solid var(--accent);box-shadow:0 0 0 4px #ff2d2d40}.map-event{width:22px;height:22px;border-radius:50%;color:#000;font-size:12px;font-weight:800;display:grid;place-items:center;border:2px solid #000}.maplibregl-ctrl-attrib{background:#0009!important;color:var(--muted)!important}.maplibregl-ctrl-attrib a{color:var(--muted)!important}.sheet{flex:none;background:var(--surface);border-top:1px solid var(--line-strong);border-radius:18px 18px 0 0;padding:0 var(--pad) 12px;overflow-y:auto;max-height:42vh;transition:max-height .25s ease}.sheet.collapsed{max-height:150px}.sheet-title{font-size:15px;font-weight:700;margin:0 0 8px}.grabber{display:block;width:100%;height:30px;border:0;background:none;cursor:grab;padding:0;touch-action:none}.grabber i{display:block;width:40px;height:5px;border-radius:3px;background:#3a3a3a;margin:8px auto 0}.sheet-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.cursor-pos{flex:1;font-size:13px;color:var(--muted);font-weight:650;text-align:center}.link-btn{font-size:13px;font-weight:700;color:var(--text);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:999px;padding:6px 12px;white-space:nowrap}.axis-toggle{display:inline-flex;background:#000;border:1px solid var(--line-strong);border-radius:999px;padding:3px}.axis-toggle button{border:0;background:none;color:var(--muted);font-size:13px;font-weight:700;padding:5px 12px;border-radius:999px;cursor:pointer}.axis-toggle button.on{background:var(--surface-2);color:var(--text)}.values{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}.val{flex:none;min-width:78px;padding:8px 10px;border-radius:12px;border:1px solid var(--line-strong);background:#000;display:flex;flex-direction:column;align-items:flex-start;gap:2px;cursor:pointer;text-align:left}.val-v{font-size:17px;font-weight:800;white-space:nowrap}.val-v small,.val-l{font-size:12px;color:var(--muted);font-weight:650}.val.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 14%,#000)}.val.on .val-l{color:var(--c)}.val.off{opacity:.45;cursor:default}.scrubber{margin-top:6px}.results{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.result{background:#000;border:1px solid var(--line-strong);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;cursor:pointer;text-align:left}.result:disabled{cursor:default;opacity:.6}.result .value{font-size:20px}.charts-page .chart-card{padding:12px 12px 4px}.chart-card-head{display:flex;justify-content:space-between;align-items:baseline}.chart-card-v{font-size:16px;font-weight:800}.chart-na{padding:14px 0;font-size:13px}.sticky-scrub{position:sticky;bottom:calc(var(--tabbar-h) + var(--safe-b) + 8px);margin-top:12px;padding:10px 14px;background:#111111f2;border:1px solid var(--line-strong);border-radius:var(--radius)}.hb{display:flex;align-items:center;justify-content:center;gap:14px;padding:10px 0 2px}.hb-metric{display:flex;flex-direction:column;align-items:center;min-width:76px}.hb-value{color:#f3f5f8;font-size:54px;line-height:.92;font-weight:300;letter-spacing:-.06em;font-variant-numeric:tabular-nums}.hb-unit{margin-top:9px;color:#fff9;font-size:13px;letter-spacing:.2em;text-transform:uppercase}.hb-wrap{display:flex;flex-direction:column;align-items:center;gap:16px}.hb-shell{position:relative;width:96px;height:194px;margin-top:10px;overflow:visible;border:1.5px solid rgba(255,255,255,.92);border-radius:4px;background:linear-gradient(180deg,#ffffff14,#ffffff03),linear-gradient(90deg,#ffffff0d,#ffffff03 22%,#fff0 45%,#ffffff0d);box-shadow:inset 0 1px #ffffff47,inset 0 0 18px #ffffff0d,0 0 14px #ffffff0a}.hb-shell:before{content:"";position:absolute;top:-10px;left:50%;transform:translate(-50%);width:24px;height:8px;border-radius:2px 2px 0 0;background:#fffffff2}.hb-shell:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none;border-radius:3px;background:linear-gradient(100deg,#fff0,#ffffff2e,#ffffff0a,#fff0 42%,#ffffff1a 72%,#fff0);mix-blend-mode:screen}.hb-grid{position:absolute;top:10px;right:8px;bottom:10px;left:8px;z-index:3;opacity:.75;pointer-events:none;background-image:linear-gradient(to bottom,rgba(255,255,255,.14) 1px,transparent 1px);background-size:100% 20px}.hb-fill{position:absolute;left:4px;right:4px;bottom:4px;max-height:calc(100% - 8px);overflow:hidden;background:linear-gradient(180deg,#78ffa51f,#0fc83214),#50ff820d;box-shadow:inset 0 0 18px #ffffff1a,inset 0 -8px 14px #00000014;transition:height .7s cubic-bezier(.2,.8,.2,1)}.hb-fill:after{content:"";position:absolute;left:0;right:0;top:0;height:10px;z-index:2;background:linear-gradient(180deg,#ffffff57,#ffffff1a,#fff0)}.hb-flow{position:absolute;top:0;left:0;width:200%;height:100%;will-change:transform;background:repeating-linear-gradient(45deg,#5fff919e 0,#5fff919e 18px,#2de65f9e 18px,#2de65f9e 36px,#0caf379e 36px,#0caf379e 54px,#2de65f9e 54px,#2de65f9e 72px,#5fff919e 72px,#5fff919e 108px),repeating-linear-gradient(135deg,#beffd247 0,#beffd247 14px,#78ffa03d 14px,#78ffa03d 28px,#28dc5533 28px,#28dc5533 42px,#12aa372e 42px,#12aa372e 56px,#78ffa038 56px,#78ffa038 70px,#beffd247 70px,#beffd247 84px),linear-gradient(180deg,#fff3,#ffffff0d 28%,#0000001a);box-shadow:inset 0 0 16px #ffffff1a;animation:hb-flow-move 6.5s linear infinite}.hb-target{position:absolute;left:0;right:0;height:2px;background:#fff;z-index:5;box-shadow:0 0 6px #ffffff80}.hb-power{color:#8cff8f;font-size:17px;text-shadow:0 0 10px rgba(70,255,110,.22);min-height:22px}.hb-stale .hb-flow{filter:grayscale(1);animation-play-state:paused}.hb-stale .hb-value{color:var(--stale)}@keyframes hb-flow-move{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (prefers-reduced-motion: reduce){.hb-flow{animation:none}}.fit-page{height:100dvh;display:flex;flex-direction:column;overflow:hidden;padding-bottom:calc(var(--tabbar-h) + var(--safe-b) + 12px)}.fit-head{display:flex;justify-content:space-between;align-items:center}.fit-head .page-title{margin-bottom:10px}.utabs{display:flex;border-bottom:1px solid var(--line-strong);margin:0 calc(var(--pad) * -1) 14px;padding:0 var(--pad)}.utabs button{flex:1;height:44px;border:0;background:none;color:var(--text);font-size:16px;font-weight:500;position:relative;cursor:pointer}.utabs button.on:after{content:"";position:absolute;left:6%;right:6%;bottom:-1px;height:3px;background:var(--accent);border-radius:2px}.fit-page .pills{flex:none;margin-bottom:12px}.fit-page .chart-head{flex:none;font-weight:500}.fit-chart{flex:1 1 auto;min-height:150px}.fit-page .kpis{flex:none;gap:14px 12px;margin-top:10px}.kpi svg{width:30px;height:30px}.kpi-v{font-size:22px;font-weight:700;margin-top:4px}.kpi-v .unit{font-size:15px;font-weight:500;color:var(--text);margin-left:4px}@media (max-height: 700px){.fit-page .pills .pill{height:34px}.kpi svg{width:24px;height:24px}.kpi-v{font-size:19px}}.kpi-caption{flex:none;display:flex;justify-content:space-between;align-items:center;min-height:22px;margin-top:8px;font-size:13px;font-weight:600;color:var(--muted)}.fit-page .kpis{margin-top:6px;gap:8px}.kpi{border:1px solid transparent;background:none;color:var(--text);border-radius:var(--radius-sm);padding:8px 4px;display:flex;flex-direction:column;align-items:center;cursor:pointer;font:inherit}.kpi .label{color:var(--muted);font-size:13px;font-weight:600;margin-top:2px}.kpi.on{background:var(--surface);border-color:var(--line-strong)}.kpi.on .label{color:var(--text)}.kpi:active{background:var(--surface-press)}.map-pin{width:34px;height:34px;border-radius:50%;padding:0;cursor:pointer;display:grid;place-items:center;background:#111;color:var(--pin);border:2px solid var(--pin);box-shadow:0 2px 10px #000000b3,0 0 0 3px #0000008c}.map-pin svg{width:20px;height:20px}.map-pin:active{transform:scale(.94)}.map-pin-start,.map-pin-finish{width:38px;height:38px}.map-pin-start{background:var(--pin);color:#000}.map-pin-finish{background:#fff;color:#000;border-color:#fff}.pin-pop .maplibregl-popup-content{background:#111111f5;color:var(--text);border:1px solid var(--line-strong);border-radius:12px;padding:10px 12px;box-shadow:0 6px 24px #0009;font-family:var(--font)}.pin-pop .maplibregl-popup-tip{border-top-color:#111111f5!important;border-bottom-color:#111111f5!important}.pin-pop-title{font-size:14px;font-weight:750;margin-bottom:4px}.pin-pop-line{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.values .val{flex-direction:row;align-items:center;gap:7px;min-width:0;padding:8px 12px;border-radius:999px}.values .val svg{width:18px;height:18px;flex:none;color:var(--muted)}.values .val .val-v{font-size:16px}.values .val.on svg{color:var(--c)}.values .val.off .val-v{color:var(--faint)}.maplibregl-popup{z-index:5}.values{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;overflow:visible;padding:2px 0 8px}.values .val{justify-content:center;gap:4px;padding:6px 4px;min-height:32px;border-radius:999px}.values .val svg{width:14px;height:14px}.values .val .val-v{font-size:13px;font-weight:750;white-space:nowrap}.values .val .val-v small{font-size:10px}.map-pin{width:28px;height:28px;border-width:2px}.map-pin svg{width:16px;height:16px}.map-pin-start{width:30px;height:30px}.map-pin-finish{width:30px;height:30px;border:2px solid #fff;background:repeating-conic-gradient(#000 0,#000 25%,#fff 0,#fff 50%) 50% / 10px 10px}.map-pin-finish svg{display:none}.values{gap:5px}.values .val{gap:3px;padding:6px 2px}.values .val svg{width:13px;height:13px}.values .val .val-v{font-size:12px;letter-spacing:-.2px}.values .val .val-v small{font-size:9.5px}.values{grid-template-columns:repeat(4,minmax(0,1fr))}.values .val .val-v{font-size:12.5px}.values{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,auto);grid-template-columns:none;grid-auto-columns:calc((100% - 20px)/5);gap:5px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;padding:2px 0 8px}.values::-webkit-scrollbar{display:none}.values .val{scroll-snap-align:start}.veh-head{align-items:center}.veh-updated{display:inline-flex;align-items:center;gap:6px;padding-top:0}.veh-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}.veh-dot.sleeping{background:var(--warn)}.veh-dot.offline{background:var(--accent)}.page-head,.fit-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.page-head .page-title,.fit-head .page-title{margin-bottom:10px}.page-head .veh-updated,.fit-head .veh-updated{margin-bottom:4px}.veh-dot.app-offline,.veh-dot.stale{background:var(--stale)}.charge-overview{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.charge-departure{text-align:center;font-size:14px;font-weight:600;color:var(--muted)}.charge-overview .hb{padding-top:4px}.charge-overview .cmd-status{margin-top:4px}.charge-overview .charge-status{margin-top:6px}.cmd-status.center{text-align:center}.hb-editable{cursor:ns-resize;touch-action:none;outline:none}.hb-editable:focus-visible{box-shadow:0 0 0 2px var(--accent)}.hb-knob{position:absolute;right:-15px;top:50%;transform:translateY(-50%);min-width:26px;height:26px;padding:0;border-radius:13px;background:#fff;box-shadow:0 1px 8px #000000b3;color:#000;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;white-space:nowrap;pointer-events:none;transition:min-width .12s,padding .12s}.hb-knob.active{min-width:58px;padding:0 8px;right:-42px}.mini-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.mini{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px}.mini-v{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.mini-v .unit{font-size:13px;font-weight:500;color:var(--muted);margin-left:3px}.mini-l{font-size:12px;color:var(--muted);font-weight:600;margin-top:1px}.ac-limit{margin-top:12px}.ac-head{display:flex;justify-content:space-between;align-items:baseline}.ac-v{font-weight:700}.ac-v .muted{font-weight:500;font-size:13px}.ac-row{display:flex;align-items:center;gap:10px}.ac-limit .cmd-status{margin-top:0}.btn-small{width:auto;height:34px;padding:0 14px;font-size:14px;flex:none}.charge-action{margin-top:auto;padding-top:10px}.charge-action .cmd-status{margin-top:6px}.timer-list{display:flex;flex-direction:column;gap:10px}.timer{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:12px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);padding:12px 14px}.timer.off .timer-time{color:var(--muted)}.timer-main{background:none;border:0;color:var(--text);text-align:left;padding:0;font:inherit;cursor:pointer}.timer-time{display:block;font-size:30px;font-weight:300;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.timer-sub{display:block;font-size:13px;color:var(--muted);font-weight:600;margin-top:2px}.timer-edit{grid-column:1 / -1;border-top:1px solid var(--line-strong);margin-top:12px;padding-top:12px}.timer-edit .text-input{width:100%;margin-top:6px;color-scheme:dark}.switch{position:relative;width:50px;height:30px;flex:none}.switch input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;margin:0;cursor:pointer;z-index:1}.switch span{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:15px;background:#333;transition:background .15s}.switch span:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .15s}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translate(20px)}.switch input:focus-visible+span{outline:2px solid #fff;outline-offset:2px}.day-chips{display:flex;gap:6px;margin-top:6px}.day{flex:1;height:36px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);font-weight:650;font-size:13px;cursor:pointer}.day.on{background:var(--accent);border-color:var(--accent)}.list-head{display:flex;justify-content:space-between;align-items:center;margin:18px 2px 8px}.charge-overview .hb-shell{width:112px;height:250px}@media (max-height: 760px){.charge-overview .hb-shell{height:190px}}.caption-link{color:var(--text);font-weight:700;text-decoration:none}.clim-link{display:flex;align-items:center;gap:12px;margin-top:var(--gap)}.clim-link>svg{width:24px;height:24px;flex:none}.clim-link>svg.chev{width:22px;height:22px}.clim-link .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.clim-link-title{font-size:16px;font-weight:700}.clim-link-sub{font-size:13px;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clim-readout{display:flex;justify-content:center;gap:40px;margin:8px 0 18px;text-align:center}.clim-readout>div{display:flex;flex-direction:column;gap:4px}.clim-readout strong{font-size:20px;font-weight:750}.clim-readout strong.stale{color:var(--stale)}.slider-tile{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:16px 16px 14px;margin:4px 0 10px}.slider-label{font-size:14px;color:var(--muted);font-weight:700}.temp-slider{width:100%;height:8px;margin:10px 0;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:999px;outline:none;background:linear-gradient(90deg,#2d6cff,#ff2d2d);touch-action:pan-y}.temp-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:30px;height:30px;border-radius:50%;background:#fff;border:2px solid #d5d5d5;box-shadow:0 2px 8px #00000080}.temp-slider::-moz-range-thumb{width:30px;height:30px;border-radius:50%;background:#fff;border:2px solid #d5d5d5}.temp-slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px #ffffff59}.slider-scale{margin-top:6px;display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-weight:700}.clim-modes{display:flex;justify-content:center;margin:22px auto 10px;border:1px solid var(--line-strong);border-radius:12px;overflow:hidden;width:min(280px,100%)}.clim-modes button{flex:1;height:48px;border:0;background:#0b0b0b;color:var(--muted);font-size:15px;font-weight:750;letter-spacing:.4px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}.clim-modes button+button{border-left:1px solid var(--line-strong)}.clim-modes button svg{width:20px;height:20px}.clim-modes button.on{background:color-mix(in srgb,#22b4ee 18%,#000);color:#7fd6f7;box-shadow:inset 0 -2px #22b4ee}.clim-modes button:disabled{opacity:.6}.hint.center{text-align:center}.ptr{position:fixed;left:50%;top:calc(8px + var(--safe-t));z-index:60;transform:translate(-50%,-64px);display:flex;align-items:center;gap:8px;max-width:calc(100vw - 32px);padding:8px 14px;background:#1c1c1cf5;border:1px solid var(--line-strong);border-radius:999px;font-size:13px;font-weight:650;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 6px 20px #00000080;opacity:0;pointer-events:none;transition:transform .25s ease,opacity .2s ease}.ptr.show{opacity:1;transform:translate(-50%)}.ptr.pulling{transition:none}.ptr span{overflow:hidden;text-overflow:ellipsis}.ptr-arrow{width:16px;height:16px;flex:none;transition:transform .15s ease}.ptr-arrow.up{transform:rotate(180deg)}.ptr-spin{width:14px;height:14px;flex:none;border-radius:50%;border:2px solid #555;border-top-color:#fff;animation:ptr-spin .8s linear infinite}.ptr-dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--ok)}.ptr-dot.warn{background:var(--warn)}.ptr-dot.err{background:var(--accent)}@keyframes ptr-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.ptr-spin{animation-duration:2s}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}@media (display-mode: standalone){html{height:calc(100% + env(safe-area-inset-top,0px))}}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.shell{min-height:100%}.page{max-width:720px;margin:0 auto;padding:calc(14px + var(--safe-t)) var(--pad) calc(var(--tabbar-h) + var(--safe-b) + 24px)}.page-title{font-size:28px;font-weight:750;letter-spacing:-.3px;margin:6px 0 18px}.section-title{font-size:13px;font-weight:700;color:var(--muted);letter-spacing:.6px;text-transform:uppercase;margin:26px 2px 10px}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;justify-content:center;background:#000000eb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:6px 4px calc(6px + var(--safe-b))}.tabbar-inner{display:flex;width:100%;max-width:720px;justify-content:space-around}.tab{flex:1 1 0;min-width:0;height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.1px;border-radius:12px;-webkit-user-select:none;user-select:none}.tab svg{width:25px;height:25px}.tab.active{color:var(--accent)}.tab:active{background:var(--surface)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--pad)}.card+.card{margin-top:var(--gap)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;min-height:96px;display:flex;flex-direction:column;justify-content:space-between}.label{font-size:13px;color:var(--muted);font-weight:650}.value{font-size:24px;font-weight:800;letter-spacing:-.2px;line-height:1.1}.value .unit{font-size:15px;font-weight:650;color:var(--muted);margin-left:3px}.value.stale,.stale{color:var(--stale)}.na{color:var(--faint);font-weight:600}.action{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);height:72px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}.action svg{width:26px;height:26px;color:var(--text)}.action:active{background:var(--surface-press)}.action.busy{opacity:.6}.action.on svg{color:var(--accent)}.rows{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.row{display:flex;align-items:center;gap:12px;padding:14px var(--pad);min-height:56px;border-top:1px solid var(--line);width:100%;background:none;border-left:0;border-right:0;border-bottom:0;text-align:left}.row:first-child{border-top:0}.row:active{background:var(--surface-press)}.row .row-main{flex:1;min-width:0}.row .row-title{font-size:16px;font-weight:600}.row .row-sub{font-size:13px;color:var(--muted);margin-top:2px}.row .row-value{font-size:15px;color:var(--muted);font-weight:600;white-space:nowrap}.row .chev{width:18px;height:18px;color:var(--faint);flex:none}.row .row-icon{width:24px;height:24px;flex:none;color:var(--text)}.btn{height:52px;width:100%;border-radius:var(--radius-sm);border:none;cursor:pointer;font-size:17px;font-weight:750}.btn-primary{background:var(--accent);color:#fff}.btn-primary:active{background:var(--accent-press)}.btn-primary:disabled{background:#3a1414;color:#a77;cursor:default}.btn-secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--line-strong)}.segments{display:flex;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:4px;margin-bottom:14px}.segments button{flex:1;height:38px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:14px;font-weight:650;cursor:pointer}.segments button.on{background:var(--surface-2);color:var(--text)}.bar{height:6px;border-radius:999px;background:#2a2a2a;overflow:hidden;position:relative}.bar>i{position:absolute;inset:0 auto 0 0;background:var(--ok);border-radius:999px;transition:width .6s ease}.bar>b{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--text)}.slider-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}.slider-value{font-size:22px;font-weight:800}input[type=range]{width:100%;height:28px;background:transparent;-moz-appearance:none;appearance:none;-webkit-appearance:none;margin:0}input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:linear-gradient(90deg,var(--accent) var(--fill, 50%),#2a2a2a var(--fill, 50%))}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:#fff;margin-top:-10px;box-shadow:0 1px 6px #0009}input[type=range]::-moz-range-track{height:6px;border-radius:999px;background:#2a2a2a}input[type=range]::-moz-range-progress{height:6px;border-radius:999px;background:var(--accent)}input[type=range]::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:#fff}.slider-scale{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-weight:650;margin-top:4px}.cmd-status{font-size:13px;font-weight:650;margin-top:10px;min-height:18px;color:var(--muted)}.cmd-status.ok{color:var(--ok)}.cmd-status.err{color:var(--accent)}.banner{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:var(--radius-sm);background:#1d1408;color:var(--warn);font-size:14px;font-weight:600;margin-bottom:14px;border:1px solid #3a2a10}.banner svg{width:20px;height:20px;flex:none}.empty{text-align:center;color:var(--muted);padding:40px 10px;font-size:15px}.veh-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-top:6px}.veh-name{font-size:26px;font-weight:750;letter-spacing:-.3px;line-height:1.15}.veh-updated{font-size:13px;color:var(--muted);font-weight:600;text-align:right;padding-top:6px;white-space:nowrap}.veh-updated.stale{color:var(--warn)}.veh-chip{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:5px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:12px;font-weight:650;color:var(--muted)}.veh-chip i{width:7px;height:7px;border-radius:50%;background:var(--ok)}.veh-chip.sleeping i{background:var(--warn)}.veh-chip.offline i{background:var(--accent)}.hero{position:relative;margin:6px calc(var(--pad) * -1) 4px;aspect-ratio:16 / 11;overflow:hidden}.hero img{width:100%;height:100%;object-fit:cover;object-position:center 58%;display:block}.hero:after{content:"";position:absolute;inset:auto 0 0 0;height:30%;background:linear-gradient(transparent,var(--bg))}.soc-card .soc-line{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}.soc-card .big{font-size:30px;font-weight:800;letter-spacing:-.4px}.soc-card .sep{color:var(--faint);font-size:26px}.soc-status{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:15px;font-weight:600}.soc-status svg{width:22px;height:22px;flex:none}.soc-status .grow{flex:1}.splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#000;transition:opacity .3s ease}.splash-stack{position:absolute;left:50%;top:30.3%;transform:translate(-50%);width:min(62vw,340px);display:flex;flex-direction:column;align-items:center}.splash.hide{opacity:0;pointer-events:none}.splash .wordmark{width:100%;height:auto;margin-top:-5.6%;animation:fade-in .9s both}.splash-car{position:relative;width:80%;aspect-ratio:1250 / 366;margin-top:22%}.car-layer{position:absolute;top:0;right:0;bottom:0;left:0}.car-layer>img:first-child{display:block;width:100%;height:100%;object-fit:contain}.car-base{opacity:.14}.car-reveal{position:absolute;top:0;right:0;bottom:0;left:0}.car-wheel{position:absolute;width:16%;aspect-ratio:1;transform:translate(-50%,-50%);animation:spin-cw 1s linear infinite}.splash-readout{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:18%}.splash-pct{font-size:26px;font-weight:300;letter-spacing:.08em;font-variant-numeric:tabular-nums}.splash-status{font-size:13px;letter-spacing:.02em;color:#a9a9a9}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes spin-cw{to{transform:translate(-50%,-50%) rotate(360deg)}}@media (prefers-reduced-motion: reduce){.splash .wordmark{animation:none}.car-wheel{animation-duration:4s}}@media (min-width: 700px) and (orientation: portrait){.veh-page{zoom:1.2}}@media (orientation: landscape) and (pointer: coarse){.page,.perf,.tabbar-inner{max-width:100vh;margin-left:auto;margin-right:auto}.fit-page{height:100vw}.perf{position:relative;inset:auto;height:calc(100vw - var(--tabbar-h) - var(--safe-b))}.sheet{max-height:42vw}}@media (orientation: landscape) and (pointer: coarse) and (min-height: 700px){.veh-page{zoom:1.2;max-width:calc(100vh / 1.2)}}
