/* CCTV Retention — terminal theme
   Drop-in replacement for assets/app.css.
   Plain hex/rgba only (no color-mix, no @import) so it works everywhere.
   Fonts are loaded by _layout.php with a <link>. */

:root,
html[data-theme="dark"] {
  --bg:#05070a; --bg-2:#080d0b; --bg-3:#0d1418;
  --panel:rgba(6,10,13,.92);
  --ln:#16242c; --ln-2:#22323c;
  --fg:#cfdde6; --fg-hi:#e9f7ff; --mut:#7d919b; --dim:#46565f;
  --acc:#41c8e0; --acc-dim:#1d4d5c; --acc-08:rgba(65,200,224,.09); --acc-14:rgba(65,200,224,.16);
  --ok:#4ee88a; --warn:#e0b341; --bad:#ff6b5b;
  --ok-b:rgba(78,232,138,.4); --warn-b:rgba(224,179,65,.4); --bad-b:rgba(255,107,91,.45);
  --warn-10:rgba(224,179,65,.1); --bad-10:rgba(255,107,91,.1);
  --scan:rgba(255,255,255,.035);
  --mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;
  --sans:'IBM Plex Sans',system-ui,-apple-system,sans-serif;
}
html[data-theme="light"] {
  --bg:#f3f6f6; --bg-2:#ffffff; --bg-3:#eaeef0;
  --panel:rgba(255,255,255,.93);
  --ln:#d9e1e4; --ln-2:#c2ced3;
  --fg:#1d2a30; --fg-hi:#08161c; --mut:#5d707a; --dim:#8ea0a8;
  --acc:#0b7c93; --acc-dim:#9ed3de; --acc-08:rgba(11,124,147,.08); --acc-14:rgba(11,124,147,.14);
  --ok:#1c8a4b; --warn:#96690a; --bad:#c33a2b;
  --ok-b:rgba(28,138,75,.35); --warn-b:rgba(150,105,10,.35); --bad-b:rgba(195,58,43,.35);
  --warn-10:rgba(150,105,10,.1); --bad-10:rgba(195,58,43,.1);
  --scan:rgba(0,0,0,.02);
}

* { box-sizing:border-box; }
html, body { margin:0; padding:0; }
body {
  background:var(--bg);
  color:var(--fg);
  font-family:var(--sans);
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}
body::after {
  content:""; position:fixed; inset:0; z-index:80; pointer-events:none;
  background:repeating-linear-gradient(to bottom, var(--scan) 0 1px, transparent 1px 3px);
}
a { color:var(--acc); text-decoration:none; }
a:hover { color:var(--fg-hi); }
h1,h2,h3 { font-family:var(--mono); font-weight:700; letter-spacing:.03em; color:var(--fg-hi); margin:0; }
h1{font-size:20px} h2{font-size:15px} h3{font-size:13px}
code,.mono { font-family:var(--mono); }
@keyframes blink { 0%,49%{opacity:1} 50%,100%{opacity:0} }
@keyframes sweep { 0%{transform:translateY(-120%)} 100%{transform:translateY(1200%)} }
@keyframes pulse { 0%{box-shadow:0 0 0 0 rgba(255,107,91,.5)} 70%{box-shadow:0 0 0 12px rgba(255,107,91,0)} 100%{box-shadow:0 0 0 0 rgba(255,107,91,0)} }

/* ---------- topbar ---------- */
.topbar {
  position:sticky; top:0; z-index:40;
  display:flex; align-items:center; gap:22px; height:56px; padding:0 20px;
  background:var(--panel); border-bottom:1px solid var(--ln);
}
.brand {
  display:flex; align-items:center; gap:9px; flex:none;
  font-family:var(--mono); font-size:13px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:var(--fg-hi); white-space:nowrap;
}
.brand::before {
  content:""; width:9px; height:9px; border-radius:50%;
  background:var(--acc); box-shadow:0 0 10px var(--acc); animation:blink 1.6s steps(1,end) infinite;
}
.popia { font-size:9.5px; font-weight:500; letter-spacing:.16em; padding:3px 7px;
  border:1px solid var(--acc-dim); color:var(--acc); background:var(--acc-08); }
