:root{--primary:#3568D4;--primary-dark:#214CA8;--navy:#17222B;--green:#2E9D5B;--amber:#D99521;--red:#C84C4C;--bg:#F4F7FB;--card:#FFF;--text:#1B2730;--muted:#6E7B87;--line:#E4EAF0}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}.hidden{display:none!important}.login-shell{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,var(--navy),#243746)}.login-card{width:min(420px,92vw);background:#fff;padding:42px;border-radius:22px;box-shadow:0 30px 80px rgba(0,0,0,.28)}.brand-mark{width:62px;height:62px;border-radius:16px;background:var(--primary);color:#fff;display:grid;place-items:center;font-size:24px;font-weight:800}.brand-mark.small{width:42px;height:42px;border-radius:12px;font-size:17px}.login-card h1{margin:22px 0 6px;font-size:27px}.login-card p{margin:0 0 28px;color:var(--muted)}label{display:block;font-size:13px;font-weight:700;margin:15px 0 7px}input,select{width:100%;padding:12px 13px;border:1px solid #ced7e0;border-radius:10px;font-size:14px;background:#fff}input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(53,104,212,.12)}button{border:0;border-radius:10px;padding:11px 14px;font-weight:700;cursor:pointer}form>button.primary,form>button[type=submit]{background:var(--primary);color:#fff}.login-card form button{width:100%;margin-top:22px}.error{min-height:20px;margin-top:12px;color:#b23a3a;font-size:13px}.version{text-align:center;color:#9aa4ad;font-size:12px;margin-top:20px}
.app{min-height:100vh;display:grid;grid-template-columns:250px 1fr}.sidebar{background:var(--navy);color:#fff;padding:22px 16px;display:flex;flex-direction:column;min-height:100vh}.brand{display:flex;gap:12px;align-items:center;padding:2px 8px 24px}.brand strong{display:block;font-size:17px}.brand span{display:block;color:#b8c4cf;font-size:12px;margin-top:2px}.portal-label{font-size:10px;letter-spacing:.15em;color:#8092a2;padding:0 12px 12px}nav{display:grid;gap:5px}.nav{background:transparent;color:#c7d1d9;text-align:left;padding:11px 13px;border-radius:9px}.nav:hover,.nav.active{background:rgba(53,104,212,.20);color:#fff}.nav.active{box-shadow:inset 3px 0 0 var(--primary)}.nav.muted{opacity:.48;cursor:default}.sidebar-footer{margin-top:auto;color:#728391;font-size:11px;padding:14px 10px 4px}main{padding:30px 34px 50px;min-width:0}header{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:26px}header h2{margin:0;font-size:27px}header p{margin:5px 0 0;color:var(--muted)}.header-actions,.row-actions,.action-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ghost{background:#fff;color:var(--text);border:1px solid var(--line)}.primary{background:var(--primary);color:#fff}.danger{background:#fff0f0;color:#a62f2f;border:1px solid #f1c6c6}.danger:hover{background:#ffe6e6}.status-pill{background:#edf3ff;color:var(--primary-dark);padding:8px 11px;border-radius:999px;font-size:12px;font-weight:800}.status-pill.good{background:#e9f6ef;color:var(--green)}
.cards{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:14px}.cards article{background:#fff;border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:0 5px 18px rgba(20,35,50,.04)}.cards span{display:block;color:var(--muted);font-size:12px;font-weight:700}.cards strong{display:block;font-size:30px;margin-top:8px}.cards .attention strong{color:var(--amber)}.panel-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:18px;margin-top:18px}.panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:0 5px 18px rgba(20,35,50,.04)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.panel h3{margin:0;font-size:18px}.panel h4{margin:24px 0 12px}.panel p{margin:5px 0 0;color:var(--muted);font-size:13px}.status-row{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line);font-size:13px}.status-row:last-child{border-bottom:0}.good{color:var(--green)}.empty{padding:34px 18px;border:1px dashed #ccd6df;border-radius:12px;color:var(--muted);text-align:center}.device-mini{display:grid;grid-template-columns:1.3fr .9fr .8fr 1fr;gap:12px;padding:13px 6px;border-bottom:1px solid var(--line);font-size:13px}.device-mini:last-child{border-bottom:0}.subtle{color:var(--muted);font-size:12px}.badge,.health{display:inline-block;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:800}.badge{background:#fff4df;color:#9b6613}.badge.registered,.health.healthy{background:#e9f6ef;color:var(--green)}.badge.blocked,.health.fault,.health.outage{background:#fdecec;color:#a63030}.badge.hold,.health.warning{background:#fff4df;color:#9b6613}.health.info{background:#edf3ff;color:var(--primary-dark)}.health.unknown{background:#eef1f4;color:#66717b}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding:10px 12px;border-bottom:1px solid var(--line)}td{padding:13px 12px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:top}.response-cell{white-space:normal;min-width:260px}code{font-size:11px}.inline-form{display:grid;grid-template-columns:1fr auto auto;gap:10px;margin-bottom:16px}.status-select{min-width:120px;padding:8px 10px}.action-strip{padding:12px 0 18px;border-bottom:1px solid var(--line)}
.diagnostic-grid{display:grid;grid-template-columns:repeat(5,minmax(180px,1fr));gap:12px}.diagnostic-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fbfcfe}.diagnostic-card.warning{border-color:#efd8ad;background:#fffaf0}.diagnostic-card.fault,.diagnostic-card.outage{border-color:#efc2c2;background:#fff8f8}.diagnostic-card.healthy{border-color:#cde7d8;background:#f8fdf9}.diag-head{display:flex;justify-content:space-between;gap:8px;align-items:center}.diagnostic-card h5{margin:12px 0 6px;font-size:14px}.diagnostic-card p{font-size:12px;line-height:1.5;margin:0}.detail-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:18px}.telemetry-grid{display:grid;grid-template-columns:repeat(2,minmax(140px,1fr));gap:10px}.telemetry-card{border:1px solid var(--line);border-radius:12px;padding:13px;background:#fbfcfe}.telemetry-card span{display:block;color:var(--muted);font-size:11px;font-weight:700}.telemetry-card strong{display:block;font-size:17px;margin-top:7px}.map-box{height:430px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#eef2f6;display:grid;place-items:center}.map-message{text-align:center;color:var(--muted);padding:30px;line-height:1.5}.raw-section{margin-top:20px;border-top:1px solid var(--line);padding-top:14px}.raw-section summary{cursor:pointer;font-weight:800}.detail-panel{max-width:1500px}
@media(max-width:1250px){.cards{grid-template-columns:repeat(3,1fr)}.diagnostic-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:1050px){.panel-grid,.detail-grid{grid-template-columns:1fr}.map-box{height:360px}}@media(max-width:760px){.app{grid-template-columns:1fr}.sidebar{display:none}main{padding:20px}.cards{grid-template-columns:repeat(2,1fr)}header{align-items:flex-start;flex-direction:column}.diagnostic-grid,.telemetry-grid{grid-template-columns:1fr}.inline-form{grid-template-columns:1fr}}
.vehicle-form{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr 1.4fr auto auto;gap:10px;margin-bottom:18px;align-items:center}.vehicle-form input,.vehicle-form select,.filter-select,.assign-box input,.assign-box select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:white;font:inherit;color:var(--navy)}.filter-select{min-width:180px}.warning-banner{border:1px solid #efc2c2;background:#fff8f8;color:#8f2f2f;padding:12px 14px;border-radius:12px;margin:0 0 16px}.vehicle-meta{grid-template-columns:repeat(4,minmax(150px,1fr));margin-bottom:8px}.section-title-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.live-pill{font-size:11px;font-weight:800;color:var(--green);background:#e9f6ef;border-radius:999px;padding:6px 9px}.fleet-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}.assigned-device{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--line);border-radius:12px;padding:14px;background:#fbfcfe;margin-bottom:10px}.assign-box{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fbfcfe;display:grid;gap:10px}.assign-box p{margin:0;font-size:12px;line-height:1.45}.vehicle-live-grid{margin-top:16px}.row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media(max-width:1250px){.vehicle-form{grid-template-columns:repeat(3,1fr)}.vehicle-meta{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.fleet-grid{grid-template-columns:1fr}.vehicle-form{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.vehicle-form,.vehicle-meta{grid-template-columns:1fr}.assigned-device{align-items:flex-start;flex-direction:column}}

.vehicle-tabs{display:flex;gap:8px;margin:18px 0 4px;border-bottom:1px solid var(--line);padding-bottom:10px}.vehicle-tab{background:#f6f8fb;color:var(--muted);border:1px solid var(--line);padding:9px 18px}.vehicle-tab.active{background:var(--primary);border-color:var(--primary);color:#fff}.history-toolbar{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:18px 0}.history-toolbar>div{min-width:190px}.history-toolbar label{margin:0 0 6px}.history-summary{grid-template-columns:repeat(6,minmax(130px,1fr));margin-bottom:18px}.history-grid{grid-template-columns:minmax(440px,.85fr) minmax(500px,1.15fr)}.history-map{height:500px}.playback-controls{display:grid;grid-template-columns:auto minmax(180px,1fr) auto;align-items:center;gap:12px;margin-top:10px;padding:10px 0}.playback-controls input[type=range]{padding:0;border:0;box-shadow:none}.history-grid td{white-space:nowrap}
@media(max-width:1250px){.history-summary{grid-template-columns:repeat(3,1fr)}.history-grid{grid-template-columns:1fr}.history-map{height:420px}}@media(max-width:700px){.history-summary{grid-template-columns:repeat(2,1fr)}.playback-controls{grid-template-columns:1fr}.history-toolbar{align-items:stretch;flex-direction:column}}

/* Alerts foundation: responsive controls and scrollable evidence table. */
.alert-filters{display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}
.alert-filters label{display:flex;flex-direction:column;gap:6px;flex:1 1 150px;min-width:0}
.alert-filters input,.alert-filters select{width:100%;min-height:42px}
.alert-filters .alert-check{flex-direction:row;align-items:center}
.alert-check input{width:18px;min-height:18px}
#alertsView .panel{margin-bottom:20px}
#alertsView td{vertical-align:top}
#alertsView .alert-detail{display:block;font-size:12px;margin-top:5px;color:#64748b}
#alertsView .alert-active{color:#9a3412;font-weight:700}
#alertSettingsVehicle{max-width:100%;min-height:44px}
#alertSettingsMessage{display:block;margin-top:12px}
@media(max-width:600px){.alert-filters label{flex-basis:100%}#alertsView .panel{padding:14px}}

#alertsView td{white-space:normal;min-width:120px;max-width:280px;overflow-wrap:anywhere}
@media(max-width:600px){
  #alertsView table,#alertsView tbody,#alertsView tr,#alertsView td{display:block;width:100%;min-width:0;max-width:none}
  #alertsView thead{display:none}
  #alertsView tr{border:1px solid #dde4ec;border-radius:10px;margin:12px 0;padding:8px}
  #alertsView td{border:0;padding:8px}
  #alertsView td[data-label]::before{content:attr(data-label);display:block;font-size:11px;font-weight:700;color:#64748b;margin-bottom:4px}
}

@media(max-width:760px){.sidebar{display:flex;min-height:0}.sidebar nav{grid-template-columns:1fr 1fr}.sidebar-footer{margin-top:12px}}

#fuelView .panel{margin-bottom:18px}#fuelView select{max-width:100%;min-height:44px}
.fuel-controls{display:flex;flex-wrap:wrap;gap:16px;margin:18px 0;align-items:end}
.fuel-controls label{display:flex;flex-direction:column;gap:6px;flex:1 1 200px;min-width:0}
.fuel-controls input{width:100%;min-height:44px}.fuel-checkbox{display:flex!important;flex-direction:row!important;align-items:center;gap:10px;margin:14px 0}
.fuel-checkbox input{width:18px;min-height:18px}#fuelView .telemetry-grid{margin:20px 0;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
#fuelView .telemetry-card strong{overflow-wrap:anywhere}#fuelView td{white-space:normal;overflow-wrap:anywhere}
.fuel-chart{margin:20px 0;overflow-x:auto}.fuel-chart svg{width:100%;min-width:650px;display:block}.fuel-chart text{font:12px sans-serif;fill:#64748b}
@media(max-width:600px){#fuelView .panel{padding:14px}.fuel-controls label{flex-basis:100%}#fuelView table,#fuelView tbody,#fuelView tr,#fuelView td{display:block;width:100%;min-width:0}#fuelView thead{display:none}#fuelView tr{border:1px solid #dde4ec;border-radius:10px;margin:12px 0;padding:8px}#fuelView td{border:0;padding:8px}#fuelView td[data-label]::before{content:attr(data-label);display:block;font-size:11px;font-weight:700;color:#64748b;margin-bottom:4px}}

.logo-window{position:relative;overflow:hidden;width:190px;height:80px;background:white;border-radius:10px;flex-shrink:0}.logo-window img{position:absolute;max-width:none;width:250px;height:250px;left:-20px;top:-85px}.login-card>.logo-window{margin:0 auto 20px}.brand{display:flex;justify-content:center}

.report-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:14px 0}.report-controls label{display:flex;flex-direction:column;gap:5px;min-width:150px}.report-controls input,.report-controls select{min-height:40px}.report-controls input[type=search]{min-width:240px}.report-controls.hidden{display:none}@media(max-width:640px){.report-controls>*{width:100%;min-width:0!important}}

#geoList .status-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}#geoList .status-row span{flex:1 1 220px;min-width:0}#geofencesView .map-box{width:100%}#geoPoints{min-width:min(100%,320px)}@media(max-width:640px){#geofencesView .report-controls>*{width:100%;min-width:0!important}#geoList .status-row button{flex:1 1 auto}}

.nav[data-view="fuel"],.nav[data-view="alerts"],.nav[data-view="geofences"]{display:none!important}

.document-panel{padding:24px 0}.document-form{display:flex;gap:16px;align-items:end;flex-wrap:wrap}.document-form label{flex:1;min-width:180px}.document-row{display:flex;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid #e2e8f0}.document-row span{flex:1;overflow-wrap:anywhere}dialog{border:1px solid #dce6ec;border-radius:18px;padding:28px;width:min(720px,94vw);max-height:90vh;overflow:auto}dialog::backdrop{background:#102c3c88}.user-row{display:flex;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #dce6ec}.user-row span{flex:1}.model-profile{font-size:12px;color:#526979;line-height:1.6}.fuel-vehicle-setting{display:flex;align-items:center;gap:12px;padding:16px;background:#eef7f7;border-radius:12px;margin:16px 0}.fuel-vehicle-setting input{width:20px;height:20px}
@media(min-width:901px){.app,.app.sidebar-collapsed{grid-template-columns:72px minmax(0,1fr)!important}.sidebar{position:sticky;top:0;z-index:30;width:72px!important;height:100vh;min-height:100vh;padding:16px 8px!important;overflow:hidden;transition:width .18s ease;box-shadow:4px 0 18px #102c3c15}.sidebar:hover,.sidebar:focus-within{width:245px!important}.sidebar .nav{white-space:nowrap;display:flex;gap:12px;align-items:center;min-height:44px}.sidebar .nav-icon{display:inline-block!important;flex:0 0 24px;text-align:center}.sidebar:not(:hover):not(:focus-within) .nav-text,.sidebar:not(:hover):not(:focus-within) .portal-label,.sidebar:not(:hover):not(:focus-within) .sidebar-footer{visibility:hidden}.sidebar .brand{min-width:200px}.sidebar .brand img{max-width:200px}.sidebar:not(:hover):not(:focus-within) .brand{opacity:.65}.sidebar nav{display:grid!important;grid-template-columns:1fr!important}}
@media(max-width:900px){.sidebar{display:none!important}.mobile-menu-open .sidebar{display:flex!important;position:fixed;inset:0 auto 0 0;width:min(280px,80vw)!important;z-index:60;overflow-y:auto}.mobile-menu-open .sidebar nav{display:grid;grid-template-columns:1fr}.app{display:block!important}.document-row{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}

.trip-number{font-weight:800;color:#00878e}.trip-street{min-width:220px;max-width:320px;font-size:12px;white-space:normal!important}

@media(min-width:901px){.sidebar{align-self:start!important;align-items:flex-start!important;overflow-y:auto!important;overflow-x:hidden!important}.sidebar nav{width:229px!important;align-self:flex-start!important}.sidebar .nav{width:229px!important;justify-content:flex-start!important;flex-direction:row!important}.sidebar .nav-icon{margin:0!important}.sidebar .brand{min-height:70px}.sidebar .sidebar-footer{padding-top:20px}}

@media(min-width:901px){.sidebar{scrollbar-width:thin;scrollbar-color:#31505f transparent}.sidebar:not(:hover):not(:focus-within) .logo-window{width:46px;height:58px}.sidebar:not(:hover):not(:focus-within) .logo-window img{width:210px;height:210px;left:-23px;top:-74px}.mobile-menu-open .sidebar{width:245px!important}.mobile-menu-open .sidebar .nav-text,.mobile-menu-open .sidebar .portal-label,.mobile-menu-open .sidebar .sidebar-footer{visibility:visible!important}}

@media(min-width:901px){.sidebar nav,.sidebar .nav{width:100%!important;min-width:0!important}.sidebar .nav{padding-left:12px!important;overflow:hidden}.sidebar .nav-text{flex-shrink:0}.sidebar .brand{width:100%;min-width:0!important;overflow:hidden}}
