:root{--bg-0: #0a0e12;--bg-1: #0d1117;--bg-2: #131a23;--bg-3: #1a232f;--bg-4: #232f3e;--line: #243042;--line-strong: #34465f;--navy: #1a3a6b;--blue: #1e5ca5;--blue-2: #2f7dd1;--teal: #0f6e56;--teal-2: #18a07e;--green: #16a34a;--green-2: #1fbf5c;--amber: #ef9f27;--amber-2: #f5b550;--red: #e24b4a;--red-2: #ff6463;--purple: #6c5cff;--text: #e6ecf4;--text-mute: #8b97a8;--text-dim: #5d6877;--mono: "JetBrains Mono", "SF Mono", "Menlo", "Consolas", monospace;--sans: "Inter", -apple-system, system-ui, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 6px 24px rgba(0, 0, 0, .45)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);background:var(--bg-0);color:var(--text);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;color:inherit}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-1)}::-webkit-scrollbar-thumb{background:var(--bg-4);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--line-strong)}.mono{font-family:var(--mono)}.muted{color:var(--text-mute)}.dim{color:var(--text-dim)}.center{text-align:center}.row{display:flex;align-items:center;gap:8px}.col{display:flex;flex-direction:column;gap:8px}.flex-1{flex:1}.gap-12{gap:12px}.gap-16{gap:16px}.app-shell{height:100vh;display:flex;flex-direction:column;background:var(--bg-0)}.app-main{flex:1;min-height:0;display:flex;overflow:hidden}.topnav{height:52px;flex:0 0 52px;background:linear-gradient(180deg,#0f1722,#0b1118);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 16px;gap:16px;z-index:10;position:relative}.topnav .brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.02em}.topnav .brand img{height:26px}.topnav .brand .sub{font-size:11px;color:var(--text-mute);letter-spacing:.18em;text-transform:uppercase}.topnav .links{display:flex;gap:4px;margin-left:14px}.topnav .links a{padding:6px 12px;font-size:13px;color:var(--text-mute);border-bottom:2px solid transparent;line-height:28px;transition:color .12s ease}.topnav .links a.active{color:var(--text);border-bottom-color:var(--blue-2)}.topnav .links a:hover{color:var(--text)}.topnav .spacer{flex:1}.topnav .meta{display:flex;align-items:center;gap:14px}.topnav .pill-active{background:#e24b4a26;color:var(--red-2);border:1px solid rgba(226,75,74,.4);padding:3px 10px;border-radius:99px;font-size:11px;font-weight:700;letter-spacing:.06em}.topnav .drones-online{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-mute)}.topnav .drones-online .dot{width:7px;height:7px;border-radius:50%;background:var(--green-2);box-shadow:0 0 6px var(--green-2)}.topnav .officer{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2;font-size:12px;cursor:pointer}.topnav .officer .name{font-weight:600;color:var(--text)}.topnav .officer .rank{color:var(--text-mute);font-size:11px}.topnav .clock{font-family:var(--mono);font-size:13px;color:var(--text);background:var(--bg-2);padding:4px 10px;border-radius:6px;border:1px solid var(--line)}.topnav .menu-pop{position:absolute;right:16px;top:54px;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:6px;box-shadow:var(--shadow);min-width:180px;z-index:30}.topnav .menu-pop button{width:100%;text-align:left;background:transparent;color:var(--text);border:none;padding:8px 12px;border-radius:6px;font-size:13px}.topnav .menu-pop button:hover{background:var(--bg-3)}.alert-banner{height:44px;flex:0 0 44px;background:#2a1515;border-bottom:1px solid #6f1e1e;display:flex;align-items:center;padding:0 16px;gap:14px;color:#ffd4d3;font-size:13px}.alert-banner .pulse{width:10px;height:10px;border-radius:50%;background:var(--red-2);box-shadow:0 0 #ff6463b3;animation:pulse 1.5s infinite}.alert-banner .label{font-weight:700;letter-spacing:.06em;color:var(--red-2)}.alert-banner .caseid{font-family:var(--mono);color:var(--amber)}.alert-banner .spacer{flex:1}.alert-banner .timer{font-family:var(--mono);font-size:14px;color:#fff}.alert-banner .more{font-size:11px;padding:2px 8px;border-radius:99px;background:#ff646329;color:var(--red-2);border:1px solid rgba(255,100,99,.3);cursor:pointer}@keyframes pulse{0%{box-shadow:0 0 #ff6463b3}70%{box-shadow:0 0 0 12px #ff646300}to{box-shadow:0 0 #ff646300}}.login-page{height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 30% 20%,rgba(30,92,165,.15),transparent 50%),radial-gradient(ellipse at 80% 70%,rgba(15,110,86,.12),transparent 60%),var(--bg-1)}.login-card{width:420px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:32px;box-shadow:var(--shadow)}.login-card .logo-row{display:flex;align-items:center;gap:12px;margin-bottom:6px}.login-card .logo-row img{height:36px}.login-card h1{margin:0 0 4px;font-size:18px;color:var(--text);font-weight:700}.login-card .subtitle{color:var(--text-mute);font-size:12px;margin-bottom:28px;letter-spacing:.04em}.login-card label{display:block;font-size:11px;color:var(--text-mute);letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px}.login-card .field{margin-bottom:16px}.login-card input,.login-card select{width:100%;padding:10px 12px;background:var(--bg-1);border:1px solid var(--line);border-radius:6px;color:var(--text);font-size:14px;outline:none;transition:border-color .12s}.login-card input:focus,.login-card select:focus{border-color:var(--blue-2)}.login-card .btn-primary{width:100%;padding:12px;background:var(--blue);border:1px solid var(--blue-2);border-radius:6px;color:#fff;font-weight:600;font-size:14px;transition:background .12s;margin-top:8px}.login-card .btn-primary:hover{background:var(--blue-2)}.login-card .btn-primary:disabled{opacity:.6;cursor:not-allowed}.login-card .err{background:#e24b4a1a;border:1px solid rgba(226,75,74,.4);color:var(--red-2);padding:8px 12px;border-radius:6px;font-size:12px;margin-bottom:14px}.login-card .hint{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line);font-size:11px;color:var(--text-dim);line-height:1.6}.login-card .hint code{color:var(--amber);font-family:var(--mono)}.incident-screen{flex:1;display:flex;min-height:0}.incident-main{flex:1;display:flex;flex-direction:column;min-width:0;border-right:1px solid var(--line);background:var(--bg-1)}.incident-sidebar{width:360px;flex:0 0 360px;display:flex;flex-direction:column;background:var(--bg-1);overflow-y:auto}.video-header{height:40px;flex:0 0 40px;display:flex;align-items:center;padding:0 14px;gap:12px;background:var(--bg-2);border-bottom:1px solid var(--line);font-size:12px}.video-header .badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:99px;background:var(--bg-3);border:1px solid var(--line);font-size:11px;font-weight:600;letter-spacing:.04em}.video-header .badge .dot{width:6px;height:6px;border-radius:50%;background:var(--green-2)}.video-header .badge.rec .dot{background:var(--red-2);animation:blink 1s infinite}.video-header .badge.warn{color:var(--amber);border-color:#ef9f2766}.video-header .badge.bad{color:var(--red-2);border-color:#e24b4a66}.video-header .drone-id{font-family:var(--mono);color:var(--text-mute)}.video-header .spacer{flex:1}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:.15}}.video-stage{flex:1;position:relative;min-height:0;background:#050709;overflow:hidden}.video-stage .video-el{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.video-stage .canvas-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:auto}.video-stage .placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--text-mute);background:repeating-linear-gradient(45deg,rgba(255,255,255,.015),rgba(255,255,255,.015) 1px,transparent 1px,transparent 22px),radial-gradient(ellipse at center,#0e1820,#050709 70%);gap:12px}.video-stage .placeholder .spinner{width:28px;height:28px;border:3px solid var(--bg-4);border-top-color:var(--blue-2);border-radius:50%;animation:spin .9s linear infinite}.video-stage .placeholder .hint{font-size:11px;color:var(--text-dim);letter-spacing:.06em}@keyframes spin{to{transform:rotate(360deg)}}.video-stage .mock-scene{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 65%,#22603873,#080f0c00 60%),radial-gradient(ellipse at 20% 80%,rgba(45,80,110,.35) 0%,transparent 50%),radial-gradient(ellipse at 80% 30%,rgba(120,92,30,.25) 0%,transparent 50%),linear-gradient(180deg,#07120d,#060c08);filter:contrast(1.05) saturate(.7)}.video-stage .mock-grain{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.06;background-image:repeating-linear-gradient(0deg,rgba(255,255,255,.4) 0 1px,transparent 1px 3px);mix-blend-mode:overlay;animation:grain .18s steps(3) infinite}@keyframes grain{0%{transform:translate(0)}33%{transform:translate(-1px,1px)}66%{transform:translate(1px,-1px)}to{transform:translate(0)}}.video-stage .mock-scan{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,transparent 0%,transparent 49%,rgba(120,200,255,.06) 50%,transparent 51%,transparent 100%);background-size:100% 6px;opacity:.4}.video-stage .mock-victim{position:absolute;left:46%;top:58%;width:64px;height:110px;border-radius:30px 30px 14px 14px;background:radial-gradient(ellipse at 50% 20%,#f0a978 0%,#c0734a 35%,transparent 60%),radial-gradient(ellipse at 50% 65%,#6e5946 0%,#2c2218 50%,transparent 70%);filter:blur(.4px);opacity:.85}.video-stage .mock-suspect{position:absolute;width:56px;height:100px;border-radius:26px 26px 12px 12px;background:radial-gradient(ellipse at 50% 20%,#d99770 0%,#98613a 35%,transparent 60%),radial-gradient(ellipse at 50% 70%,#3a2e28 0%,#181410 50%,transparent 70%);filter:blur(.5px);opacity:.78}.hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;font-family:var(--mono);color:#e6ffe6;font-size:11px;letter-spacing:.04em;text-shadow:0 0 6px rgba(0,0,0,.8)}.hud .corner{position:absolute;padding:10px 14px}.hud .tl{top:0;left:0}.hud .tr{top:0;right:0;text-align:right}.hud .bl{bottom:0;left:0}.hud .br{bottom:0;right:0;text-align:right}.hud .lbl{color:#5dd189;font-size:9px;letter-spacing:.16em;text-transform:uppercase}.hud .val{color:#fafafa;font-size:13px}.hud .rec{color:var(--red-2)}.hud .pill{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:99px;background:#ef9f272e;border:1px solid var(--amber);color:var(--amber-2);text-transform:uppercase;letter-spacing:.08em;font-size:9px}.hud .pill.green{background:#1fbf5c29;border-color:var(--green-2);color:var(--green-2)}.hud .pill.red{background:#e24b4a29;border-color:var(--red-2);color:var(--red-2)}.hud .pill.dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 6px currentColor}.hud .reticle{position:absolute;left:50%;top:50%;width:60px;height:60px;transform:translate(-50%,-50%);opacity:.5}.hud .reticle:before,.hud .reticle:after{content:"";position:absolute;background:#b4ffc880}.hud .reticle:before{left:50%;top:0;width:1px;height:100%;transform:translate(-50%)}.hud .reticle:after{top:50%;left:0;height:1px;width:100%;transform:translateY(-50%)}.video-controls{height:56px;flex:0 0 56px;background:var(--bg-2);border-top:1px solid var(--line);display:flex;align-items:center;padding:0 16px;gap:12px}.ctrl{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;background:var(--bg-3);border:1px solid var(--line);color:var(--text);border-radius:6px;font-size:12px;font-weight:600;transition:all .12s}.ctrl:hover{background:var(--bg-4);border-color:var(--line-strong)}.ctrl.active{background:var(--blue);border-color:var(--blue-2)}.ctrl.ptt{min-width:130px;justify-content:center}.ctrl.ptt.active{background:#1e5ca5;box-shadow:0 0 0 3px #2f7dd140}.ctrl .icon{width:14px;height:14px;display:inline-block;vertical-align:middle}.audio-level{width:92px;height:8px;background:var(--bg-3);border-radius:4px;overflow:hidden;border:1px solid var(--line);position:relative}.audio-level .bar{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--green-2) 0%,var(--amber) 70%,var(--red-2) 100%);transition:width 80ms linear}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:90px;height:4px;background:var(--bg-4);border-radius:99px;outline:none}.slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--blue-2);border:2px solid var(--bg-1);cursor:pointer}.video-controls .spacer{flex:1}.video-controls .ctrl-group{display:flex;align-items:center;gap:6px;padding-left:12px;border-left:1px solid var(--line)}.video-controls .label-mini{font-size:10px;color:var(--text-mute);letter-spacing:.1em;text-transform:uppercase}.map-strip{height:200px;flex:0 0 200px;border-top:1px solid var(--line);position:relative;background:var(--bg-2)}.map-strip .leaflet-container{height:100%;width:100%;background:var(--bg-2)}.leaflet-tile{filter:hue-rotate(180deg) invert(.92) brightness(.92) contrast(.96)}.leaflet-control-attribution{background:#0d1117b3!important;color:var(--text-mute)!important;font-size:9px!important}.leaflet-control-attribution a{color:var(--blue-2)!important}.leaflet-control-zoom a{background:var(--bg-2)!important;color:var(--text)!important;border-color:var(--line)!important}.side-section{padding:14px 16px;border-bottom:1px solid var(--line)}.side-section h3{margin:0 0 10px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute);font-weight:700}.side-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px}.side-row:last-child{margin-bottom:0}.side-row .k{color:var(--text-mute)}.side-row .v{color:var(--text);font-weight:500;font-family:var(--mono)}.side-row .v.danger{color:var(--red-2)}.side-row .v.warn{color:var(--amber)}.side-row .v.good{color:var(--green-2)}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:99px;font-size:10px;letter-spacing:.06em;font-weight:700;text-transform:uppercase;background:var(--bg-3);border:1px solid var(--line);color:var(--text)}.pill.teal{background:#18a07e29;color:var(--teal-2);border-color:#18a07e66}.pill.amber{background:#ef9f2729;color:var(--amber);border-color:#ef9f2766}.pill.red{background:#e24b4a29;color:var(--red-2);border-color:#e24b4a66}.pill.green{background:#1fbf5c29;color:var(--green-2);border-color:#1fbf5c66}.pill.blue{background:#2f7dd129;color:var(--blue-2);border-color:#2f7dd166}.pill.grey{background:var(--bg-3);color:var(--text-mute);border-color:var(--line)}.pill.purple{background:#6c5cff29;color:#a394ff;border-color:#6c5cff66}.progress{width:100%;height:6px;background:var(--bg-3);border-radius:99px;overflow:hidden;position:relative;margin-top:4px}.progress .fill{position:absolute;left:0;top:0;bottom:0;background:var(--green-2);transition:width .24s ease}.progress .fill.warn{background:var(--amber)}.progress .fill.danger{background:var(--red-2)}.signal-bars{display:inline-flex;align-items:flex-end;gap:2px;height:14px}.signal-bars .bar{width:3px;background:var(--bg-4);border-radius:1px}.signal-bars .bar.on{background:var(--green-2)}.signal-bars .bar:nth-child(1){height:4px}.signal-bars .bar:nth-child(2){height:7px}.signal-bars .bar:nth-child(3){height:10px}.signal-bars .bar:nth-child(4){height:13px}.signal-bars .bar:nth-child(5){height:16px}.target-card{padding:10px 12px;border:1.5px solid var(--line);border-radius:8px;background:var(--bg-2);margin-bottom:8px;display:flex;align-items:center;gap:10px}.target-card.locked{border-color:var(--amber);background:#ef9f2712}.target-card.lowconf{border-style:dashed;border-color:var(--amber)}.target-card .tnum{font-family:var(--mono);font-weight:700;font-size:14px;width:28px;color:var(--red-2)}.target-card.locked .tnum{color:var(--amber-2)}.target-card .info{flex:1;font-size:12px}.target-card .info .conf{color:var(--text);font-weight:600}.target-card .info .dist{color:var(--text-mute);font-size:11px}.target-card .lock-btn{background:var(--bg-3);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:5px 10px;font-size:11px;font-weight:700;letter-spacing:.04em}.target-card.locked .lock-btn{background:#ef9f2733;color:var(--amber-2);border-color:var(--amber)}.no-targets{color:var(--text-dim);font-size:12px;font-style:italic;padding:10px 0}.taser{padding:14px 16px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--bg-1) 0%,var(--bg-2) 100%)}.taser h3{margin:0 0 10px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute);font-weight:700}.taser-state-card{padding:12px 14px;border-radius:8px;border:1.5px solid;display:flex;align-items:center;gap:12px;margin-bottom:12px}.taser-state-card .icon{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;background:#ffffff0d}.taser-state-card .label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute)}.taser-state-card .value{font-size:16px;font-weight:700;letter-spacing:.02em}.taser-state-card .timer{margin-left:auto;font-family:var(--mono);font-size:18px;font-weight:700}.taser-state-card.safe{border-color:var(--green-2);background:#1fbf5c0f}.taser-state-card.safe .value{color:var(--green-2)}.taser-state-card.armed{border-color:var(--amber);background:#ef9f2714}.taser-state-card.armed .value{color:var(--amber-2)}.taser-state-card.firing,.taser-state-card.fired{border-color:var(--red-2);background:#e24b4a1a}.taser-state-card.firing .value,.taser-state-card.fired .value{color:var(--red-2)}.taser-state-card.error{border-color:var(--red-2);background:#e24b4a26}.taser-state-card.error .value{color:var(--red-2)}.taser-btn-row{display:flex;gap:14px}.taser-btn{flex:1;padding:12px 16px;border-radius:8px;border:1.5px solid;font-weight:800;letter-spacing:.08em;font-size:13px;text-transform:uppercase;background:var(--bg-3);color:var(--text);border-color:var(--line);transition:all .12s}.taser-btn:disabled{opacity:.4;cursor:not-allowed}.taser-btn.arm:not(:disabled){background:#ef9f2726;color:var(--amber-2);border-color:var(--amber)}.taser-btn.arm:not(:disabled):hover{background:#ef9f2740}.taser-btn.fire{margin-top:4px;flex:1.4}.taser-btn.fire:not(:disabled){background:var(--red);color:#fff;border-color:var(--red-2)}.taser-btn.fire:not(:disabled):hover{background:var(--red-2)}.taser-btn.disarm{background:var(--bg-3);color:var(--text-mute);border-color:var(--line)}.taser-tooltip{font-size:10px;color:var(--text-dim);font-style:italic;margin-top:8px}.audit-list{max-height:280px;overflow-y:auto;font-size:11px;font-family:var(--mono)}.audit-entry{display:flex;gap:8px;padding:4px 0;border-bottom:1px dashed var(--line);color:var(--text-mute)}.audit-entry .t{color:var(--text-dim);flex:0 0 64px}.audit-entry .m{color:var(--text);flex:1}.audit-entry.teal .m{color:var(--teal-2)}.audit-entry.blue .m{color:var(--blue-2)}.audit-entry.amber .m{color:var(--amber-2);font-weight:600}.audit-entry.red .m{color:var(--red-2);font-weight:700;text-transform:uppercase}.audit-entry.green .m{color:var(--green-2)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#050709c7;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.modal{width:520px;max-width:calc(100vw - 32px);background:var(--bg-2);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.modal.lg{width:620px}.modal .head{padding:18px 22px 14px;border-bottom:1px solid var(--line)}.modal .head h2{margin:0;font-size:16px;font-weight:700;letter-spacing:.02em}.modal .head.danger h2{color:var(--red-2);text-transform:uppercase;letter-spacing:.06em}.modal .body{padding:18px 22px;font-size:13px;line-height:1.55}.modal .body p{margin:0 0 12px;color:var(--text)}.modal .body p.mono{font-family:var(--mono);font-size:12px}.modal .body .target-preview{width:100%;height:180px;background:radial-gradient(ellipse at 50% 60%,rgba(34,96,56,.5) 0%,transparent 50%),linear-gradient(180deg,#07120d,#060c08);border-radius:8px;position:relative;margin:10px 0 14px;overflow:hidden;border:1px solid var(--line)}.modal .body .target-preview .ai-box{position:absolute;left:38%;top:28%;width:110px;height:130px;border:2px solid var(--amber);border-radius:2px}.modal .body .target-preview .ai-box:before{content:"T1 — 87%";position:absolute;top:-18px;left:-2px;background:var(--amber);color:#2a1f0a;font-size:10px;font-family:var(--mono);font-weight:700;padding:1px 6px}.modal .body .target-preview .ai-victim{position:absolute;left:60%;top:38%;width:80px;height:110px;background:radial-gradient(ellipse at 50% 25%,#f0a978 0%,#884e2c 50%,transparent 70%);border-radius:30px 30px 14px 14px;filter:blur(.5px)}.modal .body .target-preview .ai-target-fig{position:absolute;left:41%;top:32%;width:70px;height:110px;background:radial-gradient(ellipse at 50% 25%,#c08a6e 0%,#4a3326 60%,transparent 70%);border-radius:26px 26px 12px 12px;filter:blur(.5px)}.modal .warning-banner{background:#e24b4a24;border:1px solid rgba(226,75,74,.4);color:#ffcdcc;padding:10px 14px;border-radius:6px;font-size:12px;margin-bottom:14px;display:flex;align-items:flex-start;gap:10px}.modal .warning-banner .icon{color:var(--red-2);font-size:16px;line-height:1}.modal .confirm-input{width:100%;padding:10px 12px;background:var(--bg-1);border:1px solid var(--line);border-radius:6px;color:var(--text);font-family:var(--mono);font-size:13px;letter-spacing:.1em;margin-bottom:6px}.modal .confirm-input:focus{border-color:var(--red-2);outline:none}.modal .actions{padding:14px 22px;display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);background:var(--bg-1)}.btn{padding:9px 16px;border-radius:6px;font-weight:600;font-size:13px;border:1px solid var(--line);background:var(--bg-3);color:var(--text);transition:all .12s}.btn:hover{background:var(--bg-4)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.arm{background:var(--amber);color:#2a1f0a;border-color:var(--amber-2)}.btn.arm:hover:not(:disabled){background:var(--amber-2)}.btn.fire{background:var(--red);color:#fff;border-color:var(--red-2)}.btn.fire:hover:not(:disabled){background:var(--red-2)}.btn.ghost{background:transparent}.toast-wrap{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:200;pointer-events:none}.toast{background:var(--bg-2);border:1px solid var(--line);border-left:3px solid var(--blue-2);padding:10px 14px;border-radius:6px;font-size:12px;color:var(--text);box-shadow:var(--shadow);min-width:280px;pointer-events:auto;animation:toast-in .18s ease-out}.toast.error{border-left-color:var(--red-2)}.toast.warn{border-left-color:var(--amber)}.toast.success{border-left-color:var(--green-2)}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.page{flex:1;overflow-y:auto;padding:24px 32px;background:var(--bg-0)}.page h1{margin:0 0 6px;font-size:22px;font-weight:700;color:var(--text)}.page .sub{margin:0 0 22px;font-size:13px;color:var(--text-mute)}.cases-table{width:100%;border-collapse:collapse;background:var(--bg-1);border:1px solid var(--line);border-radius:8px;overflow:hidden;font-size:12px}.cases-table th{background:var(--bg-2);text-align:left;padding:12px 14px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute);font-weight:600;border-bottom:1px solid var(--line)}.cases-table td{padding:12px 14px;border-bottom:1px solid var(--line);color:var(--text)}.cases-table tr:last-child td{border-bottom:none}.cases-table tr:hover td{background:var(--bg-2)}.cases-table .caseid{font-family:var(--mono)}.cases-table .actions-cell .btn{padding:5px 10px;font-size:11px}.filters{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}.filters input,.filters select{background:var(--bg-2);border:1px solid var(--line);border-radius:6px;padding:7px 10px;color:var(--text);font-size:12px}.filters .chip{padding:5px 10px;border-radius:99px;background:var(--bg-2);border:1px solid var(--line);color:var(--text-mute);font-size:11px;cursor:pointer}.filters .chip.on{background:var(--blue);color:#fff;border-color:var(--blue-2)}.fleet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.fleet-card{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:18px}.fleet-card .head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px}.fleet-card .id{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--text)}.fleet-card .name{font-size:11px;color:var(--text-mute)}.fleet-card .field{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin-bottom:8px}.fleet-card .field .k{color:var(--text-mute)}.fleet-card .field .v{color:var(--text);font-family:var(--mono)}.fleet-card .rth{margin-top:12px;width:100%;padding:8px 12px;border-radius:6px;background:#e24b4a1f;color:var(--red-2);border:1px solid rgba(226,75,74,.4);font-size:12px;font-weight:700;letter-spacing:.04em}.settings-grid{display:grid;grid-template-columns:240px 1fr;background:var(--bg-1);border:1px solid var(--line);border-radius:10px;overflow:hidden;max-width:920px}.settings-grid .row{display:contents}.settings-grid .label-cell{padding:14px 18px;background:var(--bg-2);border-bottom:1px solid var(--line);font-size:12px;color:var(--text-mute)}.settings-grid .value-cell{padding:14px 18px;border-bottom:1px solid var(--line);font-size:13px;color:var(--text);display:flex;align-items:center;gap:10px}.settings-grid input[type=number],.settings-grid input[type=text],.settings-grid select{background:var(--bg-2);border:1px solid var(--line);border-radius:6px;padding:6px 10px;color:var(--text);font-size:13px;width:200px}.toggle{width:40px;height:22px;background:var(--bg-3);border:1px solid var(--line);border-radius:99px;position:relative;cursor:pointer;transition:background .12s}.toggle:after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;background:var(--text-mute);border-radius:50%;transition:all .12s}.toggle.on{background:var(--blue);border-color:var(--blue-2)}.toggle.on:after{left:20px;background:#fff}.standby{flex:1;display:flex;flex-direction:column;padding:22px 28px;overflow-y:auto;background:var(--bg-0)}.standby .banner{display:flex;align-items:center;gap:14px;background:#1fbf5c14;border:1px solid rgba(31,191,92,.35);border-radius:8px;padding:14px 18px;margin-bottom:18px}.standby .banner .dot{width:10px;height:10px;border-radius:50%;background:var(--green-2);box-shadow:0 0 #1fbf5c99;animation:pulse-green 2s infinite}.standby .banner .title{color:var(--green-2);font-weight:700;letter-spacing:.04em}.standby .banner .sub{color:var(--text-mute);font-size:12px}@keyframes pulse-green{0%{box-shadow:0 0 #1fbf5c99}70%{box-shadow:0 0 0 12px #1fbf5c00}to{box-shadow:0 0 #1fbf5c00}}.standby .map-large{height:360px;border-radius:10px;overflow:hidden;border:1px solid var(--line);margin-bottom:16px}.standby .metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}.standby .metric{background:var(--bg-1);border:1px solid var(--line);border-radius:8px;padding:14px}.standby .metric .label{font-size:11px;color:var(--text-mute);letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px}.standby .metric .value{font-size:22px;font-weight:700;color:var(--text);font-family:var(--mono)}.standby .metric .delta{font-size:11px;color:var(--text-mute);margin-top:4px}.standby .recent-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-bottom:16px}.standby .recent-strip .card{background:var(--bg-1);border:1px solid var(--line);padding:10px 12px;border-radius:8px;font-size:12px}.standby .recent-strip .card .id{font-family:var(--mono);color:var(--text-mute);font-size:11px}.standby .recent-strip .card .name{font-weight:600;margin:4px 0}.standby .demo-trigger{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;background:var(--blue);color:#fff;border:1px solid var(--blue-2);border-radius:8px;font-size:13px;font-weight:600;box-shadow:0 4px 12px #1e5ca566}.standby .demo-trigger:hover{background:var(--blue-2)}.standby h2{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-mute);margin:18px 0 10px;font-weight:700}.marker-sos{width:18px;height:18px;background:var(--red-2);border:3px solid white;border-radius:50%;box-shadow:0 0 #e24b4ab3;animation:pulse-red 1.5s infinite}.marker-drone{width:14px;height:14px;background:var(--amber);border:2px solid white;border-radius:2px;transform:rotate(45deg)}.marker-base{width:14px;height:14px;background:var(--blue-2);border:2px solid white;border-radius:2px}.marker-base.empty{background:transparent;border-color:var(--blue-2)}.marker-pcr{width:16px;height:16px;background:var(--blue-2);border:2px solid white;transform:rotate(45deg)}@keyframes pulse-red{0%{box-shadow:0 0 #e24b4ab3}70%{box-shadow:0 0 0 14px #e24b4a00}to{box-shadow:0 0 #e24b4a00}}.leaflet-popup-content-wrapper{background:var(--bg-2)!important;color:var(--text)!important;border:1px solid var(--line)}.leaflet-popup-tip{background:var(--bg-2)!important}.leaflet-popup-content{font-size:12px!important;margin:10px 12px!important}.leaflet-popup-content .pop-title{font-weight:700;margin-bottom:4px}.leaflet-popup-content .pop-row{display:flex;gap:8px;font-size:11px;color:var(--text-mute)}.leaflet-popup-content .pop-row .k{min-width:60px}.leaflet-popup-content .pop-row .v{color:var(--text);font-family:var(--mono)}.demo-fab{position:fixed;bottom:14px;right:14px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);z-index:30;font-size:12px;overflow:hidden;width:240px}.demo-fab .head{padding:8px 12px;background:var(--bg-3);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.06em;font-size:11px;text-transform:uppercase;color:var(--text-mute)}.demo-fab .head .dot{width:6px;height:6px;background:var(--purple);border-radius:50%;box-shadow:0 0 6px var(--purple)}.demo-fab .head .close-x{background:transparent;border:none;color:var(--text-mute);font-size:18px;line-height:1;padding:0 4px;cursor:pointer}.demo-fab .head .close-x:hover{color:var(--text)}.demo-fab .body{padding:10px 12px;display:flex;flex-direction:column;gap:8px}.demo-fab .btn{padding:7px 12px;font-size:11px;text-align:center;justify-content:center}.demo-fab .btn.primary{background:var(--red);color:#fff;border-color:var(--red-2)}.demo-fab .btn.primary:hover{background:var(--red-2)}.demo-fab .small{font-size:10px;color:var(--text-dim);line-height:1.4}.demo-fab .kbd-hints{margin-top:4px;padding-top:8px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:4px;font-size:10px;color:var(--text-dim)}.demo-fab .kbd-hints kbd{display:inline-block;padding:1px 5px;margin:0 2px;background:var(--bg-1);border:1px solid var(--line);border-radius:3px;font-family:var(--mono);font-size:9px;color:var(--text)}.demo-fab-collapsed{position:fixed;bottom:14px;right:14px;background:var(--bg-2);border:1px solid var(--line);border-radius:99px;padding:6px 12px 6px 10px;box-shadow:var(--shadow);z-index:30;display:inline-flex;align-items:center;gap:8px;color:var(--text-mute);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.demo-fab-collapsed:hover{color:var(--text);border-color:var(--line-strong)}.demo-fab-collapsed .dot{width:6px;height:6px;background:var(--purple);border-radius:50%;box-shadow:0 0 6px var(--purple)}.incident-tabs{display:flex;gap:2px;background:var(--bg-2);border-bottom:1px solid var(--line);padding:0 12px;height:36px;flex:0 0 36px;overflow-x:auto}.incident-tabs .tab{display:flex;align-items:center;gap:8px;padding:0 14px;background:transparent;border:none;color:var(--text-mute);font-size:12px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;font-family:inherit}.incident-tabs .tab .pulse-s{width:6px;height:6px;border-radius:50%;background:var(--red-2);box-shadow:0 0 6px var(--red-2);animation:pulse 1.5s infinite}.incident-tabs .tab.active{color:var(--text);border-bottom-color:var(--red-2)}.incident-tabs .tab:hover{color:var(--text)}.incident-tabs .tab .caseid{font-family:var(--mono);font-size:11px;color:var(--text-dim)}.notes-area{width:100%;resize:none;background:var(--bg-2);border:1px solid var(--line);border-radius:6px;padding:8px 10px;color:var(--text);font-family:var(--sans);font-size:12px;min-height:60px;outline:none}.notes-area:focus{border-color:var(--blue-2)}.notes-hint{font-size:10px;color:var(--text-dim);margin-top:4px}.conn-status{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-mute);padding:3px 10px;border-radius:99px;background:var(--bg-2);border:1px solid var(--line)}.conn-status .dot{width:6px;height:6px;border-radius:50%;background:var(--green-2);box-shadow:0 0 6px var(--green-2)}.conn-status.bad .dot{background:var(--red-2);box-shadow:0 0 6px var(--red-2)}.conn-status.bad{color:var(--red-2)}.notif-bell{position:relative;background:transparent;border:1px solid var(--line);border-radius:6px;padding:4px 8px;color:var(--text-mute);cursor:pointer;font-size:14px}.notif-bell:hover{color:var(--text);border-color:var(--line-strong)}.notif-bell .count{position:absolute;top:-4px;right:-4px;background:var(--red-2);color:#fff;font-size:9px;font-weight:700;border-radius:99px;min-width:16px;height:16px;display:flex;align-items:center;justify-content:center;padding:0 4px}.notif-pop{position:absolute;top:54px;right:100px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);min-width:320px;max-width:400px;max-height:380px;overflow-y:auto;z-index:40}.notif-pop .head-bar{padding:10px 14px;border-bottom:1px solid var(--line);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-mute)}.notif-pop .entry{padding:10px 14px;border-bottom:1px solid var(--line);font-size:12px}.notif-pop .entry:last-child{border-bottom:none}.notif-pop .entry .t{font-size:10px;color:var(--text-dim);font-family:var(--mono)}.notif-pop .empty{padding:20px 14px;text-align:center;color:var(--text-dim);font-size:12px}.modal .reasons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 14px}.modal .reasons .reason{padding:10px 12px;border-radius:6px;border:1px solid var(--line);background:var(--bg-3);cursor:pointer;font-size:12px;color:var(--text);text-align:left;transition:all .12s}.modal .reasons .reason:hover{border-color:var(--line-strong)}.modal .reasons .reason.active{border-color:var(--green-2);background:#1fbf5c1f;color:var(--green-2)}.modal .reasons .reason .ttl{font-weight:700;margin-bottom:2px}.modal .reasons .reason .sub{font-size:11px;color:var(--text-dim)}.quick-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.quick-actions .qa{padding:5px 10px;border-radius:5px;background:var(--bg-3);border:1px solid var(--line);color:var(--text-mute);font-size:11px;cursor:pointer}.quick-actions .qa:hover{color:var(--text);border-color:var(--line-strong)}.analytics-page .page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px}.analytics-page .range-toggle{display:flex;gap:4px}.analytics-page .range-toggle .chip{padding:6px 12px;border-radius:6px;background:var(--bg-2);border:1px solid var(--line);color:var(--text-mute);font-size:11px;font-weight:700;letter-spacing:.06em;cursor:pointer}.analytics-page .range-toggle .chip.on{background:var(--blue);color:#fff;border-color:var(--blue-2)}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}.kpi{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:12px 14px;border-left:3px solid var(--blue-2)}.kpi.good{border-left-color:var(--green-2)}.kpi.warn,.kpi.amber{border-left-color:var(--amber)}.kpi.danger{border-left-color:var(--red-2)}.kpi.dim{border-left-color:var(--text-dim)}.kpi .lbl{font-size:10px;letter-spacing:.12em;color:var(--text-mute);text-transform:uppercase;margin-bottom:6px}.kpi .val{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--text);line-height:1.1}.kpi .sub{font-size:11px;color:var(--text-dim);margin-top:2px}.analytics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.analytics-card{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;overflow:hidden}.analytics-card.full{grid-column:1 / -1}.analytics-card .head{padding:14px 16px 8px;display:flex;align-items:flex-start;justify-content:space-between}.analytics-card .ttl{font-size:12px;font-weight:700;color:var(--text);letter-spacing:.04em}.analytics-card .sub{font-size:11px;color:var(--text-mute);margin-top:2px}.analytics-card .body{padding:4px 12px 14px}.analytics-card .legend{display:flex;flex-direction:column;gap:4px;padding:0 8px 4px}.analytics-card .legend .row{display:flex;align-items:center;gap:8px;font-size:11px}.analytics-card .legend .row .dot{width:8px;height:8px;border-radius:2px}.analytics-card .legend .row .name{color:var(--text-mute);flex:1}.analytics-card .legend .row .val{color:var(--text);font-family:var(--mono)}.leaderboard{width:100%;border-collapse:collapse;font-size:12px}.leaderboard th{text-align:left;padding:8px 14px;font-size:10px;letter-spacing:.12em;color:var(--text-mute);text-transform:uppercase;border-bottom:1px solid var(--line)}.leaderboard td{padding:10px 14px;border-bottom:1px solid var(--line);color:var(--text)}.leaderboard tr:last-child td{border-bottom:none}.leaderboard tr:hover td{background:var(--bg-2)}.leaderboard .rank{display:inline-block;margin-right:8px;font-family:var(--mono);font-size:11px;color:var(--text-mute);font-weight:700;background:var(--bg-3);padding:1px 6px;border-radius:3px;border:1px solid var(--line)}@media (max-width: 1100px){.analytics-grid,.kpi-grid{grid-template-columns:repeat(2,1fr)}}.insights-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}.insight{background:var(--bg-1);border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:flex;align-items:center;gap:12px}.insight .ico{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}.insight .ico.blue{background:#2f7dd129;color:var(--blue-2)}.insight .ico.teal{background:#18a07e29;color:var(--teal-2)}.insight .ico.amber{background:#ef9f2729;color:var(--amber-2)}.insight .ico.red{background:#e24b4a29;color:var(--red-2)}.insight .lbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-mute)}.insight .val{font-family:var(--mono);font-size:18px;font-weight:700;color:var(--text)}.video-stage .sweep-bar{position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent 0%,rgba(94,209,137,.9) 50%,transparent 100%);filter:blur(.5px);animation:sweep 3.6s linear infinite}@keyframes sweep{0%{transform:translateY(0)}to{transform:translateY(100vh)}}.video-stage .vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 50%,rgba(0,0,0,.5) 100%)}.video-stage .scanning-pill{position:absolute;top:50%;left:50%;transform:translate(-50%,calc(-50% + 70px));font-family:var(--mono);font-size:10px;color:#b4ffc8b3;letter-spacing:.18em;text-transform:uppercase;background:#0006;border:1px solid rgba(94,209,137,.3);border-radius:99px;padding:3px 12px}.video-stage .scanning-pill:before{content:"";display:inline-block;vertical-align:middle;width:5px;height:5px;border-radius:50%;background:#5dd189;margin-right:6px;box-shadow:0 0 6px #5dd189;animation:blink .9s infinite}