.topbar nav {
  display:flex; align-items:center; gap:1px; flex:1 1 0; min-width:0;
  overflow-x:auto; overflow-y:hidden; scrollbar-width:none;
  font-family:var(--mono); font-size:11.5px;
}
.topbar nav::-webkit-scrollbar { display:none; }
.topbar nav a { flex:none; padding:7px 9px; color:var(--mut); text-transform:lowercase; }
.topbar nav a:hover { color:var(--fg-hi); background:var(--bg-3); }
.topbar nav a.on { color:var(--bg); background:var(--acc); font-weight:700; }
.who { display:flex; align-items:center; gap:9px; flex:none; font-family:var(--mono); font-size:11px; color:var(--mut); white-space:nowrap; }
.role { padding:2px 6px; font-size:9.5px; letter-spacing:.1em; text-transform:uppercase;
  border:1px solid var(--warn-b); color:var(--warn); background:var(--warn-10); }

/* ---------- shell ---------- */
.wrap { max-width:1480px; margin:0 auto; padding:20px 20px 64px; }
.foot { border-top:1px solid var(--ln); background:var(--bg-2); padding:15px 20px;
  font-family:var(--mono); font-size:11px; color:var(--dim); letter-spacing:.03em; }
.flash { display:flex; gap:10px; align-items:center; padding:11px 14px; margin-bottom:16px;
  border:1px solid var(--acc-dim); background:var(--acc-08);
  font-family:var(--mono); font-size:12px; color:var(--fg-hi); }
.flash::before { content:"[ok]"; color:var(--acc); }
.flash.err { border-color:var(--bad-b); background:var(--bad-10); }
.flash.err::before { content:"[err]"; color:var(--bad); }

/* ---------- page head ---------- */
.phead { display:flex; align-items:baseline; gap:14px; margin-bottom:14px; flex-wrap:wrap; }
.phead .sub { font-family:var(--mono); font-size:11.5px; color:var(--dim); }
.cursor { display:inline-block; width:8px; height:15px; background:var(--acc); animation:blink 1s steps(1,end) infinite; }

/* ---------- blocks ---------- */
.grid { display:grid; gap:12px; }
.g2 { grid-template-columns:repeat(2,1fr); }
.g3 { grid-template-columns:repeat(3,1fr); }
.g4 { grid-template-columns:repeat(4,1fr); }
.gmain { grid-template-columns:1.7fr 1fr; }
@media (max-width:1100px){ .g4{grid-template-columns:repeat(2,1fr)} .gmain,.g3{grid-template-columns:1fr} }

.card { border:1px solid var(--ln); background:var(--bg-2); }
.card > header { display:flex; align-items:center; gap:10px; padding:10px 14px; border-bottom:1px solid var(--ln);
  font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--mut); }
.card > header .r { margin-left:auto; text-transform:none; letter-spacing:.05em; color:var(--dim); }
.card .body { padding:14px; }

.stat { border:1px solid var(--ln); background:var(--bg-2); padding:16px 18px; }
.stat .k { font-family:var(--mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--dim); }
.stat .v { font-family:var(--mono); font-size:34px; line-height:1; color:var(--fg-hi); margin-top:8px; }
.stat .v small { font-size:15px; color:var(--dim); }
.stat .n { font-family:var(--mono); font-size:11px; color:var(--mut); margin-top:11px; }
.bar { height:3px; background:var(--bg-3); margin-top:12px; }
.bar > i { display:block; height:3px; background:var(--acc); }
.bar.warn > i { background:var(--warn); }
.bar.bad > i { background:var(--bad); }

/* ---------- camera tiles ---------- */
.wall { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:1px; background:var(--ln); }
.tile { position:relative; aspect-ratio:16/9; overflow:hidden; cursor:pointer;
  background:repeating-linear-gradient(135deg,var(--bg-3) 0 6px,var(--bg-2) 6px 12px); }
