/* DarkNyx Pro portal - light theme. Tokens match the approved mockups. */
:root {
  --paper: #f5f6fb;
  --paper-raised: #ffffff;
  --ink: #253043;
  --ink-soft: #4b5870;
  --ink-faint: #667086;
  --accent: #5a4bb1;
  --accent-ink: #463a96;
  --accent-soft: #ebe8f8;
  --bad: #b4332a;
  --bad-soft: #fbe9e7;
  --good: #1f7a4d;
  --good-soft: #e3f3ea;
  --warn: #8f5a07;
  --warn-soft: #fdf1dc;
  --line: #e1e6ee;
  --line-strong: #c9d0dc;
  --paper-sunk: #eceff7;
  color-scheme: light;
  --on-accent: #fff; --on-ink: #fff; --info: var(--info); --info-soft: var(--info-soft);
  --cat-wallet: var(--info);
  --cat-handle: #1f7a5a;
  --cat-key: #8a5300;
  --cat-company: #5b4fb0;
  --series-trend: #2f6fb5;
  --series-brand: #2f6fb5;
  --series-paste: #167a56;
  --series-discord: #a56a00;
  --series-negnews: #6f63c8;
  --series-iab: #b83f6b;
  --series-stealer: #5d6d7b;
  --series-social: #1f8791;
  --series-defacement: #a56a3e;
  --series-site_defacement: #94603a;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --paper: #12141c; --paper-raised: #1b1e29; --paper-sunk: #232736;
    --ink: #e4e8f1; --ink-soft: #b4bccd; --ink-faint: #9aa3b8;
    --accent: #9d90ee; --accent-ink: #c4bbf7; --accent-soft: #2a2650;
    --bad: #f08a80; --bad-soft: #3a1f1d; --good: #6ccf9b; --good-soft: #16301f; --warn: #e8b55c; --warn-soft: #3a2d14;
    --line: #2b3040; --line-strong: #3d445a; --on-accent: #16132b; --on-ink: #12141c;
    --info: #8db6ee; --info-soft: #1a2740; --del: #f08a80; --ins: #6ccf9b;
  }
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --paper: #12141c; --paper-raised: #1b1e29; --paper-sunk: #232736;
  --ink: #e4e8f1; --ink-soft: #b4bccd; --ink-faint: #9aa3b8;
  --accent: #9d90ee; --accent-ink: #c4bbf7; --accent-soft: #2a2650;
  --bad: #f08a80; --bad-soft: #3a1f1d; --good: #6ccf9b; --good-soft: #16301f; --warn: #e8b55c; --warn-soft: #3a2d14;
  --line: #2b3040; --line-strong: #3d445a; --on-accent: #16132b; --on-ink: #12141c;
  --info: #8db6ee; --info-soft: #1a2740; --del: #f08a80; --ins: #6ccf9b;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  min-height: 100vh;
}
.brand { font-size: 16px; font-weight: 600; color: var(--ink); }
.brand-tier { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 10.5px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-faint); }

/* App shell: slim icon rail, a flyout menu grouped by job, a top bar, the main column */
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.shell { display: flex; min-height: 100vh; }
.rail { flex: 0 0 56px; position: sticky; top: 0; height: 100vh; background: var(--paper-raised); border-right: 1px solid var(--line); display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 0; z-index: 40; }
.rail-logo { width: 30px; height: 30px; border-radius: 8px; background: var(--accent); color: var(--on-accent); display: grid; place-items: center; font-weight: 600; text-decoration: none; margin-bottom: 8px; }
.rbtn { position: relative; width: 38px; height: 38px; border: 0; border-radius: 9px; background: transparent; color: var(--ink-faint); display: grid; place-items: center; cursor: pointer; text-decoration: none; }
.rbtn:hover { background: var(--paper); color: var(--ink); }
.rbtn.on { background: var(--accent-soft); color: var(--accent); }
.rbtn .rdot { position: absolute; top: 5px; right: 5px; width: 8px; height: 8px; border-radius: 50%; background: var(--bad); }
.rbtn:hover::after, .rbtn:focus-visible::after { content: attr(data-tip); position: absolute; left: 46px; top: 50%; transform: translateY(-50%); background: var(--ink); color: var(--on-ink); font-size: 12px; padding: 3px 8px; border-radius: 5px; white-space: nowrap; z-index: 60; pointer-events: none; }
.rail-spacer { flex: 1; }
.scrim { position: fixed; inset: 0 0 0 56px; z-index: 44; background: rgba(37,48,67,.10); }
.scrim[hidden] { display: none; }
.sidebar { position: fixed; left: 56px; top: 0; bottom: 0; width: 264px; z-index: 45; overflow-y: auto; background: var(--paper-raised); border-right: 1px solid var(--line); box-shadow: 6px 0 18px rgba(37,48,67,.10); padding: 16px 12px; display: none; flex-direction: column; gap: 14px; }
.sidebar.open { display: flex; }
.no-js .rail, .no-js .scrim { display: none; }
.no-js .sidebar { display: flex; position: sticky; left: 0; height: 100vh; flex: 0 0 248px; width: 248px; box-shadow: none; }
.side-brand { padding: 0 8px; display: flex; align-items: baseline; gap: 8px; }
.side-find { position: relative; display: flex; align-items: center; }
.side-find svg { position: absolute; left: 9px; color: var(--ink-faint); pointer-events: none; }
.side-find input { width: 100%; padding: 7px 56px 7px 30px; border: 1px solid var(--line-strong); border-radius: 7px; background: var(--paper); color: var(--ink); font: inherit; font-size: 13px; }
.side-kbd { position: absolute; right: 7px; font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 11px; color: var(--ink-faint); border: 1px solid var(--line-strong); border-radius: 4px; padding: 0 5px; background: var(--paper-raised); pointer-events: none; }
.no-js .side-kbd { display: none; }
.side-nav { display: flex; flex-direction: column; gap: 12px; }
.side-group { display: flex; flex-direction: column; gap: 1px; scroll-margin-top: 8px; }
.side-group.pulse .side-group-label { color: var(--accent); }
.side-group-label { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-faint); padding: 4px 10px 3px; }
.side-item { display: flex; align-items: center; gap: 9px; padding: 7px 10px; border-radius: 7px; color: var(--ink-soft); font-size: 14px; text-decoration: none; }
.side-item:hover { background: var(--paper); color: var(--ink); }
.side-item.on { background: var(--accent-soft); color: var(--accent-ink); font-weight: 600; }
.side-item svg { flex: none; }
.side-count { margin-left: auto; background: var(--bad); color: var(--on-accent); font-size: 11px; font-weight: 600; border-radius: 999px; padding: 0 7px; font-variant-numeric: tabular-nums; }
.side-foot { margin-top: auto; border-top: 1px solid var(--line); padding-top: 12px; display: flex; flex-direction: column; gap: 8px; font-size: 12.5px; color: var(--ink-soft); }
.view-switch { display: flex; border: 1px solid var(--line-strong); border-radius: 7px; overflow: hidden; margin: 0; }
.view-switch button { flex: 1; border: 0; background: var(--paper-raised); color: var(--ink-soft); font: inherit; font-size: 12.5px; padding: 5px 0; cursor: pointer; }
.view-switch button.on { background: var(--accent); color: var(--on-accent); font-weight: 600; }
.side-hint { margin: 0; font-size: 12px; color: var(--ink-faint); }
.side-links { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.side-links a { color: var(--ink-soft); text-decoration: none; }
.side-links form { margin: 0; }
.shell-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.icon-btn { display: inline-grid; place-items: center; width: 36px; height: 36px; border: 0; border-radius: 7px; background: transparent; color: var(--ink); cursor: pointer; }
.icon-btn:hover { background: var(--paper); }
.topbar { position: sticky; top: 0; z-index: 30; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; padding: 8px 24px; background: var(--paper-raised); border-bottom: 1px solid var(--line); }
.tb-left { display: flex; align-items: center; gap: 14px; min-width: 0; }
.tb-brand { line-height: 1.15; }
.tb-brand b { display: block; font-size: 13px; }
.tb-brand small { font-size: 11px; color: var(--ink-faint); }
.tb-crumb { font-size: 12px; color: var(--ink-faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tb-search { display: flex; align-items: center; gap: 8px; background: var(--paper); border: 1px solid var(--line); border-radius: 999px; padding: 4px 5px 4px 16px; width: 100%; max-width: 560px; justify-self: center; }
.tb-search input { flex: 1; min-width: 0; border: 0; background: transparent; outline: none; font: inherit; font-size: 13px; color: var(--ink); }
.tb-search .go { width: 28px; height: 28px; border: 0; border-radius: 50%; background: var(--accent); color: var(--on-accent); display: grid; place-items: center; cursor: pointer; }
.tb-right { display: flex; align-items: center; gap: 10px; }
.tb-right form { margin: 0; }
.avatar { width: 28px; height: 28px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; font-size: 12px; font-weight: 600; }
.tb-signout { border: 0; border-radius: 8px; background: var(--accent); color: var(--on-accent); padding: 6px 12px; font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.menu-btn { display: none; }
@media (max-width: 760px) {
  .rail { display: none; }
  .scrim { inset: 0; }
  .sidebar { left: 0; width: min(300px, 88vw); }
  .menu-btn { display: inline-grid; }
  .topbar { grid-template-columns: auto 1fr auto; padding: 8px 10px; gap: 8px; }
  .tb-left .tb-crumb, .tb-brand small { display: none; }
  .tb-search { grid-column: 1 / -1; order: 5; max-width: none; }
  .tb-right .avatar { display: none; }
  .tb-left { grid-column: 1 / 3; grid-row: 1; }
  .tb-right { grid-column: 3; grid-row: 1; }
  .tb-search { grid-row: 2; }
}

/* Ctrl K palette */
.palette { position: fixed; inset: 0; z-index: 50; background: rgba(27,29,31,.35); display: flex; justify-content: center; align-items: flex-start; padding: 10vh 16px 16px; }
.palette[hidden] { display: none; }
.palette-box { width: min(640px, 100%); background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 12px; box-shadow: 0 20px 50px rgba(27,29,31,.25); overflow: hidden; }
.palette-input { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--line); color: var(--ink-faint); }
.palette-input input { flex: 1; border: 0; background: transparent; color: var(--ink); font: inherit; font-size: 15px; outline: none; }
.palette-list { list-style: none; margin: 0; padding: 6px; max-height: 50vh; overflow-y: auto; }
.palette-item { display: flex; justify-content: space-between; gap: 12px; padding: 8px 10px; border-radius: 7px; cursor: pointer; font-size: 14px; overflow-wrap: anywhere; }
.palette-item.on { background: var(--accent-soft); color: var(--accent-ink); }
.palette-group { font-size: 12px; color: var(--ink-faint); white-space: nowrap; }
.palette-empty { padding: 12px 10px; font-size: 13.5px; color: var(--ink-faint); }
.palette-foot { display: flex; flex-wrap: wrap; gap: 6px 16px; padding: 8px 16px; border-top: 1px solid var(--line); font-size: 12px; color: var(--ink-faint); }
.palette-foot kbd { font-family: "IBM Plex Mono", ui-monospace, monospace; border: 1px solid var(--line-strong); border-radius: 4px; padding: 0 4px; }

main { width: 100%; max-width: 1280px; margin: 0 auto; padding: 24px 28px 60px; }
h1 { font-size: 22px; font-weight: 600; margin: 0 0 6px; }
h2 { font-size: 16px; font-weight: 600; margin: 0 0 4px; }
.subtitle { color: var(--ink-faint); font-size: 14px; margin: 0 0 28px; }

.notice {
  padding: 10px 14px;
  border-radius: 6px;
  font-size: 13px;
  margin-bottom: 20px;
}
.notice.ok { background: var(--good-soft); border: 1px solid var(--good); color: var(--good); }
.notice.warn { background: var(--accent-soft); border: 1px solid var(--accent); color: var(--accent); }
.notice.error { background: var(--bad-soft); border: 1px solid var(--bad); color: var(--bad); }
.notice code { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12px; word-break: break-all; }
.notice.key-reveal { display: flex; flex-direction: column; gap: 8px; }
.notice.key-reveal code { display: block; padding: 8px 10px; background: var(--paper); border-radius: 5px; font-size: 13px; }

.chip-active, .chip-revoked {
  display: inline-flex; align-items: center; height: 20px; padding: 0 8px;
  border-radius: 3px; font-size: 11px; font-weight: 500;
}
.chip-active { background: var(--good-soft); color: var(--good); }
.chip-revoked { background: var(--paper); color: var(--ink-faint); border: 1px solid var(--line-strong); }

section { margin-bottom: 40px; }

.card {
  background: var(--paper-raised);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 20px 22px;
}

.card.danger-zone { border-color: var(--bad); }
.danger-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.danger-row:last-child { border-bottom: none; }
.danger-row .label { font-size: 13.5px; font-weight: 500; }
.danger-row .desc { font-size: 12px; color: var(--ink-faint); margin-top: 2px; }
.btn-outline { background: transparent; border: 1px solid var(--line-strong); color: var(--ink); font-size: 12.5px; padding: 8px 16px; border-radius: 6px; cursor: pointer; white-space: nowrap; text-decoration: none; display: inline-flex; align-items: center; }
.btn-outline:hover { border-color: var(--accent); color: var(--accent); }
.btn-danger { background: transparent; border: 1px solid var(--bad); color: var(--bad); font-size: 12.5px; padding: 8px 16px; border-radius: 6px; cursor: pointer; white-space: nowrap; }
.btn-danger:hover { background: var(--bad-soft); }
.delete-confirm-form { display: flex; gap: 8px; align-items: center; }
.delete-confirm-form input { padding: 8px 10px; background: var(--paper); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font-size: 12.5px; width: 220px; }

.plan-row { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 18px; }
.plan-label { font-size: 18px; font-weight: 600; }
.plan-org { color: var(--ink-faint); font-size: 13px; }

.meter-block { margin-bottom: 14px; }
.meter-labels { display: flex; justify-content: space-between; font-size: 12.5px; color: var(--ink-soft); margin-bottom: 6px; font-family: "IBM Plex Mono", ui-monospace, monospace; }
.meter { height: 8px; background: var(--paper); border: 1px solid var(--line-strong); border-radius: 4px; overflow: hidden; }
.meter-fill { height: 100%; background: var(--accent); }
.meter-fill.warn { background: #c99a1e; }
.meter-fill.bad { background: var(--bad); }
.meter-none { font-size: 12.5px; color: var(--ink-faint); }

.plans-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; margin-top: 18px; }
.plan-tile { border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; background: var(--paper); }
.plan-tile.current { border-color: var(--accent); }
.plan-tile .tier-label { font-size: 13px; font-weight: 600; margin-bottom: 2px; }
.plan-tile .tier-price { font-size: 12px; color: var(--ink-faint); margin-bottom: 10px; }
.plan-tile .tier-current-badge { font-size: 11px; color: var(--accent); text-transform: uppercase; letter-spacing: 0.04em; }
.upgrade-btn {
  width: 100%;
  background: transparent;
  border: 1px solid var(--line-strong);
  color: var(--ink);
  font-size: 12.5px;
  padding: 7px;
  border-radius: 5px;
  cursor: pointer;
}
.upgrade-btn:hover { border-color: var(--accent); color: var(--accent); }

.count-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 6px;
  border-radius: 10px;
  font-size: 12px;
  font-family: "IBM Plex Mono", ui-monospace, monospace;
  background: var(--paper);
  border: 1px solid var(--line-strong);
  color: var(--ink-soft);
}
.count-pill.active { background: var(--bad-soft); border-color: var(--bad); color: var(--bad); }

table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
th { text-align: left; font-size: 11px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--ink-faint); font-weight: 500; padding: 8px 10px; border-bottom: 1px solid var(--line); }
td { padding: 10px; border-bottom: 1px solid var(--line); vertical-align: top; font-variant-numeric: tabular-nums; }
tr:last-child td { border-bottom: none; }
tbody tr:hover td { background: var(--paper); }
.domains { color: var(--ink-soft); font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12px; }
.row-actions { display: flex; gap: 8px; }
.link-btn {
  background: none;
  border: none;
  color: var(--ink-soft);
  font-size: 12.5px;
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
}
.link-btn:hover { color: var(--accent); }
.link-btn.danger:hover { color: var(--bad); }
.empty { color: var(--ink-faint); font-size: 13.5px; padding: 16px 0; }

.findings-row td { background: var(--paper); padding: 0; }
.findings-panel { padding: 12px 16px; font-size: 12.5px; }
.findings-panel .finding { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid var(--line); }
.findings-panel .finding:last-child { border-bottom: none; }
.findings-panel .domain { font-family: "IBM Plex Mono", ui-monospace, monospace; color: var(--ink); }
.findings-panel .meta { color: var(--ink-faint); }

.new-watch-form { margin-top: 20px; display: grid; gap: 10px; }
.new-watch-form label { font-size: 12.5px; color: var(--ink-soft); }
.new-watch-form input {
  width: 100%;
  padding: 9px 10px;
  background: var(--paper);
  border: 1px solid var(--line-strong);
  border-radius: 6px;
  color: var(--ink);
  font-size: 13px;
}
.new-watch-form input:focus { outline: none; border-color: var(--accent); }
.create-btn {
  justify-self: start;
  background: var(--accent);
  border: none;
  color: #ffffff;
  font-weight: 600;
  font-size: 13px;
  padding: 9px 20px;
  border-radius: 6px;
  cursor: pointer;
}
.create-btn:hover { filter: brightness(1.08); }

/* Overview: KPI tiles + trend/breakdown charts */
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 24px; }
.kpi-tile { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 16px 18px; }
.kpi-tile .kpi-label { font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); margin-bottom: 8px; }
.kpi-tile .kpi-value { font-size: 28px; font-weight: 600; font-variant-numeric: tabular-nums; line-height: 1; }
.kpi-tile .kpi-value.accent { color: var(--accent); }
.kpi-tile .kpi-sub { font-size: 12px; color: var(--ink-faint); margin-top: 6px; }

