/* Korpex — dense, clean, attorney-facing. No external assets. The working tokens
   below take the brand's values (the --kx-* tokens further down; SaaS phase 1). */

:root {
  --ink: #16213A;
  --ink-soft: #5E6B82;
  --line: #DDE3EC;
  --line-soft: #EDF0F5;
  --paper: #F4F6F9;
  --card: #ffffff;
  --accent: #0B1F3A;
  --accent-soft: #EEF1F6;
  --good: #1e7a3c;
  --good-bg: #e7f4ec;
  --warn: #9a6b00;
  --warn-bg: #fdf3dd;
  --bad: #b02a2a;
  --bad-bg: #fbeaea;
  --priv: #7a1f4d;
  --priv-bg: #f9e9f1;
  --mono: ui-monospace, "Cascadia Mono", Consolas, monospace;
}

* { box-sizing: border-box; }
/* every size is in rem: this one setting scales the whole workbench (16px from
   2026-10-22; 13px read too small in investigation reports). The scroll padding keeps
   a followed link's target (a citation, #new-investigation) below the sticky top bar. */
html { font-size: 16px; scroll-padding-top: 4.5rem; }
body {
  margin: 0;
  font-family: "IBM Plex Sans", "Segoe UI", system-ui, -apple-system, sans-serif;
  color: var(--ink);
  background: var(--paper);
  line-height: 1.5;
}
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 1.35rem; margin: 0 0 .25rem; }
h2 { font-size: 1.05rem; margin: 1.4rem 0 .5rem; }
.section-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 1.4rem 0 .5rem; }
.section-head h2 { margin: 0; }
h3 { font-size: .95rem; margin: 1rem 0 .4rem; }

.muted { color: var(--ink-soft); }
.small { font-size: .85rem; }
.mono { font-family: var(--mono); font-size: .85rem; }

table.data {
  width: 100%; background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  border-collapse: separate; border-spacing: 0; overflow: hidden;
}
table.data th, table.data td {
  border-bottom: 1px solid var(--line-soft); padding: .55rem .8rem;
  text-align: left; vertical-align: top;
}
table.data th {
  background: #F7F8FA; font-weight: 600; font-size: .78rem; color: var(--ink-soft);
  border-bottom-color: var(--line); white-space: nowrap;
}
table.data tbody tr:last-child td { border-bottom: 0; }
/* a table wider than its column scrolls inside this box, not the whole page */
.table-scroll { overflow-x: auto; }
/* columns keep a readable width and the box scrolls; from where the sidebar sits beside the
   page the table's own columns decide (the end of this file) */
.table-scroll > table.data { min-width: 68rem; }
.table-scroll > table.data.admin-table { min-width: 56rem; }
.admin-scroll { overflow-x: auto; }
table.data tr:hover td { background: #FAFBFD; }

.badge {
  display: inline-block; padding: .05rem .45rem; border-radius: 9px;
  font-size: .75rem; font-weight: 600; white-space: nowrap;
}
.badge-responsive { background: var(--good-bg); color: var(--good); }
.badge-not_responsive { background: #eceff3; color: var(--ink-soft); }
.badge-unsure { background: var(--warn-bg); color: var(--warn); }
.badge-priv { background: var(--priv-bg); color: var(--priv); }
.badge-fail { background: var(--bad-bg); color: var(--bad); }
.badge-ok { background: var(--good-bg); color: var(--good); }
.badge-warn { background: var(--warn-bg); color: var(--warn); }
.badge-stage { background: var(--accent-soft); color: var(--accent); }
.badge-deferred { background: var(--warn-bg); color: var(--warn); }

.card {
  background: var(--card); border: 1px solid var(--line);
  border-radius: 14px; padding: 1rem 1.25rem; margin-bottom: .9rem;
}
.card .card-head {
  display: flex; gap: .6rem; align-items: baseline; flex-wrap: wrap;
}
.card .card-head .subject { font-weight: 600; }
.card .meta { color: var(--ink-soft); font-size: .85rem; }
.card .reasoning {
  margin: .5rem 0; padding: .5rem .7rem;
  background: var(--accent-soft); border-left: 3px solid var(--accent);
  border-radius: 0 4px 4px 0;
}
.chips { display: flex; gap: .35rem; flex-wrap: wrap; margin: .35rem 0; }
.chip {
  display: inline-block; background: #fff; border: 1px solid var(--line);
  border-radius: 10px; padding: .05rem .5rem; font-size: .78rem;
  font-family: var(--mono);
}
.chip.chip-bad { border-color: var(--bad); color: var(--bad); }
.confidence { font-weight: 600; }

.tag-controls { display: inline-flex; gap: .4rem; align-items: center; }
input[type=text], input[type=date], textarea, select {
  font: inherit; width: 100%; padding: .5rem .7rem;
  border: 1px solid var(--kx-input); border-radius: 10px; background: #fff; color: var(--ink);
}
input[type=text]:focus, input[type=date]:focus, textarea:focus, select:focus {
  outline: 2px solid var(--kx-signal); outline-offset: 1px;
}
textarea.expansions { font-family: var(--mono); font-size: .85rem; min-height: 9rem; }
form.inline { display: flex; gap: .5rem; align-items: flex-start; }
form.inline input[type=text] { flex: 1; }
/* Ask: billed totals (BILLING_MARKUP x AI cost) */
.cost-summary { display: flex; flex-wrap: wrap; gap: .75rem; align-items: stretch; margin: 1rem 0 .25rem; }
.cost-tile { background: var(--card); border: 1px solid var(--line); border-radius: 6px;
  padding: .5rem .9rem; min-width: 9rem; }
.cost-label { font-size: .75rem; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .03em; }
.cost-value { font-size: 1.35rem; font-weight: 600; font-variant-numeric: tabular-nums; }
/* Ask: deleted sessions stay listed with their costs (migration 0016), behind
   the list's "Show deleted (N)" link */
table.data td.row-action { white-space: nowrap; }
table.data td.row-action form { margin: 0; }
table.data tr.deleted td { color: var(--ink-soft); }
form.session-actions { margin: 0; }
.session-deleted form { margin-top: .5rem; }

pre.body {
  white-space: pre-wrap; word-wrap: break-word;
  background: #fff; border: 1px solid var(--line-soft); border-radius: 4px;
  padding: .7rem .9rem; font-family: inherit; font-size: .95rem; margin: .4rem 0;
}
details.quoted { margin: .5rem 0; }
details.quoted summary {
  cursor: pointer; color: var(--ink-soft); font-size: .85rem;
}
details.quoted pre {
  white-space: pre-wrap; overflow-wrap: anywhere; background: #f7f8fa; border: 1px dashed var(--line);
  border-radius: 4px; padding: .6rem .8rem; color: var(--ink-soft);
  font-family: inherit; font-size: .88rem;
}

.headers { width: 100%; border-collapse: collapse; margin: .3rem 0 .8rem; }
.headers th {
  text-align: right; color: var(--ink-soft); font-weight: 500;
  padding: .12rem .6rem .12rem 0; white-space: nowrap; width: 7rem;
  vertical-align: top; font-size: .85rem;
}
.headers td { padding: .12rem 0; overflow-wrap: anywhere; }  /* a long address wraps, on a phone too */

.statgrid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(135px, 1fr));
  gap: .6rem; margin: .6rem 0 1rem;
}
.stat {
  background: var(--card); border: 1px solid var(--line); border-radius: 6px;
  padding: .5rem .7rem; text-align: center;
}
.stat .n { font-size: 1.3rem; font-weight: 600; color: var(--accent); }
.stat .l { font-size: .75rem; color: var(--ink-soft); text-transform: uppercase; }
.stat.stat-wide { grid-column: span 2; text-align: left; }
.stat.stat-wide .n, .stat.stat-wide .l { text-align: center; }
.stat ol.reasons { margin: .3rem 0 0; padding-left: 1.1rem; font-size: .78rem; color: var(--ink); }
.stat ol.reasons .num { color: var(--ink-soft); }
/* the staff Ingest page: each tile with a short title, its internal name and its
   exact definition, left-aligned (routes/dashboard.py, case_data.STAFF) */
.statgrid.explained { grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr)); }
.statgrid.explained .stat, .statgrid.explained .stat.stat-wide .n,
.statgrid.explained .stat.stat-wide .l { text-align: left; }
.stat .t { margin-top: .1rem; font-size: .9rem; font-weight: 600; color: var(--ink); }
.stat .p { margin: .25rem 0 .35rem; font-size: .85rem; line-height: 1.45; color: var(--ink); overflow-wrap: anywhere; }
.stat .x { margin: .3rem 0 0; font-size: .78rem; line-height: 1.4; color: var(--ink-soft); overflow-wrap: anywhere; }
details.tech-details { margin-top: 1.6rem; }
details.tech-details > summary { font-family: var(--kx-display); color: var(--kx-ink); }
@media (max-width: 40rem) {
  .statgrid .stat.stat-wide { grid-column: auto; }
}

/* Case data, the firm's figures (routes/dashboard.py), in the reading page's design (2026-11-04,
   the owner: "a bunch of boxes ... the same design as the new layout"): one white sheet in Inter
   (main.main-brief), the sections under small-caps headings, the processing line a quiet word with a
   glyph, the figures a ledger (each with its meaning beside it), the lists hairline rows that open */
.kx-app main.main-brief { padding: 0; max-width: none; --kx-font: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
  font-family: var(--kx-font); }
/* its content one column (--sheet-col) in the middle of the sheet, every part on its left edge */
.bf-sheet { --sheet-col: 60rem; min-height: calc(100vh - var(--kx-top-h)); box-sizing: border-box; background: var(--rp-card);
  padding: 2.25rem max(clamp(1.25rem, 4vw, 3.5rem), calc((100% - var(--sheet-col)) / 2)) 5rem; color: var(--rp-ink-2); }
.bf-sheet .page-intro { margin-bottom: 0; }
.kx-app .bf-sheet h1 { margin: 0; font: 600 1.6rem/1.25 var(--br-serif); letter-spacing: -.01em; color: var(--rp-ink); }
.bf-sheet .page-intro p { margin: .5rem 0 0; font-size: .92rem; line-height: 1.55; color: var(--rp-muted); max-width: 64ch; }
.kx-app .bf-sheet h2 { margin: 0; font: 600 .76rem/1.3 var(--kx-font); letter-spacing: .1em; text-transform: uppercase;
  color: var(--rp-teal-text); }
.kx-app .bf-sheet h3 { margin: 1.75rem 0 0; font: 600 .95rem/1.4 var(--kx-font); color: var(--rp-ink); }
/* the processing line: a quiet word, its glyph the state (never a coloured box) */
.cd-status { display: flex; align-items: center; gap: .6rem; margin: 1.5rem auto 0; padding: 0; font-weight: 500;
  font-size: .92rem; color: var(--rp-ink); }
.cd-status::before { content: ""; flex: none; box-sizing: border-box; width: .65rem; height: .65rem; border-radius: 50%;
  background: var(--rp-line); }
.cd-status-done::before { background: var(--kx-good); }
.cd-status-running::before { background: var(--run); animation: pill-pulse 2s ease-in-out infinite; }
.cd-status-warn::before { background: none; border: 1.5px dashed var(--br-mark); }
@media (prefers-reduced-motion: reduce) {
  .cd-status-running::before { animation: none; }
}
.bf-sheet .cd-status + .small { margin-top: .35rem; }
.cd-block { margin-top: 3rem; }
.cd-intro { margin: .55rem 0 1.25rem; max-width: 64ch; font-size: .9rem; line-height: 1.55; color: var(--rp-muted); }
/* the number of a section: plain, beside its heading */
.cd-count { margin-left: .5rem; font: 600 .76rem/1.3 var(--kx-font); letter-spacing: 0; color: var(--rp-ink-2);
  font-variant-numeric: tabular-nums; }
/* the figures: a ledger. The total, less the duplicate copies, are the distinct items (under a rule);
   the emails and the other files are what they are made of (set in); families and threads after */
.cd-ledger { margin: 0; }
.cd-row { display: grid; grid-template-columns: minmax(0, 17rem) 7.5rem minmax(0, 1fr); gap: .25rem 2rem;
  align-items: baseline; padding: .95rem 0; border-top: 1px solid var(--rp-line-soft); }
.cd-row:last-child { border-bottom: 1px solid var(--rp-line-soft); }
.cd-row dt { font-weight: 600; font-size: .92rem; color: var(--rp-ink); }
.cd-row dd { margin: 0; }
.cd-row .cd-n { text-align: right; font-size: 1.15rem; font-weight: 600; color: var(--rp-ink); font-variant-numeric: tabular-nums; }
.cd-row .cd-x { font-size: .84rem; line-height: 1.5; color: var(--rp-muted); }
.cd-k-duplicates .cd-n::before { content: "\2212\2009"; color: var(--rp-muted); font-weight: 400; }
.cd-row.cd-k-distinct_items { border-top: 1px solid var(--rp-ink); }
.cd-k-emails dt, .cd-k-attachments dt { padding-left: 1.25rem; font-weight: 500; }
.cd-k-emails .cd-n, .cd-k-attachments .cd-n { font-weight: 500; font-size: 1.05rem; }
.cd-row.cd-k-families { margin-top: 1.5rem; }
@media (max-width: 43.74rem) {
  .cd-row { grid-template-columns: minmax(0, 1fr) auto; }
  .cd-row .cd-x { grid-column: 1 / -1; }
}
.cd-num { flex: none; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--rp-ink); }
/* the tables: hairlines, a rule under the head (the reading page's Key facts) */
.bf-sheet table.data { background: none; border: 0; border-radius: 0; font-size: .88rem; line-height: 1.5; }
.bf-sheet table.data th { background: none; padding: 0 1rem .6rem 0; font: 600 .68rem/1.2 var(--kx-font); letter-spacing: .08em;
  text-transform: uppercase; color: var(--rp-muted); border-bottom: 1px solid var(--rp-ink); }
.bf-sheet table.data td { padding: .75rem 1rem .75rem 0; border-bottom: 1px solid var(--rp-line-soft); }
.bf-sheet table.data tbody tr:last-child td { border-bottom: 1px solid var(--rp-line-soft); }
.bf-sheet table.data tr:hover td { background: none; }
.kx-app .bf-sheet .cd-cn { color: var(--rp-teal-text); font-weight: 600; font-variant-numeric: tabular-nums; text-decoration: none; }
.kx-app .bf-sheet .cd-cn:hover { text-decoration: underline; }
table.cd-failed td { vertical-align: top; overflow-wrap: anywhere; }
table.cd-failed .cd-cn { white-space: nowrap; }
table.cd-failed td:nth-child(2) { min-width: 8rem; }
table.cd-failed .cd-more { display: block; }
/* the files whose text could not be read: the list's exports, then each reason a row that opens to
   its files */
.cd-export { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin: 0 auto 1rem; }
.cd-export-label { font-size: .84rem; color: var(--rp-muted); margin-right: .25rem; }
.cd-reasons { border-top: 1px solid var(--rp-line); }
details.cd-reason { border-bottom: 1px solid var(--rp-line); }
details.cd-reason > summary { list-style: none; cursor: pointer; display: flex; align-items: baseline; gap: 1.25rem;
  padding: 1rem 0; font-size: .95rem; color: var(--rp-ink); }
details.cd-reason > summary::-webkit-details-marker { display: none; }
details.cd-reason > summary > span:first-child { flex: 1; min-width: 0; overflow-wrap: anywhere; }
details.cd-reason > summary:hover > span:first-child { color: var(--rp-teal-text); }
details.cd-reason > summary .kx-icon { flex: none; align-self: center; color: var(--rp-muted);
  transform: rotate(-90deg); transition: transform .18s ease; }
details.cd-reason[open] > summary .kx-icon { transform: none; }
details.cd-reason > summary:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; border-radius: 3px; }
details.cd-reason table.cd-files { margin: .25rem 0 1.25rem; width: 100%; }
table.cd-files .cd-subject { display: block; color: var(--rp-muted); }
table.cd-files td:last-child { white-space: nowrap; }
.cd-files-more { margin: 0 0 1.25rem; }
/* on a phone each failed item is a small block (control number / item / what went wrong, each
   under its column name), so nothing hides behind a sideways scroll */
@media (max-width: 40rem) {
  table.cd-failed, table.cd-failed tbody, table.cd-failed tr, table.cd-failed td {
    display: block; width: auto; min-width: 0; }
  table.cd-failed { overflow: hidden; }
  table.cd-failed thead { position: absolute; width: 1px; height: 1px; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; }
  .bf-sheet table.cd-failed tr { padding: .6rem 0; border-bottom: 1px solid var(--rp-line-soft); }
  .bf-sheet table.cd-failed td, .bf-sheet table.cd-failed tbody tr:last-child td { padding: .15rem 0; border-bottom: 0; }
  table.cd-failed td::before { content: attr(data-label); display: block; font-size: .68rem; letter-spacing: .06em;
    text-transform: uppercase; font-weight: 600; color: var(--rp-muted); }
}

ul.tree, ul.tree ul { list-style: none; margin: 0; padding-left: 1.1rem; }
ul.tree li {
  position: relative; padding-left: .9rem; margin: .15rem 0;
}
ul.tree li::before {
  content: ""; position: absolute; left: 0; top: .65em;
  width: .6rem; border-top: 1px solid var(--line);
}
.thread-row.current { background: var(--accent-soft); }
.section-note {
  background: var(--warn-bg); border: 1px solid #ecd9a8; color: var(--warn);
  border-radius: 4px; padding: .4rem .7rem; margin: .6rem 0; font-size: .88rem;
}
.ok { color: var(--good); }
.err { color: var(--bad); }
.noncompliant-bar {
  background: var(--bad); color: #fff; padding: .45rem 1rem; font-size: .9rem;
  text-align: center;
}
.noncompliant {
  background: var(--bad-bg); color: var(--bad); border: 2px solid var(--bad);
  border-radius: 4px; padding: .45rem .75rem; margin: .6rem 0;
}

