:root{
  --canvas:#f8f9ff; --raised:#fff; --sunken:#eff4ff; --soft:#e5eeff; --softer:#dce9ff;
  --ink:#0b1c30; --ink-dim:#45464d; --ink-faint:#76777d; --rule:#c6c6cd;
  --primary:#000; --accent:#497cff; --accent-deep:#003ea8; --accent-wash:#dae2fd;
  --critical:#ba1a1a; --warning:#b45309; --success:#047857; --info:#1e40af;
  --sans:'Inter',system-ui,sans-serif; --serif:'Newsreader',Georgia,serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--sans);background:var(--canvas);color:var(--ink);font-size:14px;line-height:1.5}
.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
.eyebrow{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-faint)}

/* sidebar */
.sidebar{background:var(--sunken);border-right:1px solid var(--rule);display:flex;flex-direction:column;padding:24px 16px}
.brand{display:flex;gap:10px;align-items:center;margin-bottom:28px}
.mark{width:28px;height:28px;background:var(--accent);position:relative}
.mark::after{content:"";position:absolute;right:-5px;bottom:-5px;width:14px;height:14px;background:#db2777}
.brand-name{font-weight:700;font-size:16px;letter-spacing:-.01em}
.brand-sub{font-size:10px;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-faint)}
nav{display:flex;flex-direction:column;gap:2px}
.nav-group{font-size:10px;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-faint);margin:18px 8px 6px}
.nav-item{text-align:left;background:none;border:none;font-family:var(--sans);font-size:13px;font-weight:500;color:var(--ink-dim);padding:9px 10px;cursor:pointer;border-left:2px solid transparent}
.nav-item:hover{background:var(--softer)}
.nav-item.active{background:var(--accent-wash);color:var(--ink);border-left:2px solid var(--accent)}
.side-foot{margin-top:auto;padding-top:20px}
.legend{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--ink-dim)}
.legend .eyebrow{margin-bottom:4px}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle}
.dot-green{background:var(--success)} .dot-amber{background:var(--warning)} .dot-red{background:var(--critical)}
.green-t{color:var(--success);font-weight:600}.amber-t{color:var(--warning);font-weight:600}

/* main */
.main{padding:0 0 60px}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 40px;border-bottom:1px solid var(--rule);background:var(--canvas);position:sticky;top:0;z-index:5}
.crumb{font-size:12px;font-weight:600;color:var(--ink)}
.org{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;background:var(--raised);border:1px solid var(--rule);padding:7px 12px}
.org-ico{width:14px;height:14px;background:var(--ink)}
.view{padding:36px 40px;max-width:1100px}
.view.hidden{display:none}
h1{font-family:var(--serif);font-weight:700;font-size:40px;letter-spacing:-.02em;margin:6px 0 4px}
h1.display{font-size:64px;line-height:1;letter-spacing:-.03em}
.lede{color:var(--ink-dim);font-size:16px;max-width:640px;margin-bottom:28px}
/* Configure scope note — clarifies this page edits THIS client's overrides (vs shared Taxonomy) */
.cfg-scope-note{font-size:13px;margin-bottom:6px}
#cfg-profile{font-size:14px}

/* kpis */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.kpi{background:var(--raised);padding:20px;border:1px solid var(--rule)}
.kpi .lbl{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);margin-bottom:8px}
.kpi .val{font-family:var(--serif);font-weight:800;font-size:34px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.kpi .sub{font-size:12px;color:var(--ink-faint);margin-top:4px;font-family:var(--mono)}

/* rows (macro) */
.rows{display:flex;flex-direction:column;border:1px solid var(--rule)}
.row{display:grid;grid-template-columns:120px 1fr 150px;gap:16px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--rule);background:var(--raised)}
.row:last-child{border-bottom:none}
.row:hover{background:var(--sunken)}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:4px 8px}
.chip-calendar{background:#e0f2fe;color:#0369a1}.chip-macro{background:#e2e8f0;color:#334155}
.chip-competitive{background:#fce7f3;color:#db2777}.chip-regulatory{background:#fef3c7;color:#b45309}
.chip-channel{background:#ede9fe;color:#7c3aed}.chip-input_cost{background:#ffedd5;color:#9a3412}.chip-trend{background:#cffafe;color:#0891b2}
.row .ttl{font-weight:500;color:var(--ink)}
.row .src{font-family:var(--mono);font-size:11px;color:var(--ink-faint);text-align:right;text-decoration:none}
.row .src:hover{color:var(--accent)}

/* benchmark table */
table{width:100%;border-collapse:collapse;background:var(--raised);border:1px solid var(--rule)}
th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--rule);font-variant-numeric:tabular-nums}
th{background:var(--sunken);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);font-weight:700}
td.metric{font-weight:600}
.cell-val{font-family:var(--serif);font-weight:700;font-size:18px}
.cell-unit{font-size:12px;color:var(--ink-faint)}
.cell-conf{font-size:10px;text-transform:uppercase;letter-spacing:.08em;margin-top:3px}
.c-green{color:var(--success)}.c-amber{color:var(--warning)}.c-red{color:var(--critical)}

/* competitor cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
/* CANONICAL CARD PRIMITIVE — .card is the boxed surface (raised bg, 1px rule, 20px pad).
   Variants: .form-card (sunken bg, for input forms) · .cfg-block (an unboxed section group
   with a .cfg-head). Reuse these for boxed content rather than introducing new box classes. */
.card{background:var(--raised);border:1px solid var(--rule);padding:20px}
.card h3{font-size:18px;margin-bottom:2px}
.card .role{font-size:11px;color:var(--ink-faint);font-family:var(--mono);margin-bottom:16px}

/* PILLAR FRAMING — the four client-view pillars (Macro · Calendar · Benchmark · Competitor)
   wrap their main content in .pillar-card so they share one consistent frame + header.
   Inner .rows/.feed lose their own outer border (the card provides the frame); .pillar-card-head
   is the shared eyebrow strip. Reuses the canonical .card primitive — no new visual language. */