.chart-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 16px; }
@media (max-width: 720px) { .chart-grid { grid-template-columns: 1fr; } }
.chart-card { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 18px 20px; }
.chart-card .chart-title { font-size: 13px; font-weight: 600; margin-bottom: 2px; }
.chart-card .chart-desc { font-size: 12px; color: var(--ink-faint); margin-bottom: 16px; }

.trend-chart { display: flex; align-items: flex-end; gap: 2px; height: 120px; border-bottom: 1px solid var(--line-strong); padding-bottom: 1px; }
.trend-bar { flex: 1; min-width: 2px; background: var(--series-trend); border-radius: 2px 2px 0 0; opacity: 0.85; }
.trend-bar:hover { opacity: 1; }
.trend-bar.zero { background: var(--line); opacity: 0.5; }
.trend-axis { display: flex; justify-content: space-between; font-size: 11px; color: var(--ink-faint); margin-top: 8px; font-family: "IBM Plex Mono", ui-monospace, monospace; }

.breakdown-list { display: flex; flex-direction: column; gap: 12px; }
.breakdown-row .breakdown-label-row { display: flex; justify-content: space-between; font-size: 12.5px; margin-bottom: 5px; }
.breakdown-row .breakdown-label-row .name { text-transform: capitalize; color: var(--ink); }
.breakdown-row .breakdown-label-row .count { font-family: "IBM Plex Mono", ui-monospace, monospace; color: var(--ink-soft); }
.breakdown-track { height: 8px; background: var(--paper); border-radius: 4px; overflow: hidden; }
.breakdown-fill { height: 100%; border-radius: 4px; }

