/* ============================================================================
   AEGIS — Field Security Operations Suite
   Shared design system  ·  dark operations-console aesthetic
   Unifies the portal, Threat Watch, and Settings with Trip Command + Intel WB.
   ============================================================================ */
:root{
  --bg:#0A0A0A; --bg-2:#0E0E0E; --bg-3:#060606;
  --panel:#121212; --panel-2:#161616; --panel-3:#1A1A1A;
  --line:rgba(255,255,255,.07); --line-soft:rgba(255,255,255,.045); --line-bright:rgba(255,255,255,.13);
  --ink:#ECECEC; --ink-dim:#9A9A9A; --ink-faint:#858585;
  --brand:#E8632A; --brand-dim:#6E3318; --brand-rgb:232,99,42;
  /* Original identity: the primary action accent IS the tactical-orange brand. */
  --action-primary:var(--brand); --action-primary-dim:var(--brand-dim); --action-primary-rgb:var(--brand-rgb);
  /* Compatibility aliases: existing components consume --primary while new work uses semantic tokens. */
  --primary:var(--action-primary); --primary-dim:var(--action-primary-dim); --accent-rgb:var(--action-primary-rgb); --primary-glow:rgba(var(--action-primary-rgb),.20);
  --amber:#d9a441; --amber-soft:#7a5e25;
  --cyan:#39c0ed; --green:#6fb98f; --orange:var(--brand); --red:#d96a5b; --violet:#9a8bd0; --pink:#d98ab0;
  /* brand emblem accents (orange-forward) */
  --olive:#b9b48a; --olive-dim:#6f6c4e; --nv:var(--brand); --nv-glow:rgba(var(--brand-rgb),.22);
  /* threat severity ramp (functional — kept) */
  --sev-low:#6fb98f; --sev-guarded:#9bbf6f; --sev-elevated:#d9a441; --sev-high:var(--brand); --sev-critical:#d96a5b;
  --shadow:0 14px 40px rgba(0,0,0,.6);
  --shadow-sm:0 1px 0 rgba(0,0,0,.5);
  --mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --display:'Chivo','IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --radius:6px;
  /* Blueprint-style controls use box-shadow "borders" (theme-aware ring colors). */
  --btn-ring:rgba(255,255,255,.10); --btn-ring-strong:rgba(255,255,255,.17); --ctl-radius:4px;
}

/* ============ LIGHT THEME ("daylight ops") ============ */
:root[data-theme="light"]{
  --bg:#EDEDED; --bg-2:#E6E6E6; --bg-3:#F6F6F6;
  --panel:#FFFFFF; --panel-2:#F4F4F4; --panel-3:#ECECEC;
  --line:rgba(0,0,0,.10); --line-soft:rgba(0,0,0,.06); --line-bright:rgba(0,0,0,.16);
  --ink:#1A1A1A; --ink-dim:#5E5E5E; --ink-faint:#666666;
  --brand:#C24E18; --brand-dim:#9A3E12; --brand-rgb:194,78,24;
  --action-primary:var(--brand); --action-primary-dim:var(--brand-dim); --action-primary-rgb:var(--brand-rgb);
  --primary:var(--action-primary); --primary-dim:var(--action-primary-dim); --accent-rgb:var(--action-primary-rgb); --primary-glow:rgba(var(--action-primary-rgb),.15);
  --btn-ring:rgba(0,0,0,.15); --btn-ring-strong:rgba(0,0,0,.24);
  --amber:#9c6d10; --amber-soft:#e3c98e;
  --green:#23784a; --orange:var(--brand); --red:#b14437; --violet:#65589f; --pink:#a05578;
  --sev-low:#23784a; --sev-guarded:#5d8a2e; --sev-elevated:#9c6d10; --sev-high:var(--brand); --sev-critical:#b14437;
  --olive:#6f6c4e; --olive-dim:#b9b48a; --nv:var(--brand); --nv-glow:rgba(var(--brand-rgb),.18);
  --shadow:0 10px 30px rgba(0,0,0,.10); --shadow-sm:0 1px 0 rgba(0,0,0,.06);
}
:root[data-theme="light"] body{background-image:
  radial-gradient(1100px 600px at 88% -12%, rgba(var(--accent-rgb),.05), transparent 62%)}