.tile img { width:100%; height:100%; object-fit:cover; display:block; }
.tile .scan { position:absolute; inset:0; pointer-events:none;
  background:repeating-linear-gradient(0deg,var(--acc-08) 0 1px,transparent 1px 3px); }
.tile .sweep { position:absolute; left:0; right:0; height:14%;
  background:linear-gradient(180deg,transparent,var(--acc-14)); animation:sweep 4.5s linear infinite; pointer-events:none; }
.tile .lbl { position:absolute; top:7px; left:8px; font-family:var(--mono); font-size:10px; color:#cfe9f5;
  letter-spacing:.06em; background:rgba(0,0,0,.45); padding:1px 5px; }
.tile .foot2 { position:absolute; left:0; right:0; bottom:0; padding:14px 8px 6px; display:flex; gap:8px;
  justify-content:space-between; font-family:var(--mono); font-size:9px; color:#cfe9f5;
  background:linear-gradient(transparent,rgba(0,0,0,.85)); }
.dot { width:7px; height:7px; border-radius:50%; display:inline-block; flex:none; }
.dot.rec { background:var(--bad); animation:blink 1.4s steps(1,end) infinite; }

/* ---------- log ---------- */
.log { display:flex; flex-direction:column; gap:9px; font-family:var(--mono); font-size:11.5px; line-height:1.45; }
.log .row { display:grid; grid-template-columns:58px 52px 1fr; gap:10px; align-items:baseline; }
.log .t { color:var(--dim); }
.log .m { color:var(--mut); }
.tag { letter-spacing:.06em; }
.tag.ok{color:var(--ok)} .tag.warn{color:var(--warn)} .tag.bad{color:var(--bad)} .tag.acc{color:var(--acc)} .tag.mut{color:var(--mut)}

/* ---------- news ---------- */
.news-toolbar { flex-wrap:wrap; }
.news-pubs {
  display:flex; flex-wrap:wrap; gap:6px; align-items:center;
  margin:0 0 14px; padding:10px 0; border-bottom:1px solid var(--ln);
}
.news-pubs-label {
  font-family:var(--mono); font-size:9.5px; letter-spacing:.14em; color:var(--dim); margin-right:4px;
}
.news-chip {
  font-family:var(--mono); font-size:10px; letter-spacing:.04em;
  padding:4px 9px; border:1px solid var(--ln); color:var(--mut); background:var(--bg-2);
  text-decoration:none;
}
.news-chip:hover { border-color:var(--acc-dim); color:var(--acc); }
.news-chip.kind-broadcast { border-color:color-mix(in srgb, var(--bad) 35%, var(--ln)); }
.news-chip.kind-tabloid { border-color:color-mix(in srgb, var(--warn) 40%, var(--ln)); }
.news-chip.kind-wire { border-color:color-mix(in srgb, var(--acc) 35%, var(--ln)); }

.news { display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:12px; }
.nitem { display:flex; flex-direction:column; border:1px solid var(--ln); background:var(--bg-2); overflow:hidden; }
.nitem .thumb { position:relative; height:150px; background:repeating-linear-gradient(135deg,var(--bg-3) 0 10px,var(--bg-2) 10px 20px);
  display:flex; align-items:center; justify-content:center; }
.nitem .thumb img { width:100%; height:150px; object-fit:cover; }
.nitem .thumb span { font-family:var(--mono); font-size:9.5px; letter-spacing:.12em; color:var(--dim); }
.nitem .nkind {
  position:absolute; left:8px; bottom:8px;
  font-family:var(--mono); font-size:9px; letter-spacing:.1em; font-style:normal;
  padding:2px 7px; background:rgba(0,0,0,.72); color:var(--fg-hi); border:1px solid var(--ln);
}
.nitem .nb { padding:12px 13px; display:flex; flex-direction:column; gap:9px; flex:1; }
.nitem .nt { font-size:14px; line-height:1.4; color:var(--fg-hi); }
.nitem .nm { display:flex; justify-content:space-between; gap:8px; align-items:center;
  font-family:var(--mono); font-size:9.5px; color:var(--dim); letter-spacing:.06em; }