a { color: var(--accent-ink); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.notice.warn { color: var(--warn); background: var(--warn-soft); border-color: var(--warn); }
.notice.ok { color: var(--good); }
.notice.error { color: var(--bad); }
.btn-primary { display: inline-flex; align-items: center; background: var(--accent); border: none; color: var(--on-accent); font-weight: 600; font-size: 14px; padding: 10px 20px; border-radius: 6px; cursor: pointer; text-decoration: none; }
.btn-primary:hover { background: var(--accent-ink); }
.new-watch-form .hint { font-size: 12px; color: var(--ink-faint); margin-top: 3px; }

/* Today */
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.page-head p { margin: 0; color: var(--ink-soft); font-size: 14.5px; max-width: 60ch; }
.strip { display: flex; flex-wrap: wrap; gap: 8px 22px; padding: 12px 16px; background: var(--paper-raised); border: 1px solid var(--line); border-radius: 8px; margin-bottom: 24px; font-size: 13.5px; color: var(--ink-soft); }
.strip b { color: var(--ink); font-weight: 600; }
.sev { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; }
.sev svg { width: 12px; height: 12px; }
.sev.new { color: var(--bad); }
.sev.old { color: var(--ink-faint); }
.attn-list { list-style: none; margin: 0; padding: 0; }
.attn-list li { display: grid; grid-template-columns: 1fr auto; gap: 4px 16px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.attn-list li:last-child { border-bottom: none; }
.attn-list .what { font-weight: 500; overflow-wrap: anywhere; }
.attn-list .kind { font-size: 12.5px; color: var(--ink-faint); }
.attn-list time { font-size: 12.5px; color: var(--ink-faint); white-space: nowrap; font-variant-numeric: tabular-nums; }
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.wcard { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 8px; padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; }
.wcard h3 { margin: 0; font-size: 15px; }
.wcard p { margin: 0; font-size: 13px; color: var(--ink-soft); flex: 1; }
.wcard .state { font-size: 12.5px; font-weight: 600; }
.wcard .state.on { color: var(--good); }
.wcard .state.off { color: var(--ink-faint); }
.checklist { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.checklist li { display: flex; gap: 10px; align-items: baseline; font-size: 14px; }
.checklist .tick { width: 18px; height: 18px; flex: none; border-radius: 50%; border: 2px solid var(--line-strong); position: relative; top: 3px; }
.checklist .done .tick { background: var(--good); border-color: var(--good); }
.checklist .done { color: var(--ink-faint); }
h2.block { font-size: 17px; margin: 30px 0 10px; }

/* Setup wizard */
.goal-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 14px; margin-top: 8px; }
.goal { display: block; text-decoration: none; color: inherit; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 8px; padding: 18px; }
.goal:hover { border-color: var(--accent); }
.goal h3 { margin: 0 0 6px; font-size: 16px; }
.goal p { margin: 0 0 10px; font-size: 13.5px; color: var(--ink-soft); }
.goal ul { margin: 0; padding-left: 18px; font-size: 13px; color: var(--ink-soft); }
.setup-form { max-width: 520px; display: grid; gap: 14px; }
.setup-form label { font-size: 13.5px; font-weight: 500; }
.setup-form input[type=text] { width: 100%; padding: 10px 12px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font-size: 14px; }
.setup-form input[type=text]:focus { outline: none; border-color: var(--accent); }
.setup-form .hint { font-size: 12.5px; color: var(--ink-faint); margin-top: 4px; }
.result-list { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 8px; }
.result-list li { display: flex; gap: 10px; align-items: baseline; font-size: 14px; }
.result-list .ok { color: var(--good); font-weight: 600; }
.result-list .no { color: var(--bad); font-weight: 600; }
.sample { border: 1px dashed var(--line-strong); border-radius: 8px; padding: 14px 16px; background: var(--paper-raised); max-width: 520px; }
.sample .tag { font-size: 11.5px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--ink-faint); }
details.advanced { margin-top: 4px; font-size: 13.5px; }
details.advanced summary { cursor: pointer; color: var(--ink-soft); }

/* public pages (sign in, sign up, errors) */
body.public { display: flex; align-items: center; justify-content: center; padding: 24px; }
.public-card { width: 100%; max-width: 400px; background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 28px; }
.public-card h1 { margin-bottom: 4px; }
.public-card .brand { display: block; margin-bottom: 14px; }
.public-card form { display: grid; gap: 12px; margin-top: 18px; }
.public-card label { font-size: 13.5px; font-weight: 500; }
.public-card input { width: 100%; padding: 10px 12px; background: var(--paper); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font-size: 14px; }
.public-card .alt { margin-top: 16px; font-size: 13px; color: var(--ink-faint); }
@media (max-width: 560px) {
  .card { overflow-x: auto; }
  .danger-row { flex-direction: column; align-items: flex-start; }
  .delete-confirm-form { flex-wrap: wrap; }
  .delete-confirm-form input { width: 100%; }
  main { padding: 22px 16px 48px; }
}

/* Alert inbox */
.pills { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.pill { display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px; border: 1px solid var(--line-strong); border-radius: 999px; background: var(--paper-raised); color: var(--ink); text-decoration: none; font-size: 14px; }
.pill:hover { border-color: var(--accent); }
.pill.on { background: var(--ink); border-color: var(--ink); color: #fff; font-weight: 600; }
.pill .n { font-variant-numeric: tabular-nums; opacity: 0.85; }
.fine { font-size: 12.5px; color: var(--ink-faint); margin: 0 0 16px; }
.alert-list { list-style: none; margin: 0 0 24px; padding: 0; display: grid; gap: 10px; }
.alert-row { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; display: grid; gap: 6px; }
.alert-top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.alert-kind { font-size: 13px; color: var(--ink-soft); }
.alert-when { margin-left: auto; font-size: 12.5px; color: var(--ink-faint); font-variant-numeric: tabular-nums; }
.alert-title { font-weight: 600; overflow-wrap: anywhere; }
.alert-detail { font-weight: 400; color: var(--ink-soft); }
.alert-meta { font-size: 13px; color: var(--ink-soft); }
.pri { display: inline-flex; align-items: center; gap: 6px; padding: 2px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.pri svg { width: 12px; height: 12px; }
.pri.high { background: var(--bad-soft); color: var(--bad); }
.pri.medium { background: var(--warn-soft); color: var(--warn); }
.pri.low { background: var(--paper-sunk); color: var(--ink-soft); }
.alert-actions { display: grid; gap: 8px; margin-top: 4px; }
.alert-actions input[type=text] { width: 100%; max-width: 420px; padding: 7px 10px; background: var(--paper); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font-size: 13px; }
.alert-buttons { display: flex; flex-wrap: wrap; gap: 8px; }
.alert-buttons button { background: var(--paper-raised); border: 1px solid var(--line-strong); color: var(--ink); font-size: 13px; padding: 6px 12px; border-radius: 6px; cursor: pointer; }
.alert-buttons button:hover { border-color: var(--accent); color: var(--accent-ink); }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
details.health { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 12px 16px; overflow-x: auto; }
details.health summary { cursor: pointer; font-weight: 600; }
details.health[open] summary { margin-bottom: 10px; }
.warn-tag { margin-left: 10px; font-size: 12.5px; font-weight: 600; color: var(--warn); }

/* Investigations */
.crumb { margin: 0 0 8px; font-size: 13px; }
.head-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.head-actions form { margin: 0; }
.inline-form { display: grid; gap: 8px; margin: 0 0 20px; }
.inline-form label { font-size: 13.5px; font-weight: 500; }
.inline-form .row { display: flex; flex-wrap: wrap; gap: 8px; }
.inline-form input[type=text], .inline-form select, .inline-form textarea, .addcase select, .addcase input[type=text] { padding: 9px 12px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font: inherit; font-size: 14px; }
.inline-form .row input[type=text] { flex: 1 1 260px; min-width: 0; }
.inline-form textarea { width: 100%; max-width: 640px; }
.evidence-list { list-style: none; margin: 0 0 20px; padding: 0; display: grid; gap: 10px; }
.evidence { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; display: grid; gap: 6px; }
.ev-top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.ev-no { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12px; font-weight: 600; border: 1px solid var(--line-strong); border-radius: 4px; padding: 0 6px; }
.ev-kind { font-size: 12px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--ink-faint); }
.ev-status { margin-left: auto; font-size: 12.5px; font-weight: 600; padding: 2px 10px; border-radius: 999px; background: var(--paper-sunk); color: var(--ink-soft); }
.ev-status.checked { background: var(--info-soft); color: var(--info); }
.ev-status.confirmed { background: var(--good-soft); color: var(--good); }
.ev-title { font-weight: 600; overflow-wrap: anywhere; }
.ev-meta { font-size: 13px; color: var(--ink-soft); overflow-wrap: anywhere; }
.mono { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12.5px; }
.ev-copy summary, .addcase summary { cursor: pointer; font-size: 13px; color: var(--accent-ink); }
.ev-copy pre { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 320px; overflow: auto; background: var(--paper); border: 1px solid var(--line); border-radius: 6px; padding: 10px 12px; font-size: 12.5px; }
.ev-grade { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12px; font-weight: 600; padding: 1px 8px; border-radius: 4px; border: 1px solid var(--line-strong); color: var(--ink-soft); white-space: nowrap; }
.ev-grade.gA { border-color: var(--good); color: var(--good); background: var(--good-soft); }
.ev-grade.gC { border-style: dashed; }
.ev-files { display: grid; gap: 8px; }
.ev-shot { display: block; max-width: 360px; border: 1px solid var(--line); border-radius: 6px; overflow: hidden; background: var(--paper-sunk); }
.ev-shot img { display: block; width: 100%; height: auto; max-height: 240px; object-fit: cover; object-position: top; }
.ev-shot.wide { max-width: 100%; margin: 0 0 10px; }
.ev-shot.wide img { max-height: none; }
.ev-file-list { list-style: none; margin: 0; padding: 0; font-size: 13px; color: var(--ink-soft); display: grid; gap: 4px; overflow-wrap: anywhere; }
.ev-rating { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12px; font-weight: 600; padding: 1px 8px; border-radius: 4px; background: var(--paper-sunk); border: 1px solid var(--line-strong); color: var(--ink); cursor: help; }
.rate-form { flex-basis: 100%; order: 1; }
.rate-form summary { cursor: pointer; font-size: 13px; color: var(--accent-ink); }
.rate-form label { display: grid; gap: 2px; font-size: 12.5px; color: var(--ink-soft); }
.ev-also { font-size: 13px; color: var(--ink-soft); overflow-wrap: anywhere; }
.ev-also a { color: var(--accent-ink); }
.path-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.path { display: grid; gap: 6px; padding: 14px 16px; }
.path-doc { display: grid; grid-template-columns: 22px 1fr; gap: 6px; padding-left: 6px; border-left: 2px solid var(--line-strong); margin-left: 10px; }
.path-arrow { color: var(--ink-faint); font-size: 14px; }
.path-doc-title { font-weight: 600; overflow-wrap: anywhere; }
.watching { margin: 0 0 14px; padding: 12px 16px; display: grid; gap: 8px; }
.watching h2 { margin: 0; font-size: 15px; }
.watch-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.watch-list li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; overflow-wrap: anywhere; }
.watch-list form { margin: 0; }
.watch-list button { background: var(--paper-raised); border: 1px solid var(--line-strong); color: var(--ink); font-size: 12.5px; padding: 3px 10px; border-radius: 6px; cursor: pointer; }
.ev-via { font-size: 11.5px; letter-spacing: 0.04em; text-transform: uppercase; padding: 1px 7px; border-radius: 4px; border: 1px dashed var(--accent); color: var(--accent-ink); }
.task-list { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 8px; }
.task { display: grid; grid-template-columns: 34px 1fr; gap: 10px; padding: 10px 14px; align-items: start; }
.task form { margin: 0; }
.task .tick { width: 26px; height: 26px; border: 2px solid var(--line-strong); border-radius: 6px; background: var(--paper-raised); color: var(--good); font-weight: 700; cursor: pointer; }
.task.done .task-text { text-decoration: line-through; color: var(--ink-faint); }
.task.overdue { border-left: 4px solid var(--bad); }
.task.overdue .fine { color: var(--bad); }
.task-text { overflow-wrap: anywhere; }
.task-edit summary { cursor: pointer; font-size: 12.5px; color: var(--accent-ink); }
.playbooks label { display: block; margin: 4px 0; }
.due-list { list-style: none; margin: 0 0 14px; padding: 10px 14px; display: grid; gap: 6px; }
.due-list li { display: grid; gap: 1px; overflow-wrap: anywhere; }
.due-list li.overdue a { color: var(--bad); }
.review-card { padding: 12px 16px; display: grid; gap: 8px; }
.review-card form { margin: 0; }
.review-state { margin: 0; font-weight: 600; }
.review-state.approved { color: var(--good); }
.review-state.stale, .review-state.returned, .review-state.none { color: var(--bad); }
.draft-chip { font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; padding: 1px 6px; border-radius: 4px; border: 1px solid var(--bad); color: var(--bad); }
.hyp-list { list-style: none; margin: 0 0 12px; padding: 0; display: grid; gap: 8px; }
.hyp { padding: 10px 14px; display: grid; gap: 4px; overflow-wrap: anywhere; }
.hyp.least { border-left: 4px solid var(--good); }
.ach-table td, .ach-table th { white-space: nowrap; }
.ach-table td:first-child { white-space: normal; min-width: 220px; }
.ach-table select { font-size: 12.5px; padding: 3px 4px; }
.ach-cell.i, .ach-cell.ii { background: var(--bad-soft); }
.ach-cell.cc, .ach-cell.c { background: var(--good-soft); }
.ach-score td { font-weight: 600; }
.prio { font-size: 11.5px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; padding: 1px 7px; border-radius: 4px; border: 1px solid var(--line-strong); }
.prio.high { color: var(--bad); border-color: var(--bad); }
.prio.medium { color: var(--warn); border-color: var(--warn); }
.req-row.retired td { color: var(--ink-faint); }
.req-picker { margin: 4px 0; }
.req-line { margin: 0 0 6px; }
.stamp-ok { color: var(--good); font-weight: 600; }
.ev-copy-link { font-size: 13px; color: var(--accent-ink); justify-self: start; }
.hold-chip { display: inline-block; font-size: 12px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; padding: 1px 8px; border-radius: 4px; background: var(--bad-soft); color: var(--bad); border: 1px solid var(--bad); white-space: nowrap; }
.hold-banner { border: 1px solid var(--bad); border-left-width: 4px; background: var(--bad-soft); border-radius: 8px; padding: 12px 16px; margin: 0 0 16px; display: grid; gap: 6px; }
.hold-banner h2 { margin: 0; font-size: 16px; color: var(--bad); }
.hold-banner p { margin: 0; }
.hold-reason { white-space: pre-wrap; overflow-wrap: anywhere; font-weight: 600; }
.hold-form summary { cursor: pointer; font-size: 13.5px; color: var(--accent-ink); }
.hold-place { margin: 0 0 14px; }
.copy-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px 20px; margin: 0 0 18px; padding: 14px 16px; }
.copy-facts dt { font-size: 12px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--ink-faint); }
.copy-facts dd { margin: 2px 0 0; font-size: 14px; overflow-wrap: anywhere; }
.copy-text { white-space: pre-wrap; overflow-wrap: anywhere; background: var(--paper-raised); border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; font-size: 13px; max-width: 72ch; }
.table-wrap { overflow-x: auto; }
.ev-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ev-actions form { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
.ev-actions button, .addcase button { background: var(--paper-raised); border: 1px solid var(--line-strong); color: var(--ink); font-size: 13px; padding: 6px 12px; border-radius: 6px; cursor: pointer; }
.ev-actions button:hover, .addcase button:hover { border-color: var(--accent); color: var(--accent-ink); }
.ev-actions button.danger:hover { border-color: var(--bad); color: var(--bad); }
.addcase form { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.timeline { list-style: none; margin: 0 0 20px; padding: 0 0 0 14px; border-left: 2px solid var(--line-strong); display: grid; gap: 14px; }
.timeline li { font-size: 14px; overflow-wrap: anywhere; }
.timeline time { display: block; font-size: 12.5px; color: var(--ink-faint); font-variant-numeric: tabular-nums; }
.tl-what { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-soft); margin-right: 6px; }
.notes { list-style: none; margin: 0 0 20px; padding: 0; display: grid; gap: 10px; }
.note-body { white-space: pre-wrap; overflow-wrap: anywhere; }

/* Connection map */
.map-wrap { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 10px; overflow-x: auto; margin-bottom: 10px; }
.conn-map { display: block; width: 100%; min-width: 520px; height: auto; }
.map-node { fill: var(--paper-raised); stroke: var(--ink); stroke-width: 2; }
.map-node.entity { fill: var(--accent-soft); stroke: var(--accent-ink); }
.map-node.dashed { stroke-dasharray: 5 3; }
.map-edge { stroke: var(--ink-soft); stroke-width: 2; }
.map-edge.suggested { stroke-dasharray: 7 5; }
.map-edge.confirmed { stroke: var(--ink); stroke-width: 3; }
.map-edge.typed { stroke: var(--accent); stroke-width: 2.5; fill: none; }
.map-edge.typed.possible { stroke-dasharray: 2 4; }
.map-typed { font-size: 11.5px; fill: var(--accent-ink); paint-order: stroke; stroke: var(--paper-raised); stroke-width: 4px; }
.key.typed { height: 0; border-width: 0 0 3px; border-radius: 0; background: none; border-color: var(--accent); }
.link-state.typed { color: var(--accent-ink); }
.map-id { font-size: 13px; font-weight: 600; fill: var(--ink); font-family: "IBM Plex Mono", ui-monospace, monospace; }
.map-cap { font-size: 12px; fill: var(--ink-soft); }
.map-cap.mono { font-family: "IBM Plex Mono", ui-monospace, monospace; }
.map-legend { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0 0 8px; padding: 0; font-size: 12.5px; color: var(--ink-soft); }
.map-legend li { display: inline-flex; align-items: center; gap: 6px; }
.key { display: inline-block; width: 16px; height: 12px; border: 2px solid var(--ink); background: var(--paper-raised); }
.key.circle { border-radius: 50%; width: 14px; height: 14px; }
.key.diamond { transform: rotate(45deg) scale(0.8); width: 12px; height: 12px; }
.key.server { border-style: dashed; }
.key.hex { border-radius: 4px; transform: skewX(-12deg); }
.key.dash, .key.solid { height: 0; border-width: 0 0 2px; border-radius: 0; background: none; }
.key.dash { border-style: dashed; }
.link-list { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 10px; }
.link-row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px 16px; align-items: flex-start; }
.link-state { font-size: 12px; font-weight: 600; border-radius: 999px; padding: 2px 10px; background: var(--warn-soft); color: var(--warn); display: inline-block; margin-bottom: 4px; }
.link-state.confirmed { background: var(--good-soft); color: var(--good); }
.wrap { overflow-wrap: anywhere; }
.link-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
.link-actions button { background: var(--paper-raised); border: 1px solid var(--line-strong); color: var(--ink); font-size: 13px; padding: 6px 12px; border-radius: 6px; cursor: pointer; }
.link-actions button:hover { border-color: var(--accent); color: var(--accent-ink); }
.link-actions button.danger:hover { border-color: var(--bad); color: var(--bad); }
.map-hint { display: none; margin-bottom: 6px; }
@media (max-width: 640px) { .map-hint { display: block; } }

/* Assistant */
.ai-answer { display: grid; gap: 10px; border-left: 4px solid var(--accent); }
.ai-tag { font-size: 12px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--accent-ink); }
.cite { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12.5px; font-weight: 600; white-space: nowrap; }

/* Report builder */
.finding-list { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 10px; }
.finding-row { display: grid; gap: 8px; }
.finding-text { font-weight: 600; overflow-wrap: anywhere; margin: 4px 0; }
.conf { display: inline-block; font-size: 12px; font-weight: 600; border-radius: 999px; padding: 2px 10px; background: var(--paper-sunk); color: var(--ink-soft); }
.conf.confirmed { background: var(--good-soft); color: var(--good); }
.conf.probable { background: var(--info-soft); color: var(--info); }
.finding-edit summary { cursor: pointer; font-size: 13px; color: var(--accent-ink); }
.finding-edit form { margin-top: 8px; }
fieldset.checks { border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px; display: grid; gap: 4px; margin: 0; }
fieldset.checks legend { font-size: 13px; font-weight: 500; padding: 0 4px; }
fieldset.checks label { font-size: 13.5px; font-weight: 400; display: flex; gap: 8px; align-items: baseline; overflow-wrap: anywhere; }
.summary-card { display: grid; gap: 10px; }
.summary-state { font-size: 13px; font-weight: 600; border-radius: 6px; padding: 6px 10px; background: var(--paper-sunk); color: var(--ink-soft); }
.summary-state.draft { background: var(--warn-soft); color: var(--warn); }
.summary-state.approved { background: var(--good-soft); color: var(--good); }
.export-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 6px; }
.inline-form.card { padding: 16px; }
.row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.row form { margin: 0; }

/* Search */
.search-form { display: grid; gap: 10px; margin-bottom: 16px; }
.search-form .row input[type=text], .search-form .row input[type=search], .search-form .row input[type=date], .search-form .row select { padding: 8px 10px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font: inherit; font-size: 14px; }
.search-form .grow { flex: 1 1 260px; min-width: 0; }
.search-form label { font-size: 12.5px; color: var(--ink-soft); display: grid; gap: 3px; }
.hits { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 10px; }
.hit { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; display: grid; gap: 6px; }
.hit-title { font-weight: 600; overflow-wrap: anywhere; }
.hit-meta { font-size: 12.5px; color: var(--ink-soft); display: flex; flex-wrap: wrap; gap: 4px 12px; overflow-wrap: anywhere; }
.snip { font-size: 13.5px; color: var(--ink-soft); overflow-wrap: anywhere; margin: 0; }
.snip em, .hit-title em { background: var(--accent-soft); font-style: normal; font-weight: 600; color: var(--ink); }
.chip { display: inline-block; font-size: 12px; font-weight: 600; border-radius: 999px; padding: 1px 9px; background: var(--paper-sunk); color: var(--ink-soft); }
.chip.sensitive { background: var(--warn-soft); color: var(--warn); }
.pager { display: flex; gap: 10px; align-items: center; margin: 4px 0 20px; font-size: 13.5px; }
.facets { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; font-size: 12.5px; }
.facets a { text-decoration: none; border: 1px solid var(--line-strong); border-radius: 999px; padding: 2px 10px; color: var(--ink-soft); background: var(--paper-raised); }

