:root{
  --bg:#0F1115; --bg2:#0b0d11; --card:#151A21; --card2:#1a2029;
  --line:rgba(212,175,55,.18); --line2:rgba(212,175,55,.32);
  --txt:#E7E9EC; --mut:#9aa1ab; --acc:#D4AF37; --acc-lt:#F4D47A;
  --gold:linear-gradient(120deg,#F4D47A,#D4AF37 55%,#9c7d1f);
  --live:#3ad07a; --amber:#e0a53a; --red:#e0564b; --blu:#5aa2e0;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:radial-gradient(1200px 600px at 70% -10%,#1a2030 0,var(--bg) 55%);color:var(--txt);
  font:15px/1.55 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,.brand,.tile b,.agent b,.backbar h3{font-family:"Exo 2",Inter,sans-serif}
button{font-family:inherit}
a{color:var(--acc);text-decoration:none}
.app{display:flex;flex-direction:column;height:100vh;height:100dvh;max-width:1440px;margin:0 auto}

/* ── header ── */
header{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid var(--line);flex:none}
.logo{display:flex;align-items:center;gap:11px}
.mark{width:34px;height:34px;border-radius:9px;background:var(--gold);display:grid;place-items:center;
  color:#141002;font-weight:800;font-size:19px;box-shadow:0 3px 14px rgba(212,175,55,.28)}
.mark.big{width:60px;height:60px;font-size:34px;border-radius:16px}
.brand b{font-size:16px;letter-spacing:.02em;display:block;line-height:1.1}
.brand span{color:var(--mut);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase}
.health{margin-left:auto;display:flex;gap:12px;font-size:11px;color:var(--mut)}
.dot{display:inline-flex;align-items:center;gap:6px}
.dot i{width:8px;height:8px;border-radius:50%;background:var(--mut)}
.dot.ok i{background:var(--live);box-shadow:0 0 8px rgba(58,208,122,.6)}
.dot.bad i{background:var(--red);box-shadow:0 0 8px rgba(224,86,75,.5)}
/* "unknown" = the probe could not run, so the dependency's true state is undetermined.
   It must NOT look like ok. Phil is colour blind, so the cue is SHAPE (a hollow ring) plus
   the "? UNKNOWN" word paintDot() writes — hue alone would be invisible to him. */
.dot.unknown i{background:transparent;border:2px solid var(--amber);box-shadow:0 0 7px rgba(224,165,58,.45)}
.dot .dstate{font-weight:700;letter-spacing:.04em;white-space:nowrap}
.dot .dcache{font-weight:500;color:var(--mut);white-space:nowrap}
.dot.bad .dstate{color:var(--red)}
.dot.unknown .dstate{color:var(--amber)}

/* ── hamburger toggle (collapses the sidebar, Claude-style) ── */
.navtoggle{flex:none;background:var(--card);border:1px solid var(--line);color:var(--mut);border-radius:9px;
  width:36px;height:36px;font-size:16px;line-height:1;cursor:pointer;transition:.14s}
.navtoggle:hover{border-color:var(--acc);color:var(--txt)}

/* ── shell: collapsible left sidebar + main content pane (Claude-style, not a rolling top-nav) ── */
.shell{flex:1;min-height:0;display:flex;position:relative}
.navbackdrop{display:none}
.sidenav{width:248px;flex:none;border-right:1px solid var(--line);background:var(--bg2);
  overflow-y:auto;overflow-x:hidden;padding:12px 10px;transition:width .18s ease,opacity .18s ease}
body.nav-hidden .sidenav{width:0;padding-left:0;padding-right:0;border-right:none;opacity:0;pointer-events:none}
.topnav{display:flex;flex-direction:column;gap:2px}
.topnav a{display:flex;align-items:center;gap:11px;padding:10px 11px;border-radius:9px;font-size:13.5px;
  color:var(--txt);white-space:nowrap;transition:.12s;touch-action:manipulation}
.topnav a .ic{font-size:15px;width:18px;text-align:center;flex:none;opacity:.9}
.topnav a:hover{background:var(--card)}
.topnav a.on{background:var(--gold);color:#141002;font-weight:700}

/* ── views ── */
main{flex:1;min-width:0;min-height:0;position:relative}
.view{position:absolute;inset:0;display:none;flex-direction:column}
.view.on{display:flex}

/* ── home menu ── */
.home{flex:1;overflow:auto;padding:30px 22px 40px}
.homehead{text-align:center;max-width:620px;margin:10px auto 26px;color:var(--mut)}
.homehead .mark{margin:0 auto 16px}
.homehead h1{color:var(--txt);margin:0 0 8px;font-size:27px;letter-spacing:.01em}
.homehead p{margin:0}
.estate-heading{display:flex;align-items:center;gap:14px;text-align:left;max-width:980px;margin:0 auto 20px}
.estate-heading img{flex:none;object-fit:contain;border-radius:8px}
.estate-heading h1{font-size:24px;letter-spacing:0;line-height:1.2;margin:0 0 4px}
.estate-heading p{font-size:13px}
.estate-dashboard{max-width:980px;margin:0 auto 28px;letter-spacing:0}
.estate-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.estate-toolbar h2{margin:0;font-size:17px;line-height:1.3;letter-spacing:0}
.estate-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.estate-actions button{min-height:44px;border-radius:6px;touch-action:manipulation;white-space:normal;overflow-wrap:anywhere}
.estate-refresh{width:44px;height:44px;flex:none;border:1px solid var(--line2);background:var(--card);color:var(--txt);font-size:22px;cursor:pointer}
.estate-primary{padding:9px 14px;border:1px solid var(--acc);background:var(--acc);color:var(--bg);font:600 13px/1.4 Inter,sans-serif;cursor:pointer}
.estate-actions button:disabled{opacity:.6;cursor:not-allowed}
.estate-dashboard :focus-visible{outline:2px solid var(--blu);outline-offset:3px}
.estate-state{font-size:12px;color:var(--mut);margin:8px 0 14px;overflow-wrap:anywhere}
.estate-state.error{color:#ffb4ab}
.estate-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-block:1px solid var(--line2);margin-bottom:20px}
.estate-metric{min-width:0;padding:16px 18px 16px 0}
.estate-metric+ .estate-metric{border-left:1px solid var(--line2);padding-left:18px}
.estate-metric h3{font-size:13px;color:var(--mut);margin:0 0 5px;letter-spacing:0}
.estate-value{display:block;font:700 30px/1.2 "Exo 2",Inter,sans-serif;color:var(--txt);font-variant-numeric:tabular-nums}
.estate-detail{font-size:12px;color:var(--mut);margin:7px 0;overflow-wrap:anywhere}
.estate-source{font-size:10px;color:var(--mut);line-height:1.5;overflow-wrap:anywhere;margin:8px 0 0}
.estate-operations{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.estate-item{min-width:0;border:1px solid var(--line);border-radius:6px;padding:14px;display:flex;flex-direction:column;align-items:flex-start}
.estate-item h3{font-size:14px;line-height:1.35;margin:0 0 8px;letter-spacing:0}
.estate-item .estate-value{font-size:23px}
.estate-item .estate-link{margin-top:auto;padding-top:12px;font-size:12px;min-height:36px;display:inline-flex;align-items:center}
.estate-status{display:inline-block;font-size:11px;font-weight:600;border-bottom:2px solid var(--blu);padding-bottom:2px;margin:0 0 8px}
.estate-status.unknown,.estate-status.held{border-bottom-style:dashed;border-bottom-color:var(--amber)}
.estate-status.error{border-bottom-color:var(--red)}
.estate-dashboard details{width:100%;font-size:12px;margin:8px 0}
.estate-dashboard summary{cursor:pointer;color:var(--acc);min-height:32px;overflow-wrap:anywhere}
.estate-dashboard ul{padding-left:18px;color:var(--mut);overflow-wrap:anywhere}
.estate-run-result{font-size:12px;min-height:18px;overflow-wrap:anywhere;margin-top:12px}
.estate-assessment{margin-top:12px;border-top:1px solid var(--border);padding-top:12px}
.estate-assessment summary{cursor:pointer;min-height:44px;padding:12px 0;font-size:14px}
.estate-assessment pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:540px;overflow:auto;font-family:inherit;font-size:14px;line-height:1.6;margin:0 0 16px}
.estate-review{border-block:1px solid var(--line2);padding:8px 0 14px;margin-bottom:20px!important}
.estate-review h3{font-size:14px;margin:8px 0;letter-spacing:0}
.estate-review summary{font-size:14px;line-height:1.4;padding:12px 0;min-height:44px}
.estate-review .estate-candidates{list-style:none;padding:0;margin:0}
.estate-candidates li{padding:12px 0;border-top:1px solid var(--line);min-width:0}
.estate-candidate-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start}
.estate-candidate-heading h4{margin:0;font-size:13px;line-height:1.5;color:var(--txt);overflow-wrap:anywhere;letter-spacing:0}
.estate-candidate-heading span{font-size:13px;font-variant-numeric:tabular-nums;color:var(--mut)}
.estate-candidates code{font-size:11px;overflow-wrap:anywhere;color:var(--mut)}
.estate-rails{margin-bottom:20px;border-bottom:1px solid var(--line2);padding-bottom:14px}
.estate-rails h3{font-size:14px;letter-spacing:0;margin:8px 0 12px}
.estate-rail-list{list-style:none;padding:0;margin:0}
.estate-rail-list>li{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:start;gap:16px;padding:12px 0;border-top:1px solid var(--line)}
.estate-rail-copy{min-width:0}
.estate-rails h4{font-size:13px;line-height:1.5;letter-spacing:0;margin:0;overflow-wrap:anywhere}
.estate-rail-result{font-size:12px;line-height:1.5;margin:4px 0 0;color:var(--mut);overflow-wrap:anywhere}
.estate-rail-button{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line2);background:var(--card);color:var(--txt);border-radius:6px;touch-action:manipulation;cursor:pointer}
.estate-rail-button:disabled{opacity:.45;cursor:not-allowed}
.estate-rail-button:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.estate-receipts summary{font-size:13px;min-height:44px;padding:12px 0}
.estate-receipts .estate-candidates{list-style:none;padding:0;margin:0}
.estate-gate-needs{font-size:12px;line-height:1.5;color:var(--mut);padding-left:18px}
.estate-gate-needs li{padding:4px 0;border:0;overflow-wrap:anywhere}
@media(max-width:1000px){.estate-operations{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){
  .estate-heading h1{font-size:21px}
  .estate-toolbar{align-items:flex-start}
  .estate-actions{width:100%;flex-wrap:nowrap}
  .estate-primary{flex:1;min-width:0;text-align:center}
  .estate-metric{padding:12px 10px 12px 0}
  .estate-metric+ .estate-metric{padding-left:10px}
  .estate-value{font-size:25px}
  .estate-operations{grid-template-columns:1fr}
  .estate-item{padding:13px}
}
.operator-home{max-width:980px;margin:0 auto 26px}
.op-hero{display:grid;grid-template-columns:.82fr 1.18fr;gap:16px;align-items:stretch;background:linear-gradient(135deg,rgba(212,175,55,.12),rgba(30,107,160,.08));border:1px solid var(--line2);border-radius:12px;padding:16px}
.op-copy{display:flex;flex-direction:column;justify-content:center;min-width:0}
.op-copy .eyebrow{color:var(--acc);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;margin-bottom:5px}
.op-copy h2{font-size:24px;line-height:1.15;margin:0 0 7px;color:var(--txt)}
.op-copy p{margin:0;color:var(--mut);font-size:13.5px;line-height:1.45}
.op-command{min-width:0}
.op-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.op-actions .act{min-height:38px}
.home-strip{margin-top:10px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;max-width:900px;margin:0 auto}
.tile{display:flex;flex-direction:column;gap:3px;background:var(--card);border:1px solid var(--line);border-radius:15px;padding:18px;transition:.15s;color:var(--txt)}
.tile:hover{border-color:var(--acc);transform:translateY(-2px);box-shadow:0 8px 26px rgba(0,0,0,.28)}
.tile .ti{font-size:24px;margin-bottom:6px}
.tile b{font-size:16px}
.tile .ts{color:var(--mut);font-size:12px}

/* ── section back-bar (always present → get back out on mobile + desktop) ── */
.backbar{display:flex;align-items:center;gap:12px;padding:11px 18px;border-bottom:1px solid var(--line);flex:none;position:sticky;top:0;background:rgba(15,17,21,.86);backdrop-filter:blur(8px);z-index:5}
.backbar h3{margin:0;font-size:16px;flex:1}
.back{background:var(--card);border:1px solid var(--line2);color:var(--acc-lt);border-radius:9px;padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer;transition:.14s}
.back:hover{background:var(--card2);border-color:var(--acc)}
.bsub{color:var(--mut);font-size:12px}
.refresh{background:var(--card);border:1px solid var(--line);color:var(--mut);border-radius:9px;width:34px;height:34px;font-size:16px;cursor:pointer}
.refresh:hover{border-color:var(--acc);color:var(--acc)}

/* ── section body ── */
.scroll{flex:1;min-width:0;max-width:100%;overflow:auto;padding:20px 22px 40px}
.scroll.loading{opacity:.5}
.sh{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--mut);font-weight:600;margin:24px 0 12px}
.sh:first-child{margin-top:4px}
.sh .ct{color:var(--acc);font-weight:700}
.sh.hubhead{max-width:900px;margin:28px auto 12px;padding:0 2px}
.sh.hubhead:first-child{margin-top:6px}
.sh.navgroup{padding:14px 11px 2px;margin:0}
.sh.navgroup:first-child{padding-top:2px}
.note{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 13px;font-size:13px;color:var(--mut);margin-bottom:8px}
.note b{color:var(--txt)}
.note.err{color:var(--red);border-color:var(--red)}
.note.warn{border-color:var(--amber);color:var(--acc-lt)}
.note .dt,.dt{color:var(--mut);font-size:11px;opacity:.8}

/* stat tiles */
.ktiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:11px;margin-bottom:6px}
.ktile{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:14px 15px;border-left:3px solid var(--line2)}
.ktile b{font-size:24px;color:var(--acc);display:block;font-family:"Exo 2",Inter;line-height:1.1}
.ktile span{color:var(--mut);font-size:11.5px}
.ktile.warn{border-left-color:var(--amber)}
.ktile.ok{border-left-color:var(--live)}
.ktile.bad{border-left-color:var(--red)}

/* content cards (feed / lanes / gaps) */
.ccard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 15px;margin-bottom:9px;border-left:3px solid var(--line)}
.ccard.high{border-left-color:var(--red)}
.ccard.med{border-left-color:var(--amber)}
.ccard h4{margin:0 0 3px;font-size:14px;font-weight:600;color:var(--txt)}
.ccard .m{color:var(--mut);font-size:12.5px;margin-top:2px}
.ccard .row{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}
.acts{display:flex;gap:6px;flex:none}
.act{background:var(--gold);color:#141002;border:none;border-radius:9px;padding:7px 13px;font-size:12.5px;font-weight:700;cursor:pointer;flex:none;white-space:nowrap}
.act:hover{filter:brightness(1.06)}
.act.ghost{background:var(--card2);color:var(--acc-lt);border:1px solid var(--line2)}
.act:disabled{opacity:.6;cursor:default}

/* status pills — text label always shown (colour is secondary, for colour-blind safety) */
.pill{display:inline-block;font-size:10.5px;border:1px solid var(--line);border-radius:20px;padding:1px 8px;color:var(--mut);text-transform:capitalize;vertical-align:middle}
.pill.live,.pill.done,.pill.succeeded,.pill.paid{border-color:var(--live);color:var(--live)}
.pill.ok,.pill.ready{border-color:var(--live);color:var(--live)}
.pill.proposed,.pill.high,.pill.building{border-color:var(--amber);color:var(--amber)}
.pill.approved{border-color:var(--blu);color:var(--blu)}
/* A failure pill must READ as a failure. Without this, "key rejected" renders in the same muted
   grey as every neutral status — the loudest state wearing the quietest colour. */
.pill.bad,.pill.failed{border-color:var(--red);color:var(--red)}

/* two-column */
.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}

