:root{--bg: #0b0e11;--s1: #151a1f;--s2: #1d242b;--br: #2a333c;--tx: #e9edf1;--tx2: #c9d1d9;--mu: #9aa6b2;--bl: #4da3ff;--bl-ink: #06121f;--am: #f2a93b;--ok: #5bd69a;--bad: #ff7a6b;--radius: 16px;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--tx)}body{font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;line-height:1.2}p{margin:0}a{color:var(--bl)}button,input{font:inherit}.page{max-width:560px;margin:0 auto;padding:20px 16px 48px;display:flex;flex-direction:column;gap:16px}.brand{font-weight:700;letter-spacing:.02em;color:var(--mu)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:10px}.muted{color:var(--mu)}.small{font-size:13px}.title{font-size:28px;font-weight:650}.card{background:var(--s1);border:1px solid var(--br);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:12px}.card h2{font-size:17px}.card.accent{border-color:var(--bl)}.btn{min-height:48px;padding:0 18px;border-radius:12px;border:1px solid var(--br);background:var(--s2);color:var(--tx);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--bl);color:var(--bl-ink);border:0}.btn.danger{border-color:var(--bad);color:var(--bad);background:transparent}.btn.small{min-height:40px;padding:0 12px;font-size:14px}.btn.block{width:100%}.input{height:52px;padding:0 14px;border-radius:12px;border:1px solid var(--br);background:var(--bg);color:var(--tx);width:100%}.input.code{height:68px;font-size:32px;font-weight:700;letter-spacing:.25em;text-align:center;text-transform:uppercase}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:13px;background:var(--s2);color:var(--tx2)}.chip.ok{color:var(--ok)}.chip.warn{color:var(--am)}.dot{width:8px;height:8px;border-radius:4px;background:currentColor;display:inline-block}.notice{padding:12px 14px;border-radius:12px;font-size:14px}.notice.error{background:#2a1614;color:#ffb3a9;border:1px solid #5a2a24}.notice.info{background:var(--s2);color:var(--tx2)}.notice.success{background:#12261c;color:#a9ebc8;border:1px solid #24563c}.list{display:flex;flex-direction:column;gap:8px}.item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border-radius:12px;background:var(--s2)}.item.selectable{cursor:pointer;border:1px solid transparent;text-align:left;color:var(--tx);width:100%}.item.selected{border-color:var(--bl)}.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;word-break:break-all}.car{min-height:100vh;padding:24px;display:flex;flex-direction:column;gap:20px}.car .top{display:flex;justify-content:space-between;align-items:center}.car .center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;text-align:center}.car .code{font-size:clamp(64px,13vw,132px);font-weight:750;letter-spacing:.12em;background:var(--s1);border:1px solid var(--br);border-radius:28px;padding:18px 36px;line-height:1}.car .lead{font-size:clamp(20px,2.6vw,28px);font-weight:600;max-width:34ch}.car .sub{font-size:clamp(16px,1.9vw,20px);color:var(--mu);max-width:46ch}.car .big{font-size:clamp(40px,6vw,64px);font-weight:700}.car .btn{min-height:64px;padding:0 28px;font-size:20px;border-radius:18px}.dash{--d-bg: #000;--d-s1: #111417;--d-s2: #1b2026;--d-br: #2a3138;--d-tx: #f2f4f6;--d-mu: #8d98a3;--d-ok: #5bd69a;--d-low: #f2a93b;--d-bad: #ff6b5b;--d-acc: #4da3ff;min-height:100vh;background:var(--d-bg);color:var(--d-tx);display:grid;gap:16px;padding:16px 24px 20px;font-variant-numeric:tabular-nums;user-select:none;-webkit-user-select:none;transition:background .4s,color .4s}.dash[data-theme=day]{--d-bg: #eef1f4;--d-s1: #ffffff;--d-s2: #e3e8ed;--d-br: #cfd6dd;--d-tx: #0d1216;--d-mu: #5b6670;--d-ok: #138a52;--d-low: #b86e00;--d-bad: #c62f22;--d-acc: #0a6fd6;color-scheme:light}.dash .notice.success{background:color-mix(in srgb,var(--d-ok) 14%,var(--d-s1));color:var(--d-tx);border-color:var(--d-ok)}.dash .notice.error{background:color-mix(in srgb,var(--d-bad) 14%,var(--d-s1));color:var(--d-tx);border-color:var(--d-bad)}.dash .notice.info{background:var(--d-s2);color:var(--d-tx)}.dash .btn{background:var(--d-s2);color:var(--d-tx);border-color:var(--d-br)}.dash .btn.primary{background:var(--d-acc);color:#fff;border:0}.dash .btn.danger{background:transparent;color:var(--d-bad);border:2px solid var(--d-bad)}.dash .btn.big{min-height:72px;font-size:22px;border-radius:18px;padding:0 28px}.dash .btn:disabled,.dash .btn.primary:disabled{background:var(--d-s2);color:var(--d-mu);border:1px solid var(--d-br);opacity:1}.dash.driving{grid-template-rows:auto 1fr auto}.dash.parked{grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr auto;column-gap:28px}.dash.parked .dash-top,.dash.parked .dash-footer{grid-column:1 / -1}.dash.compact{grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;column-gap:28px}.dash.compact .dash-top{grid-column:1 / -1}.dash-top{display:flex;align-items:center;gap:16px;min-height:56px}.dash-brand{font-weight:700;font-size:20px}.dash-status{flex:1;color:var(--d-mu);font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-status.warn{color:var(--d-low)}.dash-icon{position:relative;width:60px;height:56px;border-radius:16px;border:1px solid var(--d-br);background:var(--d-s1);color:var(--d-tx);font-size:28px;cursor:pointer}.dash-dot{position:absolute;top:8px;right:8px;width:9px;height:9px;border-radius:5px;background:var(--d-acc)}.dash-speed{display:flex;align-items:center;justify-content:center;gap:40px;min-height:0}.speed{display:flex;flex-direction:column;align-items:center}.speed-num{font-size:clamp(140px,40vh,260px);font-weight:700;line-height:.9;letter-spacing:-.03em}.speed-num.p{color:var(--d-mu)}.speed-unit{font-size:26px;color:var(--d-mu);font-weight:600;margin-top:6px}.speed-note{margin-top:10px;font-size:16px;color:var(--d-low);text-align:center;max-width:22ch}.dash.parked .speed-num{font-size:clamp(120px,30vh,220px)}.gauge{--g: var(--d-acc);--ga: 34%;position:relative;width:min(440px,76vh);aspect-ratio:1;border-radius:50%;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 42%,var(--d-s2) 0%,var(--d-s1) 62%,var(--d-bg) 100%);border:1px solid var(--d-br);box-shadow:inset 18px 0 34px -16px color-mix(in srgb,var(--g) var(--ga),transparent),-10px 0 46px -18px color-mix(in srgb,var(--g) var(--ga),transparent),0 0 0 6px var(--d-s1);transition:box-shadow .4s}.gauge.near{--g: var(--d-low);--ga: 66%}.gauge.over{--g: var(--d-bad);--ga: 70%}.gauge-speed{font-size:clamp(96px,25vh,156px);font-weight:650;line-height:1;letter-spacing:-.04em}.gauge-unit{font-size:20px;font-weight:500;color:var(--d-mu);margin-top:6px}.gauge-line{display:flex;align-items:baseline;gap:10px;margin-top:26px;font-size:26px;font-weight:600}.gauge-line small{font-size:16px;color:var(--d-mu);margin-left:3px;font-weight:500}.gauge-dot{color:var(--d-mu)}.gauge-line.low .gauge-pct{color:var(--d-low)}.gauge-line.critical .gauge-pct{color:var(--d-bad)}.gauge-accent{width:150px;height:3px;border-radius:2px;margin-top:10px;background:linear-gradient(90deg,transparent,var(--g) 30%,var(--g) 70%,transparent)}.gauge .speed-note{position:absolute;bottom:14%}.dash.driving .dash-speed{gap:28px}.dash.compact .speed-num{font-size:clamp(110px,26vh,170px)}.dash.compact .dash-speed{padding:0 8px}.speed-none{font-size:.4em;color:var(--d-mu);letter-spacing:.05em}.limit{width:132px;height:172px;border-radius:12px;background:#fff;color:#000;border:6px solid #000;box-shadow:0 0 0 3px #fff;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:10px 0 12px}.limit-top{font-size:15px;font-weight:800;letter-spacing:.04em}.limit-num{font-size:72px;font-weight:800;line-height:1}.limit-unit{font-size:16px;font-weight:700}.limit.blank{background:transparent;color:var(--d-mu);border:5px solid var(--d-br);box-shadow:none}.limit.over:not(.blank){box-shadow:0 0 0 3px var(--d-bad)}.dash[data-theme=day] .limit:not(.blank){box-shadow:0 0 0 3px #fff,0 2px 10px #00000026}.dash-battery{display:flex;flex-direction:column;gap:16px;min-height:0}.dash.parked .dash-battery,.dash.compact .dash-battery{justify-content:center}.battery{background:var(--d-s1);border:1px solid var(--d-br);border-radius:22px;padding:16px 22px;display:flex;flex-direction:column;gap:12px}.battery{position:relative}.battery.tappable{cursor:pointer;transition:transform .1s,border-color .2s}.battery.tappable:active{transform:scale(.99);border-color:var(--d-acc)}.battery.busy{border-color:var(--d-acc)}.battery-refresh{position:absolute;top:16px;right:20px;font-size:16px;color:var(--d-mu)}.battery.busy .battery-refresh{color:var(--d-acc)}.battery-main{display:flex;align-items:baseline;gap:22px}.dash.parked .battery-main,.dash.compact .battery-main{flex-direction:column;gap:2px}.battery-pct{font-size:72px;font-weight:700;line-height:1}.dash.parked .battery-pct{font-size:104px}.dash.compact .battery-pct{font-size:84px}.battery-sign{font-size:.45em;color:var(--d-mu);margin-left:4px}.battery-km{font-size:28px;color:var(--d-mu);font-weight:600}.battery.low .battery-pct{color:var(--d-low)}.battery.critical .battery-pct{color:var(--d-bad)}.battery-bar{position:relative;height:18px;border-radius:9px;background:var(--d-s2);overflow:hidden}.battery-fill{height:100%;background:var(--d-ok);border-radius:9px;transition:width .6s}.battery.low .battery-fill{background:var(--d-low)}.battery.critical .battery-fill{background:var(--d-bad)}.battery-limit{position:absolute;top:0;bottom:0;width:3px;background:var(--d-tx);opacity:.7}.charging{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--d-br);padding-top:10px}.charging-status{font-size:20px;font-weight:650}.charging-status.on{color:var(--d-ok)}.charging-facts{display:flex;flex-wrap:wrap;gap:6px 22px;font-size:18px;color:var(--d-tx)}.charging-facts em{font-style:normal;color:var(--d-mu);margin-right:4px}.charge-control{display:flex;flex-direction:column;gap:12px}.charge-control .row{flex-wrap:nowrap}.charge-control .row .btn{flex:1}.dash-hint{color:var(--d-mu);font-size:17px}.dash .notice{font-size:18px;padding:14px 16px}.dash-footer{display:flex;justify-content:flex-end}.dash-footer .btn.small{min-height:48px;font-size:16px}