/* Tool pages: rules each page used to carry in its own <style>, scoped to that page */
.pg-coordination .topline { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.pg-coordination .back { font-size: 13px; text-decoration: none; }
.pg-coordination .caveat { border: 1px solid var(--line); border-left: 3px solid var(--warn); background: var(--paper-raised); border-radius: 6px; padding: 10px 14px; margin: 12px 0 18px; font-size: 13px; color: var(--ink-soft); max-width: 90ch; }
.pg-coordination .controls { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.pg-coordination .controls a { text-decoration: none; font-size: 13px; padding: 6px 12px; border: 1px solid var(--line); border-radius: 6px; color: var(--ink-soft); }
.pg-coordination .controls a[aria-current="true"] { background: var(--paper-raised); color: var(--ink); border-color: var(--accent); }
.pg-coordination .controls .gap { flex: 1; }
.pg-coordination .card { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 6px 18px; overflow-x: auto; }
.pg-coordination table { border-collapse: collapse; width: 100%; font-size: 13.5px; }
.pg-coordination th, .pg-coordination td { text-align: left; padding: 11px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.pg-coordination tr:last-child td { border-bottom: 0; }
.pg-coordination th { color: var(--ink-faint); font-weight: 500; font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; }
.pg-coordination td.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pg-coordination .badge { display: inline-block; font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; padding: 2px 8px; border-radius: 4px; border: 1px solid var(--line); white-space: nowrap; }
.pg-coordination .badge.strong { color: var(--accent); border-color: var(--accent); }
.pg-coordination .badge.moderate { color: var(--warn); border-color: var(--warn); }
.pg-coordination .badge.weak { color: var(--ink-faint); }
.pg-coordination .excerpt { color: var(--ink-faint); font-size: 12.5px; margin-top: 3px; max-width: 60ch; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.pg-coordination .empty { color: var(--ink-faint); padding: 18px 4px; font-size: 13.5px; }
.pg-coordination-detail .back { font-size: 13px; text-decoration: none; display: inline-block; margin-bottom: 12px; }
.pg-coordination-detail .caveat { border: 1px solid var(--line); border-left: 3px solid var(--warn); background: var(--paper-raised); border-radius: 6px; padding: 10px 14px; margin: 12px 0 18px; font-size: 13px; color: var(--ink-soft); }
.pg-coordination-detail .badge { display: inline-block; font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; padding: 2px 8px; border-radius: 4px; border: 1px solid var(--line); margin-right: 8px; }
.pg-coordination-detail .badge.strong { color: var(--accent); border-color: var(--accent); }
.pg-coordination-detail .badge.moderate { color: var(--warn); border-color: var(--warn); }
.pg-coordination-detail .badge.weak { color: var(--ink-faint); }
.pg-coordination-detail .stats { display: flex; gap: 26px; flex-wrap: wrap; margin: 14px 0 18px; font-variant-numeric: tabular-nums; }
.pg-coordination-detail .stats div { display: flex; flex-direction: column; }
.pg-coordination-detail .stats b { font-size: 22px; font-weight: 600; }
.pg-coordination-detail .stats span { font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); }
.pg-coordination-detail .card { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 16px 18px; margin-bottom: 18px; }
.pg-coordination-detail .card h2 { font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); margin: 0 0 12px; font-weight: 600; }
.pg-coordination-detail ul.why { margin: 0; padding-left: 18px; font-size: 13.5px; color: var(--ink-soft); }
.pg-coordination-detail ul.why li { margin: 5px 0; }
.pg-coordination-detail .strip svg { width: 100%; height: auto; display: block; }
.pg-coordination-detail .strip text { fill: var(--ink-faint); font-size: 10.5px; font-family: "IBM Plex Sans", sans-serif; }
.pg-coordination-detail ul.posts { list-style: none; margin: 0; padding: 0; }
.pg-coordination-detail ul.posts li { padding: 10px 0; border-bottom: 1px solid var(--line); }
.pg-coordination-detail ul.posts li:last-child { border-bottom: 0; }
.pg-coordination-detail ul.posts .src { font-size: 12px; color: var(--ink-faint); margin-bottom: 3px; font-variant-numeric: tabular-nums; }
.pg-coordination-detail ul.posts p { margin: 0; font-size: 13.5px; color: var(--ink-soft); word-break: break-word; }
.pg-defacement .topline { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.pg-defacement .back { font-size: 13px; text-decoration: none; }
.pg-defacement .subtitle { color: var(--ink-faint); font-size: 13px; margin: 4px 0 18px; max-width: 78ch; }
.pg-defacement .controls { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 16px; }
.pg-defacement .controls a { text-decoration: none; font-size: 13px; padding: 6px 12px; border: 1px solid var(--line); border-radius: 6px; color: var(--ink-soft); }
.pg-defacement .controls a[aria-current="true"] { background: var(--paper-raised); color: var(--ink); border-color: var(--accent); }
.pg-defacement .controls .gap { flex: 1; }
.pg-defacement .controls input[type=text] { background: var(--paper-raised); color: var(--ink); border: 1px solid var(--line); border-radius: 6px; padding: 6px 10px; font: inherit; font-size: 13px; width: 220px; }
.pg-defacement .card { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 6px 18px; overflow-x: auto; }
.pg-defacement table { border-collapse: collapse; width: 100%; font-size: 13.5px; }
.pg-defacement th, .pg-defacement td { text-align: left; padding: 11px 10px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.pg-defacement tr:last-child td { border-bottom: 0; }
.pg-defacement th { color: var(--ink-faint); font-weight: 500; font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; }
.pg-defacement td.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pg-defacement .terms { display: block; color: var(--ink-faint); font-size: 12px; margin-top: 2px; }
.pg-defacement .empty { color: var(--ink-faint); padding: 18px 4px; font-size: 13.5px; }
.pg-defacement-detail .topline { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.pg-defacement-detail h2 { font-size: 14px; font-weight: 600; margin: 26px 0 10px; }
.pg-defacement-detail .back { font-size: 13px; text-decoration: none; }
.pg-defacement-detail .subtitle { color: var(--ink-faint); font-size: 13px; margin: 4px 0 18px; max-width: 78ch; }
.pg-defacement-detail dl.facts { display: grid; grid-template-columns: max-content 1fr; gap: 6px 18px; margin: 0; font-size: 13.5px; }
.pg-defacement-detail dl.facts dt { color: var(--ink-faint); }
.pg-defacement-detail dl.facts dd { margin: 0; font-variant-numeric: tabular-nums; }
.pg-defacement-detail .report { border-top: 1px solid var(--line); padding: 12px 0; font-size: 13.5px; }
.pg-defacement-detail .report .meta { display: block; color: var(--ink-faint); font-size: 12px; margin-bottom: 4px; }
.pg-defacement-detail .report .excerpt { color: var(--ink-soft); overflow-wrap: anywhere; }
.pg-narrative-detail .back { font-size: 13px; text-decoration: none; display: inline-block; margin-bottom: 12px; }
.pg-narrative-detail .lede { color: var(--ink-soft); font-size: 14px; margin: 0 0 6px; max-width: 72ch; }
.pg-narrative-detail .meta { color: var(--ink-faint); font-size: 12.5px; margin: 0 0 20px; }
.pg-narrative-detail .badge { display: inline-block; font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; padding: 2px 8px; border: 1px solid var(--line); border-radius: 4px; color: var(--ink-soft); margin-right: 8px; }
.pg-narrative-detail .stats { display: flex; gap: 26px; flex-wrap: wrap; margin-bottom: 18px; font-variant-numeric: tabular-nums; }
.pg-narrative-detail .stats div { display: flex; flex-direction: column; }
.pg-narrative-detail .stats b { font-size: 22px; font-weight: 600; }
.pg-narrative-detail .stats span { font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); }
.pg-narrative-detail .card { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 16px 18px; margin-bottom: 18px; }
.pg-narrative-detail .card h2 { font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); margin: 0 0 12px; font-weight: 600; }
.pg-narrative-detail .chart svg { width: 100%; height: auto; display: block; }
.pg-narrative-detail .chart text { fill: var(--ink-faint); font-size: 10.5px; font-family: "IBM Plex Sans", sans-serif; }
.pg-narrative-detail .terms { display: flex; flex-wrap: wrap; gap: 6px; }
.pg-narrative-detail .terms span { font-size: 12.5px; padding: 3px 9px; background: var(--paper-sunk); border: 1px solid var(--line); border-radius: 999px; color: var(--ink-soft); }
.pg-narrative-detail ul.posts { list-style: none; margin: 0; padding: 0; }
.pg-narrative-detail ul.posts li { padding: 11px 0; border-bottom: 1px solid var(--line); }
.pg-narrative-detail ul.posts li:last-child { border-bottom: 0; }
.pg-narrative-detail ul.posts .src { font-size: 12px; color: var(--ink-faint); margin-bottom: 3px; }
.pg-narrative-detail ul.posts p { margin: 0; font-size: 13.5px; color: var(--ink-soft); word-break: break-word; }
.pg-narratives .topline { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.pg-narratives .back { font-size: 13px; text-decoration: none; }
.pg-narratives .subtitle { color: var(--ink-faint); font-size: 13px; margin: 4px 0 18px; max-width: 78ch; }
.pg-narratives .controls { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.pg-narratives .controls a { text-decoration: none; font-size: 13px; padding: 6px 12px; border: 1px solid var(--line); border-radius: 6px; color: var(--ink-soft); }
.pg-narratives .controls a[aria-current="true"] { background: var(--paper-raised); color: var(--ink); border-color: var(--accent); }
.pg-narratives .controls .gap { flex: 1; }
.pg-narratives .card { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 6px 18px; overflow-x: auto; }
.pg-narratives table { border-collapse: collapse; width: 100%; font-size: 13.5px; }
.pg-narratives th, .pg-narratives td { text-align: left; padding: 11px 10px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.pg-narratives tr:last-child td { border-bottom: 0; }
.pg-narratives th { color: var(--ink-faint); font-weight: 500; font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; }
.pg-narratives td.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pg-narratives .terms { color: var(--ink-faint); font-size: 12px; margin-top: 2px; }
.pg-narratives .empty { color: var(--ink-faint); padding: 18px 4px; font-size: 13.5px; }
.pg-page-history .topline { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.pg-page-history .back { font-size: 13px; text-decoration: none; }
.pg-page-history .subtitle { color: var(--ink-faint); font-size: 13px; margin: 4px 0 18px; max-width: 78ch; }
.pg-page-history form.lookup { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; }
.pg-page-history form.lookup input[type=text] { flex: 1; min-width: 260px; background: var(--paper-raised); color: var(--ink); border: 1px solid var(--line); border-radius: 6px; padding: 8px 10px; font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12.5px; min-height: 36px; }
.pg-page-history form.lookup button { background: var(--accent); color: var(--on-accent); border: 0; border-radius: 6px; padding: 0 16px; min-height: 36px; font: inherit; font-weight: 600; font-size: 13.5px; cursor: pointer; }
.pg-page-history .card { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 16px 18px; margin-bottom: 18px; }
.pg-page-history .card h2 { font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); margin: 0 0 12px; font-weight: 600; }
.pg-page-history .pagehead { font-size: 15px; font-weight: 600; margin: 0 0 4px; word-break: break-word; }
.pg-page-history .meta { color: var(--ink-faint); font-size: 12.5px; word-break: break-all; }
.pg-page-history table { border-collapse: collapse; width: 100%; font-size: 13px; }
.pg-page-history th, .pg-page-history td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--line); }
.pg-page-history tr:last-child td { border-bottom: 0; }
.pg-page-history th { color: var(--ink-faint); font-weight: 500; font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; }
.pg-page-history td.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pg-page-history tr.selected td { background: var(--paper-sunk); }
.pg-page-history .stats { display: flex; gap: 24px; flex-wrap: wrap; margin-bottom: 12px; font-size: 13px; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.pg-page-history .stats b { color: var(--ink); }
.pg-page-history .diff { font-size: 14px; line-height: 1.7; color: var(--ink-soft); word-break: break-word; }
.pg-page-history .diff del { color: var(--del); text-decoration: line-through; background: rgba(226,128,128,0.10); padding: 0 2px; border-radius: 2px; }
.pg-page-history .diff ins { color: var(--ins); text-decoration: underline; background: rgba(127,201,154,0.10); padding: 0 2px; border-radius: 2px; }
.pg-page-history .fine { font-size: 12.5px; color: var(--ink-faint); margin: 10px 0 0; }
.pg-page-history .empty { color: var(--ink-faint); font-size: 13.5px; }
.pg-tor-viewer-result .subtitle { color: var(--ink-faint); font-size: 13px; margin: 0 0 24px; word-break: break-all; }
.pg-tor-viewer-result .card { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 18px 20px; margin-bottom: 20px; }
.pg-tor-viewer-result .card h2 { font-size: 13px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--ink-faint); margin: 0 0 12px; font-weight: 600; }
.pg-tor-viewer-result .card img { max-width: 100%; border-radius: 6px; border: 1px solid var(--line); display: block; }
.pg-tor-viewer-result .card pre { white-space: pre-wrap; word-break: break-word; font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12.5px; color: var(--ink-soft); margin: 0; max-height: 320px; overflow-y: auto; }
.pg-link-analysis .topline { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 4px; }
.pg-link-analysis .back { font-size: 13px; text-decoration: none; }
.pg-link-analysis .subtitle { color: var(--ink-faint); font-size: 13px; margin: 4px 0 18px; max-width: 78ch; }
.pg-link-analysis .trace-form { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 16px; }
.pg-link-analysis .trace-form label { display: block; font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); margin-bottom: 4px; }
.pg-link-analysis .trace-form select, .pg-link-analysis .trace-form input[type=text] { background: var(--paper-raised); color: var(--ink); border: 1px solid var(--line); border-radius: 6px; padding: 8px 10px; font: inherit; font-size: 13.5px; min-height: 36px; }
.pg-link-analysis .trace-form input[type=text] { width: min(420px, 78vw); font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12.5px; }
.pg-link-analysis .trace-form button { background: var(--accent); color: var(--on-accent); border: 0; border-radius: 6px; padding: 0 16px; min-height: 36px; font: inherit; font-weight: 600; font-size: 13.5px; cursor: pointer; }
.pg-link-analysis .stats { display: flex; gap: 22px; flex-wrap: wrap; margin-bottom: 12px; font-size: 13px; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.pg-link-analysis .stats b { color: var(--ink); font-weight: 600; }
.pg-link-analysis .workspace { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 16px; align-items: start; }
.pg-link-analysis .stage { position: relative; background: var(--paper-sunk); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.pg-link-analysis .stage svg { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; touch-action: none; cursor: grab; }
.pg-link-analysis .stage svg.panning { cursor: grabbing; }
.pg-link-analysis .legend { position: absolute; left: 12px; bottom: 12px; display: flex; gap: 12px; flex-wrap: wrap; background: rgba(255,255,255,0.9); border: 1px solid var(--line); border-radius: 6px; padding: 6px 10px; font-size: 11.5px; color: var(--ink-soft); }
.pg-link-analysis .legend span { display: inline-flex; align-items: center; gap: 6px; }
.pg-link-analysis .hint { position: absolute; right: 12px; bottom: 12px; font-size: 11.5px; color: var(--ink-faint); background: rgba(255,255,255,0.9); padding: 6px 10px; border-radius: 6px; border: 1px solid var(--line); }
.pg-link-analysis .panel { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; padding: 16px 18px; }
.pg-link-analysis .panel h2 { font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); margin: 0 0 10px; font-weight: 600; }
.pg-link-analysis .panel .empty { color: var(--ink-faint); font-size: 13px; }
.pg-link-analysis .kind { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--ink-soft); margin-bottom: 6px; }
.pg-link-analysis .value { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12.5px; word-break: break-all; margin: 0 0 12px; }
.pg-link-analysis dl.facts { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; margin: 0 0 14px; font-size: 12.5px; }
.pg-link-analysis dl.facts dt { color: var(--ink-faint); }
.pg-link-analysis dl.facts dd { margin: 0; font-variant-numeric: tabular-nums; }
.pg-link-analysis .links-title { font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); margin: 0 0 6px; }
.pg-link-analysis ul.links { list-style: none; margin: 0 0 14px; padding: 0; max-height: 220px; overflow-y: auto; }
.pg-link-analysis ul.links li button { all: unset; display: block; width: 100%; cursor: pointer; padding: 5px 0; font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12px; color: var(--ink-soft); border-bottom: 1px solid var(--line); word-break: break-all; }
.pg-link-analysis ul.links li button:hover, .pg-link-analysis ul.links li button:focus-visible { color: var(--ink); }
.pg-link-analysis ul.links .n { color: var(--ink-faint); font-family: "IBM Plex Sans", sans-serif; }
.pg-link-analysis .recenter { display: inline-block; font-size: 13px; font-weight: 600; text-decoration: none; }
.pg-link-analysis .table-wrap { margin-top: 20px; overflow-x: auto; }
.pg-link-analysis table { border-collapse: collapse; width: 100%; font-size: 12.5px; }
.pg-link-analysis caption { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-faint); padding-bottom: 8px; }
.pg-link-analysis th, .pg-link-analysis td { text-align: left; padding: 7px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.pg-link-analysis th { color: var(--ink-faint); font-weight: 500; }
.pg-link-analysis td.mono { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12px; word-break: break-all; }
.pg-link-analysis td.num { font-variant-numeric: tabular-nums; }
.pg-link-analysis .edge { stroke: var(--ink-faint); }
.pg-link-analysis .node-label { fill: var(--ink-soft); font-size: 11px; font-family: "IBM Plex Mono", ui-monospace, monospace; pointer-events: none; paint-order: stroke; stroke: var(--paper-sunk); stroke-width: 3px; }
.pg-link-analysis .dim { opacity: 0.3; }
@media (max-width: 900px) { .pg-link-analysis .workspace { grid-template-columns: 1fr; } .pg-link-analysis .stage svg { aspect-ratio: 4 / 3; } }
/* Media watch card */
.media-card ul { margin: 0 0 12px; padding-left: 18px; font-size: 13.5px; color: var(--ink-soft); }
.media-card li { margin: 4px 0; }
.media-card .flagged { list-style: none; padding: 0; margin: 0 0 12px; }
.media-card .flagged li { padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 13px; }
.media-card .flagged li:last-child { border-bottom: 0; }
.media-card .chip { display: inline-block; font-size: 11.5px; padding: 1px 8px; margin: 2px 6px 0 0; border: 1px solid var(--line); border-radius: 999px; color: var(--ink-soft); }
.media-card .fine { font-size: 12.5px; color: var(--ink-faint); margin: 0; }

/* Page history diff colours (were never defined) */
:root { --del: #a8261d; --ins: #2d6a3e; }

/* Shared helpers that replaced inline styles */
.create-btn { background: var(--accent); }
.create-btn:hover { background: var(--accent-ink); filter: none; }
.btn-primary.wide { justify-content: center; width: 100%; }
.jump { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0 0 24px; font-size: 13.5px; }
.jump a { color: var(--ink-soft); }
section h2 { margin-bottom: 6px; }
.subtitle { max-width: 72ch; }
section .subtitle, h2.block + .subtitle { margin-bottom: 14px; }
.card + .card.stacked, .card.stacked { margin-top: 12px; }
.card.stack { display: grid; gap: 8px; }
.card-title { font-size: 14px; font-weight: 600; margin: 0 0 8px; }
.card-foot { margin: 12px 0 0; font-size: 13.5px; }
.notice.flush { margin: 14px 0 0; }
.empty.flush, .flush { margin: 0; }
.flush-bottom { margin: 6px 0 0; }
.gap-top { margin-top: 16px; }
.new-watch-form.spaced { margin: 0 0 18px; }
.setting-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 0; font-size: 13.5px; }
.setting-row form { margin: 0; }
.setting-group { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.tier-current-badge.muted { color: var(--ink-faint); }
.chip-failed { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: 3px; font-size: 11px; font-weight: 500; background: var(--bad-soft); color: var(--bad); border: 1px solid var(--bad); }
form.bare { margin: 0; }
.text-bad { color: var(--bad); }
.text-faint { color: var(--ink-faint); }
.eyebrow-faint { margin: 0 0 4px; font-size: 13px; color: var(--ink-faint); }
.lede { color: var(--ink-soft); font-size: 14.5px; }
.aside { margin-top: 18px; font-size: 13.5px; color: var(--ink-soft); }
.mini-title { font-size: 13.5px; font-weight: 500; margin-bottom: 4px; }
.plain-list { margin: 0; padding-left: 18px; font-size: 13.5px; color: var(--ink-soft); }
.attn-list a.what { display: block; color: var(--ink); text-decoration: none; }
.attn-list a.what:hover { text-decoration: underline; }
.alert-row:target { border-color: var(--accent); box-shadow: inset 3px 0 0 var(--accent); }

/* List + side panel (Alerts, Watchlist) */
.inbox { display: grid; gap: 16px; align-items: start; }
.inbox.with-panel { grid-template-columns: minmax(0, 1fr) 380px; }
.inbox.with-panel .side-panel { grid-column: 2; grid-row: 1; position: sticky; top: 16px; max-height: calc(100vh - 32px); overflow-y: auto; }
.inbox.with-panel .inbox-list { grid-column: 1; grid-row: 1; min-width: 0; }
@media (max-width: 1100px) { .inbox.with-panel { grid-template-columns: 1fr; } .inbox.with-panel .side-panel, .inbox.with-panel .inbox-list { grid-column: 1; grid-row: auto; position: static; max-height: none; } }
.side-panel { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 8px 24px rgba(27,29,31,.06); }
.panel-head { display: flex; gap: 10px; align-items: flex-start; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--line); }
.panel-title { font-size: 16px; margin: 6px 0 2px; overflow-wrap: anywhere; }
.panel-body { padding: 14px 16px; display: grid; gap: 14px; font-size: 14px; }
.panel-body p { margin: 4px 0 0; overflow-wrap: anywhere; }
.label-sm { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-faint); }
.panel-form { display: grid; gap: 8px; margin: 0; padding-top: 12px; border-top: 1px solid var(--line); }
.panel-form input[type=text], .panel-form select { padding: 8px 10px; background: var(--paper); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font: inherit; font-size: 13.5px; min-width: 0; }
.panel-form .row input[type=text], .panel-form .row select { flex: 1 1 140px; }
.btn-primary, .btn-outline { font: inherit; font-size: 13.5px; }
.btn-primary { padding: 8px 16px; }
.bulk-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 10px; }
.alert-row { grid-template-columns: auto auto minmax(0, 1fr) auto auto; display: grid; align-items: center; gap: 10px 12px; padding: 10px 14px; }
.alert-row input[type=checkbox] { width: 16px; height: 16px; margin: 0; }
.alert-row.sel { border-color: var(--accent); box-shadow: inset 3px 0 0 var(--accent); background: var(--accent-soft); }
.alert-open { display: grid; gap: 2px; min-width: 0; color: var(--ink); text-decoration: none; }
.alert-open:hover .alert-title { text-decoration: underline; }
.alert-open .alert-kind { overflow-wrap: anywhere; }
.pri-bar { width: 4px; align-self: stretch; min-height: 32px; border-radius: 2px; background: var(--line-strong); }
.pri-bar.high { background: var(--bad); }
.pri-bar.medium { background: var(--warn); }
@media (max-width: 640px) { .alert-row { grid-template-columns: auto auto minmax(0, 1fr); } .alert-row .pri, .alert-row .alert-when { grid-column: 3; justify-self: start; margin: 0; } }
.check-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.check-list > li { display: grid; gap: 6px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.check-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 10px; }
.dns { margin-top: 6px; font-size: 12.5px; overflow-wrap: anywhere; }
.dns code { font-family: "IBM Plex Mono", ui-monospace, monospace; word-break: break-all; }
.table-card { padding: 6px 12px; overflow-x: auto; }
.click-rows tr.sel td { background: var(--accent-soft); }
.row-link { font-weight: 600; color: var(--ink); }
.chip-row { display: flex; flex-wrap: wrap; gap: 4px; }
.chip.bad { background: var(--bad-soft); color: var(--bad); }
a.chip { text-decoration: none; }
.nowrap { white-space: nowrap; }
.setup-form textarea { width: 100%; padding: 10px 12px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font: inherit; font-size: 14px; }
.setup-form select, .setup-form input[inputmode=url] { width: 100%; padding: 10px 12px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font: inherit; font-size: 14px; }
.check-choices label { align-items: flex-start; padding: 6px 0; }
.check-choices label.unavailable { color: var(--ink-faint); }
.new-watch-form input[inputmode=url] { width: 100%; padding: 9px 10px; background: var(--paper); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font-size: 13px; }

