@import "https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--m-bg:#08080a;--m-surface:#0d0d10;--m-surface-2:#131316;--m-hover:#1a1a1d;--m-border:#1c1c20;--m-border-2:#26262b;--m-text:#f4f4f5;--m-text-2:#a1a1aa;--m-text-3:#8a8a93;--m-text-4:#6b6b75;--m-text-5:#55555d;--m-accent:#ededed;--m-good:#4ade80;--m-warn:#f4b73c;--m-bad:#ef4444;--m-radius:10px;--m-radius-lg:14px}[data-theme=light]{--m-bg:#f0f0f2;--m-surface:#f8f8fa;--m-surface-2:#fff;--m-hover:#eeeef2;--m-border:#dddde4;--m-border-2:#c8c8d2;--m-text:#111113;--m-text-2:#3a3a44;--m-text-3:#5a5a65;--m-text-4:#7a7a86;--m-text-5:#9a9aa6;--m-accent:#111113;--m-good:#16a34a;--m-warn:#d97706;--m-bad:#dc2626}html,body,#root{font-feature-settings:"ss01", "cv11", "tnum";background:var(--m-bg);max-width:100%;height:100%;color:var(--m-text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;letter-spacing:-.005em;font-family:Geist,Helvetica Neue,system-ui,sans-serif;font-size:13px;overflow-x:hidden}a{color:var(--m-text-2);text-decoration:none}a:hover{color:var(--m-text)}svg{display:block}::selection{background:var(--m-text);color:var(--m-bg)}.scroll-y{scrollbar-width:thin;overflow:hidden auto}.scroll-y::-webkit-scrollbar{width:8px}.scroll-y::-webkit-scrollbar-thumb{background:var(--m-border-2);border-radius:4px}.scroll-y::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--m-border-2);border-radius:4px}.cluster-app{background:var(--m-bg);grid-template-rows:auto 1fr;grid-template-columns:72px 1fr;width:100%;height:100vh;display:grid;position:relative;overflow:hidden}.cluster-app:before{content:"";pointer-events:none;z-index:0;background-image:radial-gradient(#ffffff05 1px,#0000 1px);background-size:24px 24px;position:absolute;inset:0}.cluster-rail{border-right:1px solid var(--m-border);z-index:2;background:linear-gradient(#ffffff03,#0000);flex-direction:column;grid-row:1/3;gap:4px;padding:16px 12px;display:flex;position:relative}.cluster-rail .brand-mark{color:#0a0a0a;letter-spacing:-.02em;background:linear-gradient(#fafafa,#d4d4d8);border-radius:9px;flex-shrink:0;align-self:center;place-items:center;width:40px;height:40px;margin-bottom:14px;font-size:13px;font-weight:700;display:grid;box-shadow:inset 0 1px #ffffff0d,0 6px 14px -8px #0009}.cluster-rail .rail-sep{background:var(--m-border);height:1px;margin:6px 4px}.cluster-rail .rail-item{width:44px;height:44px;color:var(--m-text-3);cursor:pointer;border-radius:9px;align-self:center;place-items:center;transition:background .12s,color .12s;display:grid;position:relative}.cluster-rail .rail-item:hover{background:var(--m-hover);color:var(--m-text)}.cluster-rail .rail-item.active{color:var(--m-text);background:linear-gradient(#ffffff0f,#ffffff05);box-shadow:inset 0 1px #ffffff0a,0 6px 14px -8px #0006}.cluster-rail .rail-item.active:before{content:"";background:var(--m-text);border-radius:2px;width:2px;position:absolute;top:12px;bottom:12px;left:-13px}.cluster-rail .rail-item svg{width:18px;height:18px}.cluster-rail .rail-item:after{content:attr(data-label);background:var(--m-text);color:var(--m-bg);white-space:nowrap;pointer-events:none;opacity:0;z-index:300;border-radius:5px;padding:4px 8px;font-size:11px;font-weight:500;transition:opacity .12s,transform .12s;position:absolute;top:50%;left:56px;transform:translateY(-50%)translate(-4px)}.cluster-rail .rail-item:hover:after{opacity:1;transform:translateY(-50%)translate(0)}.cluster-rail .rail-spacer{flex:1}.topbar{border-bottom:1px solid var(--m-border);z-index:1;background:#08080ab3;justify-content:space-between;align-items:center;gap:24px;padding:14px 28px;display:flex;position:relative}.crumb{color:var(--m-text-3);align-items:center;gap:10px;font-size:12px;display:flex}.crumb .sep{color:var(--m-text-5)}.crumb b{color:var(--m-text);font-weight:500}.cmdbar{background:var(--m-surface);border:1px solid var(--m-border);min-width:200px;max-width:380px;color:var(--m-text-3);border-radius:8px;flex:auto;align-items:center;gap:10px;padding:7px 12px;font-size:12px;display:flex}.cmdbar .kbd{color:var(--m-text-4);border:1px solid var(--m-border-2);background:var(--m-bg);border-radius:4px;margin-left:auto;padding:2px 6px;font-family:Geist Mono,monospace;font-size:10px}.vehicle-pill{border:1px solid var(--m-border-2);background:var(--m-surface);border-radius:100px;align-items:center;gap:10px;padding:6px 10px 6px 6px;font-size:12px;display:flex}.vehicle-pill .av{border:1px solid var(--m-border-2);background:radial-gradient(circle at 30% 30%,#2a2a2d,#0a0a0a 70%);border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.vehicle-pill .av svg{width:12px;height:12px;color:var(--m-text)}.vehicle-pill .vp-name{color:var(--m-text);letter-spacing:-.01em;font-weight:500}.vehicle-pill .vp-sub{color:var(--m-text-3);font-feature-settings:"tnum"}.vehicle-pill--switchable{cursor:pointer;transition:background .15s,border-color .15s}.vehicle-pill--switchable:hover{background:var(--m-hover);border-color:var(--m-text-4)}.vehicle-pill--switchable:hover .vp-name{color:var(--m-text)}.vehicle-pill .vp-switch-icon{color:var(--m-text-3);margin-left:2px;font-size:14px;line-height:1}.vehicle-pill--switchable:hover .vp-switch-icon{color:var(--m-text)}.vehicle-pill--open{background:var(--m-hover)!important;border-color:var(--m-text-4)!important}.vehicle-pill-wrap{position:relative}.vs-dropdown{border:1px solid var(--m-border-2);z-index:500;background:#1a1a1e;border-radius:16px;width:420px;animation:.18s cubic-bezier(.2,.7,.2,1) vsDropIn;position:fixed;overflow:visible;box-shadow:0 20px 60px #000000b3,inset 0 0 0 1px #ffffff08}@keyframes vsDropIn{0%{opacity:0;transform:translateY(-8px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.vs-dropdown__arrow{border:1px solid var(--m-border-2);z-index:1;background:#1a1a1e;border-bottom:none;border-right:none;width:12px;height:12px;position:absolute;top:-6px;right:24px;transform:rotate(45deg)}.vs-dropdown__demo-note{color:var(--m-text-4);letter-spacing:.02em;padding:10px 16px 0;font-size:11px}.vs-dropdown__list{flex-direction:column;gap:6px;padding:10px;display:flex}.vs-dropdown__card{background:var(--m-surface);border:1px solid var(--m-border);cursor:pointer;text-align:left;border-radius:12px;justify-content:space-between;align-items:center;width:100%;padding:16px 18px;font-family:Geist,sans-serif;transition:background .15s,border-color .15s;display:flex}.vs-dropdown__card:hover{border-color:var(--m-border-2);background:#ffffff08}.vs-dropdown__card:active{transform:scale(.99)}.vs-dropdown__card--active{background:#ffffff0a!important;border-color:#ffffff26!important}.vs-dropdown__card-info{flex-direction:column;gap:2px;min-width:0;display:flex}.vs-dropdown__card-name{color:var(--m-text);letter-spacing:-.025em;font-size:18px;font-weight:600}.vs-dropdown__card-range{color:var(--m-text-3);font-variant-numeric:tabular-nums;font-size:14px}.vs-dropdown__card-image{background:radial-gradient(at bottom,#ffffff0d,#0000 70%);border-radius:8px;flex-shrink:0;justify-content:center;align-items:flex-end;width:160px;height:90px;margin-left:12px;display:flex;overflow:hidden}.vs-dropdown__card-image img{object-fit:contain;object-position:center bottom;filter:brightness(.9)drop-shadow(0 4px 12px #00000080);width:100%;height:100%;transition:filter .2s,transform .2s}.vs-dropdown__card:hover .vs-dropdown__card-image img{filter:brightness()drop-shadow(0 4px 16px #0009);transform:scale(1.04)}.vs-dropdown__card--active .vs-dropdown__card-image img{filter:brightness(1.05)drop-shadow(0 4px 16px #0009)}.vs-dropdown__card-image svg{width:88px;height:auto;color:var(--m-text-2);opacity:.85;transition:opacity .15s,color .15s}.vs-dropdown__card:hover .vs-dropdown__card-image svg{opacity:1;color:var(--m-text)}.vs-dropdown__card--active .vs-dropdown__card-image svg{color:var(--m-text);opacity:1}.live{color:var(--m-text-2);border:1px solid var(--m-border-2);background:var(--m-surface);border-radius:100px;align-items:center;gap:8px;padding:6px 12px 6px 10px;font-size:12px;display:flex}.live .pulse{background:var(--m-good);border-radius:50%;width:7px;height:7px;animation:2.2s ease-out infinite mvpulse;box-shadow:0 0 #4ade8099}.live.warn .pulse{background:var(--m-warn);box-shadow:0 0 #f4b73c99}@keyframes mvpulse{0%{box-shadow:0 0 #4ade808c}70%{box-shadow:0 0 0 8px #4ade8000}to{box-shadow:0 0 #4ade8000}}.topbar-refresh-btn{border:1px solid var(--m-border-2);background:var(--m-surface);color:var(--m-text-3);cursor:pointer;border-radius:100px;align-items:center;gap:7px;padding:6px 12px 6px 9px;font-family:Geist,sans-serif;font-size:11px;transition:all .15s;display:flex}.topbar-refresh-btn:hover:not(:disabled){background:var(--m-hover);color:var(--m-text);border-color:var(--m-text-4)}.topbar-refresh-btn:active:not(:disabled){transform:scale(.96)}.topbar-refresh-btn:disabled{opacity:.6;cursor:not-allowed}.topbar-refresh-btn svg{flex-shrink:0;transition:transform .3s}.topbar-refresh-btn .spin{animation:.8s linear infinite refreshSpin}.refresh-ago{color:var(--m-text-4);font-variant-numeric:tabular-nums;letter-spacing:.02em}@keyframes refreshSpin{to{transform:rotate(360deg)}}.cluster-main{z-index:1;animation:.35s cubic-bezier(.2,.7,.2,1) both clusterFade;position:relative;overflow:hidden auto}@keyframes clusterFade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.cluster-main .card{animation:.4s cubic-bezier(.2,.7,.2,1) both cardStagger}.cluster-main .card:first-child{animation-delay:20ms}.cluster-main .card:nth-child(2){animation-delay:60ms}.cluster-main .card:nth-child(3){animation-delay:.1s}.cluster-main .card:nth-child(4){animation-delay:.14s}.cluster-main .card:nth-child(5){animation-delay:.18s}.cluster-main .card:nth-child(6){animation-delay:.22s}@keyframes cardStagger{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page{padding:26px 32px}.cluster-main,.page,.card{min-width:0}.cluster-main{max-width:100%;overflow-x:hidden}.page-row{gap:12px;display:grid}.page-head{justify-content:space-between;align-items:flex-end;padding:0 0 18px;display:flex}.page-eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--m-text-3);margin-bottom:8px;font-size:10px}.page-title{letter-spacing:-.03em;margin:0;font-size:30px;font-weight:600;line-height:1.1}.page-sub{color:var(--m-text-3);margin-top:6px;font-size:13px}.page-actions{gap:8px;display:flex}.card{background:var(--m-surface);border:1px solid var(--m-border);border-radius:var(--m-radius);transition:border-color .15s;position:relative}.card:hover{border-color:var(--m-border-2)}.card.flush{background:0 0;border:0}.kpi{padding:18px 20px 16px}.kpi-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.kpi-label{letter-spacing:.18em;text-transform:uppercase;color:var(--m-text-3);align-items:center;gap:8px;font-size:10px;font-weight:500;display:flex}.kpi-label .ic{width:11px;height:11px;color:var(--m-text-4)}.kpi-trend{color:var(--m-text-3);font-feature-settings:"tnum";align-items:center;gap:4px;font-size:11px;display:flex}.kpi-trend.up{color:var(--m-good)}.kpi-trend.down{color:var(--m-warn)}.kpi-value{letter-spacing:-.035em;font-feature-settings:"tnum";font-size:34px;font-weight:500;line-height:1}.kpi-value .u{color:var(--m-text-3);letter-spacing:-.01em;margin-left:4px;font-size:14px;font-weight:400}.kpi-foot{color:var(--m-text-3);font-feature-settings:"tnum";justify-content:space-between;align-items:center;margin-top:14px;font-size:11px;display:flex}.micro-bar{background:var(--m-border);border-radius:2px;height:3px;margin-top:12px;position:relative;overflow:hidden}.micro-bar i{background:linear-gradient(90deg, var(--m-text-2), var(--m-text));height:100%;display:block}.giant{letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:96px;font-weight:300;line-height:.95}.giant .u{color:var(--m-text-3);margin-left:4px;font-size:22px;font-weight:400}.btn{border:1px solid var(--m-border-2);background:var(--m-surface);color:var(--m-text-2);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-family:Geist,sans-serif;font-size:12px;font-weight:500;transition:background .12s,color .12s;display:inline-flex}.btn:hover{background:var(--m-hover);color:var(--m-text)}.btn.primary{background:var(--m-text);color:var(--m-bg);border-color:var(--m-text)}.btn.primary:hover{background:#d4d4d8}.btn svg{width:13px;height:13px}.badge{border:1px solid var(--m-border-2);background:var(--m-surface-2);color:var(--m-text-2);border-radius:100px;align-items:center;gap:6px;padding:3px 8px;font-size:11px;font-weight:500;display:inline-flex}.badge .d{background:var(--m-text-3);border-radius:50%;width:5px;height:5px}.badge.good .d{background:var(--m-good)}.badge.warn .d{background:var(--m-warn)}.badge.bad .d{background:var(--m-bad)}.badge.good{color:var(--m-good)}.tab-bar{border-bottom:1px solid var(--m-border);align-items:center;gap:4px;padding:0 32px;display:flex}.tab-bar .tab{color:var(--m-text-3);cursor:pointer;background:0 0;border:none;border-bottom:1.5px solid #0000;margin-right:24px;padding:12px 4px;font-family:Geist,sans-serif;font-size:13px}.tab-bar .tab:hover{color:var(--m-text-2)}.tab-bar .tab.on{color:var(--m-text);border-bottom-color:var(--m-text)}.seg{border:1px solid var(--m-border);background:var(--m-surface);border-radius:7px;gap:0;padding:2px;font-size:11px;display:inline-flex}.seg span{color:var(--m-text-3);cursor:pointer;border-radius:5px;padding:4px 9px;transition:background .12s,color .12s}.seg span.on{background:var(--m-hover);color:var(--m-text)}.sect-head{justify-content:space-between;align-items:baseline;margin-bottom:14px;display:flex}.sect-head h3{letter-spacing:-.01em;margin:0;font-size:14px;font-weight:500}.sect-head .sub{color:var(--m-text-3);font-size:11px}.chart-wrap{padding:20px 22px 14px}.row-between{justify-content:space-between;align-items:center;display:flex}.divider{background:var(--m-border);height:1px;margin:18px 0}.meta-list{flex-direction:column;display:flex}.meta-list .li{border-bottom:1px solid var(--m-border);justify-content:space-between;align-items:baseline;padding:9px 0;font-size:12px;display:flex}.meta-list .li:last-child{border-bottom:0}.meta-list .li .k{color:var(--m-text-3);letter-spacing:.04em;text-transform:uppercase;font-size:11px}.meta-list .li .v{color:var(--m-text);font-feature-settings:"tnum"}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}.table th{text-align:left;letter-spacing:.18em;text-transform:uppercase;color:var(--m-text-3);border-bottom:1px solid var(--m-border);padding:12px 14px;font-size:10px;font-weight:500}.table td{border-bottom:1px solid var(--m-border);color:var(--m-text);padding:13px 14px}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:#ffffff05}.table td.dim{color:var(--m-text-3)}.table td.num{font-variant-numeric:tabular-nums}.status-grid{border:1px solid var(--m-border);border-radius:10px;grid-template-columns:repeat(4,1fr);gap:0;display:grid;overflow:hidden}.status-grid>div{border-right:1px solid var(--m-border);padding:12px 14px}.status-grid>div:last-child{border-right:0}.status-grid .lab{letter-spacing:.16em;text-transform:uppercase;color:var(--m-text-3);margin-bottom:6px;font-size:10px}.status-grid .val{font-size:14px;font-weight:500}.bars{align-items:flex-end;gap:4px;height:100px;display:flex}.bars .b{background:var(--m-text);opacity:.85;border-radius:2px 2px 0 0;flex:1;min-height:4px}.bars .b.dim{opacity:.25}.trip-row{border-bottom:1px solid var(--m-border);grid-template-columns:56px 1fr auto;align-items:center;gap:12px;padding:14px 16px;display:grid}.trip-row .when{color:var(--m-text-3);font-variant-numeric:tabular-nums;font-size:11px}.trip-row .where b{font-weight:500}.trip-row .where .arrow{color:var(--m-text-4);margin:0 6px}.trip-row .where .sub{color:var(--m-text-3);margin-top:2px;font-size:11px}.trip-row .stats{text-align:right;font-variant-numeric:tabular-nums;color:var(--m-text-2);font-size:12px}.trip-row .stats b{color:var(--m-text);font-size:14px;font-weight:500;display:block}.map-canvas{background:radial-gradient(circle at 30% 40%, #ffffff06, transparent 40%), radial-gradient(circle at 70% 60%, #ffffff05, transparent 35%), var(--m-surface);position:relative;overflow:hidden}.map-canvas:before{content:"";background-image:linear-gradient(#ffffff06 1px,#0000 1px),linear-gradient(90deg,#ffffff06 1px,#0000 1px);background-size:40px 40px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle,#000 30%,#0000 80%);mask-image:radial-gradient(circle,#000 30%,#0000 80%)}.map-pin{background:var(--m-text);border-radius:50%;width:10px;height:10px;position:absolute;box-shadow:0 0 0 4px #ededed1f}.switch{background:var(--m-border-2);cursor:pointer;border-radius:100px;flex-shrink:0;width:32px;height:18px;transition:background .15s;position:relative}.switch:after{content:"";background:var(--m-text-3);border-radius:50%;width:14px;height:14px;transition:all .2s;position:absolute;top:2px;left:2px}.switch.on{background:var(--m-text)}.switch.on:after{background:var(--m-bg);left:16px}.placeholder-screen{flex-direction:column;height:100%;display:flex}.placeholder-card{text-align:center;flex:1;place-items:center;padding:32px;display:grid}.placeholder-icon{border:1px solid var(--m-border-2);width:56px;height:56px;color:var(--m-text-3);border-radius:14px;place-items:center;margin:0 auto 20px;display:grid}.leaflet-container{border-radius:var(--m-radius);background:var(--m-surface)!important}.leaflet-popup-content-wrapper{background:var(--m-surface-2)!important;color:var(--m-text)!important;border-radius:var(--m-radius)!important;border:1px solid var(--m-border)!important;box-shadow:0 8px 32px #0009!important}.leaflet-popup-tip{background:var(--m-surface-2)!important}.leaflet-control-zoom{overflow:hidden;border:1px solid var(--m-border)!important;border-radius:8px!important;box-shadow:0 4px 16px #00000080!important}.leaflet-control-zoom a{transition:background .12s,color .12s;background:var(--m-surface)!important;color:var(--m-text-2)!important;border-color:var(--m-border)!important;width:32px!important;height:32px!important;font-size:16px!important;line-height:32px!important}.leaflet-control-zoom a:hover{background:var(--m-hover)!important;color:var(--m-text)!important}.leaflet-control-attribution{color:var(--m-text-4)!important;background:#08080ab3!important;border-radius:4px 0 0!important;padding:2px 6px!important;font-size:9px!important}.leaflet-control-attribution a{color:var(--m-text-3)!important}@media (width<=900px){.cluster-app{grid-template-columns:1fr}.cluster-rail{display:none}.page{padding:16px}.mobile-menu-btn{display:grid!important}.vehicle-pill .vp-sub,.cmdbar span:not(.kbd){display:none}.cmdbar{justify-content:center;min-width:44px;max-width:44px;padding:7px}.cmdbar .kbd{display:none}.page .card>div[style*="grid-template-columns: 1fr 1.4fr 1fr"]{grid-template-columns:1fr!important;gap:16px!important}.page .card>div[style*="grid-template-columns: 1fr 1.4fr 1fr"]>div{border:none!important;padding:0!important}.page .card>div[style*="repeat(4, 1fr)"]{grid-template-columns:repeat(2,1fr)!important;gap:12px!important}.status-grid{grid-template-columns:repeat(3,1fr)!important;gap:8px!important}.card>div[style*="repeat(4, 1fr)"]{grid-template-columns:repeat(3,1fr)!important}.page>div[style*="grid-template-columns: 2fr 1fr"],.page>div[style*="grid-template-columns: 1fr 1fr"]{grid-template-columns:1fr!important}.page>div[style*="grid-template-columns: 1fr 1fr"][style*="height: calc"]{grid-template-columns:1fr!important;height:auto!important}.page>div[style*="grid-template-columns: 1fr 1fr"][style*="height: calc"]>div:first-child{height:280px!important}.bh-kpi-row{-webkit-overflow-scrolling:touch;gap:8px!important;padding-bottom:8px!important;display:flex!important;overflow-x:auto!important}.bh-kpi-row>.card{flex-shrink:0!important;min-width:160px!important}.export-actions{flex-wrap:wrap!important}.export-actions .btn{flex:auto!important}.sc-table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto!important}.refresh-ago{display:none}.cal-timeline{gap:1px!important}}@media (width<=560px){.topbar{gap:8px;padding:10px 12px}.topbar>*{min-width:0}.page{padding:12px}.vehicle-pill{gap:6px;max-width:140px;padding:5px 8px 5px 5px}.vehicle-pill .vp-name{text-overflow:ellipsis;white-space:nowrap;max-width:88px;overflow:hidden}.card>div[style*="repeat(4, 1fr)"],.status-grid,.page .card>div[style*="repeat(4, 1fr)"],.page>div[style*="repeat(4, 1fr)"]{grid-template-columns:repeat(2,1fr)!important}.page>div[style*="grid-template-columns: 1.3fr 1fr"],.page>div[style*="grid-template-columns: 1.4fr 1fr"],.page>div[style*="grid-template-columns: 2fr 1fr"],.page>div[style*="grid-template-columns: 1fr 1.5fr"],.page>div[style*="grid-template-columns: 1fr 1.4fr"]{grid-template-columns:1fr!important}.recharts-responsive-container{width:100%!important}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg, var(--m-surface-2) 25%, var(--m-hover) 50%, var(--m-surface-2) 75%);border-radius:var(--m-radius);background-size:200% 100%;animation:1.5s ease-in-out infinite shimmer}.skeleton-card{background:linear-gradient(90deg, var(--m-surface-2) 25%, var(--m-hover) 50%, var(--m-surface-2) 75%);border-radius:var(--m-radius);border:1px solid var(--m-border);background-size:200% 100%;animation:1.5s ease-in-out infinite shimmer}.skeleton-row{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px;display:grid}.skeleton-row .skeleton-card{height:96px}.skeleton-chart{height:220px;margin-bottom:14px}.skeleton-table{height:180px}.vehicle-map-marker{background:0 0!important;border:none!important}.vehicle-marker-car{z-index:2;background:radial-gradient(circle,#edededf2 40%,#edededb3 70%,#0000 100%);border-radius:50%;place-items:center;width:32px;height:32px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 16px #ededed99,0 0 6px #ededede6}.vehicle-marker-car svg{color:#08080a;filter:drop-shadow(0 1px 1px #0000004d);width:22px;height:22px}.vehicle-marker-pulse{z-index:1;background:#ededed1f;border:1px solid #ededed14;border-radius:50%;width:44px;height:44px;animation:2.5s ease-in-out infinite markerPulse;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes markerPulse{0%{opacity:.6;transform:translate(-50%,-50%)scale(1)}50%{opacity:0;transform:translate(-50%,-50%)scale(2.2)}to{opacity:.6;transform:translate(-50%,-50%)scale(1)}}.vc-btn{background:var(--m-surface-2);border:1px solid var(--m-border);color:var(--m-text-3);cursor:pointer;border-radius:8px;flex-direction:column;align-items:center;gap:5px;padding:10px 4px 8px;font-family:Geist,sans-serif;font-size:10px;transition:all .15s;display:flex}.vc-btn:hover:not(:disabled){background:var(--m-hover);color:var(--m-text);border-color:var(--m-border-2);transform:translateY(-1px)}.vc-btn:active:not(:disabled){transform:translateY(0)}.vc-btn.active{color:var(--m-text);border-color:var(--m-text-4);background:#ffffff0f}.vc-btn.confirming{border-color:var(--m-warn);color:var(--m-warn);animation:1s infinite vcPulse}@keyframes vcPulse{0%,to{box-shadow:0 0 #f4b73c33}50%{box-shadow:0 0 0 4px #f4b73c00}}.vc-btn:disabled{opacity:.35;cursor:not-allowed}.vc-btn svg{flex-shrink:0}.vc-label{letter-spacing:.02em;white-space:nowrap;font-weight:500}.vc-spinner{border:2px solid var(--m-border-2);border-top-color:var(--m-text);border-radius:50%;width:15px;height:15px;animation:.6s linear infinite vcSpin}@keyframes vcSpin{to{transform:rotate(360deg)}}.charge-cal{padding:2px 0}.cal-timeline{align-items:flex-end;gap:2px;height:80px;padding:0 2px;display:flex}.cal-bar{cursor:crosshair;flex:1;align-items:flex-end;min-width:0;height:100%;display:flex;position:relative}.cal-fill{border-radius:2px 2px 0 0;width:100%;min-height:4px;transition:height .3s,opacity .15s}.cal-bar:hover .cal-fill{filter:brightness(1.3);opacity:1!important}.cal-bar.charge{position:relative}.cal-bar.charge:after{content:"";pointer-events:none;border:1px solid #4ade804d;border-radius:3px;position:absolute;inset:-2px -1px}.cal-charge-label{color:var(--m-good);white-space:nowrap;letter-spacing:.04em;font-size:9px;font-weight:600;position:absolute;top:-18px;left:0}.cal-now-dot{background:var(--m-text);border-radius:50%;width:6px;height:6px;position:absolute;top:-6px;left:50%;transform:translate(-50%);box-shadow:0 0 6px #f4f4f580}.cal-bar.now:before{content:"";background:var(--m-text);opacity:.4;width:1px;position:absolute;top:-4px;bottom:0;left:50%}.cal-hours{height:16px;margin-top:4px;position:relative}.cal-hours span{color:var(--m-text-4);font-variant-numeric:tabular-nums;font-family:Geist Mono,monospace;font-size:9px;position:absolute;transform:translate(-50%)}.mobile-menu-btn{border:1px solid var(--m-border-2);cursor:pointer;width:36px;height:36px;color:var(--m-text-2);background:0 0;border-radius:8px;place-items:center;transition:background .12s;display:none}.mobile-menu-btn:hover{background:var(--m-hover);color:var(--m-text)}.drawer-overlay{z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;animation:.2s drawerFadeIn;position:fixed;inset:0}@keyframes drawerFadeIn{0%{opacity:0}to{opacity:1}}.drawer{background:var(--m-surface);border-right:1px solid var(--m-border);width:260px;max-width:80vw;animation:.25s cubic-bezier(.2,.7,.2,1) drawerSlideIn;position:absolute;top:0;bottom:0;left:0;overflow-y:auto}@keyframes drawerSlideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}.drawer .brand-mark{color:#0a0a0a;background:linear-gradient(#fafafa,#d4d4d8);border-radius:8px;place-items:center;width:36px;height:36px;font-size:12px;font-weight:700;display:grid}.drawer-nav{flex-direction:column;gap:2px;padding:8px 12px;display:flex}.drawer-item{color:var(--m-text-3);border-radius:8px;align-items:center;gap:12px;padding:10px 12px;font-size:13px;text-decoration:none;transition:background .12s,color .12s;display:flex}.drawer-item:hover{background:var(--m-hover);color:var(--m-text)}.drawer-item.active{color:var(--m-text);background:#ffffff0d}.cmd-overlay{z-index:300;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0000008c;justify-content:center;align-items:flex-start;padding-top:18vh;animation:.15s cmdFadeIn;display:flex;position:fixed;inset:0}@keyframes cmdFadeIn{0%{opacity:0}to{opacity:1}}.cmd-modal{background:var(--m-surface);border:1px solid var(--m-border-2);border-radius:14px;flex-direction:column;width:520px;max-width:92vw;max-height:60vh;animation:.2s cubic-bezier(.2,.7,.2,1) cmdSlideIn;display:flex;overflow:hidden;box-shadow:0 24px 64px #0009,inset 0 0 0 1px #ffffff08}@keyframes cmdSlideIn{0%{opacity:0;transform:scale(.96)translateY(-10px)}to{opacity:1;transform:scale(1)translateY(0)}}.cmd-input-wrap{border-bottom:1px solid var(--m-border);align-items:center;gap:10px;padding:14px 18px;display:flex}.cmd-input{color:var(--m-text);letter-spacing:-.01em;background:0 0;border:none;outline:none;flex:1;font-family:Geist,sans-serif;font-size:15px}.cmd-input::placeholder{color:var(--m-text-4)}.cmd-esc{color:var(--m-text-4);border:1px solid var(--m-border-2);background:var(--m-bg);border-radius:4px;padding:3px 6px;font-family:Geist Mono,monospace;font-size:10px}.cmd-list{flex:1;padding:8px;overflow-y:auto}.cmd-cat{letter-spacing:.18em;text-transform:uppercase;color:var(--m-text-4);padding:10px 10px 4px;font-size:10px;font-weight:500}.cmd-item{color:var(--m-text-2);cursor:pointer;border-radius:7px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;transition:background 80ms;display:flex}.cmd-item:hover,.cmd-item.active{background:var(--m-hover);color:var(--m-text)}.cmd-item-label{flex:1}.cmd-item-hint{color:var(--m-text-4);border:1px solid var(--m-border-2);background:var(--m-bg);border-radius:4px;padding:2px 5px;font-family:Geist Mono,monospace;font-size:10px}.cmd-empty{text-align:center;color:var(--m-text-4);padding:32px 16px;font-size:13px}.tc-toast-container{z-index:400;pointer-events:none;flex-direction:column-reverse;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.tc-toast{background:var(--m-surface-2);border:1px solid var(--m-border-2);color:var(--m-text);pointer-events:auto;cursor:pointer;border-radius:10px;align-items:center;gap:10px;max-width:360px;padding:12px 18px;font-size:13px;animation:.28s cubic-bezier(.2,.7,.2,1) toastIn;display:flex;box-shadow:0 8px 24px #00000080}.tc-toast.exit{animation:.26s forwards toastOut}.tc-toast-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.tc-toast-msg{flex:1}@keyframes toastIn{0%{opacity:0;transform:translate(20px)scale(.96)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes toastOut{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(20px)scale(.96)}}.login-page{background:var(--m-bg);z-index:1000;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.login-bg-grid{background-image:linear-gradient(#ffffff05 1px,#0000 1px),linear-gradient(90deg,#ffffff05 1px,#0000 1px);background-size:48px 48px;animation:8s ease-in-out infinite loginGridPulse;position:absolute;inset:0;-webkit-mask-image:radial-gradient(at 50% 40%,#000 20%,#0000 70%);mask-image:radial-gradient(at 50% 40%,#000 20%,#0000 70%)}@keyframes loginGridPulse{0%,to{opacity:.5}50%{opacity:1}}.login-bg-glow{filter:blur(120px);pointer-events:none;border-radius:50%;position:absolute}.login-bg-glow--1{background:radial-gradient(circle,#ffffff08,#0000 70%);width:600px;height:600px;animation:12s ease-in-out infinite loginGlow1;top:-10%;left:20%}.login-bg-glow--2{background:radial-gradient(circle,#ffffff06,#0000 70%);width:400px;height:400px;animation:10s ease-in-out 2s infinite loginGlow2;bottom:-5%;right:15%}@keyframes loginGlow1{0%,to{opacity:.5;transform:translate(0)scale(1)}50%{opacity:1;transform:translate(30px,20px)scale(1.1)}}@keyframes loginGlow2{0%,to{opacity:.4;transform:translate(0)scale(1)}50%{opacity:.8;transform:translate(-20px,-15px)scale(1.15)}}.login-loading{place-items:center;width:100%;height:100%;display:grid}.login-spinner{border:2px solid var(--m-border-2);border-top-color:var(--m-text);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite loginSpin}@keyframes loginSpin{to{transform:rotate(360deg)}}.login-container{z-index:1;flex-direction:column;align-items:center;gap:32px;width:100%;max-width:420px;padding:32px;display:flex;position:relative}.login-brand{align-items:center;gap:14px;display:flex}.login-brand-mark{color:#0a0a0a;letter-spacing:-.02em;background:linear-gradient(#fafafa,#d4d4d8);border-radius:12px;place-items:center;width:48px;height:48px;font-size:16px;font-weight:700;display:grid;box-shadow:inset 0 1px #ffffff0d,0 8px 20px -10px #0009}.login-brand-text{flex-direction:column;gap:2px;display:flex}.login-brand-name{letter-spacing:-.025em;color:var(--m-text);font-size:18px;font-weight:600}.login-brand-sub{color:var(--m-text-3);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:500}.login-card{background:var(--m-surface);border:1px solid var(--m-border);border-radius:16px;width:100%;padding:32px 28px 28px;animation:.5s cubic-bezier(.2,.7,.2,1) loginCardIn;box-shadow:0 20px 60px #0006,inset 0 0 0 1px #ffffff05}@keyframes loginCardIn{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.login-card-header{text-align:center;margin-bottom:24px}.login-shield-icon{border:1px solid var(--m-border-2);width:40px;height:40px;color:var(--m-text-2);background:#ffffff0a;border-radius:10px;place-items:center;margin:0 auto 16px;display:grid}.login-title{letter-spacing:-.03em;color:var(--m-text);margin:0 0 8px;font-size:22px;font-weight:600}.login-subtitle{color:var(--m-text-3);margin:0;max-width:320px;margin-inline:auto;font-size:13px;line-height:1.5}.login-error{color:#fca5a5;background:#ef44440f;border:1px solid #ef444426;border-radius:10px;align-items:flex-start;gap:8px;margin-bottom:16px;padding:12px 14px;font-size:12px;line-height:1.5;display:flex}.login-error-icon{flex-shrink:0;font-size:14px;line-height:1}.login-google-btn{border:1px solid var(--m-border-2);background:var(--m-surface-2);width:100%;color:var(--m-text);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:12px;padding:14px 20px;font-family:Geist,sans-serif;font-size:14px;font-weight:500;transition:all .2s;display:flex}.login-google-btn:hover:not(:disabled){background:var(--m-hover);border-color:var(--m-text-4);transform:translateY(-1px);box-shadow:0 8px 24px #0000004d}.login-google-btn:active:not(:disabled){box-shadow:none;transform:translateY(0)}.login-google-btn:disabled{opacity:.7;cursor:not-allowed}.login-google-btn--loading{opacity:.8}.login-google-btn svg{flex-shrink:0}.login-btn-spinner{border:2px solid var(--m-border-2);border-top-color:var(--m-text);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite loginSpin}.login-domain-notice{color:var(--m-text-4);justify-content:center;align-items:center;gap:8px;margin-top:16px;font-size:11px;display:flex}.login-domain-notice strong{color:var(--m-text-3);font-weight:500}.login-domain-notice svg{color:var(--m-text-4);flex-shrink:0}.login-footer{color:var(--m-text-5);align-items:center;gap:6px;font-size:11px;display:flex}.login-footer-sep{color:var(--m-text-5)}.user-menu-wrap{position:relative}.user-avatar-btn{border:1px solid var(--m-border-2);background:var(--m-surface-2);cursor:pointer;border-radius:50%;place-items:center;width:32px;height:32px;padding:0;transition:border-color .15s,box-shadow .15s;display:grid;overflow:hidden}.user-avatar-btn:hover{border-color:var(--m-text-4);box-shadow:0 0 0 3px #ffffff0a}.user-avatar-img{object-fit:cover;border-radius:50%;width:100%;height:100%}.user-avatar-fallback{color:var(--m-text-2);font-family:Geist,sans-serif;font-size:13px;font-weight:600}.user-menu-dropdown{border:1px solid var(--m-border-2);z-index:500;background:#1a1a1e;border-radius:12px;width:220px;animation:.15s cubic-bezier(.2,.7,.2,1) userMenuIn;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 16px 48px #0009,inset 0 0 0 1px #ffffff08}@keyframes userMenuIn{0%{opacity:0;transform:translateY(-4px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.user-menu-info{flex-direction:column;gap:2px;padding:14px 16px 12px;display:flex}.user-menu-name{color:var(--m-text);letter-spacing:-.01em;font-size:13px;font-weight:500}.user-menu-email{color:var(--m-text-3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.user-menu-sep{background:var(--m-border);height:1px;margin:0 12px}.user-menu-item{cursor:pointer;width:100%;color:var(--m-text-3);background:0 0;border:none;align-items:center;gap:10px;padding:10px 16px 12px;font-family:Geist,sans-serif;font-size:13px;transition:background .12s,color .12s;display:flex}.user-menu-item:hover{color:var(--m-text);background:#ffffff0a}.user-menu-item svg{flex-shrink:0}