/* --- additions: layout, results, doc view, dashboard ----------------------- */
.nowrap { white-space: nowrap; }
.num, table.data td.num, table.data th.num { text-align: right; font-variant-numeric: tabular-nums; }
.crumbs { font-size: .85rem; color: var(--ink-soft); margin-bottom: .4rem; }
.crumbs a { color: var(--ink-soft); }
.page-head { display: flex; gap: 1rem; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; }
.page-head .actions { display: flex; gap: .4rem; flex-wrap: wrap; }
.query-text {
  font-size: 1.05rem; margin: .2rem 0 .3rem; padding: .35rem .6rem;
  background: var(--card); border: 1px solid var(--line); border-radius: 4px;
}
.filters { display: flex; gap: .3rem; flex-wrap: wrap; margin: .8rem 0 .6rem; }
.filters a {
  border: 1px solid var(--line); border-radius: 12px; padding: .1rem .65rem;
  background: var(--card); font-size: .82rem;
}
.filters a.on { background: var(--accent); color: #fff; border-color: var(--accent); }

.jcard.flagged { border-color: var(--bad); box-shadow: inset 3px 0 0 var(--bad); }
.jcard.priv { border-color: #d9b3c6; box-shadow: inset 3px 0 0 var(--priv); }
.jcard .card-head .subject { font-size: 1rem; }
.flag {
  background: var(--bad-bg); color: var(--bad); border-radius: 4px;
  padding: .3rem .6rem; margin: .4rem 0; font-size: .85rem;
}
.cites { margin: .35rem 0 0; padding: 0; list-style: none; }
.cites li { margin: .15rem 0; font-size: .88rem; }
.cites .q { font-style: italic; color: var(--ink); }
.cites .why { color: var(--bad); font-size: .8rem; }
.card-foot {
  display: flex; justify-content: space-between; align-items: center; gap: .6rem;
  flex-wrap: wrap; margin-top: .5rem; padding-top: .4rem;
  border-top: 1px solid var(--line-soft); font-size: .8rem; color: var(--ink-soft);
}
.tag-controls form { display: inline-flex; gap: .3rem; margin: 0; }
.kx-btn.on-agree { background: var(--good-bg); color: var(--good); border-color: var(--good); }
.kx-btn.on-disagree { background: var(--bad-bg); color: var(--bad); border-color: var(--bad); }
.terms { display: flex; flex-wrap: wrap; gap: .3rem; margin: .3rem 0; }
.term {
  background: var(--accent-soft); color: var(--accent); border-radius: 3px;
  padding: .05rem .45rem; font-size: .85rem;
}
.term.q { background: var(--accent); color: #fff; }
.term.add { background: var(--good-bg); color: var(--good); }
.term.del { background: var(--bad-bg); color: var(--bad); text-decoration: line-through; }
details.panel {
  background: var(--card); border: 1px solid var(--line); border-radius: 6px;
  padding: .5rem .9rem; margin: .6rem 0;
}
details.panel > summary { cursor: pointer; font-weight: 600; }
.kv { border-collapse: collapse; font-size: .85rem; }
.kv th { text-align: left; color: var(--ink-soft); font-weight: 500; padding: .1rem .8rem .1rem 0; vertical-align: top; }
.kv td { padding: .1rem 0; }

.doc-layout { display: grid; grid-template-columns: minmax(0, 60rem) minmax(20rem, 1fr); gap: 1rem; align-items: start; }
@media (max-width: 920px) { .doc-layout { grid-template-columns: minmax(0, 1fr); } }
.side .card h3 { margin-top: 0; }
.priv-banner {
  background: var(--priv-bg); color: var(--priv); border: 1px solid #e3bfd2;
  border-radius: 4px; padding: .5rem .8rem; margin: .5rem 0;
}
mark { background: #fff1a8; color: inherit; padding: 0 .05rem; border-radius: 2px; }
ul.thread { list-style: none; margin: 0; padding: 0; font-size: .85rem; }
ul.thread li { padding: .2rem .3rem; border-radius: 3px; }
ul.thread li.current { background: var(--accent-soft); font-weight: 600; }
.d1 { padding-left: .9rem !important; } .d2 { padding-left: 1.8rem !important; }
.d3 { padding-left: 2.7rem !important; } .d4 { padding-left: 3.6rem !important; }
.d5 { padding-left: 4.5rem !important; } .d6 { padding-left: 5.4rem !important; }
.d7 { padding-left: 6.3rem !important; } .d8 { padding-left: 7.2rem !important; }
ul.tree li.current > .node { background: var(--accent-soft); font-weight: 600; border-radius: 3px; }

/* attachment text (ATTACHMENTS-SPEC §6): parts, extractor labels, cited passages */
.part-nav { display: flex; gap: .7rem; align-items: center; flex-wrap: wrap; margin: .3rem 0; font-size: .88rem; }
.part-nav select { font: inherit; padding: .1rem .3rem; border: 1px solid var(--line); border-radius: 4px; }
pre.attachment-text { max-height: none; }
.xlabel {
  font-family: var(--mono); font-size: .82em; color: var(--ink-soft);
  background: #eef0f4; border-radius: 2px; padding: 0 .15rem;
}
.cite-anchor { scroll-margin-top: 3rem; }
.cite-anchor:target + mark { outline: 2px solid var(--accent); }
table.file-meta th { font-weight: 500; }
table.file-meta td { word-break: break-word; }
ul.tree { font-size: .85rem; padding-left: 0; }
.occ td, .occ th { font-size: .8rem; }

meter.stage { width: 100%; height: .8rem; }
tr.bad td { background: var(--bad-bg); }
.small-json { font-family: var(--mono); font-size: .75rem; color: var(--ink-soft); white-space: pre-wrap; word-break: break-word; }
.ids a { margin-right: .25rem; }

/* --- investigation assistant (Ask) and conversations ---------------------- */
.field-label { display: block; font-weight: 600; margin: .2rem 0 .3rem; }
.ask-form textarea { font-size: .95rem; }
.ask-form fieldset.scope {
  border: 1px solid var(--line-soft); border-radius: 4px; margin: .6rem 0; padding: .4rem .7rem .6rem;
}
.ask-form legend { font-size: .85rem; color: var(--ink-soft); padding: 0 .3rem; }
.custodian-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: .1rem .8rem;
  max-height: 11rem; overflow-y: auto; padding: .2rem 0; font-size: .85rem;
}
label.check { white-space: nowrap; }
.dates { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; margin-top: .4rem; }
.dates input[type=date] {
  font: inherit; padding: .2rem .4rem; border: 1px solid var(--line); border-radius: 4px;
}
.form-foot { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; margin-top: .5rem; }
ul.problems { margin: .3rem 0 0; padding-left: 1.2rem; }

.turn { margin-bottom: 1.1rem; }
.turn.flagged { border-color: #e2b4b4; }
.turn-head { display: flex; gap: .5rem; align-items: baseline; flex-wrap: wrap; }
.turn-n { font-weight: 600; font-size: 1rem; color: var(--accent); }
p.question {
  font-size: 1.02rem; margin: .35rem 0; padding: .35rem .6rem; white-space: pre-wrap;
  background: var(--accent-soft); border-left: 3px solid var(--accent); border-radius: 0 4px 4px 0;
}
.mtext { white-space: pre-wrap; word-wrap: break-word; margin: .2rem 0; }
.turn h3 { border-bottom: 1px solid var(--line-soft); padding-bottom: .15rem; }
.validation-flags ul { margin: .3rem 0 0; padding-left: 1.2rem; }
/* the report's citation check, in the reader's terms (2026-10-22) */
.verify-summary {
  border: 1px solid var(--line); border-left-width: 4px; border-radius: 4px;
  padding: .5rem .8rem; margin: .6rem 0; font-size: .92rem;
}
.verify-summary p { margin: .2rem 0; }
.verify-summary.verify-ok { border-color: var(--good); background: var(--good-bg); }
.verify-summary.verify-bad { border-color: var(--bad); background: var(--bad-bg); }
.verify-summary.verify-warn { border-color: #e2c27a; background: #fffaf0; }
.verify-summary ul.problems { margin: .3rem 0 .2rem; padding-left: 1.2rem; }
.verify-summary details.tech { margin-top: .4rem; font-size: .8rem; color: var(--ink-soft); }
.verify-summary details.tech ul { margin: .2rem 0 0; padding-left: 1.2rem; }
/* severity (2026-10-22): red = the check found the report does not match a document;
   amber = nothing could be checked (no citation, no stated basis): the assistant's
   own reading. The list on top names each item once; the item says it again. */
.verified-note { color: var(--ink-soft); font-size: .85rem; font-weight: 600; }
.verified-note.all { color: var(--good); }
.checklist { list-style: none; margin: .3rem 0 .2rem; padding: 0; }
.checklist li {
  display: grid; grid-template-columns: auto 1fr; gap: .2rem .6rem; align-items: baseline;
  padding: .4rem .6rem; border-radius: 4px; margin: .25rem 0; background: #fff;
}
.checklist li.sev-warn { border-left: 4px solid var(--warn); }
.checklist li.sev-bad { border-left: 4px solid var(--bad); }
.checklist .sev {
  font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  padding: .1rem .4rem; border-radius: 3px; white-space: nowrap;
}
.checklist .sev-warn .sev { background: var(--warn-bg); color: var(--warn); }
.checklist .sev-bad .sev { background: var(--bad-bg); color: var(--bad); }
.checklist .where a { font-weight: 600; }
.checklist .said { font-style: italic; }
.checklist .what { grid-column: 2; color: var(--ink-soft); font-size: .9rem; }
.callout { margin: .4rem 0 .15rem; padding: .45rem .7rem; border-radius: 4px; font-size: .9rem; }
.callout strong { display: block; margin-bottom: .1rem; }
.callout-warn { background: var(--warn-bg); border-left: 4px solid var(--warn); color: #5c4300; }
.callout-bad { background: var(--bad-bg); border-left: 4px solid var(--bad); color: #6d1414; }
.cites .callout { font-size: .85rem; }
.claim.has-bad { border-left-color: var(--bad); background: #fffafa; }
.claim.has-warn { border-left-color: var(--warn); background: #fffdf6; }
ol.against > li.has-warn, tr.has-warn td { background: #fffdf6; }
ol.against > li.has-bad, tr.has-bad td { background: #fffafa; }
.claim-n { font-size: .78rem; font-weight: 600; color: var(--ink-soft); }
.item-n { font-weight: 700; color: var(--accent); font-size: .9rem; white-space: nowrap; }
.section-intro { margin: -.2rem 0 .4rem; color: var(--ink-soft); font-size: .88rem; }
ol.against { list-style: none; margin: .2rem 0; padding: 0; }
ol.against > li {
  display: grid; grid-template-columns: 2.4rem 1fr; padding: .45rem .6rem .45rem 0;
  margin: .3rem 0; border-radius: 4px;
}
ol.against > li > .item-n { grid-row: 1 / span 3; text-align: right; padding-right: .6rem; }
ol.against > li > :not(.item-n) { grid-column: 2; }
.cites .matched-note { color: var(--good); font-size: .8rem; }
.cites .aside-note, .acard .aside-note { color: var(--ink-soft); font-size: .8rem; font-style: italic; }
.cites li.cite-aside .q { color: var(--ink-soft); text-decoration: line-through; text-decoration-color: var(--line); }
:target { scroll-margin-top: 1rem; }
/* followed from the list on top: the item stands out */
li:target, tr:target { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 3px; }
li:target, tr:target td { background: var(--accent-soft); }
.recap-note { color: var(--ink-soft); background: #f7f8fa; border-color: var(--line); }
.badge-server { background: #eceff3; color: var(--ink-soft); }
.badge-st-supported { background: var(--good-bg); color: var(--good); }
.badge-st-contradicted { background: var(--bad-bg); color: var(--bad); }
.badge-st-mixed { background: var(--warn-bg); color: var(--warn); }
.badge-st-no_evidence_found { background: #eceff3; color: var(--ink-soft); }
.badge-st-unknown { background: var(--bad-bg); color: var(--bad); }
.badge-kind-fact { background: var(--accent); color: #fff; }
.badge-kind-inference { background: #efe7f7; color: #5b2e86; }
.badge-kind-absence { background: #eceff3; color: var(--ink-soft); border: 1px dashed var(--ink-soft); }
.badge-kind-unknown { background: var(--bad-bg); color: var(--bad); }
.finding { margin: .6rem 0 .9rem; }
.finding-head { display: flex; gap: .45rem; align-items: baseline; }
.fnum { font-weight: 600; }
.proposition { font-weight: 600; font-size: .98rem; }
ol.claims { list-style: none; margin: .3rem 0 0; padding: 0; }
.claim {
  margin: .35rem 0; padding: .35rem .6rem; border-radius: 0 4px 4px 0;
  border-left: 3px solid var(--line);
}
.claim-head { display: flex; gap: .45rem; align-items: baseline; flex-wrap: wrap; }
.claim-fact { border-left-color: var(--accent); background: #fbfcfe; }
.claim-inference { border-left: 3px dashed #7b4fa6; background: #fcf9fe; }
.claim-inference .mtext { font-style: italic; }
.claim-absence { border-left: 3px dotted var(--ink-soft); background: #fafafa; }
.claim-unknown { border-left-color: var(--bad); }
.flags { display: inline-flex; gap: .25rem; flex-wrap: wrap; }
.cite-n { font-family: var(--mono); font-size: .78rem; color: var(--ink-soft); }
.cites .who { font-size: .8rem; color: var(--ink-soft); }
table.timeline td { font-size: .88rem; }
table.timeline td .cites { margin: 0; }
ul.limitations { margin: .2rem 0; padding-left: 1.2rem; }
ul.limitations li.server { list-style: square; color: var(--ink-soft); }
ol.steps { margin: .3rem 0; padding-left: 1.6rem; }
.turn-progress { border-style: dashed; }
.turn-progress.done { border-style: solid; color: var(--ink-soft); }
/* how long an investigation takes, and that it runs on without the page */
.expect {
  background: var(--accent-soft); border: 1px solid #cfdaea; border-radius: 4px;
  padding: .45rem .75rem; margin: .6rem 0; font-size: .9rem;
}
.turn-progress .expect { margin-bottom: 0; }
.report-label {
  margin-top: .8rem; font-size: .75rem; font-weight: 600; letter-spacing: .04em;
  text-transform: uppercase; color: var(--accent);
}
table.data tr.active td { background: #fbfcfe; }
/* the home page: the matter to investigate, the matters' tools */
.ask-form select {
  font: inherit; width: 100%; padding: .35rem .5rem; margin-bottom: .5rem;
  border: 1px solid var(--line); border-radius: 4px; background: #fff;
}
.cost { margin-top: .6rem; }
.acard { border-color: var(--accent); box-shadow: inset 3px 0 0 var(--accent); }
.acard.flagged { border-color: var(--bad); box-shadow: inset 3px 0 0 var(--bad); }

.conv-layout {
  display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 1rem; align-items: start;
}
@media (max-width: 920px) { .conv-layout { grid-template-columns: minmax(0, 1fr); } }
.member.priv { border-color: #d9b3c6; box-shadow: inset 3px 0 0 var(--priv); }
.digest { background: #fbfaf6; border: 1px dashed #c9bf9a; }
.badge-machine { background: #f3eedb; color: #6b5a12; text-transform: uppercase; letter-spacing: .03em; }
ul.statements, ul.participants { list-style: none; margin: .2rem 0; padding: 0; }
ul.statements li { padding: .35rem 0; border-bottom: 1px solid var(--line-soft); }
ul.statements li.bad { background: var(--bad-bg); }
.digest .q { font-style: italic; }

/* Narrow screens: wrap the top bar, let wide tables scroll inside themselves. */
@media (max-width: 760px) {
  table.data, table.kv { display: block; overflow-x: auto; }
  form.inline { flex-direction: column; align-items: stretch; }
}

/* --- Korpex brand: sign-in pages, settings, team (SaaS phase 1) ---------------------
   Tokens from the marketing site (korpex-site README). Fonts fall back to system
   faces until the self-hosted Space Grotesk / IBM Plex Sans / Archivo files land. */
:root {
  --kx-ink: #0B1F3A; --kx-deep: #122B4E; --kx-paper: #F4F6F9; --kx-text: #16213A;
  --kx-signal: #E39B2D; --kx-signal-text: #8A5A0E; --kx-signal-bg: #FFF1D6;
  --kx-slate: #52607A; --kx-muted: #5E6B82; --kx-line: #DDE3EC; --kx-input: #C9D2DE;
  --kx-good: #1E7A3C; --kx-good-bg: #E7F4EC; --kx-bad: #B02A2A; --kx-bad-bg: #FBEAEA;
  /* the reading page's type on every page (2026-11-05): Inter for text, the serif for titles */
  --kx-font: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
  --kx-display: "Source Serif 4", Georgia, "Times New Roman", serif;
  --kx-mark: "Archivo", "Segoe UI", system-ui, sans-serif;
}
body.kx { margin: 0; background: var(--kx-paper); color: var(--kx-text); font-family: var(--kx-font); }
.kx-wordmark { font-family: var(--kx-mark); font-weight: 700; letter-spacing: .06em; }
.kx-eyebrow { display: flex; align-items: center; gap: .5rem; margin: 0; font-size: .8rem; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--kx-signal); }
.kx-eyebrow::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: var(--kx-signal); }

.auth { min-height: 100vh; display: flex; flex-wrap: wrap; }
.auth-brand { flex: 1 1 26rem; box-sizing: border-box; background: var(--kx-ink); color: #D6DEEA; padding: 3rem;
  display: flex; flex-direction: column; justify-content: space-between; gap: 3rem; }
.auth-logo { display: flex; align-items: center; gap: .75rem; color: #fff; text-decoration: none; font-size: 1.2rem; }
.auth-pitch { display: flex; flex-direction: column; gap: 1.25rem; max-width: 30rem; }
.auth-headline { margin: 0; font-family: var(--kx-display); font-size: 2.6rem; line-height: 1.06; font-weight: 700;
  letter-spacing: -.02em; color: #fff; text-wrap: pretty; }
.auth-lead { margin: 0; font-size: 1.05rem; line-height: 1.6; color: #B8C2D4; }
.auth-note { margin: 0; font-size: .85rem; color: #8A97AD; }
.auth-main { flex: 1 1 26rem; box-sizing: border-box; display: flex; align-items: center; justify-content: center;
  padding: 3rem 1.5rem; }
.auth-form { width: 100%; max-width: 27rem; display: flex; flex-direction: column; gap: 1.1rem; }
.auth-title { margin: 0; font-family: var(--kx-display); font-size: 1.75rem; font-weight: 600; color: var(--kx-ink); }
.auth-sub { margin: 0; color: var(--kx-slate); line-height: 1.55; }
.auth-foot { margin: 0; color: var(--kx-slate); text-align: center; }
.auth a, .kx-settings a { color: var(--kx-ink); }
.auth a:hover, .kx-settings a:hover { color: var(--kx-signal-text); }
.auth .auth-logo, .auth .auth-logo:hover { color: #fff; }  /* the wordmark on the ink panel */

.kx-form { display: flex; flex-direction: column; gap: 1rem; }
/* a form's button keeps its own width (a column form would stretch it across) */
.kx-form > .kx-btn { align-self: flex-start; }
/* fields and their button on one line, wrapping on a narrow screen; as a whole form
   (kx-form kx-inline-form: Team's invitation, a case's Add a member) it spans the card
   and its first field takes the room */
.kx-inline-form { display: inline-flex; flex-direction: row; gap: .5rem; align-items: flex-end; margin: 0; flex-wrap: wrap; }
.kx-form.kx-inline-form { display: flex; gap: .75rem; }
.kx-form.kx-inline-form > .kx-field:first-child { flex: 1 1 16rem; }
.kx-form.kx-inline-form > .kx-btn { align-self: flex-end; }
.kx-field { display: flex; flex-direction: column; gap: .35rem; min-width: 0; }
.kx-field label { font-size: .85rem; font-weight: 600; }
.kx-field-head { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; font-size: .85rem; }
.kx-row2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr)); gap: .9rem; }
.kx-input { min-height: 2.75rem; padding: 0 .85rem; border: 1px solid var(--kx-input); border-radius: 10px; background: #fff;
  font: inherit; color: var(--kx-text); box-sizing: border-box; width: 100%; }
.kx-input:focus, .kx-btn:focus-visible, .kx-link-btn:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.kx-hint { font-size: .8rem; color: var(--kx-muted); line-height: 1.45; overflow-wrap: anywhere; }
/* the label is running text (it may hold links); the box sits in its left margin */
.kx-check { display: block; position: relative; padding-left: 1.75rem; line-height: 1.5; font-size: .92rem; color: #33405A; }
.kx-check input { position: absolute; left: 0; top: .2rem; width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--kx-ink); }
.kx-btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 2.6rem; padding: 0 1rem;
  border-radius: 10px; border: 1px solid var(--kx-line); background: #fff; color: var(--kx-ink); font: 500 .95rem var(--kx-font);
  text-decoration: none; cursor: pointer; }
.kx-btn:hover { border-color: #B9C3D2; color: var(--kx-ink); }
.kx-btn-ink { background: var(--kx-ink); border-color: var(--kx-ink); color: #fff; font-weight: 600; }
.kx-btn-ink:hover { background: var(--kx-deep); color: #fff; }
/* one button style (2026-10-26): .kx-btn (secondary), .kx-btn-ink (primary),
   .kx-btn-danger (remove, revoke, delete: each asks first), .kx-btn-sm where small */
.kx-btn-danger { color: var(--kx-bad); border-color: #E8C4C4; }
.kx-btn-danger:hover { background: var(--kx-bad-bg); border-color: var(--kx-bad); color: var(--kx-bad); }
.kx-btn:disabled { opacity: .55; cursor: not-allowed; }
a.kx-btn, a.kx-btn:hover { text-decoration: none; }
a.kx-btn-ink, a.kx-btn-ink:hover { color: #fff; }
.kx-btn-wide { width: 100%; min-height: 3rem; }
.kx-btn-sm { min-height: 2rem; padding: 0 .7rem; font-size: .85rem; border-radius: 8px; }
.kx-link-btn { background: none; border: 0; padding: 0; font: inherit; color: inherit; text-decoration: underline; cursor: pointer; }
.kx-alert { margin: 0; padding: .75rem .9rem; border-radius: 10px; background: var(--kx-bad-bg); color: var(--kx-bad); }
.kx-ok { margin: 0; padding: .75rem .9rem; border-radius: 10px; background: var(--kx-good-bg); color: var(--kx-good); }
.kx-settings { display: flex; flex-direction: column; gap: .9rem; max-width: 40rem; }
.kx-settings:has(> table.data:not([hidden]), > .table-scroll) { max-width: none; }
/* a table inside a part that polls itself (the Processing jobs page) */
.kx-settings:has(> .sj-polled) { max-width: none; }
/* forms: a form's width each, side by side, left-aligned with the page */
.kx-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(29rem, 100%), 1fr)); gap: .9rem;
  align-items: start; max-width: 81rem; margin-bottom: .9rem; }
.kx-cards > .card { margin: 0; max-width: none; }
.kx-settings h2 { margin: 0; }
.kx-settings h3 { margin: .4rem 0 0; font-size: .95rem; }
.kx-facts { display: grid; grid-template-columns: max-content 1fr; gap: .45rem 1.2rem; margin: 0; }
.kx-facts dt { font-size: .85rem; font-weight: 600; color: var(--kx-muted); }
.kx-facts dd { margin: 0; overflow-wrap: anywhere; }
.rename-form { display: flex; width: 100%; }
.rename-form .kx-field { flex: 1 1 18rem; }
.kx-doc { display: flex; flex-direction: column; gap: .6rem; line-height: 1.6; }
.kx-doc h2 { margin: .8rem 0 0; font-family: var(--kx-display); font-size: 1.1rem; color: var(--kx-ink); }
.kx-doc p { margin: 0; }

/* --- App shell (SaaS phase 1): sidebar, top bar, content ---------------------------
   The sidebar and the main column wrap (flex-wrap) instead of a breakpoint: below
   about 1000px (14.5rem + 48rem) the sidebar becomes a block above the page, so the
   tables keep the full width. No script needed. */
body.kx-app { margin: 0; background: var(--kx-paper); color: var(--kx-text); font-family: var(--kx-font); }
.kx-app h1 { font-family: var(--kx-display); font-size: 1.6rem; font-weight: 600; letter-spacing: -.01em;
  color: var(--kx-ink); margin: 0 0 .35rem; overflow-wrap: anywhere; }
.kx-app h2 { font-family: var(--kx-display); font-size: 1.1rem; font-weight: 600; color: var(--kx-ink); }
.skip-link { position: absolute; left: -999px; top: .5rem; background: #fff; padding: .5rem .8rem; border-radius: 8px; z-index: 10; }
.skip-link:focus { left: .5rem; }
.shell { min-height: 100vh; display: flex; flex-wrap: wrap; }
.side { flex: 1 1 14.5rem; max-width: 100%; box-sizing: border-box; background: #fff; border-right: 1px solid var(--kx-line);
  padding: 1rem .75rem; display: flex; flex-direction: column; gap: .15rem; }
.shell-main { flex: 999 1 48rem; min-width: 0; display: flex; flex-direction: column; }
/* beside the page (wide screens) the sidebar stays put while the page scrolls; a long
   case list scrolls inside it */
@media (min-width: 62.51rem) {
  .side { position: sticky; top: 0; align-self: flex-start; height: 100vh; overflow-y: auto; }
}
.side-brand { display: flex; align-items: center; gap: .6rem; padding: .25rem .6rem .9rem; text-decoration: none; font-size: 1.05rem; }
.side-nav { display: flex; flex-direction: column; gap: .15rem; }
.nav-item { display: flex; align-items: center; gap: .6rem; min-height: 2.5rem; padding: 0 .6rem; border-radius: 8px;
  color: #33405A; text-decoration: none; font-size: .9rem; font-weight: 500; }
.kx-app .nav-item { color: #33405A; }
.kx-app .nav-item:hover { background: var(--kx-paper); color: var(--kx-ink); text-decoration: none; }
.kx-app .nav-item.on { background: #EEF1F6; color: var(--kx-ink); font-weight: 600; }
.nav-sec { font-size: .7rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--kx-muted);
  padding: 1.1rem .6rem .35rem; }
.side-foot { margin-top: auto; display: flex; gap: 1rem; padding: .9rem .6rem .2rem;
  border-top: 1px solid #EDF0F5; font-size: .8rem; }
.kx-app .side-foot a { color: var(--kx-muted); }
.kx-app .side-foot a:hover { color: var(--kx-ink); }
.kx-app .nav-back { display: flex; align-items: center; gap: .4rem; padding: .2rem .5rem .8rem; color: var(--kx-ink);
  font-weight: 600; font-size: .92rem; text-decoration: none; }
.kx-app .nav-back:hover { color: var(--kx-signal-text); text-decoration: none; }
/* top right: this month's spend and the credit left, one control (after fireworks.ai's
   "Total Spend | Credits"), then the account menu */
.kx-app .spend-pill { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.25rem; padding: 0 .85rem;
  border: 1px solid var(--kx-line); border-radius: 999px; background: #fff; color: var(--kx-muted); font-size: .85rem;
  text-decoration: none; white-space: nowrap; }
.kx-app .spend-pill strong { color: var(--kx-ink); font-weight: 600; font-variant-numeric: tabular-nums; }
.kx-app a.spend-pill:hover { border-color: #B9C3D2; text-decoration: none; }
.pill-sep { color: var(--kx-line); padding: 0 .15rem; }
.spend-dot { flex: none; width: .5rem; height: .5rem; border-radius: 50%; background: var(--kx-good); }
.spend-dot.credits-low { background: var(--kx-signal); }
.spend-dot.credits-out { background: var(--kx-bad); }
/* the credit's colour, in the pill and on the Billing page: green, amber when low, red when out */
.credits-ok, .kx-app .spend-pill .pill-credits.credits-ok { color: var(--kx-good); }
.credits-low, .kx-app .spend-pill .pill-credits.credits-low { color: var(--warn); }
.credits-out, .kx-app .spend-pill .pill-credits.credits-out { color: var(--kx-bad); }
.user-menu { position: relative; }
.user-menu summary { list-style: none; display: flex; align-items: center; gap: .5rem; min-height: 2.25rem; padding: 0 .4rem 0 .75rem;
  border: 1px solid var(--kx-line); border-radius: 999px; background: #fff; cursor: pointer; font-size: .85rem; color: var(--kx-ink); }
.user-menu summary::-webkit-details-marker { display: none; }
.user-menu summary:hover { border-color: #B9C3D2; }
.user-menu summary .avatar { width: 1.6rem; height: 1.6rem; font-size: .72rem; }
.user-firm { font-weight: 600; white-space: nowrap; }
.user-menu-panel { position: absolute; right: 0; top: calc(100% + .4rem); z-index: 20; min-width: 15rem; padding: .4rem;
  background: #fff; border: 1px solid var(--kx-line); border-radius: 12px; box-shadow: 0 18px 40px rgba(11, 31, 58, .14);
  display: flex; flex-direction: column; }
.user-menu-who { display: flex; flex-direction: column; gap: .1rem; padding: .5rem .6rem .65rem; margin-bottom: .3rem;
  border-bottom: 1px solid #EDF0F5; font-size: .82rem; color: var(--kx-muted); overflow-wrap: anywhere; }
.user-menu-who strong { color: var(--kx-ink); font-size: .9rem; }
.kx-app .user-menu-panel a, .user-menu-panel .kx-menu-item { display: flex; align-items: center; gap: .55rem; width: 100%;
  padding: .5rem .6rem; border: 0; border-radius: 8px; background: none; color: #33405A; font: inherit; font-size: .88rem;
  text-align: left; text-decoration: none; cursor: pointer; }
.kx-app .user-menu-panel a:hover, .user-menu-panel .kx-menu-item:hover { background: var(--kx-paper); color: var(--kx-ink); }
.user-menu-panel .kx-menu-item:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: -2px; }
.user-menu-panel form { margin: 0; }
/* home */
.mini-label { font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
  color: var(--kx-muted); margin: .25rem 0 .5rem; }
.usage-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr)); gap: .75rem; }
.usage-tile { display: flex; flex-direction: column; gap: .3rem; padding: 1rem 1.1rem; background: #fff;
  border: 1px solid var(--kx-line); border-radius: 12px; }
.usage-tile span { font-size: .8rem; color: var(--kx-muted); }
.usage-tile strong { font-family: var(--kx-display); font-size: 1.45rem; font-weight: 600; color: var(--kx-ink); }
.usage-tile strong.muted { font-family: var(--kx-font); font-size: 1rem; color: var(--kx-muted); font-weight: 500; }

/* the person's cases (deps.nav_cases): name over code; the open one expands */
.kx-app .nav-item.case-item { align-items: flex-start; min-height: 0; padding-top: .45rem; padding-bottom: .45rem; }
.case-item .kx-icon { margin-top: .1rem; }
.case-label { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.case-name { overflow-wrap: anywhere; }
.case-code { font-family: var(--mono); font-size: .72rem; font-weight: 400; color: var(--kx-muted); }
.kx-app .nav-item.case-item.open { background: #EEF1F6; color: var(--kx-ink); font-weight: 600; }
.case-sub { display: flex; flex-direction: column; gap: .1rem; margin: .15rem 0 .45rem 1.05rem;
  padding-left: .55rem; border-left: 1px solid var(--kx-line); }
.case-sub .nav-item { min-height: 2.15rem; font-size: .86rem; }
.case-sub .badge { align-self: flex-start; margin: .2rem 0 .2rem .6rem; }
.case-sub-sec { font-size: .65rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
  color: var(--kx-muted); padding: .6rem .6rem .15rem; }
.avatar { flex: none; width: 2rem; height: 2rem; border-radius: 50%; background: var(--kx-ink); color: #fff;
  display: grid; place-items: center; font-weight: 600; font-size: .8rem; }
.icon-btn { display: grid; place-items: center; width: 2.25rem; height: 2.25rem; border: 0; border-radius: 8px;
  background: none; color: var(--kx-muted); cursor: pointer; }
.icon-btn:hover { background: var(--kx-paper); color: var(--kx-ink); }
.kx-icon { flex: none; }
/* the top bar stays in view (sticky, on its own background) and on one line: a long
   title ends in an ellipsis rather than pushing the actions; the pill may shrink, the
   account menu never leaves the screen (375px to 2560px, no horizontal scroll) */
.top { position: sticky; top: 0; z-index: 15; display: flex; flex-wrap: nowrap; align-items: center; gap: .75rem;
  min-height: 3.75rem; padding: .6rem 2rem; box-sizing: border-box; background: #fff; border-bottom: 1px solid var(--kx-line); }
/* basis 0: the actions get their width first, the title the rest (it gives way first) */
.top-title { flex: 1 1 0%; min-width: 0; font-weight: 600; font-size: .95rem; color: var(--kx-ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.top-actions { margin-left: auto; flex: 0 1 auto; min-width: 0; display: flex; flex-wrap: nowrap; align-items: center; gap: .6rem; }
.top-actions > * { flex: none; }
.top-actions > .spend-pill { flex: 0 1 auto; min-width: 0; overflow: hidden; }
.kx-app main { width: 100%; max-width: 150rem; margin: 0 auto; padding: 1.75rem 2rem 3rem; box-sizing: border-box; }
@media (max-width: 62.5rem) {
  /* the sidebar and the page are two flex lines here: each only as tall as its content
     (stretched, a short page left a blank band inside the sidebar, above its foot) */
  .shell { align-content: flex-start; }
  /* the whole width: at exactly 1000px a page with no scrollbar still fits them side by side */
  .side { flex-basis: 100%; border-right: 0; border-bottom: 1px solid var(--kx-line); }
  .side-nav { flex-direction: row; flex-wrap: wrap; }
  .nav-sec { flex-basis: 100%; padding-top: .6rem; }
  .case-sub { flex-basis: 100%; flex-direction: row; flex-wrap: wrap; margin-left: .6rem; }
  .top { padding: .6rem 1rem; }
  .kx-app main { padding: 1.25rem 1rem 2.5rem; }
}
/* narrower screens give the top bar's room back in steps: first the firm's name (the
   avatar alone opens the account menu; the firm is named inside it), then the button's
   words (its icon stays), then on phones the pill's labels ("$X | $Y" stays). The
   firm's name goes first, and early: from 62.5rem up the sidebar sits beside the bar,
   so the bar is narrower at 1024px than at 768px, and a law firm's name would push the
   credit figure out of the pill and the case out of the title. It comes back at 1440px,
   whole, never cut off (a name past 32 characters is in the account menu alone: base.html) */
@media (max-width: 89.99rem) {
  .user-firm { display: none; }
  .user-menu summary { padding-left: .3rem; }
}
@media (max-width: 40rem) {
  .top-new-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
    clip-path: inset(50%); white-space: nowrap; }
  .kx-btn.top-new { padding: 0 .7rem; }
}
@media (max-width: 30rem) {
  .pill-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
    clip-path: inset(50%); white-space: nowrap; }
  .kx-app .spend-pill { padding: 0 .65rem; gap: .3rem; }
  .top { gap: .5rem; }
  .top-actions { gap: .4rem; }
}

/* home (SaaS phase 1) */
.page-intro { display: flex; flex-direction: column; gap: .25rem; margin-bottom: 1.25rem; }
.page-intro p { margin: 0; }
.quick-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin: .25rem 0 .5rem; }
.get-started { display: flex; flex-direction: column; gap: .9rem; padding: 1.25rem 1.4rem; }
.get-started h2 { margin: 0; }
.steps { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem;
  grid-template-columns: repeat(auto-fit, minmax(min(14rem, 100%), 1fr)); }
.steps li { border: 1px solid var(--line); border-radius: 12px; padding: 1rem; display: flex; flex-direction: column;
  gap: .4rem; background: #FBFCFD; }
.steps li span:not(.step-n) { color: var(--kx-slate); line-height: 1.5; font-size: .9rem; }
.steps .kx-btn { align-self: flex-start; margin-top: auto; }
.step-n { font-size: .75rem; font-weight: 600; color: var(--kx-signal-text); }

/* the account menu's last line: which Korpex this is */
.user-menu-version { padding: .5rem .6rem .3rem; margin-top: .3rem; border-top: 1px solid #EDF0F5;
  font-size: .75rem; color: var(--kx-muted); }
/* lists, list first (Cases, a case's Investigations): title and its one link on a line;
   one sentence and one button when there is nothing to list */
.list-head { align-items: baseline; margin-bottom: .75rem; }
.list-toggle { white-space: nowrap; }
.empty-state { display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; padding: 1.5rem 1.4rem; }
.empty-state p { margin: 0; color: var(--kx-slate); }
.badge-neutral { background: #eceff3; color: var(--ink-soft); }
/* the Cases page */
.page-head h1 + p { margin: 0; }
.page-head > .kx-btn { flex: none; }
.cases-search { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 1rem 0 .9rem; max-width: 36rem; }
.cases-search .kx-input { flex: 1 1 14rem; width: auto; min-height: 2.6rem; }
table.cases td { vertical-align: middle; overflow-wrap: anywhere; }
table.cases .case-link { font-weight: 600; }
table.cases td.row-action { width: 1%; text-align: right; }
/* phones: the case's name (a link to the same page) leaves no room for Open; the
   date and the headers may wrap, so the name keeps a readable width */
@media (max-width: 40rem) {
  table.cases .row-action { display: none; }
  table.cases td.nowrap, table.cases th { white-space: normal; }
  table.cases th, table.cases td { padding-left: .55rem; padding-right: .55rem; }
}
/* text for screen readers only (a column header with no visible words). Its header
   cell holds it: positioned against the page instead, the text of a wide table's last
   column (the Investigations list scrolls inside its box) widened the whole page */
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
  clip-path: inset(50%); white-space: nowrap; }
table.data th { position: relative; }
/* the New investigation page: the case it is for, when fixed; the hint above the button */
.case-fixed { margin: 0 0 .6rem; }
.new-investigation .kx-hint { margin: .6rem 0 0; }
/* Help (2026-11-05, the owner: "old styling and no way to navigate back"): the reading page's
   rail, its way back and its topics (the one in view in bold: app.js), beside one white sheet;
   signed out, under a top bar of its own (doc_base.html) */
.help-topics { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .15rem; }
.kx-app .help-topics a { display: flex; align-items: center; min-height: 2.4rem; padding: 0 .8rem; border-radius: 10px;
  color: var(--rp-ink-2); text-decoration: none; font-size: .9rem; font-weight: 500; }
.kx-app .help-topics a:hover { background: var(--rp-neutral-bg); color: var(--rp-ink); }
.help-topics a:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.kx-app .help-topics a.is-on { background: var(--rp-card); color: var(--rp-ink); font-weight: 600;
  box-shadow: 0 1px 2px rgba(11, 31, 58, .06), 0 0 0 1px var(--rp-line); }
@media (max-width: 62.5rem) {
  .help-topics { flex-direction: row; flex-wrap: wrap; gap: .25rem; }
  .kx-app .help-topics a { min-height: 2.2rem; }
}
.help-sheet { padding-top: 2.25rem; font-size: .94rem; line-height: 1.65; color: var(--rp-ink-2); }
.help-sheet > * { max-width: 46rem; margin-left: auto; margin-right: auto; }
.kx-app .help-head h1 { margin: 0; font: 600 1.75rem/1.2 var(--br-serif); letter-spacing: -.01em; color: var(--rp-ink); }
.help-head p { margin: .5rem 0 0; color: var(--rp-muted); }
.help-sec { display: flex; flex-direction: column; gap: .8rem; margin-top: 2.5rem; padding-top: 1.5rem;
  border-top: 1px solid var(--rp-line); }
.kx-app .help-sec h2 { margin: 0 0 .1rem; font: 600 1.25rem/1.3 var(--br-serif); color: var(--rp-ink);
  scroll-margin-top: calc(var(--kx-top-h) + 1.5rem); }
.help-sec p { margin: 0; max-width: 68ch; }
.help-sec strong { font-weight: 600; color: var(--rp-ink); }
.kx-app .help-sheet a { color: var(--rp-teal-text); text-decoration: underline; text-underline-offset: 2px; }
.help-sheet .legend { margin: .2rem 0; font-size: .9rem; }
/* the investigation page's views, each with what it holds (Reading a report) */
.help-views { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: .45rem 1rem; margin: .1rem 0; font-size: .9rem; }
.help-views dt { font-weight: 600; color: var(--rp-ink); }
.help-views dd { margin: 0; }
@media (max-width: 43.74rem) {
  .help-views { grid-template-columns: minmax(0, 1fr); gap: .1rem; }
  .help-views dd { margin-bottom: .45rem; }
}
/* the marks as the report shows them: a quiet word with its glyph, never a chip */
.kx-app .help-sheet .lvl { gap: .4rem; min-height: 0; padding: 0; border: 0; border-radius: 0; background: none;
  font: 600 .84rem/1.45 var(--kx-font); letter-spacing: 0; color: var(--br-mark); }
.help-foot { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--rp-line-soft); font-size: .84rem; }
/* signed out: the app's top bar, the logo and Sign in */
.doc-top .side-brand { padding: 0; }

.session-tools { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: .5rem 0 1rem; }
.print-only, .print-inline { display: none; }

/* Settings › Billing (after fireworks.ai's Billing page): a narrow centred column of
   sections and cards. The chart is server-rendered SVG: colours come from these
   classes (the CSP allows no style attribute). */
.billing { max-width: 46rem; margin: 0 auto; }
.billing > p.muted { margin: 0; }
.kx-app .billing h2 { margin: 1.9rem 0 .7rem; }
.billing h3 { font-family: var(--kx-display); font-size: 1rem; font-weight: 600; color: var(--kx-ink); }
.billing-card { display: flex; flex-direction: column; gap: 1.1rem; padding: 1.25rem 1.4rem; }
.credits-balance { display: flex; flex-direction: column; gap: .25rem; }
.credits-balance p, .credits-balance h3 { margin: 0; }
.balance { font-family: var(--kx-display); font-size: 2.4rem; font-weight: 600; line-height: 1.15;
  font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.balance-note { font-family: var(--kx-font); font-size: 1rem; font-weight: 500; color: var(--kx-muted); }
.billing-note { margin: .5rem 0 0; padding: .6rem .85rem; border-radius: 10px; font-size: .9rem; }
.note-ok { background: var(--kx-good-bg); color: var(--kx-good); }
.note-wait, .note-info { background: #EEF1F6; color: var(--kx-ink); }
.note-bad { background: var(--kx-bad-bg); color: var(--kx-bad); }
.add-credits { display: flex; flex-direction: column; gap: .85rem; padding-top: 1.1rem; border-top: 1px solid var(--line-soft); }
.packs { border: 0; margin: 0; padding: 0; min-width: 0; }
.packs legend { padding: 0; margin-bottom: .6rem; font-family: var(--kx-display); font-weight: 600; color: var(--kx-ink); }
.pack-list { display: flex; flex-wrap: wrap; gap: .5rem; }
.pack { position: relative; display: inline-flex; }
.pack input { position: absolute; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.pack span { display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0 1rem; border: 1px solid var(--kx-line);
  border-radius: 10px; background: #fff; color: var(--kx-ink); font-weight: 600; font-variant-numeric: tabular-nums; }
.pack input:checked + span { border-color: var(--kx-ink); box-shadow: inset 0 0 0 1px var(--kx-ink); background: #EEF1F6; }
.pack input:focus-visible + span { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.packs:disabled .pack span, .packs:disabled .kx-input { opacity: .55; cursor: not-allowed; }
.other-amount { margin-top: .8rem; max-width: 22rem; }
.spend-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
.spend-head h3, .spend-head p { margin: 0; }
.spend-head p { margin-top: .2rem; }
.spend-total { flex: none; text-align: right; }
.spend-total span { display: block; font-size: .7rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
  color: var(--kx-muted); }
.spend-total strong { font-family: var(--kx-display); font-size: 1.6rem; font-weight: 600; color: var(--kx-ink);
  font-variant-numeric: tabular-nums; }
/* on a phone the chart keeps a readable size and scrolls inside its card: drawn at
   least 40rem wide for its 720-unit viewBox (routes/billing.py CHART_W), its 13-unit
   labels are 11.5px or more (30rem made them 8.7px); still under the card's inner width
   in the 46rem column, so a desktop never scrolls it */
.chart-scroll { overflow-x: auto; }
.spend-chart { display: block; width: 100%; min-width: 40rem; height: auto; }
.spend-chart .grid { stroke: var(--line-soft); stroke-width: 1; }
.spend-chart .bar { fill: var(--kx-ink); }
.spend-chart .bar:hover { fill: var(--kx-signal); }
.spend-chart text { fill: var(--kx-muted); font-family: var(--kx-font); font-size: 13px; }
.billing-table td a { overflow-wrap: anywhere; }
.amount-in { color: var(--kx-good); }
/* a card purchase and its refund line read as one entry */
.purchases-table tr.purchase td { border-bottom: 0; padding-bottom: .2rem; }
.purchases-table tr.refund-row td { padding-top: .2rem; }
.refund-form { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .8rem; margin: 0; }
.refund-confirm p { margin: 0; }
.refund-amount strong { font-variant-numeric: tabular-nums; }
.billing-foot { margin: 2rem 0 0; }

@media print {
  .print-only { display: block; }
  .print-inline { display: inline; }
  .side, .top, .skip-link, .noncompliant-bar, form, .no-print { display: none !important; }
  body.kx-app { background: #fff; }
  .shell, .shell-main { display: block; }
  .kx-app main { max-width: none; padding: 0; }
  .kx-app .card, .kx-app table.data { border-color: #c9d2de; break-inside: avoid; }
  a { color: inherit; text-decoration: none; }
}

/* --- Question state pills and the compact step log (2026-10-26) ---------------------
   One set of state pills wherever a question's state shows (the running card, the
   finished question cards, a case's Investigations list, Home's list): amber waiting,
   blue running (a dot that pulses; still under prefers-reduced-motion), green report
   ready, the same amber with a dashed border a report that reached its search limit or did not pass
   every check, red ended without a report, grey cancelled or nothing asked. The pill's text
   always names the state, so colour is never the only signal (assist_view.TURN_STATUS,
   report_status, _ask.pill). The running card shows one line of counts by kind and the latest step,
   no box per step and no list of them (2026-10-31); every step is Korpex staff's, behind
   "Show all N steps" in the report's Methodology. */
:root { --run: #1d4ed8; --run-bg: #e8effd; --run-line: #c3d3f6; }
.pill { border: 1px solid transparent; letter-spacing: .01em; }
.pill-waiting { background: var(--kx-signal-bg); color: var(--kx-signal-text); border-color: #f0d49c; }
.pill-running { background: var(--run-bg); color: var(--run); border-color: var(--run-line); }
.pill-ready { background: var(--good-bg); color: var(--good); border-color: #b9dcc5; }
.pill-noreport { background: var(--bad-bg); color: var(--bad); border-color: #ebc3c3; }
.pill-cancelled, .pill-idle { background: #eceff3; color: var(--ink-soft); border-color: #d9dee6; }
.pill-dot {
  display: inline-block; width: .5rem; height: .5rem; margin: 0 .35rem .08rem 0;
  border-radius: 50%; background: currentColor; vertical-align: middle;
  animation: pill-pulse 2s ease-in-out infinite;
}
@keyframes pill-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: .3; transform: scale(.75); }
}
@media (prefers-reduced-motion: reduce) {
  .pill-dot { animation: none; }
}
/* the running card: one stats line, the latest step; then Korpex staff's collapsed list
   of a finished question (Methodology) */
.step-stats { margin: .5rem 0 .15rem; font-size: .9rem; }
.step-stats strong, .methodology summary strong { font-variant-numeric: tabular-nums; }
.step-latest { margin: .1rem 0 .35rem; font-size: .88rem; color: var(--ink-soft);
  overflow-wrap: anywhere; }
.step-latest-k { font-weight: 600; color: var(--ink); }
details.step-log { margin: .35rem 0 .2rem; font-size: .85rem; }
details.step-log > summary { cursor: pointer; width: fit-content; color: var(--accent); font-weight: 600; }
details.step-log > summary:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; border-radius: 3px; }
ol.step-list {
  margin: .35rem 0 0; padding: .35rem .75rem .35rem 2.6rem; max-height: 18rem; overflow-y: auto;
  border: 1px solid var(--line-soft); border-radius: 8px; background: #FBFCFD;
}
ol.step-list li { padding: .12rem 0; border-bottom: 1px solid var(--line-soft); color: var(--ink); }
ol.step-list li:last-child { border-bottom: 0; }
ol.step-list li::marker { color: var(--ink-soft); font-variant-numeric: tabular-nums; }
/* a second question in the card (one waiting behind it) starts below a thin rule */
.turn-progress > .turn-head ~ .turn-head {
  margin-top: .8rem; padding-top: .7rem; border-top: 1px solid var(--line-soft);
}
/* the one line that replaced the grey explanation box */
.progress-note { margin: .6rem 0 0; }

/* --- Printed, the step list is whole (2026-10-26) --------------------------------------
   Korpex staff's list (a firm has none, on screen or on paper: 2026-10-31). On screen
   it scrolls inside 18rem; on paper there is no scrolling, so the cap cut a long list
   off (a report saved as PDF showed about 11 of 40 steps, with no sign that the rest
   were missing). In print the list takes its full height, and app.js opens every
   <details> of the page just before printing. */
@media print {
  ol.step-list { max-height: none; overflow: visible; }
}

/* --- The investigation report (2026-10-26) ---------------------------------------------
   The attorneys asked for the answer first and something to click behind each line; the
   product owner for findings stated plainly, never a comparison: the answer right under
   the question, every line with its support level (a small chip WITH its label: Strong
   green, Moderate neutral, Inference a dashed outline, Search result a dotted outline,
   Not confirmed amber, the colour never the only signal) and one button naming what it
   opens, the rest folded into <details> sections, and the evidence panel out of sight
   until an item is opened (2026-10-31): a drawer under the top bar from 1200px, the page
   live behind it, and a modal sheet over the page below that (a right-hand drawer, a
   bottom sheet on phones). Colours are tokens here (the app has one, light, theme). No
   style attribute anywhere: the CSP is style-src 'self'. */
:root {
  --rp-ink: #0B1F3A; --rp-ink-2: #33445E; --rp-muted: #5B6B82; --rp-line: #DDE3EC;
  --rp-line-soft: #E9EDF3; --rp-paper: #F4F6F9; --rp-card: #FFFFFF; --rp-tint: #F8FAFC;
  --rp-amber: #E39B2D; --rp-amber-text: #8A5A0E; --rp-amber-bg: #FDF5E8; --rp-amber-line: #F0D3A3;
  --rp-red: #B02A2A; --rp-red-bg: #FBEAEA;
  --rp-teal: #2FB3B3; --rp-teal-text: #156E6E; --rp-teal-bg: #E5F5F5; --rp-mark: #CDEEEE;
  --rp-flash: #FFF1B8; --rp-green: #1E7F52; --rp-green-bg: #E6F4EC; --rp-green-line: #B9DEC9;
  --rp-neutral-bg: #EEF1F6;
  --rp-btn-bg: #0B1F3A; --rp-btn-text: #FFFFFF; --rp-scrim: rgba(11, 31, 58, .38);
  --rp-sheet-shadow: -12px 0 40px rgba(11, 31, 58, .18);
}
/* an element with the hidden attribute stays hidden whatever its display rule says */
[hidden] { display: none !important; }

.rp-main { min-width: 0; }
.session-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between;
  gap: .25rem 1rem; margin: 0 0 .75rem; }
.session-title { min-width: 0; flex: 1 1 24rem; }
.session-title p { margin: 0; }
.session-head .session-tools { margin: .25rem 0 0; }

/* small shared pieces */
.linkbtn { background: none; border: 0; padding: 0; color: var(--rp-teal-text); text-decoration: underline;
  text-underline-offset: 2px; text-decoration-thickness: 1px; cursor: pointer; font: inherit; }
.kx-app .linkbtn { color: var(--rp-teal-text); text-decoration: underline; }
.kx-app .linkbtn:hover { color: var(--rp-ink); }
.ctl { font-family: var(--mono); color: var(--rp-muted); padding: 0 1px; cursor: help; }
.nw { white-space: nowrap; }
.rp .lede { margin: 0; color: var(--rp-muted); font-size: .88rem; }
.src-btn:focus-visible, .cite-link:focus-visible, .copy:focus-visible, .ev-panel .panel-icon:focus-visible,
.linkbtn:focus-visible, .open-doc:focus-visible {
  outline: 2px solid var(--kx-signal); outline-offset: 2px; }

/* the report card and its header */
.rp.card { padding: 1.1rem 1.25rem 1rem; }
.rp-head { margin: 0 0 .75rem; }
.rp-eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .6rem; margin: 0 0 .3rem;
  font-size: .85rem; }
.kx-app .rp-q { font-family: var(--kx-display); font-size: 1.2rem; line-height: 1.3; font-weight: 600; color: var(--rp-ink);
  margin: 0 0 .3rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.rp-meta { margin: 0; font-size: .85rem; color: var(--rp-muted); }
.rp-meta .sep { padding: 0 .1rem; }

/* the marks (2026-10-27: exceptions only, a small chip with its label; a confirmed item has
   none, its evidence button says what it rests on) */
.lvl { display: inline-flex; align-items: center; min-height: 1.5rem; padding: .1rem .55rem; border-radius: 999px;
  border: 1px solid transparent; font: 600 .72rem/1.2 var(--kx-font); letter-spacing: .02em; white-space: nowrap;
  vertical-align: middle; }
.lvl-inference { background: transparent; border: 1px dashed var(--rp-teal); color: var(--rp-teal-text); }
.lvl-search { background: transparent; border: 1px dotted var(--rp-muted); color: var(--rp-ink-2); }
/* Not confirmed: a solid grey outline, no amber (2026-11-04: the attorneys read amber as "likely
   not true"); its word and its reason say what it is */
.lvl-unconfirmed { background: transparent; border: 1px solid var(--rp-muted); color: var(--rp-ink-2); }
.lv-why { display: block; margin-top: .2rem; font-size: .84rem; color: var(--rp-amber-text); }
/* on a report a mark is a button (2026-11-04): a click shows its reason under the item, in the
   report's ink, never amber; what else an item cites that Korpex could not confirm is a quiet
   note beside it */
.kx-app .lvl-btn { cursor: pointer; margin: 0; appearance: none; text-decoration: none; }
.lvl-btn:hover { box-shadow: 0 0 0 2px var(--rp-line); }
.lvl-btn:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.lvl-btn[aria-expanded="true"] { box-shadow: 0 0 0 2px var(--rp-line); }
.lvl-why { display: block; margin: .3rem 0 0; padding: .35rem .6rem; font-size: .84rem; line-height: 1.4;
  color: var(--rp-ink-2); background: var(--rp-tint); border: 1px solid var(--rp-line); border-radius: 6px;
  max-width: var(--rp-measure); white-space: normal; overflow-wrap: anywhere; }
.lv-also { display: block; margin-top: .2rem; font-size: .82rem; color: var(--rp-muted); white-space: normal; }
.lv-part { display: block; margin-top: .2rem; font-size: .84rem; color: var(--rp-ink-2); }
.lv-line { margin: .25rem 0 0; display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .5rem; }
.lv-text { font-size: .84rem; color: var(--rp-ink-2); flex: 1 1 16rem; min-width: 0; }
.sub-flag { color: var(--rp-ink-2); font-weight: 600; white-space: nowrap; }
.sec-sum .sub-flag { font-weight: 600; }

/* a line's button: what it opens ("2 emails · 1 attachment"), at least 2rem (32px) tall */
.src-btn { display: inline-flex; align-items: center; gap: .35rem; min-height: 2rem; border: 1px solid var(--rp-line);
  background: var(--rp-card); border-radius: 999px; padding: .2rem .75rem; font-size: .82rem; font-weight: 500;
  line-height: 1.3; white-space: nowrap; vertical-align: middle; }
.kx-app .src-btn { color: var(--rp-ink); }
.kx-app .src-btn:hover { border-color: var(--rp-ink); text-decoration: none; }
.kx-app .src-btn.basis { border-style: dashed; color: var(--rp-ink-2); }
.kx-app .src-btn.is-on { background: var(--rp-btn-bg); border-color: var(--rp-btn-bg); color: var(--rp-btn-text); }
.ac-meta { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .35rem; vertical-align: middle; }

/* the answer: the direct answer, its table, then one card per finding, its statements as bullets */
.rp-answer { margin: 0 0 1.25rem; }
.kx-app .rp-answer-h { font-family: var(--kx-display); font-size: 1.15rem; font-weight: 600; margin: .2rem 0 .6rem;
  border: 0; padding: 0; color: var(--rp-ink); }
/* the direct answer (assist@a14): the answer itself, in a larger type, with its mark and its
   button like a table row's; amber when not confirmed, teal when the panel shows it */
.rp-direct { margin: 0 0 .9rem; padding: .1rem 0 .1rem .75rem; border-left: 3px solid var(--rp-line);
  overflow-wrap: anywhere; scroll-margin-top: 8rem; }
.kx-app .rp-direct-t { font-family: var(--kx-display); font-size: 1.4rem; line-height: 1.3; font-weight: 600; margin: 0 0 .3rem;
  color: var(--rp-ink); }
.rp-direct-meta { margin: 0; display: flex; flex-direction: column; align-items: flex-start; gap: .3rem; }
.rp-direct.is-current { border-left-color: var(--rp-teal); }
/* a statement the table and the direct answer already say is left to Findings in full on
   screen, and printed here (Findings in full is not printed) */
.rp-card.is-folded, .ac-stmt.is-folded, .kx-app .rp-sub.is-folded { display: none; }
.ac-more { margin: .35rem 0 0 1.5rem; font-size: .85rem; color: var(--rp-muted); }
.rp-card { border: 1px solid var(--rp-line); border-radius: 10px; padding: .8rem 1rem .7rem; margin: 0 0 .7rem;
  background: var(--rp-card); }
.ac-top { margin: 0 0 .2rem; display: flex; flex-wrap: wrap; gap: .25rem .6rem; align-items: baseline; }
.rp .fnum { font-size: .72rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--rp-muted); }
.ac-levels { font-size: .8rem; color: var(--rp-muted); }
.ac-verdict { margin: 0 0 .1rem; font-size: .86rem; font-weight: 600; color: var(--rp-ink-2); }
.kx-app .ac-prop { font-family: var(--kx-display); font-size: 1.02rem; line-height: 1.35; font-weight: 600; margin: 0 0 .45rem;
  color: var(--rp-ink); white-space: pre-wrap; overflow-wrap: anywhere; }
.ac-stmts { list-style: none; margin: 0; padding: 0; display: grid; gap: .2rem; }
.ac-stmt { position: relative; padding: .35rem .5rem .35rem 1.5rem; border-radius: 6px; overflow-wrap: anywhere; }
.ac-stmt::before { content: ""; position: absolute; left: .6rem; top: 1.05em; width: 5px; height: 5px; border-radius: 50%;
  background: var(--rp-muted); }
.ac-stmt .txt { margin-right: .4rem; white-space: pre-wrap; }
/* the statement's number (1.2): a reason that names a statement can be followed */
.ac-ref { font: 500 .72rem/1 var(--mono); color: var(--rp-muted); margin-right: .25rem; }
.ac-stmt.kind-inference .txt, .stmt.kind-inference .txt { font-style: italic; }
/* an item Korpex could not confirm carries its mark, not a band (2026-11-04: amber on the whole
   item read as "this is wrong") */
.ac-stmt.is-current, .stmt.is-current, .pts li.is-current, .tl li.is-current {
  background: var(--rp-teal-bg); box-shadow: inset 3px 0 0 var(--rp-teal); }
.ac-meta { flex-direction: column; align-items: flex-start; gap: .3rem; }
.pts .lv-line, .tl .lv-line { flex-direction: column; align-items: flex-start; gap: .3rem; }
.flash { animation: rp-flash 1.7s ease-out; }
@keyframes rp-flash { 0%, 35% { background: var(--rp-flash); } }
/* under the answer: what limits how far it reaches, in quiet notes (2026-11-04; a limit that ended
   the search heads Limits Korpex noted); on paper one line says what is not confirmed. Amber
   stays for two answers that differ (rp-stop) */
.rp-note { margin: 0 0 .75rem; padding-left: .65rem; border-left: 2px solid var(--rp-line); font-size: .88rem;
  color: var(--rp-ink-2); max-width: var(--rp-measure); }
.rp-unconfirmed { margin: .2rem 0 .5rem; font-size: .88rem; }
.rp-stop { margin: 0 0 .9rem; font-size: .88rem; color: var(--rp-amber-text); }
/* a17: what a follow-up changed, under its direct answer: ink when it said so, amber (.rp-stop) when
   it did not. The earlier words stand in the second ink, what stands now in the first */
.rp-changed { margin: 0 0 .9rem; padding-left: .7rem; border-left: 2px solid var(--rp-ink-2); font-size: .88rem;
  color: var(--rp-ink); }
.rp-changed-h, .rp-differs > p { margin: 0 0 .3rem; font-weight: 600; }
.rp-changed ul, .rp-differs ul { margin: 0; padding-left: 1.1rem; }
.rp-changed li, .rp-differs li { margin: 0 0 .35rem; }
.rp-was, .rp-now { display: block; overflow-wrap: anywhere; }
.rp-changed .rp-was { color: var(--rp-ink-2); }
.rp-change-tag { color: var(--rp-muted); font-size: .84rem; white-space: nowrap; }
.table-note { margin: 0 0 .75rem; font-size: .86rem; color: var(--rp-muted); }
/* Methodology opens with the one sentence that says Korpex is an AI investigator */
.ai-note { margin: 0 0 .6rem; font-size: .86rem; color: var(--rp-ink-2); }
/* a confirmed premise in an inference's panel: what it rests on ("1 email"), no mark */
.prem-ev { font-size: .8rem; color: var(--rp-muted); }

/* the answer table (assist@a13): the AI's summary_table first in the answer, each row with
   its Evidence (its button, its mark under it only when it has one); a row about the same
   first entry as the row above shows that entry once (still read out); teal for the one the
   panel shows; stacked as cards on phones */
.at-ev { display: inline-flex; flex-direction: column; align-items: flex-start; gap: .3rem; }
.at-wrap { border: 1px solid var(--rp-line); border-radius: 10px; background: var(--rp-card); overflow-x: auto;
  margin: 0 0 .45rem; }
table.at { width: 100%; border-collapse: collapse; font-size: .92rem; color: var(--rp-ink); }
.at thead th { text-align: left; font-size: .72rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase;
  color: var(--rp-muted); background: var(--rp-paper); padding: .45rem .75rem; border-bottom: 1px solid var(--rp-line); }
/* words stay whole: $12,480,0 at the end of a line reads as another figure. Only a cell with a word
   no column could hold (c-long, _report.html: a long file name, a mail address) breaks it, anywhere
   and not break-word: that word must not set the table's width, or the Evidence column leaves the
   screen and, printed, the page (the box prints as it stands) */
.at tbody th, .at tbody td { vertical-align: top; padding: .55rem .75rem; text-align: left; overflow-wrap: normal; }
.at tbody .c-long { overflow-wrap: anywhere; }
.at tbody th { font-weight: 600; }
.at tbody td.c-more { color: var(--rp-ink-2); }
.at .c-src { width: 1%; white-space: nowrap; }
.at-row + .at-row > * { border-top: 1px solid var(--rp-line-soft); }
.at-row.cont > * { border-top-style: dashed; }
.at-row .txt { white-space: pre-wrap; }
.at-row.kind-inference .c-main .txt { font-style: italic; }
.at-row:focus { outline: 2px solid var(--kx-signal); outline-offset: -2px; }
.at-foot { margin: 0 0 .9rem; font-size: .82rem; color: var(--rp-muted); }
.kx-app .rp-sub { font-family: var(--kx-display); font-size: 1rem; line-height: 1.3; font-weight: 600; margin: 1rem 0 .5rem;
  color: var(--rp-ink); }
@media (min-width: 43.75rem) {
  .at-row.cont .c-first .same { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
    white-space: nowrap; }
  .at tbody th.c-first { min-width: 8rem; }
  .at tbody td.c-main, .at tbody td.c-more { min-width: 5.5rem; }
  /* the panel's row: a band on its cells (a table row draws no background of its own) */
  .at-row.is-current > * { background: var(--rp-teal-bg); }
  .at-row.is-current > :first-child { box-shadow: inset 3px 0 0 var(--rp-teal); }
  .at-row.flash > * { animation: rp-flash 1.7s ease-out; }
}
@media (max-width: 43.74rem) {
  .at thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  table.at, .at tbody, .at-row, .at tbody th, .at tbody td { display: block; width: auto; }
  .at-row { padding: .55rem .75rem .65rem; }
  .at-row + .at-row { border-top: 1px solid var(--rp-line-soft); }
  .at-row + .at-row > * { border-top: 0; }
  .at tbody th, .at tbody td { padding: .1rem 0; }
  /* stacked: the panel's row has the band on the row itself */
  .at-row.is-current { background: var(--rp-teal-bg); box-shadow: inset 3px 0 0 var(--rp-teal); }
  .at tbody td.c-more::before { content: attr(data-label) ": "; color: var(--rp-muted); font-size: .8rem; }
  .at .c-src { width: auto; white-space: normal; padding-top: .35rem; }
}

/* supporting detail: native <details>, counts in each summary */
.kx-app .rp-support > h3 { font-family: var(--kx-display); font-size: 1.05rem; font-weight: 600; margin: 0 0 .5rem;
  border: 0; padding: 0; color: var(--rp-ink); }
.recap-note { margin: 0 0 .6rem; }
details.sec { background: var(--rp-card); border: 1px solid var(--rp-line); border-radius: 10px; margin: 0 0 .6rem; }
details.sec > summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: minmax(0, 1fr) 20px; gap: .75rem;
  align-items: center; padding: .6rem 1rem; min-height: 3rem; }
details.sec > summary::-webkit-details-marker { display: none; }
details.sec > summary:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: -2px; border-radius: 10px; }
.sec-title { font-family: var(--kx-display); font-weight: 600; font-size: 1rem; color: var(--rp-ink); }
.sec-sum { font-size: .82rem; color: var(--rp-muted); }
details.sec > summary .kx-icon { color: var(--rp-muted); transition: transform .18s ease; }
details.sec[open] > summary .kx-icon { transform: rotate(180deg); }
.sec-body { padding: .35rem 1rem .9rem; border-top: 1px solid var(--rp-line-soft); }
.sec-body > .lede { margin: .3rem 0 .5rem; }
.full-finding { padding: .7rem 0 .45rem; }
.full-finding + .full-finding { border-top: 1px solid var(--rp-line-soft); }
.full-finding h4 { font-size: .98rem; margin: .15rem 0 .35rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.finding-head { margin: 0; display: flex; flex-wrap: wrap; gap: .25rem .6rem; align-items: baseline; }
.stmts, .pts, .tl, .doclist { list-style: none; margin: 0; padding: 0; }
.stmt, .pts li { display: grid; grid-template-columns: 2.2rem minmax(0, 1fr); gap: 0 .4rem; padding: .45rem .5rem;
  border-radius: 6px; }
.stmt-n { font: 500 .75rem/1.6rem var(--mono); color: var(--rp-muted); }
.stmt p, .pts p, .tl p { margin: 0; overflow-wrap: anywhere; }
.stmt .txt, .pts .txt, .tl .txt { white-space: pre-wrap; }
.tl li { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: .1rem 1rem; padding: .55rem .5rem; border-radius: 6px; }
.tl li + li, .pts li + li { border-top: 1px dashed var(--rp-line-soft); }
.tl-date { font-weight: 600; font-size: .88rem; }
.tl-basis { display: block; font-size: .75rem; font-weight: 400; color: var(--rp-muted); }
.lim-h { font: 600 .72rem/1.3 var(--kx-font); letter-spacing: .07em; text-transform: uppercase; color: var(--rp-muted);
  margin: .75rem 0 .35rem; }
.lims { margin: 0; padding: 0 0 0 1.2rem; display: grid; gap: .35rem; max-width: 80ch; }
.lims li { white-space: pre-wrap; overflow-wrap: anywhere; }
.doclist li { display: grid; grid-template-columns: minmax(0, 1fr); gap: .2rem; padding: .55rem 0; }
.doclist li + li { border-top: 1px dashed var(--rp-line-soft); }
.doc-cn { display: block; font-size: .8rem; color: var(--rp-ink-2); }
.d-kind { font-weight: 600; color: var(--rp-muted); }
.d-title { display: block; font-weight: 500; overflow-wrap: anywhere; }
.d-meta { display: block; font-size: .8rem; color: var(--rp-muted); overflow-wrap: anywhere; }
.cited-for { margin: 0; font-size: .82rem; color: var(--rp-muted); }
/* a cited line's link: at least 2rem (32px) tall to tap */
.cite-link { display: inline-flex; align-items: center; min-height: 2rem; }
.kx-app .cite-link { color: var(--rp-teal-text); text-decoration: underline; text-underline-offset: 2px; }
.kx-app .cite-link.is-on { color: var(--rp-ink); font-weight: 600; }
.sec-tech ul { margin: .35rem 0 0; padding-left: 1.1rem; font-size: .82rem; }
.sec-tech li { overflow-wrap: anywhere; }
.methodology .sec-body .table-scroll { margin: .5rem 0; }
/* a timeline with nothing in it is not a row on screen; printed, it is as it was */
@media screen {
  details.sec.sec-empty { display: none; }
}
.rp-foot { margin: 1rem 0 0; padding-top: .7rem; border-top: 1px solid var(--rp-line); font-size: .82rem; color: var(--rp-muted); }
.print-srcs { font-size: .8rem; color: var(--rp-muted); }
.kx-app .print-only.print-srcs { display: none; }
/* printed only: why a line has its level, and the words each line relies on */
.print-why { font-size: .8rem; color: var(--rp-muted); }
.print-words { margin: .2rem 0 0; padding-left: 1.1rem; font-size: .8rem; }

/* the evidence panel: a drawer, or a modal sheet (below) */
.ev-panel { background: var(--rp-card); border: 1px solid var(--rp-line); border-radius: 12px; display: flex; flex-direction: column;
  min-width: 0; overflow: hidden; }
.ev-panel:focus, #report-main:focus { outline: none; }  /* where a script sends focus, no control */
.ev-inner { display: flex; flex-direction: column; min-height: 0; flex: 1; }
/* out of sight (and of the tab order) until opened; nothing is reserved for it. From 1200px it
   is a drawer under the top bar, over the right of the report, which does not move; the page
   behind it stays live (app.js). From 1800px there is room for both: the same drawer, narrower,
   and the report makes way for it while it is open (the end of this file). */
:root { --ev-w: clamp(26rem, 38vw, 36rem); }
.ev-panel { position: fixed; z-index: 12; top: var(--kx-top-h); right: 0; bottom: 0; width: var(--ev-w); border-radius: 0;
  border-width: 0 0 0 1px; box-shadow: var(--rp-sheet-shadow); transform: translateX(102%); visibility: hidden;
  transition: transform .22s ease, visibility 0s linear .22s; }
.ev-panel.is-open { transform: none; visibility: visible; transition: transform .22s ease, visibility 0s; }
@media (min-width: 112.5rem) {
  :root { --ev-w: clamp(27.5rem, 24vw, 44rem); }
}
/* below 1200px: a modal sheet over the page and the top bar, the page inert behind it */
@media (max-width: 74.99rem) {
  .ev-panel { z-index: 50; top: 0; width: min(38.75rem, 100vw); }
  body.panel-locked { overflow: hidden; }
}
@media (max-width: 43.74rem) {
  .ev-panel { top: auto; left: 0; width: auto; height: 90vh; height: 90dvh; border-radius: 14px 14px 0 0; border-width: 1px 0 0;
    transform: translateY(102%); padding-bottom: env(safe-area-inset-bottom, 0px); }
}
.ev-scrim { position: fixed; inset: 0; z-index: 40; background: var(--rp-scrim); }
.panel-top { flex: none; display: flex; gap: .6rem; align-items: flex-start; padding: .8rem 1.1rem .75rem;
  border-bottom: 1px solid var(--rp-line); }
.pt-text { flex: 1; min-width: 0; }
.ev-panel .eyebrow { font-size: .72rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--rp-muted);
  margin: 0 0 .2rem; }
.kx-app .panel-title { font-family: var(--kx-display); font-size: 1.12rem; line-height: 1.3; font-weight: 600; margin: 0;
  color: var(--rp-ink); overflow-wrap: anywhere; }
.panel-title:focus { outline: none; }
.panel-title:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; border-radius: 4px; }
.pt-tools { flex: none; display: flex; gap: .35rem; }
.ev-panel .panel-icon { width: 2.15rem; height: 2.15rem; display: inline-grid; place-items: center; border: 1px solid var(--rp-line);
  border-radius: 8px; background: var(--rp-card); cursor: pointer; padding: 0; color: var(--rp-ink-2); }
.kx-app .ev-panel .panel-icon:hover { border-color: var(--rp-ink); color: var(--rp-ink); text-decoration: none; }
.ev-panel .panel-icon.is-off { opacity: .35; cursor: default; }
.panel-body { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: .9rem 1.1rem 2rem; }
.panel-error { margin: 0 0 .75rem; padding: .5rem .75rem; border-radius: 8px; background: var(--rp-red-bg); color: var(--rp-red);
  font-size: .88rem; }
.p-intro { margin: 0; font-size: .9rem; color: var(--rp-ink-2); }
.legend { list-style: none; margin: 1rem 0 1.1rem; padding: 0; display: grid; gap: .85rem; font-size: .88rem; color: var(--rp-ink-2); }
.legend li { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: .75rem; align-items: start; }
.legend li > :first-child { justify-self: start; }
.legend strong { color: var(--rp-ink); }
.sample-ctl { font-family: var(--mono); font-size: 1.25rem; line-height: 1; padding: .25rem .5rem; border: 1px solid var(--rp-line);
  border-radius: 6px; color: var(--rp-muted); }
.p-sec-h { font-size: .72rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--rp-muted);
  margin: .15rem 0 .5rem; }
.says { border-left: 3px solid var(--rp-line); padding: .1rem 0 .1rem .75rem; margin: 0 0 .9rem; }
.says .lbl { display: flex; flex-wrap: wrap; gap: .1rem .6rem; align-items: baseline; justify-content: space-between;
  font-size: .8rem; color: var(--rp-muted); margin: 0 0 .2rem; }
.says .t { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.says.inference .t { font-style: italic; }
.sup-row { margin: .4rem 0 0; display: flex; flex-wrap: wrap; gap: .3rem .5rem; align-items: baseline; font-size: .84rem;
  color: var(--rp-ink-2); }
.support { margin: -.35rem 0 1rem; }
.sup-h { margin: 0 0 .3rem; }
.sup-why { margin: 0; font-size: .88rem; color: var(--rp-ink-2); }
.prem { margin: 0 0 .6rem; }
.prem .lbl { margin: 0 0 .2rem; font-size: .82rem; display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.prem-text { margin: 0; padding: .35rem .6rem; border-radius: 6px; background: var(--rp-paper); font-size: .86rem;
  color: var(--rp-ink-2); white-space: pre-wrap; }
.prem-none { margin: 0 0 1rem; font-size: .84rem; color: var(--rp-muted); }
/* a 'nothing found' line's panel: the searches the question ran */
.searches-run { margin: 0 0 .5rem; padding-left: 1.1rem; font-size: .86rem; color: var(--rp-ink-2); }
.searches-run li { margin: .15rem 0; overflow-wrap: anywhere; }
.others { font-size: .82rem; color: var(--rp-muted); margin: -.25rem 0 1rem; }
.ev-card { border: 1px solid var(--rp-line); border-radius: 10px; padding: .75rem .9rem .9rem; margin: 0 0 .9rem; }
.ev-card.not-found { box-shadow: inset 3px 0 0 var(--rp-muted); }
.ev-top { display: flex; flex-wrap: wrap; gap: .35rem .6rem; align-items: center; margin: 0 0 .3rem; }
.ev-for { font-size: .75rem; color: var(--rp-muted); }
.doc-kind { font-size: .75rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--rp-muted); margin: 0; }
.kx-app .doc-title { font-family: var(--kx-font); font-size: .95rem; line-height: 1.35; font-weight: 600; margin: 0 0 .5rem;
  overflow-wrap: anywhere; color: var(--rp-ink); }
.doc-meta { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: .2rem .9rem; margin: .75rem 0 .6rem; font-size: .82rem; }
.doc-meta dt { color: var(--rp-muted); }
.doc-meta dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.cn-row { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .5rem; }
.kx-btn.copy { font: inherit; font-size: .75rem; border: 1px solid var(--rp-line); background: var(--rp-card); border-radius: 6px;
  padding: .05rem .5rem; min-height: 1.65rem; cursor: pointer; color: var(--rp-ink); }
.kx-btn.copy:hover { border-color: var(--rp-ink); }
.speaker { font-size: .86rem; margin: 0 0 .4rem; }
.vnote { margin: 0 0 .5rem; font-size: .84rem; color: var(--rp-muted); }
.ev-note { margin: 0 0 .5rem; font-size: .86rem; color: var(--rp-ink-2); }
.ev-note.ev-flag { color: var(--rp-ink); font-weight: 500; }
.cited-words { margin: 0 0 .5rem; font-size: .86rem; color: var(--rp-ink-2); overflow-wrap: anywhere; }
.ctx-label { font-size: .75rem; color: var(--rp-muted); margin: 0 0 .25rem; }
.passage { margin: 0; padding: .7rem .8rem; background: var(--rp-paper); border: 1px solid var(--rp-line-soft); border-radius: 8px;
  font-size: .88rem; line-height: 1.62; white-space: pre-line; overflow-wrap: anywhere; }
.ev-panel mark { background: var(--rp-mark); color: inherit; box-shadow: inset 0 -2px 0 var(--rp-teal); border-radius: 2px;
  padding: 1px 0; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.noctx { font-size: .8rem; color: var(--rp-muted); margin: .4rem 0 0; }
.open-doc { display: flex; align-items: center; justify-content: center; gap: .5rem; margin-top: .75rem; min-height: 2.5rem;
  padding: .5rem .9rem; border-radius: 8px; background: var(--rp-btn-bg); font-weight: 600; font-size: .9rem; }
.kx-app .open-doc, .kx-app .open-doc:hover { color: var(--rp-btn-text); text-decoration: none; }
.kx-app .open-doc:hover { opacity: .92; }
.staff-codes { margin: .5rem 0 0; }
.staff-codes p { margin: .25rem 0 0; overflow-wrap: anywhere; }

/* phones */
@media (max-width: 43.74rem) {
  .rp.card { padding: .9rem .85rem .85rem; }
  .rp-card { padding: .7rem .75rem .6rem; }
  details.sec > summary { padding: .55rem .8rem; }
  .sec-body { padding: .3rem .7rem .8rem; }
  .stmt, .pts li { grid-template-columns: 1.9rem minmax(0, 1fr); padding: .45rem .35rem; }
  .tl li { grid-template-columns: minmax(0, 1fr); gap: .1rem; }
  .tl-basis { display: inline; margin-left: .35rem; }
  .panel-top { padding: .7rem .85rem .6rem; }
  .panel-body { padding: .75rem .85rem 1.75rem; }
  .ev-card { padding: .7rem .75rem .75rem; }
  .legend li { grid-template-columns: minmax(0, 1fr); gap: .25rem; }
}
@media (prefers-reduced-motion: reduce) {
  .ev-panel, .ev-panel.is-open, details.sec > summary .kx-icon { transition: none; }
}

/* --- The question pinned while its answer scrolls (2026-10-27, the owner's decision A) ----
   A report's header (Question N, its state, the question, links to the parts of the
   answer) is sticky inside its own section (a card with no overflow of its own), just
   under the app's sticky top bar (--kx-top-h, the bar's own height), so it never covers
   the bar and the next question's header pushes it away. Its background spans the card's
   padding. The question is two lines at most until "Show the full question" (app.js shows
   that button only when the question is longer). What a link or the panel scrolls to in a
   report stops below it (scroll-margin-top). Printed in place, the question whole. */
:root { --kx-top-h: 3.75rem; --rp-pin-space: 10.5rem; --rp-measure: 54rem; }
.rp.card > .rp-head { position: sticky; top: var(--kx-top-h); z-index: 5; margin: -1.1rem -1.25rem .45rem;
  padding: .75rem 1.25rem .55rem; background: var(--rp-card); border-bottom: 1px solid var(--rp-line-soft);
  border-radius: 13px 13px 0 0; }
.rp [id] { scroll-margin-top: var(--rp-pin-space); }
.rp-pin-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .2rem 1rem; }
.rp-pin-top .rp-eyebrow { margin: 0 0 .3rem; }
.rp-q-more:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.kx-app .rp-head .rp-q { font-size: 1.15rem; margin: 0; display: -webkit-box; -webkit-box-orient: vertical;
  -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.kx-app .rp-head .rp-q.is-full { display: block; -webkit-line-clamp: unset; line-clamp: none; overflow: visible; }
.kx-app .rp-q-more { font-size: .8rem; margin: .15rem 0 0; color: var(--rp-teal-text); text-underline-offset: 2px; }
.rp.card > .rp-meta { margin: 0 0 .75rem; }
@media (max-width: 43.74rem) {
  :root { --rp-pin-space: 9rem; }
  .rp.card > .rp-head { margin: -.9rem -.85rem .45rem; padding: .65rem .85rem .5rem; }
  .kx-app .rp-head .rp-q { font-size: 1.05rem; }
}

/* --- The reading pane: the full email or attachment over the report (2026-10-27, the
   owner's decision B) --------------------------------------------------------------------
   A dialog (app.js) over the whole page, which is inert behind it and its scrim: a wide
   pane from the right, full screen on phones. Its bar: back to the answer, what it shows,
   "Open in a new tab", close; its body scrolls on its own and holds the document view's
   content (_doc_view.html). The document's side column (thread, family) goes under the
   text unless the pane is wide (a container query: the pane, not the screen). */
.reader-scrim { position: fixed; inset: 0; z-index: 60; background: var(--rp-scrim); }
.reader { position: fixed; z-index: 70; top: 0; right: 0; bottom: 0; width: min(72rem, calc(100vw - 3rem));
  display: flex; flex-direction: column; background: var(--rp-paper); border-left: 1px solid var(--rp-line);
  box-shadow: var(--rp-sheet-shadow); }
.reader:focus { outline: none; }
body.reader-locked { overflow: hidden; }
/* the page behind a modal keeps its width (the scrollbar's room stays) */
html:has(body.panel-locked, body.reader-locked) { scrollbar-gutter: stable; }
.reader-bar { flex: none; display: flex; align-items: center; gap: .5rem .75rem; padding: .6rem 1rem;
  background: var(--rp-card); border-bottom: 1px solid var(--rp-line); }
.reader-head { flex: 1; min-width: 0; }
.reader-kind { margin: 0; font-size: .72rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase;
  color: var(--rp-muted); }
.kx-app .reader-title { margin: 0; font-size: 1.05rem; line-height: 1.3; color: var(--rp-ink); overflow-wrap: anywhere;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.reader-title:focus { outline: none; }
.reader-title:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; border-radius: 4px; }
.kx-btn.reader-back { flex: none; gap: .3rem; padding: 0 .75rem 0 .5rem; }
.reader-page { flex: none; display: inline-flex; align-items: center; gap: .35rem; font-size: .85rem; min-height: 2.15rem; }
.kx-app .reader-page { color: var(--rp-teal-text); text-decoration: underline; text-underline-offset: 2px; }
.kx-btn.reader-x { flex: none; width: 2.15rem; min-height: 2.15rem; height: 2.15rem; display: inline-grid; place-items: center;
  padding: 0; border-radius: 8px; color: var(--rp-ink-2); }
.reader-x:hover { border-color: var(--rp-ink); color: var(--rp-ink); }
.reader-back:focus-visible, .reader-page:focus-visible, .reader-x:focus-visible {
  outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.reader-body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 1rem 1.25rem 2.5rem;
  container-type: inline-size; }
.reader-body:focus { outline: none; }
.reader-note { margin: 0; color: var(--rp-muted); font-size: .9rem; }
.reader-doc .doc-badges { margin: 0 0 .5rem; }
.reader-doc .doc-layout { grid-template-columns: minmax(0, 1fr); }
/* the document's side column, on the page too: it is no app sidebar, whatever its class */
.doc-layout > .side { position: static; height: auto; overflow: visible; display: block; padding: 0;
  background: none; border: 0; }
@container (min-width: 60rem) {
  .reader-doc .doc-layout { grid-template-columns: minmax(0, 1fr) 20rem; }
}
.reader .cite-anchor { scroll-margin-top: 1rem; }
@media (max-width: 43.74rem) {
  .reader { width: 100vw; border-left: 0; box-shadow: none; padding-bottom: env(safe-area-inset-bottom, 0px); }
  .reader-bar { padding: .5rem .75rem; gap: .4rem .5rem; }
  .reader-page { display: none; }
  .reader-body { padding: .75rem .85rem 2rem; }
}
/* the full page opened from a report: the way back to the answer */
.doc-back { margin: .1rem 0 .6rem; }

/* --- Follow-up flags (2026-10-27, the owner's decision C) ----------------------------------
   "Flag for follow-up" on an evidence card, in the document view and the reading pane
   (_follow_up.html), and a case's For follow-up page (follow_up.html) */
.fu { margin: .75rem 0 0; font-size: .86rem; }
.fu form { margin: 0; }
.ev-card .fu { border-top: 1px solid var(--rp-line-soft); padding-top: .65rem; }
.fu-state { display: flex; align-items: center; gap: .45rem; margin: 0; font-weight: 600; color: var(--kx-signal-text);
  overflow-wrap: anywhere; }
.fu-state .kx-icon, .fu .kx-btn .kx-icon { color: var(--kx-signal); }
.fu-note { margin: .4rem 0 0; padding: .45rem .65rem; background: var(--kx-signal-bg); border-radius: 8px;
  white-space: pre-line; overflow-wrap: anywhere; color: var(--kx-text); }
/* who wrote the note and when (anyone at the firm may write it) */
.fu-note-by { margin: .25rem 0 0; color: var(--kx-muted); font-size: .78rem; overflow-wrap: anywhere; }
/* a note refused because the flag was removed meanwhile, shown so it is not lost */
.fu-unsaved { background: transparent; border: 1px dashed var(--kx-line); }
.fu-unsaved-label { font-weight: 600; }
.fu-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1rem; margin-top: .45rem; }
.fu-edit { min-width: 0; }
.fu-edit > summary { display: inline-flex; align-items: center; min-height: 2rem; cursor: pointer; text-decoration: underline;
  color: var(--kx-ink); }
.fu-edit[open] { flex: 1 1 100%; }
.fu-note-form { display: flex; flex-direction: column; gap: .45rem; margin-top: .3rem; }
.fu-note-form label { display: flex; flex-direction: column; gap: .3rem; font-size: .82rem; font-weight: 600; color: var(--kx-text); }
.fu-note-form label .muted { font-weight: 400; }
.fu-note-form textarea { font-weight: 400; resize: vertical; min-height: 4.5rem; }
.fu-note-form .kx-btn { align-self: flex-start; }
.fu-note-help { margin: 0; }
.fu-error { margin: .4rem 0 0; color: var(--kx-bad); font-weight: 500; }
.fu-off { display: flex; align-items: center; gap: .45rem; margin: .4rem 0 0; color: var(--priv); font-size: .82rem; }
.reader-doc > .fu, main > .fu { margin: .2rem 0 1rem; }
/* the sidebar's count of the case's flagged documents */
.nav-count { margin-left: auto; min-width: 1.45rem; padding: 0 .4rem; border-radius: 999px; background: var(--kx-signal-bg);
  color: var(--kx-signal-text); font-size: .72rem; font-weight: 600; line-height: 1.45rem; text-align: center;
  font-variant-numeric: tabular-nums; }
/* the For follow-up page */
.fu-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: .75rem 1.5rem;
  margin-bottom: 1rem; }
.fu-sub { margin: 0; max-width: 46rem; }
.fu-who { display: inline-flex; gap: .15rem; padding: .2rem; border: 1px solid var(--kx-line); border-radius: 999px; background: #fff; }
.kx-app .fu-who a { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.1rem; padding: 0 .9rem; border-radius: 999px;
  color: #33405A; font-size: .88rem; font-weight: 500; text-decoration: none; }
.kx-app .fu-who a:hover { background: var(--kx-paper); color: var(--kx-ink); }
.kx-app .fu-who a[aria-current] { background: var(--kx-ink); color: #fff; }
.fu-n { font-variant-numeric: tabular-nums; opacity: .75; }
.fu-message { margin: 0 0 1rem; }
.fu-exports { display: flex; flex-direction: column; gap: .6rem; margin: 0 0 1rem; }
.fu-exports:empty { display: none; }
.fu-export { padding: .75rem 1rem; background: #fff; border: 1px solid var(--kx-line); border-left: 3px solid var(--kx-signal);
  border-radius: 10px; }
.fu-export p { margin: 0; }
.fu-export p + p { margin-top: .35rem; }
.fu-export-get { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .8rem; }
.fu-tools { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
/* one investigation's flags (2026-11-05): the menu as wide as its longest choice, at most the line */
.fu-filter { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .75rem; margin: 0 0 1rem; }
.fu-filter-label { font-size: .85rem; font-weight: 600; color: var(--kx-ink); }
.kx-app .fu-filter .fu-inv { width: auto; max-width: 100%; min-height: 2.4rem; }
.fu-tools-label { font-size: .85rem; font-weight: 600; color: var(--kx-muted); }
.fu-tools > .kx-btn:last-child { margin-left: auto; }  /* Remove flag, apart from the exports */
.fu-hint { margin: .45rem 0 .75rem; }
.fu-table th.fu-pick, .fu-table td.fu-pick { width: 2.6rem; padding-right: 0; }
.fu-table input[type=checkbox] { width: 1.1rem; height: 1.1rem; margin: .15rem 0 0; accent-color: var(--kx-ink); }
.table-scroll > table.data.fu-table { min-width: 52rem; }
/* a long word or address breaks only when its column cannot grow (break-word keeps the
   columns as wide as their words; the box scrolls) */
.fu-table td { overflow-wrap: break-word; }
.fu-table .fu-title { min-width: 11rem; }
.fu-table .fu-date { min-width: 6.5rem; }
.fu-table .fu-note-cell { min-width: 11rem; white-space: pre-line; }
.fu-table .fu-people, .fu-table .fu-flagged { min-width: 10rem; }
.fu-table tr.fu-priv td { background: #FDF7FA; }
.fu-empty p { margin: 0 0 .4rem; }
@media (max-width: 43.74rem) {
  .fu-tools > .kx-btn:last-child { margin-left: 0; }
}
@media print {
  .fu-actions, .fu form, .fu-tools, .fu-hint, .fu-pick, .fu-exports { display: none !important; }
  /* the page's table sits in the form of its exports: the list prints, its controls do not. Its
     columns share the paper, with floors of their own; it starts on the first page */
  form.fu-list { display: block !important; }
  .kx-app table.data.fu-table { break-inside: auto; }
  .fu-table tr { break-inside: avoid; }
  table.fu-table th { white-space: normal; }
  table.fu-table th, table.fu-table td { padding-left: .5rem; padding-right: .5rem; }
  .fu-table .fu-date { min-width: 5.5rem; }
  .fu-table .fu-title, .fu-table .fu-people { min-width: 7rem; }
  .fu-table .fu-note-cell { min-width: 8rem; }  /* a figure in a note stays whole */
  .fu-table .fu-flagged { min-width: 0; }
  .fu-table .fu-title, .fu-table .fu-note-cell, .fu-table .fu-people, .fu-table .fu-flagged { overflow-wrap: anywhere; }
}

/* --- Original files (2026-10-27, the owner's decision E) ------------------------------------
   "Open original", "Download original" and "Download the email" (_original.html) on an
   evidence card, in the document view and the reading pane, and on the For follow-up page;
   the page before a file that can hold macros, or one that could not be opened (original.html) */
.og { margin: .6rem 0 0; font-size: .86rem; }
.kx-app .og-link, .og-warn > summary { display: inline-flex; align-items: center; flex-wrap: wrap; gap: .1rem .4rem;
  min-height: 2rem; font-weight: 600; color: var(--kx-ink); text-decoration: underline; text-underline-offset: 2px;
  cursor: pointer; overflow-wrap: anywhere; }
.og-link .kx-icon, .og-warn > summary .kx-icon { flex: none; }
.og-meta { display: inline-block; font-weight: 400; color: var(--kx-muted); }  /* not underlined */
.og-warn > summary { list-style: none; }
.og-warn > summary::-webkit-details-marker { display: none; }
.og-warn-text { margin: .35rem 0 .5rem; padding: .5rem .7rem; background: var(--kx-signal-bg); border-radius: 8px;
  color: var(--kx-text); }
.og-off, .og-note { margin: .3rem 0 0; color: var(--kx-muted); font-size: .82rem; }
.og-off { color: var(--priv); }
.reader-doc > .og, main > .og { margin: .1rem 0 .3rem; }
.fu-table .og { margin-top: .35rem; font-size: .82rem; }
.fu-table .og-link, .fu-table .og-warn > summary { min-height: 1.6rem; }
.og-card { max-width: 44rem; }
.og-file { overflow-wrap: anywhere; }
.og-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0 0; }
@media print {
  .og { display: none !important; }
}

/* printed: the whole report (app.js opens every section), no panel and no buttons; each
   item keeps its mark (or what it rests on) and names what it cites; Findings in full is
   the answer again, so it is left out */
@media print {
  .ev-panel, .ev-scrim, .src-btn, .sec-findings, details.sec > summary .kx-icon, .copy, .open-doc { display: none !important; }
  .kx-app .print-only.print-srcs { display: inline; }
  .lvl { border-width: 1px; border-style: solid; }
  .lvl-inference { border-style: dashed; }
  .lvl-search { border-style: dotted; }
  /* the report card runs over pages: kept whole it left page 1 blank under the title */
  .kx-app .rp.card { break-inside: auto; }
  .rp-card { break-inside: avoid; }
  .rp-card.is-folded, .ac-stmt.is-folded, .kx-app .rp-sub.is-folded { display: block; }
  .at-row { break-inside: avoid; }
  .at-row.cont .c-first .same { position: static; width: auto; height: auto; overflow: visible; clip: auto; }
  .kx-app .at .print-only.print-srcs { display: block; white-space: normal; }
  .at .c-src { white-space: normal; width: 22%; }
  /* six columns of whole words fit A4 (the paper does not scroll) */
  .at thead th, .at tbody th, .at tbody td { padding-left: .5rem; padding-right: .5rem; }
  /* the question's header in place, not pinned; the question whole; no reading pane */
  .rp.card > .rp-head { position: static; border-bottom: 0; }
  .kx-app .rp-head .rp-q { display: block; -webkit-line-clamp: unset; line-clamp: none; overflow: visible; }
  /* every question whole and every mark's reason, on paper (2026-11-04) */
  .rp.rp-collapsed .rp-fold { display: block; }
  .rp.rp-collapsed .rp-answer-h { position: static; width: auto; height: auto; overflow: visible; clip: auto;
    clip-path: none; white-space: normal; }
  .rp .lvl-why[hidden] { display: block !important; }
  .lvl-why { background: none; border: 0; padding: 0; }
  .rp-unconfirmed { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
  .print-legend .legend { margin: .3rem 0 .8rem; gap: .3rem; }
  .rp-fold-btn, .rp-search, .pop-menu, .rp-fold-sum { display: none !important; }
  mark.kx-hit { background: none; outline: 0; padding: 0; }
  .rp-q-more, .reader, .reader-scrim, .doc-back { display: none !important; }
  /* a table takes the page: a box cannot be scrolled on paper (the searches lost their last
     columns) */
  .table-scroll, .admin-scroll { overflow: visible; }
  .table-scroll > table.data, .table-scroll > table.data.admin-table,
  .table-scroll > table.data.fu-table { min-width: 0; }
}

/* Add files (uploads.html): a file's SHA-256 wraps instead of widening the table */
.up-files .up-hash { word-break: break-all; }
.up-files td:first-child { min-width: 9rem; max-width: 28rem; overflow-wrap: anywhere; }
.up-chosen .kx-input { min-width: 8rem; }
.up-chosen .up-remove { margin-top: .35rem; }
/* a file the server has whole (upload.js done()): a green check */
.up-chosen .up-done { color: var(--kx-good); font-weight: 600; }
.up-chosen .up-check { margin-right: .3rem; }
.up-stage progress, .staff-progress progress { width: 100%; }
/* a file's step of six on Add files (progress.STEPS) */
.up-files .up-step { color: var(--rp-muted); font-size: .85em; white-space: nowrap; }

/* Processing jobs (2026-11-05, the owner: "comprehensively re-design the admin dashboard"): a
   case per block, its step and percentage in its head, its six steps as a strip (done green, now
   blue, waiting dashed, stuck red; the word always names the step, so colour is never the only
   signal), its files by number, its jobs */
.sj-case { border-top: 1px solid var(--rp-line); padding: 1rem 0 1.1rem; }
.sj-case:first-child { border-top: 0; padding-top: .2rem; }
.sj-case.is-trouble { border-left: 2px solid var(--kx-bad); padding-left: .85rem; }
.sj-case-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: .35rem .75rem; }
.sj-code { font-weight: 700; font-size: 1.05rem; }
.sj-stage { font-weight: 600; color: var(--rp-ink); }
.sj-track { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: .7rem 0 .55rem; padding: 0; }
.sj-track li { flex: 1 1 7.5rem; border-top: 3px solid var(--rp-line); padding-top: .3rem;
  font-size: .8rem; color: var(--rp-muted); }
.sj-track .sj-n { font-weight: 700; margin-right: .15rem; }
.sj-track li.is-done { border-top-color: var(--kx-good); color: var(--rp-ink); }
.sj-track li.is-done .sj-n::after { content: " \2713"; color: var(--kx-good); }
.sj-track li.is-now { border-top-color: var(--run); color: var(--rp-ink); font-weight: 600; }
.sj-track li.is-queued { border-top-style: dashed; border-top-color: var(--run-line); color: var(--rp-ink); }
.sj-track li.is-stuck { border-top-color: var(--kx-bad); color: var(--kx-bad); font-weight: 600; }
.sj-figures { margin: .25rem 0; }
.sj-case progress { width: 100%; max-width: 32rem; display: block; }
.sj-files { margin-top: .5rem; }
.sj-files td progress { max-width: 12rem; margin-top: .2rem; }
.sj-jobs { list-style: none; margin: .5rem 0 0; padding: 0; }
.sj-jobs li { margin: .15rem 0; }

/* --- The investigation page: a question folds, the page can be searched (2026-11-04) -------------
   The owner, with two attorneys: "there will be many" questions, and "a search feature with a
   filter for what part it searched". A folded question (rp-collapsed: the page folds all but the
   last) shows its header and its direct answer; its Expand button (app.js; none without script,
   noscript.css) or a click on the question opens it, and so does any link, search result or
   deep link into it. The marks are said once, behind "What the marks mean". */
.rp-fold-btn { margin-left: auto; display: inline-flex; align-items: center; gap: .3rem; }
.rp-fold-btn .kx-icon { transition: transform .18s ease; }
.rp-fold-btn[aria-expanded="false"] .kx-icon { transform: rotate(-90deg); }
.rp.card { scroll-margin-top: calc(var(--kx-top-h) + .75rem); }
/* on screen only: printed, every question is whole */
@media screen {
  .rp.rp-collapsed .rp-fold { display: none; }
  /* "Answer" is for a screen reader (2026-11-04, "slim"); a question that stopped says so */
  .kx-app .rp-answer-h.is-quiet { position: absolute; width: 1px; height: 1px; margin: 0; overflow: hidden;
    clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
  /* the search's parts once the box is in use: focused, or holding a query */
  .rp-search:not(:focus-within):has([data-search-q]:placeholder-shown) .rp-search-parts { display: none; }
  .rp.rp-collapsed .rp-answer-h { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
    clip-path: inset(50%); white-space: nowrap; }
  .rp.rp-collapsed .rp-answer, .rp.rp-collapsed .rp-direct { margin-bottom: 0; }
  .rp.card.rp-collapsed { padding-bottom: .85rem; }
  .rp.rp-collapsed > .rp-head { margin-bottom: .6rem; }
  .rp.rp-collapsed .rp-q { cursor: pointer; }
}
.rp-hits { display: inline-flex; align-items: center; min-height: 1.4rem; padding: 0 .5rem; border-radius: 999px;
  background: var(--rp-flash); color: var(--rp-ink); font-size: .75rem; font-weight: 600; }
mark.kx-hit { background: var(--rp-flash); color: inherit; border-radius: 2px; padding: 0 1px; }
mark.kx-hit.is-here { outline: 2px solid var(--rp-amber); }

.rp-search { background: var(--rp-card); border: 1px solid var(--rp-line); border-radius: 10px; padding: .65rem .85rem .7rem;
  margin: 0 0 1rem; }
.rp-search-row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.rp-search-box { display: flex; align-items: center; gap: .45rem; flex: 1 1 20rem; max-width: 36rem; min-width: 0;
  border: 1px solid var(--rp-line); border-radius: 8px; padding: 0 .6rem; background: var(--rp-card); color: var(--rp-muted); }
.rp-search-box:focus-within { border-color: var(--rp-ink-2); box-shadow: 0 0 0 2px var(--rp-line); }
.kx-app .rp-search-box .kx-input { border: 0; box-shadow: none; outline: none; flex: 1; min-width: 0; padding: .5rem 0;
  background: transparent; }
.rp-fold-all { margin-left: auto; display: flex; gap: 1rem; font-size: .85rem; }
.kx-app .rp-fold-all .kx-link-btn { color: var(--rp-teal-text); text-underline-offset: 2px; min-height: 1.75rem; }
.rp-search-parts { border: 0; margin: .55rem 0 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .4rem;
  min-width: 0; }
.rp-search-parts legend { float: left; padding: 0; margin: 0 .35rem 0 0; font-size: .8rem; color: var(--rp-muted); }
.part-check { display: inline-flex; align-items: center; gap: .35rem; min-height: 1.9rem; padding: .1rem .65rem;
  border: 1px solid var(--rp-line); border-radius: 999px; font-size: .8rem; color: var(--rp-ink-2); cursor: pointer;
  background: var(--rp-card); }
.part-check input { margin: 0; accent-color: var(--rp-ink); }
.part-check:has(input:checked) { background: var(--rp-neutral-bg); border-color: var(--rp-ink-2); color: var(--rp-ink); }
.part-check:has(input:focus-visible) { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.rp-search-results { list-style: none; margin: .6rem 0 0; padding: 0; max-height: min(24rem, 50vh); overflow: auto;
  border-top: 1px solid var(--rp-line-soft); }
.rp-search-results li + li { border-top: 1px dashed var(--rp-line-soft); }
.hit-btn { display: block; width: 100%; text-align: left; background: none; border: 0; padding: .45rem .35rem; cursor: pointer;
  font: inherit; color: var(--rp-ink); border-radius: 6px; }
.hit-btn:hover { background: var(--rp-tint); }
.hit-btn:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: -2px; }
.hit-where { display: block; font-size: .72rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase;
  color: var(--rp-muted); }
.hit-text { display: block; font-size: .88rem; overflow-wrap: anywhere; }
.rp-search-more { margin: .4rem 0 0; }

/* "What the marks mean": a small panel under its button, closed by a click elsewhere or Escape */
.pop-menu { position: relative; }
.pop-menu > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: .35rem; }
.pop-menu > summary::-webkit-details-marker { display: none; }
.pop-body { position: absolute; left: 0; top: calc(100% + .4rem); z-index: 20; width: min(32rem, calc(100vw - 2rem));
  background: var(--rp-card); border: 1px solid var(--rp-line); border-radius: 10px; padding: .85rem 1rem .6rem;
  box-shadow: 0 10px 30px rgba(11, 31, 58, .16); font-size: .88rem; color: var(--rp-ink-2); }
.pop-body p { margin: 0 0 .5rem; }
.pop-body .legend { margin: .5rem 0 .7rem; gap: .6rem; }
.pop-body .legend li { grid-template-columns: 7.5rem minmax(0, 1fr); }
.kx-app .pop-body a { color: var(--rp-teal-text); text-decoration: underline; text-underline-offset: 2px; }
@media screen and (min-width: 62.51rem) {
  .pop-body { left: auto; right: 0; }
}
@media (max-width: 43.74rem) {
  .pop-body .legend li { grid-template-columns: minmax(0, 1fr); }
}
/* folded: what the question holds, under it */
.rp-fold-sum { display: none; margin: -.25rem 0 0; font-size: .84rem; color: var(--rp-muted); }
@media screen {
  .rp.rp-collapsed .rp-fold-sum { display: block; }
}
.rp.rp-collapsed .rp-direct + .rp-fold-sum, .rp.rp-collapsed .rp-answer + .rp-fold-sum { margin-top: .4rem; }

/* --- The reading page (2026-11-04, "Brief") --------------------------------------------------
   The owner, testing with the attorneys and a third party: "pills everywhere ... clutter and
   inconsistent navigation": the report redesigned from zero (ask_read.html, _read.html). It reads
   like a memo, not a dashboard: a rail of the questions (beside the report from a laptop up), one
   question at a time; the question, the answer and the findings in a serif, each source a number
   (a brief's footnote), each mark a quiet word with a glyph that shows its reason on a click
   (dashed ring Not confirmed, half ring Inference, barred ring Nothing found), the rest folded rows
   with hairlines. No pill, no band, no card inside a card. The type is Source Serif 4 for the
   prose and Inter for the rest, served by Korpex itself (static/fonts, each with its OFL licence:
   the CSP serves nothing from elsewhere; the owner's OK to fetch them, 2026-11-04), upright only,
   in the Latin, Latin Extended and Greek sets; Inter on this page only for now. */
@font-face { font-family: "Source Serif 4"; font-style: normal; font-display: swap; font-weight: 200 900;
  src: url("/static/fonts/source-serif-4/source-serif-4-latin-wght-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Source Serif 4"; font-style: normal; font-display: swap; font-weight: 200 900;
  src: url("/static/fonts/source-serif-4/source-serif-4-latin-ext-wght-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Source Serif 4"; font-style: normal; font-display: swap; font-weight: 200 900;
  src: url("/static/fonts/source-serif-4/source-serif-4-greek-wght-normal.woff2") format("woff2");
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; }
@font-face { font-family: "Inter"; font-style: normal; font-display: swap; font-weight: 100 900;
  src: url("/static/fonts/inter/inter-latin-wght-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Inter"; font-style: normal; font-display: swap; font-weight: 100 900;
  src: url("/static/fonts/inter/inter-latin-ext-wght-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Inter"; font-style: normal; font-display: swap; font-weight: 100 900;
  src: url("/static/fonts/inter/inter-greek-wght-normal.woff2") format("woff2");
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; }
:root { --br-serif: "Source Serif 4", Georgia, "Times New Roman", serif; --br-rail: 18.5rem;
  --br-mark: #4A5A6E; --br-mark-line: #9AA6B5; }
.kx-app main.main-read { padding: 0; max-width: none; --kx-font: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
  font-family: var(--kx-font); }
.br-layout { display: flex; flex-wrap: wrap; align-items: stretch; min-height: calc(100vh - var(--kx-top-h)); }
.br-rail { flex: 1 1 var(--br-rail); max-width: 100%; box-sizing: border-box; padding: 1.5rem 1.25rem 2rem;
  display: flex; flex-direction: column; gap: 1.5rem; }
.br-main { flex: 999 1 36rem; min-width: 0; box-sizing: border-box; background: var(--rp-card);
  border-left: 1px solid var(--rp-line); padding: 1.25rem clamp(1.25rem, 4vw, 3.5rem) 5rem; }
@media (min-width: 62.51rem) {
  .br-rail { flex: 0 0 var(--br-rail); position: sticky; top: var(--kx-top-h); align-self: flex-start;
    max-height: calc(100vh - var(--kx-top-h)); overflow-y: auto; }
}
@media (max-width: 62.5rem) {
  .br-main { border-left: 0; border-top: 1px solid var(--rp-line); }
}
.br-rail-head { display: flex; flex-direction: column; gap: .2rem; }
.kx-app .br-back { display: inline-flex; align-items: center; gap: .35rem; min-height: 2rem; font-size: .84rem;
  color: var(--rp-muted); text-decoration: none; }
.kx-app .br-back:hover { color: var(--rp-ink); }
.br-title { margin: .4rem 0 0; font: 600 1.05rem/1.3 var(--kx-font); color: var(--rp-ink); }
.br-scope { margin: 0; font-size: .82rem; color: var(--rp-muted); }
.br-qlist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .2rem; }
/* "Question 1", not the question (the owner, 2026-11-04): its views under it; the question is the page's */
.kx-app .br-qlink { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .3rem; padding: .7rem .8rem;
  border-radius: 10px; color: var(--rp-ink-2); text-decoration: none; font-size: .9rem; font-weight: 500; line-height: 1.45; }
.kx-app .br-qlink:hover { background: var(--rp-neutral-bg); color: var(--rp-ink); }
.br-qlink:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.br-qn { font-variant-numeric: tabular-nums; }
.br-qstate { flex-basis: 100%; font-size: .78rem; font-weight: 400; color: var(--rp-muted); }
.br-qitem.is-current { background: var(--rp-card); border-radius: 12px;
  box-shadow: 0 1px 2px rgba(11, 31, 58, .06), 0 0 0 1px var(--rp-line); }
.kx-app .br-qitem.is-current .br-qlink { color: var(--rp-ink); font-weight: 600; }
.kx-app .br-qitem.is-current .br-qlink:hover { background: none; }
.br-toc { display: none; list-style: none; margin: -.2rem 0 0; padding: 0 .8rem .6rem 1.6rem; }
.br-qitem.is-current .br-toc { display: block; }
.kx-app .br-toc a { display: flex; align-items: center; justify-content: space-between; min-height: 1.9rem; font-size: .83rem;
  color: var(--rp-ink-2); text-decoration: none; }
.kx-app .br-toc a:hover { color: var(--rp-teal-text); }
.br-toc a span { color: var(--rp-muted); font-variant-numeric: tabular-nums; }
/* the view shown: bold, in the ink (the owner, 2026-11-04: "make the menu choices bold to show which one you are
   selecting") */
.kx-app .br-toc a.is-on { font-weight: 600; color: var(--rp-ink); }
.kx-app .br-toc a.is-on span { color: var(--rp-ink-2); }
/* the follow-up box under the question's first view (the owner, 2026-11-04: "move the follow up question
   box under the Answer in the question area"); on its other views out of the way (app.js: data-ask-off) */
.br-ask { max-width: 54rem; margin: 2rem auto 0; display: flex; flex-direction: column; gap: .6rem; padding: 1rem 1.1rem;
  background: var(--rp-tint); border-radius: 12px; box-shadow: 0 0 0 1px var(--rp-line); }
@media screen {
  .br-qs[data-ask-off] + .br-ask { display: none; }
}
.br-ask textarea { width: 100%; box-sizing: border-box; resize: vertical; min-height: 4.5rem; border: 1px solid var(--rp-line);
  border-radius: 8px; padding: .6rem .7rem; font: inherit; font-size: .9rem; line-height: 1.5; color: var(--rp-ink); }
.br-ask textarea:focus { outline: 2px solid var(--kx-signal); outline-offset: 1px; }
.br-ask-foot { display: flex; align-items: center; justify-content: flex-end; gap: 1rem; font-size: .8rem; color: var(--rp-muted); }
.br-label { margin: 0; font: 600 .7rem/1.2 var(--kx-font); letter-spacing: .09em; text-transform: uppercase; color: var(--rp-muted); }
.br-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .5rem; max-width: 54rem;
  margin: 0 auto 1.5rem; }
.kx-app .br-search-open { margin-right: auto; display: inline-flex; align-items: center; gap: .55rem; min-height: 2.5rem;
  width: min(22rem, 100%); padding: 0 .75rem; border: 1px solid var(--rp-line); border-radius: 8px; background: var(--rp-tint);
  color: var(--rp-muted); font-size: .88rem; text-decoration: none; }
.kx-app .br-search-open:hover { border-color: var(--rp-ink-2); color: var(--rp-ink); }
.br-search-open span { flex: 1; text-align: left; }
.br-tools kbd, .br-search kbd { font: 500 .72rem/1 var(--kx-font); border: 1px solid var(--rp-line); border-radius: 5px;
  padding: .15rem .4rem; background: var(--rp-card); color: var(--rp-muted); }

/* one question at a time (app.js adds is-one) on screen; without script, and on paper, every one */
@media screen {
  .br-qs.is-one > [data-pane]:not(.is-shown) { display: none; }
}
.br-q { max-width: 54rem; margin: 0 auto; }
.br-q [id] { scroll-margin-top: calc(var(--kx-top-h) + 1rem); }
.br-head { margin: 0 0 2.25rem; }
.br-eyebrow { margin: 0; font: 600 .7rem/1.6 var(--kx-font); letter-spacing: .09em; text-transform: uppercase; color: var(--rp-muted); }
/* the question and the answer a step above the body (the owner, 2026-11-04: "much larger than the rest") */
.kx-app .br-question { margin: .5rem 0 0; font-family: var(--br-serif); font-size: 1.2rem; line-height: 1.45;
  font-weight: 600; letter-spacing: -.005em; color: var(--rp-ink); overflow-wrap: anywhere; }
.br-question:focus { outline: none; }
.br-meta { margin: .7rem 0 0; font-size: .85rem; color: var(--rp-muted); }
/* a question's views (2026-11-04: one at a time, chosen in the rail; app.js adds is-one on screen):
   each its title, a line saying what it holds, its content open, then Previous / Next */
@media screen {
  .br-parts.is-one > [data-part]:not(.is-shown) { display: none; }
  /* the question stands the same over every view (the owner, 2026-11-04: "the text of the question
     should stay steady / same font for all"): only what is under it changes */
}
.br-part-h { margin: 0; font: 600 .76rem/1.2 var(--kx-font); letter-spacing: .1em; text-transform: uppercase; color: var(--rp-teal-text); }
.br-part-h:focus { outline: none; }
.br-lede { margin: .5rem 0 1.25rem; font-size: .9rem; line-height: 1.5; color: var(--rp-muted); max-width: 64ch; }
.br-part .lim-h { margin: 1rem 0 .5rem; }
.br-pager { display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin: 2.5rem 0 0; padding-top: 1rem; border-top: 1px solid var(--rp-line); }
.kx-app .br-pager a { display: inline-flex; align-items: center; gap: .6rem; min-height: 3rem; padding: .4rem .6rem; border-radius: 8px;
  color: var(--rp-ink); text-decoration: none; font-weight: 600; font-size: .95rem; }
.kx-app .br-pager a:hover { background: var(--rp-neutral-bg); color: var(--rp-teal-text); }
.br-pager a:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.br-pager-k { display: block; font: 600 .68rem/1.3 var(--kx-font); letter-spacing: .08em; text-transform: uppercase; color: var(--rp-muted); }
.kx-app .br-pager .br-next { margin-left: auto; text-align: right; }
.br-pager .kx-icon { color: var(--rp-muted); flex: none; }
.br-direct { margin: .85rem 0 0; }
/* the answer in the report's own text size (the owner, 2026-11-04: "still bigger than the rest.
   should be the same"), a little weight and the ink to set it apart */
.kx-app .br-direct-t { margin: 0; font-family: var(--br-serif); font-size: 1.02rem; line-height: 1.7;
  font-weight: 500; color: var(--rp-ink); max-width: 40em; }
.br-answer .rp-note, .br-answer .table-note { margin: 1rem 0 0; }
/* the table: hairlines, a rule under its head, each row's sources a column of numbers */
.br-table-wrap { margin: 1.25rem 0 0; overflow-x: auto; }
.br-table { width: 100%; border-collapse: collapse; font-size: .92rem; line-height: 1.5; color: var(--rp-ink-2); }
.br-table thead th { padding: 0 1rem .7rem 0; text-align: left; vertical-align: bottom; font: 600 .68rem/1.2 var(--kx-font);
  letter-spacing: .08em; text-transform: uppercase; color: var(--rp-muted); border-bottom: 1px solid var(--rp-ink); }
.br-table tbody th, .br-table td { padding: .85rem 1rem .85rem 0; text-align: left; vertical-align: top;
  border-bottom: 1px solid var(--rp-line-soft); }
.br-table tbody th { font-weight: 600; color: var(--rp-ink); }
.br-table .br-same { color: var(--rp-muted); font-weight: 400; }
.br-table .br-c-src { width: 1%; white-space: nowrap; padding-right: 0; }
.br-c-src .br-cite { display: inline-block; min-width: 1.4rem; margin-right: .2rem; }
.br-row.is-current > * { background: var(--rp-teal-bg); }
/* each source a number: the same email or attachment has the same number in the whole question */
.kx-app .br-cite { color: var(--rp-teal-text); font-weight: 600; text-decoration: none; font-variant-numeric: tabular-nums;
  font-family: var(--kx-font); }
.kx-app .br-cite:hover { color: var(--rp-ink); text-decoration: underline; }
.br-sup { font-size: .68em; vertical-align: super; line-height: 0; padding: 0 .1em; }
.br-sep { color: var(--rp-muted); padding: 0; font-family: var(--kx-font); }
.kx-app .br-cite.is-on { background: var(--rp-ink); color: #fff; border-radius: 3px; padding: 0 .3em; text-decoration: none; }
.br-cite:focus-visible, .br-sn:focus-visible, .br-basis:focus-visible, .br-fsum:focus-visible {
  outline: 2px solid var(--kx-signal); outline-offset: 2px; border-radius: 3px; }
/* the findings: numbered propositions, each folding its statements */
.br-findings { list-style: none; margin: .75rem 0 0; padding: 0; }
.br-finding { border-top: 1px solid var(--rp-line); }
.br-finding:last-child { border-bottom: 1px solid var(--rp-line); }
.br-fsum { display: grid; grid-template-columns: 2rem minmax(0, 1fr) 1.25rem; gap: .75rem; padding: 1.2rem 0; cursor: pointer; list-style: none; }
.br-fsum::-webkit-details-marker { display: none; }
.br-fn { font-family: var(--br-serif); font-size: 1.05rem; line-height: 1.5; font-weight: 600; color: var(--rp-teal-text); }
.br-prop { display: block; font-family: var(--br-serif); font-size: 1.05rem; line-height: 1.5; font-weight: 600; color: var(--rp-ink); }
.br-fsum:hover .br-prop { color: var(--rp-teal-text); }
.br-fmeta { display: block; margin-top: .35rem; font-size: .84rem; color: var(--rp-muted); }
.br-fsum .kx-icon { margin-top: .3rem; color: var(--rp-muted); transform: rotate(-90deg); transition: transform .18s ease; }
details[open] > .br-fsum .kx-icon { transform: none; }
/* the Answer without a direct answer's words: the findings' propositions, each a link to its finding */
.br-gist { list-style: none; margin: 0; padding: 0; }
.br-gist li { border-top: 1px solid var(--rp-line); }
.br-gist li:last-child { border-bottom: 1px solid var(--rp-line); }
.kx-app .br-gist-a { display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: .75rem; padding: 1.1rem 0;
  color: inherit; text-decoration: none; }
.kx-app .br-gist-a:hover .br-prop { color: var(--rp-teal-text); }
.br-gist-a:focus-visible { outline: 2px solid var(--kx-signal); outline-offset: 2px; border-radius: 3px; }
.br-stmts, .br-pts { list-style: none; margin: 0 0 1.25rem 2.75rem; padding: 0; }
.br-pts { margin-left: 0; }
.br-stmt { display: grid; grid-template-columns: 2.6rem minmax(0, 1fr); gap: 0 .6rem; padding: .55rem 0; border-radius: 6px; }
.kx-app .br-sn { font: 500 .78rem/2.15 var(--mono); color: var(--rp-muted); text-decoration: none; }
.kx-app .br-sn:hover, .kx-app .br-sn.is-on { color: var(--rp-teal-text); text-decoration: underline; }
.br-text { margin: 0; font-family: var(--br-serif); font-size: 1.02rem; line-height: 1.7; color: var(--rp-ink-2); overflow-wrap: anywhere; }
.br-stmt.is-current, .br-tl > li.is-current, .br-direct.is-current { background: var(--rp-teal-bg);
  box-shadow: -.5rem 0 0 var(--rp-teal-bg), .5rem 0 0 var(--rp-teal-bg); }
/* a mark: a quiet word with its glyph, its reason under it on a click */
.br-marks { margin: .3rem 0 0; display: flex; flex-wrap: wrap; align-items: center; gap: .25rem 1rem; }
.kx-app .br-q .lvl-btn { display: inline-flex; align-items: center; gap: .4rem; min-height: 1.75rem; padding: 0; border: 0;
  border-radius: 0; background: none; box-shadow: none; font: 500 .8rem/1.3 var(--kx-font); letter-spacing: 0;
  color: var(--br-mark); text-decoration: underline dotted var(--br-mark-line); text-underline-offset: 4px; }
.kx-app .br-q .lvl-btn:hover, .kx-app .br-q .lvl-btn[aria-expanded="true"] { color: var(--rp-ink); box-shadow: none; }
.br-q .lvl-btn::before, .br-mk::before, .help-sheet .lvl::before { content: ""; flex: none; box-sizing: border-box; width: .6rem; height: .6rem;
  border-radius: 50%; border: 1.3px solid currentColor; }
.br-q .lvl-unconfirmed.lvl-btn::before, .br-mk.mk-unconfirmed::before,
.help-sheet .lvl-unconfirmed::before { border-style: dashed; }
.br-q .lvl-inference.lvl-btn::before, .br-mk.mk-inference::before,
.help-sheet .lvl-inference::before { background: linear-gradient(90deg, transparent 50%, currentColor 50%); }
.br-q .lvl-search.lvl-btn::before, .br-mk.mk-search::before,
.help-sheet .lvl-search::before { background: linear-gradient(currentColor, currentColor) center / 70% 1.3px no-repeat; }
.br-q .lvl-why { margin: .2rem 0 0; padding: 0; border: 0; background: none; font-size: .86rem; line-height: 1.55;
  color: var(--rp-ink-2); max-width: 62ch; }
.kx-app .br-basis { font-size: .8rem; color: var(--rp-teal-text); }
.br-q .lv-also, .br-q .lv-part { font-size: .82rem; }
.br-tl { list-style: none; margin: 0; padding: 0; }
.br-tl > li { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: 0 1.25rem; padding: .75rem 0;
  border-top: 1px solid var(--rp-line-soft); }
.br-tl-date { font-weight: 600; font-size: .9rem; font-variant-numeric: tabular-nums; color: var(--rp-ink); }
.br-tl-basis { display: block; font-weight: 400; font-size: .76rem; color: var(--rp-muted); }
.br-docs { list-style: none; margin: 0; padding: 0; }
.br-docs > li { display: grid; grid-template-columns: 2.6rem minmax(0, 1fr); gap: 0 .6rem; padding: .8rem 0;
  border-top: 1px solid var(--rp-line-soft); }
.br-doc-n { font-weight: 600; color: var(--rp-teal-text); font-variant-numeric: tabular-nums; }
.br-doc p { margin: 0; }
.br-doc-title { font-weight: 600; color: var(--rp-ink); overflow-wrap: anywhere; }
.br-doc-cn, .br-doc-meta { font-size: .84rem; color: var(--rp-muted); overflow-wrap: anywhere; }
.kx-app .br-doc .br-cited-for { margin-top: .2rem; font-size: .84rem; color: var(--rp-ink-2); }
.br-priv { font-size: .76rem; font-weight: 600; color: var(--rp-red); }
@media (max-width: 43.74rem) {
  .br-stmts { margin-left: 0; }
  .br-tl > li { grid-template-columns: minmax(0, 1fr); }
}
/* the search: a dialog over the page, one part or all */
.br-search-layer { position: fixed; inset: 0; z-index: 60; display: flex; justify-content: center; align-items: flex-start;
  padding: 4.5rem 1rem 1rem; }
.br-search-scrim { position: absolute; inset: 0; background: var(--rp-scrim); }
.br-search-dialog { position: relative; width: 100%; max-width: 48rem; max-height: calc(100vh - 6rem); display: flex;
  flex-direction: column; background: var(--rp-card); border-radius: 14px; overflow: hidden;
  box-shadow: 0 24px 60px rgba(11, 31, 58, .28), 0 0 0 1px var(--rp-line); }
.br-search { display: flex; flex-direction: column; min-height: 0; }
.br-search-row { display: flex; align-items: center; gap: .75rem; min-height: 4rem; padding: 0 .75rem 0 1.25rem;
  border-bottom: 1px solid var(--rp-line-soft); color: var(--rp-ink-2); }
.br-search-row input { flex: 1 1 auto; min-width: 0; padding: 1rem 0; border: 0; outline: none; background: transparent;
  font: inherit; font-size: 1.1rem; color: var(--rp-ink); }
.br-search-count { font-size: .84rem; color: var(--rp-muted); white-space: nowrap; }
.br-search-in { display: flex; flex-wrap: wrap; gap: 0 1.25rem; margin: 0; padding: 0 1.25rem; border: 0;
  border-bottom: 1px solid var(--rp-line-soft); }
.br-search-in label { position: relative; display: inline-flex; align-items: center; min-height: 2.75rem; cursor: pointer;
  font-size: .86rem; color: var(--rp-ink-2); }
.br-search-in input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
.br-search-in label:has(input:checked) { font-weight: 600; color: var(--rp-ink); box-shadow: inset 0 -2px 0 var(--rp-ink); }
.br-search-in label:has(input:focus-visible) { outline: 2px solid var(--kx-signal); outline-offset: 2px; }
.br-search-results { list-style: none; margin: 0; padding: .5rem; overflow: auto; }
.br-search-results .hit-btn { display: grid; grid-template-columns: 10rem minmax(0, 1fr); gap: .75rem; width: 100%; padding: .65rem .75rem;
  border: 0; border-radius: 10px; background: none; text-align: left; cursor: pointer; font: inherit; color: var(--rp-ink-2); }
.br-search-results .hit-btn:hover, .br-search-results .hit-btn:focus-visible { background: var(--rp-teal-bg); }
.br-search-results .hit-where { font-size: .78rem; font-weight: 600; line-height: 1.6; color: var(--rp-muted); text-transform: none; letter-spacing: 0; }
.br-search-results .hit-text { font-size: .9rem; line-height: 1.55; }
.br-search-more, .br-search-foot { margin: 0; padding: .6rem 1.25rem; font-size: .8rem; color: var(--rp-muted); }
.br-search-foot { border-top: 1px solid var(--rp-line-soft); background: var(--rp-tint); }
.kx-app .br-icon { display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem;
  border-radius: 8px; color: var(--rp-ink-2); }
.kx-app .br-icon:hover { background: var(--rp-neutral-bg); }
@media (max-width: 43.74rem) {
  .br-search-layer { padding: 0; }
  .br-search-dialog { max-height: 100vh; height: 100%; border-radius: 0; }
  .br-search-results .hit-btn { grid-template-columns: minmax(0, 1fr); gap: .15rem; }
}
/* the evidence panel open (a drawer from 1200px): the rail narrows to its numbers and the report
   makes way, so what was clicked stays in sight */
@media (min-width: 75rem) {
  body.panel-open .br-rail { flex-basis: 4.5rem; padding-left: .5rem; padding-right: .5rem; }
  body.panel-open .br-rail-head, body.panel-open .br-qword, body.panel-open .br-qstate, body.panel-open .br-toc { display: none; }
  .kx-app.panel-open .br-qlink { grid-template-columns: minmax(0, 1fr); text-align: center; padding: .6rem 0; }
  body.panel-open .br-main { padding-right: calc(var(--ev-w) + 1.5rem); }
}

/* --- The reading page on paper (2026-11-04) ---------------------------------------------------
   The owner: "fix the Print ... which is the old style". Printed, the reading page is a memo: a head
   (the investigation, its case and scope, its questions, how to read it: ask_read.html br-cover),
   then each question whole, the later ones each from a new page, its views one under the other as
   headed sections. A source is a number, as on screen, and the question's Sources are its endnotes:
   control number, document, each passage cited once with where. A marked item says its mark and
   reason on one quiet line; a confirmed item prints nothing more. Type in points, hairlines, the
   page number at the foot of each page (a named page: no other page of Korpex prints it). */
@page brief {
  margin: 16mm 16mm 18mm;
  @bottom-left { content: "Korpex \00B7  Investigation report"; font: 400 7pt "Inter", "Segoe UI", sans-serif; color: #6B7686; }
  @bottom-right { content: "Page " counter(page) " of " counter(pages); font: 400 7pt "Inter", "Segoe UI", sans-serif; color: #6B7686; }
}
.br-mk { display: inline-flex; align-items: center; gap: .4rem; font: 500 .8rem/1.3 var(--kx-font); color: var(--br-mark); }
@media print {
  .br-layout { page: brief; display: block; min-height: 0; }
  .br-rail, .br-tools, .br-search-layer, .br-q .br-basis { display: none !important; }
  .br-main { border: 0; padding: 0; background: none; }
  .kx-app main.main-read { font-size: 8.5pt; line-height: 1.45; }
  .br-q [id] { scroll-margin-top: 0; }
  .br-stmt.is-current, .br-tl > li.is-current, .br-direct.is-current, .br-row.is-current > * { background: none; box-shadow: none; }
  .kx-app .br-cite.is-on { background: none; color: var(--rp-teal-text); padding: 0; }
  /* the head */
  .br-cover { margin: 0 0 8mm; padding: 0 0 5mm; border-bottom: .75pt solid var(--rp-ink); }
  .br-cover-k { margin: 0; font: 600 7pt/1.3 var(--kx-font); letter-spacing: .12em; text-transform: uppercase; color: var(--rp-teal-text); }
  .br-cover-t { margin: 1.5mm 0 4mm; font: 600 20pt/1.2 var(--br-serif); letter-spacing: -.01em; color: var(--rp-ink); }
  .br-cover-meta { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 1mm 6mm; margin: 0; font-size: 8.5pt; }
  .br-cover-meta div { display: contents; }
  .br-cover-meta dt { color: var(--rp-muted); }
  .br-cover-meta dd { margin: 0; color: var(--rp-ink); overflow-wrap: anywhere; }
  .br-cover-h { margin: 6mm 0 1.5mm; font: 600 7pt/1.3 var(--kx-font); letter-spacing: .1em; text-transform: uppercase; color: var(--rp-muted); }
  .br-cover-qs { list-style: none; margin: 0; padding: 0; }
  .br-cover-qs li { display: grid; grid-template-columns: 6mm minmax(0, 1fr); padding: 1.3mm 0; border-top: .5pt solid var(--rp-line);
    font: 400 9.5pt/1.4 var(--br-serif); color: var(--rp-ink); break-inside: avoid; }
  .br-cover-qn { font: 600 8pt/1.75 var(--kx-font); color: var(--rp-teal-text); font-variant-numeric: tabular-nums; }
  .br-cover-state { font: 400 7.5pt var(--kx-font); color: var(--rp-muted); }
  .br-cover-how p { margin: 0 0 1.5mm; max-width: 150mm; color: var(--rp-ink-2); }
  .br-cover-how p.br-cover-h { margin: 6mm 0 1.5mm; color: var(--rp-muted); }
  .br-cover-marks { list-style: none; margin: 2mm 0 0; padding: 0; display: grid; grid-template-columns: max-content minmax(0, 1fr);
    gap: 1.3mm 5mm; max-width: 150mm; color: var(--rp-ink-2); }
  .br-cover-marks li { display: contents; }
  .br-cover-marks .br-mk, .br-unconfirmed .br-mk { font-size: 7.5pt; line-height: 1.6; align-self: start; }
  /* a question: the later ones each from a new page */
  .br-qs > [data-pane] + [data-pane] { break-before: page; }
  .br-q { max-width: none; }
  .br-head { margin: 0 0 6mm; break-after: avoid; }
  .br-eyebrow { font-size: 7pt; }
  .kx-app .br-question { margin: 1.2mm 0 0; font-size: 14pt; line-height: 1.35; }
  .br-meta { margin: 1.5mm 0 0; font-size: 7.5pt; }
  /* its views, one under the other, each under a rule */
  .br-part + .br-part { margin-top: 7mm; }
  .br-part-h { padding-top: 2.2mm; border-top: .75pt solid var(--rp-ink); font-size: 7pt; color: var(--rp-ink); break-after: avoid; }
  .br-lede { margin: 1.2mm 0 3mm; font-size: 7.5pt; max-width: none; break-after: avoid; }
  .kx-app .br-direct-t { font-size: 10.5pt; line-height: 1.5; max-width: none; }
  .br-text { font-size: 9.5pt; line-height: 1.5; }
  .br-sup { font-size: 6pt; }
  .br-restates { display: block; margin-top: .6mm; font-size: 7pt; color: var(--rp-muted); }
  .br-part .small, .br-part p.muted { font-size: 7.5pt; line-height: 1.45; }
  /* a mark and its reason on one quiet line, under the item's text */
  .br-q .br-marks { display: inline; margin: 0; }
  .kx-app .br-q .lvl-btn { display: inline-flex; min-height: 0; margin: 0 1.5mm 0 0; font-size: 7pt; font-weight: 600;
    color: var(--rp-ink); text-decoration: none; vertical-align: baseline; }
  .rp.br-q .lvl-why, .rp.br-q .lvl-why[hidden] { display: inline !important; margin: 0; font-size: 7pt; line-height: 1.5; color: var(--rp-ink-2); }
  .br-q .lv-also, .br-q .lv-part { margin-top: .5mm; font-size: 7pt; }
  .br-unconfirmed { display: flex; gap: 2mm; margin: 3mm 0 0; font-size: 7.5pt; color: var(--rp-ink-2); break-inside: avoid; }
  /* findings and statements */
  .br-findings { margin: 0; }
  .br-finding, .br-finding:last-child { border: 0; }
  .br-finding + .br-finding { margin-top: 2.5mm; }
  .br-fsum { grid-template-columns: 7mm minmax(0, 1fr); gap: 0 1.5mm; padding: 1.2mm 0 .8mm; break-after: avoid; }
  .br-fsum .kx-icon { display: none; }
  .br-gist li, .br-gist li:last-child { border: 0; }
  .kx-app .br-gist-a { grid-template-columns: 7mm minmax(0, 1fr); gap: 0 1.5mm; padding: 1.2mm 0; break-inside: avoid; }
  /* a question with no Key facts table: nothing to print under its heading */
  .br-part.is-empty { display: none; }
  .br-fn, .br-prop { font-size: 10.5pt; line-height: 1.4; }
  .br-fmeta { margin-top: .3mm; font-size: 7pt; }
  .br-stmts { margin: 0 0 0 8.5mm; }
  .br-stmt { grid-template-columns: 8.5mm minmax(0, 1fr); gap: 0 1mm; padding: 1.1mm 0; break-inside: avoid; }
  .kx-app .br-sn { font-size: 6.5pt; line-height: 2.4; }
  /* the timeline */
  .br-tl > li { grid-template-columns: 27mm minmax(0, 1fr); gap: 0 4mm; padding: 1.6mm 0; break-inside: avoid; }
  .br-tl-date { font-size: 8pt; }
  .br-tl-basis { font-size: 6.5pt; }
  /* limits */
  .br-part .lim-h { margin: 3mm 0 1mm; font-size: 6.5pt; break-after: avoid; }
  .br-part .lims { gap: .8mm; padding-left: 4mm; max-width: none; font-size: 8.5pt; }
  .br-part .lims li { break-inside: avoid; }
  /* Key facts */
  .br-table-wrap { margin: 3mm 0 0; overflow: visible; }
  .br-table { font-size: 8pt; line-height: 1.4; }
  .br-table thead { display: table-header-group; }
  .br-table thead th { padding: 0 3mm 1.2mm 0; font-size: 6.5pt; }
  .br-table tbody th, .br-table td { padding: 1.6mm 3mm 1.6mm 0; }
  .br-table tr { break-inside: avoid; }
  .br-table .br-marks { display: block; margin-top: .6mm; }
  .rp.br-q .br-table .lvl-why, .rp.br-q .br-table .lvl-why[hidden] { display: block !important; }
  /* Sources: the endnotes */
  .br-docs > li { grid-template-columns: 7mm minmax(0, 1fr); gap: 0 1.5mm; padding: 1.8mm 0; break-inside: avoid; }
  .br-doc-n { font-size: 8.5pt; line-height: 1.45; }
  .br-doc-title { font-size: 9pt; line-height: 1.45; }
  .br-doc-cn, .br-doc-meta, .kx-app .br-doc .br-cited-for { font-size: 7pt; line-height: 1.5; }
  .br-doc-cn .mono { font-size: 7.5pt; font-weight: 600; color: var(--rp-ink); }
  .kx-app .br-doc .br-cited-for.br-all-quoted { display: none; }
  .kx-app .br-doc .cite-link { color: inherit; text-decoration: none; }
  .br-doc .print-words { list-style: none; margin: 1.2mm 0 0; padding: 0 0 0 3mm; border-left: .75pt solid var(--rp-line);
    font: 400 8pt/1.45 var(--br-serif); color: var(--rp-ink-2); }
  .br-doc .print-words li { overflow-wrap: anywhere; }
  .br-doc .print-words li + li { margin-top: .8mm; }
  .br-quote-at { font: 400 6.5pt/1.4 var(--kx-font); color: var(--rp-muted); white-space: nowrap; }
  .br-quote-at::before { content: "\2014\00A0"; }
  /* Method: what Korpex did, small; the searches a table that runs over the pages */
  .br-part.methodology .ai-note, .br-part.methodology .small { font-size: 7.5pt; line-height: 1.45; }
  .br-part.methodology .table-scroll { margin: 2mm 0 0; overflow: visible; }
  .kx-app table.data.br-searches { break-inside: auto; width: 100%; border: 0; border-radius: 0; font-size: 7pt; line-height: 1.35; }
  .kx-app table.data.br-searches thead { display: table-header-group; }
  .kx-app table.data.br-searches th { padding: 0 2mm 1mm 0; font-size: 6.5pt; background: none; border-bottom: .75pt solid var(--rp-ink); }
  .kx-app table.data.br-searches td { padding: 1mm 2mm 1mm 0; border-bottom: .5pt solid var(--rp-line); }
  .kx-app table.data.br-searches td.small { font-size: 6.5pt; }
  .kx-app table.data.br-searches td:nth-last-child(4) { white-space: nowrap; }
  .br-searches tr { break-inside: avoid; }
}

/* --- The workbench on a laptop and up (2026-10-31, the owner: "use the space and dynamically
   should adjust depending on screen size") -------------------------------------------------
   On screen, from where the sidebar sits beside the page: phones, tablets and the printed page
   read none of this. The page has one cap, far past any laptop (.kx-app main); tables take what
   there is, running text stops at --rp-measure, and forms keep a form's width, left-aligned. */
@media screen and (min-width: 62.51rem) {
  /* this query decides, not the flex line: a 15px scrollbar wrapped it at 1001 to 1015px */
  .shell { flex-wrap: nowrap; }
  .kx-app main.main-wide { padding-top: 1rem; }
  .ask-form, .turn-progress { max-width: 60rem; }
  /* a page of cards: as many columns as fit (43rem keeps the chart unscrolled) */
  .billing { max-width: none; margin: 0; display: grid; align-items: start; column-gap: 1.5rem;
    grid-template-columns: repeat(auto-fill, minmax(min(43rem, 100%), 1fr)); }
  .billing > :not(.billing-sec) { grid-column: 1 / -1; }
  .billing > p { max-width: 80ch; }
  /* tables: their columns decide, and the box scrolls only when those cannot fit. The floors
     are those of columns that would collapse */
  .table-scroll > table.data, .table-scroll > table.data.admin-table,
  .table-scroll > table.data.fu-table { min-width: 0; }
  table.data td.small-json { min-width: 14rem; }
  .fu-table .fu-title, .fu-table .fu-people { min-width: 8rem; }
  .fu-table .fu-note-cell { min-width: 9rem; }  /* a figure in a note stays whole */
  .fu-table .fu-flagged { min-width: 7.5rem; }
  .fu-table .fu-title, .fu-table .fu-note-cell, .fu-table .fu-people, .admin-table td.mono { overflow-wrap: anywhere; }
  /* a list's free text: one unbroken title, question or address wraps there, and the other
     columns stay in view */
  table.data td.cell-long { min-width: 10rem; overflow-wrap: anywhere; }
  .digest td.nowrap { white-space: normal; }

  /* the report's head: when the title is the first question (nearly always) the report's own
     header says it; the crumbs, who and when share one row with Print and Delete */
  .session-head.title-in-report { align-items: center; margin-bottom: .5rem; }
  .title-in-report .session-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .35rem; }
  .title-in-report .session-title .crumbs { margin: 0; }
  .title-in-report .session-title h1 { position: absolute; width: 1px; height: 1px; margin: 0; overflow: hidden;
    clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
  .title-in-report .session-n { display: none; }
  .session-head.title-in-report .session-tools { margin: 0; }
  /* the pinned header: "Show the full question" beside the question */
  .rp.card > .rp-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .75rem; }
  .rp-head .rp-pin-top { flex: 0 0 100%; justify-content: flex-start; gap: .2rem 1.5rem; }
  .kx-app .rp-head .rp-q { flex: 1 1 0; min-width: 0; }
  .kx-app .rp-q-more { flex: none; margin: 0; }
  .rp.card > .rp-meta { margin-bottom: .5rem; }
  .kx-app .rp-answer-h { margin: 0 0 .35rem; }
  /* the direct answer with its mark and button on its row, the button next to the answer */
  .rp-direct { display: grid; grid-template-columns: fit-content(52rem) auto minmax(0, 1fr);
    row-gap: .1rem; align-items: start; }
  /* the reason crosses the empty last track: it takes the row's width and, crossing a flexible
     track, sizes neither of the others (spanning only those two it squeezed the answer) */
  .rp-direct > :not(.rp-direct-t, .rp-direct-meta) { grid-column: 1 / -1; }
  .rp-direct > .lvl-why { max-width: var(--rp-measure); }
  .rp-direct-meta { padding: .2rem 0 0 1rem; }
  /* a short list on a monitor: the figures stay within reach of the name. Past any laptop, so
     no laptop gets its empty side back */
  table.cases, .page-head:has(~ table.cases) { max-width: 90rem; }
  table.table-fit { max-width: 40rem; }
  /* a short table keeps its figures together; a long one still takes the whole width */
  .at-wrap { width: fit-content; max-width: 100%; }
  /* a finding wide enough: reference, text, then its mark and button in a straight line */
  .rp-card { container: finding / inline-size; }
  @container finding (min-width: 48rem) {
    .ac-stmt { display: grid; grid-template-columns: 2.25rem minmax(0, 1fr) 13rem; column-gap: .5rem;
      align-items: baseline; max-width: 72rem; }
    .ac-stmt .txt { grid-column: 2; margin-right: 0; }
    .ac-stmt .ac-ref { grid-column: 1; margin: 0; }
    .ac-stmt .ac-meta { grid-column: 3; grid-row: 1; align-items: flex-end; justify-self: end; }
    .ac-stmt .lvl-why, .ac-stmt .lv-also { grid-column: 2; }
  }
  .stmt > div, .pts li > div, .tl li > div, .at-foot, .fu-hint, .page-intro p,
  .kx-app main > p { max-width: var(--rp-measure); }
}
/* a short laptop screen: the pinned question is one line ("Show the full question" opens it),
   and the panel gives the passage the height: a maximised window on a 14 inch laptop can be
   under 600px tall */
@media screen and (min-width: 62.51rem) and (max-height: 50rem) {
  .kx-app .rp-head .rp-q { -webkit-line-clamp: 1; line-clamp: 1; }
  .panel-top { padding-top: .5rem; padding-bottom: .4rem; }
  .panel-body { padding-top: .6rem; }
  .p-sec-h { margin-bottom: .3rem; }
  .says { margin-bottom: .5rem; }
  .support { margin-bottom: .6rem; }
  .ev-card { padding-top: .5rem; }
  .speaker { margin-bottom: .25rem; }
}
/* with the panel open a click on a row or a statement shows that one (app.js) */
@media (min-width: 75rem) {
  body.panel-open .rp-direct, body.panel-open .at-row, body.panel-open .ac-stmt, body.panel-open .stmt,
  body.panel-open .pts li, body.panel-open .tl li { cursor: pointer; }
}
/* room for the panel: the report makes way while it is open (app.js keeps the clicked item
   where it is), less what the page's right gutter already leaves once it is past its cap (the
   space beside the 14.5rem sidebar and a 15px scrollbar, less 150rem, halved) */
@media screen and (min-width: 112.5rem) {
  body.panel-open .rp-layout {
    padding-right: max(0px, calc(var(--ev-w) + 1.5rem - max(0px, (100vw - 14.5rem - 15px - 150rem) / 2))); }
}
/* two columns of findings only where they stay two with the panel open */
@media screen and (min-width: 150rem) {
  .rp-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; align-items: start; }
  .rp-cards > .rp-card:only-child { grid-column: 1 / -1; }
}

/* --- One design for every page (2026-11-05, the owner: "make sure every page, option, menus line
   up with the new layout design we have for the investigations page. similar and uniform design
   philosophy for all"). Each page is one white sheet (base.html wraps it) in the reading page's
   type, Inter with the serif for titles; its sections sit under small-caps headings and hairline
   rules rather than in boxes, its tables are hairline rows, a state is a quiet word with its glyph
   rather than a coloured pill. A page with a layout of its own (the reading page, Help, Case data)
   keeps it. */
.bf-sheet.is-wide { --sheet-col: 92rem; }
.bf-sheet > .page-intro, .bf-sheet > .page-head, .bf-sheet > h1 { margin-bottom: 1.75rem; }
.bf-sheet > .page-head { align-items: flex-end; }
.bf-sheet .page-intro p, .bf-sheet .page-head p { margin: .45rem 0 0; color: var(--rp-muted); }
.kx-app .bf-sheet > h2, .kx-app .bf-sheet .section-head { margin: 2.5rem auto .9rem; }
.kx-app .bf-sheet .section-head h2 { margin: 0; }
.kx-app .bf-sheet h2 .muted, .kx-app .bf-sheet h2 .small { margin-left: .4rem; font-weight: 500; letter-spacing: 0;
  text-transform: none; color: var(--rp-muted); }
.bf-sheet > h2 + p.small { margin-top: -.4rem; }
/* a card is a section: a rule over it, no box */
.bf-sheet .card { background: none; border: 0; border-top: 1px solid var(--rp-line); border-radius: 0;
  box-shadow: none; padding: 1.5rem 0 0; margin: 2.25rem auto 0; }
.kx-app .bf-sheet .card > h2:first-child, .kx-app .bf-sheet .card > .card-head:first-child h2 { margin: 0 0 1rem; }
.bf-sheet .card > h3 { margin-top: 1.5rem; }
.bf-sheet .kx-cards { gap: 0 3rem; margin-bottom: 0; }
.bf-sheet .kx-cards > .card { margin: 2.25rem 0 0; }
.bf-sheet .kx-settings { max-width: 60rem; gap: 0; }
.bf-sheet .kx-form { max-width: 36rem; }
.bf-sheet .kx-form.kx-inline-form { max-width: 44rem; }
/* the labels and fields of the reading page's follow-up box */
.kx-app .bf-sheet .kx-field label, .kx-app .bf-sheet .field-label { font-size: .84rem; font-weight: 600; color: var(--rp-ink); }
.bf-sheet .kx-hint, .bf-sheet .card > p.small { color: var(--rp-muted); }
.bf-sheet .kx-input, .bf-sheet select.kx-input, .bf-sheet textarea { border-color: var(--rp-line); }
.bf-sheet .kx-input:hover, .bf-sheet textarea:hover { border-color: #B9C3D2; }
/* the small-caps label of a group (Home's Quick actions), as a section's heading */
.bf-sheet .mini-label { margin: 0 auto .7rem; font: 600 .76rem/1.3 var(--kx-font); letter-spacing: .1em;
  text-transform: uppercase; color: var(--rp-teal-text); }
/* figures: a rule and a number, as Case data's ledger */
.bf-sheet .usage-tiles { gap: 0 2.5rem; }
.bf-sheet .usage-tile { padding: .85rem 0 0; background: none; border: 0; border-top: 1px solid var(--rp-ink);
  border-radius: 0; box-shadow: none; }
.bf-sheet .usage-tile span { font: 600 .68rem/1.2 var(--kx-font); letter-spacing: .08em; text-transform: uppercase;
  color: var(--rp-muted); }
.kx-app .bf-sheet .usage-tile strong { font: 600 1.9rem/1.15 var(--br-serif); color: var(--rp-ink); font-variant-numeric: tabular-nums; }
/* a state: a quiet word and its glyph (Case data's processing line), never a coloured pill */
.bf-sheet .badge.pill { display: inline-flex; align-items: center; gap: .45rem; padding: 0; border: 0; border-radius: 0;
  background: none; font: 500 .84rem/1.4 var(--kx-font); letter-spacing: 0; color: var(--rp-ink-2); white-space: nowrap; }
.bf-sheet .badge.pill::before { content: ""; flex: none; box-sizing: border-box; width: .6rem; height: .6rem;
  border-radius: 50%; background: var(--rp-line); }
.bf-sheet .badge.pill-ready::before { background: var(--kx-good); }
.bf-sheet .badge.pill-noreport::before { background: none; border: 1.5px solid var(--kx-bad); }
.bf-sheet .badge.pill-waiting::before { background: none; border: 1.5px dashed var(--br-mark); }
.bf-sheet .badge.pill-cancelled::before, .bf-sheet .badge.pill-idle::before { background: none; border: 1.5px solid var(--br-mark-line); }
.bf-sheet .badge.pill-running::before { display: none; }
.bf-sheet .badge.pill-running .pill-dot { width: .6rem; height: .6rem; margin: 0; color: var(--run); }
/* a label on a row (sample, restricted, a role): a quiet outline; privileged keeps its colour */
.bf-sheet .badge:not(.pill):not(.badge-priv):not(.badge-fail) { padding: .05rem .5rem; border: 1px solid var(--rp-line);
  border-radius: 999px; background: none; font-weight: 500; color: var(--rp-ink-2); }
/* a problem said on the page: a red rule and the words, no red box */
.bf-sheet .flag, .bf-sheet .kx-alert { background: none; border-left: 2px solid var(--kx-bad); border-radius: 0;
  padding: .2rem 0 .2rem .85rem; color: var(--kx-bad); }
.bf-sheet .flag { margin: 0 auto 1.25rem; font-size: .88rem; }
.bf-sheet .kx-ok { background: none; border-left: 2px solid var(--kx-good); border-radius: 0; padding: .2rem 0 .2rem .85rem; }
.bf-sheet .empty-state { padding-top: 1.5rem; }
/* the crumbs over a page (a document): the reading page's way back */
.kx-app .bf-sheet .crumbs { margin-bottom: 1.25rem; font-size: .84rem; color: var(--rp-muted); }
.kx-app .bf-sheet .crumbs a { color: var(--rp-muted); text-decoration: none; }
.kx-app .bf-sheet .crumbs a:hover { color: var(--rp-ink); text-decoration: underline; }
/* New investigation: the scope a group under its small-caps legend, no box */
.bf-sheet .ask-form fieldset.scope { border: 0; border-top: 1px solid var(--rp-line-soft); border-radius: 0;
  margin: 1.25rem 0 .5rem; padding: 1rem 0 0; }
.bf-sheet .ask-form legend { padding: 0 .6rem 0 0; font: 600 .7rem/1.2 var(--kx-font); letter-spacing: .08em;
  text-transform: uppercase; color: var(--rp-muted); }
.bf-sheet .ask-form textarea, .bf-sheet .ask-form select, .bf-sheet .dates input[type=date] {
  border: 1px solid var(--rp-line); border-radius: 10px; }
.bf-sheet .dates input[type=date] { min-height: 2.4rem; padding: 0 .6rem; }
.bf-sheet .ask-form .field-label { margin-top: 1rem; }
.bf-sheet .ask-form .field-label:first-child { margin-top: 0; }
/* a section's heading over its card: the heading opens the section, the card has no rule of its own */
.bf-sheet h2 + .card, .bf-sheet .section-head + .card { border-top: 0; padding-top: 0; margin-top: 0; }
.kx-app .bf-sheet h1 + p { margin-top: .45rem; }
/* a row's Delete in a list: quiet until pointed at (it asks first); the report's own stays a button */
.kx-app .bf-sheet td.row-action .kx-btn-danger { border-color: transparent; background: none; color: var(--rp-muted); }
.kx-app .bf-sheet td.row-action .kx-btn-danger:hover, .kx-app .bf-sheet td.row-action .kx-btn-danger:focus-visible {
  border-color: #E8C4C4; color: var(--kx-bad); }

/* The admin console (templates/console, 2026-11-05): its own address and pages, the app's look.
   "Admin" beside the wordmark says whose door this is; the overview is a card per part. */
.console-tag { margin-left: .5rem; padding: .1rem .45rem; border-radius: 999px; font-size: .7rem;
  font-weight: 700; letter-spacing: .06em; text-transform: uppercase; background: var(--kx-line);
  color: var(--kx-ink); }
.auth-logo .console-tag { background: rgba(255,255,255,.14); color: #FFFFFF; }
.console-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 1rem;
  margin-top: 1.25rem; }
.console-card { display: flex; flex-direction: column; gap: .35rem; text-decoration: none; color: inherit; }
.console-card:hover, .console-card:focus-visible { border-color: var(--kx-slate); }
.console-card h2 { margin: 0; font-size: 1rem; }
.console-figure { margin: 0; font-size: 1.35rem; font-weight: 700; color: var(--kx-ink); }
.console-card p.muted { margin: 0; font-size: .9rem; }
.auth-lead a { color: #FFFFFF; text-decoration: underline; text-underline-offset: 2px; }
/* Korpex is a filed trademark (2026-11-06): the small TM on every wordmark, as on korpex.ai */
.kx-tm { font-size: .5em; vertical-align: top; letter-spacing: .02em; margin-left: 2px; }