/* A value with its menu (search, open its page, watch, copy) */
.pivot { position: relative; display: inline-block; max-width: 100%; vertical-align: middle; }
.pivot > summary { list-style: none; cursor: pointer; }
.pivot > summary::-webkit-details-marker { display: none; }
.val { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; min-width: min(16ch, 100%); background: var(--paper-sunk); border: 1px solid transparent; border-radius: 6px; padding: 2px 8px; font-size: 12.5px; }
.pivot > summary:hover .val, .pivot[open] .val { border-color: var(--accent); }
.val .dot { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--ink-faint); }
.dot.t-btc, .dot.t-eth, .dot.t-xmr, .dot.t-altcoin_address { background: var(--cat-wallet); }
.dot.t-telegram_handle, .dot.t-vendor_handle, .dot.t-forum_username, .dot.t-social_handle, .dot.t-discord_id, .dot.t-whatsapp_link { background: var(--cat-handle); }
.dot.t-pgp_key { background: var(--cat-key); }
.dot.t-company_identifier, .dot.t-onion_link, .dot.t-domain_mention { background: var(--cat-company); }
.pivot-menu { margin-top: 4px; min-width: 220px; max-width: 320px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 9px; box-shadow: 0 10px 28px rgba(27,29,31,.16); padding: 6px; display: grid; }
.pivot-menu a, .pivot-menu button { display: block; text-align: left; padding: 7px 10px; border-radius: 6px; color: var(--ink); text-decoration: none; font: inherit; font-size: 13px; background: none; border: 0; cursor: pointer; }
.pivot-menu a:hover, .pivot-menu button:hover, .pivot-menu a:focus-visible, .pivot-menu button:focus-visible { background: var(--accent-soft); color: var(--accent-ink); }
.no-js .copy-defanged { display: none; }

/* Entity page */
.entity-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 20px; margin-bottom: 18px; }
.entity-id { min-width: 0; }
.entity-id h1 { font-size: 20px; margin: 2px 0 4px; }
.entity-id .sub { margin: 0; color: var(--ink-faint); font-size: 13.5px; }
.overview-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
.overview-grid h2 { font-size: 14px; margin: 0 0 8px; }
dl.facts { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; margin: 0; font-size: 13.5px; }
dl.facts dt { color: var(--ink-faint); }
dl.facts dd { margin: 0; font-variant-numeric: tabular-nums; }
.palette-section { padding: 8px 10px 4px; font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-faint); }
.val .wrap { word-break: break-all; }
.conn-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.conn-list li { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 6px 12px; padding: 10px 14px; background: var(--paper-raised); border: 1px solid var(--line); border-radius: 8px; }
.conn-list .conn-meta { font-size: 12.5px; color: var(--ink-faint); padding-top: 3px; }

/* Ransomware */
.hit.watched { border-color: var(--bad); box-shadow: inset 3px 0 0 var(--bad); }
.week-chart { display: block; width: 100%; height: auto; }
.week-chart .axis { stroke: var(--line-strong); }
.week-chart .bar { fill: var(--series-iab); }
.week-chart .bar.zero { fill: var(--line); }
.week-chart .tick { fill: var(--ink-faint); font-size: 11px; font-family: "IBM Plex Mono", ui-monospace, monospace; }
.facets a[aria-current="true"] { background: var(--ink); border-color: var(--ink); color: var(--on-ink); }
.handles { display: grid; gap: 4px; }
.group-row { flex-direction: column; align-items: stretch; }
.group-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }

/* Site card and tracking IDs (Phase 10a) */
td.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
label.check { display: flex; align-items: center; gap: 6px; font-weight: 400; }
.rar { display: inline-block; font-size: 12px; font-weight: 600; border-radius: 999px; padding: 1px 9px; white-space: nowrap; border: 1px solid transparent; }
.rar.rare { background: var(--accent-soft); color: var(--accent-ink); border-color: var(--accent); }
.rar.uncommon { background: var(--warn-soft); color: var(--warn); }
.rar.common { background: var(--paper-sunk); color: var(--ink-faint); }
.rar.only_here { background: var(--paper-raised); color: var(--ink-soft); border-color: var(--line-strong); }
.signal-table tr.common td { color: var(--ink-faint); }
.signal-table td:nth-child(2) { min-width: 13rem; }
.signal-table td.also { display: flex; flex-wrap: wrap; gap: 4px 12px; max-width: 30rem; }
.signal-table td.also a { font-size: 12.5px; }
.link-strength { font-size: 12.5px; font-weight: 600; }
.link-strength.strong { color: var(--accent-ink); }
.link-strength.moderate { color: var(--ink); }
.link-strength.weak { color: var(--ink-faint); font-weight: 500; }
.site-up { color: var(--good); font-weight: 600; }
.site-down { color: var(--bad); font-weight: 600; }
.kpi-tile .kpi-value.site-server { font-size: 18px; line-height: 1.3; overflow-wrap: anywhere; }
.only-here summary { cursor: pointer; font-weight: 600; }
.only-here .plain-list li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: 4px 0; }

