@charset "UTF-8";
:root{--ink:#182b3b;--muted:#657889;--line:#e3e9ee;--canvas:#f3f6f8;--blue:#1765d4;--blue-light:#edf4ff;--green:#17836a;--radius:14px;--shadow:0 3px 18px #1b3b5806;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--canvas);font-synthesis:none}*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.5}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}a{color:var(--blue)}h1,h2,h3,p{margin:0}h1{font-size:30px;letter-spacing:-1px;line-height:1.2;font-weight:700}h2{font-size:17px;letter-spacing:-.3px}h3{font-size:15px}.muted{color:var(--muted);font-size:13px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;color:var(--muted);margin-bottom:7px}.brand{display:flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none;font-weight:800;font-size:22px;line-height:1.05;letter-spacing:.2px}.brand-symbol{background:var(--blue);color:#fff;display:grid;place-items:center;width:38px;height:38px;border-radius:12px;font-size:38px;font-weight:300;line-height:1}.brand-caption{display:block;font-size:7px;letter-spacing:1.6px;font-weight:700;color:var(--muted);margin-top:7px}.topbar{height:80px;background:#fff;border-bottom:1px solid var(--line);padding:0 36px;display:flex;align-items:center;gap:60px}.topbar-context{color:var(--muted);display:flex;gap:9px;align-items:center;font-size:13px}.nav-dot,.legend-dot{display:inline-block;width:7px;height:7px;flex-shrink:0;border-radius:50%;background:var(--green)}.account{margin-left:auto;display:flex;align-items:center;gap:20px;color:var(--muted);font-size:12px}.workspace{max-width:1620px;margin:auto;padding:30px 36px 0}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;gap:20px}.page-heading .muted{margin-top:8px}.sync-panel{display:flex;align-items:center;gap:16px}.sync-status{font-size:11px;color:var(--muted)}.button{background:#fff;border:1px solid #d8e1e8;padding:9px 14px;border-radius:8px;color:var(--ink);font-size:12px;font-weight:600;white-space:nowrap;min-height:38px;transition:background .15s,border-color .15s}.button:hover{background:#f4f7fa;border-color:#b8c9d8}.button.primary{color:#fff;background:var(--blue);border-color:var(--blue)}.button.primary:hover{background:#0f53b7}.button.quiet{border-color:transparent;background:transparent}.button.compact{font-size:11px;padding:6px 10px;min-height:32px}.button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #8fbcff;outline-offset:3px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.metric{padding:20px 22px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow)}.metric>span{display:block;color:var(--muted);font-size:11px;font-weight:600}.metric strong{display:block;font-size:28px;line-height:1.3;letter-spacing:-.6px;margin:7px 0}.metric em{font-size:12px;font-weight:500;color:var(--muted);font-style:normal}.metric small{display:block;color:var(--muted);font-size:10px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.fleet-grid{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;margin-bottom:20px}.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:19px 20px;gap:14px}.pill{font-size:11px;padding:3px 8px;color:var(--muted);background:var(--canvas);border-radius:6px}.search{margin:0 18px 12px;width:calc(100% - 36px);font-size:12px;background:#f8fafb}.search,input{border:1px solid #dbe3e9;border-radius:7px;padding:10px 12px;min-width:0;color:var(--ink);background:#fff}.device-list{height:360px;overflow:auto;padding:0 9px 10px}.device-item{display:block;text-align:left;width:100%;border:1px solid transparent;border-radius:9px;background:transparent;padding:12px 10px;margin-bottom:3px;color:var(--ink)}.device-item:hover{background:#f7f9fb}.device-item[aria-pressed="true"]{background:var(--blue-light);border-color:#d8e8ff}.device-top{display:flex;gap:10px;align-items:center;justify-content:space-between}.device-name{font-size:12px;overflow-wrap:anywhere}.device-imei{display:block;font-size:10px;color:var(--muted);margin-top:3px;letter-spacing:.2px}.device-state{display:block;font-size:10px;color:var(--muted);margin-top:7px}.status-dot{width:7px;height:7px;background:#aebbc5;border-radius:50%;flex-shrink:0}.status-dot.online{background:var(--green)}.status-dot.offline{background:#bc8641}.list-footnote{color:var(--muted);border-top:1px solid var(--line);padding:12px 18px;font-size:9px;display:flex;gap:8px;align-items:center}.list-footnote .legend-dot{width:5px;height:5px}.map-panel{overflow:hidden;position:relative}.map-heading{min-height:78px}.map-heading p{font-size:11px;margin-top:3px}#map{height:400px;background:#eaf0f3;z-index:0}.map-foot{padding:11px 18px;display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted);gap:12px}.map-foot>span{display:flex;align-items:center;gap:7px}.map-foot label{display:flex;gap:6px;align-items:center;white-space:nowrap}.map-foot input{accent-color:var(--blue)}.route-line{width:17px;height:3px;background:var(--blue);display:inline-block;margin-left:10px}.map-warning{font-size:11px;padding:8px 18px;background:#fff8e8;color:#94651d}.detail-panel{padding:24px}.detail-header{display:flex;justify-content:space-between;align-items:center;gap:15px}.detail-header h2{font-size:21px}.detail-header .muted{margin-top:3px;font-size:11px}.status-badge{padding:5px 9px;border-radius:6px;font-size:11px;background:#eaf6f1;color:var(--green);white-space:nowrap}.status-badge.neutral{background:var(--canvas);color:var(--muted)}.status-badge.offline{background:#fff5e8;color:#94651d}.position-details{display:grid;grid-template-columns:1.2fr .8fr 1.2fr .8fr;gap:20px;margin:23px 0;padding-bottom:23px;border-bottom:1px solid var(--line)}dt{font-size:10px;color:var(--muted);margin-bottom:5px}dd{margin:0;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.history-title{display:flex;align-items:center;justify-content:space-between;gap:15px}.history-title p{font-size:11px;margin-top:3px}.presets{display:flex;gap:5px}.history-form{display:flex;gap:12px;align-items:end;margin-top:17px;flex-wrap:wrap}.history-form>div{display:flex;flex-direction:column;gap:5px;flex:1;min-width:190px}.history-form label{font-size:11px;color:var(--muted)}.history-form input{font-size:12px}.history-status{color:var(--muted);font-size:11px;margin-top:12px}.history-status.error{color:#ad3535}.message{padding:12px 15px;border-radius:9px;font-size:12px;margin-bottom:18px}.message.error{background:#fff0ed;color:#a5372c;border:1px solid #f5d5ce}.empty{color:var(--muted);font-size:12px;padding:28px 14px;text-align:center}.page-footer{display:flex;justify-content:space-between;color:#80909e;font-size:10px;padding:22px 0 24px;gap:12px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.leaflet-tooltip{font-family:inherit;border:1px solid var(--line);box-shadow:0 4px 12px #18364a12}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 20% 10%,#e7f0fc 0,transparent 45%),var(--canvas);padding:40px 24px 80px}.login-card{max-width:430px;width:100%;background:white;padding:40px;border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 70px #243b5310}.login-card .brand{margin-bottom:42px}.login-card h1{font-size:29px;margin-bottom:13px}.login-card>.muted{font-size:13px;line-height:1.6}.login-card form{display:flex;flex-direction:column;margin-top:24px}.login-card label{font-size:12px;font-weight:600;margin:13px 0 7px}.login-card input{font-size:13px;padding:12px}.login-submit{margin-top:24px;display:flex;justify-content:space-between;padding:12px 15px;font-size:13px;min-height:44px}.login-card .message{margin:17px 0 0}.login-footnote{font-size:10px;color:var(--muted);margin-top:24px;text-align:center}.login-bottom{position:absolute;bottom:24px;font-size:10px;color:var(--muted);text-align:center}.login-bottom span{margin:0 10px;color:#b7c2cc}[hidden]{display:none!important}
@media(min-width:1500px){#map{height:450px}.device-list{height:410px}}@media(max-width:1100px){.fleet-grid{grid-template-columns:280px minmax(0,1fr)}.topbar{padding:0 24px;gap:30px}.workspace{padding:25px 24px 0}.account>span{max-width:160px;overflow:hidden;text-overflow:ellipsis}.sync-panel{flex-direction:column;align-items:end;gap:6px}.metric{padding:17px}.metric small{font-size:9px}.map-foot{align-items:start;flex-direction:column}}@media(max-width:760px){.topbar{height:68px;padding:0 18px;gap:15px}.topbar-context{display:none}.brand{font-size:19px}.brand-symbol{width:33px;height:33px;font-size:32px}.account{gap:8px}.account>span{max-width:130px;font-size:10px}.workspace{padding:22px 16px 0}.page-heading{align-items:start;margin-bottom:20px}h1{font-size:26px}.page-heading .muted{font-size:11px;max-width:220px}.sync-status{max-width:120px;text-align:right;font-size:9px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.metric{padding:14px}.metric strong{font-size:25px}.metric>span{font-size:10px}.fleet-grid{grid-template-columns:1fr;gap:16px;margin-bottom:16px}.device-list{height:220px}.panel-heading{padding:16px 18px}.fleet-sidebar .panel-heading{padding-bottom:12px}#map{height:370px}.map-foot{flex-direction:row;align-items:center;font-size:9px}.map-foot>span{gap:5px}.map-foot label{font-size:9px}.route-line{margin-left:4px;width:12px}.map-heading p{max-width:210px;font-size:10px}.detail-panel{padding:20px 18px}.detail-header h2{font-size:18px}.position-details{grid-template-columns:1fr 1fr;gap:16px}.history-title{align-items:start;flex-direction:column}.history-form{gap:10px}.history-form>div{min-width:100%;}.history-form .button{flex:1;font-size:11px}.page-footer{font-size:9px;flex-direction:column;gap:4px}.login-card{padding:30px 26px}.login-card h1{font-size:26px}.login-bottom{bottom:18px;font-size:9px}.login-page{padding:25px 18px 65px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Shared white label theme. */
:root{--surface:#fff;--header:#fff;--header-text:#182b3b;--login-bg:#f3f6f8;--login-panel:#fff;--login-ink:#182b3b;--blue-light:color-mix(in srgb,var(--blue) 8%,var(--surface));--muted:color-mix(in srgb,var(--ink) 65%,var(--surface));--line:color-mix(in srgb,var(--ink) 15%,var(--surface))}
body{background:var(--canvas);color:var(--ink)}.panel,.metric,.button,input{background:var(--surface)}.topbar{background:var(--header);color:var(--header-text)}.topbar .brand,.topbar .brand-caption,.topbar .topbar-context,.topbar .account{color:var(--header-text)}.button{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}.button.primary:hover{background:color-mix(in srgb,var(--blue) 85%,#000);border-color:var(--blue)}.brand-logo{display:block;max-width:155px;max-height:48px;object-fit:contain}.brand-links{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 16px;font-size:11px;padding:8px 0 20px}.brand-links a{text-decoration:none}.login-page{background:var(--login-bg);color:var(--login-ink);flex-direction:column;gap:30px;padding-bottom:24px}.login-card{background:var(--login-panel);color:var(--login-ink);--ink:var(--login-ink);--surface:var(--login-panel);--muted:color-mix(in srgb,var(--login-ink) 65%,var(--login-panel))}.login-card .brand{color:var(--login-ink)}.login-bottom{position:static;max-width:680px;padding:0 12px}.login-card .brand-logo{max-width:170px;max-height:65px}.announcement{background:var(--blue-light);border:1px solid var(--line);white-space:pre-line}.position-details{grid-template-columns:repeat(5,minmax(0,1fr))}.page-footer{flex-wrap:wrap}.settings-toplinks{margin-left:auto}
@media(max-width:800px){.position-details{grid-template-columns:repeat(2,minmax(0,1fr))}.brand-logo{max-width:110px;max-height:42px}}@media(max-width:600px){.login-card{padding:28px}.brand{font-size:19px}.settings-toplinks{margin-left:0}.settings-page .topbar{height:auto;padding-top:16px;padding-bottom:16px}}
