:root{--bg:#070b16;--panel:rgba(255,255,255,.045);--line:rgba(255,255,255,.09);--accent:#22d3ee;--accent2:#6366f1;--ok:#34d399;--warn:#fbbf24;--bad:#f87171;--mut:#94a3b8}
html,body{min-height:100%}
body{font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:#e5e7eb;
  background:radial-gradient(900px 500px at 8% -8%,rgba(99,102,241,.28),transparent 60%),radial-gradient(800px 480px at 100% 0,rgba(34,211,238,.16),transparent 60%),var(--bg);background-attachment:fixed}
.text-muted,.form-text{color:var(--mut)!important}
a{color:var(--accent)}a:hover{color:#67e8f9}
/* sidebar */
.sidebar{position:fixed;inset:0 auto 0 0;width:236px;padding:20px 14px;background:rgba(8,12,24,.72);backdrop-filter:blur(14px);border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:1030;transition:transform .25s}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.15rem;letter-spacing:.4px;color:#fff;text-decoration:none;padding:4px 10px 18px}
.brand i{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent2),var(--accent));box-shadow:0 0 18px rgba(34,211,238,.45)}
.side-link{display:flex;align-items:center;gap:12px;padding:10px 12px;margin:2px 0;border-radius:12px;color:#cbd5e1;text-decoration:none;font-size:.93rem;transition:.15s}
.side-link i{font-size:1.05rem;opacity:.85}
.side-link:hover{background:rgba(255,255,255,.06);color:#fff}
.side-link.active{color:#fff;background:linear-gradient(90deg,rgba(99,102,241,.35),rgba(34,211,238,.12));box-shadow:inset 2px 0 0 var(--accent)}
.side-foot{margin-top:auto;border-top:1px solid var(--line);padding-top:14px;font-size:.85rem}
.main{margin-left:236px;padding:26px 28px}
.topbar{display:none}
@media(max-width:991px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:none}.main{margin-left:0;padding:16px}
  .topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:rgba(8,12,24,.8);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1020}}
/* surfaces */
.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;backdrop-filter:blur(10px);box-shadow:0 8px 30px rgba(0,0,0,.25);color:inherit}
.card-body{color:inherit}
h3,h4,h5{font-weight:700;letter-spacing:.2px}
.page-title{background:linear-gradient(90deg,#fff,#a5b4fc 60%,var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}
.stat{position:relative;overflow:hidden}
.stat::after{content:"";position:absolute;right:-30px;top:-30px;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle,rgba(34,211,238,.28),transparent 70%)}
.stat .v{font-size:1.9rem;font-weight:700;line-height:1.1}
.stat .l{font-size:.78rem;text-transform:uppercase;letter-spacing:1px;color:var(--mut)}
.stat .i{font-size:1.3rem;color:var(--accent)}
/* forms + buttons */
.form-control,.form-select{background:rgba(255,255,255,.05);border:1px solid var(--line);color:#f1f5f9;border-radius:12px}
.form-control:focus,.form-select:focus{background:rgba(255,255,255,.08);border-color:var(--accent);box-shadow:0 0 0 .2rem rgba(34,211,238,.15);color:#fff}
.form-control::placeholder{color:#64748b}
.form-select option{background:#0f172a;color:#e5e7eb}
.btn{border-radius:12px;font-weight:600}
.btn-primary{border:0;background:linear-gradient(135deg,var(--accent2),#06b6d4);box-shadow:0 4px 18px rgba(99,102,241,.35)}
.btn-primary:hover{filter:brightness(1.12)}
.btn-outline-primary,.btn-outline-secondary,.btn-outline-success,.btn-outline-light{border-color:var(--line);color:#cbd5e1}
.btn-outline-primary:hover{background:rgba(99,102,241,.25);border-color:var(--accent2);color:#fff}
.btn-outline-success:hover{background:rgba(52,211,153,.2);border-color:var(--ok);color:#fff}
.btn-outline-secondary:hover{background:rgba(255,255,255,.08);color:#fff}
.btn-link{color:var(--accent)}
/* tables */
.table{--bs-table-bg:transparent;--bs-table-color:#e5e7eb;--bs-table-hover-bg:rgba(255,255,255,.04);--bs-table-hover-color:#fff;--bs-table-border-color:var(--line);margin:0}
.table thead th{font-size:.74rem;text-transform:uppercase;letter-spacing:1px;color:var(--mut);font-weight:600;border-bottom:1px solid var(--line);background:rgba(255,255,255,.03)}
.table tfoot td{background:rgba(255,255,255,.04);border-top:1px solid var(--line)}
.table-responsive.card{overflow:hidden}
.thumb{width:56px;height:56px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.alert{border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.05);color:#e5e7eb}
.alert-danger{border-color:rgba(248,113,113,.4);background:rgba(248,113,113,.1)}
.alert-warning{border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.1)}
.alert-success{border-color:rgba(52,211,153,.4);background:rgba(52,211,153,.1)}
/* status pills */
.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.3px;border:1px solid transparent}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.pill.live{color:var(--ok);background:rgba(52,211,153,.12);border-color:rgba(52,211,153,.35)}
.pill.live::before{box-shadow:0 0 0 0 rgba(52,211,153,.7);animation:pulse 1.6s infinite}
.pill.stale{color:var(--warn);background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.35)}
.pill.ended{color:#7dd3fc;background:rgba(125,211,252,.1);border-color:rgba(125,211,252,.3)}
.pill.off{color:#94a3b8;background:rgba(148,163,184,.1);border-color:rgba(148,163,184,.25)}
@keyframes pulse{70%{box-shadow:0 0 0 7px rgba(52,211,153,0)}100%{box-shadow:0 0 0 0 rgba(52,211,153,0)}}
.badge{border-radius:999px;font-weight:600}
/* command center */
#map{height:66vh;min-height:380px;border-radius:18px;border:1px solid var(--line)}
.map-wrap{position:relative}
.map-hud{position:absolute;left:14px;top:14px;z-index:5;display:flex;gap:8px;flex-wrap:wrap}
.chipf{cursor:pointer;user-select:none;padding:5px 12px;border-radius:999px;font-size:.78rem;font-weight:600;background:rgba(8,12,24,.78);border:1px solid var(--line);color:#cbd5e1;backdrop-filter:blur(8px)}
.chipf.on{background:linear-gradient(135deg,var(--accent2),#06b6d4);color:#fff;border-color:transparent}
.emp-list{max-height:66vh;overflow:auto}
.emp{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:14px;cursor:pointer;border:1px solid transparent;transition:.15s}
.emp:hover{background:rgba(255,255,255,.06);border-color:var(--line)}
.avatar{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--accent2),#06b6d4);flex:none}
.emp .n{font-weight:600;line-height:1.15}.emp .s{font-size:.76rem;color:var(--mut)}
.scan{height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.7;animation:scan 3s linear infinite}
@keyframes scan{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
/* login */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{width:100%;max-width:410px;padding:34px}
.logo-glow{width:62px;height:62px;border-radius:18px;display:grid;place-items:center;font-size:1.7rem;color:#fff;margin:0 auto 14px;background:linear-gradient(135deg,var(--accent2),var(--accent));box-shadow:0 0 34px rgba(34,211,238,.55)}