.nitem .ai { font-size:12.5px; line-height:1.55; color:var(--mut); border-left:2px solid var(--acc-dim); padding-left:10px; }
.nitem .acts { display:flex; flex-wrap:wrap; gap:6px; margin-top:auto; }
.nitem .meta-line { font-family:var(--mono); font-size:9.5px; color:var(--dim); }

.follow-box {
  font-size:12.5px; line-height:1.55; color:var(--mut);
  border:1px solid var(--ln); background:var(--bg-3); padding:10px 11px;
  display:flex; flex-direction:column; gap:8px;
}
.fup-head { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.fup-angle { font-family:var(--mono); font-size:10px; letter-spacing:.06em; color:var(--fg-hi); }
.fup-risk {
  font-family:var(--mono); font-size:9.5px; letter-spacing:.1em; text-transform:uppercase;
  padding:2px 7px; border:1px solid var(--ln);
}
.fup-risk.risk-low { color:var(--ok); border-color:var(--ok); }
.fup-risk.risk-elevated { color:var(--warn); border-color:var(--warn); }
.fup-risk.risk-high, .fup-risk.risk-critical { color:var(--bad); border-color:var(--bad); }
.fup-watch { border-left:2px solid var(--acc-dim); padding-left:10px; }
.fup-rel { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.fup-rel li a { color:var(--fg); text-decoration:none; display:block; line-height:1.35; }
.fup-rel li a:hover { color:var(--acc); }
.fup-rel em { font-style:normal; font-family:var(--mono); font-size:9.5px; color:var(--dim); margin-right:6px; }

/* ---------- controls ---------- */
.btn, button.btn, a.btn {
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--mono); font-size:11px; letter-spacing:.06em; padding:7px 12px; cursor:pointer;
  border:1px solid var(--ln-2); background:var(--bg-3); color:var(--mut);
}
.btn:hover { border-color:var(--acc-dim); color:var(--acc); }
.btn.pri { border-color:var(--acc-dim); background:var(--acc-14); color:var(--acc); }
.btn.danger:hover { border-color:var(--bad); color:var(--bad); }
.btn.live { border-color:var(--bad-b); color:var(--bad); animation:pulse 1.4s infinite; }
input[type=text],input[type=number],input[type=search],input[type=email],input[type=password],select,textarea {
  font-family:var(--mono); font-size:12px; height:32px; padding:0 10px;
  border:1px solid var(--ln-2); background:var(--bg-3); color:var(--fg); outline:none;
}
textarea { height:auto; padding:8px 10px; }
input:focus,select:focus,textarea:focus { border-color:var(--acc-dim); }
label.fld { display:flex; flex-direction:column; gap:5px; font-family:var(--mono); font-size:10px;
  letter-spacing:.12em; text-transform:uppercase; color:var(--dim); }
.toolbar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:14px; }
.toolbar .sp { flex:1; }

/* ---------- table ---------- */
table.tbl { width:100%; border-collapse:collapse; font-size:12.5px; }
.tbl th { font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--dim); text-align:left; padding:9px 12px; background:var(--bg-3); border-bottom:1px solid var(--ln); }
.tbl td { padding:9px 12px; border-bottom:1px solid var(--ln); color:var(--fg); }
.tbl tr:hover td { background:var(--bg-3); }
.tbl td.mono, .tbl td .mono { font-family:var(--mono); font-size:11.5px; }
.pill { font-family:var(--mono); font-size:9.5px; letter-spacing:.1em; text-transform:uppercase;
  padding:2px 7px; border:1px solid var(--ln-2); color:var(--mut); }
.pill.ok{color:var(--ok);border-color:var(--ok-b)}
.pill.warn{color:var(--warn);border-color:var(--warn-b)}
.pill.bad{color:var(--bad);border-color:var(--bad-b)}
.empty { padding:28px; text-align:center; font-family:var(--mono); font-size:12px; color:var(--dim); }