.pillar-card{padding:0;margin-top:4px}
.pillar-card-head{padding:13px 18px;border-bottom:1px solid var(--rule)}
.pillar-card-head .eyebrow{display:block}
.pillar-card > .rows{border:none}
.pillar-card > #benchmark-matrix{padding:4px 0}
.macro-group > .rows{border:none}
.macro-group .pillar-card-head{border-bottom:1px solid var(--rule)}
/* Off-topic (low-relevance) macro rows — collapsed by default, tucked under a quiet summary */
.macro-offtopic{border-top:1px solid var(--rule)}
.macro-offtopic > summary{list-style:none;cursor:pointer;padding:13px 18px;display:flex;align-items:baseline;gap:10px;background:var(--sunken)}
.macro-offtopic > summary::-webkit-details-marker{display:none}
.macro-offtopic > summary::before{content:"▸";color:var(--ink-faint);font-size:11px;margin-right:2px}
.macro-offtopic[open] > summary::before{content:"▾"}
.macro-offtopic > summary:hover{background:var(--raised)}
.macro-offtopic .eyebrow{display:inline}
.macro-offtopic-note{font-size:11px;color:var(--ink-faint);font-style:italic}
.macro-offtopic > .rows{border:none;border-top:1px solid var(--rule)}
/* Combined competitor summary — movement digest + share of voice side by side in one card */
.pillar-summary{margin-top:4px}
.cm-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.cm-summary-sec .eyebrow{display:block;margin-bottom:10px}
.cm-summary .sov{border:none;padding:0;background:none}
@media(max-width:760px){.cm-summary-grid{grid-template-columns:1fr;gap:18px}}
.metric-line{display:flex;justify-content:space-between;align-items:baseline;padding:8px 0;border-top:1px solid var(--rule)}
.metric-line .k{font-size:12px;color:var(--ink-dim)}
.metric-line .v{font-family:var(--serif);font-weight:700;font-size:20px;font-variant-numeric:tabular-nums}
.tag{font-size:9px;text-transform:uppercase;letter-spacing:.08em;padding:2px 6px;margin-left:8px}
.tag-green{background:#d1fae5;color:var(--success)}.tag-amber{background:#fef3c7;color:var(--warning)}
.promo{margin-top:14px;font-size:12px;color:var(--ink-dim);border-left:2px solid var(--accent);padding-left:10px}

/* decision cards */
.decisions{display:flex;flex-direction:column;gap:24px}
.decision{background:var(--raised);border:1px solid var(--rule);border-top:3px solid var(--critical)}
.decision .sig{display:flex;justify-content:space-between;align-items:flex-start;padding:20px 24px;border-bottom:1px solid var(--rule);background:var(--sunken)}
.decision .sig .eyebrow{color:var(--critical)}
.decision .sig h3{font-family:var(--serif);font-weight:700;font-size:22px;margin-top:4px;max-width:560px}
.decision .delta{font-family:var(--serif);font-weight:800;font-size:38px;color:var(--critical);font-variant-numeric:tabular-nums;white-space:nowrap}
.decision .body{padding:22px 24px}
.why-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.why-ico{width:22px;height:22px;background:var(--accent-wash);display:inline-flex;align-items:center;justify-content:center;color:var(--accent-deep);font-size:13px;font-weight:700}
.why-head .eyebrow{color:var(--accent-deep)}
.why{font-family:var(--serif);font-size:18px;line-height:1.55;color:var(--ink);margin-bottom:18px}
.compare{display:flex;gap:0;border:1px solid var(--rule);margin-bottom:18px}
.compare div{flex:1;padding:12px 16px;border-right:1px solid var(--rule)}
.compare div:last-child{border-right:none}
.compare .k{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint)}
.compare .vv{font-family:var(--serif);font-weight:700;font-size:18px;margin-top:3px;font-variant-numeric:tabular-nums}
.ev{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.ev .item{display:flex;gap:10px;align-items:baseline;font-size:13px;color:var(--ink-dim)}
.ev .pill{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:3px 7px;background:var(--soft);color:var(--info);white-space:nowrap}
.action{background:var(--accent-wash);border-left:3px solid var(--accent);padding:14px 16px}
.action .eyebrow{color:var(--accent-deep);margin-bottom:5px}
.action .txt{font-size:14px;color:var(--ink)}
.synth-note{font-size:11px;color:var(--ink-faint);margin-top:12px;font-family:var(--mono)}

/* charts */
.chart-block{margin:18px 0;padding:14px 16px;background:var(--sunken);border:1px solid var(--rule)}
.chart-block .eyebrow{margin-bottom:6px}
.poschart{width:100%;height:auto;display:block;font-family:var(--sans)}
.c-accent{color:var(--accent-deep)!important}
td .cell-val.c-accent{font-weight:800}

/* identity / feeding framing */
.feeds-core{font-size:11px;line-height:1.4;color:var(--ink-dim);background:var(--accent-wash);
  border-left:2px solid var(--accent);padding:8px 10px;margin:-8px 0 16px}
.feeds-core b{color:var(--accent-deep)}
.topright{display:flex;align-items:center;gap:12px}
.feed-pill{font-size:11px;font-weight:600;color:var(--accent-deep);background:var(--accent-wash);
  padding:6px 10px;letter-spacing:.02em}
.mono{font-family:var(--mono);font-size:12px}

/* feeding core channels */
.channel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:24px}
.channel{background:var(--raised);border:1px solid var(--rule);border-top:3px solid var(--accent);padding:18px}
.channel .lbl{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint)}
.channel .val{font-family:var(--serif);font-weight:800;font-size:34px;color:var(--accent-deep);font-variant-numeric:tabular-nums}
.channel .sub{font-size:12px;color:var(--ink-dim);margin-top:4px}

/* console: selector, forms, config */
.client-select{font-family:var(--sans);font-size:13px;font-weight:600;background:var(--raised);
  border:1px solid var(--rule);padding:7px 12px;color:var(--ink);cursor:pointer}
.muted{color:var(--ink-faint)}
.btn{background:var(--primary);color:#fff;border:none;font-family:var(--sans);font-size:11px;
  font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:10px 18px;cursor:pointer}
.btn:hover{background:var(--accent-deep)}
.btn-sm{padding:7px 12px;font-size:10px}
.client-card{cursor:default}
.client-card-actions{display:flex;align-items:center;gap:8px;margin-top:14px}
.client-card-actions .btn{margin-top:0}
.form-card{background:var(--sunken);border:1px solid var(--rule);padding:20px;margin-top:20px}
.form-card .eyebrow{margin-bottom:12px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:14px}
.form-grid label{display:flex;flex-direction:column;font-size:11px;text-transform:uppercase;
  letter-spacing:.08em;color:var(--ink-faint);gap:5px}
.form-grid input{font-family:var(--sans);font-size:14px;text-transform:none;letter-spacing:0;
  color:var(--ink);background:var(--raised);border:1px solid var(--rule);padding:9px 10px}
.cfg-block{margin-top:28px}
.cfg-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.cfg-row{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--raised);
  border:1px solid var(--rule);border-bottom:none;padding:14px 16px}
.cfg-row:last-child{border-bottom:1px solid var(--rule)}
.dim-chips{display:flex;flex-wrap:wrap;gap:6px}
.dim-chips .pill{background:var(--soft);color:var(--info)}
.dim-toggles{display:flex;flex-wrap:wrap;gap:14px;margin:6px 0 14px}
.chk{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-dim);cursor:pointer}
.metric-pick{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;
  background:var(--raised);border:1px solid var(--rule);padding:18px}
.metric-group .eyebrow{margin-bottom:8px}
.metric-group .chk{padding:3px 0}
.unit{color:var(--ink-faint);font-size:11px;font-family:var(--mono)}
/* Client Profile editor — competitor cards (reuse form-card/form-grid look) */
.cp-comp{background:var(--sunken);border:1px solid var(--rule);padding:18px 20px;margin-bottom:16px}
.cp-comp-new{border-style:dashed;background:var(--raised)}
.cp-comp-head{font-weight:700;font-size:14px;color:var(--ink);margin-bottom:12px}
.cp-comp .form-grid{margin-bottom:12px}
.cp-comp-listed{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:12px}
.cp-c-bursa-l{display:flex;align-items:center;gap:8px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint)}
.cp-c-bursa-l input{font-family:var(--sans);font-size:14px;text-transform:none;letter-spacing:0;color:var(--ink);background:var(--raised);border:1px solid var(--rule);padding:7px 9px;width:110px}
.cp-comp-actions{display:flex;align-items:center;gap:10px;margin-top:6px}
.cp-save-note{font-size:12px}
.cp-comp .dim-toggles{margin:2px 0 4px}
.scope-head{margin:16px 0 6px}

/* ===== Client/Admin shell (UI rework Phase 1) ===== */
.client-indicator{background:var(--raised);border:1px solid var(--rule);border-left:3px solid var(--accent);
  border-radius:0;padding:12px 14px;margin-bottom:12px}
.ci-label{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-faint)}
.ci-name{font-family:var(--serif);font-weight:700;font-size:20px;line-height:1.12;margin:2px 0}
.ci-sub{font-size:11px;color:var(--ink-faint);font-family:var(--mono);margin-bottom:9px}
.client-indicator .client-select{width:100%}
.view-toggle{display:flex;border:1px solid var(--rule);margin-bottom:16px}
.vt{flex:1;background:none;border:none;border-right:1px solid var(--rule);font-family:var(--sans);
  font-size:12px;font-weight:600;color:var(--ink-dim);padding:9px;cursor:pointer}
