*{margin:0;padding:0;box-sizing:border-box}:root{--bg:#0f172a;--bg-soft:#1e293b;--line:#334155;--text:#e2e8f0;--muted:#94a3b8;--accent:#f97316;--green:#22c55e;--amber:#eab308;--orange:#fb923c;--gray:#64748b;--red:#ef4444}body,html{height:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.shell{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:52px;background:var(--bg-soft);border-bottom:1px solid var(--line);flex-shrink:0}.brand{display:flex;align-items:baseline;gap:6px;font-weight:800;letter-spacing:.5px;font-size:20px}.brand-go{color:var(--accent)}.brand-truck{color:var(--text)}.brand-sub{font-size:12px;font-weight:500;color:var(--muted);margin-left:8px}.brand-big{font-size:34px;justify-content:center}.userbox{display:flex;align-items:center;gap:12px}.user-email{color:var(--muted);font-size:13px}.btn-ghost{background:none;border:1px solid var(--line);color:var(--text);padding:6px 14px;border-radius:8px;cursor:pointer;font-size:13px}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.dash{flex:1 1}.dash,.panel{display:flex;min-height:0}.panel{width:300px;flex-shrink:0;background:var(--bg-soft);border-right:1px solid var(--line);flex-direction:column}.panel-head{padding:14px 16px 10px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:15px;margin-bottom:8px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:11px;padding:3px 8px;border-radius:999px;background:var(--bg);border:1px solid var(--line);color:var(--muted)}.chip-moving{color:var(--green);border-color:var(--green)}.chip-stopped{color:var(--amber);border-color:var(--amber)}.chip-stale{color:var(--orange);border-color:var(--orange)}.chip-offline{color:var(--gray)}.empty{padding:20px 16px;color:var(--muted);font-size:13px;line-height:1.5}.vehicle-list{list-style:none;overflow-y:auto;flex:1 1}.vehicle{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;grid-column-gap:10px;column-gap:10px;align-items:center;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--line);color:var(--text);padding:10px 16px;cursor:pointer}.vehicle:hover{background:rgba(249,115,22,.08)}.dot{grid-row:span 2;width:10px;height:10px;border-radius:50%}.dot-moving{background:var(--green)}.dot-stopped{background:var(--amber)}.dot-stale{background:var(--orange)}.dot-offline{background:var(--gray)}.vehicle-name{font-size:14px;font-weight:600}.panel-foot,.vehicle-meta{font-size:12px;color:var(--muted)}.panel-foot{padding:8px 16px;border-top:1px solid var(--line)}.foot-error{color:var(--red)}.map{flex:1 1;min-width:0}.marker{display:flex;flex-direction:column;align-items:center;cursor:pointer}.marker-dot{font-size:22px;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6))}.marker-label{margin-top:2px;font-size:11px;font-weight:700;color:#111;background:#fff;padding:1px 6px;border-radius:6px;box-shadow:0 1px 2px rgba(0,0,0,.35);white-space:nowrap}.marker-moving .marker-label{border-left:4px solid var(--green)}.marker-stopped .marker-label{border-left:4px solid var(--amber)}.marker-stale .marker-label{border-left:4px solid var(--orange)}.marker-offline{opacity:.65}.marker-offline .marker-label{border-left:4px solid var(--gray)}.popup{font-family:inherit;font-size:13px;color:#111}.popup-age{color:#666;font-size:12px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 500px at 50% -10%,rgba(249,115,22,.15),transparent),var(--bg)}.login-card{width:min(360px,92vw);background:var(--bg-soft);border:1px solid var(--line);border-radius:16px;padding:32px 28px;display:flex;flex-direction:column;gap:16px}.login-card .brand{justify-content:center}.login-sub{text-align:center;margin-top:-10px}.login-card label,.login-sub{color:var(--muted);font-size:13px}.login-card label{display:flex;flex-direction:column;gap:6px}.login-card input{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px 12px;color:var(--text);font-size:14px}.login-card input:focus{outline:none;border-color:var(--accent)}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:11px;font-size:15px;font-weight:700;cursor:pointer}.btn-primary:disabled{opacity:.6;cursor:default}.login-error{color:var(--red);font-size:13px;text-align:center}