/* ---------- assistant ---------- */
.bubble { max-width:88%; padding:10px 12px; border:1px solid var(--ln); background:var(--bg-3);
  font-size:13.5px; line-height:1.55; align-self:flex-start; }
.bubble.me { align-self:flex-end; border-color:var(--acc-dim); background:var(--acc-08); color:var(--fg-hi); }
.bubble b { color:var(--fg-hi); }
.orb { position:relative; width:120px; height:120px; border-radius:50%; flex:none;
  border:1px solid var(--acc-dim); background:radial-gradient(circle at 50% 40%,var(--acc-14),transparent 70%); }
.orb i { position:absolute; inset:26px; border-radius:50%; border:1px solid var(--acc);
  opacity:.5; transition:transform .12s ease-out; }
.orb.talk i { animation:blink 1.1s steps(1,end) infinite; }
.agenda { display:flex; flex-direction:column; gap:8px; }
.agenda .it { display:grid; grid-template-columns:54px 1fr auto; gap:10px; align-items:baseline;
  font-size:12.5px; padding:8px 10px; border:1px solid var(--ln); background:var(--bg-3); }
.agenda .it .h { font-family:var(--mono); font-size:11px; color:var(--acc); }
.agenda .it .s { font-family:var(--mono); font-size:9.5px; color:var(--dim); }
.agenda .it.done { opacity:.5; text-decoration:line-through; }

/* ---------- command map (map.php) — structured columns, no overlapping panels ---------- */
.map-shell { position:relative; display:flex; align-items:stretch; gap:0;
  height:calc(100vh - 210px); min-height:520px; overflow:hidden; padding:0; }

/* LEFT: directory column */
.map-dir { position:relative; flex:0 0 260px; width:260px; display:flex; flex-direction:column;
  border-right:1px solid var(--ln); background:var(--bg-2); min-height:0; }
.map-dir .dh { padding:9px 12px; border-bottom:1px solid var(--ln); font-family:var(--mono);
  font-size:10px; letter-spacing:.14em; color:var(--mut); display:flex; justify-content:space-between; flex:none; }
.map-dir .dl { flex:1 1 auto; min-height:0; overflow-y:auto; padding:6px; display:flex; flex-direction:column; gap:3px; }

/* CENTER: globe viewport */
.map-globe { position:relative; flex:1 1 0; min-width:0; overflow:hidden; }
.map-globe #stage, .map-globe #labels { position:absolute; inset:0; }
.map-globe #labels { pointer-events:none; overflow:hidden; }
#loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:var(--bg); color:var(--acc); font-size:11px; letter-spacing:.2em; z-index:8; }

/* overlays that legitimately sit ON the globe — small, in corners */
.map-tools { position:absolute; top:12px; left:12px; z-index:6; display:flex; gap:6px; flex-wrap:wrap; align-items:center; max-width:calc(100% - 24px); }
.map-tools input[type=search] { width:200px; height:30px; }
.map-tools select { height:30px; }
.map-hud { position:absolute; top:12px; right:12px; z-index:5; width:210px; padding:11px 13px;
  font-family:var(--mono); border:1px solid var(--ln);
  background:rgba(6,10,13,.86); backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px); }
html[data-theme="light"] .map-hud { background:rgba(255,255,255,.9); }
.map-hud .ht { font-size:9.5px; letter-spacing:.16em; color:var(--dim); margin-bottom:8px; }
.map-hud .hr { display:flex; justify-content:space-between; font-size:11px; color:var(--mut); padding:3px 0; }
.map-hud .hr b { color:var(--fg-hi); font-weight:600; }
.map-hud .hr .a { color:var(--acc); }
.map-hud .leg { margin-top:9px; padding-top:9px; border-top:1px solid var(--ln); display:flex; flex-direction:column; gap:5px; }
.map-hud .leg span { display:flex; align-items:center; gap:7px; font-size:10px; color:var(--mut); }
.map-hud .leg i { width:9px; height:9px; border-radius:50%; flex:none; background:currentColor; box-shadow:0 0 7px currentColor; }

