/* HunterAI Fuse — shared theme (single source of truth for the whole portal).
   LIGHT palette, canonical HunterAI (Session 2 step 2). Flip nothing per-page;
   change values here. New shared components (Block A cards) live here too.

   PALETTE CONVENTIONS — keep consistent across every surface, forever:
     surfaces  --bg page · --panel cards · --panel2 subtle fill · --inset green-tint callout
     lines     --border · --border2 (green-tinted)
     ink       --text/--navy · --muted · --faint
     brand/good  --green (fills, borders, targets, Detect) · --green-deep (green TEXT on light)
     data-ref  --blue (IPs, MITRE chips, links) · --cyan aliases to it on light
     status    --red error/high · --amber warning · --purple autonomous/tier
     dark-only --green-bright (never on white)
*/
:root{
  --bg:#f0f6fa;
  --panel:#ffffff;
  --panel2:#eef4f8;
  --inset:#e1f5ee;
  --border:#cce0ee;
  --border2:#9fe1cb;
  --text:#1e3a4f;
  --navy:#1e3a4f;
  --muted:#5a7080;
  --faint:#7d8da3;
  --green:#00c896;
  --green-deep:#00a878;
  --green-bright:#2ee6a6;   /* dark surfaces only — do not use on white */
  --cyan:#0099cc;           /* legacy accent → light data-reference blue */
  --blue:#0099cc;           /* data reference: IPs, chips, links */
  --red:#e53e3e;
  --amber:#f59e0b;
  --purple:#7c3aed;
  --fb:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --fm:'JetBrains Mono',monospace;
  --mono:'JetBrains Mono',monospace;
}

/* ── Dark theme ──────────────────────────────────────────────────────────────
   Toggle via <html data-theme="dark"> (the app default; set by the no-flash
   inline script in each page head, remembered in localStorage). :root above
   stays LIGHT — this overrides the same 21 tokens with a coherent dark set
   recovered from the pre-light-flip palette and reconciled with the current
   tokens + locked conventions: green-bright #2ee6a6 is the dark-surface green so
   green TEXT remaps to it; --navy is ink, so it flips to light ink. The rgba
   status tints in the templates self-adapt to the dark background; the few SOLID
   tint badges/chips are re-expressed as rgba just below. The Report is excluded
   deliberately (it never sets data-theme=dark) — it stays a print-clean light
   document. */
html[data-theme="dark"]{
  --bg:#0a0e15;
  --panel:#0f1620;
  --panel2:#141c28;
  --inset:#0d1f19;
  --border:#1f2c3b;
  --border2:#22463a;
  --text:#e6edf3;
  --navy:#e6edf3;          /* navy = strong ink; on dark it's the light ink */
  --muted:#8b9bad;
  --faint:#5d6b7d;
  --green:#00c896;         /* brand green — fills/borders/targets */
  --green-deep:#2ee6a6;    /* green TEXT on dark = bright green (deep is light-only) */
  --green-bright:#2ee6a6;
  --cyan:#38bdf8;          /* data reference on dark */
  --blue:#38bdf8;
  --red:#ff5d6c;
  --amber:#fbbf24;
  --purple:#a78bfa;
}
/* solid light-tint badges/chips -> rgba tints that read on the dark surface */
html[data-theme="dark"] .badge-high{color:var(--amber);border-color:rgba(251,191,36,.45);background:rgba(251,191,36,.14)}
html[data-theme="dark"] .badge-medium{border-color:rgba(251,191,36,.45);background:rgba(251,191,36,.14)}
html[data-theme="dark"] .badge-low{border-color:rgba(56,189,248,.40);background:rgba(56,189,248,.12)}
html[data-theme="dark"] .attempt .mitre{border-color:rgba(56,189,248,.40);background:rgba(56,189,248,.10)}
/* The sticky page header hardcodes a frosted WHITE bg inline in every app
   template (background:rgba(255,255,255,.92)); it's not a token, so the swap
   misses it and the header stays light on dark. This wins by specificity
   (html[data-theme=dark] header) over the inline `header{}` rule regardless of
   source order — one rule fixes dashboard/connectors/admin/auth headers at once.
   Frosted panel colour to match the light header's frosted-white intent. */
