/* UnitFleet 0.5 app shell: full viewport map with fixed unit rail. */
body.upf-no-scroll{overflow:hidden!important}
.upf-fleet.upf-app{position:fixed!important;inset:0!important;left:0!important;width:100vw!important;height:100vh!important;max-width:none!important;margin:0!important;z-index:2147483000;background:#e7edf3;overflow:hidden;--upf-top:42px;--upf-rail:294px;--upf-map-height:calc(100vh - var(--upf-top))!important}
.upf-app .upf-tabs{position:absolute;inset:0 0 auto 0;height:var(--upf-top);z-index:100;display:flex;align-items:stretch;overflow:visible;background:#3269aa;border:0;box-shadow:0 1px 4px #1236}
.upf-app .upf-brand{display:flex;align-items:center;width:190px;padding:0 17px;color:#d9ecff;font-size:21px;font-style:italic;letter-spacing:-1px;background:#2c5e9a}.upf-app .upf-brand b{color:#fff}
.upf-app .upf-tabs button{min-width:43px;height:42px;padding:0 13px;border:0;border-radius:0;background:transparent;color:#fff;font-weight:700}.upf-app .upf-tabs button:hover{background:#285b98}.upf-app .upf-tabs button.is-active{background:#53cbd0;color:#fff;border:0}.upf-app .upf-tabs .upf-app-filters{margin-left:12px}.upf-app .upf-tabs .upf-app-units{margin-left:auto}.upf-app .upf-tabs .upf-fullscreen{margin:0;color:#fff;font-size:18px}
.upf-app>.upf-view{display:none;position:absolute;inset:var(--upf-top) 0 0 0;padding:18px;overflow:auto;background:#f4f7f9}.upf-app>.upf-view.is-active{display:block}.upf-app>[data-view-panel="map"]{padding:0;overflow:hidden;background:#b7d8e5}
.upf-app .upf-map-layout{position:absolute;inset:0;display:grid;grid-template-columns:minmax(0,1fr) var(--upf-rail);height:100%;min-height:0}.upf-app .upf-map-canvas,.upf-app .upf-unit-sidebar{height:100%!important;min-height:0}
.upf-app.units-collapsed{--upf-rail:0px}.upf-app.units-collapsed .upf-unit-sidebar{transform:translateX(102%)}.upf-app .upf-unit-sidebar{transition:transform .2s ease}.upf-app .upf-map-canvas{cursor:grab;touch-action:none}.upf-app .upf-map-canvas.is-dragging{cursor:grabbing}
.upf-app .upf-summary{position:absolute;left:58px;top:9px;z-index:45;gap:14px;padding:6px 10px;border:0;border-radius:3px;background:#fffddd;box-shadow:0 1px 4px #0004;font-size:12px;pointer-events:none}
.upf-app .upf-unit-sidebar{border:0;background:#5c8dca;color:#fff;overflow:auto;box-shadow:-2px 0 7px #1235}.upf-app .upf-unit-sidebar h3{position:sticky;top:0;z-index:4;padding:13px;text-align:center;background:#4e7ebc;color:#fff;border:0;font-size:13px;letter-spacing:.5px}.upf-app .upf-unit-sidebar>.upf-search{position:sticky;top:44px;z-index:4;width:calc(100% - 20px);min-width:0;margin:0 10px 10px;padding:9px 11px;border:1px solid #85a9d7;border-radius:2px;background:#4274b3;color:#fff}.upf-app .upf-unit-sidebar>.upf-search::placeholder{color:#d5e5f6}
.upf-app .upf-unit-row{grid-template-columns:34px 1fr auto;padding:12px 10px;border:0;border-bottom:1px solid #78a0d2;background:#5c8dca;color:#fff}.upf-app .upf-unit-row:hover{background:#4f82c2}.upf-app .upf-unit-row small{color:#e0ecf9;font-size:11px}.upf-app .upf-unit-row i.on{background:#dff5e8;color:#14783e}.upf-app .upf-unit-row i.off{background:#eef0f4;color:#68737f}.upf-app .upf-address{max-width:165px}.upf-app .upf-unit-icon{font-size:24px}
.upf-app .upf-toolbar,.upf-app .upf-route-toolbar{position:absolute;top:10px;left:10px;z-index:80;display:flex;max-width:min(720px,calc(100vw - var(--upf-rail) - 30px));padding:12px;margin:0;border:1px solid #9bb1c2;border-radius:4px;background:#f5f8fbee;box-shadow:0 5px 18px #1235;opacity:0;transform:translateY(-12px);pointer-events:none;transition:.16s ease}.upf-app .upf-route-toolbar{top:64px;left:54px;max-width:min(950px,calc(100vw - var(--upf-rail) - 70px))}.upf-app .upf-toolbar.is-open,.upf-app .upf-route-toolbar.is-open{opacity:1;transform:none;pointer-events:auto}.upf-app .upf-toolbar .upf-search{display:none}.upf-app .upf-route-toolbar label{font-size:11px}.upf-app .upf-route-toolbar input,.upf-app .upf-route-toolbar select,.upf-app .upf-route-toolbar button{min-height:36px}
.upf-app .upf-map-controls{top:54px}.upf-app .upf-waypoints{position:absolute;z-index:90;left:12px;right:calc(var(--upf-rail) + 12px);bottom:12px;max-height:48vh;margin:0;overflow:hidden;box-shadow:0 8px 28px #0007}.upf-app .upf-waypoint-table{max-height:calc(48vh - 100px)}.upf-app .upf-waypoint-close{margin-left:auto}.upf-app .upf-waypoint-count{margin-left:0}
.upf-app .upf-time-dialog{z-index:2147483647}.upf-app dialog::backdrop{background:#0008}
.upf-app .upf-marker{width:34px;height:42px;border:2px solid #fff;border-radius:50% 50% 50% 8px;transform:translate(-50%,-80%) rotate(-45deg);background:#cd4cb8;color:#fff;font-size:0}.upf-app .upf-marker::after{content:'●';display:grid;place-items:center;width:25px;height:25px;margin:3px;border-radius:50%;background:#fff;color:#cd4cb8;font-size:12px;transform:rotate(45deg)}.upf-app .upf-marker.is-offline{background:#8f9aa6;filter:none}.upf-app .upf-marker.is-offline::after{color:#8f9aa6}.upf-app .upf-cluster{border-radius:4px 4px 50% 50%;background:#406da9;border-color:#fff}.upf-app .upf-popup{min-width:230px;padding:11px 13px;border:0;border-radius:3px;box-shadow:0 6px 22px #0007}.upf-app .upf-popup b{font-size:15px;color:#285b98}
.upf-route-marker{position:absolute;z-index:24;display:grid;place-items:center;width:24px;height:24px;padding:0;border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 2px 6px #0007;cursor:pointer;font-size:11px;font-weight:800}.upf-route-marker.start{background:#22a25a;color:#fff}.upf-route-marker.stop{background:#d7384d;color:#fff}.upf-route-marker.waypoint{width:12px;height:12px;background:#fff;color:#316aab;border-color:#316aab}.upf-route-marker.selected{width:28px;height:28px;background:#ffca28;color:#263746;border-color:#fff}.upf-waypoint-table tr.is-selected{background:#fff2b7!important;box-shadow:inset 4px 0 #f0ae00}
@media(max-width:850px){.upf-fleet.upf-app{--upf-rail:280px}.upf-app .upf-brand{width:130px;font-size:18px}.upf-app .upf-tabs button{padding:0 9px}.upf-app .upf-tabs .upf-app-filters,.upf-app .upf-tabs .upf-app-history{font-size:0}.upf-app .upf-tabs .upf-app-filters::first-letter,.upf-app .upf-tabs .upf-app-history::first-letter{font-size:16px}}
@media(max-width:640px){.upf-fleet.upf-app{--upf-rail:0px}.upf-app .upf-brand{width:105px;padding:0 8px}.upf-app .upf-tabs button[data-view]:not(.is-active){display:none}.upf-app .upf-unit-sidebar{position:absolute;right:0;top:0;bottom:0;width:min(88vw,310px);z-index:70;transform:translateX(102%);transition:.2s}.upf-app.units-open .upf-unit-sidebar{transform:none}.upf-app .upf-waypoints{right:8px;left:8px}.upf-app .upf-toolbar,.upf-app .upf-route-toolbar{max-width:calc(100vw - 20px);left:10px;right:10px;top:10px;max-height:70vh;overflow:auto}.upf-app .upf-route-toolbar{top:54px}.upf-app .upf-summary{left:54px}}
