*{box-sizing:border-box}body{margin:0;background:#f4f6f8;color:#172b38;font:14px system-ui,-apple-system,Segoe UI,sans-serif}button,input{font:inherit}button{cursor:pointer;border:1px solid #d8e0e5;background:white;padding:10px 15px;border-radius:8px;color:#254352}button:hover{background:#edf5f5}button:focus-visible,input:focus-visible{outline:3px solid #35b4a8;outline-offset:2px}header{height:82px;background:#102936;color:#fff;display:flex;align-items:center;padding:0 30px;gap:25px}.brand{display:flex;align-items:center;color:white;text-decoration:none;font-size:30px;font-weight:800;letter-spacing:-4px}.brand>span{color:#49d5b2}.brand b{font-size:17px;letter-spacing:2px;margin-left:17px}.brand small{display:block;font-size:8px;letter-spacing:2.5px;color:#a3b9c5;margin-top:4px}.section{margin-left:35px;border-left:1px solid #3a515c;padding-left:26px;color:#becfd7}#connection{margin-left:auto;color:#95dcca;font-size:12px}header button{color:white;background:#1d3b49;border-color:#41606c}main{display:grid;grid-template-columns:320px 1fr;min-height:calc(100vh - 82px)}aside{background:white;border-right:1px solid #dfe5e8;padding:30px 25px;display:flex;flex-direction:column}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:750;color:#64818c}h1{font-size:29px;line-height:1.2;letter-spacing:-1px;margin:13px 0 24px}.summary{display:flex;gap:45px;border-bottom:1px solid #e3eaed;padding-bottom:22px}.summary strong{display:block;font-size:28px}.summary span{font-size:11px;color:#6b818b}.search{display:block;font-size:11px;color:#647d87;margin:23px 0 16px}input{width:100%;border:1px solid #cfdade;border-radius:7px;padding:12px;margin-top:7px;color:#172b38}#devices{display:flex;flex-direction:column;gap:10px;max-height:55vh;overflow:auto}.device{text-align:left;width:100%;padding:15px;border-radius:10px}.device.selected{border-color:#169b87;background:#effaf6;box-shadow:inset 3px 0 #169b87}.device strong{display:block;margin-bottom:6px}.device small{display:block;color:#68808a;font-size:10px;margin-top:8px}.badge{font-size:11px;color:#197b69}.badge.warn{color:#a26220}.aside-footer{font-size:11px;color:#587680;margin-top:auto;padding-top:25px;line-height:1.8}.aside-footer span{font-size:10px;color:#84969d}.workspace{padding:27px 30px 14px;min-width:0;display:flex;flex-direction:column}.map-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}h2{font-size:23px;letter-spacing:-.5px;margin:6px 0}#follow[aria-pressed=true]{color:#137c6c;border-color:#9dcfc3;background:#edf9f5}#map{height:calc(100vh - 340px);min-height:330px;background:#e4eceb;border:1px solid #d5dfdf;border-radius:12px;z-index:0}#map-error{padding:30px}.map-note{padding:12px 2px;color:#607d87;font-size:12px}#details{display:grid;grid-template-columns:repeat(3,1fr) 1.6fr;background:white;border:1px solid #dde5e9;border-radius:10px;padding:20px 0}.metric{padding:0 22px;border-right:1px solid #e5eaed}.metric:last-child{border:0}.metric span{display:block;color:#728994;font-size:10px;margin-bottom:8px}.metric strong{font-size:19px;font-weight:650}#time{font-size:14px}.bottom{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#748c97;margin-top:16px}.muted{color:#748b94;font-size:13px}.vehicle-pin{display:grid;place-items:center;border:3px solid white;border-radius:50%;background:#128a78;color:white;font-size:20px;box-shadow:0 2px 9px #16372d55}.vehicle-pin.stale{background:#a97937}dialog{border:0;border-radius:16px;padding:36px;width:420px;max-width:92vw;box-shadow:0 20px 100px #0004}dialog::backdrop{background:#102936b8;backdrop-filter:blur(6px)}dialog h2{font-size:28px;margin:14px 0}dialog p{font-size:13px;color:#6a808b}dialog label{font-size:12px}dialog .primary{width:100%;background:#137f70;color:white;border:0;margin:12px 0 18px;padding:14px}dialog small{color:#7a8e98;font-size:11px;line-height:1.6;display:block}#login-error{color:#ac3535;min-height:15px}@media(max-width:850px){header{padding:0 16px;height:70px;gap:12px}.section{display:none}main{grid-template-columns:1fr}aside{padding:20px}h1{font-size:23px}h1 br{display:none}.summary{gap:35px}.aside-footer{display:none}#devices{max-height:200px}.workspace{padding:20px}#map{height:48vh}#details{grid-template-columns:1fr 1fr;gap:20px}.metric:nth-child(2){border:0}.bottom{flex-wrap:wrap}#connection{font-size:10px}header button{font-size:11px;padding:8px}}
select{font:inherit;display:block;width:100%;padding:10px;border:1px solid #cfdade;border-radius:7px;background:white;margin:7px 0 14px}.wide-dialog{width:1150px;max-height:90vh;overflow:auto}.dialog-heading{display:flex;justify-content:space-between;align-items:center}.admin-grid{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:28px}.admin-grid h3{border-bottom:1px solid #dde5e9;padding-bottom:12px}.admin-grid label{display:block;margin:12px 0}.inline-label{display:flex!important;gap:8px;align-items:center}.inline-label input{width:auto;margin:0}fieldset{border:1px solid #d8e1e5;border-radius:8px;margin-top:18px}#assignments{max-height:220px;overflow:auto}.admin-device{border-top:1px solid #e2e8eb;padding:14px 0;display:flex;gap:5px;flex-wrap:wrap}.admin-device span{width:100%;font-size:11px;margin-bottom:4px}.admin-device button{font-size:11px;padding:6px 9px}#admin-message{color:#175c51;min-height:20px}#identity{font-size:11px;color:#b6d2dc}#password-error{color:#ac3535}@media(max-width:1000px){.admin-grid{grid-template-columns:1fr}#identity{display:none}header{flex-wrap:wrap;height:auto;min-height:82px;padding-top:12px;padding-bottom:12px;gap:8px}header .section{display:none}header button{font-size:10px;padding:7px}}
[hidden]{display:none!important}.history-controls{background:white;border:1px solid #dde5e9;border-radius:10px;padding:12px 16px;margin-bottom:15px}.mode-switch{display:flex;gap:8px}.mode-switch button[aria-pressed=true]{background:#e7f7f1;border-color:#63b9a6;color:#166754}#history-form,#playback-controls{display:flex;align-items:end;gap:14px;margin-top:12px;flex-wrap:wrap}#history-form label,#playback-controls label{font-size:11px;color:#5f7884}#history-form input{margin-top:5px;padding:8px}#playback-controls select{padding:5px;margin:4px 0 0}#route-scrub{flex:1;min-width:120px;width:auto;margin-bottom:8px}#play-time{font-size:12px;align-self:center}#history-message:empty{display:none}#history-message{font-size:12px;color:#526e7b;margin-bottom:0}
.action-popup{position:fixed;margin:0;width:260px;padding:18px;border-radius:12px}.action-popup h3{margin:0 0 12px;font-size:15px}.action-popup button{display:block;width:100%;text-align:left;margin:6px 0}.action-popup::backdrop{background:#10293633;backdrop-filter:none}.presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.presets button{font-size:11px;padding:7px 10px}#stop-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;margin-top:12px}#stop-minutes{width:75px;margin:0;padding:7px}#stop-count{color:#517486}#record-panel{background:white;margin-top:20px;padding:16px;border:1px solid #dce5e9;border-radius:10px}.table-scroll{overflow:auto;max-height:380px}table{width:100%;border-collapse:collapse;font-size:11px;text-align:left}th,td{padding:10px 12px;border-bottom:1px solid #e1e8eb;white-space:nowrap}th{background:#f1f6f7;position:sticky;top:0;z-index:1}#record-rows tr{cursor:pointer}#record-rows tr:hover,#record-rows tr.record-selected{background:#e8f7ef}td button{font-size:11px;padding:5px 9px}.table-pagination{display:flex;gap:12px;align-items:center;justify-content:flex-end;margin-top:12px;font-size:11px}.stop-list{display:flex;gap:6px;flex-wrap:wrap;max-height:100px;overflow:auto;margin:12px 0}.stop-list button{font-size:11px;padding:6px 10px}.parking-pin{background:#276da0;color:white;border:2px solid white;border-radius:7px;text-align:center;line-height:26px;font-weight:800;box-shadow:0 2px 5px #0003}#record-json{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;background:#f0f5f6;padding:15px}#record-info details{margin:18px 0}#record-info a{color:#167b6a;font-size:12px}#record-info td{white-space:normal;overflow-wrap:anywhere}input[readonly]{background:#eef2f4;color:#68808a}
.alert-filter{display:flex;gap:15px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.alert-filter select{min-width:200px}.alert-card{border:1px solid #dae3e6;border-left:4px solid #c4cfd4;border-radius:8px;padding:15px;margin:10px 0}.alert-card.unread{border-left-color:#df9735;background:#fffaf1}.alert-card p{margin:6px 0 12px}.alert-card details{margin-top:12px;font-size:11px}.alert-card pre{white-space:pre-wrap;overflow-wrap:anywhere}.rule-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}#alert-management{border-top:1px solid #d9e3e7;margin-top:25px;padding-top:15px}#alerts-message{color:#175c51;min-height:18px}#alerts-badge{background:#e9a64f;color:#102936;border-radius:10px;padding:1px 6px;margin-left:5px}@media(max-width:800px){.rule-grid{grid-template-columns:1fr}}
#event-rule-rows td{white-space:normal}#condition-rows input{min-width:85px;padding:8px;margin:0}#condition-rows input[data-field=source]{min-width:160px}#condition-rows select{margin:0;padding:8px}#custom-conditions{border:1px solid #dbe5e9;border-radius:8px;padding:16px;margin:18px 0}.notification-options{background:#f2f7f8;padding:15px;border-radius:8px;margin:18px 0}.notification-options select{max-width:220px}#event-editor-message{color:#a03925;min-height:18px}#event-toasts{position:fixed;right:20px;bottom:20px;z-index:1000;width:320px;max-width:90vw;display:grid;gap:10px}.event-toast{background:white;border-radius:10px;border-left:5px solid #d79434;padding:16px;box-shadow:0 5px 24px #10293633}.event-toast.critical{border-color:#c14848}.event-toast.info{border-color:#3085ad}.event-toast p{margin:8px 0}.event-toast small{display:block;margin-bottom:10px;color:#617d8b}.event-toast button{font-size:11px;padding:6px 10px;margin-right:7px}#rule-extra-trackers{min-height:95px}
/* Compact fleet workspace */
body{font-size:12px;background:#edf0f2}button{border-radius:3px;padding:7px 11px}input,select{border-radius:3px}header{height:48px;min-height:48px;padding:0 16px;gap:14px;background:#fff;color:#334957;border-bottom:1px solid #ccd6dc}.brand{color:#203d4a;font-size:25px}.brand b{font-size:12px;margin-left:10px}.brand small{font-size:6px;margin-top:1px}.section{margin-left:8px;padding-left:15px;border-color:#dbe2e6;color:#6b7d87;font-size:11px}header button{background:#f6f8f9;color:#385564;border-color:#dce3e7;font-size:11px}#connection{color:#248675;font-size:10px}#identity{color:#516c79;font-size:11px}main{grid-template-columns:310px minmax(0,1fr);height:calc(100dvh - 48px);min-height:0}aside{padding:0;min-height:0;overflow:hidden}.fleet-heading{display:flex;justify-content:space-between;padding:14px 12px 10px;align-items:center}.fleet-heading strong{font-size:15px}.fleet-heading span{color:#8798a1;font-size:10px}.fleet-tabs{display:flex;border-block:1px solid #e3e8eb;background:#fafbfc;padding:0 5px}.fleet-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;padding:10px 13px;border-radius:0}.fleet-tabs button:first-child{border-bottom-color:#238f9b;color:#147c88}.fleet-filters{display:flex;gap:2px;padding:8px 5px;background:#f3f5f6;flex-wrap:wrap}.fleet-filters button{font-size:10px;padding:5px;border:0;background:transparent}.fleet-filters button[aria-pressed=true]{background:white;color:#087b87;box-shadow:0 1px 3px #20374422}.summary{gap:20px;padding:8px 12px;border:0}.summary>div{display:flex;align-items:baseline;gap:5px}.summary strong{font-size:15px}.summary span{font-size:10px}.search{margin:0;padding:5px 10px 10px;font-size:10px}.search input{margin-top:4px;padding:8px;font-size:11px}.list-heading{display:flex;justify-content:space-between;background:#f1f4f6;border-block:1px solid #e0e6e9;padding:7px 12px;color:#72848f;font-size:10px}#devices{gap:0;max-height:none;flex:1;min-height:0;overflow:auto}.device{position:relative;padding:9px 11px;border:0;border-bottom:1px solid #e8edef;border-radius:0;min-height:68px}.device strong{font-size:12px;font-weight:600;margin:0 75px 3px 0}.device.selected{background:#eaf5f8;box-shadow:inset 3px 0 #258d9b}.device small{font-size:9px;margin-top:4px}.badge{font-size:10px}.row-speed{position:absolute;right:12px;top:10px;font-size:10px;color:#6c7e87}.aside-footer{margin:0;padding:8px 12px;font-size:10px;border-top:1px solid #e0e6e9}.aside-footer span{font-size:9px}.workspace{padding:0;overflow:auto;min-height:0;gap:0}.map-top{order:0;margin:0;padding:8px 12px;background:white;border-bottom:1px solid #dee5e9;gap:10px;flex-wrap:wrap}.map-top .eyebrow{display:none}.map-top h2{font-size:14px;margin:0}.map-tools{display:flex;gap:5px;margin-left:auto}.map-tools button,#follow{font-size:10px;padding:6px 9px}.map-tools button[aria-pressed=true]{background:#e7f3f5;color:#137581}.history-controls{border:0;border-bottom:1px solid #dde4e8;border-radius:0;margin:0;padding:6px 12px}.mode-switch{gap:3px}.mode-switch button{font-size:11px;padding:6px 12px}#map{height:auto;flex:1 0 350px;min-height:350px;border:0;border-radius:0}.map-note{padding:6px 12px;font-size:10px;background:#f8fafb;border-bottom:1px solid #dde5e9}.data-heading{background:#f0f3f5;display:flex;justify-content:space-between;align-items:center;padding:6px 12px;border-bottom:1px solid #dbe3e8}.data-heading strong{font-size:11px;font-weight:600;color:#4a6473}.data-heading button{padding:4px 9px;font-size:10px}#details{border:0;border-radius:0;padding:16px 0;min-height:85px}.metric{padding:0 15px}.metric strong{font-size:17px}.metric span{font-size:10px}#time{font-size:12px}.bottom{padding:7px 12px;margin:0;background:white;border-top:1px solid #eef1f3;font-size:10px}#record-panel{margin:0;border:0;border-radius:0;padding:10px 12px;flex-shrink:0}.vehicle-pin{border-radius:4px;border-width:2px;font-size:22px;background:#168b7e;box-shadow:0 1px 4px #0003}.fleet-map-label{font-size:10px;padding:3px 6px;border-radius:2px;box-shadow:0 1px 3px #0002}dialog{border-radius:6px;padding:24px}dialog::backdrop{backdrop-filter:none;background:#142c3c66}.event-toast{border-radius:4px;padding:12px}.event-toast strong{display:block;font-size:12px}#event-toasts{top:62px;bottom:auto;right:12px}.table-scroll{max-height:300px}th,td{padding:7px 9px}
@media(max-width:1050px){header{height:auto;min-height:48px;padding:7px 10px;gap:7px}.section{display:none}main{height:calc(100dvh - 64px);grid-template-columns:260px minmax(0,1fr)}.brand b{font-size:10px}.map-tools{margin-left:0}#connection{margin-left:auto}}
@media(max-width:700px){header{flex-wrap:wrap}.brand{font-size:20px}header button{font-size:10px;padding:5px 7px}main{display:flex;flex-direction:column;height:auto}aside{max-height:310px;flex-shrink:0}#devices{max-height:160px;min-height:70px}.fleet-heading{padding:8px 10px}.summary,.aside-footer{display:none}.workspace{overflow:visible}#map{flex:none;height:52dvh;min-height:320px}.metric{padding:0 12px}#details{gap:14px;grid-template-columns:1fr 1fr}.map-top{padding:7px}.map-tools button,#follow{font-size:9px}#event-toasts{top:auto;bottom:12px}dialog{padding:18px}.wide-dialog{max-width:96vw}}
.device-row{position:relative;border-bottom:1px solid #e8edef;display:flex}.device-row .device{border-bottom:0;padding-right:38px;min-width:0}.device-row.selected{background:#eaf5f8;box-shadow:inset 3px 0 #258d9b}.device-row .device.selected{box-shadow:none}.device-row .row-speed{right:38px}.device-menu{position:absolute;right:3px;top:8px;border:0;padding:3px 8px;font-size:23px;background:transparent;line-height:25px}.device-menu:hover{background:#dcecf0}.device-row .device strong{margin-right:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.direction-marker{background:transparent;border:0;color:#168b7e}.direction-marker.stale{color:#a97937}.vehicle-shape{display:block;width:36px;height:40px;transform-origin:center;filter:drop-shadow(0 1px 2px #0005)}.vehicle-shape svg{display:block;width:100%;height:100%}.icon-choice{display:block;margin-top:12px}.icon-choice select{margin-bottom:6px}
/* Responsive map-first playback */
.language-label select{width:85px;font-size:11px;padding:5px;margin:0}.language-label{flex-shrink:0}.smooth-label{display:flex;align-items:center;gap:4px;font-size:10px}.smooth-label input{width:auto;margin:0}#toggle-fleet{font-size:16px;padding:3px 8px}.tracker-checklist{max-height:180px;overflow:auto;border:1px solid #cfdade;padding:8px;min-height:45px}.tracker-checklist label{padding:7px 3px;min-height:36px}.tracker-checklist input{width:18px;height:18px}.fleet-collapsed main{grid-template-columns:minmax(0,1fr)}.fleet-collapsed aside{display:none}.playback-panel-buttons{display:none}.playback-mode .workspace{position:relative;overflow:hidden}.playback-mode #map{position:absolute;inset:0;height:100%;min-height:0}.playback-mode .map-top{position:absolute;top:0;left:0;right:0;z-index:401;background:#ffffffed;min-height:44px}.playback-mode .history-controls{position:absolute;top:46px;left:10px;z-index:401;width:min(760px,calc(100% - 20px));max-height:48%;overflow:auto;border:1px solid #cdd9de;border-radius:5px;box-shadow:0 2px 10px #0002}.playback-mode .playback-panel-buttons{display:flex;gap:6px;margin-bottom:5px}.playback-mode .map-note{position:absolute;bottom:0;left:0;right:0;background:#ffffffed;z-index:400;padding:6px 10px}.playback-mode .data-heading,.playback-mode #details,.playback-mode .bottom{display:none}.playback-mode #record-panel{display:none;position:absolute;bottom:28px;left:0;right:0;max-height:40%;overflow:auto;z-index:402;box-shadow:0 -2px 12px #0003}.playback-mode.route-data-open #record-panel:not([hidden]){display:block}.playback-mode.route-controls-collapsed .history-controls>:not(.playback-panel-buttons):not(.mode-switch){display:none!important}.playback-mode.route-controls-collapsed .history-controls{width:auto}.playback-mode .leaflet-top{top:110px}.playback-mode .table-scroll{max-height:220px}main{height:calc(100dvh - var(--header-height,48px))}
@media(max-width:700px){header{gap:5px;position:relative;z-index:500;padding:6px 8px}.brand b{display:none}.language-label select{width:73px}#connection{font-size:9px}#identity{display:none}header button{min-height:32px}main{display:block;position:relative;height:calc(100dvh - var(--header-height,90px));overflow:hidden}.workspace{height:100%;overflow:auto}aside{position:absolute;left:0;top:0;bottom:0;z-index:450;width:min(310px,86vw);max-height:none;box-shadow:3px 0 16px #0003;display:flex}#devices{max-height:none;min-height:0;flex:1}.fleet-collapsed aside{display:none}body:not(.fleet-collapsed) .workspace{pointer-events:none}.workspace .map-top{gap:5px}.map-top h2{font-size:12px}.map-tools{gap:3px;flex-wrap:wrap}.smooth-label{font-size:9px}.map-tools button,#follow{min-height:32px}.playback-mode .map-top{max-height:88px;overflow:auto}.playback-mode .history-controls{top:90px;max-height:42%}.playback-mode .leaflet-top{top:165px}.playback-mode #record-panel{max-height:45%;bottom:40px}.playback-mode .map-note{font-size:9px;max-height:40px;overflow:auto}.playback-mode .presets button{padding:8px}.playback-mode #map{height:100%;min-height:0}dialog{max-height:92dvh;overflow:auto;max-width:96vw;width:96vw;padding:16px}dialog input,dialog select{font-size:16px}dialog button{min-height:38px}.device-menu{min-width:36px;min-height:40px}.device-row .device{min-height:78px}.rule-grid{grid-template-columns:1fr}.admin-grid{grid-template-columns:1fr}.action-popup{width:280px;max-width:94vw}.table-scroll{max-width:100%}}
/* Installed app and mobile map/objects navigation */
#mobile-nav{display:none}.app-setting-card{border:1px solid #dde5ea;border-radius:12px;padding:15px;margin:12px 0}.app-setting-card h3{margin:0 0 10px;font-size:15px}.push-actions{display:flex;gap:8px;flex-wrap:wrap}.app-setting-card button{min-height:42px}#app-settings{width:560px}.app-offline #connection{color:#b76c26}.signed-in #mobile-nav button{opacity:1}
@media(max-width:700px){
body{background:#edf2f5}header{background:#102936;color:white;min-height:52px;padding:7px 10px;padding-top:max(7px,env(safe-area-inset-top));gap:6px}header .brand{color:white;font-size:24px}header .brand b{display:block;font-size:10px;letter-spacing:1px;margin-left:7px}header .brand small{display:none}header #connection{color:#8bddbf;max-width:110px}header #manage,header #password-button,header #logout,header #alerts-button{font-size:10px;padding:5px 7px;background:#1d3b49;color:#fff;border-color:#41606c}header #app-settings-button,header #toggle-fleet{display:none}.language-label{margin-left:auto}.language-label select{background:#1d3b49;color:white;border-color:#41606c;font-size:11px;width:72px}#identity{display:none}#mobile-nav{position:fixed;bottom:0;left:0;right:0;z-index:800;background:white;display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid #dce5ea;box-shadow:0 -3px 14px #1029360d;padding:5px 4px calc(5px + env(safe-area-inset-bottom));height:calc(64px + env(safe-area-inset-bottom))}#mobile-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:transparent;border-radius:9px;color:#6b7f8c;font-size:10px;padding:3px 0;min-width:0;opacity:.6}#mobile-nav button span{font-size:23px;line-height:25px;font-weight:500}#mobile-nav button[aria-current=page]{color:#078b80;background:#e6f7f3}main{height:calc(100dvh - var(--header-height,90px) - 64px - env(safe-area-inset-bottom))}.workspace{position:relative;overflow:hidden}body:not(.playback-mode) #map{position:absolute;inset:48px 0 127px;height:auto;min-height:0}body:not(.playback-mode) .workspace .history-controls{display:none}body:not(.playback-mode) .map-top{height:48px;min-height:48px;padding:6px 10px;background:#ffffffed;position:absolute;top:0;left:0;right:0;z-index:401;flex-wrap:nowrap}body:not(.playback-mode) .map-top h2{font-size:14px;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-top .map-tools{margin-left:auto}.map-top .map-tools #selected-info,.map-top .map-tools #map-labels,.smooth-label{display:none}body:not(.playback-mode) .map-note{position:absolute;bottom:105px;left:0;right:0;z-index:401;background:#fffffff0;max-height:24px;overflow:hidden;font-size:9px;padding:5px 10px}body:not(.playback-mode) .data-heading{position:absolute;bottom:80px;left:0;right:0;height:26px;background:white;border-radius:14px 14px 0 0;padding:5px 12px;z-index:402}.data-heading strong{font-size:10px}.data-heading button{font-size:9px;padding:3px 7px}body:not(.playback-mode) #details{position:absolute;bottom:0;left:0;right:0;height:80px;min-height:0;padding:10px 0;gap:9px 0;grid-template-columns:1fr 1fr;z-index:401}#details .metric{padding:0 12px}#details .metric strong{font-size:14px}#details .metric span{font-size:9px;margin-bottom:3px}#time{font-size:10px!important}.bottom{display:none}aside{width:100%;border:0;box-shadow:none;background:#f5f8fa}.fleet-heading{padding:16px;font-size:15px;background:white}.fleet-heading strong{font-size:20px}.fleet-tabs{display:none}.fleet-filters{padding:10px;gap:5px}.fleet-filters button{padding:8px;font-size:11px;background:#e7edf1;border-radius:15px}.fleet-filters button[aria-pressed=true]{background:#102936;color:white}.search{padding:5px 12px 12px}.search input{padding:12px;border-radius:10px;background:white}.list-heading{display:none}#devices{padding:0 10px 10px;gap:8px}.device-row{border-radius:12px;background:white;border:1px solid #e1e9ed;box-shadow:0 1px 3px #10293609;min-height:88px}.device-row.selected{border-color:#3ba99b;box-shadow:inset 3px 0 #168c80}.device-row .device{border-radius:12px;background:transparent;min-height:88px;padding:13px 40px 13px 13px}.device-row .device strong{font-size:14px}.device-row .row-speed{font-size:12px;top:15px}.device-row .device small{font-size:10px;margin-top:7px}.device-row .badge{font-size:11px}.device-menu{top:13px}.playback-mode #map{inset:0;min-height:0}.playback-mode .history-controls{top:86px;left:8px;width:calc(100% - 16px);border-radius:12px;max-height:44%}.playback-mode .map-top{min-height:45px;max-height:80px}.playback-mode #record-panel{border-radius:14px 14px 0 0}.playback-mode .map-note{padding-bottom:8px}#app-settings{width:100%;max-width:100vw;margin:auto 0 0;border-radius:18px 18px 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom));max-height:88dvh}dialog{max-width:96vw;border-radius:14px}.app-setting-card{background:#f7fafb}.push-actions button{flex:1;min-width:100px;font-size:12px}#enable-push{background:#118779;color:white;border-color:#118779}#event-toasts{bottom:calc(76px + env(safe-area-inset-bottom));right:10px;width:calc(100% - 20px);max-width:none}.event-toast{border-radius:12px}.app-offline .map-note{background:#fff3df;color:#87561f}}
@media(max-width:700px){header #alerts-button{display:none!important}#app-account-actions button{font-size:12px;min-height:42px;padding:9px 12px;flex:1;background:white;color:#254352;border:1px solid #d8e0e5}#mobile-nav button svg{display:block}body.app-offline .map-note:before{content:'Offline · ';font-weight:bold}}
.remember-choice{margin:16px 0 4px;line-height:1.5}.remember-choice input{min-width:18px;min-height:18px}
/* Phone layout inspired by the supplied GPS Server mobile references. */
.phone-titlebar,.phone-page,.phone-map-toolbar,.phone-telemetry,.phone-route-tabs,.phone-route-bar,.object-visibility,.mobile-report-date,.mobile-object-icon{display:none}.record-page-size{display:inline-block;width:65px;padding:5px;margin:0}
@media(max-width:700px){
header{background:#2f83cf;padding:0;padding-top:env(safe-area-inset-top);min-height:52px;border:0;display:block}header>:not(.phone-titlebar){display:none!important}.phone-titlebar{display:flex;width:100%;align-items:center;gap:6px;min-height:52px;color:white}.phone-titlebar strong{font-size:16px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.phone-titlebar button{border:0;background:transparent;color:white;font-size:25px;min-width:52px;min-height:48px;padding:8px}.phone-titlebar button:hover{background:#2369aa}.workspace{position:relative;background:#f7f7f7;height:100%;overflow:hidden}body:not(.playback-mode) .map-top,body:not(.playback-mode) .data-heading,body:not(.playback-mode) #details,.playback-mode .map-top,.workspace>.history-controls,.bottom{display:none!important}body:not(.playback-mode) #map,.playback-mode #map{inset:0!important;height:auto!important;min-height:0}.leaflet-top,.playback-mode .leaflet-top{top:10px!important}.leaflet-right{right:8px}.phone-map-toolbar{display:flex;position:absolute;right:9px;top:86px;z-index:430;flex-direction:column;background:#fff;box-shadow:0 1px 5px #0003;border:1px solid #ccc}.phone-map-toolbar button{border:0;border-bottom:1px solid #ddd;border-radius:0;min-width:32px;min-height:35px;padding:4px;color:#6c7478;font-size:19px}.phone-map-toolbar button:last-child{border:0}.map-note,body:not(.playback-mode) .map-note{position:absolute;left:0;right:45px;bottom:0;max-height:25px;line-height:12px;font-size:9px;padding:4px 7px;z-index:405;background:#ffffffdf;pointer-events:none}.phone-data-open:not(.playback-mode) #map{bottom:min(44%,370px)!important}.phone-data-open:not(.playback-mode) .map-note{bottom:min(44%,370px)}.phone-telemetry{position:absolute;bottom:0;left:0;right:0;height:min(44%,370px);background:#fff;overflow:auto;padding:8px 10px;z-index:440;border-top:2px solid #d0d0d0}.phone-data-open:not(.playback-mode)[data-phone-screen=map] .phone-telemetry{display:block}.phone-telemetry-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 0 5px}.phone-telemetry-heading strong{font-size:12px}.phone-telemetry-heading button{border:0;font-size:21px;line-height:22px;padding:2px 8px}.phone-telemetry table{font-size:10px}.phone-telemetry td{border:0;padding:4px 6px;white-space:normal}.phone-telemetry td:last-child{text-align:right;color:#17436a}.phone-telemetry tr:nth-child(odd){background:#f1f1f1}.phone-quick-history{display:flex;gap:8px;margin:9px 0}.phone-quick-history button,.phone-primary{background:#2f83cf;color:white;border:0;border-radius:0;min-height:34px;font-size:11px;padding:8px;flex:1}.phone-page{position:absolute;inset:0;z-index:470;background:#f7f7f7;overflow:auto;padding:12px;display:block}.phone-shortcuts{padding:16px 20px}.phone-shortcut-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.phone-shortcut-grid button{border:1px solid #ddd;border-radius:0;background:white;height:88px;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#666;gap:8px;padding:8px}.phone-shortcut-grid button span{font-size:27px}.phone-shortcut-grid button small{font-size:11px;color:#254352}.phone-grid-logout{margin-top:30px;border-radius:0}.phone-history-search{padding:12px 10px}.phone-history-search label,.phone-route-graph label{display:block;background:#f2f2f2;font-size:10px;color:#70818a;padding:8px 10px;border-bottom:1px solid #999;margin-bottom:16px}.phone-history-search select,.phone-history-search input,.phone-route-graph select{border:0;border-radius:0;background:transparent;color:#172b38;padding:4px 0;margin:0;font-size:14px}.phone-date-fields{display:grid;grid-template-columns:1fr;gap:0}.phone-history-search .phone-primary{display:block;margin-left:auto;min-width:46%;font-size:12px}.phone-history-search input[type=datetime-local]{width:100%;min-width:0}.phone-history-search p{font-size:11px;overflow-wrap:anywhere}.phone-history-search #phone-history-show:disabled{opacity:.55}.phone-menu-open .phone-map-toolbar,[data-phone-screen=history] .phone-map-toolbar,[data-phone-screen=objects] .phone-map-toolbar{display:none}aside{background:#fafafa;box-shadow:none}.fleet-heading{display:none}.fleet-filters{padding:8px 5px;background:#f2f2f2;gap:2px}.fleet-filters button{border-radius:0;background:transparent;font-size:10px;padding:6px 5px}.fleet-filters button[aria-pressed=true]{background:white;color:#216aa4}.search{padding:5px 8px 8px;font-size:10px}.search input{border:0;border-bottom:1px solid #bbb;border-radius:0;background:#f1f1f1;padding:9px;font-size:13px}#devices{padding:0;gap:0;background:white}.device-row{border:0;border-bottom:1px solid #e3e3e3;box-shadow:none;border-radius:0;min-height:62px;align-items:stretch;padding-left:27px}.device-row.selected{background:#eef5fb;box-shadow:none;border-color:#ddd}.device-row .device{border-radius:0;min-height:62px;padding:9px 38px 8px 28px}.device-row .device strong{font-size:12px;font-weight:400;color:#124a77;margin-right:55px;margin-bottom:1px;white-space:normal;line-height:15px}.device-row .device small,.device-row .badge{display:none}.device-row .mobile-report-date{display:block;font-size:9px;color:#7e8e98;line-height:12px}.device-row .row-speed{top:13px;right:35px;font-size:10px;color:#235b87}.object-visibility{display:block;position:absolute;left:7px;top:15px;width:17px!important;height:17px;margin:0!important;accent-color:#2f83cf}.mobile-object-icon{display:block;position:absolute;left:2px;top:11px;color:#79a951;font-size:25px}.device-menu{font-size:23px;min-height:36px;min-width:28px;right:1px;top:6px;color:#6d8593;padding:2px}.device-row .device:focus-visible{outline-offset:-3px}#mobile-nav button[aria-current=page]{color:#2f83cf;background:#f1f6fc}#mobile-nav{border-top-color:#ddd;background:#fff;box-shadow:none}#mobile-nav button{border-radius:0}.phone-route-tabs{position:absolute;bottom:0;left:0;right:0;height:46px;z-index:490;display:none;align-items:stretch;background:white;border-top:1px solid #ddd}.phone-route-tabs button{flex:1;border:0;background:transparent;border-radius:0;color:#68747c;padding:2px;font-size:20px;border-top:2px solid transparent}.phone-route-tabs button small{display:block;font-size:8px}.phone-route-tabs button[aria-pressed=true]{border-top-color:#2f83cf;color:#2f83cf}.phone-route-tabs #phone-route-close{flex:0 0 36px;font-size:26px}.playback-mode[data-phone-screen=route] .phone-route-tabs{display:flex}.playback-mode[data-phone-screen=route][data-route-view=map] #map{bottom:96px!important}.playback-mode[data-phone-screen=route] .map-note{bottom:96px}.phone-route-bar{display:none;position:absolute;left:4px;right:4px;bottom:48px;z-index:460;background:#fffffff2;border:1px solid #ccc;padding:4px;height:44px}.playback-mode[data-phone-screen=route][data-route-view=map] .phone-route-bar{display:block}.phone-route-bar #playback-controls{margin:0;gap:5px;display:flex;flex-wrap:nowrap;align-items:center;height:34px}.phone-route-bar #playback-controls label{font-size:0}.phone-route-bar #playback-controls select{margin:0;font-size:10px;padding:4px;width:65px;height:30px}.phone-route-bar #play-route{min-height:30px;font-size:11px;padding:3px 8px}.phone-route-bar #route-scrub{width:auto;min-width:40px;margin:0;padding:0;flex:1}.phone-route-bar #play-time{display:none}.phone-route-details,.phone-route-graph{bottom:46px;z-index:475;padding:10px 8px}.phone-route-details table{font-size:10px}.phone-route-details td{padding:5px 4px;border:0;white-space:normal}.phone-route-details td:last-child{text-align:right}.phone-route-details tr:nth-child(odd){background:#eee}.phone-route-details h3{background:#e5e5e5;font-size:17px;font-weight:400;padding:7px;margin:16px 0 5px}.phone-route-details .muted{font-size:10px;margin:5px 0}.phone-timeline-row{width:100%;border:0;border-bottom:1px solid #ddd;border-radius:0;background:white;display:grid;grid-template-columns:20px 1fr;align-items:start;gap:5px;padding:8px 4px;font-size:10px;text-align:left}.timeline-badge{background:#2f83cf;color:white;display:inline-block;padding:2px;text-align:center;font-weight:bold}.timeline-badge.E{background:#8b2a10}.timeline-badge.S,.timeline-badge.F{background:#77a51b}.timeline-description{grid-column:2;color:#58636b;overflow-wrap:anywhere}.phone-route-graph{display:flex;flex-direction:column}.phone-route-graph label{flex-shrink:0;font-size:10px;margin:0 0 6px}.phone-route-graph #phone-graph-value{font-size:11px;min-height:20px;margin:4px 0;color:#235b87}.phone-route-graph canvas{width:100%;flex:1;min-height:300px;display:block}.phone-route-graph>p:last-child{font-size:10px}.phone-event-pin{background:#8a270e;color:white;font-weight:bold;text-align:center;line-height:24px;border:1px solid white;clip-path:polygon(0 0,100% 0,100% 75%,50% 100%,0 75%)}.playback-mode[data-phone-screen=route][data-route-view=records] #record-panel:not([hidden]){display:block;position:absolute;inset:0 0 46px;max-height:none;border-radius:0;padding:8px;overflow:auto;z-index:475;background:#fafafa}.playback-mode #record-panel>p,.playback-mode #record-panel .stop-list{display:none}.playback-mode #record-panel h3{font-size:13px}.playback-mode #record-panel .table-scroll{max-height:none;overflow:visible}.playback-mode #record-table th,.playback-mode #record-table td{display:none;padding:8px 5px;font-size:10px;white-space:normal}.playback-mode #record-table th:nth-child(2),.playback-mode #record-table th:nth-child(3),.playback-mode #record-table th:nth-child(10),.playback-mode #record-table td:nth-child(2),.playback-mode #record-table td:nth-child(3),.playback-mode #record-table td:nth-child(10){display:table-cell}.playback-mode #record-panel .table-pagination{position:sticky;bottom:0;display:flex;background:#fafafa;padding:8px 0;gap:7px;font-size:10px}.playback-mode #record-panel .table-pagination button{padding:6px}.record-page-size{width:53px;margin:0;font-size:14px!important}#event-toasts{position:fixed;top:50%;bottom:auto;left:8%;right:8%;width:auto;max-width:none;transform:translateY(-50%);z-index:1000;gap:0}#event-toasts:has(.event-toast):before{content:'';position:fixed;inset:-100vh -100vw;background:#0005;z-index:-1;pointer-events:auto}#event-toasts .event-toast{display:none;border-radius:0;border-left:0;padding:22px;background:white;box-shadow:0 4px 18px #0004}#event-toasts .event-toast:first-child{display:block}#event-toasts .event-toast strong{font-size:18px;font-weight:500;border-bottom:1px solid #ddd;padding-bottom:16px;margin-bottom:15px}#event-toasts .event-toast p{font-size:13px}#event-toasts .event-toast button{border-radius:0;margin-top:8px;padding:8px 10px;min-height:34px;font-size:11px}#event-toasts .event-toast button:last-child{background:#e85345;color:white;border-color:#e85345}#alerts-panel,#app-settings{position:fixed;inset:var(--header-height,52px) 0 calc(64px + env(safe-area-inset-bottom));width:100%;max-width:100%;height:calc(100dvh - var(--header-height,52px) - 64px - env(safe-area-inset-bottom));max-height:none;margin:0;border-radius:0;padding:12px;background:#f7f7f7;z-index:700;box-shadow:none}#alerts-panel .dialog-heading h2,#app-settings .dialog-heading h2{font-size:17px}#alerts-panel .alert-filter{gap:8px}#alerts-panel .alert-filter select{min-width:0;font-size:14px}.alert-card{border-radius:0;padding:10px}.alert-card p{font-size:11px}.app-setting-card{border-radius:0;background:#fff}.push-actions button{border-radius:0}
}
@media(max-width:700px){.playback-mode #phone-labels{display:none}}
@media(max-width:700px){.phone-history-search select,.phone-history-search input,.phone-route-graph select,.record-page-size{font-size:16px!important}.object-visibility{padding:0!important}#event-toasts .event-toast button:nth-last-child(2){background:#2f83cf;color:white;border-color:#2f83cf}}
/* ALBAVOLT visual language: deep petrol, jade and warm amber. */
:root{--av-petrol:#173e4b;--av-jade:#168583;--av-amber:#d6a15d}body{background:#f2f5f3;color:#203b45}header{border-top:3px solid var(--av-jade)}button{border-radius:5px}button:hover{background:#eef6f3}.brand>span{color:#168583}.fleet-tabs button:first-child{border-bottom-color:var(--av-jade);color:var(--av-jade)}.device-row.selected{background:#e9f4ef;box-shadow:inset 3px 0 var(--av-jade)}.vehicle-shape{width:26px;height:30px}.direction-marker{color:#168583}.direction-marker.stale{color:#bb8c4c}.route-direction{background:transparent;border:0;pointer-events:none}.route-direction span{display:block;width:14px;height:14px;line-height:14px;text-align:center;color:#0b686a;font-size:13px;text-shadow:0 0 2px white,0 0 3px white;transform-origin:50% 50%}#details{grid-template-columns:repeat(5,minmax(0,1fr))}.metric strong{font-size:16px}.metric span{color:#657f84}#vehicle-mileage{color:#147a75;font-size:16px}.phone-primary,.phone-quick-history button{background:var(--av-jade);border-radius:5px}.parking-pin{background:#227d83}.phone-event-pin{background:#a36b33}
@media(min-width:701px){.playback-mode[data-route-view] .phone-route-tabs{display:flex;position:absolute;bottom:0;left:0;right:0;height:48px;z-index:480;border-top:1px solid #d7e4df;background:#fcfefd;align-items:stretch}.phone-route-tabs button{border:0;border-top:3px solid transparent;border-radius:0;flex:1;background:transparent;color:#6b8187;font-size:18px;padding:3px 12px;display:flex;justify-content:center;align-items:center;gap:9px}.phone-route-tabs button small{font-size:12px}.phone-route-tabs button[aria-pressed=true]{color:#117d77;border-top-color:#168583;background:#edf7f2}.phone-route-tabs #phone-route-close{flex:0 0 50px}.playback-mode[data-route-view=map] #map{bottom:48px}.playback-mode[data-route-view=map] .map-note{bottom:48px}.playback-mode[data-route-view=details] .history-controls,.playback-mode[data-route-view=graph] .history-controls,.playback-mode[data-route-view=records] .history-controls{display:none}.playback-mode .phone-route-details,.playback-mode .phone-route-graph{display:block;position:absolute;inset:46px 0 48px;background:#f5f8f6;z-index:475;overflow:auto;padding:22px 28px}.playback-mode .phone-route-graph{display:flex;flex-direction:column}.phone-route-graph label{font-size:12px;display:block}.phone-route-graph select{max-width:280px}.phone-route-graph canvas{display:block;width:100%;flex:1;min-height:350px}.phone-route-graph #phone-graph-value{font-size:12px;min-height:20px;color:#168583}.phone-route-details #phone-route-summary{background:white;border:1px solid #deebe4;border-radius:10px;max-width:650px;overflow:hidden}.phone-route-details table td{padding:10px 15px;border:0}.phone-route-details table td:last-child{text-align:right;font-weight:600}.phone-route-details tr:nth-child(odd){background:#edf4f0}.phone-route-details h3{font-size:17px}.phone-timeline-row{display:grid;grid-template-columns:28px 190px 1fr;align-items:center;gap:15px;width:100%;padding:10px 12px;border:0;border-bottom:1px solid #e2ebe6;border-radius:0;background:white;text-align:left;font-size:12px}.timeline-badge{padding:4px;text-align:center;color:white;background:#168583;border-radius:4px;font-weight:bold}.timeline-badge.E{background:#ae7e43}.timeline-description{overflow-wrap:anywhere}.playback-mode[data-route-view=records] #record-panel:not([hidden]){display:block;position:absolute;inset:46px 0 48px;max-height:none;overflow:auto;z-index:475;border-radius:0;margin:0;padding:20px;background:#f8faf9}.playback-mode[data-route-view=records] #record-panel .table-scroll{max-height:calc(100vh - 290px)}}
@media(max-width:700px){header{background:var(--av-petrol);border:0}.phone-titlebar{background:var(--av-petrol)}.phone-titlebar button:hover{background:#22525e}.phone-titlebar strong{font-weight:600;font-size:15px}.workspace,.phone-page,aside{background:#f3f6f3}#mobile-nav{background:#fcfefd;border-top:1px solid #d8e5df}#mobile-nav button[aria-current=page]{color:#127c76;background:#edf6f0;border-radius:6px}.fleet-filters{background:#eaf0eb;padding:8px}.fleet-filters button[aria-pressed=true]{color:#137d75;background:#fff;border-radius:4px}.search input{border-radius:6px;border:1px solid #d8e4dd;background:#fff}.device-row{margin:3px 7px;border:1px solid #e1e9e3;border-radius:7px;min-height:60px;background:#fff}.device-row .device{border-radius:7px;min-height:60px}.device-row.selected{border-color:#89bdb0;background:#edf6f0;box-shadow:inset 3px 0 #168583}.device-row .device strong,.device-row .row-speed{color:#224d59}.mobile-object-icon{color:#40847b;font-size:21px;top:13px}.object-visibility{accent-color:#168583}.phone-map-toolbar{border-color:#cddad2;border-radius:6px;overflow:hidden}.phone-map-toolbar button{color:#52766e}.phone-telemetry{border-top:3px solid #9dbfb2;background:#fcfefd;border-radius:12px 12px 0 0}.phone-telemetry td:last-child{color:#1e665f}.phone-telemetry tr:nth-child(odd){background:#edf3ee}.phone-quick-history button,.phone-primary{background:#168583;color:white;border-radius:5px}.phone-history-search label,.phone-route-graph label{background:white;border:1px solid #dee7df;border-bottom:2px solid #adc7b9;border-radius:6px;padding:9px 12px}.phone-shortcut-grid button{border-radius:8px;border-color:#dce6de;color:#257b73}.phone-shortcut-grid button small{color:#224b55}.phone-route-tabs{border-top-color:#d6e4da;background:#fcfefd}.phone-route-tabs button[aria-pressed=true]{border-top-color:#168583;color:#168583}.phone-route-bar{border-radius:7px;border-color:#b9cfc2}.phone-route-details tr:nth-child(odd){background:#eaf1eb}.phone-route-details h3{background:#dfebe1;border-radius:4px;color:#34594e}.timeline-badge{background:#168583;border-radius:3px}.timeline-badge.E{background:#a6763d}.timeline-badge.S,.timeline-badge.F{background:#537f61}.phone-timeline-row{background:#fcfefd;border-color:#dfe8e1}#event-toasts .event-toast{border-radius:10px;border-top:4px solid #d6a15d}#event-toasts .event-toast strong{color:#234d57}#event-toasts .event-toast button:nth-last-child(2){background:#168583;border-color:#168583}#event-toasts .event-toast button:last-child{background:#ba7949;border-color:#ba7949}#alerts-panel,#app-settings{background:#f3f6f3}.app-setting-card{border-color:#dde7df;border-radius:7px}#enable-push{background:#168583;border-color:#168583}#details{grid-template-columns:1fr 1fr}}
/* Desktop selected-object dock */
#object-panel{display:none}
@media(min-width:701px){body:not(.playback-mode) .workspace{overflow:hidden}body:not(.playback-mode) .workspace>.data-heading,body:not(.playback-mode) .workspace>#details,body:not(.playback-mode) .workspace>.bottom{display:none}body:not(.playback-mode) .workspace>#map{height:auto;flex:1 1 0;min-height:150px}#object-panel:not([hidden]){display:block;height:240px;min-height:190px;max-height:55vh;flex:0 0 auto;background:#fcfefd;border-top:2px solid #d4e4db;overflow:hidden;resize:vertical}.object-panel-bar{height:34px;background:#eef4ef;border-bottom:1px solid #dce7df;display:flex;align-items:center;gap:12px;padding:0 8px}.object-panel-bar [role=tablist]{display:flex;align-self:stretch;gap:2px}.object-panel-bar [role=tab]{border:0;border-top:2px solid transparent;border-radius:0;background:transparent;font-size:11px;padding:5px 12px;color:#5b777e}.object-panel-bar [role=tab][aria-selected=true]{background:#fcfefd;border-top-color:#168583;color:#126e68}#object-panel-name{font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#object-panel-info{margin-left:auto;font-size:10px;padding:4px 8px;background:white}#object-panel-close{font-size:22px;line-height:23px;padding:0 5px;border:0;background:transparent;color:#698078}#object-panel-data{height:calc(100% - 34px);overflow:auto}.object-data-columns{display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,1fr) 200px;gap:18px;padding:12px 14px;max-width:1100px;height:100%;align-items:start}.object-data-columns table{font-size:10px;table-layout:fixed}.object-data-columns td{padding:5px 7px;border:0;white-space:normal;overflow-wrap:anywhere;color:#314f59;line-height:15px}.object-data-columns td:first-child{width:43%;color:#658087}.object-data-columns td:last-child{text-align:right}.object-data-columns tr:nth-child(odd){background:#edf3ee}.object-coordinate{padding:0;border:0;background:transparent;color:#167f81;font-size:10px;text-align:right}.object-speed-gauge{border-left:1px solid #dce7df;padding-left:18px;max-height:100%;color:#55777c}.object-speed-gauge>span{display:block;background:#eef4ef;padding:5px 7px;font-size:10px}.object-speed-gauge svg{display:block;width:180px;max-width:100%;height:auto;margin-top:5px}.gauge-track,.gauge-value{fill:none;stroke-width:11;stroke-linecap:round}.gauge-track{stroke:#dce7e0}.gauge-value{stroke:#168583;stroke-dasharray:0 236}.object-speed-gauge text{font:29px system-ui;fill:#254b54}.object-speed-gauge .gauge-unit{font-size:10px;fill:#6b868d}.object-speed-gauge .gauge-limit{font-size:8px;fill:#91a59e}#object-panel-history{height:calc(100% - 34px);overflow:hidden;position:relative}.object-panel-tools{display:flex;align-items:center;gap:10px;padding:4px 12px;height:40px;border-bottom:1px solid #e4ece6;background:#f9fcfa}.object-panel-tools label{display:flex;align-items:center;gap:5px;font-size:10px;color:#68858b}.object-panel-tools select{display:inline-block;width:130px;margin:0;padding:4px 6px;font-size:10px}.object-panel-tools button{font-size:10px;padding:4px 8px}#object-panel-status{font-size:10px;color:#6a858b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#object-panel-canvas{display:block;width:100%;height:calc(100% - 40px)}#object-panel-messages{height:calc(100% - 40px);overflow:auto}#object-panel-messages table{font-size:10px}#object-panel-messages td,#object-panel-messages th{padding:5px 10px}.object-message-pager{display:flex;gap:10px;align-items:center;justify-content:flex-end;font-size:10px;padding:5px 12px;position:sticky;bottom:0;background:#fcfefd}.object-message-pager button{font-size:10px;padding:3px 8px}}
@media(min-width:701px) and (max-width:1100px){.object-data-columns{grid-template-columns:1fr 1fr 150px;gap:8px;padding:9px}.object-data-columns table{font-size:9px}.object-data-columns td{padding:5px 4px}.object-speed-gauge{padding-left:8px}.object-panel-tools select{width:100px}#object-panel-status{max-width:200px}}
@media(min-width:701px) and (max-height:650px){#object-panel:not([hidden]){height:195px;min-height:180px}.object-data-columns{padding:6px 10px;gap:10px}.object-data-columns td{padding:3px 6px;line-height:14px}.object-speed-gauge svg{height:105px;width:160px}.object-panel-bar{height:30px}#object-panel-data,#object-panel-history{height:calc(100% - 30px)}body:not(.playback-mode) .workspace>#map{min-height:100px}}

/* Reports retain readable filters and independently scrollable results on phones. */
#reports-panel{width:min(1220px,94vw);max-width:94vw;max-height:92dvh;overflow:auto;padding:22px;background:#f8fbf9;border-top:4px solid #168583}.report-filters{display:grid;grid-template-columns:1.2fr 1fr;gap:18px}.report-filters fieldset{margin:0;min-width:0;border:1px solid #ccdad1;border-radius:7px}.report-filters legend{font-size:12px}.report-pick-tools{display:flex;gap:6px;flex-wrap:wrap}.report-pick-tools button{font-size:11px;padding:6px}.report-pick-tools input{flex:1;min-width:120px;margin:0}#reports-trackers{max-height:150px;overflow:auto;margin-top:8px}#reports-trackers label{font-size:12px;padding:4px;display:flex;gap:7px;align-items:center}#reports-trackers label[hidden]{display:none}.report-date-fields,.report-criteria{display:grid;grid-template-columns:1fr 1fr;gap:10px}.report-date-fields label,.report-criteria label{font-size:11px;margin:0}.report-date-fields input,.report-criteria input:not([type=checkbox]),.report-criteria select{width:100%;box-sizing:border-box;margin:5px 0 0}.report-criteria .inline-label{display:flex;align-items:center;gap:7px}.report-criteria input[type=checkbox]{width:auto}.report-activity-settings{border:1px solid #d8e4db;border-radius:6px;padding:12px;margin-top:12px}.report-activity-settings summary{cursor:pointer;font-size:12px;margin-bottom:8px}.report-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid #b9cfc2;padding:10px 0}.report-tabs button[aria-selected=true]{background:#168583;color:#fff;border-color:#168583}.report-result-tools{display:flex;align-items:center;justify-content:space-between;margin:10px 0}.report-table-wrap{max-height:48dvh;overflow:auto;border:1px solid #d4e0d7;background:white}#reports-table{white-space:nowrap;font-size:11px;width:100%}#reports-table th{position:sticky;top:0;background:#e9f2ed;z-index:1}#reports-table td{max-width:400px;white-space:normal;min-width:95px;overflow-wrap:anywhere}#reports-status{color:#80582f;font-size:12px}#reports-summary{font-weight:600;color:#173e4b}#reports-panel .muted{font-size:11px;line-height:1.5}
@media(max-width:700px){#reports-panel{width:calc(100% - 12px);max-width:none;padding:13px;max-height:calc(100dvh - 75px - env(safe-area-inset-bottom));box-sizing:border-box}.report-filters{grid-template-columns:1fr;gap:12px}.report-criteria{grid-template-columns:1fr 1fr}#reports-panel input:not([type=checkbox]),#reports-panel select{font-size:16px;min-width:0}#reports-panel .dialog-heading h2{font-size:19px}#reports-panel .presets{display:flex;flex-wrap:wrap;gap:5px}#reports-panel button{min-height:36px}#reports-panel #reports-trackers{max-height:110px}.report-table-wrap{max-height:55dvh}.report-tabs button{flex:1;padding:7px;font-size:11px}}

/* Connection health uses AVL receipt time; position age remains separate. */
.fleet-filters{flex-wrap:wrap}.device-row[data-status=moving] .badge{color:#168583}.device-row[data-status=idling] .badge{color:#a47826}.device-row[data-status=parked] .badge{color:#4a7187}.device-row[data-status=offline] .badge{color:#8c6666}.direction-marker.status-idling{color:#bb8a32}.direction-marker.status-parked{color:#4a7187}
@media(min-width:701px){.object-data-columns td{padding-top:3px;padding-bottom:3px}.object-data-columns{overflow:auto}}

/* Saved places editor stays beside the map while drawing. */
#places-panel{width:900px}#places-panel td:last-child button{margin:2px}.places-list-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}#place-editor{position:fixed;z-index:850;right:16px;top:calc(var(--header-height,58px) + 10px);width:360px;max-height:calc(100dvh - var(--header-height,58px) - 25px);overflow:auto;background:#fcfefd;border:1px solid #b6cfc2;border-top:3px solid #168583;border-radius:9px;padding:14px;box-shadow:0 6px 24px #173e4b33}#place-editor h3{margin:0;font-size:15px}#place-editor label{display:block;font-size:11px;color:#3e626b;margin:9px 0}#place-editor input:not([type=checkbox]),#place-editor select,#place-editor textarea{display:block;width:100%;margin:5px 0 0;padding:7px;box-sizing:border-box}#place-editor .inline-label{display:flex;margin:6px 0;align-items:center}#place-editor input[type=checkbox]{width:auto;margin:0}#place-editor fieldset{margin:12px 0;padding:9px}#place-editor legend,#place-editor summary{font-size:11px}#place-trackers{max-height:130px;overflow:auto}#place-editor .muted{font-size:10px;line-height:1.5}.place-draw-tools{display:flex;gap:5px;flex-wrap:wrap}.place-draw-tools button,#place-editor details button{font-size:10px;padding:6px}.place-switches{display:grid;grid-template-columns:1fr 1fr}.place-number-fields{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}#place-editor-message,#places-message{font-size:12px;color:#80542d;overflow-wrap:anywhere}
@media(max-width:700px){#places-panel{width:calc(100% - 16px);max-width:none;padding:14px;max-height:calc(100dvh - 100px)}#places-panel th,#places-panel td{padding:7px;font-size:10px}#place-editor{top:auto;bottom:calc(65px + env(safe-area-inset-bottom));right:5px;left:5px;width:auto;max-height:45dvh;padding:12px}#place-editor input:not([type=checkbox]),#place-editor select,#place-editor textarea{font-size:16px}#place-editor button{min-height:34px}}

/* Display switches operate on map layers only; tracking and alerts continue. */
.map-layer-toolbar{display:flex;flex-direction:column;width:34px;background:#fcfefd;border:1px solid #bbccc4!important;border-radius:5px!important;overflow-x:hidden;overflow-y:auto;box-shadow:0 2px 8px #173e4b22}.map-layer-toolbar button{display:block;width:32px;min-height:32px;padding:0;border:0;border-bottom:1px solid #e3ebe6;border-radius:0;background:#fcfefd;color:#748983;font:18px system-ui;line-height:30px;flex-shrink:0}.map-layer-toolbar button[aria-pressed=true]{background:#e8f4ed;color:#147d76;box-shadow:inset 3px 0 #168583}.map-layer-toolbar button:hover{background:#e2eee8}.map-layer-toolbar button:focus-visible{outline:2px solid #d6a15d;outline-offset:-3px}.map-layer-toolbar button:disabled{opacity:.55;cursor:default}.map-layer-toolbar #map-layer-kml{font-size:9px;font-weight:700}.map-layer-toolbar #map-import-kml{border-bottom:3px solid #d4e2d8}.map-labels-hidden .leaflet-tooltip-pane{display:none}.fleet-cluster{background:#16858330;border:1px solid #16858366;border-radius:50%;display:flex;align-items:center;justify-content:center}.fleet-cluster span{display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:50%;background:#176e70;color:white;font:600 12px system-ui;box-shadow:0 1px 4px #173e4b33}.cluster-object-menu .leaflet-popup-content{max-height:230px;overflow:auto;margin:12px}.cluster-object-menu button{display:block;width:100%;text-align:left;font-size:11px;margin-top:4px}.saved-place-pin{color:#168583;font-size:23px;text-shadow:0 1px white,1px 0 white,-1px 0 white;line-height:25px}.map-tools-ready .phone-map-toolbar{display:none}#map-kml-panel{width:440px}#map-kml-file{font-size:12px}#map-kml-status{overflow-wrap:anywhere;font-size:12px}.map-layer-toolbar::-webkit-scrollbar{width:3px}
@media(max-width:700px){.map-layer-toolbar{width:36px}.map-layer-toolbar button{width:34px;min-height:34px;line-height:32px}#map-kml-panel{max-height:80dvh;overflow:auto}}

#repair-panel{width:940px;max-height:88dvh;overflow:auto}#repair-editor{width:480px;max-height:88dvh;overflow:auto}#repair-alert-panel{width:720px;max-height:88dvh;overflow:auto}.repair-search-tools{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.repair-search-tools input[type=search]{flex:1;min-width:160px;margin:0}.repair-search-tools .inline-label{font-size:11px;margin:0}.repair-search-tools input[type=checkbox]{width:auto;margin:0}.repair-management{display:flex;gap:8px;margin:12px 0}.repair-card{border:1px solid #dce6df;border-radius:6px;background:#fcfefd;padding:12px;margin:8px 0}.repair-card strong{font-size:13px}.repair-card p{font-size:11px;margin:6px 0}.repair-card .push-actions{align-items:center}.repair-source{display:inline-block;margin-left:10px;font-size:10px;color:#6f827a}.repair-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.repair-shop-pin{display:grid;place-items:center;background:#fff7e9;color:#98632f;border:1px solid #c19a68;border-radius:5px;font-size:19px;box-shadow:0 1px 5px #0002}.repair-shop-pin.partner{background:#e3f4ee;color:#167c72;border-color:#70ac99}.repair-cluster{display:grid;place-items:center;background:#eee2d4;color:#81552d;border:1px solid #c7a983;border-radius:12px;font:600 11px system-ui}#repair-pick-banner{position:fixed;z-index:950;top:calc(var(--header-height,50px) + 10px);left:50%;transform:translateX(-50%);padding:10px;background:#fff8eb;border:1px solid #cba46d;border-radius:6px;max-width:90vw}#repair-message,#repair-edit-message,#repair-alert-message{font-size:12px;color:#80582f}#repair-monitor-list{max-height:180px;overflow:auto}#repair-monitor-list p{font-size:11px}
@media(max-width:700px){#repair-panel,#repair-alert-panel,#repair-editor{width:calc(100% - 16px);max-width:none;padding:14px;max-height:85dvh}.repair-two{gap:8px}#repair-panel input,#repair-editor input,#repair-alert-panel input:not([type=checkbox]){font-size:16px}.repair-search-tools{align-items:flex-start;flex-direction:column}.repair-search-tools input[type=search]{width:100%}.repair-source{display:block;margin:5px 0}.repair-card .push-actions{flex-wrap:wrap}}