html[data-theme="dark"] header{background:rgba(15,22,32,0.92)}

/* light/dark toggle button — shows the moon on light (click -> dark), the sun on
   dark (click -> light); the JS only flips data-theme + localStorage, CSS swaps the icon. */
.themetoggle{background:none;border:none;cursor:pointer;color:var(--muted);display:inline-flex;align-items:center;padding:0;line-height:0}
.themetoggle:hover{color:var(--text)}
.themetoggle .ic-sun{display:none}
html[data-theme="dark"] .themetoggle .ic-moon{display:none}
html[data-theme="dark"] .themetoggle .ic-sun{display:inline}

.logo .ai{color:var(--green-deep)}
a{color:inherit;text-decoration:none}
html,body{background:var(--bg);color:var(--text);font-family:var(--fb);font-size:14px;line-height:1.5}


/* ==== Block A — alert card system (from fuse-alerts-mockup-light; canonical light) ==== */
/* ---- section header ---- */
  .section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
  .section-head h2{font-size:15px;font-weight:650;letter-spacing:.02em;color:var(--navy)}
  .section-head .count{font-family:var(--mono);font-size:12px;color:var(--faint)}

  /* ---- severity filter row ---- */
  .filter-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
  .sev{
    font-family:var(--mono);font-size:11.5px;letter-spacing:.03em;
    padding:4px 12px;border-radius:99px;border:1px solid var(--border);
    color:var(--muted);cursor:pointer;background:var(--panel);
  }
  .sev:hover{border-color:var(--faint);color:var(--text)}
  .sev .c{opacity:.65;margin-left:6px}
  .sev.s-high{color:var(--red)} .sev.s-medium{color:var(--amber)} .sev.s-low{color:var(--blue)} .sev.s-info{color:var(--faint)}
  .sev.active{border-color:currentColor;background:var(--panel2);font-weight:600}
  .filter-context{
    font-family:var(--mono);font-size:11px;color:var(--faint);
    margin-left:auto;display:flex;gap:6px;align-items:center;
  }
  .filter-context .chip{
    border:1px solid var(--border);border-radius:4px;padding:2px 7px;
    color:var(--muted);background:var(--panel2);
  }

  /* ---- incident cards ---- */
  .card{
    background:var(--panel);
    border:1px solid var(--border);
    border-left:3px solid var(--border2);
    border-radius:10px;
    padding:16px 18px 14px;
    margin-bottom:12px;
    box-shadow:0 1px 3px rgba(30,58,79,.06);
  }
  .card-top{display:flex;align-items:flex-start;gap:10px}
  .card-top h3{font-size:14px;font-weight:650;line-height:1.4;flex:1;color:var(--navy)}
  /* Severity is ONE scale, matching the ring: red is reserved for CRITICAL;
     HIGH is amber. (Was red — that put red on every high card and disagreed
     with the amber ring.) */
  .badge-high{
    flex:none;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;
    color:var(--amber);border:1px solid #f3d19a;background:#fdf4e3;
    border-radius:5px;padding:3px 8px;margin-top:1px;font-weight:600;
  }
  .badge-critical{flex:none;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--red);border:1px solid rgba(229,62,62,.50);background:rgba(229,62,62,.14);border-radius:5px;padding:3px 8px;margin-top:1px;font-weight:700}
  .badge-medium{flex:none;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--amber);border:1px solid #f3d19a;background:#fdf4e3;border-radius:5px;padding:3px 8px;margin-top:1px;font-weight:600}
  .badge-low{flex:none;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--blue);border:1px solid #b3e2f2;background:#f0fafd;border-radius:5px;padding:3px 8px;margin-top:1px;font-weight:600}
  .badge-info{flex:none;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--muted);border:1px solid var(--border);background:var(--panel2);border-radius:5px;padding:3px 8px;margin-top:1px;font-weight:600}
  .card.sev-high{border-left-color:var(--red)}
  .card.sev-medium{border-left-color:var(--amber)}
  .card.sev-low{border-left-color:var(--blue)}
  .card.sev-info{border-left-color:var(--faint)}
  /* Detect verdict cards (Phase 1) — the verdict layer on the shared card
     skeleton. rgba tints self-adapt to light/dark; text uses tokens that flip. */
  .card.genuine{border-left-color:var(--red)}
  .card.suppressed{border-left-color:var(--green)}
  /* 'Genuine' is a real/not-real FLAG, not a severity — severity is the ring +
     badge. Kept factual and calm (navy on neutral) rather than red, so a card
     doesn't carry two alarm colours. */
  .badge-genuine{flex:none;font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;font-weight:700;border-radius:5px;padding:3px 8px;color:var(--text);border:1px solid var(--border2);background:var(--panel2)}
  .badge-suppressed{flex:none;font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;font-weight:700;border-radius:5px;padding:3px 8px;color:var(--green-deep);border:1px solid var(--border2);background:var(--inset)}
  .dec-badge{flex:none;font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;font-weight:700;border-radius:5px;padding:2px 7px;border:1px solid transparent}
  /* Routing decision is a STATUS label, not an accent — the two card accents are
     green (what to do) and red (danger/what to block), so every decision badge
     is neutral and lets its text carry the meaning. */
  .dec-alert{color:var(--muted);border-color:var(--border2);background:var(--panel2)}
  .dec-auto{color:var(--muted);border-color:var(--border2);background:var(--panel2)}
  .dec-monitor{color:var(--muted);border-color:var(--border2);background:var(--panel2)}
  .dec-report{color:var(--muted);border-color:var(--border);background:var(--panel2)}
  .v-ref{font-family:var(--mono);font-size:10.5px;color:var(--faint);flex:none}
  .v-count{font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--muted);background:var(--panel2);border:1px solid var(--border2);border-radius:999px;padding:1px 8px;flex:none}
  .verdict-rec{margin-top:10px;border-top:1px solid var(--border);padding-top:9px}
  .verdict-rec summary{cursor:pointer;list-style:none;font-size:12px;font-weight:600;color:var(--green-deep)}
  .verdict-rec summary::-webkit-details-marker{display:none}
  .verdict-rec summary::before{content:"▸ ";color:var(--faint)}
  .verdict-rec[open] summary::before{content:"▾ "}
  .verdict-rec .rec-txt{margin-top:7px;font-size:12.5px;line-height:1.5;color:var(--text)}
  /* Detect incident cards (Phase 2) — a correlated kill-chain as one unit.
     Same tokenised grammar: rgba tints self-adapt to light/dark. */
  .incident-card{background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--blue);border-radius:12px;padding:16px 18px;box-shadow:0 0 0 1px rgba(0,153,204,.08);margin-bottom:13px}
  .incident-card.sev-critical{border-left-color:var(--red)}
  .incident-card.sev-high{border-left-color:var(--amber)}
  .incident-card.sev-medium{border-left-color:var(--blue)}
  .incident-card.sev-low{border-left-color:var(--green)}
  .inc-tag{flex:none;font-family:var(--mono);font-size:9.5px;letter-spacing:.09em;font-weight:700;color:var(--muted);border:1px solid var(--border2);background:var(--panel2);border-radius:4px;padding:2px 7px}
  .inc-narrative{font-size:13px;line-height:1.55;color:var(--text);margin:10px 0 0}
  .inc-response{margin-top:12px;border:1px solid var(--border2);background:var(--inset);border-radius:9px;padding:12px 14px}
  .inc-response-head{display:flex;align-items:center;gap:8px}
  .inc-response-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--green-deep)}
  .inc-response-note{font-size:12px;line-height:1.5;color:var(--muted);margin-top:6px}
  .inc-response-headline{font-size:13px;font-weight:600;color:var(--text);margin-top:8px}
  .resp-steps{margin:8px 0 0;padding-left:20px;font-size:12.5px;line-height:1.6;color:var(--text)}
  .resp-steps li{margin-bottom:3px}
  .inc-children{margin-top:14px;border-top:1px solid var(--border);padding-top:12px}
  .inc-children-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--muted);margin-bottom:10px}
  .inc-children .card{margin-bottom:10px;box-shadow:none;background:var(--panel2)}
  .inc-children .card:last-child{margin-bottom:0}
  /* Detect exec view (Phase 3) — funnel, donut, KPIs, severity bar, statement.
     Fully tokenised: the audit's dark-hardcode bugs (donut #243044/#00e0a4/#e6edf5,
     statement #c4d0e0) are fixed by construction — every colour is a token. */
  .viewtoggle{display:flex;background:var(--panel2);border:1px solid var(--border);border-radius:8px;overflow:hidden;flex:none}
  .viewtoggle button{background:transparent;color:var(--muted);border:none;padding:7px 14px;cursor:pointer;font-size:12.5px;font-weight:600;font-family:var(--fb)}
  .viewtoggle button.active{background:var(--green);color:#001018}
  .exec-funnel{display:flex;align-items:stretch;gap:0;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:20px 14px;margin-bottom:16px}
  .fn-stage{flex:1;text-align:center;padding:4px 6px}
  .fn-n{font-size:29px;font-weight:800;letter-spacing:-.5px;line-height:1}
  .fn-n.blue{color:var(--blue)} .fn-n.green{color:var(--green-deep)} .fn-n.w{color:var(--text)}
  .fn-l{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:8px}
  .fn-arrow{align-self:center;color:var(--faint);font-size:22px;font-weight:700;padding:0 2px}
  .exec-hero{display:grid;grid-template-columns:280px 1fr;gap:24px;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:26px;margin-bottom:16px}
  .donut-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center}
  #donut{cursor:pointer;border-radius:50%;transition:opacity .15s}
  #donut:hover{opacity:.85}
  .donut-cap{margin-top:12px;text-align:center;cursor:pointer;border-radius:8px;padding:4px 8px;transition:background .15s}
  .donut-cap:hover{background:var(--panel2)}
  .donut-cap .big{font-size:28px;font-weight:800;color:var(--green-deep)}
  .donut-cap .lbl{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}
  .kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;align-content:center}
  .kpi{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:16px 18px}
  .kpi .n{font-size:30px;font-weight:800;line-height:1}
  .kpi .n.blue{color:var(--blue)} .kpi .n.green{color:var(--green-deep)}
  .kpi .l{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;margin-top:8px}
  .kpi .sub{color:var(--faint);font-size:11px;margin-top:4px;font-style:italic}
  .sevbar-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px 24px;margin-bottom:16px}
  .sevbar-title{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:14px}
  .sevbar{display:flex;height:32px;border-radius:8px;overflow:hidden;background:var(--panel2)}
  .sevseg{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#001018;min-width:0;cursor:pointer;transition:filter .15s}
  .sevseg:hover{filter:brightness(1.12)}
  .sevseg.c{background:var(--red)} .sevseg.h{background:var(--amber)} .sevseg.m{background:var(--blue)} .sevseg.l{background:var(--green)}
  .sevlegend{display:flex;gap:18px;margin-top:12px;flex-wrap:wrap}
  .sevlegend>span{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);cursor:pointer;transition:color .15s}
  .sevlegend>span:hover{color:var(--text)}
  .swatch{width:11px;height:11px;border-radius:3px}
  .exec-statement{background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--green);border-radius:10px;padding:16px 20px;color:var(--text);font-size:13.5px;line-height:1.6}
  .exec-statement b{font-weight:700;color:var(--navy)}
  .win-note{color:var(--muted);font-style:italic}
  .exec-report-row{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
  .report-btn{font-family:var(--fb);font-size:12.5px;font-weight:600;border-radius:8px;padding:9px 16px;cursor:pointer;border:1px solid transparent;background:var(--green);color:#001018}
  .report-btn.ghost{background:transparent;color:var(--muted);border-color:var(--border)}
  .report-btn[disabled]{opacity:.45;cursor:not-allowed}
  .report-btn .caret{font-size:10px;margin-left:5px}
  /* Reports menu — one button, a drop-up list of report types (extensible) */
  .reports-menu{position:relative;display:inline-block}
  .reports-dropdown{position:absolute;bottom:calc(100% + 6px);left:0;min-width:230px;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 28px rgba(0,0,0,.20);padding:6px;display:none;z-index:60}
  .reports-menu.open .reports-dropdown{display:block}
  .reports-item{display:block;width:100%;text-align:left;font-family:var(--fb);font-size:13px;color:var(--text);background:none;border:none;border-radius:7px;padding:9px 11px;cursor:pointer}
  .reports-item:hover{background:var(--panel2)}
  .reports-item .ri-sub{display:block;font-size:11px;color:var(--faint);margin-top:1px}
  /* Detect MITRE training panel (Phase 5 parity) — "we teach, not just alert".
     A Training toggle beside the technique chips opens refs + free courses. */
  .train-btn{display:inline-flex;align-items:center;gap:5px;font-family:var(--fb);font-size:11px;font-weight:600;color:var(--muted);background:transparent;border:1px solid var(--border2);border-radius:999px;padding:3px 9px;cursor:pointer;margin-left:6px}
  .train-btn:hover{color:var(--text);border-color:var(--faint)}
  .train-caret{font-size:9px;display:inline-block;transition:transform .15s}
  .fw-block.train-open .train-caret{transform:rotate(180deg)}
  .train-panel{display:none;margin-top:9px;border:1px solid var(--border);background:var(--panel2);border-radius:9px;padding:11px 13px}
  .fw-block.train-open .train-panel{display:block}
  .tp-h{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--muted);margin-bottom:8px}
  .tp-techs{list-style:none;margin:0 0 10px;padding:0}
  .tp-techs li{padding:8px 0;border-top:1px solid var(--border);font-size:12px;color:var(--text)}
  .tp-techs li:first-child{border-top:none;padding-top:0}
  .tp-row{display:flex;align-items:baseline;gap:8px}
  .tp-id{font-family:var(--mono);font-size:11px;color:var(--blue);flex:none}
  .tp-nm{font-weight:650;color:var(--text)}
  .tp-link{margin-left:auto;font-size:11px;color:var(--blue);text-decoration:none;flex:none}
  .tp-link:hover{text-decoration:underline}
  .tp-blurb{font-size:12px;line-height:1.5;color:var(--text);margin-top:4px}
  .tp-sub{font-size:10.5px;color:var(--faint);margin-top:3px}
  .tp-course{display:inline-block;margin-top:2px;font-size:11.5px;color:var(--green-deep);text-decoration:none}
  .tp-course:hover{text-decoration:underline}
  .card-mitre{margin-top:9px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
  .mlabel{font-family:var(--mono);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;font-weight:700;color:var(--muted);flex:none}
  .fact{
    font-family:var(--mono);font-size:12px;color:var(--muted);
    margin-top:8px;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;
  }
  .fact .ip{color:var(--blue);font-weight:600}
  .fact .arrow{color:var(--faint)}
  .fact .tgt{color:var(--green-deep);font-weight:600}
  .card .summary{font-size:13px;color:var(--muted);margin-top:8px}
  .card .summary em{color:var(--text);font-style:normal;font-weight:550}

  .plain{
    margin-top:10px;
    background:var(--inset);
    border-left:2px solid var(--green-deep);
    border-radius:0 7px 7px 0;
    padding:9px 12px;
    font-size:13px;line-height:1.6;color:var(--text);
  }
  .plain .lbl{
    display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
    text-transform:uppercase;color:var(--green-deep);margin-bottom:3px;font-weight:600;
  }

  /* Block C — attempts timeline: distinct attempts from one attacker, revealed
     by the .attempts-toggle. Hidden until opened (mirrors the seen-xN expand). */
  .attempts-toggle{
    background:none;border:none;cursor:pointer;padding:8px 0 0;
    font-family:var(--mono);font-size:11px;font-weight:600;color:var(--blue);
    display:inline-flex;align-items:center;gap:5px;
  }
  .attempts-toggle:hover{color:var(--navy)}
  .attempts-toggle .chev{font-size:10px}
  .attempts{
    margin-top:10px;border-top:1px solid var(--border);padding-top:10px;
    display:none;flex-direction:column;gap:6px;
  }
  .attempts.open{display:flex}
  .attempt{display:flex;gap:10px;align-items:baseline;font-size:12.5px;color:var(--muted)}
  .attempt.current{color:var(--text)}
  .attempt.current .sig{font-weight:600}
  .attempt .t{font-family:var(--mono);font-size:11px;color:var(--faint);flex:none;width:88px}
  .attempt .sig{flex:1}
  .attempt .mitre{
    flex:none;font-family:var(--mono);font-size:10.5px;color:var(--blue);
    border:1px solid #b3e2f2;border-radius:4px;padding:1px 6px;background:#f0fafd;
  }
  .card-foot{display:flex;align-items:center;gap:14px;margin-top:12px}
  .card-foot .meta{font-family:var(--mono);font-size:11px;color:var(--faint)}
  .card-foot .actions{margin-left:auto;display:flex;gap:12px}
  .card-foot button{
    background:none;border:none;cursor:pointer;
    font-size:12px;color:var(--green-deep);font-weight:600;padding:0;
  }
  .card-foot button:hover{color:var(--navy)}
  .card-foot button.quiet{color:var(--faint);font-weight:500}
  .card-foot button.quiet:hover{color:var(--muted)}
  /* reason box — revealed inline when a mark button is clicked */
  .card-foot .reason{
    flex:1;min-width:0;font-family:inherit;font-size:12.5px;
    padding:5px 9px;border:1px solid var(--border);border-radius:6px;
    color:var(--text);background:var(--panel);
  }
  .card-foot .reason:focus{outline:none;border-color:var(--green)}
  .card-foot .reason::placeholder{color:var(--faint)}
  /* note the analyst left, shown in the marked state */
  .mark-status .note{font-style:italic;color:var(--muted)}

  /* resolved / not-applicable state */
  .card.marked{border-left-color:var(--border);background:var(--panel2);box-shadow:none}
  .card.marked h3,.card.marked .summary,.card.marked .fact,.card.marked .attempt{color:var(--faint)}
  .card.marked .fact .ip,.card.marked .fact .tgt{color:var(--faint);font-weight:500}
  .card.marked .badge-high{color:var(--faint);border-color:var(--border);background:transparent}
  .card.marked .plain{background:transparent;border-left-color:var(--border);color:var(--faint)}
  .card.marked .plain .lbl{color:var(--faint)}
  .card.marked .attempt .mitre{color:var(--faint);border-color:var(--border);background:transparent}
  /* incident cards use .incident-card, not .card — mirror the dimmed state */
  .incident-card.marked{border-left-color:var(--border);background:var(--panel2);box-shadow:none;opacity:.72}
  .incident-card.marked h3,.incident-card.marked .summary,.incident-card.marked .fact,.incident-card.marked .inc-narrative{color:var(--faint)}
  .mark-status{
    display:flex;align-items:center;gap:8px;margin-top:12px;
    font-size:12px;color:var(--muted);
    border-top:1px solid var(--border);padding-top:10px;
  }
  .mark-status .pill{
    font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;
    border:1px solid var(--border);border-radius:5px;padding:2px 8px;
    color:var(--muted);background:var(--panel);
  }
  .mark-status .undo{
    margin-left:auto;background:none;border:none;cursor:pointer;
    color:var(--green-deep);font-size:12px;font-weight:600;padding:0;
  }
  .mark-status .undo:hover{color:var(--navy)}

  .load-more{
    display:block;width:100%;margin-top:6px;
    background:var(--panel);border:1px solid var(--border);border-radius:8px;
    color:var(--muted);font-size:13px;padding:10px;cursor:pointer;
  }
  .load-more:hover{border-color:var(--border2);color:var(--text)}
