:root{--cs-navy: #0f2b46;--cs-navy-dk: #3b5068;--cs-navy-md: #4b5e71;--cs-blue: #1a6db0;--cs-blue-hover: #2480c8;--cs-blue-pressed: #155a91;--cs-slate: #94a3b8;--cs-ice: #d1d9e2;--cs-bg: #f5f7fa;--cs-panel: #ffffff;--cs-panel-2: #f8fafc;--cs-text: #0f2b46;--cs-text-2: #4b5e71;--cs-text-3: #94a3b8;--cs-divider: #e2e8f0;--cs-ok: #16a34a;--cs-warn: #f59e0b;--cs-err: #dc2626;--cs-crit: #991b1b;--cs-p1: #dc2626;--cs-p2: #ea580c;--cs-p3: #d97706;--cs-p4: #2563eb;--cs-p5: #64748b;--cs-shadow-sm: 0 1px 2px rgba(15,43,70,.06);--cs-shadow: 0 2px 8px rgba(15,43,70,.08), 0 1px 2px rgba(15,43,70,.05);--cs-shadow-lg: 0 10px 24px rgba(15,43,70,.12), 0 2px 4px rgba(15,43,70,.06);--cs-radius: 10px;--cs-radius-sm: 6px}html.dark{--cs-navy: #000000;--cs-navy-dk: #000000;--cs-navy-md: #0a0a0a;--cs-blue: #3d9be0;--cs-blue-hover: #56adea;--cs-blue-pressed: #2a86c7;--cs-slate: #8c98a8;--cs-bg: #000000;--cs-panel: #0d0d0d;--cs-panel-2: #141414;--cs-text: #f1f5f9;--cs-text-2: #cbd5e1;--cs-text-3: #94a3b8;--cs-divider: #1f1f1f;--cs-ok: #22c55e;--cs-warn: #fbbf24;--cs-err: #ef4444;--cs-crit: #b91c1c;--cs-shadow-sm: 0 0 0 1px #1f1f1f;--cs-shadow: 0 0 0 1px #1f1f1f, 0 4px 14px rgba(0,0,0,.6);--cs-shadow-lg: 0 0 0 1px #1f1f1f, 0 12px 28px rgba(0,0,0,.7)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:"Source Sans 3",-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--cs-bg);color:var(--cs-text);font-size:14px;-webkit-font-smoothing:antialiased}.font-display{font-family:IBM Plex Sans,sans-serif;font-weight:700;letter-spacing:-.01em}.font-mono{font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}.cs-header{background:var(--cs-navy);color:#fff;height:56px;display:flex;align-items:center;padding:0 16px;border-bottom:1px solid rgba(255,255,255,.06);position:sticky;top:0;z-index:50;min-width:0}.cs-header .right{min-width:0;flex-shrink:1}.cs-header .brand{display:flex;align-items:center;gap:10px}.cs-header .brand-name{font-family:IBM Plex Sans;font-weight:700;font-size:15px;letter-spacing:.02em}.cs-header .brand-name span{color:var(--cs-blue)}html.dark .cs-header .brand-name span{color:#3d9be0}.cs-header nav{display:flex;gap:4px;margin-left:24px}.cs-header nav button{background:transparent;color:#cbd5e1;border:0;padding:8px 12px;border-radius:6px;font-size:13px;font-weight:500;display:flex;align-items:center;gap:6px}.cs-header nav button:hover{background:#ffffff14;color:#fff}.cs-header nav button.active{background:#1a6db040;color:#fff}html.dark .cs-header nav button.active{background:#3d9be033}.cs-header .right{margin-left:auto;display:flex;align-items:center;gap:8px}.cs-header .icon-btn{background:transparent;border:0;color:#cbd5e1;width:36px;height:36px;border-radius:6px;display:flex;align-items:center;justify-content:center}.cs-header .icon-btn:hover{background:#ffffff14;color:#fff}.cs-header .clock{font-family:IBM Plex Mono;font-size:13px;color:#cbd5e1;padding:0 10px}.cs-header .new-call-btn{background:var(--cs-blue);color:#fff;border:0;padding:7px 14px;border-radius:6px;font-size:13px;font-weight:700;display:inline-flex;align-items:center;gap:6px;margin-right:8px}.cs-header .new-call-btn:hover{background:var(--cs-blue-hover)}html.dark .cs-header .new-call-btn{background:#3d9be0;color:#000}html.dark .cs-header .new-call-btn:hover{background:#56adea}@media (max-width: 1600px){.cs-header{padding:0 10px;gap:4px}.cs-header nav{margin-left:12px;gap:2px}.cs-header nav button{padding:7px 9px;font-size:12px}.cs-header .right{gap:5px}.cs-header .clock{padding:0 6px;font-size:12px}.cs-header .new-call-btn{padding:6px 10px;font-size:12px;margin-right:0}.cs-header .new-call-btn .kbd-hint{display:none}.cs-header .user-chip{padding:3px 8px 3px 3px}.cs-header .user-chip .avatar{width:26px;height:26px;font-size:10px}.cs-header .user-chip .name{font-size:12px}.cs-header .user-chip .role{font-size:10px}.cs-header .icon-btn{width:32px;height:32px}}@media (max-width: 1440px){.cs-header .brand-name,.cs-header .clock{display:none}.cs-header nav button{padding:6px 7px;font-size:11px}}@media (max-width: 1280px){.cs-header .user-chip>div:not(.avatar){display:none}.cs-header .user-chip{padding:3px;gap:4px}}.kbd-hint{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:700;line-height:1;letter-spacing:.02em;border-radius:4px;background:#ffffff38;color:inherit;border:1px solid rgba(255,255,255,.32);box-shadow:inset 0 -1px #0000002e}.cs-header .new-call-btn .kbd-hint{margin-left:6px}.modal .kbd-hint,.tbl .kbd-hint,.modal-f .kbd-hint{background:var(--cs-panel-2);color:var(--cs-text);border-color:var(--cs-divider);box-shadow:inset 0 -1px #0f2b4614}html.dark .modal .kbd-hint,html.dark .tbl .kbd-hint,html.dark .modal-f .kbd-hint{background:#1a1a1a;color:var(--cs-text);border-color:#2a2a2a}.new-call-modal{max-height:95vh}.new-call-modal .modal-h{padding:14px 20px}.new-call-modal .modal-h h3{margin:0;font-size:16px}.new-call-modal .modal-b{padding:16px 20px;background:var(--cs-panel-2)}.new-call-modal .card{box-shadow:none;margin-bottom:12px}.new-call-modal .card-h{padding:10px 14px;font-size:12px}.new-call-modal .card-b{padding:14px}.new-call-modal .modal-f{padding:12px 20px}.cs-header .user-chip{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;background:#ffffff0d;border-radius:999px;border:1px solid rgba(255,255,255,.08)}.cs-header .user-chip .avatar{width:28px;height:28px;border-radius:50%;background:var(--cs-blue);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px}.cs-header .user-chip .name{font-size:13px;font-weight:500}.cs-header .user-chip .role{font-size:11px;color:#94a3b8}.cs-login{height:100vh;display:flex}.cs-login-left{flex:1;min-width:0;background:linear-gradient(135deg,#0f2b46,#3b5068,#4b5e71);color:#fff;display:flex;align-items:center;justify-content:center;padding:48px;position:relative;overflow:hidden}.cs-login-left:before{content:"";position:absolute;inset:0;background:radial-gradient(60% 50% at 20% 20%,rgba(26,109,176,.18),transparent 60%);pointer-events:none}.cs-login-brand{position:relative;z-index:1;max-width:460px}.cs-login-brand .logo{width:72px;height:72px;margin-bottom:24px}.cs-login-brand h1{font-family:IBM Plex Sans;font-weight:800;font-size:36px;line-height:1.1;margin:0 0 12px}.cs-login-brand h1 .accent{color:#3d9be0}.cs-login-brand .tag{font-size:17px;color:#ffffffb3;margin:0 0 32px}.cs-login-brand .suite{display:flex;gap:6px;flex-wrap:wrap;font-size:12px;color:#ffffff8c}.cs-login-brand .suite span{padding:4px 10px;background:#ffffff0f;border-radius:999px;border:1px solid rgba(255,255,255,.08)}.cs-login-brand .suite span.current{background:#3d9be02e;color:#fff;border-color:#3d9be066}.cs-login-right{width:460px;background:var(--cs-navy);color:#fff;display:flex;align-items:center;justify-content:center;padding:48px;border-left:1px solid rgba(255,255,255,.06)}.cs-login-right .panel{width:100%;max-width:380px}.cs-login-right h2{font-family:IBM Plex Sans;font-weight:800;font-size:28px;margin:0 0 6px}.cs-login-right .sub{font-size:14px;color:#ffffff8c;margin:0 0 24px}.cs-login-right .sso-pill{display:inline-flex;align-items:center;gap:6px;background:#3d9be029;color:#cdebff;border:1px solid rgba(61,155,224,.4);padding:4px 12px;border-radius:999px;font-size:12px;font-weight:500;margin-bottom:20px}.cs-login-right label{display:block;font-size:12px;color:#fff9;font-weight:600;margin:12px 0 6px;letter-spacing:.04em;text-transform:uppercase}.cs-login-right select,.cs-login-right input{width:100%;padding:11px 12px;border-radius:8px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#fff;font-size:14px}.cs-login-right select:focus,.cs-login-right input:focus{border-color:#3d9be0;outline:none}.cs-login-right .cb-input{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#fff;padding:11px 32px 11px 12px;font-size:14px;border-radius:8px}.cs-login-right .cb-input:focus{border-color:#3d9be0;box-shadow:0 0 0 3px #3d9be033}.cs-login-right .cb-caret{color:#ffffff8c;right:12px}.cs-login-right .cb-popover{background:var(--cs-navy);border-color:#ffffff2e}.cs-login-right .cb-opt{color:#fff;font-size:13px}.cs-login-right .cb-opt.highlighted{background:#3d9be040}.cs-login-right .cb-opt.current{color:#3d9be0}.cs-login-right .signin{width:100%;margin-top:18px;padding:12px;background:var(--cs-blue);border:0;color:#fff;font-weight:700;border-radius:8px;font-size:14px}.cs-login-right .signin:hover{background:var(--cs-blue-hover)}.cs-login-right .footer-note{font-size:11px;color:#fff6;text-align:center;margin-top:24px}.app-shell{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-body{flex:1;min-height:0;overflow:auto;background:var(--cs-bg)}.map-shell{display:flex;flex-direction:column;height:calc(100vh - 56px);background:var(--cs-bg)}.map-topbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--cs-panel);border-bottom:1px solid var(--cs-divider);flex-shrink:0}.map-topbar .search-wrap{flex:1;max-width:540px;position:relative}.map-topbar .search-wrap input{width:100%;padding:7px 10px 7px 32px;font-size:13px;border-radius:6px;border:1px solid var(--cs-divider);background:var(--cs-panel);color:var(--cs-text)}.map-topbar .search-wrap svg{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:var(--cs-text-3)}.map-topbar .coords-input{width:200px}.map-topbar .topbar-actions{margin-left:auto;display:flex;gap:6px;align-items:center}.map-main{flex:1;min-height:0;display:grid;grid-template-columns:260px 1fr 340px;gap:1px;background:var(--cs-divider);overflow:hidden}.map-main.no-right{grid-template-columns:260px 1fr}.map-side{background:var(--cs-panel);overflow:auto;display:flex;flex-direction:column}.map-center{background:var(--cs-panel);position:relative}.map-section{padding:10px 12px;border-bottom:1px solid var(--cs-divider)}.map-section h4{margin:0 0 6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cs-text-3)}.map-section .row-line{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:12px;padding:2px 0}.map-section .row-line .lbl{color:var(--cs-text-2)}.map-section .row-line .val{font-weight:600}.validation-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:700}.validation-badge.validated{background:#16a34a1f;color:var(--cs-ok)}.validation-badge.approximate{background:#f59e0b1f;color:#92400e}html.dark .validation-badge.approximate{color:#fbbf24}.validation-badge.unverified{background:#dc26261f;color:var(--cs-err)}.validation-badge.common-place{background:#1a6db01f;color:var(--cs-blue)}.validation-badge.coordinates{background:#7c3aed1f;color:#7c3aed}.validation-badge.outside{background:#dc26262e;color:var(--cs-err);border:1px dashed var(--cs-err)}.confidence-bar{height:6px;background:var(--cs-divider);border-radius:4px;overflow:hidden;margin:4px 0}.confidence-bar .fill{height:100%}.confidence-bar .fill.high{background:var(--cs-ok)}.confidence-bar .fill.medium{background:var(--cs-warn)}.confidence-bar .fill.low{background:var(--cs-err)}.nearby-unit-row{display:grid;grid-template-columns:70px 1fr 60px;gap:8px;padding:6px 0;align-items:center;font-size:12px;border-bottom:1px dashed var(--cs-divider)}.nearby-unit-row .badge{font-family:IBM Plex Mono;font-weight:700;font-size:11px;padding:3px 6px;border-radius:4px;color:#fff;text-align:center}.nearby-unit-row .dist{text-align:right;font-family:IBM Plex Mono;font-size:11px;color:var(--cs-text-3)}.prior-call-row{padding:6px 0;border-bottom:1px dashed var(--cs-divider);font-size:12px}.prior-call-row .pri{display:inline-block;padding:1px 5px;border-radius:3px;color:#fff;font-weight:700;font-size:10px;font-family:IBM Plex Mono;margin-right:4px}.map-alert-strip{background:var(--cs-navy);color:#fff;padding:6px 14px;font-size:12px;display:flex;gap:14px;align-items:center;flex-shrink:0;border-top:1px solid rgba(255,255,255,.06);flex-wrap:wrap}.map-alert-strip .pill{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;font-weight:600;font-size:11px}.map-alert-strip .pill.crit{background:#dc262640;color:#fca5a5}.map-alert-strip .pill.warn{background:#f59e0b38;color:#fcd34d}.map-alert-strip .pill.info{background:#3d9be038;color:#93c5fd}.map-alert-strip .pill.ok{background:#16a34a38;color:#86efac}.layer-toggle{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:12px;cursor:pointer}.layer-toggle input{margin:0}.layer-toggle .swatch{width:10px;height:10px;border-radius:2px;display:inline-block}.board-shell{display:flex;flex-direction:column;height:calc(100vh - 56px);background:var(--cs-bg)}.board-tabs{display:flex;gap:2px;padding:6px 12px 0;background:var(--cs-panel-2);border-bottom:1px solid var(--cs-divider);overflow-x:auto;flex-shrink:0}.board-tabs button{background:transparent;border:0;padding:8px 12px;font-size:12px;font-weight:600;color:var(--cs-text-2);border-bottom:2px solid transparent;white-space:nowrap;cursor:pointer;display:flex;align-items:center;gap:5px}.board-tabs button:hover{color:var(--cs-text)}.board-tabs button.active{color:var(--cs-blue);border-bottom-color:var(--cs-blue)}.board-tabs button .tab-count{background:var(--cs-divider);color:var(--cs-text-2);padding:0 6px;border-radius:10px;font-size:10px;font-weight:700;min-width:18px;text-align:center}.board-tabs button.active .tab-count{background:var(--cs-blue);color:#fff}.board-tabs button.danger-tab .tab-count{background:var(--cs-err);color:#fff}.board-search-row{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--cs-panel);border-bottom:1px solid var(--cs-divider);flex-shrink:0}.board-search-row .search-input{flex:1;max-width:480px;position:relative}.board-search-row .search-input input{width:100%;padding:6px 10px 6px 30px;border:1px solid var(--cs-divider);border-radius:6px;background:var(--cs-panel);color:var(--cs-text);font-size:13px}.board-search-row .search-input svg{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:var(--cs-text-3)}.board-search-row .right-chips{margin-left:auto;display:flex;gap:6px;align-items:center}.board-search-row .alert-pill{display:flex;align-items:center;gap:4px;padding:4px 10px;background:#dc26261a;color:var(--cs-err);border:1px solid rgba(220,38,38,.3);border-radius:999px;font-size:11px;font-weight:700}.board-search-row .alert-pill.none{background:#16a34a14;color:var(--cs-ok);border-color:#16a34a40}.board-main{flex:1;min-height:0;display:grid;grid-template-columns:200px 1fr var(--drawer-w, 520px);gap:1px;background:var(--cs-divider);overflow:hidden}.board-main.no-drawer{grid-template-columns:200px 1fr}.board-filters-pane{background:var(--cs-panel);overflow:auto;padding:4px 0}.board-table-pane{background:var(--cs-panel);overflow:auto}.board-drawer-pane{background:var(--cs-panel);overflow:hidden;display:flex;flex-direction:column;position:relative}.drawer-resize{position:absolute;left:-3px;top:0;bottom:0;width:6px;cursor:ew-resize;z-index:5;background:transparent}.drawer-resize:hover{background:#1a6db040}.drawer-resize.dragging{background:#1a6db073}.drawer-fullscreen{position:fixed;inset:56px 0 0;z-index:80;background:var(--cs-panel);display:flex;flex-direction:column}.drawer-fullscreen .drawer-resize{display:none}.board-table{width:100%;border-collapse:collapse;font-size:12px}.board-table thead th{background:var(--cs-panel-2);padding:6px 10px;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cs-text-2);border-bottom:1px solid var(--cs-divider);position:sticky;top:0;z-index:2}.board-table tbody td{padding:6px 10px;border-bottom:1px solid var(--cs-divider);vertical-align:middle}.board-table tbody tr{cursor:pointer}.board-table tbody tr:hover{background:var(--cs-panel-2)}.board-table tbody tr.selected{background:#1a6db00f}html.dark .board-table tbody tr.selected{background:#3d9be014}.board-table tbody tr.emergency-row{background:#dc262614;animation:pulse 2s infinite}.board-table tbody tr.major-row{background:#7c3aed0f}.board-table .pri-chip{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;font-family:IBM Plex Mono;font-weight:700;font-size:11px;color:#fff}.board-table .num{font-family:IBM Plex Mono;font-size:11px;color:var(--cs-text-3)}.board-table .status-cell{font-weight:600;font-size:11px}.board-table .timer{font-family:IBM Plex Mono;font-size:11px}.board-table .timer.over{color:var(--cs-err);font-weight:700}.board-table .timer.warn{color:var(--cs-warn);font-weight:600}.board-table .units-cell{display:flex;gap:3px;flex-wrap:wrap}.board-table .units-cell .uc{font-family:IBM Plex Mono;font-size:10px;padding:1px 5px;background:var(--cs-divider);border-radius:3px;color:var(--cs-text);font-weight:600}.board-table .alert-dots{display:flex;gap:2px}.board-table .alert-dots .dot{width:8px;height:8px;border-radius:50%}.board-table .alert-dots .dot.crit{background:var(--cs-err)}.board-table .alert-dots .dot.warn{background:var(--cs-warn)}.board-table .alert-dots .dot.info{background:var(--cs-blue)}.status-pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.status-pill.pending{background:#dc26261f;color:var(--cs-err)}.status-pill.held{background:#f59e0b1f;color:#92400e}html.dark .status-pill.held{color:#fbbf24}.status-pill.dispatched,.status-pill.active{background:#2563eb1f;color:#2563eb}.status-pill.cleared{background:#64748b26;color:var(--cs-slate)}.status-pill.closed{background:#64748b1f;color:var(--cs-text-3)}.status-pill.canceled{background:#64748b26;color:var(--cs-text-3)}.status-pill.transferred{background:#7c3aed1f;color:#7c3aed}.status-pill.draft{background:#64748b1a;color:var(--cs-text-3)}.board-alert-bar{background:var(--cs-navy);color:#fff;padding:6px 14px;font-size:12px;display:flex;gap:16px;align-items:center;flex-shrink:0;border-top:1px solid rgba(255,255,255,.06)}.board-alert-bar .stat{display:inline-flex;align-items:center;gap:4px}.board-alert-bar .stat.crit{color:#fca5a5;font-weight:700}.board-alert-bar .stat.warn{color:#fcd34d;font-weight:600}.board-alert-bar .stat.ok{color:#86efac}.board-alert-bar .stat .n{font-family:IBM Plex Mono;font-weight:700}.dispatch-shell{display:grid;grid-template-columns:320px 1fr 320px;grid-template-rows:1fr 240px;height:calc(100vh - 56px);gap:1px;background:var(--cs-divider)}.dispatch-pane{background:var(--cs-panel);display:flex;flex-direction:column;min-height:0;overflow:hidden}.dispatch-pane .pane-h{padding:10px 14px;border-bottom:1px solid var(--cs-divider);display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--cs-text-2);background:var(--cs-panel-2)}.dispatch-pane .pane-h .count{background:var(--cs-blue);color:#fff;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:0;text-transform:none}.dispatch-pane .pane-body{flex:1;min-height:0;overflow:auto}.dispatch-map{background:var(--cs-panel);position:relative}.dispatch-detail{grid-column:1 / 4;background:var(--cs-panel);border-top:1px solid var(--cs-divider)}.call-card{padding:10px 14px;border-bottom:1px solid var(--cs-divider);cursor:pointer;transition:background .12s}.call-card:hover{background:var(--cs-panel-2)}.call-card.selected{background:#1a6db00f;border-left:3px solid var(--cs-blue);padding-left:11px}html.dark .call-card.selected{background:#3d9be014}.call-card .row1{display:flex;align-items:center;gap:8px;margin-bottom:4px}.call-card .pri{width:24px;height:24px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-family:IBM Plex Mono;font-weight:700;font-size:12px;color:#fff;flex-shrink:0}.call-card .type{font-weight:700;font-size:13px;color:var(--cs-text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.call-card .num{font-family:IBM Plex Mono;font-size:11px;color:var(--cs-text-3)}.call-card .loc{font-size:12px;color:var(--cs-text-2);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.call-card .row2{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--cs-text-3)}.call-card .units{display:flex;gap:3px;flex-wrap:wrap}.call-card .unit-chip{font-family:IBM Plex Mono;font-size:10px;font-weight:600;padding:1px 5px;background:var(--cs-divider);color:var(--cs-text);border-radius:3px}.call-card .timer{font-family:IBM Plex Mono;margin-left:auto}.call-card .timer.over{color:var(--cs-err);font-weight:600}.pri-P1{background:var(--cs-p1)}.pri-P2{background:var(--cs-p2)}.pri-P3{background:var(--cs-p3)}.pri-P4{background:var(--cs-p4)}.pri-P5{background:var(--cs-p5)}.unit-group{padding:6px 0}.unit-group-h{padding:6px 14px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cs-text-3)}.unit-card{padding:8px 14px;border-bottom:1px solid var(--cs-divider);display:flex;align-items:center;gap:10px;cursor:pointer}.unit-card:hover{background:var(--cs-panel-2)}.unit-card.selected{background:#1a6db00f}.unit-card .badge{font-family:IBM Plex Mono;font-weight:700;font-size:12px;padding:4px 8px;border-radius:4px;min-width:60px;text-align:center;color:#fff}.unit-card .meta{flex:1;min-width:0}.unit-card .name{font-size:12px;font-weight:600;color:var(--cs-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unit-card .sub{font-size:11px;color:var(--cs-text-3)}.unit-card .time{font-family:IBM Plex Mono;font-size:11px;color:var(--cs-text-3)}.unit-card .time.warn{color:var(--cs-warn)}.unit-card .time.over{color:var(--cs-err);font-weight:600}.st-AVAIL{background:#16a34a}.st-DISP,.st-ENRT{background:#2563eb}.st-OS{background:#d97706}.st-TRANS,.st-AT_DEST,.st-AT_HOSP,.st-AT_JAIL,.st-AT_COURT{background:#7c3aed}.st-AT_STN{background:#16a34a}.st-STAGED{background:#f59e0b}.st-BUSY,.st-CLR{background:#64748b}.st-OOS,.st-MEAL,.st-BREAK,.st-TRAINING,.st-ADMIN,.st-COURT_ADMIN,.st-DETAIL{background:#475569}.st-CANCEL{background:#6b7280}.st-EMERG{background:#dc2626;animation:pulse 1s infinite}.units-shell{display:grid;grid-template-columns:220px 1fr 360px;grid-template-rows:1fr 200px;height:calc(100vh - 56px);gap:1px;background:var(--cs-divider)}.units-pane{background:var(--cs-panel);display:flex;flex-direction:column;min-height:0;overflow:hidden}.units-pane .pane-h{padding:10px 14px;border-bottom:1px solid var(--cs-divider);display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--cs-text-2);background:var(--cs-panel-2)}.units-pane .pane-h .count{background:var(--cs-blue);color:#fff;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:0;text-transform:none}.units-pane .pane-body{flex:1;min-height:0;overflow:auto}.units-board{background:var(--cs-panel)}.units-detail{background:var(--cs-panel);border-left:1px solid var(--cs-divider)}.units-watch{grid-column:1 / 4;background:var(--cs-panel);border-top:1px solid var(--cs-divider)}.filter-group{padding:8px 12px;border-bottom:1px solid var(--cs-divider)}.filter-group h4{margin:0 0 6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cs-text-3)}.filter-group label{display:flex;align-items:center;gap:6px;font-size:12px;padding:2px 0;cursor:pointer;color:var(--cs-text)}.filter-group select{width:100%;padding:4px 6px;font-size:12px;border-radius:4px;border:1px solid var(--cs-divider);background:var(--cs-panel);color:var(--cs-text)}.unit-row{display:grid;grid-template-columns:80px 90px 1fr 110px 60px;gap:8px;padding:8px 14px;align-items:center;border-bottom:1px solid var(--cs-divider);cursor:pointer;font-size:12px}.unit-row:hover{background:var(--cs-panel-2)}.unit-row.selected{background:#1a6db00f;border-left:3px solid var(--cs-blue);padding-left:11px}.unit-row .callsign{font-family:IBM Plex Mono;font-weight:700;font-size:13px;padding:3px 6px;border-radius:4px;color:#fff;text-align:center}.unit-row .status-cell{font-weight:600}.unit-row .timer{font-family:IBM Plex Mono;text-align:right;font-size:11px}.unit-row .timer.warn{color:var(--cs-warn);font-weight:600}.unit-row .timer.over{color:var(--cs-err);font-weight:700}.units-board-h{display:grid;grid-template-columns:80px 90px 1fr 110px 60px;gap:8px;padding:8px 14px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cs-text-3);background:var(--cs-panel-2);border-bottom:1px solid var(--cs-divider);position:sticky;top:0}.watch-row{display:grid;grid-template-columns:90px 130px 1fr 90px;gap:12px;padding:6px 14px;align-items:center;font-size:12px;border-bottom:1px solid var(--cs-divider)}.watch-row .sev{padding:2px 6px;border-radius:4px;font-weight:700;font-size:10px;text-transform:uppercase;text-align:center}.watch-row .sev.crit{background:#dc262626;color:var(--cs-err)}.watch-row .sev.warn{background:#f59e0b26;color:#92400e}html.dark .watch-row .sev.warn{color:#fbbf24}.watch-row .sev.info{background:#1a6db01f;color:var(--cs-blue)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.65}}@keyframes flash-red{0%,to{background:transparent}50%{background:#dc26268c}}@keyframes flash-orange{0%,to{background:transparent}50%{background:#ea580c8c}}@keyframes flash-yellow{0%,to{background:transparent}50%{background:#f59e0b8c}}@keyframes flash-green{0%,to{background:transparent}50%{background:#16a34a8c}}@keyframes flash-blue{0%,to{background:transparent}50%{background:#1a6db08c}}.flash-row td{position:relative}.flash-row.flash-red td{animation:flash-red .9s ease-in-out infinite}.flash-row.flash-orange td{animation:flash-orange .9s ease-in-out infinite}.flash-row.flash-yellow td{animation:flash-yellow .9s ease-in-out infinite}.flash-row.flash-green td{animation:flash-green .9s ease-in-out infinite}.flash-row.flash-blue td{animation:flash-blue .9s ease-in-out infinite}@keyframes cab-pulse{0%{box-shadow:0 0 #16a34ab3}70%{box-shadow:0 0 0 8px #16a34a00}to{box-shadow:0 0 #16a34a00}}.btn{padding:8px 14px;border-radius:6px;font-size:13px;font-weight:600;border:1px solid var(--cs-divider);background:var(--cs-panel);color:var(--cs-text);display:inline-flex;align-items:center;gap:6px}.btn:hover{background:var(--cs-panel-2)}.btn.primary{background:var(--cs-blue);color:#fff;border-color:var(--cs-blue)}.btn.primary:hover{background:var(--cs-blue-hover);border-color:var(--cs-blue-hover)}.btn.danger{background:var(--cs-err);color:#fff;border-color:var(--cs-err)}.btn.warn{background:var(--cs-warn);color:#fff;border-color:var(--cs-warn)}.btn.sm{padding:4px 10px;font-size:12px}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:var(--cs-panel-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.field{margin-bottom:14px}.field label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cs-text-2);margin-bottom:4px}.field input,.field select,.field textarea{width:100%;padding:8px 10px;border-radius:6px;border:1px solid var(--cs-divider);background:var(--cs-panel);color:var(--cs-text);font-size:13px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--cs-blue);outline:none;box-shadow:0 0 0 3px #1a6db01f}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-row.thirds{grid-template-columns:1fr 1fr 1fr}.modal-scrim{position:fixed;inset:0;background:#0f2b4680;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px}html.dark .modal-scrim{background:#000000b3}.modal-scrim.non-blocking{background:#0f2b462e}html.dark .modal-scrim.non-blocking{background:#00000059}.modal{background:var(--cs-panel);border-radius:var(--cs-radius);max-width:720px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--cs-shadow-lg);overflow:hidden}.modal.lg{max-width:960px}.modal.xl{max-width:1200px}.modal-h{padding:16px 20px;border-bottom:1px solid var(--cs-divider);display:flex;align-items:center;justify-content:space-between}.modal-h h3{margin:0;font-size:16px;font-weight:700;font-family:IBM Plex Sans}.modal-b{flex:1;min-height:0;overflow:auto;padding:20px}.modal-f{padding:12px 20px;border-top:1px solid var(--cs-divider);display:flex;justify-content:flex-end;gap:8px}.alert{padding:10px 12px;border-radius:6px;font-size:13px;display:flex;gap:10px;align-items:flex-start;margin-bottom:8px;border:1px solid}.alert.err{background:#dc26260f;border-color:#dc26264d;color:var(--cs-err)}.alert.warn{background:#f59e0b12;border-color:#f59e0b4d;color:#92400e}html.dark .alert.warn{color:#fbbf24}.alert.info{background:#1a6db00f;border-color:#1a6db04d;color:var(--cs-blue)}.alert.ok{background:#16a34a0f;border-color:#16a34a4d;color:var(--cs-ok)}.alert b{font-weight:700}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th,.tbl td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--cs-divider)}.tbl th{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cs-text-2);background:var(--cs-panel-2);position:sticky;top:0}.tbl tbody tr:hover{background:var(--cs-panel-2)}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;background:var(--cs-divider);color:var(--cs-text)}.chip.ok{background:#16a34a1f;color:var(--cs-ok)}.chip.warn{background:#f59e0b1f;color:#92400e}html.dark .chip.warn{color:#fbbf24}.chip.err{background:#dc26261f;color:var(--cs-err)}.chip.blue{background:#1a6db01f;color:var(--cs-blue)}html.dark .chip.blue{background:#3d9be029;color:#3d9be0}#cad-map-container{width:100%;height:100%}.map-fallback{display:flex;align-items:center;justify-content:center;height:100%;background:var(--cs-panel-2);color:var(--cs-text-3);font-size:13px}.map-controls{position:absolute;top:10px;left:10px;z-index:5;display:flex;flex-direction:column;gap:4px;background:var(--cs-panel);border-radius:6px;box-shadow:var(--cs-shadow);padding:6px}.map-controls label{font-size:11px;display:flex;align-items:center;gap:5px;padding:3px 6px;cursor:pointer;color:var(--cs-text-2);white-space:nowrap}.map-controls input{margin:0}.launcher-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.launcher-card{padding:18px;border:1px solid var(--cs-divider);border-radius:10px;background:var(--cs-panel-2);display:flex;flex-direction:column;gap:8px;cursor:pointer;text-align:left}.launcher-card:hover{border-color:var(--cs-blue)}.launcher-card.current{border-color:var(--cs-blue);background:#1a6db00f}.launcher-card .name{font-weight:700;font-size:14px}.launcher-card .desc{font-size:12px;color:var(--cs-text-3)}.launcher-card .icon{width:36px;height:36px;background:var(--cs-blue);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center}.mdt-shell{max-width:720px;margin:0 auto;height:calc(100vh - 56px);display:flex;flex-direction:column}.mdt-header{background:var(--cs-navy);color:#fff;padding:10px 14px;display:flex;align-items:center;gap:12px;flex-shrink:0}.mdt-header .callsign{font-family:IBM Plex Mono;font-weight:700;font-size:18px}.mdt-header .status-pill{padding:4px 10px;border-radius:6px;font-weight:700;font-size:12px;color:#fff}.mdt-header .crew{font-size:11px;opacity:.7}.mdt-header .conn-dot{width:8px;height:8px;border-radius:50%;background:#16a34a;display:inline-block;margin-right:4px}.mdt-header .conn-dot.offline{background:#dc2626}.mdt-tabs{display:flex;background:var(--cs-panel-2);border-bottom:1px solid var(--cs-divider);flex-shrink:0;overflow-x:auto}.mdt-tabs button{flex:1;min-width:80px;background:transparent;border:0;padding:10px 8px;font-size:12px;font-weight:600;color:var(--cs-text-2);border-bottom:3px solid transparent;cursor:pointer}.mdt-tabs button.active{color:var(--cs-blue);border-bottom-color:var(--cs-blue);background:var(--cs-panel)}.mdt-tabs button .tab-badge{background:var(--cs-err);color:#fff;padding:0 5px;border-radius:10px;font-size:9px;margin-left:4px;font-weight:700}.mdt-body{flex:1;min-height:0;overflow:auto;padding:12px 14px}.mdt-status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}.mdt-status-btn{padding:14px 8px;border-radius:8px;border:1px solid var(--cs-divider);background:var(--cs-panel);font-weight:700;font-size:13px;cursor:pointer;color:var(--cs-text)}.mdt-status-btn.active{background:var(--cs-blue);color:#fff;border-color:var(--cs-blue)}.mdt-status-btn.danger{background:#dc262614;border-color:#dc26264d;color:var(--cs-err)}.mdt-emerg{width:100%;padding:16px;border:0;border-radius:8px;background:var(--cs-err);color:#fff;font-weight:800;letter-spacing:.12em;font-size:16px;margin-top:12px;cursor:pointer}.mdt-emerg:hover{background:var(--cs-crit)}.mdt-bottom-bar{display:flex;gap:4px;padding:8px 10px;background:var(--cs-panel-2);border-top:1px solid var(--cs-divider);flex-shrink:0}.mdt-bottom-bar button{flex:1;padding:12px 6px;border-radius:6px;border:1px solid var(--cs-divider);background:var(--cs-panel);font-weight:700;font-size:12px;color:var(--cs-text);cursor:pointer}.mdt-bottom-bar button.primary{background:var(--cs-blue);color:#fff;border-color:var(--cs-blue)}.mdt-bottom-bar button.danger{background:var(--cs-err);color:#fff;border-color:var(--cs-err)}.mdt-card{background:var(--cs-panel);border:1px solid var(--cs-divider);border-radius:8px;padding:12px;margin-bottom:10px}.mdt-card .h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cs-text-3);margin-bottom:6px}.mdt-call-header{display:flex;gap:10px;align-items:center;margin-bottom:8px}.mdt-call-header .pri{width:36px;height:36px;border-radius:6px;color:#fff;font-family:IBM Plex Mono;font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mdt-call-header .type{font-size:15px;font-weight:700}.mdt-call-header .num{font-family:IBM Plex Mono;font-size:11px;color:var(--cs-text-3)}.mdt-quick-notes{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px}.mdt-quick-notes button{padding:8px;border-radius:6px;border:1px solid var(--cs-divider);background:var(--cs-panel);font-size:11px;font-weight:600;cursor:pointer;color:var(--cs-text);text-align:left}.mdt-quick-notes button:hover{background:var(--cs-panel-2)}.mdt-msg-row{padding:8px 10px;border-radius:8px;margin-bottom:6px;max-width:80%;font-size:12px}.mdt-msg-row.in{background:var(--cs-divider);align-self:flex-start}.mdt-msg-row.out{background:#1a6db026;align-self:flex-end;margin-left:auto}.mdt-msg-row .meta{font-size:9px;color:var(--cs-text-3);margin-top:2px}.mdt-offline-banner{background:var(--cs-warn);color:#422006;padding:6px 14px;font-size:12px;font-weight:700;text-align:center}.emerg-banner{background:var(--cs-err);color:#fff;padding:10px 20px;font-weight:700;display:flex;align-items:center;gap:12px;position:sticky;top:56px;z-index:40;animation:pulse 1.5s infinite}.emerg-banner button{margin-left:auto;background:#fff3;border:1px solid rgba(255,255,255,.4);color:#fff;padding:4px 10px;border-radius:4px;font-weight:600}.sandbox-banner{background:#fbbf24;color:#422006;padding:6px 16px;font-weight:700;text-align:center;font-size:12px;letter-spacing:.05em}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--cs-divider);padding:0 16px;background:var(--cs-panel-2);overflow-x:auto}.tabs button{background:transparent;border:0;padding:10px 14px;font-size:13px;font-weight:600;color:var(--cs-text-2);border-bottom:2px solid transparent;white-space:nowrap}.tabs button.active{color:var(--cs-blue);border-bottom-color:var(--cs-blue)}.tabs button:hover{color:var(--cs-text)}.page{padding:20px;max-width:1400px;margin:0 auto}.page-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.page-h h1{margin:0;font-family:IBM Plex Sans;font-weight:700;font-size:22px}.card{background:var(--cs-panel);border:1px solid var(--cs-divider);border-radius:var(--cs-radius);box-shadow:var(--cs-shadow-sm);margin-bottom:16px;overflow:hidden}.card-h{padding:12px 16px;border-bottom:1px solid var(--cs-divider);font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:space-between;background:var(--cs-panel-2)}.card-b{padding:16px}.narr{font-family:IBM Plex Mono;font-size:12px;line-height:1.5}.narr .entry{padding:4px 0;border-bottom:1px dashed var(--cs-divider);display:grid;grid-template-columns:70px 1fr;gap:8px}.narr .entry .ts{color:var(--cs-text-3)}.narr .entry .actor{color:var(--cs-blue);font-weight:600}.cb{position:relative;display:inline-block;width:100%}.cb-input{width:100%;padding:8px 26px 8px 10px;border-radius:6px;border:1px solid var(--cs-divider);background:var(--cs-panel);color:var(--cs-text);font-size:13px;font-family:inherit}.cb-input:focus{border-color:var(--cs-blue);outline:none;box-shadow:0 0 0 3px #1a6db01f}.cb-input:disabled{opacity:.6;cursor:not-allowed}.cb-input.sm{padding:4px 22px 4px 8px;font-size:12px}.cb-caret{position:absolute;right:8px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--cs-text-3);font-size:9px}.cb-popover{position:absolute;z-index:300;top:calc(100% + 2px);left:0;min-width:100%;background:var(--cs-panel);border:1px solid var(--cs-divider);border-radius:6px;max-height:260px;overflow:auto;box-shadow:var(--cs-shadow-lg)}.cb-popover-portal{position:fixed!important;top:auto;left:auto;min-width:0;z-index:9999}.cb-opt{padding:6px 10px;cursor:pointer;font-size:13px;white-space:nowrap;color:var(--cs-text)}.cb-opt.highlighted{background:#1a6db01f}html.dark .cb-opt.highlighted{background:#3d9be02e}.cb-opt.current{font-weight:700;color:var(--cs-blue)}.cb-empty{padding:8px 10px;color:var(--cs-text-3);font-size:12px;font-style:italic}.muted{color:var(--cs-text-3)}.row{display:flex;gap:8px;align-items:center}.empty{padding:40px 20px;text-align:center;color:var(--cs-text-3);font-size:13px}@media (max-width: 1100px){.dispatch-shell{grid-template-columns:280px 1fr;grid-template-rows:1fr 1fr 220px}.dispatch-units{grid-column:1 / 3;grid-row:2}.dispatch-detail{grid-row:3}}@media (max-width: 700px){.cs-login{flex-direction:column}.cs-login-left,.cs-login-right{width:100%}.cs-login-left{padding:32px;min-height:280px}}
