/* Editorial desk (§18): calm, serif-led, one restrained blue accent.
   Design source: Sam's "Editorial Desk" concept mock (2026-07-15).
   Monospace is reserved for EINs / FEC IDs / dollar amounts only. */

:root {
  --paper: #f2f1ed;        /* warm page field */
  --surface: #ffffff;
  --ink: #1b1d22;
  --muted: #6d7078;
  --faint: #9a9da4;
  --accent: #1e4fd8;
  --accent-ink: #16409f;
  --amber: #b45309;
  --amber-bg: #fdf3e3;
  --green: #15803d;
  --red: #b91c1c;
  --rule: #e3e1db;         /* hairlines on paper */
  --rule-strong: #d6d3cc;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --cd-navy: oklch(0.185 0.022 255 / 0.98);
  --cd-green: oklch(0.72 0.13 158);
  --cd-masthead-bg: oklch(0.993 0.003 250 / 0.98);
}

* { box-sizing: border-box; }

/* Author-level display rules (for example `.stack { display: grid; }`) can
   otherwise override the browser's default treatment of the hidden
   attribute. Shared-auth forms rely on hidden while JavaScript selects the
   one valid account state. */
[hidden] { display: none !important; }

html { height: 100%; }

body {
  margin: 0;
  min-height: 100%;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.6;
}

code { font-family: var(--mono); font-size: 0.86em; }

a { color: var(--accent); }

/* ── CD OPS chrome contract v1 ───────────────────────────────────── */

.suite-bar {
  position: sticky;
  top: 0;
  z-index: 40;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  width: 100%;
  height: 42px;
  min-height: 42px;
  padding: 0 32px;
  border-bottom: 1px solid oklch(0.3 0.025 255);
  background: var(--cd-navy);
  color: oklch(0.96 0.008 250);
}
.suite-brand {
  color: oklch(0.9 0.1 158);
  font: 800 11px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: 0.12em;
  text-decoration: none;
  white-space: nowrap;
}
.suite-brand:hover { color: white; text-decoration: none; }
.suite-nav {
  display: flex;
  align-items: stretch;
  min-width: 0;
  height: 42px;
  margin-left: 28px;
  overflow: visible;
  scrollbar-width: thin;
}
.suite-nav a {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  height: 42px;
  padding: 0 13px;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background: transparent;
  color: oklch(0.78 0.015 250);
  font-size: 12px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}