[data-theme="light"] ::selection{background:rgba(var(--accent-rgb),.22);color:var(--ink)}
[data-theme="light"] .btn:hover{color:var(--ink)}
[data-theme="light"] .btn.primary{color:#fff}
[data-theme="light"] .btn.primary:hover{background:var(--primary);color:#fff}
[data-theme="light"] .stat .num{color:var(--ink)}
[data-theme="light"] .class-banner{background:var(--amber-soft);color:#3a2c08}
[data-theme="light"] .leaflet-container{background:#dfe6ec}
[data-theme="light"] .threat-pin span{color:#fff}

/* ============================================================
   CLASSIC SKIN — original teal palette  (toggle: html[data-skin="classic"])
   Default (no data-skin) is the new tactical-orange identity.
   ============================================================ */
:root[data-skin="classic"]{
  --bg:#0a0e14; --bg-2:#0e131c; --bg-3:#070a0f;
  --panel:#131a24; --panel-2:#192230; --panel-3:#1f2a3a;
  --line:#243040; --line-soft:#1b2430; --line-bright:#33445a;
  --ink:#dce4ec; --ink-dim:#8b97a6; --ink-faint:#8392a1;
  --brand:#3fb6c4; --brand-dim:#2a7d87; --brand-rgb:63,182,196;
  --action-primary:var(--brand); --action-primary-dim:var(--brand-dim); --action-primary-rgb:var(--brand-rgb);
  --primary:var(--action-primary); --primary-dim:var(--action-primary-dim); --accent-rgb:var(--action-primary-rgb); --primary-glow:rgba(var(--action-primary-rgb),.18);
  --amber:#d9a441; --amber-soft:#7a5e25;
  --green:#6fb98f; --orange:#e0834a; --red:#d96a5b; --violet:#9a8bd0; --pink:#d98ab0;
  --olive:#b9b48a; --olive-dim:#6f6c4e; --nv:#46d369; --nv-glow:rgba(70,211,105,.22);
  --sev-low:#6fb98f; --sev-guarded:#9bbf6f; --sev-elevated:#d9a441; --sev-high:#e0834a; --sev-critical:#d96a5b;
  --shadow:0 10px 34px rgba(0,0,0,.5); --shadow-sm:0 4px 14px rgba(0,0,0,.35);
  --mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --display:'Chivo','IBM Plex Sans',system-ui,sans-serif;
  --radius:11px;
}
:root[data-skin="classic"][data-theme="light"]{
  --bg:#eef1f4; --bg-2:#e6eaef; --bg-3:#f7f9fb;
  --panel:#ffffff; --panel-2:#f2f5f8; --panel-3:#e8edf3;
  --line:#d4dbe3; --line-soft:#e3e8ee; --line-bright:#b7c3d0;
  --ink:#1d2630; --ink-dim:#4f5e6d; --ink-faint:#5c6b7a;
  --brand:#157f8e; --brand-dim:#0e5a66; --brand-rgb:21,127,142;
  --action-primary:var(--brand); --action-primary-dim:var(--brand-dim); --action-primary-rgb:var(--brand-rgb);
  --primary:var(--action-primary); --primary-dim:var(--action-primary-dim); --accent-rgb:var(--action-primary-rgb); --primary-glow:rgba(var(--action-primary-rgb),.15);
  --btn-ring:rgba(0,0,0,.15); --btn-ring-strong:rgba(0,0,0,.24);
  --amber:#9c6d10; --amber-soft:#e3c98e;
  --green:#23784a; --orange:#a85419; --red:#b14437; --violet:#65589f; --pink:#a05578;
  --sev-low:#23784a; --sev-guarded:#5d8a2e; --sev-elevated:#9c6d10; --sev-high:#a85419; --sev-critical:#b14437;
  --olive:#6f6c4e; --olive-dim:#b9b48a; --nv:#188a43; --nv-glow:rgba(24,138,67,.18);
  --shadow:0 10px 30px rgba(25,35,45,.12); --shadow-sm:0 4px 12px rgba(25,35,45,.08);
}
:root[data-skin="classic"] body{
  background-image:
    radial-gradient(900px 500px at 85% -10%, rgba(var(--accent-rgb),.07), transparent 60%),
    radial-gradient(700px 460px at -5% 110%, rgba(217,164,65,.05), transparent 60%),
    linear-gradient(rgba(var(--accent-rgb),.022) 1px,transparent 1px),
    linear-gradient(90deg,rgba(var(--accent-rgb),.022) 1px,transparent 1px);
  background-size:auto,auto,34px 34px,34px 34px;
}
:root[data-skin="classic"][data-theme="light"] body{
  background-image:
    linear-gradient(rgba(var(--accent-rgb),.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(var(--accent-rgb),.05) 1px,transparent 1px);
  background-size:34px 34px,34px 34px;
}
/* classic restores the original heavier display weights */
[data-skin="classic"] .brand h1{font-size:17px;font-weight:900;letter-spacing:.06em}
[data-skin="classic"] h2.section{font-size:21px;font-weight:900;letter-spacing:.02em}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
::selection{background:rgba(var(--accent-rgb),.28);color:#fff}
body{
  background:var(--bg); color:var(--ink);
  font-family:var(--sans); font-size:14px; line-height:1.5;
  min-height:100vh; -webkit-font-smoothing:antialiased;
  background-image:
    radial-gradient(1100px 600px at 88% -12%, rgba(var(--accent-rgb),.05), transparent 62%);
  background-attachment:fixed;
}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
::selection{background:rgba(var(--accent-rgb),.3);color:#fff}

/* ---------- classification banners ---------- */
.class-banner{
  background:var(--amber); color:#1a1305; text-align:center;
  font-family:var(--mono); font-weight:600; font-size:11px; letter-spacing:.18em;
  padding:4px 8px; text-transform:uppercase; position:relative; z-index:60;
}
.class-banner.bottom{position:fixed;bottom:0;left:0;right:0}

/* ---------- shell / top bar ---------- */
.topbar{
  display:flex; align-items:center; gap:16px; flex-wrap:wrap;
  padding:14px 22px; border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,var(--bg-2),rgba(10,14,20,.4));
  position:sticky; top:0; z-index:40; backdrop-filter:blur(8px);
}
.brand{display:flex;align-items:center;gap:13px;min-width:0}
.brand-logo{width:40px;height:40px;flex:none;border-radius:50%;filter:drop-shadow(0 0 7px var(--nv-glow))}
.seal{
  width:42px;height:42px;flex:none;border-radius:9px;
  border:1.5px solid var(--brand-dim); position:relative; overflow:hidden;
  display:grid;place-items:center; color:var(--brand);
  font-family:var(--mono); font-weight:700; font-size:15px; letter-spacing:.04em;
  background:radial-gradient(circle at 50% 35%,rgba(var(--brand-rgb),.16),transparent 70%);
  box-shadow:0 0 16px rgba(var(--brand-rgb),.22);
}
.seal::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(transparent 46%,rgba(var(--brand-rgb),.4) 50%,transparent 54%);
  background-size:100% 7px; animation:scan 3.2s linear infinite;
}
@keyframes scan{from{background-position:0 -22px}to{background-position:0 22px}}
.brand h1{font-family:var(--display);font-size:15px;font-weight:600;letter-spacing:.18em;line-height:1}
.brand .sub{font-family:var(--mono);font-size:9.5px;color:var(--ink-faint);letter-spacing:.2em;text-transform:uppercase;margin-top:4px}
.topbar .spacer{flex:1}
.dtg{font-family:var(--mono);font-size:11px;color:var(--primary);letter-spacing:.06em;text-align:right}
.dtg small{color:var(--ink-faint);display:block;font-size:8.5px;letter-spacing:.18em}

/* ---------- nav tabs ---------- */
nav.tabs{display:flex;gap:2px;padding:0 22px;background:var(--bg-2);border-bottom:1px solid var(--line);overflow-x:auto}
nav.tabs button{
  background:transparent;color:var(--ink-dim);padding:13px 17px;border:none;cursor:pointer;
  border-bottom:2px solid transparent;letter-spacing:.12em;white-space:nowrap;text-transform:uppercase;
  font-family:var(--mono);font-size:11px;font-weight:500;transition:.15s;
}
nav.tabs button:hover{color:var(--ink)}
nav.tabs button.active{color:var(--primary);border-bottom-color:var(--primary)}
nav.tabs button .ct{margin-left:7px;color:var(--ink-faint);background:var(--bg);padding:1px 6px;border-radius:10px;font-size:10px}

main{max-width:1320px;margin:0 auto;padding:24px 22px 70px}
.view{display:none;animation:fade .25s ease}
.view.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.row{display:flex;gap:14px;align-items:center;justify-content:space-between;margin-bottom:18px;flex-wrap:wrap}
h2.section{font-family:var(--display);font-size:19px;font-weight:500;letter-spacing:.06em}
h2.section small{font-family:var(--mono);font-size:10.5px;color:var(--ink-faint);font-weight:400;display:block;letter-spacing:.18em;text-transform:uppercase;margin-top:3px}

/* ---------- buttons — Palantir Blueprint style ----------
   Blueprint uses box-shadow "borders" (an inset 1px ring + a subtle drop shadow)
   instead of a real border, so the border can't fight the elevation or change the
   box size. Variants: default (subtle), primary/danger (solid intent fill), and
   ghost (minimal — transparent until hover). Orange is the primary intent. */
.btn{
  font-family:var(--sans);font-size:13px;font-weight:500;cursor:pointer;
  background:var(--panel-2);color:var(--ink);border:none;
  border-radius:var(--ctl-radius,4px);padding:6px 11px;min-height:30px;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;letter-spacing:.01em;
  box-shadow:inset 0 0 0 1px var(--btn-ring), 0 1px 2px rgba(0,0,0,.22);
  transition:box-shadow .1s ease,background .1s ease,color .1s ease,filter .1s ease;
}
.btn:hover{background:var(--panel-3);color:#fff;text-decoration:none;box-shadow:inset 0 0 0 1px var(--btn-ring-strong), 0 2px 4px rgba(0,0,0,.28)}
.btn:active{background:var(--panel);box-shadow:inset 0 0 0 1px var(--btn-ring-strong), inset 0 1px 2px rgba(0,0,0,.34)}
.btn:focus-visible{outline:none;box-shadow:inset 0 0 0 1px var(--btn-ring-strong), 0 0 0 2px var(--primary-glow)}
.btn.primary{background:var(--primary);color:#0A0A0A;font-weight:600;box-shadow:inset 0 0 0 1px rgba(0,0,0,.22), 0 1px 2px rgba(0,0,0,.3)}
.btn.primary:hover{background:var(--primary);color:#0A0A0A;filter:brightness(1.08)}
.btn.primary:active{filter:brightness(.9)}
.btn.ghost{background:transparent;box-shadow:none}
.btn.ghost:hover{background:rgba(var(--accent-rgb),.12);color:#fff;box-shadow:none}
.btn.ghost:active{background:rgba(var(--accent-rgb),.2)}
.btn.danger{color:var(--red)}
.btn.danger:hover{background:var(--red);color:#0A0A0A;box-shadow:inset 0 0 0 1px rgba(0,0,0,.22), 0 1px 2px rgba(0,0,0,.3)}
.btn.sm{min-height:24px;padding:3px 9px;font-size:12px}
.btn.mono{font-family:var(--mono);font-size:11px;letter-spacing:.06em}
.btn.block{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed;filter:none;box-shadow:inset 0 0 0 1px var(--btn-ring)}

/* ---------- cards ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);position:relative}
.card>.corner{position:absolute;top:-1px;right:-1px;width:15px;height:15px;border-top:2px solid var(--primary);border-right:2px solid var(--primary);border-radius:0 var(--radius) 0 0}
.card .hd{padding:14px 16px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:10px;justify-content:space-between}
.card .hd h3{font-size:13px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.card .hd .tag{font-family:var(--mono);font-size:9px;color:var(--ink-faint);letter-spacing:.15em}
.card .bd{padding:16px}

.grid{display:grid;gap:15px}
.cols-4{grid-template-columns:repeat(4,1fr)}
.cols-3{grid-template-columns:repeat(3,1fr)}
.cols-2{grid-template-columns:repeat(2,1fr)}
@media(max-width:1000px){.cols-4{grid-template-columns:repeat(2,1fr)}.cols-3,.cols-2{grid-template-columns:1fr}}

/* ---------- stat tiles ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:13px;margin-bottom:20px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;position:relative;overflow:hidden}
.stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary)}
.stat::after{content:"";position:absolute;right:-20px;top:-20px;width:70px;height:70px;border-radius:50%;background:radial-gradient(circle,var(--primary-glow),transparent 70%)}
.stat .lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;color:var(--ink-faint);text-transform:uppercase}
.stat .num{font-size:29px;font-weight:700;font-family:var(--mono);margin-top:6px;color:#fff;line-height:1}
.stat .meta{font-size:11px;color:var(--ink-dim);margin-top:4px}
.stat.green::before{background:var(--green)} .stat.green .num{color:var(--green)}
.stat.amber::before{background:var(--amber)} .stat.amber .num{color:var(--amber)}
.stat.orange::before{background:var(--orange)} .stat.orange .num{color:var(--orange)}
.stat.red::before{background:var(--red)} .stat.red .num{color:var(--red)}
.stat.violet::before{background:var(--violet)} .stat.violet .num{color:var(--violet)}

/* ---------- forms ---------- */
label.fl{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--ink-dim);text-transform:uppercase;margin:0 0 6px}
/* Blueprint-style inputs: box-shadow ring + faint inset depth; solid intent focus ring. */
input,select,textarea{
  width:100%;background:var(--bg);color:var(--ink);border:none;
  border-radius:var(--ctl-radius,4px);padding:7px 10px;font-family:var(--sans);font-size:13px;
  box-shadow:inset 0 0 0 1px var(--btn-ring), inset 0 1px 1px rgba(0,0,0,.16);
}
input:focus,select:focus,textarea:focus{outline:none;box-shadow:inset 0 0 0 1px var(--primary), 0 0 0 2px var(--primary-glow)}
input::placeholder,textarea::placeholder{color:var(--ink-faint)}
textarea{resize:vertical;min-height:78px;line-height:1.55}
.field{margin-bottom:14px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
@media(max-width:560px){.row2,.row3{grid-template-columns:1fr}}

/* ---------- tables ---------- */
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
td{padding:11px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
tr:hover td{background:rgba(var(--accent-rgb),.03)}
.clickrow{cursor:pointer}

/* ---------- pills / tags ---------- */
.pill{display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;padding:2px 9px;border-radius:20px;border:1px solid var(--line);text-transform:uppercase;white-space:nowrap}
.pill.int{color:var(--primary);border-color:var(--primary-dim)}
.chip{font-family:var(--mono);font-size:10px;background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:3px 9px;display:inline-flex;gap:6px;align-items:center}
.chip b{cursor:pointer;color:var(--ink-faint)}
.chip b:hover{color:var(--red)}

/* severity pills */
.sev{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:3px 9px;border-radius:6px;border:1px solid}
.sev .d{width:8px;height:8px;border-radius:50%}
.sev-low{color:var(--sev-low);border-color:var(--sev-low)} .sev-low .d{background:var(--sev-low)}
.sev-guarded{color:var(--sev-guarded);border-color:var(--sev-guarded)} .sev-guarded .d{background:var(--sev-guarded)}
.sev-elevated{color:var(--sev-elevated);border-color:var(--sev-elevated)} .sev-elevated .d{background:var(--sev-elevated)}
.sev-high{color:var(--sev-high);border-color:var(--sev-high)} .sev-high .d{background:var(--sev-high)}
.sev-critical{color:var(--sev-critical);border-color:var(--sev-critical)} .sev-critical .d{background:var(--sev-critical);box-shadow:0 0 7px var(--sev-critical)}

.empty{padding:42px 20px;text-align:center;color:var(--ink-faint);font-family:var(--mono);font-size:12px;letter-spacing:.08em;border:1px dashed var(--line);border-radius:var(--radius)}
.empty span{font-size:30px;display:block;margin-bottom:12px;opacity:.5}
.note{font-size:11px;color:var(--ink-faint);font-style:italic;line-height:1.55}
.hint{font-family:var(--mono);font-size:11px;color:var(--ink-faint);margin-top:6px}

/* ---------- toolbar / search ---------- */
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.toolbar .spacer{flex:1}
.search{position:relative;flex:0 0 270px;max-width:100%}
.search input{padding-left:32px}
.search::before{content:"\2315";position:absolute;left:11px;top:8px;color:var(--ink-faint);font-size:14px}

/* ---------- drawer + scrim ---------- */
.scrim{position:fixed;inset:0;background:rgba(4,7,11,.62);backdrop-filter:blur(3px);z-index:200;display:none}
.scrim.open{display:block}
.drawer{
  position:fixed;top:0;right:0;height:100vh;width:560px;max-width:95vw;z-index:201;
  background:var(--bg-2);border-left:1px solid var(--line);
  transform:translateX(100%);transition:transform .26s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;box-shadow:-22px 0 54px rgba(0,0,0,.55);
}
.drawer.open{transform:none}
.drawer .dh{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.drawer .dh h3{font-size:15px;font-weight:600}
.drawer .db{padding:20px;overflow:auto;flex:1}
.drawer .df{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}
.x{margin-left:auto;background:none;border:none;color:var(--ink-faint);font-size:21px;cursor:pointer;line-height:1}
.x:hover{color:var(--red)}
.kv{display:grid;grid-template-columns:140px 1fr;gap:7px 12px;font-size:13px}
.kv dt{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--ink-faint);text-transform:uppercase;padding-top:2px}
.kv dd{margin:0}
.report-text{font-family:var(--sans);font-size:14px;line-height:1.65;background:var(--panel);border:1px solid var(--line-soft);border-left:3px solid var(--primary-dim);border-radius:0 6px 6px 0;padding:13px 15px;white-space:pre-wrap}

/* ---------- toast ---------- */
.flash{position:fixed;bottom:42px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--panel-2);border:1px solid var(--primary-dim);color:var(--ink);padding:10px 18px;border-radius:9px;font-size:12.5px;z-index:300;opacity:0;transition:.3s;box-shadow:var(--shadow);font-family:var(--mono);letter-spacing:.04em;pointer-events:none}
.flash.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- leaflet theming ---------- */
.leaflet-popup-content-wrapper{background:var(--panel-2);color:var(--ink);border:1px solid var(--line-bright);border-radius:9px}
.leaflet-popup-tip{background:var(--panel-2);border:1px solid var(--line-bright)}
.leaflet-popup-content{font-family:var(--sans);margin:12px 14px;font-size:12.5px}
.leaflet-popup-content b{color:var(--primary)}
.leaflet-container{background:#070a0f;font-family:var(--mono)}
.threat-pin{display:grid;place-items:center;width:24px;height:24px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #070a0f;box-shadow:0 2px 7px rgba(0,0,0,.6)}
.threat-pin span{transform:rotate(45deg);font-size:11px;font-weight:900;color:#070a0f}

/* ---------- login screen ---------- */
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}
:root:not([data-skin="classic"]) .auth-wrap{
  background-image:
    linear-gradient(rgba(var(--accent-rgb),.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(var(--accent-rgb),.05) 1px,transparent 1px);
  background-size:34px 34px;
}
.auth-card{
  width:100%;max-width:420px;background:var(--panel);border:1px solid var(--line);
  border-radius:16px;box-shadow:var(--shadow);overflow:hidden;position:relative;
}
.auth-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--brand),var(--amber))}
.auth-head{padding:30px 28px 18px;text-align:center;border-bottom:1px solid var(--line-soft)}
.auth-head .seal{margin:0 auto 14px;width:54px;height:54px;font-size:18px}
.auth-logo{display:block;margin:0 auto 16px;width:104px;height:104px;border-radius:50%;
  filter:drop-shadow(0 0 16px var(--nv-glow));animation:authpulse 4s ease-in-out infinite}
@keyframes authpulse{0%,100%{filter:drop-shadow(0 0 12px var(--nv-glow))}50%{filter:drop-shadow(0 0 22px var(--nv-glow))}}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
.auth-head h1{font-family:var(--display);font-size:24px;font-weight:900;letter-spacing:.08em}
.auth-head p{font-family:var(--mono);font-size:10px;color:var(--ink-faint);letter-spacing:.2em;text-transform:uppercase;margin-top:6px}
.auth-body{padding:24px 28px 28px}
.auth-msg{font-size:12px;border-radius:7px;padding:9px 12px;margin-bottom:14px;font-family:var(--mono);letter-spacing:.02em}
.auth-msg.err{background:rgba(217,106,91,.12);border:1px solid var(--red);color:var(--red)}
.auth-msg.ok{background:rgba(111,185,143,.12);border:1px solid var(--green);color:var(--green)}
.auth-foot{padding:0 28px 24px;text-align:center}
.auth-foot .mode{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--ink-faint);text-transform:uppercase}
.mode-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:middle}

/* ============================================================
   OPERATOR SHELL — shared app launcher + session posture
   ============================================================ */
.aegis-operator-shell{
  display:flex;align-items:center;gap:9px;min-width:0;margin-left:8px;color:var(--ink);
  font-family:var(--sans,system-ui,sans-serif)
}
.aegis-shell-trigger{
  min-height:34px;display:inline-flex;align-items:center;gap:7px;padding:6px 9px;
  border:1px solid var(--line-bright,var(--line));border-radius:7px;background:var(--panel-2,var(--panel));
  color:var(--ink);font:700 10px/1 var(--mono,ui-monospace,monospace);letter-spacing:.07em;
  text-transform:uppercase;cursor:pointer;box-shadow:0 3px 12px rgba(0,0,0,.12)
}
.aegis-shell-trigger:hover,.aegis-operator-shell.is-open .aegis-shell-trigger{
  border-color:var(--primary);background:var(--primary-glow);color:var(--primary)
}
.aegis-shell-grid{width:15px;height:15px;display:grid;grid-template-columns:repeat(3,3px);grid-auto-rows:3px;gap:2px;place-content:center}
.aegis-shell-grid i{display:block;width:3px;height:3px;border-radius:1px;background:currentColor}
.aegis-shell-compact{min-width:150px;max-width:210px;display:grid;gap:2px;line-height:1.1}
.aegis-shell-compact>span{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap}
.aegis-shell-compact b{font:700 9.5px/1 var(--mono,ui-monospace,monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.aegis-shell-compact i,.aegis-shell-posture i{width:4px;height:4px;flex:none;border-radius:50%;background:var(--green)}
.aegis-operator-shell[data-status="local"] .aegis-shell-compact i,.aegis-operator-shell[data-status="demo"] .aegis-shell-compact i{background:var(--amber)}
.aegis-operator-shell[data-status="unavailable"] .aegis-shell-compact i{background:var(--red)}
.aegis-shell-compact>span>span{min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--ink-dim);font:9px/1 var(--mono,ui-monospace,monospace)}
.aegis-shell-compact small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-faint);font:8.5px/1.2 var(--mono,ui-monospace,monospace)}
body.aegis-shell-open{overflow:hidden}
.aegis-shell-scrim[hidden],.aegis-shell-panel[hidden]{display:none!important}
.aegis-shell-scrim{position:fixed;inset:0;z-index:4990;background:rgba(2,5,8,.66);backdrop-filter:blur(4px)}
.aegis-shell-panel{
  position:fixed;z-index:4991;top:72px;right:18px;width:min(680px,calc(100vw - 36px));max-height:calc(100vh - 90px);
  display:flex;flex-direction:column;overflow:hidden;background:var(--bg-2,var(--panel));color:var(--ink);
  border:1px solid var(--line-bright,var(--line));border-radius:13px;box-shadow:0 28px 90px rgba(0,0,0,.68);
  font-family:var(--sans,system-ui,sans-serif);animation:aegis-shell-in .16s ease-out
}
@keyframes aegis-shell-in{from{opacity:0;transform:translateY(-8px) scale(.985)}to{opacity:1;transform:none}}
.aegis-shell-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 18px 14px;border-bottom:1px solid var(--line)}
.aegis-shell-head p{margin:0 0 3px;color:var(--primary);font:700 8.5px/1 var(--mono,ui-monospace,monospace);letter-spacing:.16em;text-transform:uppercase}
.aegis-shell-head h2{margin:0;color:var(--ink);font:800 19px/1.2 var(--display,var(--sans));letter-spacing:-.01em;text-transform:none}
.aegis-shell-close{width:34px;height:34px;display:grid;place-items:center;flex:none;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink-dim);font:24px/1 var(--sans);cursor:pointer}
.aegis-shell-close:hover{border-color:var(--red);color:var(--red)}
.aegis-shell-posture{
  display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;margin:13px 18px 4px;padding:11px 12px;
  border:1px solid var(--line);border-radius:9px;background:var(--panel)
}
.aegis-shell-avatar{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--primary-dim);border-radius:8px;background:var(--primary-glow);color:var(--primary);font:800 10px var(--mono);letter-spacing:.08em}
.aegis-shell-posture>div{min-width:0}.aegis-shell-posture>div>b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.aegis-shell-posture>div>span{display:flex;align-items:center;gap:6px;margin-top:3px;color:var(--ink-faint);font:9px/1.25 var(--mono,ui-monospace,monospace)}
.aegis-shell-posture strong{color:var(--ink-dim);font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.aegis-shell-posture em{color:var(--green);font:700 9px/1.25 var(--mono,ui-monospace,monospace);font-style:normal;text-align:right}
.aegis-shell-panel[data-status="local"] .aegis-shell-posture i,.aegis-shell-panel[data-status="demo"] .aegis-shell-posture i{background:var(--amber)}
.aegis-shell-panel[data-status="local"] .aegis-shell-posture em,.aegis-shell-panel[data-status="demo"] .aegis-shell-posture em{color:var(--amber)}
.aegis-shell-panel[data-status="unavailable"] .aegis-shell-posture i{background:var(--red)}
.aegis-shell-panel[data-status="unavailable"] .aegis-shell-posture em{color:var(--red)}
.aegis-shell-apps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:14px 18px 18px;overflow:auto}
.aegis-shell-app{
  min-width:0;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;
  border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);text-decoration:none
}
.aegis-shell-app:hover,.aegis-shell-app:focus-visible{border-color:var(--line-bright);background:var(--panel-2);color:var(--ink);transform:translateY(-1px)}
.aegis-shell-app.current{border-color:var(--primary-dim);background:var(--primary-glow);box-shadow:inset 2px 0 0 var(--primary)}
.aegis-shell-appmark{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line-bright);border-radius:8px;background:var(--bg);color:var(--primary);font:800 9.5px var(--mono);letter-spacing:.08em}
.aegis-shell-appcopy{min-width:0}.aegis-shell-appcopy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px}
.aegis-shell-appcopy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;color:var(--ink-faint);font:9px var(--mono,ui-monospace,monospace)}
.aegis-shell-current{align-self:start;padding:2px 6px;border-radius:99px;background:var(--primary);color:#160c06;font:800 7.5px var(--mono);letter-spacing:.08em;text-transform:uppercase}
.aegis-shell-current[hidden]{display:none!important}
.aegis-shell-foot{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:10px 18px;border-top:1px solid var(--line);background:var(--panel);font:9px var(--mono,ui-monospace,monospace);color:var(--ink-faint)}
.aegis-shell-foot a{color:var(--primary);font-weight:700;text-decoration:none;text-transform:uppercase;letter-spacing:.06em}
.aegis-shell-foot a:hover{text-decoration:underline}
@media (max-width:1100px){.aegis-shell-compact{display:none}}

/* ============================================================
   REFINEMENTS — cross-device touch & keyboard-focus polish
   ============================================================ */
nav.tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none}
nav.tabs::-webkit-scrollbar{height:0;display:none}
:where(a,button,input,select,textarea):focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.btn{-webkit-tap-highlight-color:transparent}

/* ============================================================
   RESPONSIVE — phones & small tablets.  The suite is desktop-first;
   these rules adapt the shared shell chrome and dense components for
   narrow, touch screens (media queries — no user-agent sniffing).
   ============================================================ */
@media (max-width:760px){
  .topbar{gap:9px 12px;padding:11px 15px}
  .aegis-operator-shell{margin-left:0}
  .aegis-shell-compact{display:none}
  .aegis-shell-trigger{min-height:36px;padding:7px 9px}
  .aegis-shell-panel{top:auto;right:0;bottom:0;width:100%;max-height:min(88vh,720px);border-radius:14px 14px 0 0;border-left:0;border-right:0;border-bottom:0}
  .aegis-shell-apps{grid-template-columns:1fr 1fr}
  .brand{gap:10px}
  .brand-logo{width:34px;height:34px}
  .seal{width:36px;height:36px;font-size:13px}
  .brand h1{font-size:13.5px;letter-spacing:.12em}
  .brand .sub{font-size:8.5px;letter-spacing:.14em;margin-top:3px}
  .dtg{font-size:10px}
  .dtg small{font-size:8px}
  nav.tabs{padding:0 12px}
  nav.tabs button{padding:12px 14px;font-size:10.5px;letter-spacing:.1em}
  main{padding:18px 15px 64px}
  .row{gap:10px;margin-bottom:14px}
  h2.section{font-size:17px}
  /* compact, two-up stat tiles so the fold isn't a stack of counters */
  .stats{grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px;margin-bottom:16px}
  .stat{padding:13px 15px}
  .stat .num{font-size:24px}
  .card .bd{padding:14px}
  .toolbar{gap:8px}
  .toolbar .search{flex:1 1 100%;order:-1}
  /* full-bleed drawer + edge-to-edge toast on phones */
  .drawer{width:100vw;max-width:100vw;border-left:none}
  .drawer .dh{padding:14px 16px}
  .drawer .db{padding:16px}
  .drawer .df{padding:12px 16px}
  .kv{grid-template-columns:1fr;gap:2px 0}
  .kv dt{padding-top:9px}
  .flash{left:14px;right:14px;transform:translateY(20px);text-align:center}
  .flash.show{transform:translateY(0)}
}
@media (max-width:400px){
  .aegis-shell-trigger>span:last-child{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .aegis-shell-posture{grid-template-columns:34px minmax(0,1fr);margin-left:12px;margin-right:12px}.aegis-shell-posture em{grid-column:2;text-align:left;margin-top:-5px}
  .aegis-shell-apps{grid-template-columns:1fr;padding-left:12px;padding-right:12px}
  .aegis-shell-head,.aegis-shell-foot{padding-left:14px;padding-right:14px}
  .aegis-shell-foot>span{display:none}
  .brand .sub{display:none}       /* reclaim width — the wordmark carries it */
  .dtg small{display:none}
  h2.section small{font-size:9.5px}
}

/* Suite search / command palette enhancements. The palette keeps its compact
   self-contained fallback for legacy pages; shared-shell pages get these
   accessible command-mode and focus refinements from the external stylesheet. */
#aegis-omni .omni-sr{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0
}
#aegis-omni .omni-mode{
  display:none;flex:none;padding:3px 7px;border-radius:10px;
  background:rgba(var(--accent-rgb),1);color:#160c06;
  font:700 9px/1.2 var(--mono);letter-spacing:.09em;text-transform:uppercase
}
#aegis-omni.command-mode .omni-mode{display:inline-flex}
#aegis-omni.command-mode .omni-modal{max-width:720px}
#aegis-omni.command-mode .omni-print{display:none}
#aegis-omni .omni-row[role="option"]:focus-visible{
  outline:2px solid rgba(var(--accent-rgb),1);outline-offset:-2px
}
#aegis-omni .omni-hint kbd{
  display:inline-block;min-width:20px;padding:1px 5px;border:1px solid var(--line);
  border-radius:4px;color:var(--ink);font-family:var(--mono);text-align:center
}
@media (prefers-reduced-motion:reduce){
  #aegis-omni *, .aegis-omni-fab,.aegis-shell-panel,.aegis-shell-app{scroll-behavior:auto!important;transition:none!important;animation:none!important}
}

@media print{.topbar,nav.tabs,.toolbar,.btn,.drawer,.scrim,.flash,.class-banner.bottom,.aegis-operator-shell,.aegis-shell-scrim,.aegis-shell-panel{display:none!important}}