.map-toggle { display:inline-flex; align-items:center; gap:5px; height:30px; padding:0 9px;
  border:1px solid var(--ln); background:var(--bg-3); font-family:var(--mono); font-size:10px;
  letter-spacing:.06em; color:var(--mut); cursor:pointer; user-select:none; }
.map-toggle.on { color:var(--acc); border-color:var(--acc-dim); background:var(--acc-08); }

/* city labels projected onto the globe */
.city-lbl { position:absolute; display:flex; align-items:center; gap:7px; white-space:nowrap;
  pointer-events:auto; cursor:pointer; transform:translate(-6px,-50%); will-change:left,top,opacity; }
.city-lbl .cd { width:9px; height:9px; border-radius:50%; border:2px solid var(--bg); }
.city-lbl .ct { font-family:var(--mono); font-size:10px; color:var(--fg); background:rgba(5,7,10,.82);
  border:1px solid var(--ln-2); padding:3px 7px; letter-spacing:.05em; }
html[data-theme="light"] .city-lbl .ct { background:rgba(255,255,255,.85); }
.city-lbl .ct b { color:var(--acc); }
.city-lbl.hot .ct { border-color:var(--bad-b); }

/* RIGHT: video dock column — hidden until a camera opens, then a real column (covers nothing) */
.map-dock { flex:0 0 380px; width:380px; display:none; flex-direction:column;
  border-left:1px solid var(--acc-dim); background:var(--bg-2); min-height:0; }