.suite-nav a:hover { border-color: transparent; color: white; text-decoration: none; }
.suite-nav a[aria-current="page"] { border-bottom-color: var(--cd-green); color: white; }
.suite-menu { position: relative; display: flex; flex: 0 0 auto; }
.suite-menu > button {
  display: flex;
  align-items: center;
  height: 42px;
  padding: 0 13px;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background: transparent;
  color: oklch(0.78 0.015 250);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
}
.suite-menu > button::after {
  content: "▾";
  margin-left: 6px;
  color: oklch(0.64 0.02 250);
  font-size: 9px;
}
.suite-menu:hover > button,
.suite-menu:focus-within > button { color: white; }
/* CD OPS Lobbying menu contract v2 */
.suite-submenu {
  position: absolute;
  top: calc(100% - 1px);
  left: 0;
  z-index: 80;
  display: none;
  width: 220px;
  min-width: 220px;
  padding: 6px;
  border: 1px solid #344154;
  background: #111827;
  box-shadow: 0 12px 30px rgb(0 0 0 / 0.35);
}
.suite-menu:hover .suite-submenu,
.suite-menu:focus-within .suite-submenu,
.suite-menu.is-open .suite-submenu { display: block; }
.suite-menu .suite-submenu a,
.suite-menu .suite-submenu [aria-disabled="true"] {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  min-height: 36px;
  height: auto;
  padding: 8px 10px;
  border: 0;
  color: #dce3ea;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
  white-space: nowrap;
}
.suite-menu .suite-submenu a:hover,
.suite-menu .suite-submenu a:focus-visible {
  border: 0;
  background: #1c2737;
  color: #86efb6;
}
.suite-menu .suite-submenu a[aria-current="page"] { box-shadow: inset 2px 0 #72d9a5; }
.suite-menu .suite-submenu [aria-disabled="true"] { color: #8c98a8; cursor: default; }
.suite-menu .suite-submenu small {
  margin-left: auto;
  color: #8c98a8;
  font-family: inherit;
  font-size: 9px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.suite-account {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  height: 42px;
  margin-left: 16px;
  color: oklch(0.8 0.012 250);
  font-size: 11px;
}
.suite-user {
  max-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.suite-account form { display: flex; margin: 0; }
.suite-account button {
  min-height: 27px;
  margin: 0;
  padding: 0 9px;
  border: 1px solid oklch(0.52 0.02 255);
  border-radius: 4px;
  background: transparent;
  color: oklch(0.88 0.01 250);
  font-size: 11px;
  cursor: pointer;
}
.suite-account button:hover {
  border-color: oklch(0.72 0.02 255);
  background: oklch(0.25 0.045 258);
  color: white;
}

.product-masthead {
  position: sticky;
  top: 42px;
  z-index: 20;
  display: grid;
  grid-template-columns: minmax(205px, 1fr) auto;
  align-items: center;
  gap: 18px;
  width: 100%;
  height: 62px;
  min-height: 62px;
  padding: 10px 32px;
  border-bottom: 1px solid var(--rule-strong);
  background: var(--cd-masthead-bg);
  backdrop-filter: blur(14px);
}
.product-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  color: var(--ink);
  text-decoration: none;
}
.product-brand:hover { color: var(--ink); text-decoration: none; }
.product-mark {
  display: grid;
  place-items: center;
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  border-radius: 9px;
  background: var(--cd-navy);
  color: oklch(0.9 0.1 158);
  font: 700 10px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.product-title-block { display: block; min-width: 0; }
.product-title {
  display: block;
  margin: 0;
  overflow: hidden;
  color: var(--ink);
  font-family: var(--sans);
  font-size: 21px;
  font-weight: 700;
  line-height: 1.05;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.product-status {
  display: block;
  margin: 3px 0 0;
  overflow: hidden;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.product-nav { display: flex; align-items: stretch; height: 62px; }
.product-nav a {
  display: flex;
  align-items: center;
  height: 62px;
  padding: 0 12px;
  border-bottom: 2px solid transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  text-decoration: none;
}
.product-nav a:hover { color: var(--ink); }
.product-nav a[aria-current="page"] { border-bottom-color: var(--accent); color: var(--ink); }

@media (max-width: 920px) {
  .suite-bar { padding: 0 16px; }
  .suite-nav { margin-left: 16px; }
  .suite-nav a, .suite-menu > button { padding: 0 10px; }
  .suite-submenu { position: fixed; top: 41px; right: 10px; left: auto; }
  .suite-user { display: none; }
  .suite-account { margin-left: 8px; }
  .product-masthead { padding: 10px 16px; }
}

@media (max-width: 640px) {
  .suite-bar { padding: 0 10px; }
  .suite-brand { font-size: 10px; }
  .suite-nav { margin-left: 8px; }
  .suite-nav a, .suite-menu > button { padding: 0 9px; font-size: 11px; }
  .suite-account { margin-left: 4px; }
  .suite-account button { padding: 0 7px; }
  .product-masthead { grid-template-columns: minmax(140px, 1fr) auto; padding: 10px 12px; }
  .product-mark { display: none; }
  .product-title { font-size: 18px; }
  .product-status { display: none; }
  .product-nav a { padding: 0 8px; }
}

main { max-width: 47rem; margin: 0 auto; padding: 2.25rem 1.5rem 4rem; }
.source-main { max-width: 64rem; }
.review-main { max-width: 80rem; }
.revision-main { max-width: 82rem; }

.linklike {
  background: none; border: none; padding: 0;
  font: inherit; cursor: pointer;
  color: var(--accent); text-decoration: underline;
}

.muted { color: var(--muted); }
.error { color: var(--red); }

/* ── Small furniture ─────────────────────────────────────────── */

.crumb { font-size: 0.9rem; margin: 0 0 0.4rem; }
.crumb a { color: var(--accent); text-decoration: none; }
.crumb .sep { color: var(--faint); margin: 0 0.35rem; }
.crumb .here { color: var(--muted); }

h1.display {
  font-family: var(--serif);
  font-weight: 500;
  font-size: 3.1rem;
  line-height: 1.1;
  margin: 0 0 0.7rem;
  letter-spacing: -0.01em;
}

.page-title {
  font-family: var(--serif);
  font-weight: 500;
  font-size: 2rem;
  margin: 0 0 1rem;
}

.kicker {
  font-size: 0.72rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--muted);
}

.title-meta {
  display: flex; align-items: center; gap: 0.9rem;
  padding-bottom: 1.4rem;
  border-bottom: 1px solid var(--rule-strong);
  margin-bottom: 0.5rem;
}
.title-meta .divider { color: var(--rule-strong); }

.poll-status {
  font-size: 0.82rem;
  margin: -0.15rem 0 0.8rem;
}
.poll-status.is-live { color: var(--accent); }
.poll-status.is-paused { color: var(--amber); }
.poll-status.is-complete { color: var(--green); }
.poll-status.is-live::before,
.activity-spinner {
  display: inline-block;
  width: 0.72rem;
  height: 0.72rem;
  border: 2px solid color-mix(in srgb, var(--accent) 24%, transparent);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: activity-spin 0.9s linear infinite;
}
.poll-status.is-live::before {
  content: "";
  margin-right: 0.42rem;
  vertical-align: -0.08rem;
}

.pill {
  display: inline-flex; align-items: center; gap: 0.35rem;
  padding: 0.14rem 0.65rem; border-radius: 4px;
  font-size: 0.7rem; letter-spacing: 0.1em; text-transform: uppercase;
  font-weight: 600;
  background: #eceae5; color: var(--muted);
}
.pill::before { content: "●"; font-size: 0.6em; }
.pill-awaiting, .pill-awaiting_human { background: var(--amber-bg); color: var(--amber); }
.pill-active, .pill-running { background: #e8eefc; color: var(--accent-ink); }
.pill-queued { background: #eceae5; color: var(--muted); }
.pill-failed { background: #fdeceb; color: var(--red); }
.pill-succeeded { background: #e9f6ee; color: var(--green); }
.pill-idle::before, .pill-cancelled::before { content: "○"; }

.flash { padding: 0.6rem 0.9rem; border-radius: 6px; margin: 0.7rem 0; font-size: 0.92rem; }
.flash-success { background: #e9f6ee; color: var(--green); }
.flash-error { background: #fdeceb; color: var(--red); }

/* ── Home: target inbox ──────────────────────────────────────── */

.target-list { list-style: none; padding: 0; margin: 0; }
.target-list li {
  display: flex; align-items: baseline; gap: 0.9rem;
  background: var(--surface);
  border: 1px solid var(--rule);
  border-bottom: none;
  padding: 0.8rem 1.1rem;
}
.target-list li:first-child { border-radius: 8px 8px 0 0; }
.target-list li:last-child { border-bottom: 1px solid var(--rule); border-radius: 0 0 8px 8px; }
.target-list a {
  font-family: var(--serif);
  font-size: 1.12rem;
  text-decoration: none;
  color: var(--ink);
}
.target-list a:hover { color: var(--accent); }
.target-list .pill { margin-left: auto; }

.new-target { margin-top: 1.6rem; }
.new-target summary {
  cursor: pointer; color: var(--accent); font-weight: 500;
}
.new-target form { margin-top: 0.9rem; }
.intake-next {
  max-width: 30rem;
  margin: 0.15rem 0 0;
  padding-top: 0.75rem;
  border-top: 1px solid var(--rule);
  color: var(--muted);
  font-size: 0.84rem;
  line-height: 1.5;
}
.intake-next strong { color: var(--ink); }

/* ── Forms ───────────────────────────────────────────────────── */

.stack { display: grid; gap: 0.8rem; }
.stack label { display: grid; gap: 0.3rem; font-size: 0.92rem; color: var(--muted); }
.stack input, .stack select, .stack textarea {
  padding: 0.5rem 0.7rem; border: 1px solid var(--rule-strong); border-radius: 6px;
  font: inherit; color: var(--ink); background: var(--surface); max-width: 30rem;
}

.length-picker {
  border: 0;
  padding: 0;
  margin: 0.35rem 0 0.45rem;
}
.length-picker legend {
  font-size: 0.92rem;
  color: var(--ink);
  font-weight: 600;
  padding: 0;
}
.field-help {
  color: var(--muted);
  font-size: 0.86rem;
  margin: 0.1rem 0 0.65rem;
}
.length-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.55rem;
  max-width: 36rem;
}
.length-option {
  position: relative;
  cursor: pointer;
}
.length-option input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.length-option > span {
  min-height: 4.5rem;
  display: grid;
  align-content: center;
  padding: 0.68rem 0.85rem;
  background: var(--surface);
  border: 1px solid var(--rule-strong);
  border-radius: 8px;
  transition: border-color 120ms ease, background 120ms ease;
}
.length-option strong { font-size: 0.92rem; color: var(--ink); }
.length-option small { color: var(--muted); font-size: 0.8rem; }
.length-option em {
  color: var(--accent-ink);
  font-size: 0.72rem;
  font-style: normal;
  font-weight: 600;
}
.length-option input:checked + span {
  border-color: var(--accent);
  background: #f2f5fd;
  box-shadow: inset 3px 0 0 var(--accent);
}
.length-option input:focus-visible + span {
  outline: 3px solid rgba(30, 79, 216, 0.22);
  outline-offset: 2px;
}
.custom-length {
  display: none;
  grid-template-columns: repeat(2, minmax(0, 10rem));
  gap: 0.65rem;
  margin-top: 0.65rem;
}
.length-picker:has(input[value="custom"]:checked) .custom-length { display: grid; }
.custom-length label {
  display: grid;
  gap: 0.25rem;
  color: var(--muted);
  font-size: 0.82rem;
}
.custom-length input {
  width: 100%;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--rule-strong);
  border-radius: 6px;
  font: inherit;
  background: var(--surface);
}

button.primary, .stack button {
  justify-self: start;
  padding: 0.62rem 1.3rem;
  font: inherit; font-weight: 600; font-size: 0.95rem;
  background: var(--accent); color: #fff;
  border: none; border-radius: 8px;
  cursor: pointer;
}
button.primary:hover, .stack button:hover { background: var(--accent-ink); }

button.secondary {
  padding: 0.5rem 1.1rem;
  font: inherit; font-weight: 500; font-size: 0.92rem;
  background: var(--surface); color: var(--accent);
  border: 1px solid var(--rule-strong); border-radius: 8px;
  cursor: pointer;
}
button.secondary:hover { border-color: var(--accent); }

.button-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  padding: 0.52rem 1.05rem;
  border-radius: 8px;
  font-size: 0.92rem;
  font-weight: 600;
  line-height: 1.4;
  text-decoration: none;
}
.button-link.primary { border: 1px solid var(--accent); background: var(--accent); color: white; }
.button-link.primary:hover { background: var(--accent-ink); }
.button-link.secondary { border: 1px solid var(--rule-strong); background: var(--surface); color: var(--accent); }
.button-link.secondary:hover { border-color: var(--accent); }

/* Research checkpoint */
.checkpoint-actions { display: flex; align-items: center; gap: 0.85rem; margin: 1rem 0; }
.checkpoint-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(14rem, 0.75fr); gap: 1.25rem; margin: 1.25rem 0; }
.checkpoint-grid h3, .materials-grid h3, .finding-columns > div > h3 {
  display: flex; align-items: baseline; justify-content: space-between;
  margin: 0 0 0.55rem; font-size: 0.85rem; letter-spacing: 0.04em; text-transform: uppercase;
}
.count { color: var(--faint); font-size: 0.75rem; font-weight: 500; }
.request-list, .supplied-source-list { display: grid; gap: 0.5rem; }
.source-request {
  padding: 0.8rem 0.9rem; border: 1px solid var(--rule); border-radius: 7px; background: var(--surface);
}
.source-request-resolved, .source-request-dismissed { background: #f8f7f4; }
.request-topline { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.35rem; }
.request-badges { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; }
.request-type, .request-blocking {
  color: var(--muted); font-size: 0.7rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
}
.request-blocking { color: var(--red); }
.source-request h4 { margin: 0.2rem 0 0; font: 600 1rem/1.35 var(--serif); }
.source-request-speculative { border-style: dashed; background: #faf9f6; }
.source-request p { margin: 0.35rem 0; font-size: 0.86rem; }
.source-byline { color: var(--muted); }
.request-ratings { display: flex; flex-wrap: wrap; gap: 0.45rem 0.9rem; margin: 0.55rem 0; color: var(--muted); font-size: 0.76rem; }
.request-ratings strong { color: var(--ink); text-transform: capitalize; }
.request-details { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.55rem 0.9rem; margin: 0.7rem 0 0; }
.request-details div { min-width: 0; }
.request-details dt { margin-bottom: 0.12rem; color: var(--faint); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
.request-details dd { margin: 0; overflow-wrap: anywhere; font-size: 0.82rem; line-height: 1.45; }
.request-details dd span { display: block; color: var(--muted); font-size: 0.76rem; }
.request-gaps { margin-top: 0.65rem; padding: 0.6rem 0.7rem; border-left: 3px solid var(--amber); background: var(--amber-bg); font-size: 0.8rem; }
.request-gaps ul { margin: 0.25rem 0 0; padding-left: 1rem; }
.request-gaps li + li { margin-top: 0.15rem; }
.request-context-saved {
  margin-top: 0.7rem;
  padding: 0.6rem 0.7rem;
  border-left: 3px solid var(--accent);
  background: #f2f5fd;
}
.request-context-saved strong {
  color: var(--accent-ink);
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.request-context-saved p {
  margin: 0.2rem 0 0;
  color: var(--ink);
  white-space: pre-wrap;
}
.request-context-entry {
  margin-top: 0.7rem;
  border: 1px solid color-mix(in srgb, var(--accent) 24%, var(--rule));
  border-radius: 7px;
  background: #f7f9ff;
}
.request-context-entry > summary {
  padding: 0.55rem 0.7rem;
  color: var(--accent-ink);
  cursor: pointer;
  font-size: 0.82rem;
  font-weight: 650;
}
.request-context-entry[open] > summary {
  border-bottom: 1px solid color-mix(in srgb, var(--accent) 18%, var(--rule));
}
.request-context-entry > p {
  margin: 0;
  padding: 0.65rem 0.75rem 0;
  color: var(--muted);
  line-height: 1.45;
}
.request-context-entry form {
  display: grid;
  gap: 0.35rem;
  padding: 0.6rem 0.75rem 0.75rem;
}
.request-context-entry label {
  color: var(--ink);
  font-size: 0.76rem;
  font-weight: 650;
}
.request-context-entry textarea {
  width: 100%;
  min-width: 0;
  resize: vertical;
  padding: 0.52rem 0.6rem;
  border: 1px solid var(--rule-strong);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font: 400 0.86rem/1.45 var(--sans);
}
.request-context-entry textarea:focus-visible {
  border-color: var(--accent);
  outline: 3px solid rgba(30, 79, 216, 0.18);
  outline-offset: 1px;
}
.request-context-entry button { justify-self: start; margin-top: 0.2rem; }
.request-actions {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-top: 0.65rem;
  padding-top: 0.65rem;
  border-top: 1px solid var(--rule);
}
.request-supply {
  padding: 0.35rem 0.7rem;
  font-size: 0.8rem;
}
.request-manage { position: relative; }
.request-manage > summary {
  padding: 0.35rem 0.15rem;
  color: var(--muted);
  cursor: pointer;
  font-size: 0.8rem;
  font-weight: 600;
}
.request-manage[open] > summary { color: var(--accent); }
.request-manage-menu {
  display: grid;
  min-width: 13rem;
  margin-top: 0.35rem;
  padding: 0.35rem;
  border: 1px solid var(--rule-strong);
  border-radius: 7px;
  background: var(--surface);
  box-shadow: 0 8px 24px rgba(39, 42, 49, 0.1);
}
.request-manage-menu form { display: block; margin: 0; }
.request-manage-menu a,
.request-manage-menu button {
  display: block;
  width: 100%;
  padding: 0.43rem 0.5rem;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--ink);
  font: 500 0.8rem/1.3 var(--sans);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}
.request-manage-menu a:hover,
.request-manage-menu button:hover {
  background: #f2f5fd;
  color: var(--accent-ink);
}
.request-manage-menu a:focus-visible,
.request-manage-menu button:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -1px;
}
.speculative-leads { margin-top: 0.8rem; padding-top: 0.65rem; border-top: 1px solid var(--rule); }
.speculative-leads summary { color: var(--accent); cursor: pointer; font-size: 0.85rem; font-weight: 600; }
.speculative-leads summary .count { margin-left: 0.25rem; }
.add-request-link { margin-top: 0.8rem; }
.inline-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.8rem; margin-top: 0.55rem; font-size: 0.84rem; }
.inline-actions form { display: inline-flex; margin: 0; }
.supplied-source-list a, .material-row a {
  display: grid; padding: 0.7rem 0.8rem; border: 1px solid var(--rule); border-radius: 7px;
  background: var(--surface); color: var(--ink); text-decoration: none;
}
.supplied-source-list a:hover, .material-row a:hover { border-color: var(--accent); }
.supplied-source-list span, .material-row span { color: var(--muted); font-size: 0.8rem; }
.manual-request { margin: 1rem 0; border-top: 1px solid var(--rule); padding-top: 0.75rem; }
.manual-request summary { color: var(--accent); cursor: pointer; font-weight: 600; }
.compact-form { margin-top: 0.8rem; padding: 1rem; border: 1px solid var(--rule); background: var(--surface); }
.checkpoint-continue { margin-top: 1.3rem; padding: 1.1rem; border-left: 3px solid var(--accent); background: #f6f8fd; }
.checkpoint-continue .hint { margin-bottom: 0; }
.checkpoint-complete { color: var(--green); }
.checkpoint-blocked {
  padding: 0.8rem 0.9rem;
  border-left: 4px solid var(--red);
  background: #fff7f6;
}
.checkpoint-blocked strong { color: var(--red); }
.checkpoint-blocked p { margin: 0.2rem 0 0.4rem; color: var(--muted); }
.checkpoint-blocked ul { margin: 0; padding-left: 1.15rem; font-size: 0.86rem; }

/* Private source intake and detail */
.page-intro, .review-header {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 2rem;
  padding-bottom: 1.2rem; margin-bottom: 1.3rem; border-bottom: 1px solid var(--rule-strong);
}
.page-intro .page-title, .review-header .page-title { margin-bottom: 0.35rem; }
.page-intro .lede, .review-header .lede { max-width: 50rem; margin: 0; }
.privacy-mark {
  flex: none; padding: 0.28rem 0.6rem; border: 1px solid var(--amber); border-radius: 4px;
  color: var(--amber); font-size: 0.7rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
}
.source-request-context { margin: 0 0 1.2rem; padding: 0.9rem 1rem; border-left: 3px solid var(--amber); background: var(--amber-bg); }
.source-request-context strong { display: block; }
.source-request-context p { margin: 0.35rem 0 0; }
.source-form { display: grid; gap: 1rem; }
.form-section { border: 1px solid var(--rule); border-radius: 8px; background: var(--surface); overflow: hidden; }
.form-section-heading { display: flex; gap: 0.8rem; padding: 0.9rem 1.1rem; border-bottom: 1px solid var(--rule); background: #faf9f6; }
.form-section-heading > span { display: grid; place-items: center; flex: 0 0 1.7rem; height: 1.7rem; border-radius: 50%; background: var(--accent); color: white; font-size: 0.78rem; font-weight: 700; }
.form-section-heading h2 { margin: 0; font-family: var(--serif); font-size: 1.25rem; font-weight: 500; }
.form-section-heading p { margin: 0.05rem 0 0; color: var(--muted); font-size: 0.82rem; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.9rem 1rem; }
.form-section > .form-grid { padding: 1.1rem; }
.field { display: grid; align-content: start; gap: 0.25rem; min-width: 0; color: var(--muted); font-size: 0.82rem; font-weight: 600; }
.field input, .field select, .field textarea, .compact-form input, .compact-form select, .compact-form textarea,
.decision-form input, .decision-form select, .signoff-form input, .signoff-form select, .signoff-form textarea {
  width: 100%; min-width: 0; padding: 0.5rem 0.6rem; border: 1px solid var(--rule-strong); border-radius: 6px;
  background: var(--surface); color: var(--ink); font: 400 0.9rem/1.4 var(--sans);
}
.field input[type="checkbox"] { width: auto; justify-self: start; }
.field-title, .field-canonical_url, .field-supplied_text, .field-original_file, .field-why_material, .field-researcher_notes,
.field-document_description, .field-existence_basis, .field-confirmation_criteria, .field-difficulty_basis,
.field-acquisition_route, .field-expected_support, .field-instructions, .field-citation { grid-column: 1 / -1; }
.field-supplied_text textarea { min-height: 22rem; resize: vertical; font-family: var(--serif); line-height: 1.6; }
.field small { color: var(--muted); font-weight: 400; }
.field.has-error input, .field.has-error textarea, .field.has-error select { border-color: var(--red); }
.optional-request-details summary { padding: 0.85rem 1.1rem; cursor: pointer; color: var(--accent); font-weight: 600; }
.optional-request-details[open] summary { border-bottom: 1px solid var(--rule); }
.sticky-form-actions {
  position: sticky; bottom: 0; z-index: 5; display: flex; justify-content: flex-end; align-items: center; gap: 1rem;
  margin-top: 0.25rem; padding: 0.8rem 1rem; border: 1px solid var(--rule-strong); border-radius: 8px;
  background: color-mix(in srgb, var(--surface) 94%, transparent); backdrop-filter: blur(10px);
}
.source-metadata { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0 0 1.4rem; border: 1px solid var(--rule); border-radius: 8px; background: var(--surface); overflow: hidden; }
.source-metadata div { padding: 0.65rem 0.85rem; border-bottom: 1px solid var(--rule); }
.source-metadata div:nth-child(odd):not(.wide) { border-right: 1px solid var(--rule); }
.source-metadata .wide { grid-column: 1 / -1; }
.source-metadata dt { color: var(--muted); font-size: 0.7rem; letter-spacing: 0.06em; text-transform: uppercase; }
.source-metadata dd { margin: 0.15rem 0 0; overflow-wrap: anywhere; }
.source-note { margin: 1rem 0; }
.source-note h2 { margin-bottom: 0.3rem; font-family: var(--serif); font-size: 1.15rem; }
.source-note p { margin-top: 0; }
.file-strip { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin: 1.2rem 0; padding: 0.8rem 1rem; border: 1px solid var(--rule); border-radius: 8px; background: var(--surface); }
.file-strip div { display: grid; }
.file-strip span { color: var(--muted); font-size: 0.8rem; }
.private-text { margin-top: 1.4rem; border: 1px solid var(--rule); border-radius: 8px; background: var(--surface); overflow: hidden; }
.section-bar { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 1rem; border-bottom: 1px solid var(--rule); }
.section-bar h2 { margin: 0; font-family: var(--serif); font-size: 1.25rem; font-weight: 500; }
.section-bar > span { color: var(--muted); font-size: 0.8rem; }
.private-text pre, .evidence-preview pre { margin: 0; padding: 1rem; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; font: 0.88rem/1.6 var(--serif); }

/* Evidence review workspace */
.review-header-actions { display: grid; justify-items: end; gap: 0.7rem; flex: none; }
.review-jump { position: sticky; top: 104px; z-index: 10; display: flex; gap: 0.25rem; margin: -1.3rem 0 1rem; padding: 0.55rem 0; overflow-x: auto; border-bottom: 1px solid var(--rule); background: var(--paper); }
.review-jump a { flex: none; padding: 0.25rem 0.55rem; color: var(--muted); font-size: 0.78rem; font-weight: 600; text-decoration: none; }
.review-jump a:hover { color: var(--accent); }
.review-metrics { display: grid; grid-template-columns: repeat(5, 1fr); margin: 0 0 1.2rem; border: 1px solid var(--rule); border-radius: 8px; background: var(--surface); overflow: hidden; }
.review-metrics > div { display: grid; padding: 0.7rem 0.85rem; border-right: 1px solid var(--rule); }
.review-metrics > div:last-child { border-right: 0; }
.review-metrics strong { font: 500 1.4rem/1 var(--serif); }
.review-metrics span { margin-top: 0.3rem; color: var(--muted); font-size: 0.72rem; text-transform: uppercase; }
.review-metrics .metric-alert { box-shadow: inset 0 3px 0 var(--amber); }
.review-section { scroll-margin-top: 160px; margin: 0 0 1.2rem; padding: 1.1rem; border: 1px solid var(--rule); border-radius: 8px; background: var(--surface); }
.review-section-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 0.9rem; padding-bottom: 0.7rem; border-bottom: 1px solid var(--rule); }
.review-section-head h2 { margin: 0; font-family: var(--serif); font-size: 1.45rem; font-weight: 500; }
.review-section-head > span { color: var(--muted); font-size: 0.8rem; }
.must-resolve { border-left: 4px solid var(--amber); }
.clear-state { margin: 0; color: var(--green); }
.resolve-row { display: grid; grid-template-columns: 6.5rem minmax(10rem, 0.6fr) minmax(12rem, 1fr) auto; align-items: center; gap: 0.7rem; padding: 0.6rem 0; border-bottom: 1px solid var(--rule); color: var(--ink); text-decoration: none; }
.resolve-row:last-child { border-bottom: 0; }
.resolve-row > span:last-of-type { color: var(--muted); font-size: 0.82rem; }
.grade { display: inline-flex; width: fit-content; padding: 0.16rem 0.45rem; border-radius: 4px; background: #eceae5; color: var(--muted); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
.grade-supported { background: #e9f6ee; color: var(--green); }
.grade-partial { background: var(--amber-bg); color: var(--amber); }
.grade-unsupported, .grade-cannot_verify { background: #fdeceb; color: var(--red); }
.review-article { max-width: 49rem; margin: 0 auto; }
.citation-review-list { display: grid; gap: 0.8rem; }
.citation-review { padding: 0.9rem; border: 1px solid var(--rule); border-radius: 7px; background: #fcfbf8; }
.citation-review > header { display: grid; grid-template-columns: auto 1fr; align-items: start; gap: 0.75rem; }
.citation-review > header div { display: grid; min-width: 0; }
.citation-review > header a { overflow: hidden; color: var(--muted); font-size: 0.76rem; text-overflow: ellipsis; white-space: nowrap; }
.citation-columns { display: grid; grid-template-columns: 1.2fr 0.8fr; gap: 1rem; margin: 0.8rem 0; }
.citation-columns h3, .evidence-preview h3 { margin: 0 0 0.25rem; color: var(--muted); font-size: 0.72rem; letter-spacing: 0.04em; text-transform: uppercase; }
.citation-columns p { margin: 0; }
.passage { padding: 0.55rem 0.7rem; border-left: 3px solid var(--rule-strong); background: white; white-space: pre-wrap; font-family: var(--serif); }
.evidence-preview { margin: 0.7rem 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); padding: 0.55rem 0; }
.evidence-preview summary { color: var(--accent); cursor: pointer; font-size: 0.84rem; font-weight: 600; }
.evidence-preview pre { max-height: 22rem; margin-top: 0.55rem; border: 1px solid var(--rule); background: white; }
.decision-form { display: grid; grid-template-columns: minmax(10rem, 0.35fr) minmax(14rem, 1fr) auto; align-items: end; gap: 0.65rem; }
.decision-form label, .signoff-form label { display: grid; gap: 0.22rem; color: var(--muted); font-size: 0.72rem; font-weight: 600; }
.finding-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.finding-review { margin-bottom: 0.7rem; padding: 0.75rem; border: 1px solid var(--rule); border-radius: 7px; background: #fcfbf8; }
.finding-review > p { margin: 0.35rem 0; color: var(--muted); font-size: 0.84rem; }
.finding-meta { display: flex; gap: 0.45rem; color: var(--faint); font-size: 0.68rem; text-transform: uppercase; }
.finding-citations { margin: 0.4rem 0; padding-left: 1rem; font-size: 0.75rem; }
.compact-decision { grid-template-columns: minmax(8rem, 0.7fr) minmax(8rem, 1fr) auto; margin-top: 0.55rem; }
.materials-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.2rem; }
.materials-grid > div { min-width: 0; }
.materials-grid ul { margin: 0; padding-left: 1.1rem; }
.material-row { margin-bottom: 0.45rem; }
.signoff-section { border-top: 4px solid var(--accent); }
.signoff-form { display: grid; grid-template-columns: minmax(12rem, 0.35fr) minmax(16rem, 1fr) auto; align-items: end; gap: 0.8rem; }
.redraft-callout { margin-top: 1rem; padding: 0.9rem 1rem; border-left: 3px solid var(--amber); background: var(--amber-bg); }
.redraft-callout h3 { margin: 0; font-size: 1rem; }
.redraft-callout p { margin: 0.3rem 0 0.7rem; }

@media (max-width: 780px) {
  .checkpoint-grid, .form-grid, .source-metadata, .finding-columns, .materials-grid, .citation-columns, .request-details { grid-template-columns: 1fr; }
  .source-metadata .wide, .field-title, .field-canonical_url, .field-supplied_text, .field-original_file, .field-why_material, .field-researcher_notes,
  .field-document_description, .field-existence_basis, .field-confirmation_criteria, .field-difficulty_basis,
  .field-acquisition_route, .field-expected_support, .field-instructions, .field-citation { grid-column: 1; }
  .source-metadata div:nth-child(odd):not(.wide) { border-right: 0; }
  .review-metrics { grid-template-columns: repeat(2, 1fr); }
  .review-metrics > div { border-bottom: 1px solid var(--rule); }
  .resolve-row { grid-template-columns: auto 1fr; }
  .resolve-row > span:last-of-type { grid-column: 1 / -1; }
  .decision-form, .compact-decision, .signoff-form { grid-template-columns: 1fr; }
  .page-intro, .review-header { display: grid; gap: 0.75rem; }
  .review-header-actions { justify-items: start; }
}

.login-card {
  max-width: 22rem; margin: 3rem auto;
  background: var(--surface); border: 1px solid var(--rule);
  border-radius: 10px; padding: 1.8rem;
}
.login-card h1 { font-family: var(--serif); font-weight: 500; margin-top: 0; }
.login-intro { color: var(--muted); margin: -0.25rem 0 1.2rem; }
.auth-status { min-height: 1.5rem; margin: 0 0 0.8rem; color: var(--muted); }
.auth-status:empty { display: none; }
.stack button:disabled { cursor: wait; opacity: 0.62; }

/* ── Stepper ─────────────────────────────────────────────────── */

.stepper { margin-top: 0.5rem; }

.step { min-width: 0; padding: 1.15rem 0; border-bottom: 1px solid var(--rule-strong); }
.step:last-child { border-bottom: none; }

.step-head { display: flex; align-items: center; gap: 0.85rem; }
.step-head h2 {
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.35rem;
  margin: 0;
}
.step-head .pill { margin-left: auto; }

.step-num {
  width: 1.75rem; height: 1.75rem; border-radius: 50%;
  display: grid; place-items: center;
  font-size: 0.9rem; font-weight: 600;
  background: #dddbd4; color: var(--muted);
  flex: none;
}
.step-active .step-num { background: var(--accent); color: #fff; }
.step-done .step-num { background: #e9f6ee; color: var(--green); }
.step-locked { opacity: 0.55; }

.step-body { min-width: 0; max-width: 100%; margin: 0.9rem 0 0 2.6rem; }
.step-body > :first-child { margin-top: 0; }

/* The active step's working panel */
.panel {
  background: #faf9f6;
  border: 1px solid var(--rule);
  border-radius: 10px;
  padding: 1.15rem 1.3rem 1.3rem;
}
.panel > .lede { margin: 0 0 1rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--rule); }

.group-label {
  font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--muted); font-weight: 600;
  margin: 1.15rem 0 0.45rem;
}
.panel .group-label:first-of-type { margin-top: 0; }

.campaign-finance-panel {
  display: grid;
  grid-template-columns: minmax(12rem, 0.82fr) minmax(18rem, 1.18fr);
  gap: 1.4rem;
  margin-top: 0.9rem;
  padding: 1.1rem 1.2rem;
  border: 1px solid var(--rule);
  border-radius: 10px;
  background: #faf9f6;
}
.campaign-finance-intro {
  padding-right: 1.2rem;
  border-right: 1px solid var(--rule);
}
.campaign-finance-intro .group-label { margin: 0 0 0.35rem; }
.campaign-finance-intro h3 {
  margin: 0;
  font: 500 1.18rem/1.3 var(--serif);
}
.campaign-finance-intro p:not(.group-label) {
  margin: 0.45rem 0 0.65rem;
  color: var(--muted);
  font-size: 0.84rem;
  line-height: 1.5;
}
.campaign-finance-intro a {
  font-size: 0.84rem;
  font-weight: 600;
  text-decoration: none;
}
.campaign-finance-intro a:hover { text-decoration: underline; }
.campaign-finance-form {
  display: grid;
  align-content: start;
  gap: 0.7rem;
}
.campaign-finance-form label {
  display: grid;
  gap: 0.25rem;
  color: var(--ink);
  font-size: 0.8rem;
  font-weight: 650;
}
.campaign-finance-form input {
  width: 100%;
  min-width: 0;
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--rule-strong);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font: 0.86rem/1.35 var(--mono);
}
.campaign-finance-form input:focus-visible {
  border-color: var(--accent);
  outline: 3px solid rgba(30, 79, 216, 0.18);
  outline-offset: 1px;
}
.campaign-finance-form small {
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 400;
}
.campaign-finance-actions {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin-top: 0.15rem;
}
.campaign-finance-actions button.primary {
  padding: 0.48rem 0.85rem;
  font-size: 0.84rem;
}
.campaign-finance-pinned {
  margin: -0.15rem 0 0;
  color: var(--green);
  font-size: 0.75rem;
  overflow-wrap: anywhere;
}

.rows {
  background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: 8px;
  overflow: hidden;
}
.row {
  display: flex; align-items: baseline; gap: 0.7rem;
  padding: 0.6rem 0.9rem;
  border-bottom: 1px solid var(--rule);
  cursor: pointer;
}
.rows .row:last-child { border-bottom: none; }
.row input[type="checkbox"] { accent-color: var(--accent); transform: translateY(1px); }
.row-main { flex: 1; min-width: 0; }
.row-title { display: block; font-weight: 500; }
.row-title .star { color: var(--amber); }
.row-sub { display: block; font-size: 0.85rem; color: var(--muted); }
.row-side { flex: none; font-size: 0.8rem; color: var(--muted); white-space: nowrap; }
.row-compact { padding: 0.42rem 0.9rem; }
.row-compact .row-title { font-weight: 400; font-size: 0.92rem; }

.conf-high { color: var(--green); }
.conf-medium { color: var(--amber); }
.conf-low { color: var(--red); }

.no-signal { margin-top: 0.7rem; font-size: 0.9rem; }
.no-signal summary { cursor: pointer; color: var(--muted); }
.no-signal ul { margin: 0.4rem 0 0; padding-left: 1.2rem; }

.lead-inventory { margin-top: 0.8rem; }
.lead-inventory summary {
  cursor: pointer;
  color: var(--accent);
  font-size: 0.9rem;
}
.lead-list {
  display: grid;
  gap: 0.65rem;
  margin-top: 0.7rem;
}
.lead-item {
  padding: 0.75rem 0.85rem;
  background: var(--surface);
  border-left: 3px solid var(--rule-strong);
}
.lead-item > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
}
.lead-item p { margin: 0.25rem 0; font-size: 0.9rem; }
.lead-item small { color: var(--muted); }
.lead-meta {
  flex: none;
  color: var(--muted);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.panel-actions {
  display: flex; align-items: center; gap: 1.2rem;
  margin-top: 1.25rem;
}
.panel-actions .also { font-size: 0.92rem; text-decoration: none; }
.panel-actions .also:hover { text-decoration: underline; }

/* Research-stage rows (step 2) */
.run-list { list-style: none; padding: 0; margin: 0; background: var(--surface); border: 1px solid var(--rule); border-radius: 8px; }
.run-list li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 0.7rem;
  padding: 0.65rem 0.9rem;
  border-bottom: 1px solid var(--rule);
}
.run-list li:last-child { border-bottom: none; }
.run-main { display: grid; gap: 0.18rem; min-width: 0; }
.run-actions { display: flex; align-items: center; gap: 0.65rem; }
.run-list .run-name { font-weight: 500; line-height: 1.35; }
.run-list .run-note { font-size: 0.85rem; color: var(--faint); }
.web-pass-receipt {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.2rem 0.75rem;
  margin-top: 0.2rem;
  color: var(--muted);
  font-size: 0.74rem;
}
.web-pass-receipt strong {
  color: var(--green);
  font-weight: 650;
}
.web-pass-receipt span + span {
  position: relative;
}
.web-pass-receipt span + span::before {
  position: absolute;
  left: -0.43rem;
  color: var(--rule-strong);
  content: "·";
}
.web-pass-receipt-warning {
  display: grid;
  justify-items: start;
  gap: 0.15rem;
  max-width: 38rem;
  padding: 0.45rem 0.55rem;
  border-left: 3px solid var(--amber);
  background: var(--amber-bg);
}
.web-pass-receipt-warning strong { color: #8a4c00; }
.web-pass-receipt-warning span + span::before { content: none; }
.run-list .run-error {
  max-width: 48rem;
  color: var(--red);
  font-size: 0.82rem;
  line-height: 1.42;
}
.run-list .report-link { flex: none; font-size: 0.9rem; text-decoration: none; }
.run-control-form { display: inline-flex; margin: 0; }
.run-control {
  min-height: 1.8rem;
  padding: 0.2rem 0.58rem;
  border: 1px solid var(--rule-strong);
  border-radius: 5px;
  background: var(--surface);
  color: var(--muted);
  font: 600 0.75rem/1.2 var(--sans);
  cursor: pointer;
}
.run-control:hover { border-color: var(--accent); color: var(--accent); }
.run-control:active { transform: translateY(1px); }
.run-control:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.run-control-retry { border-color: color-mix(in srgb, var(--accent) 38%, var(--rule)); color: var(--accent); }
.run-control-cancel:hover { border-color: var(--red); color: var(--red); }
.run-failure {
  margin: 0.45rem 0;
  padding: 0.65rem 0.75rem;
  border-left: 3px solid var(--red);
  background: #fff7f6;
  color: var(--ink);
  font-size: 0.84rem;
}
.run-failure strong { display: block; color: var(--red); }
.run-failure p { margin: 0.15rem 0 0; color: var(--muted); }
.run-failure details { margin-top: 0.35rem; color: var(--muted); }
.run-failure summary { cursor: pointer; font-size: 0.75rem; }
.run-failure code { display: block; margin-top: 0.25rem; white-space: normal; overflow-wrap: anywhere; color: var(--muted); }

.run-live {
  display: grid;
  grid-template-columns: 0.8rem minmax(0, 1fr);
  gap: 0.48rem;
  align-items: start;
  color: var(--muted);
  margin-top: 0.18rem;
}
.activity-spinner { margin-top: 0.3rem; }
.run-live-copy { display: grid; gap: 0.04rem; min-width: 0; }
.activity-message { color: var(--accent-ink); font-size: 0.86rem; font-weight: 500; }
.activity-detail {
  color: var(--muted);
  font-size: 0.8rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.run-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.2rem 0.75rem;
  color: var(--faint);
  font-size: 0.76rem;
}
.package-phase { color: var(--ink); font-weight: 600; margin-bottom: 0.2rem; }

@keyframes activity-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .poll-status.is-live::before,
  .activity-spinner { animation: none; }
}

.step-cta { margin-top: 0.9rem; display: grid; gap: 0.35rem; justify-items: start; }
.step-cta .hint { font-size: 0.88rem; color: var(--muted); margin: 0; }

.article-builder {
  display: grid;
  min-width: 0;
  max-width: 100%;
  gap: 0.9rem;
  padding: 1.05rem 1.15rem 1.15rem;
  background: #faf9f6;
  border: 1px solid var(--rule);
  border-radius: 10px;
  margin-top: 1rem;
}
.article-builder > button { justify-self: start; }
.article-plan {
  min-width: 0;
  max-width: 100%;
  margin-top: 1rem;
  padding: 1rem 1.1rem;
  border: 1px solid var(--rule-strong);
  border-radius: 10px;
  background: var(--surface);
}
.article-plan-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
}
.article-plan-head > div { min-width: 0; }
.article-plan-head h3 {
  max-width: 38rem;
  margin: 0.15rem 0 0;
  overflow-wrap: anywhere;
  font: 500 1.2rem/1.35 var(--serif);
}
.article-plan-head > span {
  flex: none;
  color: var(--muted);
  font-size: 0.78rem;
}
.article-outline {
  display: grid;
  gap: 0;
  margin: 0.85rem 0 0;
  padding: 0;
  list-style: none;
  counter-reset: outline;
}
.article-outline li {
  display: grid;
  min-width: 0;
  grid-template-columns: 1.35rem minmax(10rem, 0.45fr) minmax(14rem, 1fr);
  gap: 0.8rem;
  padding: 0.55rem 0;
  border-bottom: 1px solid var(--rule);
  counter-increment: outline;
}
.article-outline li::before {
  content: counter(outline);
  grid-column: 1;
  grid-row: 1;
  align-self: start;
  width: 1.35rem;
  color: var(--faint);
  font: 500 0.74rem/1.5 var(--mono);
}
.article-outline strong {
  grid-column: 2;
}
.article-outline span {
  grid-column: 3;
  color: var(--muted);
  font-size: 0.84rem;
}
.coverage-details { margin-top: 0.75rem; }
.coverage-details > summary,
.editorial-direction > summary {
  cursor: pointer;
  color: var(--accent);
  font-weight: 600;
}
.coverage-findings { display: grid; gap: 0.55rem; margin-top: 0.8rem; }
.coverage-findings > div {
  padding-left: 0.8rem;
  border-left: 2px solid var(--rule-strong);
}
.coverage-findings span {
  display: block;
  color: var(--amber);
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
}
.coverage-findings p,
.coverage-note {
  margin: 0.2rem 0 0;
  color: var(--muted);
  font-size: 0.82rem;
}
.editorial-direction {
  padding-top: 0.75rem;
  border-top: 1px solid var(--rule);
}
.editorial-direction > summary span {
  margin-left: 0.35rem;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 500;
}
.direction-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.8rem 1rem;
  margin-top: 0.8rem;
}
.direction-fields label {
  display: grid;
  align-content: start;
  gap: 0.25rem;
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 600;
}
.direction-fields label:first-child,
.direction-fields label:nth-child(2),
.direction-fields label:nth-child(4) { grid-column: 1 / -1; }
.direction-fields textarea {
  width: 100%;
  min-width: 0;
  padding: 0.55rem 0.65rem;
  resize: vertical;
  border: 1px solid var(--rule-strong);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  font: 400 0.9rem/1.45 var(--sans);
}
.direction-fields textarea:focus-visible {
  outline: 3px solid rgba(30, 79, 216, 0.2);
  outline-offset: 1px;
  border-color: var(--accent);
}
.direction-fields small {
  color: var(--muted);
  font-weight: 400;
  line-height: 1.4;
}
.revision-form { display: grid; gap: 1rem; margin-top: 0.9rem; }
.revision-form > button { justify-self: start; }
.direction-used {
  padding: 0.55rem 0.7rem;
  border-left: 3px solid var(--accent);
  background: #f6f8fd;
  color: var(--muted);
  font-size: 0.84rem;
}
.revision-header { margin-bottom: 1rem; }
.revision-state {
  display: grid;
  gap: 0.1rem;
  margin-bottom: 1rem;
  padding: 0.75rem 0.9rem;
  border-left: 3px solid var(--amber);
  background: var(--amber-bg);
}
.revision-state span { color: var(--muted); font-size: 0.84rem; }
.revision-state-active { border-left-color: var(--accent); background: #f0f4ff; }
.revision-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(22rem, 0.8fr);
  grid-template-areas: "draft controls";
  align-items: start;
  gap: 1rem;
}
.revision-current-draft {
  grid-area: draft;
  min-width: 0;
  padding: 1.2rem 1.35rem;
  border: 1px solid var(--rule);
  border-radius: 8px;
  background: var(--surface);
}
.revision-current-draft > header,
.revision-panel-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
}
.revision-current-draft > header {
  margin-bottom: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--rule);
}
.revision-current-draft h2,
.revision-panel h2 {
  margin: 0;
  font: 500 1.35rem/1.3 var(--serif);
}
.revision-current-draft > header a,
.revision-panel-head a { flex: none; font-size: 0.82rem; }
.revision-controls {
  grid-area: controls;
  display: grid;
  min-width: 0;
  gap: 1rem;
}
.revision-panel {
  min-width: 0;
  padding: 1rem 1.1rem;
  border: 1px solid var(--rule);
  border-radius: 8px;
  background: var(--surface);
}
.revision-panel > p { margin: 0.35rem 0 0; color: var(--muted); font-size: 0.86rem; }
.revision-source-list { display: grid; margin-top: 0.8rem; border-top: 1px solid var(--rule); }
.revision-source-list a {
  display: grid;
  gap: 0.05rem;
  padding: 0.55rem 0;
  border-bottom: 1px solid var(--rule);
  color: var(--ink);
  text-decoration: none;
}
.revision-source-list a:hover strong { color: var(--accent); }
.revision-source-list span { color: var(--muted); font-size: 0.76rem; }
@media (max-width: 780px) {
  .campaign-finance-panel { grid-template-columns: 1fr; gap: 0.9rem; }
  .campaign-finance-intro {
    padding: 0 0 0.85rem;
    border-right: 0;
    border-bottom: 1px solid var(--rule);
  }
  .article-plan-head { display: grid; gap: 0.4rem; }
  .article-outline li { grid-template-columns: 1.35rem minmax(0, 1fr); gap: 0.2rem 0.45rem; }
  .article-outline strong { grid-column: 2; }
  .article-outline span { grid-column: 2; }
  .direction-fields { grid-template-columns: 1fr; }
  .direction-fields label:first-child,
  .direction-fields label:nth-child(2),
  .direction-fields label:nth-child(4) { grid-column: 1; }
  .revision-layout {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "controls" "draft";
  }
  .revision-current-draft,
  .revision-panel { padding: 0.9rem; }
  .revision-current-draft > header,
  .revision-panel-head { display: grid; gap: 0.35rem; }
}
.article-result {
  padding: 0.95rem 1.05rem;
  background: var(--surface);
  border-left: 3px solid var(--accent);
}
.article-result p { margin: 0; }
.article-result .final-link { display: inline-block; margin: 0.2rem 0; }
.result-label {
  color: var(--muted);
  font-size: 0.82rem;
}
.range-warning { color: var(--amber); font-weight: 600; }

.research-materials { margin-top: 1.1rem; }
.research-materials > summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 0.9rem;
}
.materials-list {
  display: grid;
  gap: 0.55rem;
  margin-top: 0.65rem;
}
.materials-list > a {
  display: grid;
  gap: 0.1rem;
  padding: 0.7rem 0;
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid var(--rule);
}
.materials-list > a:last-of-type { border-bottom: 0; }
.materials-list > a:hover strong { color: var(--accent); }
.materials-list span { color: var(--muted); font-size: 0.84rem; }
.rebuild-form { margin-top: 0.7rem; }

.final-link {
  font-family: var(--serif); font-size: 1.15rem;
  text-decoration: none;
}
.final-link:hover { text-decoration: underline; }

.spinner { color: var(--muted); }
.spinner::before { content: "⟳ "; color: var(--accent); }

details.step-summary summary { cursor: pointer; color: var(--muted); }

/* ── Report reader (§18: the most designed screen) ───────────── */

.report { max-width: 43rem; margin: 0 auto; }
.report-meta {
  display: flex; flex-wrap: wrap; gap: 0.8rem; align-items: center;
  margin: 0.3rem 0 1.6rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--rule-strong);
}
.report-meta .kicker { letter-spacing: 0.11em; }
.report-meta .copy-md { margin-left: auto; }

.abstract {
  font-family: var(--serif);
  font-size: 1.12rem;
  font-style: italic;
  color: #43464d;
  margin: 0 0 1.8rem;
}

.artifact-note {
  display: grid;
  gap: 0.1rem;
  margin: -0.6rem 0 1.35rem;
  padding: 0.75rem 0.9rem;
  background: #f2f5fd;
  border-left: 3px solid var(--accent);
  font-size: 0.88rem;
}
.artifact-note span { color: var(--muted); }
.artifact-note-secondary {
  background: #eae8e2;
  border-left-color: var(--muted);
}

.report-body {
  font-family: var(--serif);
  font-size: 1.08rem;
  line-height: 1.78;
}
.report-body h1 { font-size: 1.75rem; font-weight: 500; line-height: 1.25; }
.report-body h2 {
  font-size: 1.3rem; font-weight: 500; margin-top: 2.2rem;
  padding-top: 1.1rem; border-top: 1px solid var(--rule);
}
.report-body h3 { font-size: 1.08rem; }
.report-body table { border-collapse: collapse; font-family: var(--sans); font-size: 0.9rem; margin: 1rem 0; }
.report-body th, .report-body td { border: 1px solid var(--rule-strong); padding: 0.35rem 0.7rem; }
.report-body th { background: #faf9f6; text-align: left; }
.report-body td:last-child { font-family: var(--mono); font-size: 0.85rem; }
.report-body code { background: #eceae5; padding: 0 0.3rem; border-radius: 3px; }
.report-body blockquote { border-left: 3px solid var(--rule-strong); margin-left: 0; padding-left: 1rem; color: var(--muted); }

@media (max-width: 640px) {
  .length-options { grid-template-columns: 1fr; }
  .custom-length { grid-template-columns: 1fr 1fr; }
  .step-body { margin-left: 0; }
  .lead-item > div { display: grid; gap: 0.15rem; }
  .run-list li { grid-template-columns: 1fr; }
  .run-actions { justify-content: space-between; }
}