/* Uptime strip on the site card (Phase 10b) */
.uptime-summary { margin: 0 0 10px; font-size: 14px; }
.uptime-strip { display: grid; grid-template-columns: repeat(90, minmax(0, 1fr)); gap: 2px; height: 28px; }
.ud { display: inline-block; border-radius: 2px; background: var(--paper-sunk); min-width: 0; }
.uptime-strip .ud { height: 100%; }
.ud.up { background: var(--good); }
.ud.mixed { background: #c99a3b; }
.ud.down { background: var(--bad); }
.ud.none { background: var(--paper-sunk); }
.uptime-axis { display: flex; justify-content: space-between; font-size: 12px; color: var(--ink-faint); margin-top: 4px; }
.uptime-key { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; margin-top: 8px; }
.uptime-key .ud { width: 10px; height: 10px; margin-left: 6px; }

/* Kit families (Phase 10c) */
.fam-title { font-size: 13px; overflow-wrap: anywhere; max-width: 32rem; }
.pg-sites td.also, td.also { display: flex; flex-wrap: wrap; gap: 4px 12px; }

/* Campaigns (Phase 10d) */
.in-campaigns { margin: 6px 0 0; font-size: 13.5px; }
.new-campaign summary, .member-table + details summary { cursor: pointer; font-weight: 600; }
.member-edit { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.member-edit input[type="text"] { min-width: 12rem; flex: 1; }
tr.muted-row td { color: var(--ink-faint); }
.suggest-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.suggest-list li { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 16px; padding: 10px 14px; }
.suggest-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.suggest-list .row-actions { display: flex; gap: 10px; align-items: center; }

/* DROP list on the site card (Phase 10e) */
.drop-note { margin: 8px 0 4px; font-size: 14px; color: var(--bad); }
a.chip.bad { text-decoration: none; }

/* Seller cards (Phase 11a) */
.seller-teaser { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px 20px; margin-bottom: 18px; }
.seller-teaser h2 { font-size: 16px; }
.career { display: grid; gap: 10px; }
.career-row { display: grid; grid-template-columns: minmax(10rem, 16rem) 1fr; gap: 2px 14px; align-items: center; }
.career-site { font-size: 13px; overflow-wrap: anywhere; }
.career-track { position: relative; height: 10px; background: var(--paper-sunk); border-radius: 5px; }
.career-bar { position: absolute; top: 0; bottom: 0; background: var(--series-trend); border-radius: 5px; }
.career-bar.dark { background: var(--ink-faint); }
.career-dates { grid-column: 2; }
@media (max-width: 640px) { .career-row { grid-template-columns: 1fr; } .career-dates { grid-column: 1; } }
.grade { font-size: 12.5px; font-weight: 600; }
.grade.strong { color: var(--accent-ink); }
.grade.likely { color: var(--ink); }
.grade.possible { color: var(--ink-faint); font-weight: 500; }
.moves li { margin: 4px 0; font-size: 14px; }

/* Threat groups (Phase 11c) */
.group-desc { margin: 6px 0; font-size: 14px; max-width: 78ch; white-space: pre-line; overflow-wrap: anywhere; }

/* Lookups (Phase 12) */
.share-page { margin: 0; background: var(--paper); }
.share-box { max-width: 30rem; margin: 0 auto; padding: 12vh 16px 3rem; }
.share-box h1 { font-size: 1.5rem; line-height: 1.2; margin: 0 0 .6rem; }
.share-card { background: var(--raised); border: 1px solid var(--line-strong); border-radius: 6px; padding: 1.2rem; }
.share-card label { display: block; font-weight: 600; margin: 0 0 .3rem; }
.share-card input[type=password] { width: 100%; box-sizing: border-box; padding: .6rem; border: 1px solid var(--line-strong); border-radius: 4px; font: inherit; }
.share-card button { margin-top: .9rem; }
.share-error { border-left: 4px solid var(--bad); background: var(--bad-soft); color: var(--bad); padding: .6rem .8rem; margin: 0 0 1rem; }
.share-fine { font-size: .85rem; color: var(--ink-soft); margin: 1rem 0 0; }
.brand-preview { display: block; max-width: 240px; max-height: 80px; border: 1px solid var(--line-strong); border-radius: 6px; padding: 6px; background: #fff; }
.signal-list { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 8px; }
.signal { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.signal .chip { flex: none; }
.heatmap { display: block; max-width: 100%; height: auto; border: 1px solid var(--line-strong); border-radius: 6px; margin-bottom: 8px; }
.plain-list { margin: 8px 0 0; padding-left: 18px; }
.lookup-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; margin-bottom: 8px; }
.lookup-card { display: grid; gap: 8px; align-content: start; }
.lookup-card .row { align-items: center; gap: 10px; }
.menu-form { margin: 0; }
.menu-form button { width: 100%; }

/* Attack surface (Phase 14) */
.pg-easm .easm-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 16px; }
.pg-easm .tile { display: grid; gap: 2px; text-decoration: none; color: var(--ink); align-content: start; padding: 14px 16px; margin: 0; }
.pg-easm .tile .num { font-size: 26px; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.1; }
.pg-easm .tile .num.warn { color: var(--warn); }
.pg-easm .tile:hover { border-color: var(--accent); }
.pg-easm .easm-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.pg-easm .easm-actions form { margin: 0; }
.pg-easm .easm-inline { display: flex; gap: 6px; margin: 0; }
.pg-easm .kv { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 8px 0; }
.pg-easm .kv dt { color: var(--ink-faint); font-size: 13px; }
.pg-easm .kv dd { margin: 0; overflow-wrap: anywhere; }
.pg-easm .chip.warn { background: var(--warn-soft); color: var(--warn); }
.pg-easm .chip.st-confirmed { background: var(--good-soft); color: var(--good); }
.pg-easm .chip.st-suggested { background: var(--warn-soft); color: var(--warn); }
.pg-easm .chip.st-third_party { background: var(--paper-sunk); color: var(--ink-soft); }
.pg-easm .chip.st-ignored { background: var(--paper); color: var(--ink-faint); border: 1px solid var(--line-strong); }
.pg-easm .mono { overflow-wrap: anywhere; }
@media (max-width: 560px) { .pg-easm .kv { grid-template-columns: 1fr; } }


/* Attack surface issues and risk (EASM-3) */
.pg-easm .risk { display: grid; gap: 8px; margin-bottom: 14px; }
.pg-easm .risk-head { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
.pg-easm .risk-score { display: grid; justify-items: center; min-width: 84px; padding: 8px 12px; border-radius: 8px; background: var(--paper-sunk); }
.pg-easm .risk-score .num { font-size: 34px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.pg-easm .risk-score.band-moderate { background: var(--warn-soft); color: var(--warn); }
.pg-easm .risk-score.band-high, .pg-easm .risk-score.band-critical { background: var(--bad-soft); color: var(--bad); }
.pg-easm .chip.sev-critical, .pg-easm .chip.sev-high { background: var(--bad-soft); color: var(--bad); }
.pg-easm .chip.sev-medium { background: var(--warn-soft); color: var(--warn); }
.pg-easm .chip.sev-low, .pg-easm .chip.sev-info { background: var(--paper-sunk); color: var(--ink-soft); }
.pg-easm .bad { color: var(--bad); }
.pg-easm .issue input[type=text], .pg-easm .issue input[type=date] { padding: 8px 10px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font: inherit; font-size: 14px; max-width: 100%; }
.pg-easm .issue .easm-actions { margin: 8px 0; }

/* Alert refinements (Phase 14) */
.chip.new { background: var(--accent-soft); color: var(--accent-ink); }
.alert-group { list-style: none; border-bottom: 1px solid var(--line); }
.alert-group > details > summary { display: flex; gap: 10px; align-items: center; padding: 10px 12px; cursor: pointer; flex-wrap: wrap; }
.alert-group .alert-list { margin-left: 18px; }
.alert-row.in-group { background: var(--paper); }
.bulk-case { display: inline-flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-left: auto; }
.bulk-case select, .bulk-case input[type=text] { padding: 7px 10px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font: inherit; font-size: 13.5px; max-width: 100%; }

/* Case refinements (Phase 14) */
.case-list { list-style: none; margin: 0; padding: 0; }
.case-row { display: flex; gap: 10px; align-items: flex-start; padding: 10px 4px; border-bottom: 1px solid var(--line); }
.case-row:last-child { border-bottom: 0; }
.case-main { display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: baseline; min-width: 0; }
.case-title { font-weight: 600; overflow-wrap: anywhere; }
.case-sub { flex-basis: 100%; margin: 0; }
.pin-form { margin: 0; }
.pin { background: none; border: 0; cursor: pointer; font-size: 18px; line-height: 1; color: var(--ink-faint); padding: 2px 4px; }
.pin.on { color: var(--accent); }
.chip.on { background: var(--ink); color: var(--on-ink); }
.tag-edit { display: inline-block; margin-left: 6px; }
.close-case form, .tag-edit form { display: grid; gap: 8px; padding-top: 8px; }
.changes-since ul { margin: 6px 0 0 18px; padding: 0; }

/* Accounts and sign-in (Phase 15) */
.chip-pending { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: 3px; font-size: 11px; font-weight: 500; background: var(--warn-soft); color: var(--warn); border: 1px solid var(--warn); }
.row-actions { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; }
.new-watch-form select { width: 100%; padding: 9px 10px; background: var(--paper); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font-size: 13px; }
.side-who { margin: 0; display: flex; flex-direction: column; gap: 1px; font-size: 12.5px; overflow-wrap: anywhere; }
.side-who b { color: var(--ink); font-weight: 600; }
.side-who span { color: var(--ink-faint); font-size: 12px; }
details.dev-keys > summary { cursor: pointer; list-style-position: outside; }
details.dev-keys > summary h2 { display: inline; margin: 0; }
details.dev-keys[open] > summary { margin-bottom: 8px; }
details.dev-signin { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--line); font-size: 13.5px; }
details.dev-signin summary { cursor: pointer; color: var(--ink-soft); }
details.dev-signin[open] summary { margin-bottom: 4px; }
.public-card .btn-outline.wide { justify-content: center; width: 100%; }

/* Attack surface grades (Phase 16c) */
.pg-easm .easm-tiles.grades .tile .num { font-size: 28px; font-weight: 700; }
.pg-easm .grade-a .num { color: var(--good); }
.pg-easm .grade-b .num, .pg-easm .grade-c .num { color: var(--ink); }
.pg-easm .grade-d .num { color: var(--warn); }
.pg-easm .grade-e .num, .pg-easm .grade-f .num { color: var(--bad); }

dl.kv { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 8px 0; }
dl.kv dt { color: var(--ink-faint); font-size: 13px; }
dl.kv dd { margin: 0; overflow-wrap: anywhere; }
.btn-outline.danger:hover, .watch-list button.danger:hover { border-color: var(--bad); color: var(--bad); }
.btn-primary.danger { background: var(--bad); border-color: var(--bad); }

/* Bad press events in the Watchlist panel: a stacked card per event, not the one-line row other checks use */
.findings-panel .event { display: grid; gap: 6px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.findings-panel .event:last-child { border-bottom: none; }
.event-title { font-weight: 600; font-size: 14px; line-height: 1.35; overflow-wrap: anywhere; }
.event-read { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; font-size: 12.5px; color: var(--ink-soft); }
.event-label { font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--accent-ink); }
.event-dot { color: var(--ink-faint); }
.event-quote { flex-basis: 100%; font-style: italic; color: var(--ink-faint); overflow-wrap: anywhere; }
.event-meta { font-size: 12px; color: var(--ink-faint); }
.event-why summary { cursor: pointer; font-size: 12.5px; color: var(--accent-ink); }
.event-why .plain-list { margin: 6px 0 0; }
.event-sources { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 8px; }
.event-sources li { display: grid; gap: 1px; overflow-wrap: anywhere; }
@media (max-width: 560px) { .event-dot { display: none; } }

.event-decision { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; }
.event-decide summary { cursor: pointer; font-size: 12.5px; color: var(--accent-ink); }
.event-decide form { display: grid; gap: 8px; margin-top: 8px; max-width: 520px; }
.event-decide label { display: grid; gap: 3px; font-size: 12.5px; color: var(--ink-soft); }
.event-decide select, .event-decide textarea { font: inherit; padding: 6px 8px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--raised); }
.event-decide button { justify-self: start; }


/* Home (Overview): number tiles, two-column cards */
.subline { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin: -6px 0 16px; color: var(--ink-faint); font-size: 13.5px; }
.tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 12px; }
.tile { background: var(--paper-raised); border: 1px solid var(--line); border-radius: 6px; padding: 12px 14px; display: flex; flex-direction: column; min-height: 112px; color: var(--ink); text-decoration: none; }
.tile:hover { border-color: var(--accent); }
.tile .k { font-size: 12px; color: var(--ink-faint); }
.tile .v { font-size: 28px; font-weight: 600; line-height: 1.2; font-variant-numeric: tabular-nums; }
.tile .s { font-size: 12px; color: var(--ink-faint); }
.tile .more { margin-top: auto; align-self: flex-end; font-size: 12px; color: var(--accent); }
.cols { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; align-items: start; }
.hp { margin-bottom: 0; background: var(--paper-raised); border: 1px solid var(--line); border-radius: 6px; padding: 14px 16px; min-width: 0; }
.hp-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 8px; }
.hp-head h2 { font-size: 14px; margin: 0; }
.hp-head a { font-size: 12.5px; color: var(--accent); text-decoration: none; }
.hp .sub { color: var(--ink-faint); font-size: 12px; margin: 0 0 8px; }
.watch-rows { list-style: none; margin: 0; padding: 0; }
.watch-rows li { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 13.5px; }
.watch-rows li:last-child { border-bottom: 0; }
.watch-rows .state { font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.watch-rows .state.on { color: var(--good); }
.watch-rows .state.off { color: var(--ink-faint); }
@media (max-width: 900px) { .cols { grid-template-columns: 1fr; } }

.due-list.flat { padding: 0; border: 0; background: none; }
.hp .trend-chart { height: 120px; }
.hp .empty { padding: 8px 0; color: var(--ink-faint); font-size: 13.5px; }
.watch-rows li { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; align-items: baseline; }
.watch-rows .wr-main { min-width: 0; }
.watch-rows .wr-main .fine { display: block; font-weight: 400; }
.watch-rows .wr-note { grid-column: 1 / -1; margin: 2px 0 0; }

/* Collection health */
.legend { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 12.5px; color: var(--ink-faint); margin: 0 0 12px; }
.ch-table { width: 100%; border-collapse: collapse; }
.ch-table th { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-faint); text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--line); }
.ch-table td { padding: 10px 8px; border-bottom: 1px solid var(--line); vertical-align: top; font-size: 13.5px; }
.ch-table tr:last-child td { border-bottom: 0; }
.ch-name b { display: block; }
.ch-name .fine { display: block; max-width: 44ch; }
.st { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; padding: 1px 9px; border-radius: 999px; white-space: nowrap; }
.st::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.st.healthy { background: var(--good-soft); color: var(--good); }
.st.late { background: var(--warn-soft); color: var(--warn); }
.st.gap { background: var(--bad-soft); color: var(--bad); }
.hours { display: flex; align-items: flex-end; gap: 2px; height: 30px; min-width: 190px; }
.hours i { flex: 1; min-height: 3px; border-radius: 2px; background: var(--accent); opacity: .85; }
.hours i.zero { background: var(--line-strong); opacity: .6; height: 3px !important; }
.hours-axis { display: flex; justify-content: space-between; font-size: 11px; color: var(--ink-faint); }
@media (max-width: 760px) { .ch-table thead { display: none; } .ch-table td { display: block; border-bottom: 0; padding: 4px 0; } .ch-table tr { display: block; border-bottom: 1px solid var(--line); padding: 8px 0; } }