.vt:last-child{border-right:none}
.vt:hover{background:var(--softer)}
.vt.active{background:var(--accent);color:#fff}
.nav-sec.hidden{display:none}
/* admin mode: indicator turns amber ("editing"), legacy →Core views collapse */
.client-indicator.editing{border-left-color:var(--warning)}
.client-indicator.editing .ci-label{color:var(--warning)}
.editing-banner{background:#fff7ed;border:1px solid #fed7aa;border-left:3px solid var(--warning);
  color:#9a3412;font-size:13px;padding:10px 14px;margin-bottom:18px}
.editing-banner b{color:#7c2d12}
.nav-preview{margin-top:12px}
.nav-preview summary{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);
  margin:8px 8px 4px;cursor:pointer;list-style:none;user-select:none}
.nav-preview summary::-webkit-details-marker{display:none}
.nav-preview summary::before{content:"▸ "}
.nav-preview[open] summary::before{content:"▾ "}
.nav-preview .nav-item{font-size:12px;color:var(--ink-faint);padding-left:16px}

/* ===== Core ⇄ Sensory · context-service contract ===== */
.nav-primary{font-weight:700;color:var(--ink)}
.nav-primary::before{content:"◆ ";color:var(--accent)}
/* CANONICAL TAB PRIMITIVE — .ask-tabs (bar) · .ask-tab (button) · .ask-panel (one panel
   per tab, .hidden toggles visibility). Reused by: Ask (By signal/window), Sensing status
   (Coverage/LLM/…/Job runs), and Taxonomy (Industries/Routing/Exposure templates/Benchmark).
   Use this pattern for any new sub-tabbed workspace rather than inventing a new tab style. */
.ask-tabs{display:flex;gap:8px;margin-bottom:20px}
.ask-tab{font-family:var(--sans);font-size:13px;font-weight:600;background:var(--raised);
  border:1px solid var(--rule);color:var(--ink-dim);padding:10px 18px;cursor:pointer}
.ask-tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.ask-panel.hidden{display:none}

/* Core asks card */
.ask-card.core-asks{background:var(--sunken);border:1px solid var(--rule);border-left:3px solid var(--ink);
  padding:20px 22px;margin-bottom:18px}
.qa-side{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em}
.qa-side.asks{color:var(--ink)}
.qa-side.answers{color:var(--accent-deep);margin-bottom:12px}
.contract-line{font-size:13px;margin:8px 0 14px}
.signal-pick{display:flex;flex-wrap:wrap;gap:10px}
.sig-btn{display:flex;flex-direction:column;gap:3px;text-align:left;background:var(--raised);
  border:1px solid var(--rule);padding:12px 16px;cursor:pointer;min-width:150px}
.sig-btn:hover{border-color:var(--accent)}
.sig-btn.active{border-color:var(--accent);background:var(--accent-wash);box-shadow:inset 0 0 0 1px var(--accent)}
.sig-metric{font-weight:600;font-size:13px;color:var(--ink)}
.sig-delta{font-family:var(--serif);font-weight:800;font-size:24px;font-variant-numeric:tabular-nums}
.sig-delta.neg{color:var(--critical)}.sig-delta.pos{color:var(--success)}
.sig-period{font-family:var(--mono);font-size:10px;color:var(--ink-faint)}
.picker-row{display:flex;gap:32px;flex-wrap:wrap;margin:10px 0 16px}
.window-pick,.scope-pick{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.win-btn{font-family:var(--sans);font-size:12px;font-weight:600;background:var(--raised);
  border:1px solid var(--rule);color:var(--ink-dim);padding:8px 12px;cursor:pointer}
.win-btn.active{border-color:var(--accent);background:var(--accent-wash);color:var(--ink)}
.scope-pick .chk{font-size:12px}

/* raw payload */
.raw{margin-top:14px}
.raw summary{font-family:var(--mono);font-size:11px;color:var(--ink-faint);cursor:pointer;text-transform:uppercase;letter-spacing:.06em}
.raw summary:hover{color:var(--accent)}
.raw pre{font-family:var(--mono);font-size:11px;line-height:1.5;background:#0b1c30;color:#cfe0ff;
  padding:16px;margin-top:10px;overflow-x:auto;border-radius:2px;max-height:420px;overflow-y:auto}

/* Sensory answers */
.answer-wrap{margin-top:6px}
.loading{font-family:var(--mono);font-size:12px;color:var(--ink-faint);padding:24px}
.ans-summary{font-family:var(--serif);font-size:19px;line-height:1.5;color:var(--ink);
  background:var(--accent-wash);border-left:3px solid var(--accent);padding:16px 18px;margin-bottom:18px}
.causes{display:flex;flex-direction:column;gap:14px}
.cause{background:var(--raised);border:1px solid var(--rule);padding:18px 20px}
.cause-top{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.cause-top .rank{font-family:var(--serif);font-weight:800;font-size:20px;color:var(--ink-faint)}
.cause-top h4{font-size:17px;font-weight:700;color:var(--ink);margin-left:2px}
.fit{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px}
.fit-yes{background:#d1fae5;color:var(--success)}
.fit-mid{background:#fef3c7;color:var(--warning)}
.fit-no{background:#fee2e2;color:var(--critical)}
.contrib{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.contrib-bar{flex:1;height:8px;background:var(--soft);overflow:hidden;max-width:340px}
.contrib-bar span{display:block;height:100%;background:var(--accent)}
.muted-bar span{background:var(--ink-faint)}
.contrib-num{font-family:var(--mono);font-size:12px;color:var(--ink-dim);white-space:nowrap}
.contrib-num em{color:var(--ink-faint);font-style:normal}
.mech{font-size:14px;line-height:1.55;color:var(--ink-dim);margin-bottom:10px}
.expected{font-size:13px;color:var(--ink);margin-bottom:12px}
.expected .eyebrow{display:inline;margin-right:6px}
.ev-list{display:flex;flex-direction:column;gap:7px;border-top:1px solid var(--rule);padding-top:12px}
.ev{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13px;color:var(--ink-dim)}
.ev-obs{flex:1;min-width:200px}
.ev-meta{font-family:var(--mono);font-size:11px;color:var(--ink-faint)}
.ev-meta .src{text-decoration:none;color:var(--ink-faint)}
.ev-meta .src:hover{color:var(--accent)}
.cause-conf{font-size:11px;color:var(--ink-faint);margin-top:12px;font-family:var(--mono)}
.residual{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--sunken);
  border:1px dashed var(--rule);padding:14px 18px;margin:16px 0}
.residual .eyebrow{white-space:nowrap}
.coverage{font-size:13px;line-height:1.55;color:var(--ink-dim);border-left:2px solid var(--rule);
  padding:4px 0 4px 14px;margin-bottom:18px}
.actions{background:var(--raised);border:1px solid var(--rule);border-top:3px solid var(--accent);padding:16px 20px}
.actions .eyebrow{color:var(--accent-deep);margin-bottom:10px}
.actions ol{margin-left:18px;display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--ink)}

/* explain narrative badge */
.nar-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-8px 0 16px}
.nar-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  padding:3px 8px;background:var(--soft);color:var(--info)}
.nar-llm{background:#d1fae5;color:var(--success)}
.nar-rej{background:#fef3c7;color:var(--warning)}

/* review gate */
.review-card{border-top:3px solid var(--accent)}
.rc-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.rc-top b{font-size:15px}
.rc-sum{font-size:13px;color:var(--ink-dim);line-height:1.5;margin-bottom:14px}
.rc-actions{display:flex;gap:8px}
.btn-ghost{background:var(--raised);color:var(--ink-dim);border:1px solid var(--rule)}
.btn-ghost:hover{background:var(--sunken);color:var(--critical)}

/* digest */
.dsection{margin-bottom:22px}
.dsec-head{margin-bottom:10px}
.ditem{background:var(--raised);border:1px solid var(--rule);border-bottom:none;padding:14px 18px}
.ditem:last-child{border-bottom:1px solid var(--rule)}
.ditem-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ditem-top b{font-size:14px}
.ditem-detail{font-size:13px;color:var(--ink-dim);margin-bottom:4px}
.ditem-why{font-size:12px;color:var(--ink-faint);font-style:italic;margin-bottom:8px}
.touches{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.touches .eyebrow{display:inline}
.touches .pill{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  padding:3px 7px;background:var(--soft);color:var(--info)}
.ditem .ev-list{border-top:1px dashed var(--rule);padding-top:8px}

/* ---- Macro Watch (Pillar 1) feed ---- */
.feed-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:18px 0 14px}
.period-filter{display:flex;align-items:center;gap:8px}
.period-filter .eyebrow{margin-right:2px}
.pf{font-family:var(--sans);font-size:12px;font-weight:600;background:var(--raised);color:var(--ink-dim);
  border:1px solid var(--rule);padding:6px 12px;cursor:pointer}
.pf:hover{background:var(--sunken)}
.pf.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.period-window{font-family:var(--mono);font-size:11px;color:var(--ink-faint);margin-left:8px}
.date-range{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-faint)}
.date-in{font-family:var(--mono);font-size:12px;padding:5px 8px;border:1px solid var(--rule);background:var(--raised);color:var(--ink)}
.date-in:focus{outline:none;border-color:var(--accent)}
.search-box{font-family:var(--sans);font-size:13px;padding:7px 12px;border:1px solid var(--rule);
  background:var(--raised);color:var(--ink);min-width:220px}
.search-box:focus{outline:none;border-color:var(--accent)}
.scope-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;border-bottom:1px solid var(--rule);padding-bottom:10px}
.scope-tab{font-family:var(--sans);font-size:12px;font-weight:600;background:var(--raised);color:var(--ink-dim);
  border:1px solid var(--rule);padding:6px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.scope-tab:hover{background:var(--sunken)}
.scope-tab.active{background:var(--accent-wash);color:var(--accent-deep);border-color:var(--accent)}
.scope-tab .tab-n{font-family:var(--mono);font-size:10px;background:var(--soft);color:var(--ink-faint);padding:1px 6px;border-radius:9px}
.scope-tab.active .tab-n{background:#fff;color:var(--accent-deep)}
.cal-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.cal-tab{font-family:var(--sans);font-size:12px;font-weight:600;background:var(--raised);color:var(--ink-dim);
  border:1px solid var(--rule);padding:6px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.cal-tab:hover{background:var(--sunken)}
.cal-tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.cal-tab .tab-n{font-family:var(--mono);font-size:10px;background:var(--soft);color:var(--ink-faint);padding:1px 6px;border-radius:9px}
.cal-tab.active .tab-n{background:rgba(255,255,255,.25);color:#fff}
.cal-admin{margin-top:28px;border:1px solid var(--rule);background:var(--raised);padding:14px 16px}
.cal-admin>summary{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--ink-dim);cursor:pointer}
.cal-admin-lede{font-size:12px;color:var(--ink-faint);margin:10px 0 14px;line-height:1.5}
.cal-admin-research{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.cal-admin-list{display:flex;flex-direction:column;gap:4px}
.cal-event-row{display:flex;align-items:center;gap:10px;font-size:12px;padding:5px 0;border-top:1px solid var(--rule)}
.cal-event-md{font-family:var(--mono);font-size:11px;color:var(--ink-faint);min-width:42px}
.cal-event-name{flex:1;color:var(--ink);font-weight:600}
.cal-event-aud{font-family:var(--mono);font-size:10px;background:var(--soft);color:var(--ink-faint);padding:1px 7px;border-radius:9px}
.btn-mini{font-family:var(--sans);font-size:10px;background:var(--raised);color:var(--ink-dim);border:1px solid var(--rule);padding:3px 9px;cursor:pointer}
.btn-mini:hover{background:var(--sunken);color:var(--critical)}
.cal-src-op{background:var(--accent-soft,var(--soft));color:var(--accent-deep,var(--ink-dim))}
.cal-src-auto{background:var(--soft);color:var(--ink-faint)}
.cal-row-hidden{opacity:.5}
.cal-row-hidden .cal-event-name{text-decoration:line-through}
.cal-dup{background:transparent;color:var(--ink-faint);border:1px dashed var(--rule);font-style:italic}
.feed .frow{display:grid;grid-template-columns:48px 1fr 150px;gap:14px;align-items:start;
  padding:13px 18px;border-bottom:1px solid var(--rule);background:var(--raised)}
.feed .frow:last-child{border-bottom:none}
.feed .frow:hover{background:var(--sunken)}
.feed .frow.dim{opacity:.5}
.feed .frow.dim:hover{opacity:.85}
.frow-rel{display:flex;justify-content:center;padding-top:2px}
.rel-chip{font-family:var(--mono);font-size:12px;font-weight:600;padding:3px 7px;border-radius:4px;line-height:1}
.rel-hi{background:#dcfce7;color:#047857}.rel-mid{background:#fef3c7;color:#b45309}.rel-lo{background:#f1f5f9;color:#76777d}
.frow-top{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.frow-top b{font-size:14px;font-weight:500;color:var(--ink)}
.frow-why{font-size:12px;color:var(--ink-faint);font-style:italic}
.frow-eng{font-size:12px;color:var(--ink-faint);font-family:var(--mono);letter-spacing:.02em}
.frow-meta{text-align:right}
.frow-meta .src{font-family:var(--mono);font-size:11px;color:var(--ink-faint);text-decoration:none;display:block}
.frow-meta .src:hover{color:var(--accent)}
/* per-client "not relevant" control — a muted text button that hides a macro item for this
   client (reversible via the undo toast). Quiet by default; reveals intent on hover. */
.frow-nr{background:none;border:none;font-family:var(--sans);font-size:11px;color:var(--ink-faint);
  cursor:pointer;padding:2px 0;margin-top:4px;display:inline-block;text-decoration:underline;text-underline-offset:2px}
.frow-nr:hover{color:var(--accent)}
/* per-client "mark relevant" (pin) control — the positive twin of .frow-nr. Operator curation
   of RANKING, never a causal claim. Quiet by default; the active state shows a filled star. */
.frow-pin{background:none;border:none;font-family:var(--sans);font-size:11px;color:var(--ink-faint);
  cursor:pointer;padding:2px 0;margin-top:4px;display:inline-block;text-decoration:underline;text-underline-offset:2px}
.frow-pin:hover{color:var(--accent)}
.frow-pin.on{color:var(--accent);font-weight:600}
/* per-item re-score (circular-arrow) control — a quiet icon button next to the curation links. */
.frow-rescore{background:none;border:none;font-size:13px;line-height:1;color:var(--ink-faint);
  cursor:pointer;padding:2px 4px;margin-top:4px;display:inline-block}
.frow-rescore:hover{color:var(--accent)}
.frow-rescore:disabled{opacity:.4;cursor:default}
/* "marked relevant" badge on pinned rows — an operator-curation label (ranking only). */
.frow-pinned-badge{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;
  color:var(--accent);border:1px solid var(--accent);border-radius:3px;padding:1px 5px}
.frow.pinned{border-left:2px solid var(--accent)}
/* "observed" qualifier — website/ads dates are an "as observed" SENSE-date (scrape day /
   ad start), NOT a real post timestamp. Subtle muted pill keeps it honest without shouting;
   semantic vars keep it theme/dark-mode safe. Social (IG) rows omit it (real timestamp). */
.frow-obs{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;
  color:var(--ink-faint);background:var(--sunken);border:1px solid var(--rule);
  border-radius:2px;padding:0 4px;cursor:help}
/* Macro Watch per-row evidence toggle — a native <details> showing the verbatim source quote
   that grounds relevance. Collapsed by default; ▸/▾ marker stands in for the default disclosure
   triangle. Only macro rows with real source text render this (GDELT headline-only → none). */
.frow-ev{margin-top:4px}
.frow-ev>summary{cursor:pointer;font-size:11px;color:var(--ink-faint);letter-spacing:.03em;list-style:none}
.frow-ev>summary::-webkit-details-marker{display:none}
.frow-ev>summary::before{content:"▸ ";}
.frow-ev[open]>summary::before{content:"▾ ";}
.frow-ev blockquote{margin:4px 0 0;padding:6px 10px;border-left:2px solid var(--soft);
  font-size:12px;color:var(--ink);background:var(--soft);border-radius:0 6px 6px 0}
.frow-ev .ev-src{color:var(--ink-faint);font-style:normal}
.chip-cal-holiday{background:#e0f2fe;color:#0369a1}
.chip-cal-mega_sale{background:#fde68a;color:#92400e}
.chip-cal-commercial{background:#ede9fe;color:#7c3aed}
/* Calendar relevance now uses the shared 0–100 rel-chip (per-client demand-driver score);
   low-relevance rows (<45) dim, matching the Macro/Competitor feeds. */
.row.dim{opacity:.55}
.row.dim:hover{opacity:.9}

/* ---- Macro Watch dimension facet (topic axis) + per-item dimension chip ---- */
.dim-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.dim-tab{font-family:var(--sans);font-size:11px;font-weight:600;background:var(--raised);color:var(--ink-dim);
  border:1px solid var(--rule);padding:5px 10px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;border-radius:999px}
.dim-tab:hover{background:var(--sunken)}
.dim-tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.dim-tab.active .tab-n{background:rgba(255,255,255,.25);color:#fff}
.dim-chip{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:3px 6px;white-space:nowrap}
.d-demand{background:#dbeafe;color:#1e40af}
.d-input_cost{background:#ffedd5;color:#9a3412}
.d-logistics{background:#e0e7ff;color:#3730a3}
.d-channel{background:#ede9fe;color:#6d28d9}
.d-regulatory{background:#fef3c7;color:#92400e}
.d-supplier{background:#d1fae5;color:#065f46}
.d-capital{background:#e2e8f0;color:#475569}
.d-competitive{background:#fce7f3;color:#be185d}
.d-off-topic{background:#f1f5f9;color:#94a3b8}

/* ---- exposure-map editor (Configure) ---- */
.exp-relation{background:var(--raised);border:1px solid var(--rule);padding:12px 16px;margin-bottom:10px}
.exp-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.exp-rel{font-family:var(--mono);font-size:11px;color:var(--ink-faint)}
.exp-w{font-size:11px;color:var(--ink-faint);margin-left:auto;display:inline-flex;align-items:center;gap:6px}
.exp-weight{width:64px;font-family:var(--mono);font-size:12px;padding:4px 6px;border:1px solid var(--rule);background:var(--sunken)}
.exp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.exp-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;background:var(--soft);color:var(--ink);padding:4px 6px 4px 9px}
.exp-x{border:none;background:none;color:var(--ink-faint);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}
/* inherited/custom origin tag inside a watch-list chip — muted, smaller than the term */
.watch-tag{font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);opacity:.85}
.exp-x:hover{color:var(--critical)}
.exp-add{min-width:200px}
.exp-diagram{margin:4px 0 18px;background:var(--raised);border:1px solid var(--rule);padding:10px}
.exp-diagram svg{display:block}

/* ---- Industry Benchmark (Pillar 2) matrix ---- */
.coverage-pill{font-size:12px;color:var(--ink-dim);background:var(--raised);border:1px solid var(--rule);padding:7px 12px}
.coverage-pill b{color:var(--accent-deep);font-size:14px}
.qtr-pick{display:inline-flex;gap:4px;margin-left:4px}
.qchip{font-family:var(--mono);font-size:11px;font-weight:600;background:var(--raised);color:var(--ink-dim);
  border:1px solid var(--rule);padding:5px 9px;cursor:pointer}
.qchip:hover{background:var(--sunken)}
.qchip.active{background:var(--accent-wash);color:var(--accent-deep);border-color:var(--accent)}
.bm-table th:first-child,.bm-table td:first-child{position:sticky;left:0}
.bm-table td.metric{font-weight:500;font-size:13px;background:var(--raised)}
.bm-group td{background:var(--sunken);font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;color:var(--ink-faint);padding:8px 16px}
.bm-cell{vertical-align:top}
.bm-val{font-family:var(--serif);font-weight:700;font-size:16px;display:flex;align-items:center;gap:5px}
.bm-meta{font-family:var(--mono);font-size:10px;color:var(--ink-faint);margin-top:3px}
.bm-meta .src{text-decoration:none;color:var(--ink-faint)}
.bm-meta .src:hover{color:var(--accent)}
.bm-await{color:var(--rule);text-align:center;font-size:18px;background:repeating-linear-gradient(45deg,transparent,transparent 5px,var(--sunken) 5px,var(--sunken) 6px)}
.bm-row-await td.metric{color:var(--ink-faint);font-weight:400}
.bm-track{color:var(--accent);margin-right:6px;font-size:10px}

/* ---- Competitor Movement (Pillar 3) share of voice ---- */
.sov{display:flex;flex-direction:column;gap:7px;background:var(--raised);border:1px solid var(--rule);padding:14px 18px}
.sov-row{display:grid;grid-template-columns:140px 1fr 80px;gap:12px;align-items:center}
.sov-name{font-size:13px;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sov-bar{height:14px;background:var(--sunken);border:1px solid var(--rule);overflow:hidden}
.sov-fill{height:100%;background:var(--accent);min-width:2px}
.sov-n{font-family:var(--mono);font-size:11px;color:var(--ink-faint);text-align:right}

/* ---- mini-Postman API tester (Admin) ---- */
.postman{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.pm-bar{display:flex;gap:10px}
.pm-select{flex:1;font-family:var(--sans);font-size:13px;padding:9px 12px;border:1px solid var(--rule);background:var(--raised);color:var(--ink)}
.pm-select:focus{outline:none;border-color:var(--accent)}
.pm-line{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:13px}
.pm-method{font-weight:700;font-size:11px;letter-spacing:.08em;padding:3px 8px;color:#fff}
.pm-get{background:var(--success)}.pm-post{background:var(--accent-deep)}
.pm-path{color:var(--ink-dim)}
.pm-req .eyebrow{margin-bottom:6px}
.pm-body{width:100%;min-height:120px;font-family:var(--mono);font-size:12px;line-height:1.5;
  padding:12px 14px;border:1px solid var(--rule);background:var(--sunken);color:var(--ink);resize:vertical;box-sizing:border-box}
.pm-body:focus{outline:none;border-color:var(--accent);background:var(--raised)}
.pm-status{font-family:var(--mono);font-size:12px;color:var(--ink-faint);margin-bottom:6px}
.pm-code{font-weight:700;padding:2px 8px;color:#fff}
.pm-code.ok{background:var(--success)}.pm-code.err{background:var(--critical)}
.pm-out{max-height:460px;overflow:auto;font-family:var(--mono);font-size:12px;line-height:1.5;
  padding:14px 16px;border:1px solid var(--rule);background:var(--raised);color:var(--ink);white-space:pre-wrap;word-break:break-word}

/* ---- LLM call log (Sensing status) ---- */
.llm-log-head{display:flex;align-items:baseline;justify-content:space-between;margin:30px 0 8px}
.llm-totals{font-family:var(--mono);font-size:12px;color:var(--ink-faint)}
.llm-log td.num,.llm-log th.num{text-align:right}
.llm-log td{font-size:13px;padding:10px 16px}
.cache-tag{font-family:var(--sans);font-size:9px;letter-spacing:.08em;text-transform:uppercase;
  background:var(--sunken);color:var(--ink-faint);padding:2px 6px;border:1px solid var(--rule)}
.empty-cell{text-align:center;color:var(--ink-faint);font-style:italic;padding:24px}

/* ---- Admin · Sources (Macro RSS feeds + read-only source freshness) ---- */
.src-table{border:none}                 /* the wrapping .card already provides the frame */
.src-table td{vertical-align:middle}
.src-table td .btn-mini{margin-left:6px}
.src-table td .btn-mini:first-child{margin-left:0}
.tag-grey{background:var(--sunken);color:var(--ink-dim)}
.src-rss-fresh{font-size:12px;color:var(--ink-faint);margin:8px 2px 0;font-family:var(--mono)}
#src-rss-edit .form-grid-l{display:flex;flex-direction:column;font-size:11px;text-transform:uppercase;
  letter-spacing:.04em;color:var(--ink-dim);gap:5px}
#src-rss-edit .form-grid-l input{font-family:var(--sans);font-size:14px;text-transform:none;letter-spacing:0;
  padding:9px 11px;border:1px solid var(--rule);background:var(--raised);color:var(--ink)}
.runs-grouprow td{background:var(--sunken)}
/* ---- Job-runs clickable list (replaces the run selector) ---- */
.runs-list{display:flex;flex-direction:column;border:1px solid var(--rule);margin-bottom:20px}
.runs-row{display:grid;grid-template-columns:110px minmax(120px,1fr) 90px minmax(140px,auto) 130px;
  gap:14px;align-items:center;padding:11px 16px;border-bottom:1px solid var(--rule);
  background:var(--raised);cursor:pointer}
.runs-row:last-child{border-bottom:none}
.runs-row:hover{background:var(--sunken)}
.runs-row.active{background:var(--accent-wash);border-left:2px solid var(--accent);padding-left:14px}
.runs-pillar{justify-self:start}
.runs-scope{font-size:13px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.runs-status{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.runs-count{font-size:12px;color:var(--ink-dim)}
.runs-when{font-size:11px;color:var(--ink-faint);text-align:right}
.runs-empty{padding:24px;text-align:center;color:var(--ink-faint);font-style:italic;
  border:1px solid var(--rule);background:var(--raised);margin-bottom:20px}
.llm-pager{display:flex;align-items:center;justify-content:flex-end;gap:14px;margin-top:12px}
.llm-page{font-family:var(--mono);font-size:12px;color:var(--ink-faint)}
.llm-pager button:disabled{opacity:.4;cursor:not-allowed;background:var(--raised);color:var(--ink-faint)}

/* ---- Industry Benchmark matrix — geo + stale badges (Phase 5) ---- */
.bm-geo{font-family:var(--mono);font-size:12px;color:var(--ink-dim);white-space:nowrap}
.bm-asof{font-family:var(--mono);font-size:11px;color:var(--ink-faint)}
.bm-asof.stale{color:var(--warning)}

/* ---- Benchmark ops admin panel (Phase 5) ---- */
.bench-ops{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.bo-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.bo-pend{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;
  border:1px solid var(--rule);background:var(--raised);font-size:13px}
.bo-actions{display:flex;gap:6px;flex-shrink:0}
.bo-run{font-size:12px;color:var(--ink-dim);padding:4px 0}
.bo-runmeta{font-family:var(--mono);font-size:11px;color:var(--ink-faint);margin-bottom:6px}

.bo-err{color:var(--critical);font-weight:600}
/* unknown-vertical guard: prompt-gen warning + import self-diagnosis (warm, visible, not alarm) */
.bo-warn{background:#fff7ed;border:1px solid #fed7aa;border-left:3px solid var(--warning);
  color:#9a3412;font-size:12px;line-height:1.45;padding:8px 12px;margin:6px 0}
.bo-diag{background:#fff7ed;border:1px solid #fed7aa;border-left:3px solid var(--warning);
  color:#9a3412;font-size:12px;line-height:1.45;padding:8px 12px;margin:0 0 6px;font-weight:600}
.bo-pub,.bo-aud{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:8px 14px;border:1px solid var(--rule);background:var(--raised);font-size:13px}
.bo-aud{display:block;font-size:12px;color:var(--ink-dim)}

.bo-prog{display:inline-block;width:120px;height:8px;background:var(--sunken);border:1px solid var(--rule);vertical-align:middle;margin-right:8px}
.bo-bar{display:block;height:100%;background:var(--accent);transition:width .3s}

/* ---- Benchmark geo-column matrix — sub-industry selector + scoped published + import reasons ---- */
.bm-sub{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:var(--ink-faint);margin:8px 0 12px;min-height:0}
.bm-subchip{font-family:var(--sans);font-size:11px;font-weight:600;background:var(--raised);color:var(--ink-dim);
  border:1px solid var(--rule);padding:5px 11px;cursor:pointer}
.bm-subchip:hover{background:var(--sunken)}
.bm-subchip.active{background:var(--accent-wash);color:var(--accent-deep);border-color:var(--accent)}
.bo-scope{font-size:11px;color:var(--ink-faint);font-family:var(--mono);margin-left:6px}
.bo-rej{font-size:12px;color:var(--ink-dim);display:inline-block;margin-top:4px}
.bo-rej summary{cursor:pointer;font-family:var(--mono);font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}
.bo-rej summary:hover{color:var(--accent)}
.bo-rej div{padding:2px 0;font-family:var(--mono);font-size:11px;color:var(--ink-dim)}

.btn.saved{background:var(--success);color:#fff;border-color:var(--success)}

.bo-runreasons{font-family:var(--mono);font-size:11px;color:var(--ink-faint);margin:2px 0 0 0}
.bo-run{padding:6px 0;border-bottom:1px solid var(--rule)}

/* ---- Sub-industry scoping: scope note, segment tags, inherited badges ---- */
.bo-scope-note{font-size:12px;color:var(--ink-dim);margin:2px 0 10px}
.bo-seg{display:inline-block;margin-left:7px;font-family:var(--mono);font-size:10px;font-weight:600;
  text-transform:uppercase;letter-spacing:.05em;color:var(--accent-deep);background:var(--accent-wash);
  border:1px solid var(--accent);border-radius:2px;padding:0 6px}
.bo-seg-whole{color:var(--ink-faint);background:var(--sunken);border-color:var(--rule)}
/* "inherited from industry" markers (published table + client matrix) */
.bo-inherit,.bm-inherit{display:inline-block;font-family:var(--mono);font-size:9px;font-weight:600;
  text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);background:var(--sunken);
  border:1px solid var(--rule);border-radius:2px;padding:0 4px}
.bo-inherit{margin-left:8px}
.bm-inherit{margin-left:5px;vertical-align:middle}
/* "general" (cross-industry) fallback reads one rung broader than "ind." — a distinct ACCENT tint,
   deliberately NOT the amber --warning used by the stale-⚠ marker, so the two never read alike */
.bm-inherit.bm-gen,.bo-inherit.bm-gen{color:var(--accent);border-color:var(--accent);opacity:.85}
.bm-sublabel{font-weight:600;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.06em;font-size:10px}
.bm-subof{color:var(--ink-faint);font-style:italic}
/* shown when a selected sub-segment has no data of its own (every cell inherited from industry) */
.bm-inherit-banner{font-size:12px;color:var(--ink-dim);background:var(--accent-wash);
  border:1px solid var(--accent);border-left-width:3px;border-radius:3px;padding:8px 12px;margin:0 0 12px}
.bm-inherit-banner .bm-inherit{margin:0 2px}
/* dated RM-equivalent of a foreign-currency benchmark (derived hint, not the cited figure) */
.rm-eq{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--ink-faint);white-space:nowrap}

/* published-row source link + inline editor */
.bo-pub-src{font-size:11px;margin-top:3px;font-weight:400}
.bo-edit{background:var(--raised);border:1px solid var(--accent);border-radius:4px;padding:14px 16px;margin:6px 0 14px}
.bo-edit.hidden{display:none}
.bo-edit-head{font-size:13px;color:var(--ink);margin-bottom:10px}
.bo-edit-id{font-family:var(--mono);font-size:11px;color:var(--ink-faint);margin-left:6px}
.bo-edit-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 14px}
.be-f{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:600;color:var(--ink-dim);
  text-transform:uppercase;letter-spacing:.04em}
.be-f input,.be-f select{font-family:var(--sans);font-size:13px;font-weight:400;text-transform:none;
  letter-spacing:0;padding:6px 8px;border:1px solid var(--rule);background:var(--bg);color:var(--ink)}
.be-f input:focus,.be-f select:focus{outline:none;border-color:var(--accent)}
.be-wide{grid-column:span 4}
.bo-edit-actions{display:flex;align-items:center;gap:10px;margin-top:12px}
/* Firecrawl usage log */
.fc-mode{font-family:var(--mono);font-size:10px;color:var(--ink-faint);margin-left:6px;text-transform:uppercase;letter-spacing:.04em}
.fc-in{font-family:var(--mono);font-size:11px;color:var(--ink-dim);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fc-empty{color:var(--ink-faint)}

/* ---- Competitor Movement: digest strip · type filter · movement-type + source badges ---- */
.cm-digest{display:flex;flex-wrap:wrap;gap:10px}
.cm-dg{background:var(--raised);border:1px solid var(--rule);border-radius:4px;padding:8px 14px;min-width:84px}
.cm-dg-n{font-family:var(--serif);font-size:22px;font-weight:700;color:var(--ink)}
.cm-dg-l{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
.cm-typefilter{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
/* channel facet sits above the type facet — tighter gap so the two filter rows group visually */
.cm-channelfilter{margin-bottom:6px}
.cm-channelfilter:empty{display:none}
.cm-channelfilter .cm-chip.active{background:var(--accent-wash);color:var(--accent-deep);border-color:var(--accent)}
.cm-chip{font-family:var(--sans);font-size:11px;font-weight:600;background:var(--raised);color:var(--ink-dim);
  border:1px solid var(--rule);border-radius:3px;padding:4px 11px;cursor:pointer}
.cm-chip:hover{background:var(--sunken)}
.cm-chip.active{background:var(--accent-wash);color:var(--accent-deep);border-color:var(--accent)}
.cm-type{display:inline-block;margin-left:7px;font-family:var(--mono);font-size:10px;font-weight:600;
  text-transform:uppercase;letter-spacing:.04em;color:var(--accent-deep);background:var(--accent-wash);
  border:1px solid var(--accent);border-radius:2px;padding:0 6px}
.cm-type-promo{color:#854F0B;background:#FAEEDA;border-color:#EF9F27}
.cm-type-price{color:#854F0B;background:#FAEEDA;border-color:#EF9F27}
.cm-type-product_launch{color:#3C3489;background:#EEEDFE;border-color:#7F77DD}
.cm-src{display:inline-block;margin-right:8px;font-family:var(--mono);font-size:10px;color:var(--ink-faint);
  background:var(--sunken);border:1px solid var(--rule);border-radius:2px;padding:0 5px}
/* "viral" — a FACTUAL engagement-outlier marker (>= 3x the account's own median), NOT an
   importance/ranking judgement. Warm warning hue keeps it visible without reading as alarm/danger;
   semantic vars keep it theme-safe. Tooltip carries the honest "vs own median" framing. */
.cm-viral{display:inline-block;margin-left:7px;font-family:var(--mono);font-size:10px;font-weight:600;
  text-transform:uppercase;letter-spacing:.04em;color:var(--warning);background:var(--soft);
  border:1px solid var(--warning);border-radius:2px;padding:0 6px;cursor:help}
/* Operator refresh trigger + status line in the Competitor Movement header */
.btn-refresh{font-family:var(--sans);font-size:12px;font-weight:600;padding:4px 10px;border:1px solid var(--rule);
  border-radius:6px;background:var(--raised);color:var(--ink-dim);cursor:pointer;vertical-align:middle;margin-left:14px}
.btn-refresh:hover{background:var(--sunken)}
.btn-refresh:disabled{opacity:.55;cursor:default}
.cm-runstatus{margin-left:10px;font-size:12px;font-weight:400;color:var(--ink-faint);vertical-align:middle}
/* "You" treatment — client's own activity in the timeline + share of voice */
.cm-you{display:inline-block;font-size:10px;font-weight:600;color:#fff;background:var(--accent);
  border-radius:4px;padding:1px 6px;letter-spacing:.02em}
.sov-you .sov-name{font-weight:700;color:var(--accent-deep)}
.sov-you .sov-fill{background:var(--accent-deep)}

/* ---- Benchmark ops: published (editable) list as a grouped table ---- */
.bo-pub-table{margin-top:6px}
.bo-pub-table td{padding:8px 14px;font-size:13px;vertical-align:middle}
.bo-pub-table th.num,.bo-pub-table td.num{text-align:right}
.bo-pub-group td{background:var(--sunken);font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;color:var(--ink-faint);padding:7px 14px}
.bo-pub-metric{font-weight:600}
.bo-pub-chan{display:inline-block;margin-left:8px;font-family:var(--mono);font-size:10px;
  text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);background:var(--sunken);
  border:1px solid var(--rule);padding:1px 6px}
.bo-pub-scope{font-family:var(--mono);font-size:12px;color:var(--ink-dim);white-space:nowrap}
.bo-pub-val{font-family:var(--serif);font-weight:700;white-space:nowrap}
.bo-pub-val .cell-unit{font-family:var(--sans);font-weight:400}

/* ---- Phase J: Tracked-competitors roster (collapsible) + redesigned cards ---- */
/* Accordion at the TOP of the Competitor Movement view — collapsed by default so the
   movement feed stays the focus and positioning is one click away. Reuses native <details>. */
.comp-roster{margin:0 0 22px;border:1px solid var(--rule);background:var(--sunken)}
.comp-roster>summary{list-style:none;cursor:pointer;padding:11px 16px;font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);user-select:none}
.comp-roster>summary::-webkit-details-marker{display:none}
.comp-roster>summary::before{content:"▸ ";color:var(--ink-faint)}
.comp-roster[open]>summary::before{content:"▾ "}
.comp-roster>summary:hover{color:var(--ink-dim)}
.comp-roster #competitor-cards{padding:0 16px 18px}

/* Card split into two clearly-distinct sections: SENSED (live data) vs MONITORED (configured). */
.comp-card .sensed-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;
  color:var(--ink-faint);margin:2px 0 4px}
.comp-card .sensed-label .sensed-sub{color:var(--warning);margin-left:5px}
/* Sensed rows: a 3-column grid (label | value | source-tag). Fixed label/tag columns + a
   flexible value column mean a 6-digit follower count (335,957) stays on ONE line and never
   wraps the "● Followers" label to a second row — the bug the old flex layout had. */
.comp-card .sensed-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:baseline;
  padding:7px 0;border-top:1px solid var(--rule)}
.comp-card .sensed-row.muted{display:block;color:var(--ink-faint);font-size:13px}
.comp-card .sr-k{font-size:12px;color:var(--ink-dim);white-space:nowrap}
.comp-card .sr-v{font-family:var(--serif);font-weight:700;font-size:19px;font-variant-numeric:tabular-nums;
  text-align:right;white-space:nowrap}
.comp-card .sr-v.sr-v-faint{font-family:var(--sans);font-weight:500;font-size:12px;color:var(--ink-faint);
  font-style:italic}
.comp-card .sr-tag{justify-self:end;align-self:center;white-space:nowrap}
.comp-card .sr-tag .tag{margin-left:0;display:inline-block;white-space:nowrap}
/* Monitored: configured dims as MUTED chips — visually quieter than the sensed tags above, so
   "configured to watch" reads as distinct from "actually sensed". */
.comp-card .monitored{margin-top:14px;padding-top:12px;border-top:1px dashed var(--rule)}
.comp-card .mon-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;
  color:var(--ink-faint);margin-bottom:7px}
/* Two-class scope so this beats the `.dim-chips .pill` blue treatment used elsewhere. */
.comp-card .pill-mon{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  padding:3px 7px;background:var(--sunken);color:var(--ink-faint);border:1px solid var(--rule)}

/* ---- Taxonomy admin (Admin) — industries tree · routing table · resolver ---- */
.tax-resolve{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tax-resolve .search-box{min-width:320px}
.tax-resolve-out{font-size:14px;color:var(--ink-dim)}
.tax-resolve-out b{color:var(--accent-deep)}
/* industries tree */
.tax-ind{border:1px solid var(--rule);background:var(--raised);margin-bottom:12px}
.tax-ind-head{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--sunken);
  border-bottom:1px solid var(--rule)}
.tax-ind-name{font-family:var(--serif);font-weight:700;font-size:17px}
.tax-subs{display:flex;flex-direction:column}
.tax-sub{display:flex;align-items:center;gap:10px;padding:9px 16px 9px 28px;border-bottom:1px solid var(--rule)}
.tax-sub:last-child{border-bottom:none}
.tax-sub.muted{color:var(--ink-faint);font-style:italic}
.tax-node-label{font-weight:500;color:var(--ink)}
.tax-node-id{font-family:var(--mono);font-size:11px;color:var(--ink-faint)}
.tax-node-actions{margin-left:auto;display:flex;gap:6px;flex-shrink:0}
.tax-retired{opacity:.55}
.tax-retired .tax-node-label{text-decoration:line-through}
/* routing table */
.tax-route-table{margin-bottom:6px}
.tax-route-table td,.tax-route-table th{padding:9px 14px;font-size:13px}
.tax-route-table th.num,.tax-route-table td.num{text-align:right}
.tax-r-pat{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--ink)}
.tax-kind{font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;
  color:var(--ink-faint);background:var(--sunken);border:1px solid var(--rule);border-radius:2px;padding:1px 6px}
/* per-vertical exposure-template editor (Exposure templates tab — picker-driven) */
.tax-inherit-hint{margin-left:auto;font-size:11px;color:var(--ink-faint);font-style:italic}
.tax-inherit-hint b{font-style:normal;color:var(--ink-dim)}
.tax-tpl{padding:16px;border:1px solid var(--rule);background:var(--sunken)}
.tax-tpl:empty{display:none}
.tax-tpl-head{display:flex;flex-direction:column;gap:3px;margin-bottom:12px}
.tax-tpl-head .eyebrow b{color:var(--accent-deep)}
.tax-tpl-relations .exp-relation{background:var(--raised)}
.bo-warn-inline{color:var(--warning);font-weight:600}
/* benchmark metrics manager (Taxonomy) */
.bmm-table{margin-bottom:6px}
.bmm-table td,.bmm-table th{padding:9px 14px;font-size:13px}
.bmm-table th.num,.bmm-table td.num{text-align:right}
.bmm-table td.mono,.bmm-table .mono{font-family:var(--mono);font-size:12px;color:var(--ink-dim)}
.bmm-group td{background:var(--sunken);font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;color:var(--ink-faint);padding:8px 14px}
.bmm-chips{display:flex;flex-wrap:wrap;gap:8px}
.bmm-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);
  background:var(--raised);border:1px solid var(--rule);padding:5px 8px 5px 11px}
.bmm-chip .mono{font-family:var(--mono);font-size:11px;color:var(--ink-faint)}
.bmm-x{border:none;background:none;color:var(--ink-faint);cursor:pointer;font-size:15px;line-height:1;padding:0 2px}
.bmm-x:hover{color:var(--critical)}

/* Transient undo toast (bottom-center). One at a time; auto-dismisses. Reused by watch-list remove + macro hide. */
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:#fff;padding:10px 14px;border-radius:8px;font-size:13px;
  display:flex;gap:12px;align-items:center;opacity:0;pointer-events:none;transition:.2s;z-index:90}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
#toast .toast-undo{background:none;border:none;color:var(--accent);font-weight:700;cursor:pointer}

/* Monthly budget panel (Sensing-Status · Coverage) — per-API spend vs cap */
.budget-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.budget-cell .val{font-size:26px}
.budget-cell .bg-cap{font-size:13px;font-weight:500;color:var(--ink-faint);font-family:var(--mono)}
.budget-cell .bg-bar{height:6px;background:var(--sunken);border:1px solid var(--rule);margin:8px 0 6px;overflow:hidden}
.budget-cell .bg-bar span{display:block;height:100%;background:var(--accent)}
.budget-cell.warn .bg-bar span{background:var(--warning)}
.budget-cell.paused .bg-bar span{background:var(--critical)}
.budget-cell.paused{border-left:3px solid var(--critical)}
.budget-cell.warn{border-left:3px solid var(--warning)}
.budget-cell.total{border-top:3px solid var(--accent)}
.bg-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:2px 6px;border-radius:3px;margin-left:6px;vertical-align:middle}
.bg-badge.bg-paused{background:var(--critical);color:#fff}
.bg-badge.bg-warn{background:var(--warning);color:#fff}

/* Scheduler board (Admin · Operations) — distinct from the Job-runs history */
.sched-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}
.sched-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);
  border-bottom:1px solid var(--rule);padding:8px 12px}
.sched-table td{padding:12px;border-bottom:1px solid var(--rule);vertical-align:top}
.sched-table td.sched-action{text-align:right}
.sched-err{font-size:11px;margin-top:3px}
.sched-due{color:var(--warning);font-weight:600}
.sched-badge{font-size:10px;font-weight:700;padding:2px 6px;border-radius:3px;margin-left:6px;white-space:nowrap}
.sched-badge.done{background:var(--accent-wash);color:var(--accent-deep)}
.sched-badge.error{background:#fde0e0;color:var(--critical)}
.sched-badge.running{background:#fff3da;color:var(--warning)}
.sched-state{font-weight:600}
.sched-state.idle{color:var(--ink-faint)}
.sched-state.running{color:var(--warning)}
.sched-state.paused{color:var(--critical)}
.sched-daemon{font-size:13px;font-weight:600;padding:8px 12px;border-radius:4px;margin:6px 0 12px}
.sched-daemon.ok{background:var(--accent-wash);color:var(--accent-deep)}
.sched-daemon.warn{background:#fde0e0;color:var(--critical)}