.map-shell.dock-open .map-dock { display:flex; }
.map-dock .dkh { display:flex; align-items:center; gap:8px; padding:8px 11px; border-bottom:1px solid var(--ln); flex:none; }
.map-dock .dkh .tt { flex:1; min-width:0; font-size:12.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.map-stage2 { position:relative; aspect-ratio:16/9; width:100%; background:#04060a; flex:none; }
.map-stage2 > video, .map-stage2 > img, .map-stage2 > iframe, .map-stage2 > .map-msg { position:absolute; inset:0; width:100%; height:100%; }
.map-osd { position:absolute; left:9px; right:9px; bottom:7px; display:flex; justify-content:space-between; align-items:flex-end;
  font-family:var(--mono); font-size:9px; color:#cfe9f5; text-shadow:0 1px 3px #000; pointer-events:none; }
.map-msg { display:flex; align-items:center; justify-content:center; font-family:var(--mono);
  font-size:10px; letter-spacing:.14em; color:var(--dim);
  background:repeating-linear-gradient(135deg,#0a0f16 0 10px,#070b10 10px 20px); }
.map-dkf { display:flex; gap:6px; padding:8px 11px; border-top:1px solid var(--ln); flex-wrap:wrap; flex:none; }

/* responsive: on narrow screens stack the columns so nothing is cramped */
@media (max-width: 960px){
  .map-shell { flex-direction:column; height:auto; min-height:0; overflow:visible; }
  .map-dir { flex:none; width:auto; height:190px; border-right:none; border-bottom:1px solid var(--ln); order:2; }
  .map-globe { flex:none; height:58vh; min-height:340px; order:1; }
  .map-dock { flex:none; width:auto; border-left:none; border-top:1px solid var(--acc-dim); order:3; }
  .map-stage2 { max-width:640px; }
}

/* ---------- global ATLAS widget (every page) ---------- */
.atlas-fab { position:fixed; right:18px; bottom:18px; z-index:90; display:flex; align-items:center; gap:8px;
  height:44px; padding:0 15px 0 12px; border:1px solid var(--acc-dim); background:var(--panel);
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); color:var(--fg-hi);
  font-family:var(--mono); font-size:11px; letter-spacing:.14em; cursor:pointer;
  box-shadow:0 6px 24px rgba(0,0,0,.4); }
.atlas-fab:hover { border-color:var(--acc); }
.atlas-fab .axorb { width:12px; height:12px; border-radius:50%; background:var(--acc);
  box-shadow:0 0 10px var(--acc); animation:blink 1.6s steps(1,end) infinite; }
.atlas-dock { position:fixed; right:18px; bottom:74px; z-index:90; width:360px; max-width:calc(100vw - 36px);
  height:460px; max-height:calc(100vh - 130px); display:flex; flex-direction:column;
  border:1px solid var(--acc-dim); background:var(--bg-2); box-shadow:0 12px 44px rgba(0,0,0,.5); }
.atlas-dock[hidden] { display:none; }
.atlas-dock .axhead { display:flex; align-items:center; gap:8px; padding:9px 11px; border-bottom:1px solid var(--ln); }
.atlas-dock .axtitle { flex:1; display:flex; align-items:center; gap:7px; font-family:var(--mono);
  font-size:12px; font-weight:600; color:var(--fg-hi); letter-spacing:.08em; }
.atlas-dock .axspk { display:flex; align-items:center; gap:4px; font-family:var(--mono); font-size:9.5px; color:var(--mut); }
.axchat { flex:1; overflow-y:auto; padding:12px; display:flex; flex-direction:column; gap:9px; }
.axb { max-width:88%; padding:9px 11px; border:1px solid var(--ln); background:var(--bg-3);
  font-size:13px; line-height:1.5; align-self:flex-start; }
.axb.me { align-self:flex-end; border-color:var(--acc-dim); background:var(--acc-08); color:var(--fg-hi); }
.axinput { display:flex; gap:6px; padding:10px 11px; border-top:1px solid var(--ln); }
.axinput input { flex:1; height:32px; }
#axMic.live { color:var(--bad); border-color:var(--bad-b); background:var(--bad-10); }
@media (max-width:480px){
  .atlas-dock { right:8px; left:8px; width:auto; bottom:68px; max-height:calc(100vh - 100px); }
  .atlas-fab { right:10px; bottom:10px; }
}

/* ---------- live heartbeat indicator (topbar) ---------- */
.who .hb { font-family:var(--mono); font-size:9.5px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--dim); display:inline-flex; align-items:center; gap:5px; cursor:default; }
.who .hb::before { content:""; width:7px; height:7px; border-radius:50%; background:var(--dim);
  transition:background .2s, box-shadow .2s; }
.who .hb.on { color:var(--ok); }
.who .hb.on::before { background:var(--ok); box-shadow:0 0 8px var(--ok); }

/* ---------- find / scan ---------- */
.find-layout { grid-template-columns: 1fr 1.35fr; }
.find-layout > .card:nth-child(3),
.find-layout > .card:nth-child(4) { grid-column: span 1; }
@media (max-width:1100px){ .find-layout{grid-template-columns:1fr} }
.find-drop {
  position:relative; min-height:160px; border:1px dashed var(--ln-2); background:var(--bg-3);
  display:flex; align-items:center; justify-content:center; cursor:pointer; overflow:hidden;
}
.find-drop.hot { border-color:var(--acc); background:var(--acc-08); }
.find-drop img { max-width:100%; max-height:220px; object-fit:contain; display:block; }
.find-form input[type=range] { width:100%; height:28px; }
.find-viewport {
  position:relative; min-height:420px; background:#000;
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.find-viewport video, .find-viewport img { max-width:100%; max-height:420px; display:block; }
.find-viewport canvas { max-width:100%; height:auto; display:block; }
.find-overlay { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background:rgba(0,0,0,.55); }
.find-overlay[hidden] { display:none !important; }
.find-hud {
  position:absolute; left:0; right:0; bottom:0; display:flex; gap:14px; justify-content:space-between;
  padding:10px 12px; font-family:var(--mono); font-size:11px; color:#cfe9f5;
  background:linear-gradient(transparent, rgba(0,0,0,.85));
}
.find-hit {
  display:grid; grid-template-columns:88px 1fr; gap:10px; align-items:center;
  padding-bottom:10px; border-bottom:1px solid var(--ln);
}
.find-hit .fh-thumb { aspect-ratio:16/10; background:var(--bg-3); overflow:hidden; border:1px solid var(--ln); }
.find-hit .fh-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.find-hit .fh-meta { display:flex; flex-direction:column; gap:4px; }
.dash-find { border-color:var(--acc-dim); }