/* One page pattern on every page: title, section tabs, filter chips, main block, table.
   Section menus (their aria-label ends in "sections", or is "Sections" / "What to search") are underlined tabs; every other .pills row is a row of filter chips. */
h1 { font-size: 24px; line-height: 1.25; }
.page-head { align-items: flex-start; margin-bottom: 16px; }
.page-head p { font-size: 13.5px; color: var(--ink-faint); max-width: 72ch; }
.card { border-radius: 6px; padding: 16px 18px; }
.pills[aria-label$="sections"], .pills[aria-label="Sections"], .pills[aria-label="What to search"] { gap: 2px; border-bottom: 1px solid var(--line); margin-bottom: 16px; }
.pills[aria-label$="sections"] .pill, .pills[aria-label="Sections"] .pill, .pills[aria-label="What to search"] .pill { border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--ink-faint); padding: 8px 14px; margin-bottom: -1px; font-size: 14px; }
.pills[aria-label$="sections"] .pill:hover, .pills[aria-label="Sections"] .pill:hover, .pills[aria-label="What to search"] .pill:hover { color: var(--ink); border-bottom-color: var(--line-strong); }
.pills[aria-label$="sections"] .pill.on, .pills[aria-label="Sections"] .pill.on, .pills[aria-label="What to search"] .pill.on { background: transparent; color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
.pill { padding: 4px 13px; font-size: 13.5px; }
.pill.on { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-ink); font-weight: 600; }
th { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: 0.06em; }
tbody tr:hover td { background: rgba(90, 75, 177, 0.03); }

.tb-theme { width: 32px; height: 32px; border: 1px solid var(--line); border-radius: 8px; background: var(--paper-raised); color: var(--ink-soft); cursor: pointer; display: grid; place-items: center; }
.tb-theme:hover { color: var(--ink); border-color: var(--line-strong); }
.no-js .tb-theme { display: none; }
.run-line { display: block; margin-top: 3px; max-width: 34ch; }

.impact-list { list-style: none; margin: 0 0 12px; padding: 0; }
.impact-list li { display: grid; gap: 6px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.impact-list li:last-child { border-bottom: 0; }
.impact-list .inline-form.row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0; }
.impact-list input[type=text] { flex: 1 1 220px; min-width: 0; padding: 7px 10px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--paper); color: var(--ink); font: inherit; font-size: 13.5px; }
.correct-form textarea { width: 100%; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--paper); color: var(--ink); font: inherit; font-size: 13.5px; }
.correct-form input[type=text] { width: 100%; padding: 7px 10px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--paper); color: var(--ink); font: inherit; font-size: 13.5px; }
.correct-form form { display: grid; gap: 8px; }

.origins .origin-count { font-size: 15px; margin: 4px 0 8px; }
.origin-groups { list-style: none; margin: 8px 0; padding: 0; display: grid; gap: 8px; }
.origin-groups li { padding: 8px 10px; border: 1px solid var(--line); border-radius: 6px; font-size: 13.5px; }
.origin-form { display: inline; margin: 0 0 0 6px; }
.origin-form .btn-outline { padding: 3px 10px; font-size: 12px; }

/* Working-on investigation (top bar) */
.tb-case { position: relative; }
.tb-case summary { list-style: none; display: flex; align-items: center; gap: 7px; max-width: 230px; padding: 4px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--paper-raised); color: var(--ink-soft); cursor: pointer; }
.tb-case summary::-webkit-details-marker { display: none; }
.tb-case summary:hover, .tb-case[open] summary { border-color: var(--line-strong); color: var(--ink); }
.tb-case-label { display: flex; flex-direction: column; min-width: 0; font-size: 12px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tb-case-label small { font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-faint); }
.tb-case-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 40; width: min(320px, 90vw); padding: 8px; display: grid; gap: 6px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper-raised); box-shadow: 0 8px 24px rgba(0,0,0,.14); }
.tb-case-menu ul { list-style: none; margin: 0; padding: 0; max-height: 260px; overflow-y: auto; display: grid; gap: 2px; }
.tb-case-menu li form { margin: 0; }
.tb-case-menu li button, .tb-case-wait { width: 100%; text-align: left; border: 0; border-radius: 6px; background: transparent; padding: 6px 8px; font: inherit; font-size: 13px; color: var(--ink); cursor: pointer; }
.tb-case-menu li button:hover { background: var(--paper); }
.tb-case-menu li button[aria-current="true"] { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
.tb-case-wait { color: var(--ink-faint); cursor: default; }
.tb-case-open, .tb-case-all { font-size: 12.5px; padding: 4px 8px; color: var(--accent); text-decoration: none; }
.tb-case-menu .link-btn { padding: 4px 8px; font-size: 12.5px; }
@media (max-width: 760px) { .tb-case summary { max-width: 150px; } .tb-case-menu { right: -40px; } }

/* Saved searches */
.save-search { margin: 8px 0 16px; }
.sq-def { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.sq-versions { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.sq-versions li { padding: 8px 10px; border: 1px solid var(--line); border-radius: 6px; font-size: 13.5px; }
.sq-corpus { width: 100%; border-collapse: collapse; font-size: 13px; }
.sq-corpus th, .sq-corpus td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--line); }
.sq-matches { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.sq-matches li { padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px; }
.sq-matches .snippet { margin: 4px 0 6px; font-size: 13.5px; color: var(--ink-soft); overflow-wrap: anywhere; }

/* Inventories and goods matching */
.inv-errors { width: 100%; border-collapse: collapse; font-size: 13px; }
.inv-errors td, .inv-errors th { text-align: left; padding: 5px 8px; border-bottom: 1px solid var(--line); vertical-align: top; }
.cand-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.cand { border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; display: grid; gap: 8px; }
.cand-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.cand-cols h4 { margin: 0 0 4px; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-faint); }
.cand-cols ul { margin: 0; padding-left: 16px; font-size: 13px; }
.cand .shared { color: var(--good); } .cand .conflict { color: var(--bad); } .cand .missing { color: var(--ink-soft); }
.cand-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: end; }
.cand-actions form { margin: 0; display: flex; flex-wrap: wrap; gap: 6px; align-items: end; }

.ref-thumb { object-fit: cover; border: 1px solid var(--line); border-radius: 4px; margin: 2px 4px 2px 0; vertical-align: middle; background: var(--paper); }
.cand-photo { display: flex; gap: 10px; align-items: center; }

/* Alerts: groups and the tick bar */
.alert-group > details > summary { list-style: none; }
.alert-group > details > summary::-webkit-details-marker { display: none; }
.group-text { display: grid; gap: 2px; min-width: 0; flex: 1; }
.chev { width: 10px; height: 10px; border-right: 2px solid var(--ink-faint); border-bottom: 2px solid var(--ink-faint); transform: rotate(-45deg); margin: 0 6px; transition: transform .15s; }
.alert-group > details[open] > summary .chev { transform: rotate(45deg); }
.alert-group > details > summary:hover { background: var(--paper); }
.bulk-picked { display: none; position: sticky; bottom: 0; z-index: 5; margin: 12px 0 0; padding: 10px 14px; border: 1px solid var(--line-strong); border-radius: 10px; background: var(--paper-raised); box-shadow: 0 -4px 16px rgba(0,0,0,.08); }
.bulk-picked.has-picks, .no-js .bulk-picked { display: flex; }
.alert-row { grid-template-columns: auto auto minmax(0, 1fr) auto; }
@media (max-width: 640px) { .alert-row { grid-template-columns: auto auto minmax(0, 1fr); } }
/* Watchlist: a dot per check for whether it has run */
.chip.ck::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 6px; background: var(--good); }
.chip.ck.wait::before { background: var(--line-strong); }
.chip.ck.off::before { background: transparent; border: 1px solid var(--ink-faint); box-sizing: border-box; }

.impact-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 10px 0; }
.impact-tiles .tile { border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; display: grid; gap: 2px; }
.impact-tiles .k { font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-faint); }
.impact-tiles .v { font-size: 22px; font-weight: 600; font-variant-numeric: tabular-nums; }

/* Chip roles: grey is a type (Forum, Company), purple a reference (CASE-0003), green/amber/red/blue only a state or a risk, always with a word */
.chip.ref { background: var(--accent-soft); color: var(--accent-ink); font-family: "IBM Plex Mono", ui-monospace, monospace; font-weight: 500; text-decoration: none; }
.chip.info { background: var(--info-soft); color: var(--info); }
.chip.warn { background: var(--warn-soft); color: var(--warn); }
.chip.good, .chip.ok { background: var(--good-soft); color: var(--good); }
.hold-chip { background: var(--warn-soft); color: var(--warn); border: 1px solid var(--warn); border-radius: 999px; padding: 1px 9px; font-size: 12px; font-weight: 600; }
.stripe-new { box-shadow: inset 3px 0 0 var(--accent); }
/* A strip above a list: the count, how many are new, and the one number that matters */
.strip { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: baseline; padding: 8px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper-raised); font-size: 13px; color: var(--ink-soft); }
.strip b { color: var(--ink); font-variant-numeric: tabular-nums; }
.strip .bad { color: var(--bad); } .strip .good { color: var(--good); } .strip .warnc { color: var(--warn); }
/* Explain this page */
.explain-btn { position: fixed; right: 16px; bottom: 16px; z-index: 40; display: flex; align-items: center; gap: 8px; height: 40px; padding: 0 16px 0 10px; border-radius: 999px; border: 0; background: var(--accent); color: var(--on-accent); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; box-shadow: 0 6px 18px rgba(0,0,0,.18); }
.explain-btn b { width: 20px; height: 20px; border-radius: 50%; background: var(--on-accent); color: var(--accent); display: grid; place-items: center; font-size: 13px; }
.explain-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(420px, 94vw); z-index: 55; background: var(--paper-raised); border-left: 1px solid var(--line); box-shadow: -8px 0 30px rgba(0,0,0,.12); padding: 18px 20px; overflow: auto; transform: translateX(105%); transition: transform .2s; }
.explain-drawer.open { transform: none; }
.explain-drawer h2 { margin: 0 0 8px; font-size: 16px; }
.explain-drawer dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; font-size: 13px; }
.explain-drawer dt { color: var(--ink-faint); } .explain-drawer dd { margin: 0; }
.explain-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
@media (prefers-reduced-motion: reduce) { .explain-drawer { transition: none; } }

