@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-400-normal-C81ewxNO.woff2) format("woff2"),url(/assets/archivo-latin-400-normal-Bl602Mgc.woff) format("woff")}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-600-normal-3BBy0ZsW.woff2) format("woff2"),url(/assets/archivo-latin-600-normal-DwYieO8P.woff) format("woff")}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-500-normal-CGugC8dq.woff2) format("woff2"),url(/assets/archivo-latin-500-normal-pkzA7jw9.woff) format("woff")}@font-face{font-family:Chivo Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/chivo-mono-latin-400-normal-DZ3T-ph7.woff2) format("woff2"),url(/assets/chivo-mono-latin-400-normal-BIF4JAKS.woff) format("woff")}@font-face{font-family:Chivo Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/chivo-mono-latin-500-normal-yaIk6wkS.woff2) format("woff2"),url(/assets/chivo-mono-latin-500-normal-BJB2L2Ln.woff) format("woff")}@font-face{font-family:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/big-shoulders-display-latin-700-normal-KM2fueoL.woff2) format("woff2"),url(/assets/big-shoulders-display-latin-700-normal-CMi6UoP4.woff) format("woff")}@font-face{font-family:Big Shoulders Display;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/big-shoulders-display-latin-800-normal-DDUD9Xuh.woff2) format("woff2"),url(/assets/big-shoulders-display-latin-800-normal-CI0lhnTM.woff) format("woff")}.rd-root{--rd-paper: #f2efe6;--rd-paper-2: #e7e2d4;--rd-ink: #14161a;--rd-ink-2: #4a4c50;--rd-line: rgba(20, 22, 26, .14);--rd-road: #e4572e;--rd-road-ink: #b8401d;--rd-water: #1f5f9e;--rd-night: #101820;--rd-night-2: #18242f;--rd-display: "Big Shoulders Display", "Archivo", sans-serif;--rd-mono: "Chivo Mono", ui-monospace, monospace;background:var(--rd-paper);color:var(--rd-ink);font-family:Archivo,system-ui,sans-serif;font-size:17px;line-height:1.55;overflow-x:hidden}.rd-root *{box-sizing:border-box}.rd-root h1,.rd-root h2,.rd-root h3{font-family:var(--rd-display);font-weight:800;text-transform:uppercase;letter-spacing:.01em;line-height:.95;margin:0}.rd-root a{color:inherit}.rd-kicker{font-family:var(--rd-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--rd-road-ink);margin:0 0 14px}.rd-nav{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px clamp(16px,4vw,56px);background:var(--rd-paper);border-bottom:1px solid var(--rd-line)}.rd-nav nav{display:flex;align-items:center;gap:clamp(10px,2.4vw,28px);font-size:15px}.rd-nav nav a{text-decoration:none}.rd-nav nav a:hover{color:var(--rd-road-ink)}.rd-brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:18px;text-decoration:none}.rd-mark{display:inline-grid;place-items:center;width:34px;height:34px;background:var(--rd-ink);color:var(--rd-paper);font-family:var(--rd-display);font-weight:800;font-size:17px;border-radius:8px}.rd-signin{padding:8px 16px;border:1.5px solid var(--rd-ink);border-radius:999px;font-weight:600}.rd-signin:hover{background:var(--rd-ink);color:var(--rd-paper)!important}.rd-btn{display:inline-flex;align-items:center;justify-content:center;padding:14px 26px;border-radius:999px;text-decoration:none;border:1.5px solid transparent;cursor:pointer;font:inherit;font-weight:700;transition:transform .15s ease,background .15s ease}.rd-btn:hover{transform:translateY(-1px)}.rd-btn-road{background:var(--rd-road);color:#fff}.rd-btn-road:hover{background:var(--rd-road-ink)}.rd-btn-ghost{border-color:var(--rd-ink)}.rd-btn-ink{background:var(--rd-ink);color:var(--rd-paper)}.rd-btn-ink:disabled{opacity:.6;cursor:wait}.rd-btn-ghost-dark{border-color:var(--rd-paper);color:var(--rd-paper);padding:10px 20px}.rd-hero{position:relative;min-height:calc(100vh - 63px);min-height:calc(100svh - 63px);display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:center;gap:32px;padding:clamp(32px,6vw,80px) clamp(16px,4vw,56px);overflow:hidden;border-bottom:1px solid var(--rd-line)}.rd-contours,.rd-route{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.rd-route{left:46%;width:54%}.rd-contours path{fill:none;stroke:var(--rd-ink);stroke-opacity:.09;stroke-width:1.2}.rd-route-shadow{fill:none;stroke:var(--rd-paper-2);stroke-width:22;stroke-linecap:round}.rd-route-line{fill:none;stroke:var(--rd-road);stroke-width:6;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:rd-draw 3.2s ease-out .3s forwards}.rd-pin{fill:var(--rd-ink);stroke:var(--rd-paper);stroke-width:4}.rd-stop circle{fill:var(--rd-paper);stroke:var(--rd-ink);stroke-width:3}@keyframes rd-draw{to{stroke-dashoffset:0}}.rd-hero-copy{position:relative;max-width:640px}.rd-hero h1{font-size:clamp(64px,11vw,168px)}.rd-lede{font-size:clamp(18px,1.6vw,21px);color:var(--rd-ink-2);max-width:32ch;margin:22px 0 30px}.rd-cta{display:flex;flex-wrap:wrap;gap:12px}.rd-telemetry{position:relative;justify-self:end;width:min(340px,100%);background:var(--rd-ink);color:var(--rd-paper);border-radius:16px;padding:20px 22px;font-family:var(--rd-mono);font-size:13px}.rd-tel-head{display:flex;align-items:center;gap:8px;font-weight:500;margin-bottom:14px}.rd-dot{width:9px;height:9px;border-radius:50%;background:#4cc38a;animation:rd-blink 1.5s infinite}@keyframes rd-blink{50%{opacity:.3}}.rd-telemetry dl{margin:0;display:grid;gap:10px}.rd-telemetry dl div{display:flex;justify-content:space-between;gap:12px;border-top:1px solid rgba(242,239,230,.12);padding-top:10px}.rd-telemetry dt{color:#f2efe699}.rd-telemetry dd{margin:0;font-variant-numeric:tabular-nums}.rd-tel-foot{margin:14px 0 0;color:#f2efe680;font-size:11px}.rd-section{padding:clamp(64px,9vw,128px) clamp(16px,4vw,56px);border-bottom:1px solid var(--rd-line)}.rd-section h2{font-size:clamp(44px,6.4vw,92px);margin-bottom:clamp(32px,4vw,56px);max-width:16ch}.rd-steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,3vw,40px)}.rd-steps li{border-top:3px solid var(--rd-ink);padding-top:20px}.rd-step-n{font-family:var(--rd-mono);color:var(--rd-road-ink);font-size:14px}.rd-steps h3{font-size:30px;margin:10px 0 12px}.rd-steps p{margin:0;color:var(--rd-ink-2)}.rd-dark{background:var(--rd-night);color:var(--rd-paper);border-bottom:0}.rd-dark .rd-kicker{color:var(--rd-road)}.rd-features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:#f2efe61f;border:1px solid rgba(242,239,230,.12)}.rd-feature{background:var(--rd-night);padding:26px 24px}.rd-feature h3{font-size:26px;color:var(--rd-paper);margin-bottom:10px}.rd-feature p{margin:0;color:#f2efe6b3;font-size:16px}.rd-preview{margin-top:clamp(32px,5vw,64px);display:grid;grid-template-columns:280px minmax(0,1fr);border:1px solid rgba(242,239,230,.14);border-radius:16px;overflow:hidden;min-height:320px}.rd-preview-list{background:var(--rd-night-2);padding:12px;display:grid;align-content:start;gap:6px;font-size:14px}.rd-pv-row{display:grid;grid-template-columns:12px 1fr auto;grid-template-rows:auto auto;column-gap:10px;padding:10px;border-radius:10px}.rd-pv-row:first-child{background:#f2efe60f}.rd-pv-row span:nth-child(3){grid-column:2;color:#f2efe699;font-size:12px}.rd-pv-x{grid-column:3;grid-row:1 / span 2;align-self:center;font-family:var(--rd-mono);font-size:12px;color:#f2efe699}.rd-pv-dot{width:10px;height:10px;border-radius:50%;align-self:center;grid-row:1 / span 2}.rd-pv-moving .rd-pv-dot{background:#4cc38a}.rd-pv-idling .rd-pv-dot{background:#e0a050}.rd-pv-parked .rd-pv-dot{background:#7fa7d6}.rd-pv-offline .rd-pv-dot{background:#e85c77}.rd-preview-map{width:100%;height:100%;background:#1b2a35;display:block}.rd-pv-road{fill:none;stroke:#f2efe61f;stroke-width:14}.rd-pv-track{fill:none;stroke:var(--rd-road);stroke-width:5;stroke-linecap:round}.rd-pv-pin{stroke:var(--rd-night);stroke-width:4}.rd-pv-pin.moving{fill:#4cc38a}.rd-pv-pin.idle{fill:#e0a050}.rd-pv-pin.parked{fill:#7fa7d6}.rd-plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.rd-plan{border:1.5px solid var(--rd-ink);border-radius:16px;padding:26px;display:flex;flex-direction:column;gap:6px}.rd-plan h3{font-size:34px}.rd-plan p{margin:0;color:var(--rd-ink-2)}.rd-plan-mark{background:var(--rd-ink);color:var(--rd-paper)}.rd-plan-mark p{color:#f2efe6bf}.rd-price{font-family:var(--rd-mono);font-size:28px;color:inherit!important;margin:6px 0 10px!important}.rd-price span{font-size:13px;opacity:.7}.rd-plan ul{margin:14px 0 0;padding-left:18px}.rd-note{margin-top:18px;color:var(--rd-ink-2);font-size:15px}.rd-honest{background:var(--rd-paper-2)}.rd-honest ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 40px;max-width:1100px}.rd-honest li{border-left:3px solid var(--rd-road);padding-left:16px;color:var(--rd-ink-2)}.rd-honest b{color:var(--rd-ink);display:block}.rd-contact{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,72px);padding:clamp(64px,9vw,120px) clamp(16px,4vw,56px);background:var(--rd-road);color:#fff}.rd-contact .rd-kicker{color:var(--rd-ink)}.rd-contact h2{font-size:clamp(44px,6vw,84px);margin-bottom:20px}.rd-contact p{max-width:44ch}.rd-form{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-content:start}.rd-form label{display:grid;gap:6px;font-size:13px;font-family:var(--rd-mono);text-transform:uppercase;letter-spacing:.06em}.rd-form input,.rd-form textarea{font:inherit;font-family:Archivo,sans-serif;text-transform:none;letter-spacing:0;font-size:16px;background:#fff;color:var(--rd-ink);border:0;border-radius:10px;padding:12px 14px;width:100%}.rd-form input:focus-visible,.rd-form textarea:focus-visible{outline:3px solid var(--rd-ink)}.rd-wide{grid-column:1 / -1}.rd-form button{grid-column:1 / -1;justify-self:start}.rd-error{grid-column:1 / -1;margin:0;background:var(--rd-ink);color:#fff;padding:10px 14px;border-radius:8px}.rd-sent{background:var(--rd-ink);border-radius:16px;padding:32px;align-self:start}.rd-sent h3{font-size:40px;margin-bottom:8px}.rd-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:28px clamp(16px,4vw,56px);background:var(--rd-ink);color:var(--rd-paper)}.rd-footer .rd-mark{background:var(--rd-paper);color:var(--rd-ink)}.rd-coords{font-family:var(--rd-mono);font-size:12px;opacity:.6}.rd-reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}.rd-reveal.rd-in{opacity:1;transform:none}@media (max-width: 900px){.rd-hero{grid-template-columns:1fr;align-content:center}.rd-telemetry{justify-self:start}.rd-route{left:0;width:100%;top:55%;height:45%}.rd-steps,.rd-features,.rd-plans,.rd-honest ul,.rd-contact,.rd-preview{grid-template-columns:1fr}.rd-preview-map{height:240px}.rd-nav nav a:not(.rd-signin){display:none}}@media (max-width: 520px){.rd-form{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.rd-route-line{animation:none;stroke-dashoffset:0}.rd-dot{animation:none}.rd-reveal{opacity:1;transform:none;transition:none}.rd-pin{display:none}}:root{--bg: #ffffff;--bg-2: #f6f7f8;--line: #e6e8eb;--ink: #111315;--ink-2: #5b6470;--ink-3: #9aa3ad;--green: #1e9e4b;--amber: #b87400;--red: #d63b3b;--blue: #2563eb;--shadow: 0 8px 24px rgba(0, 0, 0, .08);color-scheme:light}:root[data-theme=dark]{--bg: #0f1113;--bg-2: #16191c;--line: #272b30;--ink: #eceef0;--ink-2: #9aa3ad;--ink-3: #6b737c;--green: #34c06a;--amber: #f0a51f;--red: #f06161;--blue: #5b8def;--shadow: 0 8px 24px rgba(0, 0, 0, .4);color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0f1113;--bg-2: #16191c;--line: #272b30;--ink: #eceef0;--ink-2: #9aa3ad;--ink-3: #6b737c;--green: #34c06a;--amber: #f0a51f;--red: #f06161;--blue: #5b8def;--shadow: 0 8px 24px rgba(0, 0, 0, .4);color-scheme:dark}}:root{--void: var(--bg-2);--base: var(--bg);--panel: var(--bg);--raised: var(--bg-2);--hairline: var(--line);--ink-dim: var(--ink-2);--ink-faint: var(--ink-3);--accent: var(--blue);--accent-ink: #ffffff;--gold: var(--amber);--violet: var(--ink-3);--aqua: var(--green);--rose: var(--red);--parked: var(--ink-3);--map-filter: none;--atmo: 0;--display: "Archivo", system-ui, sans-serif}body{margin:0;background:var(--bg);color:var(--ink);font-family:Archivo,system-ui,sans-serif;font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}a{color:var(--blue)}.tnum,.mono{font-variant-numeric:tabular-nums}.mono{font-family:Chivo Mono,ui-monospace,monospace;font-size:12px}.micro{font-size:11px;color:var(--ink-2);font-weight:500;letter-spacing:0;text-transform:none}.dim{color:var(--ink-2)}.display{font-weight:600;letter-spacing:0}@keyframes rise{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes ping{0%{transform:scale(1);opacity:.5}to{transform:scale(2.4);opacity:0}}.reveal>*{animation:rise .2s ease both}.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulse 1.6s ease-in-out infinite;vertical-align:middle}@media (prefers-reduced-motion: reduce){.reveal>*,.live-dot,.vpin.moving:after,.fly{animation:none}}.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.side{background:var(--bg-2);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:14px 10px;gap:2px;position:sticky;top:0;height:100vh}.side-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;color:var(--ink);text-decoration:none}.side-mark{width:28px;height:28px;border-radius:6px;display:grid;place-items:center;background:var(--ink);color:var(--bg);font-weight:600;font-size:12px}.side-name{font-weight:600;font-size:15px}.side a.nav{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;color:var(--ink-2);text-decoration:none;font-size:13px;font-weight:500;transition:background .15s,color .15s;box-shadow:inset 2px 0 0 transparent}.side a.nav:hover{background:var(--bg);color:var(--ink)}.side a.nav.active{background:var(--bg);color:var(--ink);box-shadow:inset 2px 0 0 var(--blue)}.side a.nav svg{width:16px;height:16px;flex:none}.side-section{margin:14px 10px 4px;font-size:11px;color:var(--ink-3)}.side-foot{margin-top:auto;display:grid;gap:8px;padding:12px 6px 0;border-top:1px solid var(--line)}.side-user{font-size:12px;color:var(--ink-2)}.side-user b{display:block;font-size:13px;color:var(--ink);font-weight:600}.main{min-width:0;display:flex;flex-direction:column;position:relative}.tabbar{display:none}.more-list{display:grid;gap:2px}.more-list a.nav{display:flex;align-items:center;gap:10px;padding:10px;border-radius:6px;color:var(--ink);text-decoration:none;font-size:14px}.more-list a.nav:hover,.more-list a.nav.active{background:var(--bg-2)}.more-list a.nav svg{width:16px;height:16px}.topbar{display:flex;align-items:center;gap:12px;padding:10px 24px;border-bottom:1px solid var(--line);min-height:48px;flex-wrap:wrap}.topbar .spacer{flex:1}.page{padding:24px;display:grid;gap:20px;align-content:start}.page-head h1{font-size:20px;margin:0;font-weight:600;letter-spacing:0;line-height:1.2}.page-head p{margin:4px 0 0;color:var(--ink-2);font-size:13px}.acting{display:flex;align-items:center;gap:8px;padding:5px 10px;border-radius:6px;background:var(--bg-2);border:1px solid var(--line);font-size:12px}.card{background:var(--bg);border:1px solid var(--line);border-radius:8px}.card-pad{padding:16px}.card-title{font-size:13px;font-weight:600;margin:0 0 12px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.stat{padding:12px 14px}.stat .v{font-size:28px;font-weight:600;margin-top:4px;line-height:1.1;color:var(--ink)}.fleet-strip{display:flex;flex-wrap:nowrap;gap:0;border:1px solid var(--line);border-radius:8px;background:var(--bg);overflow-x:auto;scrollbar-width:none}.fleet-strip::-webkit-scrollbar{display:none}.fig{flex:1 1 0;min-width:110px;padding:12px 16px;display:grid;gap:2px;position:relative;border-right:1px solid var(--line)}.fig:last-child{border-right:0}.fig .micro:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--c, var(--ink-3));margin-right:6px;vertical-align:1px}.fig-v{font-weight:600;font-size:28px;line-height:1.1;color:var(--ink)}.btn{font:inherit;font-size:13px;font-weight:500;border-radius:6px;padding:0 12px;height:32px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:6px;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s}.btn:hover{background:var(--bg-2);border-color:var(--ink-3)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn-primary:hover{background:var(--ink-2);border-color:var(--ink-2)}.btn-danger{color:var(--red)}.btn-danger:hover{border-color:var(--red)}.btn-sm{height:28px;padding:0 10px;font-size:12px}.input,select.input,textarea.input{font:inherit;font-size:13px;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:0 10px;height:32px;width:100%}textarea.input{height:auto;padding:8px 10px}.input:focus-visible,.btn:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.field{display:grid;gap:4px}.field>span{font-size:12px;color:var(--ink-2)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .wide{grid-column:1 / -1}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.toolbar .end{margin-left:auto;display:flex;gap:8px;align-items:center}.alert{padding:10px 12px;border-radius:6px;border:1px solid var(--line);background:var(--bg-2);font-size:13px}.alert-bad{border-color:var(--red);color:var(--red);background:color-mix(in srgb,var(--red) 8%,var(--bg))}.alert-warn{border-color:var(--amber);background:color-mix(in srgb,var(--amber) 8%,var(--bg))}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;padding:2px 7px;border-radius:2px;background:color-mix(in srgb,currentColor 12%,transparent);color:var(--ink-2);white-space:nowrap;line-height:16px}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.s-moving{color:var(--green)}.s-idle{color:var(--amber)}.s-parked{color:var(--ink-2)}.s-offline{color:var(--red)}.s-asleep,.s-never{color:var(--ink-3)}.b-good{color:var(--green)}.b-warn{color:var(--amber)}.b-bad{color:var(--red)}.b-info{color:var(--blue)}.chips{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}.chip{padding:8px 10px;border-radius:6px;border:1px solid var(--line);background:var(--bg);display:grid;gap:2px}.chip .micro{color:var(--ink-3)}.chip .chip-v{font-weight:600;font-size:15px;line-height:1.2;color:var(--ink-2)}.chip.on .chip-v{color:var(--c)}.chip.on .micro{color:var(--ink-2)}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-size:12px;color:var(--ink-2);font-weight:500;padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:0 12px;height:44px;border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:middle}.table td b,.table td a{color:var(--ink);text-decoration:none;font-weight:500}.table tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:var(--bg-2)}.empty{padding:32px;text-align:center;color:var(--ink-2);font-size:13px}.live{display:grid;grid-template-columns:360px minmax(0,1fr);gap:16px;min-height:calc(100vh - 290px)}.live-detail{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);z-index:900;border-left:1px solid var(--line);background:var(--bg);box-shadow:var(--shadow);overflow-y:auto;animation:rise .2s ease both}.live-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:14px 14px 10px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg);z-index:1}.live-detail-body{padding:14px;display:grid;gap:14px}.live-detail-body .detail.stacked{grid-template-columns:1fr}.live-list{display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 290px)}.live-search{padding:8px;border-bottom:1px solid var(--line)}.live-list .rows{overflow-y:auto;display:grid;align-content:start}.vrow{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:8px 12px;cursor:pointer;border:0;border-bottom:1px solid var(--line);width:100%;text-align:left;background:none;color:inherit;font:inherit}.vrow:hover{background:var(--bg-2)}.vrow.sel{background:var(--bg-2);box-shadow:inset 2px 0 0 var(--blue)}.vrow .n{font-weight:500;color:var(--ink)}.vrow .sub{font-size:12px;color:var(--ink-2)}.vcard{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:0 12px;padding:8px 12px 8px 14px;min-height:52px;border:0;border-bottom:1px solid var(--line);background:var(--bg);color:inherit;font:inherit;text-align:left;cursor:pointer;width:100%;overflow:hidden;transition:background .15s;box-shadow:inset 2px 0 0 transparent}.vcard:hover{background:var(--bg-2)}.vcard.sel{background:var(--bg-2);box-shadow:inset 2px 0 0 var(--blue)}.vcard-head{display:flex;align-items:center;gap:8px;min-width:0;min-height:20px;line-height:20px}.vcard-name{font-weight:500;color:var(--ink);font-size:13px;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vcard-sub{font-size:12px;line-height:16px;min-height:16px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vcard-read{grid-column:2;grid-row:1 / span 2;display:flex;align-items:baseline;gap:3px;align-self:center;color:var(--ink-2);font-size:12px}.vcard-read .fig-v{font-size:15px;color:var(--ink)}.vcard .live-dot{display:none}.map-wrap{position:relative;min-height:420px}.map{width:100%;height:100%;min-height:420px;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:var(--bg-2)}.leaflet-container{font-family:Archivo,sans-serif;background:var(--bg-2)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--bg);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:6px}.leaflet-tooltip{background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:4px;box-shadow:none;font-size:12px}.leaflet-tooltip-top:before{border-top-color:var(--line)}.leaflet-control-attribution{background:color-mix(in srgb,var(--bg) 85%,transparent)!important;color:var(--ink-3)!important;font-size:10px!important}.leaflet-control-attribution a{color:var(--ink-2)!important}.leaflet-bar{border:1px solid var(--line)!important;box-shadow:none!important}.leaflet-bar a{background:var(--bg);color:var(--ink);border-bottom-color:var(--line)}.leaflet-marker-icon .vpin{position:relative;display:block;width:14px;height:14px;border-radius:50%;border:2px solid #fff;background:var(--c);box-shadow:0 0 0 1px #0000002e}.leaflet-marker-icon .vpin.sel{width:18px;height:18px;box-shadow:0 0 0 2px var(--blue)}.leaflet-marker-icon .vpin-i{position:absolute;left:50%;top:50%;width:0;height:0;display:flex;align-items:center;justify-content:center}.leaflet-marker-icon .vpin svg{position:absolute;width:10px;height:10px;left:-5px;top:-17px;fill:var(--c);display:block}.leaflet-marker-icon .vpin.moving:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;box-sizing:border-box;border-radius:50%;border:1.5px solid var(--c);pointer-events:none;animation:ping 1.6s ease-out infinite}.leaflet-marker-icon .vpin-label{position:absolute;top:14px;left:50%;transform:translate(-50%);white-space:nowrap;font-size:10px;font-weight:500;color:var(--ink);background:var(--bg);padding:1px 5px;border-radius:3px;border:1px solid var(--line);pointer-events:none}.leaflet-marker-icon .vcluster{width:28px;height:28px;border-radius:50%;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-size:12px;font-weight:600;border:2px solid var(--bg);box-shadow:0 0 0 1px #0000002e}.map-controls{position:absolute;top:12px;right:12px;z-index:500;display:flex;gap:4px;background:var(--bg);padding:3px;border-radius:8px;border:1px solid var(--line);box-shadow:var(--shadow)}.fly{position:absolute;top:12px;right:12px;z-index:500;width:min(320px,calc(100% - 24px));padding:14px;border-radius:8px;border:1px solid var(--line);background:var(--bg);box-shadow:var(--shadow);display:grid;gap:10px;animation:rise .2s ease both}.fly-head{display:flex;align-items:flex-start;gap:10px}.fly-head>div:first-child{flex:1;min-width:0}.fly-name{font-weight:600;font-size:15px;line-height:1.3}.fly-speed{display:flex;align-items:baseline;gap:4px;color:var(--ink-2)}.fly-speed .fig-v{font-size:28px;color:var(--ink)}.fly-speed .badge{margin-left:auto;align-self:center}.detail{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:start}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0}.kv dt{color:var(--ink-2);font-size:13px}.kv dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line)}.tabs button{background:none;border:0;color:var(--ink-2);font:inherit;font-size:13px;font-weight:500;padding:10px 12px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button:hover{color:var(--ink)}.tabs button.on{color:var(--ink);border-bottom-color:var(--ink)}.cmd-presets{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#11131559;z-index:1000;display:flex;justify-content:flex-end}.drawer{width:min(440px,100%);height:100%;background:var(--bg);border-left:1px solid var(--line);padding:20px;overflow-y:auto;display:grid;gap:16px;align-content:start}.drawer h2{margin:0;font-size:15px;font-weight:600}.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:var(--bg-2)}.login-card{width:min(380px,100%);padding:24px;display:grid;gap:14px}.login-card h1{font-size:20px;margin:0;font-weight:600}.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}.vtile{position:relative;display:grid;gap:10px;padding:12px 14px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:inherit;text-decoration:none;overflow:hidden;transition:border-color .15s,background .15s}.vtile:hover{border-color:var(--ink-3);background:var(--bg-2)}.vtile-head{display:flex;align-items:flex-start;gap:10px}.vtile-head>div{flex:1;min-width:0}.vtile-name{font-weight:600;font-size:15px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtile-sub{font-size:12px;color:var(--ink-2);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtile-kv{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.vtile-kv>div{display:grid;gap:1px}.vtile-kv .v{font-weight:600;font-size:15px;line-height:1.2;color:var(--ink)}.vtile-kv .v.off{color:var(--ink-3)}.vtile-foot{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);padding-top:8px;border-top:1px solid var(--line)}.vtile-foot .badge{margin-left:auto}@media (max-width: 1000px){.shell{grid-template-columns:1fr}.side{position:sticky;top:0;z-index:50;height:44px;padding:0 12px;flex-direction:row;align-items:center;border-right:0;border-bottom:1px solid var(--line);background:var(--bg)}.side-brand{padding:0;gap:8px}.side-mark{width:24px;height:24px;font-size:11px}.side-name{font-size:14px}.side a.nav,.side-section,.side-foot{display:none}.tabbar{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;z-index:60;height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--bg);border-top:1px solid var(--line)}.tab{display:grid;justify-items:center;align-content:center;gap:3px;font:inherit;font-size:11px;font-weight:500;color:var(--ink-2);text-decoration:none;background:none;border:0;cursor:pointer}.tab svg{width:20px;height:20px}.tab.active{color:var(--ink)}.main{padding-bottom:calc(56px + env(safe-area-inset-bottom))}.page{padding:16px 16px 32px;gap:14px}.page-head h1{font-size:18px}.topbar{padding:8px 16px}.fleet-strip{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.fleet-strip::-webkit-scrollbar{display:none}.fig{flex:0 0 auto;min-width:110px;padding:10px 12px}.fig-v{font-size:22px}.live{grid-template-columns:1fr;min-height:0}.map-wrap{order:-1;min-height:46vh;align-self:start}.map{min-height:46vh}.live-list{max-height:none}.vcard{min-height:48px;padding:6px 12px 6px 14px}.vcard-sub{display:block}.detail{grid-template-columns:1fr}.live-detail{width:100vw;border-left:0}.form-grid{grid-template-columns:1fr}.chips{grid-template-columns:repeat(2,1fr)}.fly{position:static;width:100%;margin-top:12px;box-shadow:none}.vgrid{grid-template-columns:1fr}}:root{--gc-base: #eef2f8;--gc-canvas: #e7ecf4;--gc-panel: #ffffff;--gc-clay: #f4f6fb;--gc-clay-pressed: #e6eaf2;--gc-hairline: rgba(16, 24, 40, .12);--gc-ink: #111620;--gc-ink-dim: #4c5566;--gc-ink-faint: #687284;--gc-accent: #0E8358;--gc-accent-hover: #0B7048;--gc-on-accent: #ffffff;--gc-accent-soft: rgba(14, 131, 88, .14);--gc-energy: #d9561a;--gc-on-energy: #ffffff;--gc-good: #0E8358;--gc-due: #b06a00;--gc-danger: #d2343f;--gc-info: #2f62e6;--gc-glass-fill: rgba(255, 255, 255, .55);--gc-glass-border: rgba(255, 255, 255, .85);--gc-glass-highlight: rgba(255, 255, 255, .95);--gc-glass-blur: 18px;--gc-clay-light: #ffffff;--gc-clay-shade: rgba(163, 177, 198, .55);--gc-clay-depth: 5px;--gc-pool-a: rgba(127, 227, 190, .45);--gc-pool-b: rgba(169, 180, 255, .4);--gc-pool-c: rgba(255, 200, 168, .35);--gc-lift: 0 12px 32px rgba(16, 24, 40, .1);--gc-lift-lg: 0 18px 44px rgba(16, 24, 40, .14);--gc-radius-sm: 12px;--gc-radius-tile: 20px;--gc-radius-card: 26px;--gc-radius-pill: 999px;--gc-font: "Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--gc-mono: "Chivo Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--gc-glass-bg: linear-gradient(135deg, color-mix(in srgb, var(--gc-glass-highlight) 45%, transparent), var(--gc-glass-fill));--gc-clay-bg: linear-gradient(135deg, color-mix(in srgb, var(--gc-clay) 88%, #fff), color-mix(in srgb, var(--gc-clay) 90%, #000));--gc-clay-accent-bg: linear-gradient(135deg, color-mix(in srgb, var(--gc-accent) 78%, #fff), var(--gc-accent));--gc-clay-shadow: var(--gc-clay-depth) calc(var(--gc-clay-depth) * 1.4) 22px var(--gc-clay-shade), calc(var(--gc-clay-depth) * -.7) calc(var(--gc-clay-depth) * -.7) 14px var(--gc-clay-light), inset 1px 1px 2px rgba(255, 255, 255, .25);--gc-clay-pressed-shadow: inset 3px 3px 8px var(--gc-clay-shade), inset -2px -2px 6px var(--gc-clay-light);--gc-well-shadow: inset 2px 2px 6px var(--gc-clay-shade), inset -2px -2px 5px var(--gc-clay-light);--gc-atmosphere: radial-gradient(60vmax 60vmax at -10% -5%, var(--gc-pool-a), transparent 60%), radial-gradient(55vmax 55vmax at 110% 30%, var(--gc-pool-b), transparent 60%), radial-gradient(50vmax 50vmax at 30% 110%, var(--gc-pool-c), transparent 60%), var(--gc-base)}:root[data-theme=dark]{--gc-base: #12161e;--gc-canvas: #0d1016;--gc-panel: #1a1f29;--gc-clay: #232a36;--gc-clay-pressed: #2b3341;--gc-hairline: rgba(255, 255, 255, .12);--gc-ink: #f2f4f8;--gc-ink-dim: #a9b1c0;--gc-ink-faint: #808a9b;--gc-accent: #5be0a8;--gc-accent-hover: #7ce8b9;--gc-on-accent: #052016;--gc-accent-soft: rgba(91, 224, 168, .16);--gc-energy: #ff8a65;--gc-on-energy: #2a1206;--gc-good: #5be0a8;--gc-due: #ffbe5c;--gc-danger: #ff6b75;--gc-info: #7fa7ff;--gc-glass-fill: rgba(255, 255, 255, .07);--gc-glass-border: rgba(255, 255, 255, .14);--gc-glass-highlight: rgba(255, 255, 255, .22);--gc-clay-light: rgba(255, 255, 255, .09);--gc-clay-shade: rgba(0, 0, 0, .55);--gc-pool-a: rgba(43, 185, 137, .28);--gc-pool-b: rgba(108, 123, 255, .22);--gc-pool-c: rgba(255, 138, 101, .12);--gc-lift: 0 14px 36px rgba(0, 0, 0, .45);--gc-lift-lg: 0 20px 48px rgba(0, 0, 0, .55)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--gc-base: #12161e;--gc-canvas: #0d1016;--gc-panel: #1a1f29;--gc-clay: #232a36;--gc-clay-pressed: #2b3341;--gc-hairline: rgba(255, 255, 255, .12);--gc-ink: #f2f4f8;--gc-ink-dim: #a9b1c0;--gc-ink-faint: #808a9b;--gc-accent: #5be0a8;--gc-accent-hover: #7ce8b9;--gc-on-accent: #052016;--gc-accent-soft: rgba(91, 224, 168, .16);--gc-energy: #ff8a65;--gc-on-energy: #2a1206;--gc-good: #5be0a8;--gc-due: #ffbe5c;--gc-danger: #ff6b75;--gc-info: #7fa7ff;--gc-glass-fill: rgba(255, 255, 255, .07);--gc-glass-border: rgba(255, 255, 255, .14);--gc-glass-highlight: rgba(255, 255, 255, .22);--gc-clay-light: rgba(255, 255, 255, .09);--gc-clay-shade: rgba(0, 0, 0, .55);--gc-pool-a: rgba(43, 185, 137, .28);--gc-pool-b: rgba(108, 123, 255, .22);--gc-pool-c: rgba(255, 138, 101, .12);--gc-lift: 0 14px 36px rgba(0, 0, 0, .45);--gc-lift-lg: 0 20px 48px rgba(0, 0, 0, .55)}}.gc-glass{background:var(--gc-glass-bg);border:1px solid var(--gc-glass-border);border-radius:var(--gc-radius-card);backdrop-filter:blur(var(--gc-glass-blur)) saturate(140%);-webkit-backdrop-filter:blur(var(--gc-glass-blur)) saturate(140%);box-shadow:var(--gc-lift)}.gc-clay{background:var(--gc-clay-bg);border:1px solid var(--gc-clay-light);border-radius:var(--gc-radius-pill);box-shadow:var(--gc-clay-shadow)}.gc-clay:active{box-shadow:var(--gc-clay-pressed-shadow);transform:translateY(1px)}.gc-well{background:var(--gc-glass-fill);border:1px solid var(--gc-glass-border);border-radius:var(--gc-radius-sm);box-shadow:var(--gc-well-shadow)}@media (prefers-reduced-motion: reduce){.gc-clay{transition:none!important}}:root,:root[data-theme=dark]{--bg: var(--gc-panel);--bg-2: var(--gc-clay);--line: var(--gc-hairline);--ink: var(--gc-ink);--ink-2: var(--gc-ink-dim);--ink-3: var(--gc-ink-faint);--green: var(--gc-good);--amber: var(--gc-due);--red: var(--gc-danger);--blue: var(--gc-accent);--shadow: var(--gc-lift);--accent-ink: var(--gc-on-accent)}body:has(.shell),body:has(.login-card){background:var(--gc-atmosphere);background-attachment:fixed}.card,.drawer,.vtile,.chip,.login-card,.fleet-strip,.live-detail,.tabbar{background:var(--gc-glass-bg);border:1px solid var(--gc-glass-border);backdrop-filter:blur(var(--gc-glass-blur)) saturate(140%);-webkit-backdrop-filter:blur(var(--gc-glass-blur)) saturate(140%);box-shadow:var(--gc-lift)}.card,.vtile,.login-card{border-radius:var(--gc-radius-card)}.chip{border-radius:var(--gc-radius-tile);box-shadow:none}.topbar{border-bottom:0;background:color-mix(in srgb,var(--gc-base) 55%,transparent);backdrop-filter:blur(var(--gc-glass-blur));-webkit-backdrop-filter:blur(var(--gc-glass-blur));border-radius:var(--gc-radius-tile)}.tabbar{border-top:0}@media (min-width: 1001px){.shell{gap:16px;padding:16px 16px 0}.side{background:var(--gc-glass-bg);border:1px solid var(--gc-glass-border);backdrop-filter:blur(var(--gc-glass-blur)) saturate(140%);-webkit-backdrop-filter:blur(var(--gc-glass-blur)) saturate(140%);box-shadow:var(--gc-lift);border-radius:var(--gc-radius-card);height:calc(100vh - 32px);top:16px;border-right:1px solid var(--gc-glass-border)}.drawer{background:var(--gc-glass-bg);border:1px solid var(--gc-glass-border);backdrop-filter:blur(var(--gc-glass-blur)) saturate(140%);-webkit-backdrop-filter:blur(var(--gc-glass-blur)) saturate(140%);box-shadow:var(--gc-lift);border-radius:var(--gc-radius-card) 0 0 var(--gc-radius-card)}}.vcard{background:transparent}.vcard.sel{background:var(--gc-accent-soft);box-shadow:inset 3px 0 0 var(--gc-accent)}.table tbody tr:hover td{background:var(--gc-accent-soft)}.btn{background:var(--gc-clay-bg);border:1px solid var(--gc-clay-light);border-radius:var(--gc-radius-pill);box-shadow:var(--gc-clay-shadow);height:34px;padding:0 16px}.btn:hover{background:var(--gc-clay-bg);filter:brightness(1.04);border-color:var(--gc-clay-light)}.btn:active{box-shadow:var(--gc-clay-pressed-shadow);transform:translateY(1px)}.btn-primary,.btn-primary:hover{background:var(--gc-clay-accent-bg);color:var(--gc-on-accent);border-color:var(--gc-clay-light)}.btn-danger{color:var(--gc-danger)}.side a.nav{border-radius:var(--gc-radius-pill)}.side a.nav.active{background:var(--gc-clay-accent-bg);color:var(--gc-on-accent);box-shadow:var(--gc-clay-shadow)}.side-mark{background:var(--gc-clay-accent-bg);color:var(--gc-on-accent);border-radius:10px}.tabs{border-bottom:0;gap:6px}.tabs button{border-radius:var(--gc-radius-pill);border-bottom:0;margin-bottom:0}.tabs button.on{background:var(--gc-clay-bg);box-shadow:var(--gc-clay-shadow)}.badge{border-radius:var(--gc-radius-pill)}.input,select.input,textarea.input{background:var(--gc-glass-fill);border:1px solid var(--gc-glass-border);border-radius:var(--gc-radius-sm);box-shadow:var(--gc-well-shadow);height:36px}.input:focus-visible,.btn:focus-visible{outline-color:var(--gc-accent)}