/* table */
.tbl{display:flex;flex-direction:column;gap:6px}
.tr{display:grid;grid-template-columns:1.2fr 1.4fr .8fr auto;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 13px;font-size:12.5px;color:var(--mut)}
.tr b{color:var(--acc);font-family:"Exo 2",Inter;text-align:right}

/* search */
.search{width:100%;background:var(--card);border:1px solid var(--line);border-radius:11px;color:var(--txt);padding:11px 14px;font:14px Inter,sans-serif;margin:6px 0 4px}
.search:focus{outline:none;border-color:var(--acc)}
.cluster{margin-bottom:6px}

/* apps grid */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:18px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.stat b{font-size:26px;color:var(--acc);display:block;font-family:"Exo 2",Inter}
.stat span{color:var(--mut);font-size:12px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:11px}
.applink{display:block;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;transition:.14s;color:var(--txt)}
.applink:hover{border-color:var(--acc);transform:translateY(-2px)}
.applink.dim{opacity:.6}
.applink .t{font-weight:600;font-size:13.5px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.applink .t .go{color:var(--acc);opacity:.7;font-size:12px;flex:none}
.applink .c{color:var(--mut);font-size:11.5px;margin-top:5px}
.sectionnav{position:sticky;top:46px;z-index:4;background:rgba(8,14,25,.92);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:10px;padding:7px;display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 12px}
.sectionnav a{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 10px;border-radius:8px;background:var(--card2);border:1px solid transparent;color:var(--acc-lt);font-size:12px;font-weight:700}
.sectionnav a:hover{border-color:var(--line2)}
.sectionnav button{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 10px;border-radius:8px;background:var(--card2);border:1px solid transparent;color:var(--acc-lt);font-size:12px;font-weight:700;cursor:pointer}
.sectionnav button:hover{border-color:var(--line2)}
.operator-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:8px 0 10px}
.operator-strip .op{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 11px}
.operator-strip a.op{display:block;color:inherit;touch-action:manipulation;cursor:pointer;transition:border-color .14s,transform .14s}
.operator-strip a.op:hover,.operator-strip a.op:focus-visible{border-color:var(--acc);transform:translateY(-1px);outline:none}
.operator-strip a.op::after{content:"→";position:absolute;right:10px;top:8px;color:var(--acc);font-size:13px}
.operator-strip a.op{position:relative;padding-right:28px}
.operator-strip .op.on{border-color:rgba(58,208,122,.55);box-shadow:inset 3px 0 0 var(--live)}
.operator-strip .op.warn{border-color:rgba(224,165,58,.55);box-shadow:inset 3px 0 0 var(--amber)}
.operator-strip .op b{display:block;font-size:13px;color:var(--txt)}
.operator-strip .op span{display:block;margin-top:3px;font-size:11.5px;color:var(--mut)}
.ops-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:11px;margin-bottom:8px}
.ops-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px 14px;box-shadow:inset 3px 0 0 rgba(212,175,55,.22)}
.ops-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}
.ops-card h4{margin:0;color:var(--txt);font-size:14px;line-height:1.25}
.ops-assign{font-size:12.5px;color:var(--mut);margin-top:4px;line-height:1.38}
.ops-assign b{color:var(--acc-lt)}
.ops-stack-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.ops-stack-links.caps{margin-top:6px}
.ops-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-width:0;border:1px solid var(--line);border-radius:999px;padding:4px 8px;color:var(--txt);font-size:11.5px;line-height:1.2;background:rgba(255,255,255,.02)}
.ops-chip a{display:block;max-width:min(240px,60vw);min-width:0;overflow-wrap:anywhere;white-space:normal}
.ops-chip em{font-style:normal;color:var(--mut);font-size:10px;text-transform:uppercase;letter-spacing:.04em;flex:none}
.ops-chip.missing{border-color:var(--red);color:var(--red)}
.gw-usb-frame{display:block;width:100%;height:700px;border:1px solid var(--line2);border-radius:8px;background:#0b1220;margin:0 0 14px}
.secnote{color:var(--mut);font-size:12px;margin:0 0 16px}

/* ── fusion ── */
#chat{flex:1;overflow:auto;padding:24px 28px 10px;display:flex;flex-direction:column;gap:16px;scroll-behavior:smooth}
.intro{margin:auto;max-width:720px;text-align:center;color:var(--mut)}
.intro .mark{width:52px;height:52px;font-size:28px;border-radius:14px;margin:0 auto 16px}
.intro h2{color:var(--txt);margin:0 0 8px;font-size:22px}
.intro p{margin:0 0 18px}
.fusion-health{display:inline-flex;align-items:center;justify-content:center;margin:0 0 14px;padding:5px 10px;border:1px solid var(--line2);border-radius:999px;color:var(--acc-lt);font-size:11.5px;background:rgba(212,175,55,.07);max-width:100%;overflow-wrap:anywhere}
.chips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:var(--card);color:var(--mut);border-radius:20px;padding:6px 13px;font-size:12px;cursor:pointer;transition:.14s}
.chip:hover{border-color:var(--acc);color:var(--txt)}
.msg{display:flex;gap:12px;width:min(100%,920px);max-width:92%;align-items:flex-start;align-self:flex-start}
.msg.user{align-self:flex-end;flex-direction:row-reverse}
.msgcol{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.msg.user .msgcol{align-items:flex-end}
.av{width:30px;height:30px;border-radius:8px;flex:none;display:grid;place-items:center;font-size:14px;font-weight:700}
.msg.user .av{background:var(--card2);color:var(--acc-lt);border:1px solid var(--line)}
.msg.ai .av{background:var(--gold);color:#141002}
.bubble{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 17px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere}
.msg.user .bubble{background:var(--card2);border-color:var(--line2)}
.council{width:min(100%,920px);border:1px solid var(--line);background:var(--bg2);border-radius:14px;padding:13px 15px;font-size:13px;align-self:flex-start}
.council h4{margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--mut);font-weight:600}
.ctxline{font-size:11.5px;color:var(--acc-lt);background:rgba(212,175,55,.07);border:1px solid var(--line);border-radius:8px;padding:5px 9px;margin:2px 0 8px}
.ctxline b{color:var(--acc)}
.agent{display:flex;align-items:center;gap:10px;padding:6px 0}
.agent .st{width:9px;height:9px;border-radius:50%;background:var(--mut);flex:none;transition:.2s}
.agent.run .st{background:var(--amber);animation:pulse 1s infinite}
.agent.ok .st{background:var(--live);box-shadow:0 0 7px rgba(58,208,122,.6)}
.agent.bad .st{background:var(--red)}
.agent b{font-size:13px;font-weight:600;min-width:170px;max-width:240px;overflow-wrap:anywhere}
.agent .meta{color:var(--mut);font-size:12px;margin-left:auto}
.agent .prev{color:var(--mut);font-size:12px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.8}
.synth{margin-top:8px;padding-top:10px;border-top:1px dashed var(--line);color:var(--acc-lt);font-size:12.5px;display:flex;align-items:center;gap:8px}
.synth .st{width:9px;height:9px;border-radius:50%;background:var(--acc);animation:pulse 1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.usedline{font-size:11px;color:var(--mut);margin-top:8px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.badge{font-size:10.5px;border:1px solid var(--line);border-radius:20px;padding:1px 8px;color:var(--mut)}
.badge.gold{border-color:var(--line2);color:var(--acc-lt)}
.drafts-t{font-size:11px;color:var(--acc);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.drafts{margin-top:8px;display:none;flex-direction:column;gap:6px}
.drafts.show{display:flex}
.draft{border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-size:12px;color:var(--mut);background:var(--bg2)}
.draft b{color:var(--txt);font-family:"Exo 2",Inter}
.composer{border-top:1px solid var(--line);padding:14px 28px 16px;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto auto;gap:10px;align-items:end;flex:none;background:rgba(15,17,21,.92);backdrop-filter:blur(10px)}
.composer textarea{width:100%;resize:none;background:var(--card);border:1px solid var(--line);border-radius:12px;color:var(--txt);padding:14px 16px;font:15px/1.5 Inter,sans-serif;max-height:260px;min-height:92px}
.composer textarea:focus{outline:none;border-color:var(--acc)}
.send{background:var(--gold);color:#141002;border:none;border-radius:12px;padding:0 20px;height:48px;font-weight:700;font-size:14px;cursor:pointer;flex:none}
.send:disabled{opacity:.5;cursor:default}
.reset{background:var(--card);color:var(--mut);border:1px solid var(--line);border-radius:12px;height:48px;padding:0 14px;cursor:pointer;flex:none}

/* ── group chats (Secure Group v1.1) ── */
.gmsgs{margin-top:8px;display:flex;flex-direction:column;gap:4px;max-height:260px;overflow:auto;
  border:1px solid var(--line);border-radius:10px;padding:8px 11px;background:var(--bg2)}
.gmsg{font-size:13px;line-height:1.45;padding:2px 0;word-wrap:break-word}
.gmsg.sys{text-align:center;color:var(--mut);font-size:11.5px;font-style:italic;padding:4px 0}
.gmsg.in b{color:var(--acc)}
.gmsg.out b{color:var(--acc-lt)}
.gmsg .dt{color:var(--mut);font-size:10.5px}
.gmembers{border-top:1px dashed var(--line);margin-top:10px;padding-top:2px}

/* ── Fusion: sidebar + composer voice buttons + memory modal + markdown ── */
.backbar{gap:8px}
.barbtn{background:var(--card);border:1px solid var(--line);border-radius:9px;color:var(--mut);font-size:13px;padding:6px 10px;cursor:pointer;transition:.14s}
.barbtn:hover{border-color:var(--acc);color:var(--txt)}
.fwrap{flex:1;min-height:0;display:flex;overflow:hidden}
.fside{width:230px;flex:none;border-right:1px solid var(--line);display:flex;flex-direction:column;background:var(--bg2);overflow:hidden}
.newchat{margin:12px;background:var(--card);border:1px solid var(--line2);border-radius:10px;color:var(--acc-lt);font-weight:600;padding:10px;cursor:pointer;transition:.14s}
.newchat:hover{border-color:var(--acc);background:var(--card2)}
.chatlist{flex:1;overflow:auto;padding:0 8px 12px}
.chatitem{position:relative;display:flex;flex-direction:column;gap:1px;padding:9px 30px 9px 11px;border-radius:9px;cursor:pointer;margin-bottom:2px;transition:.12s}
.chatitem:hover{background:var(--card)}
.chatitem.active{background:var(--card2);border:1px solid var(--line2)}
.chatitem .ct{font-size:12.5px;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chatitem .cd{font-size:10px;color:var(--mut)}
.chatitem .cactions{position:absolute;right:6px;top:7px;display:none;gap:2px}
.chatitem:hover .cactions{display:flex}
.chatitem .cactions button{background:none;border:none;color:var(--mut);cursor:pointer;font-size:11px;padding:2px 4px;border-radius:5px}
.chatitem .cactions button:hover{color:var(--txt);background:var(--card2)}
.fmain{flex:1;min-width:0;display:flex;flex-direction:column;position:relative;background:linear-gradient(180deg,rgba(255,255,255,.015),transparent 180px)}
.vbtn{background:var(--card);border:1px solid var(--line);border-radius:12px;color:var(--mut);font-size:16px;padding:0 13px;cursor:pointer;transition:.14s;min-height:48px}
.vbtn:hover{border-color:var(--acc);color:var(--txt)}
.vbtn.on{border-color:var(--acc);color:var(--acc-lt);background:var(--card2)}
.mic-status{grid-column:2/-1;color:var(--amber);font-size:11.5px;line-height:1.35;min-width:0;overflow-wrap:anywhere}
.mic-status:empty{display:none}
#mic.on{animation:micpulse 1.1s ease-in-out infinite}
@keyframes micpulse{0%,100%{box-shadow:0 0 0 0 rgba(212,175,55,.45)}50%{box-shadow:0 0 0 7px rgba(212,175,55,0)}}
.jumppill{position:absolute;left:50%;bottom:96px;transform:translate(-50%,10px);opacity:0;pointer-events:none;background:var(--card2);border:1px solid var(--line2);color:var(--acc-lt);
  border-radius:20px;padding:7px 15px;font-size:12px;cursor:pointer;transition:.16s;z-index:4}
.jumppill.show{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.msgactions{display:flex;gap:4px;margin-top:6px;opacity:0;transition:.14s}
.msg:hover .msgactions{opacity:1}
.msg.user .msgactions{justify-content:flex-end}
.msgactions button{background:var(--card);border:1px solid var(--line);border-radius:7px;color:var(--mut);font-size:11px;padding:3px 7px;cursor:pointer}
.msgactions button:hover{border-color:var(--acc);color:var(--txt)}
.msgretry,.msgexport{background:var(--card);border:1px solid var(--line);border-radius:20px;color:var(--mut);font-size:10.5px;padding:2px 9px;cursor:pointer}
.msgretry:hover,.msgexport:hover{border-color:var(--acc);color:var(--txt)}
.msg.ai .bubble{white-space:normal}
.bubble p{margin:0 0 10px}
.bubble p:last-child{margin-bottom:0}
.bubble h1,.bubble h2,.bubble h3{margin:14px 0 8px;color:var(--txt)}
.bubble h1:first-child,.bubble h2:first-child,.bubble h3:first-child{margin-top:0}
.bubble ul,.bubble ol{margin:0 0 10px;padding-left:22px}
.bubble li{margin-bottom:3px}
.bubble blockquote{margin:0 0 10px;padding:2px 12px;border-left:3px solid var(--line2);color:var(--mut)}
.bubble code{background:var(--bg2);border:1px solid var(--line);border-radius:5px;padding:1px 5px;font:12.5px "SF Mono",Menlo,monospace}
.bubble table{border-collapse:collapse;margin:0 0 10px;font-size:13px;width:100%}
.bubble th,.bubble td{border:1px solid var(--line);padding:5px 9px;text-align:left}
.bubble th{background:var(--bg2);color:var(--acc-lt)}
.codeblock{margin:0 0 10px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg2)}
.cbhead{display:flex;justify-content:space-between;align-items:center;padding:5px 11px;background:rgba(212,175,55,.06);font-size:10.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.cbcopy{background:none;border:1px solid var(--line);border-radius:6px;color:var(--mut);font-size:10px;padding:2px 8px;cursor:pointer;text-transform:none;letter-spacing:0}
.cbcopy:hover{border-color:var(--acc);color:var(--txt)}
.codeblock pre{margin:0;padding:11px;overflow-x:auto;font:12.5px/1.5 "SF Mono",Menlo,monospace}
.codeblock code{background:none;border:none;padding:0}
.memmodal{position:fixed;inset:0;background:rgba(5,6,9,.6);display:flex;align-items:center;justify-content:center;z-index:20;padding:20px}
.memmodal[hidden]{display:none}
.membox{background:var(--card);border:1px solid var(--line2);border-radius:16px;padding:20px;max-width:520px;width:100%}
.membox h4{margin:0 0 6px}
.membox textarea{width:100%;background:var(--bg2);border:1px solid var(--line);border-radius:10px;color:var(--txt);padding:11px;font:13px/1.5 Inter,sans-serif;resize:vertical;margin-top:8px}
.memrow{display:flex;gap:8px;align-items:center;margin-top:10px}
.workspace-roles{display:flex;flex-wrap:wrap;gap:8px 18px;padding:0 2px 12px;color:var(--mut);font-size:12px;letter-spacing:0}
.workspace-roles b{color:var(--txt)}
.mail-accounts{display:grid;width:100%;min-width:0;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-bottom:12px}
.mail-account{min-width:0;padding:12px 13px;background:var(--card)}
.mail-account-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}
.mail-account .mail-address{font-size:13px;line-height:1.35;overflow-wrap:anywhere}
.mail-counts{display:flex;flex-wrap:wrap;gap:4px 10px;margin:7px 0 4px;color:var(--mut);font-size:11px}
.mail-totals{margin-bottom:8px}
.mail-list{border-top:1px solid var(--line)}
.mail-item{padding:14px 2px;border-bottom:1px solid var(--line)}
.mail-item.urgent{border-left:3px solid var(--red);padding-left:11px}
.mail-row-head,.mail-heading,.mail-badges,.mail-actions,.mail-detail-row{display:flex;align-items:center;gap:8px}
.mail-row-head{justify-content:space-between;align-items:flex-start}
.mail-heading,.mail-badges{flex-wrap:wrap}
.mail-heading{min-width:0}
.mail-heading b{overflow-wrap:anywhere}
.mail-subject{font-size:14px;font-weight:650;margin-top:5px;overflow-wrap:anywhere}
.mail-detail-row{align-items:flex-start;flex-wrap:wrap;margin-top:8px}
.mail-detail-row details{min-width:220px;max-width:100%;flex:1;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:7px 10px;color:var(--mut);font-size:12px}
.mail-detail-row summary{cursor:pointer;color:var(--acc-lt)}
.mail-preview{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--txt);margin-top:8px;max-height:280px;overflow:auto}
.mail-actions{margin-top:10px;flex-wrap:wrap}
.mail-action-state{overflow-wrap:anywhere}
.pipebar{display:flex;gap:8px}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
.ptable{width:100%;border-collapse:collapse;font-size:12.5px;min-width:640px}
.ptable th{text-align:left;padding:8px 11px;background:var(--card);color:var(--acc-lt);border-bottom:1px solid var(--line2);position:sticky;top:0}
.ptable td{padding:8px 11px;border-bottom:1px solid var(--line);vertical-align:top}
.chlink{font-size:11px;color:var(--acc)}
.dim{opacity:.6}

/* ── mobile ── */
@media (max-width:720px){
  body,.app,.shell,main,.view{overflow-x:hidden}
  header{padding:10px 14px;gap:10px}
  .logo{min-width:0}
  .brand{min-width:0}
  .health{gap:8px;font-size:0;align-items:center}
  .health .dot{gap:0}
  .health .dot i{width:7px;height:7px}
  #h-gw::after{content:"GW";font-size:10.5px;margin-left:4px;color:var(--mut);white-space:nowrap}
  #h-sb::after{content:"SB";font-size:10.5px;margin-left:4px;color:var(--mut);white-space:nowrap}
  .health a{width:18px;overflow:hidden;white-space:nowrap;font-size:0!important;line-height:1!important;margin-left:2px!important;color:transparent!important}
  .health a::before{content:"\1F512";font-size:12px;line-height:1;color:var(--mut)}
  .brand span{display:none}
  /* Mobile nav: the sidebar becomes a full-height overlay (Claude-style) instead of a rolling
     top row. Off-canvas is the CSS default here (no JS needed to reach that state — avoids any
     load-time race with viewport sizing); the hamburger adds body.nav-open to slide it in over a
     dimming backdrop, and picking a section removes it again. Deliberately a DIFFERENT class from
     desktop's body.nav-hidden (which instead collapses a normally-shown sidebar) — each breakpoint
     only ever toggles the class that matches its own default state. */
  .sidenav{position:fixed;left:0;top:0;bottom:0;z-index:30;width:82vw;max-width:300px;
    padding-top:16px;opacity:1;pointer-events:auto;border-right:1px solid var(--line);
    transform:translateX(-100%);transition:transform .2s ease;box-shadow:0 0 30px rgba(0,0,0,.4)}
  body.nav-open .sidenav{transform:translateX(0)}
  body.nav-open .navbackdrop{display:block;position:fixed;inset:0;background:rgba(4,5,7,.55);z-index:25}
  .topnav a{padding:13px 12px;font-size:14.5px}
  .home{padding:22px 15px 34px}
  .homehead{margin:8px auto 16px}
  .homehead h1{font-size:23px}
  .operator-home{margin-bottom:20px}
  .op-hero{grid-template-columns:1fr;padding:13px;gap:10px}
  .op-copy h2{font-size:20px}
  .op-actions .act{flex:1 1 120px}
  .op-actions .m{width:100%}
  .tiles{grid-template-columns:1fr 1fr;gap:11px}
  .tile{padding:15px;border-radius:13px}
  .scroll{padding:16px 14px 40px}
  .two{grid-template-columns:1fr;gap:8px}
  .tr{grid-template-columns:1fr auto;grid-auto-flow:row}
  .tr span:nth-child(3){display:none}
  .ccard .row{flex-direction:column}
  .acts{width:100%}
  .act{flex:1}
  .mail-accounts{grid-template-columns:1fr}
  .mail-row-head{flex-direction:column}
  .mail-actions .act{flex:1 1 140px}
  .mail-action-state{width:100%}
  #view-fusion .backbar{flex-wrap:wrap}
  #view-fusion .bsub{width:100%;order:4}
  .fmodes{overflow-x:auto;max-width:100%;padding:9px 12px 0;-webkit-overflow-scrolling:touch}
  .fmode{white-space:nowrap}
  #chat{padding:16px 14px 8px}
  .intro{max-width:100%}
  .intro p{max-width:34ch;margin-left:auto;margin-right:auto}
  .fusion-health{display:flex;width:100%;border-radius:10px;line-height:1.35;text-align:center}
  .msg{width:100%;max-width:100%;gap:8px}
  .av{width:26px;height:26px;font-size:12px;border-radius:7px}
  .bubble{padding:12px 13px}
  .council{width:100%;padding:12px}
  .agent{align-items:flex-start;gap:8px}
  .agent b{min-width:0;max-width:42%;font-size:12px}
  .agent .prev{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .agent .meta{font-size:10.5px}
  .composer{grid-template-columns:44px minmax(0,1fr) 44px 44px;grid-template-areas:"new input input input" "mic input input input" "speak send send send" ". status status status";padding:10px 12px calc(12px + env(safe-area-inset-bottom));gap:8px}
  .composer textarea{grid-area:input;min-height:132px;max-height:38vh;font-size:16px}
  .composer .reset{grid-area:new;width:44px;padding:0}
  .composer #mic{grid-area:mic;width:44px;padding:0}
  .composer #spk{grid-area:speak;width:44px;padding:0}
  .composer .send{grid-area:send;width:100%;padding:0}
  .composer .mic-status{grid-area:status}
  .fside{position:absolute;left:0;top:0;bottom:0;z-index:8;box-shadow:0 0 30px rgba(0,0,0,.4);width:82vw;max-width:300px;display:none}
  .fside.show{display:flex}
}

/* ── Attestation ledger ─────────────────────────────────────────────── */
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--acc-lt);word-break:break-all;margin-top:4px}
.att-in{display:block;width:100%;box-sizing:border-box;margin:6px 0;background:var(--card2);border:1px solid var(--line2);color:var(--txt);border-radius:9px;padding:9px 11px;font-size:13px;font-family:inherit}
.att-in:focus{outline:none;border-color:var(--acc)}
textarea.att-in{resize:vertical;min-height:56px}

/* Secure-Phone provisioning runbook */
.prunbook{display:flex;flex-direction:column;gap:6px}
.prow{display:flex;gap:10px;align-items:flex-start}
.pnum{flex:0 0 22px;height:22px;border-radius:50%;background:var(--acc,#d4af37);color:#111;font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center;margin-top:1px}
.prow>div{flex:1}

/* Owner Apps — owner-access tiles (gold = owner, matches the estate accent) */
.applink.owner{border-color:var(--acc,#d4af37);box-shadow:0 0 0 1px rgba(212,175,55,.28)}
.applink.owner .go{color:var(--acc,#d4af37)}
.ownerhead{color:var(--acc,#d4af37)}

/* ── GhostWire tab: the product's own palette, not Pharoah's ──────────────────────────
   Owner request, repeated: clicking the GhostWire tab should look like GhostWire, not like
   the gold Pharoah console sitting around it.

   Values are lifted from the handset's own theme (ghostwire-android .../ui/theme/Theme.kt),
   not invented: Bg #0B1220 "Shield Background — deep navy", Surface #131C2E, Outline #2A3B5C,
   and the brand accent Cyan #3B9EFF. So the console and the phone in the operator's hand are
   demonstrably the same product rather than two things that happen to share a name.

   Scoped to the two GhostWire views via the router's own `.on` class, and applied by
   REDECLARING the shared variables on the container — so every child (cards, links, borders,
   buttons, chart strokes) re-themes by inheritance. Nothing else in the cockpit is touched
   and no component needs to know this exists.

   Accent contrast: #3B9EFF on #0B1220 is ~6.4:1, comfortably past WCAG AA for UI text, and it
   stays legible for red/green colour blindness because the signal is BLUE-vs-GOLD (a hue pair
   that survives both protan and deutan) rather than a red/green distinction. Status colours
   (--live/--amber/--red) are deliberately left alone: those carry meaning, and re-tinting them
   to match a brand is how a warning stops reading as a warning. */
#view-ghostwire.on{
  --bg:#0B1220; --bg2:#080E19; --card:#131C2E; --card2:#1B2740;
  --line:rgba(59,158,255,.20); --line2:rgba(59,158,255,.38);
  --acc:#3B9EFF; --acc-lt:#7FC4FF;
  --gold:linear-gradient(120deg,#7FC4FF,#3B9EFF 55%,#2E7ED9);
}
/* The page background is painted on <body>, which sits outside the view container, so the
   variable override alone cannot reach it. Repaint it while a GhostWire view is on. */
body:has(#view-ghostwire.on){
  background:radial-gradient(1200px 600px at 70% -10%,#16233B 0,#0B1220 55%);
}

/* 🚦 release-truth panel (GhostWire Ops). A version number must NEVER wrap: at this table width
   "vc128" broke across two lines as "vc12 / 8", which reads as a different number entirely — and
   this table exists to make version numbers unmistakable. Scoped class, so nothing else moves. */
.gwrel-nw{white-space:nowrap}

/* Ray-Ban Control */
.rb-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,420px);gap:16px;align-items:stretch;background:linear-gradient(135deg,rgba(212,175,55,.12),rgba(90,162,224,.08));border:1px solid var(--line2);border-radius:10px;padding:16px;margin-bottom:12px;min-width:0}
.rb-hero>div{min-width:0}
.rb-hero .eyebrow{color:var(--acc);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;margin-bottom:5px}
.rb-hero h2{font-size:23px;line-height:1.15;margin:0 0 8px;color:var(--txt)}
.rb-hero h2{overflow-wrap:anywhere}
.rb-hero p{margin:0;color:var(--mut);font-size:13.5px;line-height:1.45}
.rb-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.rb-status .op{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px 11px;min-width:0}
.rb-status .op.on{border-color:rgba(58,208,122,.55);box-shadow:inset 3px 0 0 var(--live)}
.rb-status .op.warn{border-color:rgba(224,165,58,.55);box-shadow:inset 3px 0 0 var(--amber)}
.rb-status .op b{display:block;font-size:21px;line-height:1.1;color:var(--txt);font-family:"Exo 2",Inter}
.rb-status .op span{display:block;margin-top:4px;font-size:11.5px;line-height:1.35;color:var(--mut);overflow-wrap:anywhere}
.rb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin-bottom:8px;min-width:0}
.rb-acts{margin-top:10px;flex-wrap:wrap}
.rb-acts a{display:inline-flex;align-items:center;justify-content:center}
.rb-command textarea{min-height:98px}
.rb-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rb-row .att-in{margin:0;flex:1 1 260px}
.rb-packet{white-space:pre-wrap;word-break:break-word;background:var(--bg2);border:1px solid var(--line);border-radius:8px;color:var(--acc-lt);font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;padding:10px;margin:10px 0 0}
.rb-preview img,.rb-preview video,.rb-preview audio{display:block;max-width:min(100%,520px);max-height:320px;border-radius:8px;border:1px solid var(--line2);background:var(--bg2);margin-top:10px}
.rb-preview audio{width:min(100%,520px);padding:8px}
.rb-products{margin-bottom:8px}

@media (max-width:720px){
  #view-rayban .scroll{overflow-x:hidden}
  #view-rayban .ccard,#view-rayban .applink,#view-rayban .note{min-width:0}
  #view-rayban .sectionnav{position:static;top:auto}
  .rb-hero{grid-template-columns:1fr;padding:13px}
  .rb-status{grid-template-columns:1fr}
  .rb-grid{grid-template-columns:1fr}
  .rb-acts .act{min-width:0}
  .rb-acts{display:grid;grid-template-columns:1fr;align-items:stretch}
  .rb-row .act{flex:1 1 120px}
}

/* inline head styles from index.html */

  /* Research-mode toggle + web-source chips — Pharoah gold (#D4AF37) on graphite */
  .fmodes{display:flex;gap:6px;padding:10px 16px 0}
  .fmode{font:600 13px/1 'Inter',sans-serif;color:#9aa1ab;background:transparent;border:1px solid #2a2f3a;border-radius:999px;padding:7px 14px;cursor:pointer}
  .fmode.on{color:#0F1115;background:#D4AF37;border-color:#D4AF37}
  .webline{font:500 12px/1.4 'Inter',sans-serif;color:#c9a94a;margin:2px 0 6px}
  .webline a{color:#D4AF37;text-decoration:none}
  .webline a:hover{text-decoration:underline}
  .srcline{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
  .srcline .src{font:500 11px/1 'Inter',sans-serif;color:#D4AF37;text-decoration:none;border:1px solid #2a2f3a;border-radius:999px;padding:3px 9px}
  .srcline .src:hover{border-color:#D4AF37}
  /* Command Centre — lane roster, dispatch, live feed */
  .lane-roster{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
  .lane-chip{display:flex;flex-direction:column;gap:2px;border:1px solid #2a2f3a;border-radius:10px;padding:8px 26px 8px 11px;min-width:150px;position:relative}
  .lane-chip.mine{border-color:#D4AF37}
  .lane-chip .ld{position:absolute;top:11px;right:11px;width:8px;height:8px;border-radius:50%;background:#555}
  .lane-chip.alive .ld{background:#3ad07a;box-shadow:0 0 6px #3ad07a}
  .lane-chip b{font:600 13px/1.2 'Inter',sans-serif}
  .lane-chip .lm{font:500 11px/1.3 'Inter',sans-serif;color:#9aa1ab}
  .dispatch .search{width:100%;margin:4px 0}
  .dispatch select.search{cursor:pointer}
  .feed-log{max-height:280px;overflow:auto;border:1px solid #1e2430;border-radius:10px}
  .feed-row{padding:6px 11px;border-bottom:1px solid #1a1f28;font:500 12px/1.4 'Inter',sans-serif}
  .feed-row:last-child{border-bottom:none}
  .feed-row.bad{color:#e0808a}
  .feed-row .dt{color:#7f8894}
  /* Website analytics panel — sparkline + compact top-pages/CTAs rows */
  .spark{background:#151A21;border:1px solid rgba(212,175,55,.18);border-radius:12px;padding:10px 14px 6px;margin:10px 0}
  .spark svg{display:block}
  .sparklbl{display:flex;justify-content:space-between;color:#9aa1ab;font:500 10px/1 'Inter',sans-serif;margin-top:2px}
  .tr2{grid-template-columns:1fr auto !important}