.guide { position: fixed; inset: 0; z-index: 70; background: rgba(18,20,28,.45); display: flex; align-items: center; justify-content: center; padding: 16px; }
.guide[hidden] { display: none; }
.guide-box { width: min(560px, 100%); background: var(--paper-raised); border: 1px solid var(--line); border-radius: 14px; padding: 22px 24px; box-shadow: 0 20px 50px rgba(0,0,0,.25); }
.guide-box h2 { margin: 4px 0 6px; font-size: 18px; }
.guide-box p { color: var(--ink-soft); }
.guide-step { display: none; } .guide-step.on { display: block; }
.guide-pic { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; margin: 12px 0; }
.guide-pic div { border: 1px solid var(--line); border-radius: 8px; padding: 10px; font-size: 12.5px; color: var(--ink-soft); }
.guide-pic b { display: block; color: var(--ink); margin-bottom: 2px; }
.guide-dots { display: flex; gap: 6px; margin: 14px 0; }
.guide-dots i { width: 8px; height: 8px; border-radius: 50%; background: var(--line-strong); }
.guide-dots i.on { background: var(--accent); }
.guide-foot { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.explain-key { margin-top: 12px; border-top: 1px solid var(--line); padding-top: 10px; }

/* Overview: brief, attention level, chart, matrix, source strip */
.brief { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 14px; margin-bottom: 14px; }
@media (max-width: 860px) { .brief { grid-template-columns: 1fr; } }
.brief-list { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 8px; }
.brief-list li { display: grid; grid-template-columns: 10px 1fr; gap: 10px; align-items: baseline; }
.brief-list a { color: var(--ink); text-decoration: none; }
.brief-list a:hover { text-decoration: underline; }
.bdot { width: 8px; height: 8px; border-radius: 50%; background: var(--line-strong); }
.brief-list .bad .bdot { background: var(--bad); } .brief-list .warn .bdot { background: var(--warn); }
.attention .level { font-size: 30px; font-weight: 700; line-height: 1.1; margin: 2px 0 6px; }
.attention.bad .level { color: var(--bad); } .attention.warn .level { color: var(--warn); } .attention.good .level { color: var(--good); }
.strip .src { display: inline-flex; align-items: baseline; gap: 6px; }
.strip .src::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--good); align-self: center; }
.strip .src.late::before { background: var(--warn); } .strip .src.gap::before { background: var(--bad); }
.strip .src small { color: var(--ink-faint); font-size: 11.5px; }
.grid-2.charts { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 14px; margin: 14px 0; }
@media (max-width: 860px) { .grid-2.charts { grid-template-columns: 1fr; } }
.chart { width: 100%; height: auto; display: block; }
.chart text { font-size: 11px; fill: var(--ink-faint); }
.chart .cgrid line { stroke: var(--line); } .chart .caxis { stroke: var(--line-strong); }
.chart .cval { fill: var(--ink); font-weight: 600; font-size: 12px; }
.chart rect.s1, .legend i.s1 { fill: var(--s1); background: var(--s1); }
.chart rect.s2, .legend i.s2 { fill: var(--s2); background: var(--s2); }
.chart rect.s3, .legend i.s3 { fill: var(--s3); background: var(--s3); }
.chart rect.s4, .legend i.s4 { fill: var(--s4); background: var(--s4); }
.chart rect.s-other, .legend i.s-other { fill: var(--s-other); background: var(--s-other); }
.legend { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; color: var(--ink-soft); margin-top: 6px; }
.legend i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; }
.chart-table { margin-top: 8px; font-size: 13px; }
.rmatrix { display: grid; grid-template-columns: 120px repeat(4, minmax(0, 1fr)); gap: 4px; font-size: 12px; margin-bottom: 8px; }
.rmatrix .h { color: var(--ink-faint); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; align-self: end; padding: 0 4px; }
.rmatrix .row-lab { align-self: center; font-weight: 600; color: var(--ink-soft); font-size: 12px; }
.rmatrix .cell { border: 1px solid var(--line); border-radius: 6px; background: var(--paper-sunk); text-align: center; padding: 8px 4px; min-height: 48px; display: grid; place-items: center; }
.rmatrix .cell a { color: inherit; text-decoration: none; display: grid; }
.rmatrix .cell b { font-size: 18px; font-variant-numeric: tabular-nums; } .rmatrix .cell b.zero { color: var(--ink-faint); font-weight: 400; }
.rmatrix .cell small { font-size: 10.5px; color: inherit; opacity: .85; }
.rmatrix .cell.hi { background: var(--bad-soft); border-color: var(--bad); color: var(--bad); }
.rmatrix .cell.md { background: var(--warn-soft); color: var(--warn); }
:root { --s1: #2f6fb5; --s2: #c2641a; --s3: #6f63c8; --s4: #1f8a4c; --s-other: #8a93a6; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --s1: #5b93d8; --s2: #cf7d35; --s3: #8f82e3; --s4: #3f9f66; --s-other: #6b7488; } }
:root[data-theme="dark"] { --s1: #5b93d8; --s2: #cf7d35; --s3: #8f82e3; --s4: #3f9f66; --s-other: #6b7488; }

/* Alerts: risk mix and filters */
.mixcard { padding: 10px 14px; margin: 0 0 12px; }
.mix-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; margin-bottom: 6px; }
.mixbar { display: flex; height: 12px; border-radius: 6px; overflow: hidden; background: var(--paper-sunk); gap: 2px; }
.mixbar .seg, .mixkey .seg { background: var(--s-other); display: block; }
.mixbar .seg.bad, .mixkey .seg.bad { background: var(--bad); } .mixbar .seg.warn, .mixkey .seg.warn { background: var(--warn); }
.mixbar .seg.info, .mixkey .seg.info { background: var(--s1); }
.mixkey { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 6px; font-size: 12.5px; }
.mixkey a { color: var(--ink-soft); text-decoration: none; } .mixkey a:hover { text-decoration: underline; }
.mixkey i.seg { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 5px; vertical-align: -1px; }
.alert-filters { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: end; margin: 0 0 12px; }
.alert-filters label { display: grid; gap: 2px; font-size: 12px; color: var(--ink-faint); }
.why-this { border-top: 1px solid var(--line); padding-top: 10px; }

/* Investigation overview */
.ovgrid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 14px; align-items: start; }
@media (max-width: 900px) { .ovgrid { grid-template-columns: 1fr; } }
.ovcol { display: grid; gap: 14px; }
.summary-text { margin: 0; color: var(--ink-soft); }
.cstrip text { font-size: 11px; fill: var(--ink-faint); } .cstrip .rowlab { fill: var(--ink-soft); font-family: "IBM Plex Mono", ui-monospace, monospace; }
.cstrip .span { stroke: var(--line-strong); stroke-width: 2; }
.cstrip circle { stroke: var(--paper-raised); stroke-width: 2; }
.cstrip circle.s1 { fill: var(--s1); } .cstrip circle.s2 { fill: var(--s2); } .cstrip circle.s4 { fill: var(--s4); }
.ovlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.ovlist li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: baseline; padding: 6px 0; border-bottom: 1px solid var(--line); }
.ovlist li:last-child { border-bottom: 0; }
.ovfacts { display: grid; gap: 10px; }
.ovfacts > div { display: grid; grid-template-columns: 110px auto 1fr; gap: 8px; align-items: baseline; }
.ovfacts .k { font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-faint); } .ovfacts b { font-size: 20px; font-variant-numeric: tabular-nums; }
.progress { height: 10px; border-radius: 5px; background: var(--paper-sunk); overflow: hidden; } .progress span { display: block; height: 100%; background: var(--s4); border-radius: 0 5px 5px 0; }
.ovmap svg { max-width: 100%; height: auto; max-height: 260px; }

/* Watchlist: a strip of the last 14 days per entry */
.heat { display: inline-grid; grid-template-columns: repeat(14, 8px); gap: 2px; vertical-align: middle; }
.heat i { width: 8px; height: 14px; border-radius: 2px; background: var(--paper-sunk); display: block; }
.heat i.l1 { background: color-mix(in oklab, var(--s1) 35%, var(--paper-sunk)); } .heat i.l2 { background: color-mix(in oklab, var(--s1) 65%, var(--paper-sunk)); } .heat i.l3 { background: var(--s1); }
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin: 0 0 14px; }
.stat { display: grid; gap: 2px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper-raised); }
.stat .k { font-size: 11.5px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-faint); }
.stat .v { font-size: 24px; font-weight: 600; font-variant-numeric: tabular-nums; line-height: 1.1; display: flex; align-items: baseline; gap: 8px; }
.stat .v small { font-size: 12px; font-weight: 500; color: var(--ink-faint); }
.stat .delta { font-size: 12px; color: var(--ink-soft); }

/* Entity overview */
.hbars { display: grid; gap: 8px; }
.hbar { display: grid; grid-template-columns: minmax(120px, 200px) 1fr 40px; align-items: center; gap: 10px; font-size: 13px; }
.hbar .lab { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.hbar .track { height: 12px; background: var(--paper-sunk); border-radius: 4px; overflow: hidden; display: block; }
.hbar .fill { display: block; height: 100%; background: var(--s1); border-radius: 0 4px 4px 0; } .hbar .fill.other { background: var(--s-other); }
.hbar .num { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 12px; text-align: right; color: var(--ink-soft); }
.cstrip .spanbar { fill: var(--s1); opacity: .85; }

/* Search: filters in force, bars, tick boxes */
.filters { margin: 0 0 8px; } .filters > summary { cursor: pointer; font-size: 13px; color: var(--ink-soft); margin: 6px 0; }
.active-filters .chip a { margin-left: 4px; text-decoration: none; font-weight: 600; }
a.hbar { color: inherit; text-decoration: none; } a.hbar:hover .lab { text-decoration: underline; }
.hit { position: relative; } .hit-pick { position: absolute; top: 12px; right: 12px; } .hit-pick input { width: 18px; height: 18px; }
.hit:has(.hit-pick) { padding-right: 44px; }

/* Cases list as a table */
.case-table { width: 100%; border-collapse: collapse; }
.case-table th, .case-table td { padding: 10px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.case-table thead th { font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-faint); font-weight: 600; white-space: nowrap; }
.case-table thead a { color: inherit; text-decoration: none; } .case-table thead a:hover { color: var(--ink); text-decoration: underline; }
.case-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.case-table .case-cell { font-weight: 400; display: grid; gap: 4px; }
.case-table tbody tr:last-child th, .case-table tbody tr:last-child td { border-bottom: 0; }
.table-wrap { overflow-x: auto; }
a.stat { text-decoration: none; color: inherit; } a.stat:hover { border-color: var(--line-strong); }

/* Attack surface: second row of tabs, one Decide area per issue, severity bar */
.pills.sub { margin-top: -6px; } .pills.sub .pill { font-size: 12.5px; padding: 4px 10px; }
.decide { border-top: 1px solid var(--line); margin-top: 10px; padding-top: 8px; display: grid; gap: 6px; }
.decide-head { display: flex; gap: 8px; align-items: baseline; }
.decide-label { margin: 6px 0 0; font-size: 11.5px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-faint); }
.sevbar { display: flex; gap: 2px; height: 26px; margin: 10px 0 4px; }
.sevbar .seg { flex-basis: 0; min-width: 28px; display: flex; align-items: center; justify-content: center; border-radius: 4px; font-size: 12px; font-weight: 600; text-decoration: none; }
.sevbar .seg.sev-critical { background: var(--bad-soft); color: var(--bad); } .sevbar .seg.sev-high { background: var(--warn-soft); color: var(--warn); }
.sevbar .seg.sev-medium { background: var(--paper-sunk); color: var(--ink); border: 1px solid var(--line-strong); } .sevbar .seg.sev-low { background: var(--paper-sunk); color: var(--ink-soft); }

/* Settings: one section at a time */
.settings-tabs { margin-bottom: 18px; }
section[hidden] { display: none; }

/* Actors: one value box, three ways to use it */
.new-watch-form .actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; }
.choices { margin: 12px 0 0; } .choices dt { font-weight: 600; } .choices dd { margin: 0 0 8px; color: var(--ink-soft); font-size: 13.5px; }

/* Collection health: tiles and rows carry the same colour as the status */
.tiles .tile.good .v { color: var(--good); } .tiles .tile.warn .v { color: var(--warn); } .tiles .tile.bad .v { color: var(--bad); }
.ch-table tr.row-gap td:first-child { box-shadow: inset 3px 0 0 var(--bad); } .ch-table tr.row-late td:first-child { box-shadow: inset 3px 0 0 var(--warn); }

a.stat.on { border-color: var(--accent); }

/* Leaks: count tiles */
.stats.mini { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); margin: 8px 0; }
.stat.hot .v { color: var(--warn); }

/* Victim safeguards */
.ev-withheld { margin: 6px 0; padding: 8px 10px; border: 1px solid var(--warn); border-radius: 8px; background: var(--warn-soft); font-size: 13.5px; }
.ev-withheld.released { border-color: var(--line-strong); background: var(--paper-sunk); }
.victim-form > summary { cursor: pointer; font-size: 12.5px; color: var(--ink-soft); }

/* the bar that says a page is showing one project only */
.project-bar { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin: 0 0 16px; padding: 9px 14px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--paper-sunk); font-size: 13.5px; }
.project-bar form { margin: 0; }
.project-bar .link-btn { background: none; border: 0; padding: 0; color: var(--accent); text-decoration: underline; cursor: pointer; font: inherit; }

/* Project overview: the attack-surface grade tiles */
.stat.grade-a .v { color: var(--good); }
.stat.grade-d .v { color: var(--warn); }
.stat.grade-e .v, .stat.grade-f .v { color: var(--bad); }

/* Comments on evidence, findings and tasks */
.comments { margin-top: 10px; }
.comments > summary { cursor: pointer; font-size: 13px; color: var(--ink-faint); }
.comment-list { list-style: none; margin: 8px 0; padding: 0; display: grid; gap: 8px; }
.comment-list li { border-left: 2px solid var(--line); padding-left: 10px; }
.comment-body { white-space: pre-wrap; overflow-wrap: anywhere; }
.comments textarea { width: 100%; }
.stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; margin: 0 0 18px; }
a.stat { color: inherit; text-decoration: none; }
a.stat:hover { border-color: var(--accent); }
.stat.bad .v { color: var(--bad); }
textarea.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 13.5px; width: 100%; box-sizing: border-box; }
.rule-caret, .rule-explain { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 13px; margin: 6px 0; white-space: pre-wrap; overflow-x: auto; }
.rule-caret { color: var(--bad); }
.rule-bars { width: 100%; max-width: 480px; height: 56px; display: block; margin: 8px 0; }
.rule-bars rect { fill: var(--accent); }
.rule-diff .added { text-decoration: underline; color: var(--good); }
.rule-diff .removed { text-decoration: line-through; color: var(--bad); }
.lang-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px 16px; margin-bottom: 10px; }
.lang-choice { display: flex; gap: 8px; align-items: flex-start; font-size: 14px; }
.lang-choice.off { opacity: .55; }
details.row-edit { margin-top: 6px; }
details.row-edit form { display: grid; gap: 6px; margin: 6px 0; }
label.check { display: flex; gap: 8px; align-items: center; font-size: 13.5px; margin: 4px 0 10px; }
form.row-form { display: flex; gap: 6px; align-items: center; margin: 4px 0; flex-wrap: wrap; }
form.row-form input[type=text] { min-width: 10rem; }
fieldset.row { border: 0; padding: 0; margin: 6px 0; display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
/* official notices (maritime warnings): the text keeps its line breaks but wraps to the card, so a long ReCAAP narrative never runs off a phone screen */
pre.advisory-text { white-space: pre-wrap; overflow-wrap: anywhere; word-break: normal; font-family: inherit; font-size: 14px; margin: 0; max-height: 360px; overflow: auto; }

/* Today: exposure and risk strip */
.risk-strip .risk-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 12px; margin-top: 10px; }
.risk-tile { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 6px; background: var(--raised); color: var(--ink); text-decoration: none; }
.risk-tile b { font-size: 26px; line-height: 1.1; font-variant-numeric: tabular-nums; }
.risk-tile span { font-size: 14px; }
.risk-tile small { color: var(--ink-soft); font-size: 12.5px; }
.risk-tile.hot { border-color: var(--bad); background: var(--bad-soft); }
.risk-tile.warn { border-color: var(--warn); background: var(--warn-soft); }
.risk-tile:hover, .risk-tile:focus-visible { border-color: var(--ink-soft); }

/* Industries */
.industry-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin-top: 12px; }
.industry-card { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 6px; background: var(--raised); color: var(--ink); text-decoration: none; }
a.industry-card:hover, a.industry-card:focus-visible { border-color: var(--ink-soft); }
.industry-card.planned { background: var(--paper-sunk); color: var(--ink-soft); }
.industry-card h2 { margin: 0; font-size: 16px; }
.industry-card p { margin: 0; font-size: 13.5px; }
.industry-card .industry-stat { font-size: 24px; font-weight: 600; font-variant-numeric: tabular-nums; }
.industry-card .industry-stat small { font-size: 12.5px; font-weight: 400; color: var(--ink-soft); }

/* Context menu */
.tb-context summary { max-width: 340px; }
.tb-ctx-h { margin: 6px 8px 2px; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-faint); }
@media (max-width: 760px) { .tb-context summary { max-width: 170px; } .tb-context .tb-case-menu { position: fixed; left: 8px; right: 8px; top: 56px; width: auto; max-height: calc(100vh - 72px); overflow-y: auto; } }

/* Where evidence will land */
.adding-to { margin: 0 0 6px; font-size: 12.5px; color: var(--ink-soft); }
.adding-to b { color: var(--ink); }
.adding-to-none { color: var(--warn); }

/* Provider page */
.provider-assign { display: flex; align-items: center; gap: 8px; margin: 6px 0 0; flex-wrap: wrap; }
.provider-assign select { width: auto; min-width: 200px; flex: 1 1 200px; }
.provider-assign button { width: auto; }
.setup-form input[type="email"] { width: 100%; padding: 10px 12px; background: var(--paper-raised); border: 1px solid var(--line-strong); border-radius: 6px; color: var(--ink); font-size: 14px; }
