:root{--bg: #0e1419;--panel: #161f27;--line: #26323d;--text: #dfe6ec;--muted: #8a99a6;--accent: #4ea3e0;--danger: #e0645a;--available: #2dc5a2;--en-route: #f5a623;--engaged: #e5534b;--lost: #6b7885;--lost-stroke: #a3b1bd;color-scheme:dark}:root[data-theme=light]{--bg: #f4f6f8;--panel: #ffffff;--line: #d9e0e6;--text: #17212b;--muted: #5d6b78;--accent: #1f6fad;--danger: #a5211a;--available: #0e9f7e;--en-route: #c28a00;--engaged: #a5211a;--lost: #7a8794;--lost-stroke: #5d6b78;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 system-ui,sans-serif}@media(prefers-reduced-motion:reduce){*{transition:none!important}}button,input,select{font:inherit;color:inherit}.muted{color:var(--muted)}.err,.fatal{color:var(--danger)}.fatal{padding:24px}.btn{border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:6px 12px;cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:700}.btn.ghost{background:transparent;padding:3px 9px}.link{border:0;background:none;padding:0;color:var(--accent);cursor:pointer}.brand{font-weight:800;letter-spacing:.08em}.brand span{color:var(--accent)}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:380px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:24px;display:flex;flex-direction:column;gap:12px}.login-card .brand{font-size:22px}.login-card .org{color:var(--muted);margin-top:-8px}.login-card label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:12px}.login-card input,.login-card select{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 9px;font-size:14px}.dev-picker{display:flex;flex-direction:column;gap:12px;border-top:1px dashed var(--line);padding-top:12px}.roles{display:flex;flex-direction:column;gap:6px}.roleopt{text-align:start;border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:7px 10px;cursor:pointer;display:flex;flex-direction:column}.roleopt.cur{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.roleopt small,.demo{color:var(--muted);font-size:12px}.notice{font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:10px;margin:0}.topnav{display:flex;align-items:center;gap:16px;padding:8px 16px;background:var(--panel);border-bottom:1px solid var(--line)}.topnav .sub{color:var(--muted)}.topnav nav{display:flex;gap:2px}.topnav nav button{border:0;background:none;padding:6px 10px;border-radius:6px;cursor:pointer;color:var(--muted)}.topnav nav button.cur{color:var(--text);background:var(--bg)}.topnav .right{margin-inline-start:auto;display:flex;align-items:center;gap:10px}.clock{font-variant-numeric:tabular-nums;color:var(--muted)}.avatar{width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:700}.shell{height:100vh;display:flex;flex-direction:column}.screen{flex:1;min-height:0;overflow-y:auto;padding:16px 24px}.screen h1{margin:8px 0 4px;font-size:20px}.breadcrumb{display:flex;gap:6px;align-items:center;font-size:13px}.breadcrumb button{border:0;background:none;color:var(--accent);cursor:pointer;padding:0}.breadcrumb>*+*:before{content:"›";color:var(--muted);margin-inline-end:6px}.live{display:flex;flex-direction:column;gap:6px;height:calc(100vh - 240px)}.live-stage{flex:1;position:relative;display:flex;min-height:320px}.live-map{flex:1;border:1px solid var(--line);border-radius:8px;overflow:hidden}.live .hint{margin:0;font-size:12px;color:var(--muted)}.replay-bar{display:flex;align-items:center;gap:10px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font-size:12px}.replay-bar .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.replay-bar button{border:1px solid var(--line);background:transparent;color:inherit;border-radius:6px;padding:3px 9px;cursor:pointer}.replay-bar button:disabled{cursor:default;opacity:.5}.replay-bar .live-btn[aria-pressed=true]{background:var(--available);border-color:var(--available);color:#fff;font-weight:600}.replay-bar input[type=range]{flex:1;accent-color:var(--accent)}.replay-bar .readout{min-width:48px;font-variant-numeric:tabular-nums}.replay-bar.replaying .readout,.clock.replay{color:var(--en-route);font-weight:600}.map-label{pointer-events:none;white-space:nowrap;font-size:11px;color:var(--text);text-shadow:0 0 3px var(--bg),0 0 3px var(--bg)}.map-label.district{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.map-label.station,.map-label.jurisdiction{font-weight:600}.map-label.unbeated{color:var(--muted);font-style:italic}.unit-marker{--state: var(--available);position:relative;width:22px;height:22px;padding:0;border:0;background:none;cursor:pointer}.unit-marker.en_route{--state: var(--en-route)}.unit-marker.engaged{--state: var(--engaged)}.unit-marker svg{width:100%;height:100%;overflow:visible}.unit-marker .body{fill:var(--state);stroke:var(--bg);stroke-width:1.2}.unit-marker .tyre{fill:var(--bg);stroke:var(--state);stroke-width:1.4}.unit-marker .bar{fill:none;stroke:var(--state);stroke-width:1.6}.unit-marker.conn-signal_lost .body,.unit-marker.conn-signal_lost .tyre,.unit-marker.conn-signal_lost .bar{fill:var(--bg);stroke:var(--lost-stroke);stroke-width:2;stroke-dasharray:3 2}.unit-marker.conn-signal_lost .bar{fill:none}.unit-marker .id{position:absolute;top:100%;left:50%;transform:translate(-50%);white-space:nowrap;font:600 10px/1.2 ui-monospace,monospace;color:var(--text);text-shadow:0 0 3px var(--bg),0 0 3px var(--bg)}.unit-marker.selected svg{filter:drop-shadow(0 0 1.5px var(--text)) drop-shadow(0 0 4px var(--accent))}.unit-marker.selected .id{padding:0 3px;border-radius:3px;background:var(--accent);color:var(--bg);text-shadow:none}.unit-marker:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.person-marker{--state: var(--available);position:relative;width:14px;height:14px;padding:0;border:0;background:none;cursor:pointer}.person-marker.en_route{--state: var(--en-route)}.person-marker.engaged{--state: var(--engaged)}.person-marker svg{width:100%;height:100%;overflow:visible}.person-marker .body{fill:var(--state);stroke:var(--bg);stroke-width:1.4}.person-marker.conn-signal_lost .body{fill:var(--bg);stroke:var(--lost-stroke);stroke-width:2;stroke-dasharray:3 2}.person-marker .name{position:absolute;top:50%;left:100%;margin-inline-start:3px;transform:translateY(-50%);white-space:nowrap;font-size:10px;color:var(--text);text-shadow:0 0 3px var(--bg),0 0 3px var(--bg);pointer-events:none}.person-marker.selected svg{filter:drop-shadow(0 0 1.5px var(--text)) drop-shadow(0 0 4px var(--accent))}.person-marker:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.incident-marker{position:relative;width:20px;height:20px;padding:0;border:0;background:none;cursor:pointer}.incident-marker svg{width:100%;height:100%;overflow:visible}.incident-marker .body{fill:var(--danger);stroke:var(--bg);stroke-width:1.4}.incident-marker.open svg{animation:incident-pulse 1.4s ease-in-out infinite}.incident-marker.selected svg{filter:drop-shadow(0 0 1.5px var(--text)) drop-shadow(0 0 4px var(--danger))}.incident-marker .id{position:absolute;top:100%;left:50%;transform:translate(-50%);white-space:nowrap;font:600 10px ui-monospace,monospace;color:var(--danger);text-shadow:0 0 3px var(--bg),0 0 3px var(--bg)}@keyframes incident-pulse{50%{transform:scale(1.35);opacity:.6}}@media(prefers-reduced-motion:reduce){.incident-marker.open svg{animation:none}}.sos-marker{position:relative;z-index:3;display:grid;place-items:center;width:30px;height:30px;padding:0;border:2px solid var(--bg);border-radius:50%;background:var(--danger);color:#fff;font:800 9px ui-sans-serif,system-ui,sans-serif;letter-spacing:.04em;cursor:pointer}.sos-marker .ring{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border:3px solid var(--danger);border-radius:50%;animation:sos-ring 1.1s ease-out infinite}.sos-marker.acked .ring{animation-duration:2.2s}.sos-marker.selected{box-shadow:0 0 0 2px var(--text)}.sos-marker .name{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);white-space:nowrap;font-size:11px;font-weight:700;color:var(--danger);text-shadow:0 0 3px var(--bg),0 0 3px var(--bg)}@keyframes sos-ring{0%{transform:scale(.7);opacity:1}to{transform:scale(1.5);opacity:0}}@media(prefers-reduced-motion:reduce){.sos-marker .ring{animation:none}}.backup-marker{width:16px;height:16px;border:3px solid var(--accent);border-radius:50%;background:var(--bg)}.drawer.sos{border-color:var(--danger)}.drawer dd.warn{color:var(--danger);font-weight:600}.incident-list{position:absolute;top:8px;inset-inline-start:8px;width:250px;max-height:45%;overflow:auto;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font-size:12px}.incident-list .pin[aria-pressed=true]{border-color:var(--danger);color:var(--danger);font-weight:600}.incident-list .hint{margin:6px 0 0;color:var(--muted)}.incident-list h3{margin:10px 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.incident-list ul,.drawer .assign ol{list-style:none;margin:0;padding:0}.incident-list li button{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;width:100%;padding:5px 6px;border:1px solid transparent;border-radius:6px;background:none;color:var(--text);font:inherit;text-align:start;cursor:pointer}.incident-list li button:hover,.incident-list li button[aria-pressed=true]{border-color:var(--line);background:var(--bg)}.incident-list .state,.drawer .state.incident-open,.drawer .state.incident-assigned{padding:0 6px;border-radius:999px;border:1px solid var(--state);color:var(--state);font-size:10px;font-weight:700}.state.incident-open{--state: var(--danger)}.state.incident-assigned{--state: var(--en-route)}.drawer .assign h3{margin:14px 0 6px;font-size:12px}.drawer .assign li{padding:5px 6px;border:1px solid transparent;border-radius:6px;cursor:pointer}.drawer .assign li:hover,.drawer .assign li.selected{border-color:var(--line);background:var(--bg)}.drawer .assign .top{display:flex;align-items:center;gap:6px}.drawer .assign .rank{color:var(--muted);font-size:11px}.drawer .assign li b{font-family:ui-monospace,monospace}.drawer .assign li .btn{margin-inline-start:auto;padding:2px 10px;font-size:12px}.rec-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.rec-chips span{padding:0 6px;border:1px solid var(--line);border-radius:999px;font-size:11px}.rec-chips .good{border-color:var(--available);color:var(--available)}.rec-chips .warn{border-color:var(--danger);color:var(--danger)}.rec-chips .state{border-color:var(--state);color:var(--state)}.drawer .closing{display:flex;flex-direction:column;gap:8px;margin-top:12px}.drawer .closing input{padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--text);font:inherit}.drawer .closing input[aria-invalid=true]{border-color:var(--danger)}.drawer>.btn{margin-top:12px}.station-pill{display:flex;align-items:center;gap:6px;padding:3px 8px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text);font-size:11px;white-space:nowrap;cursor:pointer}.station-pill:hover{border-color:var(--accent)}.station-pill .name{font-weight:600}.station-pill .n:before,.drawer .chip i{content:"";display:inline-block;width:7px;height:7px;margin-inline-end:3px;border-radius:50%;background:var(--state)}.station-pill .n.available{--state: var(--available)}.station-pill .n.en_route{--state: var(--en-route)}.station-pill .n.engaged{--state: var(--engaged)}.station-pill .duty{color:var(--muted)}.drawer{position:absolute;top:8px;inset-inline-end:8px;width:300px;max-height:calc(100% - 16px);overflow:auto;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font-size:13px}.drawer header{display:flex;justify-content:space-between;align-items:flex-start}.drawer h2{margin:0;font:700 16px ui-monospace,monospace}.drawer header p{margin:2px 0 0}.drawer dl{margin:10px 0 0}.drawer dt{margin-top:10px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.drawer dd{margin:3px 0 0}.drawer .pills,.drawer .chips{display:flex;flex-wrap:wrap;gap:6px}.drawer .state{padding:1px 8px;border-radius:999px;border:1px solid var(--state);color:var(--state);font-size:12px;font-weight:600}.drawer .state.available,.drawer.unit-available .chip{--state: var(--available)}.drawer.unit-en_route .chip{--state: var(--en-route)}.drawer.unit-engaged .chip{--state: var(--engaged)}.drawer .state.en_route{--state: var(--en-route)}.drawer .state.engaged{--state: var(--engaged)}.drawer .state.conn-live{--state: var(--text)}.drawer .state.conn-signal_lost{--state: var(--lost);border-style:dashed}.drawer .chip{padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--text);font:inherit;cursor:pointer}.drawer .chip:hover,.drawer .chip[aria-pressed=true]{border-color:var(--accent)}.officer-card{margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}.officer-card h3{margin:0 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--accent)}.officer-card p{margin:0}.officer-card dl{margin-top:0}.drawer .chip.conn-signal_lost i{background:none;border:1.5px dashed var(--lost)}.drawer .chip.conn-off_duty{color:var(--muted)}.drawer .chip.conn-off_duty i{background:none;border:1px solid var(--muted)}.legend{position:absolute;bottom:8px;inset-inline-start:8px;display:flex;flex-wrap:wrap;gap:4px 12px;max-width:calc(100% - 340px);margin:0;padding:6px 10px;list-style:none;border:1px solid var(--line);border-radius:8px;background:var(--panel);font-size:11px;color:var(--muted)}.legend li{display:flex;align-items:center;gap:4px}.legend .unit-marker{width:16px;height:16px;cursor:default}.legend .unit-marker.incident .body{fill:var(--danger)}.legend .toggle{padding:1px 8px;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.legend .toggle[aria-pressed=true]{border-color:var(--accent)}.kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:8px 0}.kpi{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);font:inherit;text-align:start;cursor:pointer}.kpi:hover,.kpi.on{border-color:var(--accent)}.kpi.on{box-shadow:inset 0 0 0 1px var(--accent)}.kpi .value{font-size:22px;font-weight:700}.kpi .label{font-size:12px;color:var(--muted)}.kpi .sub{font-size:11px;color:var(--muted)}.kpi.alert{border-color:var(--danger)}.kpi.alert .value{color:var(--danger)}.live-filters .filter-line{display:flex;align-items:center;gap:10px;margin:0 0 6px;font-size:12px}.live-filters .chip{padding:2px 10px;border:1px solid var(--accent);border-radius:999px;background:var(--panel);color:var(--text);font:inherit;cursor:pointer}.dash-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.dash-head p{margin:0}.dash-body{display:grid;grid-template-columns:minmax(340px,2fr) 3fr;gap:12px;align-items:start}.screen.fill{display:flex;flex-direction:column;overflow:hidden;padding-bottom:0}.screen.fill>.dashboard,.screen.fill>.personnel{flex:1;min-height:0;display:flex;flex-direction:column}.screen.fill .dash-body,.screen.fill .roster-body{flex:1;min-height:0;grid-auto-rows:minmax(0,1fr);align-items:stretch}.screen.fill .dash-body>*,.screen.fill .roster-body>*{min-height:0;overflow-y:auto;align-content:start;padding-bottom:16px}.cards,.widgets{display:grid;gap:10px}.widgets{grid-template-columns:repeat(2,minmax(0,1fr))}.card,.widget{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font-size:13px}.card.focus{border-color:var(--accent)}.card header{display:flex;justify-content:space-between;align-items:baseline;font-weight:600}.card ul{margin:6px 0 0;padding:0;list-style:none}.card .row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:3px 4px;border-top:1px solid var(--line)}.card .row.focus{background:var(--bg);box-shadow:inset 2px 0 0 var(--accent)}.card .row.outside{color:var(--muted);opacity:.6}.card .facts{display:flex;align-items:center;gap:6px;color:var(--muted);white-space:nowrap}.badge{padding:0 6px;border:1px solid var(--line);border-radius:999px;font-size:11px}.badge.alert{border-color:var(--danger);color:var(--danger)}.avail-bar{display:flex;height:6px;margin-top:6px;border-radius:3px;overflow:hidden;background:var(--line)}.avail-bar i,.dots i{background:var(--state)}.avail-bar .available,.dots .available{--state: var(--available)}.avail-bar .en_route,.dots .en_route{--state: var(--en-route)}.avail-bar .engaged,.dots .engaged{--state: var(--engaged)}.dots{display:inline-flex;align-items:center;gap:2px}.dots i{width:6px;height:6px;border-radius:50%}.widget.wide{grid-column:1 / -1}.widget h2{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.widget .big{margin:0;font-size:22px;font-weight:700}.widget .big .muted{font-size:12px;font-weight:400}.widget dl{display:grid;grid-template-columns:1fr auto;gap:4px 12px;margin:8px 0 0}.widget dd{margin:0;text-align:end}.widget .rows{margin:8px 0 0;padding:0;list-style:none}.widget .rows li{display:flex;justify-content:space-between;padding:2px 0}.sparkline{display:block;width:100%;height:44px;margin-top:6px}.widget .big.flow{display:flex;gap:14px}.hour-bars{display:block;width:100%;height:40px;margin-top:6px;border-bottom:1px solid var(--line)}.hour-bars path{fill:var(--accent);pointer-events:none}.hour-bars .hit{fill:transparent}.hour-bars g:hover path{opacity:.75}.sparkline path{fill:none;stroke:var(--accent);stroke-width:1.5}.exception-queue{position:absolute;top:8px;inset-inline-start:266px;width:330px;max-height:46%;display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-size:12px}.exception-queue>.btn{background:var(--panel)}.exception-queue .panel{align-self:stretch;overflow:auto;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.exception-queue h3{margin:0 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.exception-list{list-style:none;margin:0;padding:0}.exception-list li button,.exception-list li .row{display:grid;grid-template-columns:1fr auto;gap:2px 8px;width:100%;padding:5px 6px;border:1px solid transparent;border-radius:6px;background:none;color:var(--text);font:inherit;text-align:start;cursor:pointer}.exception-list li button:hover{border-color:var(--line);background:var(--bg)}.exception-list .type{grid-row:1;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.exception-list .type.tracking{color:var(--en-route)}.exception-list .type.custody,.exception-list .type.sos{color:var(--danger)}.exception-list .type.backup{color:var(--accent)}.exception-list li.alarm button{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent)}.exception-list .age{grid-row:1;grid-column:2;font:11px ui-monospace,monospace;color:var(--muted)}.exception-list .muted{grid-column:1 / -1}.widget .exception-list{max-height:320px;overflow:auto}.unit-marker.flagged:before{content:"";position:absolute;top:-7px;right:-7px;bottom:-7px;left:-7px;border:1.5px dashed var(--en-route);border-radius:50%;pointer-events:none}.personnel .dash-head .chip{margin-inline-end:auto;padding:2px 10px;border:1px solid var(--accent);border-radius:999px;background:var(--panel);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.personnel .dash-head p{margin-inline-end:auto}.roster-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.roster-side{display:grid;gap:12px}.roster{margin:0;padding:0;list-style:none;max-height:60vh;overflow:auto}.roster li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px;border-top:1px solid var(--line)}.roster li.leave{background:color-mix(in srgb,var(--en-route) 10%,transparent)}.roster .name{font-weight:600}.roster .detail{flex-basis:100%;padding-inline-start:16px;font-size:12px}.roster .dot{width:8px;height:8px;border-radius:50%;background:var(--state, var(--lost));border:1.5px solid var(--state, var(--lost))}.roster .dot.available{--state: var(--available)}.roster .dot.en_route{--state: var(--en-route)}.roster .dot.engaged{--state: var(--engaged)}.roster .dot.house{--state: var(--accent)}.roster .dot.leave{--state: var(--en-route)}.roster .dot.hollow{background:none;border-style:dashed;border-color:var(--lost-stroke)}.badge.warn{border-color:var(--en-route);color:var(--en-route);font-weight:700}.posture{display:flex;flex-wrap:wrap;gap:18px}.widget .big.warn{color:var(--en-route)}.widget .big.alert{color:var(--danger)}.widget .note{margin:8px 0 0;font-size:12px}.roster .order-call,.roster .order-chips,.roster .order-menu{margin-inline-start:auto}.btn.order-call{padding:1px 8px;font-size:12px}.order-menu{display:grid;gap:4px;min-width:220px;padding:8px;border:1px solid var(--accent);border-radius:6px;background:var(--panel)}.order-menu p{margin:0 0 2px;font-size:12px}.order-menu button{padding:4px 8px;border:1px solid var(--line);border-radius:4px;background:none;color:var(--text);font:inherit;font-size:12px;text-align:start;cursor:pointer}.order-menu button:hover:not(:disabled){border-color:var(--accent)}.order-menu button.ghost{color:var(--muted)}.order-chips{display:inline-flex;flex-wrap:wrap;gap:4px}.order-chip{padding:0 6px;border:1px solid var(--accent);border-radius:999px;color:var(--accent);font-size:11px;font-weight:700;white-space:nowrap}.order-chip.new{border-color:var(--en-route);color:var(--en-route)}.order-chip.en_route{border-color:var(--en-route);background:color-mix(in srgb,var(--en-route) 15%,transparent);color:var(--text)}.order-chip.arrived{border-color:var(--available);color:var(--available)}.officer-card .order-call,.officer-card .order-menu,.officer-card .order-chips{margin-top:8px}.rostering .dash-head p:first-child{margin-inline-end:auto}.kpi.static{cursor:default}.kpi.static:hover{border-color:var(--line)}.rostering-body{display:grid;grid-template-columns:minmax(280px,330px) minmax(0,1fr);gap:12px;align-items:start}.rostering-side{display:grid;gap:12px;min-width:0}.deviations .dot.crit{--state: var(--danger)}.deviations .dot.warn{--state: var(--en-route)}.rostering .actions{display:flex;gap:8px;margin-top:10px}.rostering .btn:disabled{opacity:.45;cursor:default}.rform{display:flex;flex-direction:column;gap:10px}.rform fieldset{display:flex;flex-direction:column;gap:6px;margin:0;padding:8px 10px 10px;border:1px solid var(--line);border-radius:8px}.rform legend{padding:0 4px;color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.rform .fr{display:flex;align-items:center;gap:8px}.rform .fr span{flex:1}.rform small{font-size:11px}.rform input[type=number],.rform select{padding:2px 6px;border:1px solid var(--line);border-radius:6px;background:var(--bg);font-family:ui-monospace,monospace}.rform input[type=number]{width:64px}.rostering .small{margin:0;font-size:11px}.rostering .warn{color:var(--en-route)}.rostering .ok{color:var(--available)}.pubchip{padding:2px 10px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.05em;white-space:nowrap}.pubchip.none{background:var(--bg);color:var(--muted)}.pubchip.draft{background:color-mix(in srgb,var(--en-route) 18%,transparent);color:var(--en-route)}.pubchip.published{background:color-mix(in srgb,var(--available) 18%,transparent);color:var(--available)}.gapstrip{display:flex;flex-wrap:wrap;gap:4px 10px;margin:0 0 8px;font-size:12px}.gapstrip i{font-style:normal;font-family:ui-monospace,monospace}.rtabwrap{max-height:65vh;overflow:auto}.rtab{width:100%;border-collapse:collapse;font-size:12px}.rtab th{position:sticky;top:0;z-index:1;padding:6px 8px;border-bottom:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.08em;text-align:start;text-transform:uppercase;white-space:nowrap}.rtab td{padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:middle}.rtab .today{background:color-mix(in srgb,var(--accent) 8%,var(--panel))}.rtab td.pr{white-space:nowrap}.rtab .sub{font-family:ui-monospace,monospace;font-size:10.5px}.shf{display:inline-flex;flex-direction:column;padding:2px 7px;border-radius:6px;font-family:ui-monospace,monospace;font-size:10.5px;line-height:1.3;white-space:nowrap}.shf b{font-weight:600}.shf.wo{color:var(--muted)}.shf.s0{background:color-mix(in srgb,var(--available) 14%,transparent);color:var(--available)}.shf.s1{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.shf.s2{background:color-mix(in srgb,var(--en-route) 16%,transparent);color:var(--en-route)}.shf.s3{background:color-mix(in srgb,var(--muted) 18%,transparent);color:var(--text)}.appprev{padding:8px 10px;border:1px dashed var(--line);border-radius:8px;background:var(--bg)}.appprev .cap{margin-bottom:6px;color:var(--muted);font-size:11px}.appprev .wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.appprev .dayc{display:flex;flex-direction:column;padding:4px 6px;border:1px solid var(--line);border-radius:6px;font-size:11px}.appprev .dayc.today{border-color:var(--accent)}.vehicles .dash-head p:first-child{margin-inline-end:auto}.vehicles-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.vtabwrap{max-height:65vh;overflow:auto}.vtab{width:100%;border-collapse:collapse;font-size:13px}.vtab th{position:sticky;top:0;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.1em;text-align:start;text-transform:uppercase}.vtab td{padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:top}.vtab .mono{font-family:ui-monospace,monospace}.vtab .sub{margin-top:2px;color:var(--muted);font-family:ui-monospace,monospace;font-size:11px}.vtab tr.click{cursor:pointer}.vtab .link{text-align:start;white-space:nowrap}.vtab tr.click:hover td{background:color-mix(in srgb,var(--accent) 6%,var(--panel))}.vtab td.overdue{color:var(--danger)}.vtab td.due_soon{color:var(--en-route)}.badge.ok{border-color:var(--available);color:var(--available)}.vform{display:flex;flex-wrap:wrap;align-items:end;gap:10px}.vform label{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:11px}.vform .err{flex-basis:100%;margin:0}.counter .dash-head p:first-child{margin-inline-end:auto}.counter-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.counter-body .col{display:flex;flex-direction:column;gap:12px;min-width:0}.aform{display:flex;flex-direction:column;gap:10px}.aform label{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:11px}.aform .row{display:flex;flex-wrap:wrap;align-items:end;gap:10px}.aform.row{flex-direction:row}.aform .err,.aform p{margin:0}.aform.inline{margin-top:8px}.seg{display:inline-flex;align-self:start;border:1px solid var(--line);border-radius:6px;overflow:hidden}.seg button{padding:5px 14px;border:0;background:transparent;color:var(--muted);cursor:pointer}.seg button.cur{background:var(--accent);color:#fff}.tlist{margin:0;padding:0;list-style:none}.tlist li{padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}.tlist li:last-child{border-bottom:0}.tlist .sub{margin-top:2px;color:var(--muted);font-size:11px}.tlist .sub.overdue{color:var(--danger);font-weight:600}.tlist .btn{margin-top:6px}.pill{padding:0 7px;border:1px solid var(--line);border-radius:999px;font-size:11px}.pill.issue,.pill.allocation{border-color:var(--accent);color:var(--accent)}.pill.return{border-color:var(--available);color:var(--available)}.pill.repair_in,.pill.repair_out{border-color:var(--en-route);color:var(--en-route)}.counter .widget h2+.vtab{margin-bottom:12px}@media(max-width:1100px){.counter-body{grid-template-columns:minmax(0,1fr)}}.avail-bar .in_store{--state: var(--available)}.avail-bar .out{--state: var(--accent)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--state)}.status-dot.ok,.health.ok{--state: var(--available)}.status-dot.warn,.health.warn,.armory .warn{--state: var(--en-route)}.status-dot.crit,.health.crit{--state: var(--danger)}.health,.armory .warn{color:var(--state)}.widget .health .muted,.armory .warn .muted{color:var(--muted)}.widget .axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.armory-marker{--state: var(--available);padding:0;border:0;background:none;color:var(--text);cursor:pointer}.armory-marker.health-warn,.armory-drawer .health-warn,.drawer .state.health-warn{--state: var(--en-route)}.armory-marker.health-crit,.drawer .state.health-crit{--state: var(--danger)}.drawer .state.health-ok{--state: var(--available)}.armory-marker svg{width:100%;height:100%;overflow:visible}.armory-marker .body{fill:var(--state);stroke:var(--bg);stroke-width:1}.armory-marker.glyph{width:24px;height:24px;border-radius:50%}.armory-marker.glyph.custody{outline:2px dashed var(--danger);outline-offset:2px}.armory-marker.pill{display:flex;align-items:center;gap:6px;padding:3px 8px;border:1px solid var(--state);border-radius:999px;background:var(--panel);font-size:11px;white-space:nowrap}.armory-marker.pill.custody{border:2px dashed var(--danger)}.armory-marker.pill .name{font-weight:600}.armory-marker.pill .n{display:inline-flex;align-items:center;gap:2px}.armory-marker.pill .n svg{width:13px;height:13px}.armory-marker.pill .n .body{fill:var(--muted);stroke:none}.armory-marker.pill .ammo{color:var(--state)}.armory-marker.pill .ammo.health-ok{--state: var(--available)}.armory-marker.pill .ammo.health-warn{--state: var(--en-route)}.armory-marker.pill .ammo.health-crit{--state: var(--danger)}.armory-marker.pill .ammo .body{fill:var(--state)}.armory-marker.dim{opacity:.35}.armory-marker.selected{filter:drop-shadow(0 0 1.5px var(--text)) drop-shadow(0 0 4px var(--accent))}.armory-marker:focus-visible,.armed-marker:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.armed-marker,.legend .armory-marker.armed{--state: var(--accent)}.armed-marker{position:relative;width:26px;height:26px;padding:0;border:0;background:none;cursor:pointer}.armed-marker svg{width:100%;height:100%;overflow:visible}.armed-marker .body{fill:var(--state);stroke:var(--bg);stroke-width:1}.armed-marker .id{position:absolute;top:100%;left:50%;transform:translate(-50%);white-space:nowrap;font:600 10px/1.2 ui-monospace,monospace;text-shadow:0 0 3px var(--bg),0 0 3px var(--bg)}.armed-marker.selected svg{filter:drop-shadow(0 0 1.5px var(--text)) drop-shadow(0 0 4px var(--accent))}.legend .armory-marker.glyph{width:16px;height:16px;cursor:default}.legend .armory-marker.glyph.custody{outline-width:1.5px;outline-offset:1px}.armory-drawer h3{margin:14px 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.armory-drawer .pills{margin:10px 0 0}.armory-drawer .rows,.armory-log,.issued-drawer .plain{margin:0;padding:0;list-style:none}.armory-drawer .rows li{display:flex;justify-content:space-between;gap:8px;padding:2px 0}.armory-log li{display:grid;grid-template-columns:1fr auto;gap:0 8px;padding:4px 0;border-top:1px solid var(--line)}.armory-log li .muted{grid-column:1 / -1;font-size:12px}.armory-log .badge.return{color:var(--available)}.map-err{position:absolute;top:8px;inset-inline-start:50%;transform:translate(-50%)}.ask{margin:8px 0 4px}.ask form{display:flex;gap:8px;align-items:center}.ask input{flex:1;max-width:640px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:inherit;font:inherit}.ask input:disabled{color:var(--muted)}.ask-answer{margin-top:8px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);max-height:45vh;overflow:auto}.ask-answer header{display:flex;gap:8px;align-items:flex-start;justify-content:space-between}.ask-answer header p{margin:0;display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}.ask-answer .chip{padding:1px 8px;border:1px solid var(--line);border-radius:10px;font-size:12px}.ask .btn:disabled{opacity:.5;cursor:default}
