:root {
  --bg: #f2ede2;
  --panel: #fbf7ef;
  --ink: #231d18;
  --muted: #65584e;
  --line: #cdbfae;
  --accent: #8a6a2f;
  --link: #7c6128;
  --danger: #8f2f25;
  --warn: #9a5a10;
  --ok: #2f5f42;
  --shadow: rgba(35, 29, 24, 0.08);
  --section-gap: 1.5rem;
  --stack-gap: var(--section-gap);
  --block-gap: 1rem;
  --card-pad: 1.25rem;
  --measure: 90ch;
  --panel-lift: #ffffff;
  color-scheme: light;
  --font-display: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", serif;
  --font-body: "Source Serif 4", "Georgia", serif;
}

/* ── Disclaimer overlay ── */
.disclaimer-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(35, 29, 24, 0.55);
  backdrop-filter: blur(4px);
}

.disclaimer-overlay.is-open {
  display: flex;
}

.disclaimer-overlay.hidden {
  display: none;
}

.disclaimer-dialog {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 2rem 2.25rem;
  max-width: 480px;
  width: calc(100% - 2rem);
  box-shadow: 0 8px 32px var(--shadow);
  text-align: center;
}

.disclaimer-dialog h2 {
  font-family: var(--font-display);
  margin: 0 0 1rem;
  font-size: 1.35rem;
  color: var(--ink);
}

.disclaimer-dialog p {
  margin: 0 0 0.85rem;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--muted);
}

.disclaimer-btn {
  margin-top: 0.75rem;
  padding: 0.6rem 2rem;
  font-family: var(--font-display);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--panel);
  background: var(--accent);
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: opacity 0.15s;
}

.disclaimer-btn:hover {
  opacity: 0.85;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background:
    radial-gradient(circle at top, rgba(138, 106, 47, 0.18), transparent 32%),
    linear-gradient(180deg, #f7f1e6 0%, var(--bg) 100%);
  color: var(--ink);
  font-family: var(--font-body);
}

.page {
  width: min(1100px, calc(100% - 2rem));
  margin: 0 auto;
  padding: 3rem 0 4rem;
}

.top-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.top-nav a,
.detail-link {
  color: var(--link);
  text-decoration: none;
  font-weight: 700;
}

.top-nav a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0.25rem 0.05rem;
}

.top-nav a[aria-current="page"] {
  color: var(--ink);
}

.site-footer a {
  color: var(--link);
  font-weight: 700;
}

.link-row {
  display: flex;
  gap: 0.8rem;
  flex-wrap: wrap;
  margin-top: 0.8rem;
}

.hero {
  position: relative;
  padding: 2.5rem 0 0;
  overflow: hidden;
}

.hero-copy {
  position: relative;
  z-index: 1;
}

.hero-illustration {
  width: 100%;
  margin-top: 1.5rem;
  line-height: 0;
}

.hero-illustration img {
  width: 100%;
  height: auto;
  display: block;
}

@media (max-width: 900px) {
  .hero {
    text-align: center;
  }

  .hero-copy h1 {
    margin: 0 auto;
  }

  .lede {
    margin: 1rem auto;
  }

  .build-meta {
    margin: 1rem auto 0;
  }

  /* Nested record text sits in the hero. Center the name, not the paragraphs. */
  .hero :is(.status-definition, .record-notes, .panel, .member-score, .sponsorship-cap, .member-borderline) {
    text-align: start;
  }
}

.compact-hero h1 {
  max-width: 100%;
}

.compact-hero .build-meta,
.my-ballot-sheet .build-meta {
  max-width: none;
  width: 100%;
}

.eyebrow,
.section-label {
  margin: 0 0 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--link);
  font-size: 0.78rem;
  font-weight: 700;
}

h1,
h2,
h3 {
  font-family: var(--font-display);
  line-height: 1.05;
  margin: 0;
}

h1 {
  max-width: 100%;
  font-size: clamp(2.4rem, 5vw, 4rem);
}

.lede {
  max-width: min(100%, var(--measure));
  color: var(--muted);
  font-size: 1.05rem;
  line-height: 1.7;
}

.build-meta {
  margin: 1rem 0 0;
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.6;
  padding: 0.8rem 0.95rem;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.45);
  max-width: fit-content;
}

.build-freshness {
  color: var(--ink);
  font-weight: 600;
}

.summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  margin: 2rem 0;
}

.stat-card,
.panel,
.candidate-card {
  background: color-mix(in srgb, var(--panel) 92%, var(--panel-lift) 8%);
  border: 1px solid var(--line);
  border-radius: 20px;
  box-shadow: 0 18px 40px var(--shadow);
}

.stat-card {
  padding: 1rem 1.2rem;
}

.stat-card .label {
  margin: 0;
  color: var(--muted);
  font-size: 0.85rem;
}

.stat-card .value {
  margin: 0.35rem 0 0;
  font-size: 2rem;
  font-family: var(--font-display);
}

.small-value {
  font-size: 1.35rem !important;
}

.panel {
  padding: var(--card-pad);
}

/* Stacked panels and heroes share one gap, including panels nested under a wrapper. */
.panel + .panel,
.hero + .panel,
.page > .panel + *,
.page > * + .panel {
  margin-top: var(--stack-gap);
}

/* Following bordered boxes in normal flow. Gap parents reset this below. */
.doctrine-card + .doctrine-card,
.score-event-card + .score-event-card,
.my-ballot-card + .my-ballot-card,
.candidate-status-group + .candidate-status-group {
  margin-top: var(--stack-gap);
}

:is(
  .doctrine-stack,
  .candidate-list,
  .candidate-group-list,
  .criteria-grid,
  .summary-grid,
  .bill-explorer-list,
  .scoring-tables,
  .inline-score-blocks,
  .my-ballot-races
) {
  gap: var(--stack-gap);
}

/* Equal specificity to the sibling rule above, and later, so a gap parent is not doubled. */
:is(
  .doctrine-stack,
  .candidate-list,
  .candidate-group-list,
  .criteria-grid,
  .summary-grid,
  .bill-explorer-list,
  .scoring-tables,
  .inline-score-blocks,
  .my-ballot-races
) > :is(
  .doctrine-card,
  .score-event-card,
  .my-ballot-card,
  .my-ballot-race,
  .candidate-status-group,
  .candidate-card,
  .criteria-card,
  .stat-card,
  .scoring-table-group,
  .bill-card,
  .bill-explorer-card,
  .inline-score-block,
  .panel
) + * {
  margin-top: 0;
}

.criteria-panel {
  margin-bottom: var(--section-gap);
}

.criteria-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
}

.criteria-card {
  padding: var(--card-pad);
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(138, 106, 47, 0.06);
}

.criteria-card h3 {
  margin: 0;
  font-size: 1.15rem;
}

.criteria-card p,
.criteria-note {
  color: var(--muted);
  line-height: 1.6;
}

.how-panel {
  margin-bottom: var(--section-gap);
}

.how-copy {
  max-width: none;
  color: var(--muted);
  line-height: 1.7;
}

.how-copy h3 {
  margin: var(--stack-gap) 0 var(--block-gap);
  color: var(--ink);
  font-size: 1.35rem;
}

.how-copy h3:first-child {
  margin-top: 0;
}

.how-copy p,
.how-copy ul,
.how-copy ol {
  margin: 0 0 var(--block-gap);
}

.how-copy ul,
.how-copy ol {
  margin-left: 0;
  padding: 0 0 0 1.2rem;
}

.how-copy li {
  margin-bottom: 0.5rem;
}

.criteria-note {
  margin: 1rem 0 0;
}

.panel-header {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: end;
  margin-bottom: 1rem;
}

.controls {
  display: flex;
  gap: 0.8rem;
  flex-wrap: wrap;
  justify-content: end;
}

.sort-control {
  color: var(--muted);
  display: grid;
  gap: 0.35rem;
}

.toggle-control {
  color: var(--muted);
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding-top: 1.5rem;
}

.toggle-control input {
  accent-color: var(--accent);
}

select {
  background: white;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 0.65rem 0.9rem;
  font: inherit;
  color: var(--ink);
}

.candidate-list {
  display: grid;
}

.candidate-status-group {
  display: grid;
  gap: 0.9rem;
  padding: 0.25rem 0 0.5rem;
}

.candidate-group-count {
  margin: 0;
  color: var(--muted);
  font-size: 0.92rem;
}

.candidate-group-list {
  display: grid;
}

.candidate-card {
  padding: 1.1rem 1.15rem;
}

.candidate-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas: "identity status";
  column-gap: 1rem;
  row-gap: 0.35rem;
  align-items: start;
}

.candidate-top > :first-child {
  grid-area: identity;
  min-width: 0;
}

.candidate-top > .status-pill {
  grid-area: status;
  justify-self: end;
  align-self: start;
}

.candidate-top:has(> .borderline-badge) {
  grid-template-areas:
    "identity status"
    "identity borderline";
}

.candidate-top > .borderline-badge {
  grid-area: borderline;
  justify-self: end;
  align-self: start;
  margin-left: 0;
}

.candidate-meta {
  margin: 0.35rem 0 0;
  color: var(--muted);
}

/* The status pill is about 25rem wide. Below this, that max-content width
   collapses the name column to 0 and the office line stacks one token per line. */
@media (max-width: 720px) {
  .candidate-top,
  .candidate-top:has(> .borderline-badge) {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "identity"
      "status"
      "borderline";
    row-gap: 0.55rem;
  }

  .candidate-top > :first-child,
  .candidate-top h3,
  .candidate-top .candidate-meta {
    max-width: 100%;
    min-width: 0;
  }

  .candidate-top h3,
  .candidate-top .candidate-meta {
    overflow-wrap: break-word;
    word-break: normal;
  }

  .candidate-top > .status-pill,
  .candidate-top > .borderline-badge {
    justify-self: start;
    max-width: 100%;
  }

  .candidate-top > .status-pill {
    white-space: normal;
  }
}

.status-pill {
  display: inline-block;
  border-radius: 999px;
  padding: 0.45rem 0.8rem;
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.status-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.55rem;
  margin: 0 0 1rem;
}

.status-Disqualified {
  color: white;
  background: var(--danger);
}

.status-Unfit,
.status-Compromised {
  color: white;
  background: var(--warn);
}

.status-Qualified {
  color: white;
  background: var(--ok);
}

.status-Not-Yet-Tested {
  color: #1c2430;
  background: #d9dee6;
}

.status-Insufficient-Record {
  color: white;
  background: #888;
}

.status-definition,
.positive-witness,
.caucus-independence {
  margin: 0.35rem 0 0;
  color: var(--muted);
  font-size: 0.92rem;
}

.candidate-card.unsettled {
  opacity: 0.72;
}

.candidate-card.unsettled .status-pill {
  filter: saturate(0.45);
}

.metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin: 1rem 0;
}

.metric {
  padding: 0.55rem 0.75rem;
  border-radius: 14px;
  background: rgba(138, 106, 47, 0.08);
  color: var(--ink);
  font-size: 0.92rem;
}

.vote-note {
  margin: 0.85rem 0 0;
  padding: 0.75rem 0.9rem;
  border-radius: 12px;
  border: 1px dashed var(--line);
  background: rgba(138, 106, 47, 0.05);
  color: var(--muted);
}

.detail-link-row {
  margin: 0.8rem 0 0;
}

.summary-block {
  margin: 0.9rem 0;
}

.summary-group {
  margin: 0.45rem 0;
}

.summary-group-title {
  margin: 0;
  font-weight: 700;
  color: var(--ink);
}

.summary-group-items {
  margin: 0.15rem 0 0;
  color: var(--muted);
}

.doctrine-stack {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
}

/* ── Scoring mechanics (doctrine page) ─────────────────────────────── */
.scoring-explainer {
  line-height: 1.65;
}
.scoring-explainer h3 {
  margin: 1.2rem 0 0.4rem;
  font-size: 1rem;
  color: var(--ink);
}
.scoring-explainer h3:first-child {
  margin-top: 0;
}
.scoring-explainer p {
  margin: 0.35rem 0;
}

.scoring-formula {
  margin-bottom: 1rem;
}

.formula-block {
  background: rgba(138, 106, 47, 0.07);
  border-left: 3px solid var(--accent);
  padding: 0.5rem 0.8rem;
  border-radius: 0 8px 8px 0;
  font-family: var(--font-display);
  font-size: 0.95rem;
  margin: 0.5rem 0;
}
.formula-block code {
  background: rgba(138, 106, 47, 0.1);
  padding: 0.1rem 0.35rem;
  border-radius: 4px;
  font-size: 0.88em;
}

.scoring-tables {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  margin-bottom: 1rem;
}

.scoring-table-group {
  background: rgba(255, 255, 255, 0.55);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 0.8rem 1rem;
  min-width: 0;
  overflow-x: auto;
}
.scoring-table-group h3 {
  margin-top: 0;
}

.scoring-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.85rem;
}
.scoring-table th {
  text-align: left;
  font-weight: 700;
  color: var(--muted);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.35rem 0.5rem;
  border-bottom: 2px solid var(--line);
}
.scoring-table td {
  padding: 0.35rem 0.5rem;
  border-bottom: 1px solid rgba(205, 191, 174, 0.4);
  color: var(--ink);
}
.scoring-table td.num {
  font-family: var(--font-display);
  font-weight: 700;
  text-align: center;
}
.scoring-table tr:last-child td {
  border-bottom: none;
}

.doctrine-card {
  padding: var(--card-pad);
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.55);
  scroll-margin-top: 1.5rem;
  min-width: 0;
}

.doctrine-issue-card {
  background: rgba(255, 255, 255, 0.72);
}

.doctrine-issue-header {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.55rem 1rem;
  align-items: start;
  margin-bottom: 0.55rem;
}

.doctrine-issue-header > div {
  min-width: 0;
}

.doctrine-issue-slug {
  margin: 0 0 0.3rem;
  color: var(--accent);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 700;
  overflow-wrap: anywhere;
}

.issue-tier-pill {
  display: inline-flex;
  align-items: center;
  padding: 0.35rem 0.65rem;
  border-radius: 999px;
  background: rgba(138, 106, 47, 0.1);
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 0.76rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.bill-card {
  margin-top: 0;
}

.bill-card p {
  margin: 0.45rem 0 0;
  line-height: 1.6;
}

.doctrine-summary {
  font-weight: 700;
  color: var(--ink);
}

.drilldown-block {
  margin-top: 0.9rem;
  padding-top: 0.8rem;
  border-top: 1px dashed var(--line);
}

.drilldown-block strong {
  display: block;
  margin-bottom: 0.35rem;
  color: var(--accent);
  font-size: 0.82rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.grouped-entry {
  margin-top: 0.5rem;
}

.grouped-title {
  margin: 0.45rem 0 0.15rem;
  font-weight: 700;
  color: var(--ink);
  font-size: 0.95rem;
}

.tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0.8rem 0 0;
}

.tag {
  padding: 0.38rem 0.6rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  font-size: 0.8rem;
  color: var(--muted);
}

.evidence-list {
  margin: 0.35rem 0 0;
  padding-left: 1.2rem;
  color: var(--muted);
  line-height: 1.6;
}

/* Closed groups for long link lists. The links stay in the HTML. */
.fold-list {
  display: grid;
  gap: 0.5rem;
}

.fold-block {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: color-mix(in srgb, var(--panel) 96%, var(--panel-lift) 4%);
}

.fold-summary {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  min-height: 44px;
  padding: 0.55rem 0.9rem;
  cursor: pointer;
  font-weight: 700;
  line-height: 1.3;
  list-style: none;
}

.fold-summary::-webkit-details-marker {
  display: none;
}

.fold-summary::before {
  content: "\25B6";
  flex: 0 0 auto;
  width: 0.7rem;
  font-size: 0.7rem;
  color: var(--muted);
  transition: transform 0.15s;
}

.fold-block[open] > .fold-summary::before {
  transform: rotate(90deg);
}

.fold-summary:hover {
  background: rgba(138, 106, 47, 0.08);
}

.fold-summary:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}

.fold-count {
  margin-left: auto;
  color: var(--muted);
  font-size: 0.85rem;
  font-weight: 700;
}

.fold-featured {
  margin: 0 0 var(--stack-gap);
}

.fold-block > .evidence-list {
  margin: 0;
  padding: 0.15rem 0.9rem 0.85rem 2rem;
}

.fold-block > .fold-list {
  margin: 0;
  padding: 0 0.75rem 0.75rem;
}

@media (max-width: 700px) {
  .page {
    width: min(100% - 1rem, 1100px);
    padding-top: 1.5rem;
  }

  .panel-header {
    display: grid;
  }

  .controls {
    justify-content: start;
  }
}

/* ── Vote record drill-down ─────────────────────────────────────────── */
.panel-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

.vote-search-input,
.vote-cast-filter {
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--text);
  font-size: 0.875rem;
}

.vote-search-input {
  width: 200px;
}

.vote-record-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0.9rem 1rem;
  margin-bottom: 0.6rem;
  background: var(--surface);
}

.vote-record-top {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.4rem 0.7rem;
  margin-bottom: 0.5rem;
}

.vote-cast-badge {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
}

.cast-yea   { background: #d1fae5; color: #065f46; }
.cast-nay   { background: #fee2e2; color: #991b1b; }
.cast-abstain { background: #f3f4f6; color: #6b7280; }

.vote-category-label {
  font-size: 0.78rem;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 0.15rem 0.45rem;
}

.bill-roll-calls {
  margin-bottom: 1rem;
}

.bill-roll-call-list {
  margin: 0.35rem 0 0;
  padding-left: 1.2rem;
}

.bill-roll-call {
  margin: 0.35rem 0;
  line-height: 1.45;
}

.vote-date {
  font-size: 0.8rem;
  color: var(--muted);
}

.bill-link {
  font-weight: 600;
  font-size: 0.9rem;
}

.vote-bill-title {
  font-size: 0.9rem;
  color: var(--muted);
}

.vote-mechanism {
  font-size: 0.85rem;
  color: var(--muted);
  margin: 0 0 0.3rem;
  font-style: italic;
}

.vote-meaning {
  font-size: 0.9rem;
  margin: 0.25rem 0 0.2rem;
}

.vote-other-side {
  font-size: 0.85rem;
  color: var(--muted);
  margin: 0.15rem 0;
}

.vote-procedural-note {
  font-size: 0.82rem;
  color: var(--muted);
  border-left: 3px solid var(--line);
  padding-left: 0.6rem;
  margin: 0.3rem 0 0.1rem;
}

.vote-plain-summary {
  font-size: 0.85rem;
  color: var(--muted);
  margin: 0.3rem 0 0;
}

.vote-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}

.scripture-pill-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0.45rem 0 0.55rem;
}

.scripture-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.26rem 0.62rem;
  border-radius: 999px;
  text-decoration: none;
  font-size: 0.73rem;
  font-weight: 700;
  line-height: 1.35;
  border: 1px solid transparent;
}

.scripture-pill-positive {
  background: rgba(209, 250, 229, 0.7);
  border-color: rgba(6, 95, 70, 0.18);
  color: #065f46;
}

.scripture-pill-negative {
  background: rgba(254, 226, 226, 0.75);
  border-color: rgba(153, 27, 27, 0.18);
  color: #991b1b;
}

.scripture-pill-neutral {
  background: rgba(138, 106, 47, 0.1);
  border-color: rgba(138, 106, 47, 0.18);
  color: var(--link);
}

.scripture-pill:hover {
  filter: brightness(0.97);
}

.scripture-pill:focus-visible,
.detail-link:focus-visible,
.top-nav a:focus-visible,
.verse-ref-trigger:focus-visible,
.scripture-popover-icon:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline: 2px solid var(--link);
  outline-offset: 2px;
}

a.verse-ref-trigger {
  text-decoration: none;
}

.verse-ref-trigger {
  appearance: none;
  border: 0;
  background: rgba(138, 106, 47, 0.12);
  color: var(--link);
  border-radius: 999px;
  padding: 0.12rem 0.45rem;
  margin: 0 0.12rem;
  font: inherit;
  font-size: 0.88em;
  font-weight: 700;
  cursor: pointer;
  vertical-align: baseline;
}

.verse-ref-trigger:hover {
  background: rgba(138, 106, 47, 0.18);
}

.ballot-index {
  display: grid;
  gap: 0.55rem;
  margin: 0 0 1rem;
  padding: 0;
  list-style: none;
}

.ballot-index li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.45rem 0.75rem;
}

.ballot-measure {
  margin-top: var(--section-gap);
}

.ballot-measure h4 {
  margin: 1rem 0 0.35rem;
  font-size: 0.95rem;
}

.ballot-measure-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.45rem 0.75rem;
}

.ballot-measure-head h3 {
  margin: 0;
}

.ballot-lean {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
}

.ballot-lean-yes {
  background: #d1fae5;
  color: #065f46;
}

.ballot-lean-no {
  background: #fee2e2;
  color: #991b1b;
}

.ballot-close-call {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: rgba(138, 106, 47, 0.14);
  color: #6b5424;
}

.reason-tag {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--muted);
}

.ballot-gaps,
.ballot-watch-notes {
  display: grid;
  gap: 0.45rem;
  margin: 0.35rem 0 0;
  padding-left: 1.2rem;
}

.ballot-lane-note {
  margin: 0.25rem 0 0;
  color: var(--muted);
  font-size: 0.85rem;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}

.ballot-test-label {
  padding-left: 0.85rem;
}

.ballot-table-wrap {
  overflow-x: auto;
}

.zip-form {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  column-gap: 1rem;
  row-gap: 0.75rem;
}

.zip-form .toggle-control {
  padding-top: 0;
  min-height: 2.75rem;
  align-self: end;
}

.zip-form input[type="text"],
.zip-form .zip-submit {
  height: 2.75rem;
  padding-top: 0;
  padding-bottom: 0;
}

.zip-form .zip-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.zip-form input[type="text"] {
  background: white;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 0.65rem 0.9rem;
  font: inherit;
  color: var(--ink);
  width: min(100%, 11rem);
}

.zip-submit {
  background: var(--accent);
  color: white;
  border: 0;
  border-radius: 999px;
  padding: 0.7rem 1.05rem;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

.zip-submit:hover {
  filter: brightness(0.95);
}

@media (max-width: 640px) {
  .zip-form .sort-control,
  .zip-form .zip-submit,
  .zip-form .toggle-control {
    flex: 1 1 100%;
  }
}

.scripture-popover {
  position: fixed;
  z-index: 30;
  width: min(360px, calc(100vw - 1.5rem));
  max-height: calc(100vh - 1.5rem);
  overflow: auto;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  inset: auto;
}

dialog[open] > .scripture-popover {
  position: absolute;
  z-index: 30;
  display: block;
}

.scripture-popover-card {
  background: color-mix(in srgb, var(--panel) 94%, white 6%);
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: 0 24px 48px rgba(35, 29, 24, 0.18);
  padding: 0.95rem 1rem;
}

.scripture-popover-header {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  align-items: start;
  margin-bottom: 0.75rem;
}

.scripture-popover-label {
  margin: 0;
  font-weight: 700;
  color: var(--ink);
}

.scripture-popover-note {
  margin: 0.25rem 0 0;
  font-size: 0.78rem;
  color: var(--muted);
}

.scripture-popover-actions {
  display: flex;
  gap: 0.35rem;
}

.scripture-popover-icon {
  appearance: none;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.72);
  color: var(--muted);
  border-radius: 999px;
  padding: 0.3rem 0.55rem;
  font: inherit;
  font-size: 0.72rem;
  font-weight: 700;
  cursor: pointer;
}

.scripture-popover-body {
  display: grid;
  gap: 0.75rem;
}

.scripture-passages {
  border: 1px solid rgba(138, 106, 47, 0.16);
  border-radius: 14px;
  padding: 0.8rem 0.85rem;
  background: rgba(255, 255, 255, 0.58);
}

.scripture-passages-title {
  margin: 0 0 0.45rem;
  color: var(--muted);
  font-size: 0.82rem;
  font-weight: 700;
}

.scripture-passages-text p {
  margin: 0.35rem 0 0;
  line-height: 1.7;
  color: var(--ink);
}

.scripture-verse-num {
  color: var(--muted);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  margin-right: 0.6rem;
}

.scripture-loading {
  display: grid;
  gap: 0.5rem;
}

.scripture-loading-line {
  height: 0.8rem;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(138, 106, 47, 0.12), rgba(138, 106, 47, 0.24), rgba(138, 106, 47, 0.12));
  background-size: 200% 100%;
  animation: scripture-shimmer 1.2s linear infinite;
}

.scripture-loading-line.short {
  width: 42%;
}

.scripture-error {
  margin: 0;
  color: var(--danger);
}

.scripture-popover-theology-link {
  text-decoration: none;
  color: var(--link);
  background: rgba(138, 106, 47, 0.1);
  border-color: rgba(138, 106, 47, 0.25);
}

.scripture-popover-theology-link:hover {
  background: rgba(138, 106, 47, 0.18);
}

.theology-intro-card blockquote,
.theology-takeaway-card blockquote,
.doctrine-card blockquote {
  border-left: 3px solid var(--accent);
  margin: 0;
  padding: 0.5rem 0 0.5rem 1rem;
  color: var(--ink);
  font-style: italic;
}

.theology-takeaway-card {
  border-left: 3px solid var(--accent);
}

@keyframes scripture-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ── Bills explorer page ──────────────────────────────────────────── */
.bill-explorer-list {
  display: grid;
}

.bill-explorer-card {
  background: color-mix(in srgb, var(--panel) 92%, var(--panel-lift) 8%);
  border: 1px solid var(--line);
  border-radius: 20px;
  box-shadow: 0 18px 40px var(--shadow);
  padding: 1.1rem 1.15rem;
}

.bill-explorer-top {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: start;
}

.bill-explorer-title {
  font-family: var(--font-display);
  font-size: 1.15rem;
  margin: 0;
}

.bill-explorer-badges {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  flex-wrap: wrap;
}

.bill-enrichment-block,
.bill-intent-block {
  margin: 0.8rem 0;
  padding: 0.8rem 0.9rem;
  border-left: 4px solid var(--accent);
  background: rgba(138, 106, 47, 0.05);
  border-radius: 12px;
}

.bill-enrichment-block p,
.bill-intent-block p {
  margin: 0.3rem 0;
  line-height: 1.6;
}

.voter-columns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 1rem 0 0;
}

.voter-column {
  padding: 0.8rem;
  border-radius: 14px;
}

.voter-column-yea {
  background: rgba(209, 250, 229, 0.35);
  border: 1px solid rgba(6, 95, 70, 0.15);
}

.voter-column-nay {
  background: rgba(254, 226, 226, 0.35);
  border: 1px solid rgba(153, 27, 27, 0.15);
}

.voter-column-header {
  font-family: var(--font-display);
  font-size: 0.95rem;
  margin: 0 0 0.5rem;
}

.cast-yea-header { color: #065f46; }
.cast-nay-header { color: #991b1b; }

.voter-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.voter-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 0.3rem;
  padding: 0.3rem 0.6rem;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 600;
  text-decoration: none;
  color: var(--ink);
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.7);
  transition: background 0.15s;
}

.voter-chip:hover {
  background: rgba(138, 106, 47, 0.12);
}

.voter-chip-meta {
  font-weight: 400;
  font-size: 0.72rem;
  color: var(--muted);
}

.voter-rep { border-color: rgba(153, 27, 27, 0.25); }
.voter-dem { border-color: rgba(29, 78, 216, 0.25); }

.voter-other-row {
  margin: 0.5rem 0 0;
}

/* ── Candidate detail overview events ──────────────────────────────── */
.overview-events {
  display: grid;
  gap: var(--stack-gap);
}

.overview-event-card {
  padding: var(--card-pad);
  border-radius: 14px;
  border: 1px solid var(--line);
}

.overview-event-card p {
  margin: 0.25rem 0;
  line-height: 1.55;
}

.overview-event-positive {
  background: rgba(209, 250, 229, 0.25);
  border-color: rgba(6, 95, 70, 0.15);
}

.overview-event-negative {
  background: rgba(255, 237, 213, 0.25);
  border-color: rgba(154, 90, 16, 0.15);
}

.overview-event-disqualify {
  background: rgba(254, 226, 226, 0.25);
  border-color: rgba(143, 47, 37, 0.15);
}

.overview-event-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.3rem;
}

.overview-event-issue {
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--ink);
}

.score-section-heading {
  margin: var(--stack-gap) 0 var(--block-gap);
  font-size: 1.05rem;
}

.score-section-note {
  margin: 0 0 var(--block-gap);
}

.overview-event-weight {
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 700;
  white-space: nowrap;
}

.overview-event-positive .overview-event-weight { color: #065f46; }
.overview-event-negative .overview-event-weight { color: var(--warn); }
.overview-event-disqualify .overview-event-weight { color: var(--danger); }

.overview-event-judgment {
  color: var(--ink);
  font-size: 0.9rem;
}

.overview-event-evidence {
  color: var(--muted);
  font-size: 0.85rem;
}

.overview-event-fallback {
  color: var(--muted);
  font-size: 0.88rem;
  line-height: 1.6;
  margin: 0.3rem 0;
}

.overview-event-tier {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
  margin: 0 0 0.15rem;
}

.overview-event-issue {
  text-decoration: none;
  color: var(--ink);
}
.overview-event-issue:hover {
  text-decoration: underline;
  color: var(--accent);
}

.overview-event-scripture {
  font-size: 0.82rem;
  color: var(--accent);
  margin-top: 0.3rem;
}

.overview-event-rationale {
  font-size: 0.82rem;
  color: var(--muted);
  font-style: italic;
  margin-top: 0.15rem;
}

/* ── Inline score blocks (vote record on candidate detail) ─────────── */
.inline-score-blocks {
  display: grid;
  gap: 0.4rem;
  margin-top: 0.5rem;
}

.inline-score-block {
  border-radius: 10px;
  border: 1px solid var(--line);
  overflow: hidden;
}

.inline-score-summary {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.45rem 0.7rem;
  cursor: pointer;
  font-size: 0.82rem;
  list-style: none;
  user-select: none;
}
.inline-score-summary::-webkit-details-marker { display: none; }
.inline-score-summary::before {
  content: "\25B6";
  font-size: 0.55rem;
  transition: transform 0.15s;
  color: var(--muted);
}
details[open].inline-score-block > .inline-score-summary::before {
  transform: rotate(90deg);
}

.inline-score-weight {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.9rem;
  min-width: 7.2rem;
  white-space: nowrap;
}

.inline-score-issue {
  font-weight: 700;
  color: var(--ink);
  flex: 1;
}

.inline-score-tier {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--muted);
  white-space: nowrap;
}

.inline-score-detail {
  padding: 0.4rem 0.7rem 0.65rem;
  font-size: 0.82rem;
  border-top: 1px solid var(--line);
}
.inline-score-detail p {
  margin: 0.25rem 0;
  line-height: 1.55;
}

.inline-score-positive {
  background: rgba(209, 250, 229, 0.2);
  border-color: rgba(6, 95, 70, 0.15);
}
.inline-score-positive .inline-score-weight { color: #065f46; }

.inline-score-negative {
  background: rgba(255, 237, 213, 0.2);
  border-color: rgba(154, 90, 16, 0.15);
}
.inline-score-negative .inline-score-weight { color: var(--warn); }

.inline-score-disqualify {
  background: rgba(254, 226, 226, 0.2);
  border-color: rgba(143, 47, 37, 0.15);
}
.inline-score-disqualify .inline-score-weight { color: var(--danger); }

/* ── Compact bill list cards ───────────────────────────────────────── */
.bill-list-compact {
  padding: 0.85rem 1rem;
}

/* ── Score event cards (vote detail page) ─────────────────────────── */
.score-event-card {
  padding: var(--card-pad);
  border-radius: 16px;
  margin-bottom: 0;
  border: 1px solid var(--line);
}

.score-event-card p {
  margin: 0.35rem 0;
  line-height: 1.6;
}

.score-impact-positive {
  background: rgba(209, 250, 229, 0.3);
  border-color: rgba(6, 95, 70, 0.2);
}

.score-impact-negative {
  background: rgba(255, 237, 213, 0.35);
  border-color: rgba(154, 90, 16, 0.2);
}

.score-impact-disqualify {
  background: rgba(254, 226, 226, 0.35);
  border-color: rgba(143, 47, 37, 0.2);
}

.score-event-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.5rem;
}

.score-event-type {
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--accent);
}

.score-event-weight {
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 700;
  white-space: nowrap;
}

.score-impact-positive .score-event-weight { color: #065f46; }
.score-impact-negative .score-event-weight { color: var(--warn); }
.score-impact-disqualify .score-event-weight { color: var(--danger); }

.score-event-tier {
  font-weight: 700;
  color: var(--ink);
}

.score-event-impact {
  font-weight: 600;
  margin-top: 0.6rem !important;
}

.score-scripture-block {
  margin-top: 0.8rem;
  padding-top: 0.7rem;
  border-top: 1px dashed var(--line);
}

.score-scripture-block p {
  margin: 0.3rem 0;
}

/* ── Voter chip status badge ──────────────────────────────────────── */
.voter-chip-status {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.1rem 0.35rem;
  border-radius: 999px;
  margin-left: 0.2rem;
}

.voter-chip-status-Qualified { background: rgba(47, 95, 66, 0.15); color: #2f5f42; }
.voter-chip-status-Not-Yet-Tested { background: rgba(92, 103, 120, 0.18); color: #3d4754; }
.voter-chip-status-Compromised,
.voter-chip-status-Unfit { background: rgba(154, 90, 16, 0.15); color: #9a5a10; }
.voter-chip-status-Disqualified { background: rgba(143, 47, 37, 0.15); color: #8f2f25; }
.voter-chip-status-Insufficient-Record { background: rgba(136, 136, 136, 0.18); color: #555; }

@media (max-width: 700px) {
  .voter-columns {
    grid-template-columns: 1fr;
  }
  .bill-explorer-top {
    display: grid;
  }
}

.label-confidence-note {
  margin: 0.5rem 0 0;
  font-size: 0.85rem;
  color: var(--muted);
  font-style: italic;
}

.lane-breakdown {
  margin: 0.5rem 0 0;
  font-size: 0.9rem;
}

/* borderline_flag: a label within 3 points of a cutoff. A flag only. */
.borderline-badge {
  display: inline-block;
  margin-left: 0.4rem;
  padding: 0.15rem 0.45rem;
  border: 1px dashed var(--warn);
  border-radius: 999px;
  color: var(--warn);
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  vertical-align: middle;
  cursor: help;
}

.voter-chip .borderline-badge {
  margin-left: 0.2rem;
  padding: 0.05rem 0.3rem;
  font-size: 0.58rem;
}

.sponsorship-note {
  margin: 0 0 0.75rem;
}

.sponsorship-panel[hidden] {
  display: none;
}

.my-ballot-sheet {
  width: 100%;
}

.my-ballot-races {
  display: grid;
  margin-top: var(--stack-gap);
}

@media (min-width: 800px) {
  .my-ballot-races {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.my-ballot-actions button {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  border-radius: 999px;
  padding: 0.45rem 0.9rem;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

.my-ballot-sheet h1 {
  font-family: var(--font-display);
  font-size: 2rem;
  line-height: 1.15;
  margin: 0 0 var(--section-gap);
}

.my-ballot-notice {
  margin: 0 0 var(--section-gap);
  padding: 1.25rem;
  border-radius: 12px;
  background: #1e3a8a;
  color: white;
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.35;
}

.my-ballot-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
  margin: var(--section-gap) 0 0;
}

.my-ballot-place {
  margin: var(--section-gap) 0 0;
  font-size: 1.05rem;
  font-weight: 700;
}

.my-ballot-race {
  margin: 0;
  padding: 1.25rem;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: color-mix(in srgb, var(--panel) 92%, var(--panel-lift) 8%);
  min-width: 0;
}

.my-ballot-card {
  margin-top: 0.75rem;
  padding: 1rem;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--panel);
}

.my-ballot-race h3 {
  font-family: var(--font-display);
  font-size: 1.55rem;
  line-height: 1.2;
  margin: 0.15rem 0 0.55rem;
}

.my-ballot-callout {
  margin: 0 0 0.75rem;
  padding: 0.9rem 1rem;
  border: 2px solid #92400e;
  border-radius: 12px;
  background: #fef3c7;
  color: #1c1408;
  font-size: 1.12rem;
  font-weight: 700;
  line-height: 1.35;
}

.my-ballot-card h4 {
  margin: 0;
  font-size: 1.25rem;
}

.my-ballot-status,
.my-ballot-score,
.my-ballot-note,
.my-ballot-empty {
  font-size: 1.08rem;
  line-height: 1.4;
}

.my-ballot-sheet .build-meta {
  margin-top: var(--section-gap);
  padding: 1.25rem;
}

/* The fallback panel sits inside the sheet, so the page-level panel gap does not reach it. */
.my-ballot-sheet > #my-ballot-page-results + .panel {
  margin-top: var(--stack-gap);
}

#static-ballot-links > .panel-header {
  margin-bottom: 0;
}

#static-ballot-links > p {
  margin: 0;
}

#static-ballot-links > .fold-block {
  margin-top: calc(var(--stack-gap) - var(--block-gap));
}

.district-links > p {
  margin: 0;
}

.district-links > h2 {
  margin: var(--stack-gap) 0 0.55rem;
  line-height: 1.2;
}

.district-links > .evidence-list {
  margin: 0;
}

.my-ballot-sources {
  margin-top: var(--section-gap);
  color: var(--muted);
  font-size: 0.85rem;
}

.my-ballot-sources p {
  margin: 0.35rem 0;
}

@media (max-width: 640px) {
  .my-ballot-sheet h1 {
    font-size: 1.7rem;
  }

  .my-ballot-notice,
  .my-ballot-callout,
  .my-ballot-race h3 {
    font-size: 1.05rem;
  }

  .zip-form input[type="text"] {
    width: 100%;
  }
}

/* One gap inside a card, one gap between cards. Margins on direct children are cleared
   so heading, intro, list, and nested card spacing come from the scale. */
:is(.panel, .hero, .score-event-card, .overview-event-card, .record-notes, .criteria-card) {
  display: flex;
  flex-direction: column;
  gap: var(--block-gap);
}

:is(.panel, .hero, .score-event-card, .overview-event-card, .record-notes, .criteria-card) > * {
  min-width: 0;
  margin-block: 0;
}

:is(.panel, .hero) > :is(
  .doctrine-stack,
  .overview-events,
  .candidate-group-list,
  .candidate-list,
  .criteria-grid,
  .scoring-tables,
  .bill-explorer-list,
  .panel,
  .fold-block,
  .fold-featured,
  .hero-illustration
) {
  margin-top: calc(var(--stack-gap) - var(--block-gap));
}

.doctrine-card > * {
  margin-top: 0;
  margin-bottom: 0;
}

.doctrine-card > * + *,
.doctrine-card > * + blockquote {
  margin-top: var(--block-gap);
}

.scoring-explainer > * + * {
  margin-top: var(--stack-gap);
}

/* Text pages: the card stays as wide as the page. Long prose uses two columns
   so a line stays near 60–70 characters without leaving the panel half empty. */
@media (min-width: 1000px) {
  .how-copy,
  .scoring-formula,
  .doctrine-card:not(:has(.doctrine-card, table)):has(> p + p + p) {
    column-count: 2;
    column-gap: var(--stack-gap);
  }

  .panel > p:not(.candidate-meta):not(.detail-link-row):not(.section-label):not(.criteria-note),
  #past-floor-votes > .candidate-meta {
    max-width: min(100%, var(--measure));
  }

  .how-copy > h3,
  .scoring-formula > h3,
  .doctrine-card > :is(h2, h3, .doctrine-issue-header) {
    column-span: all;
    break-after: avoid;
  }

  .how-copy > :is(p, ul, ol),
  .scoring-formula > p,
  .doctrine-card > :is(p, ul, ol, blockquote) {
    break-inside: avoid;
  }
}

@media (prefers-color-scheme: dark) {
  :root {
    color-scheme: dark;
    --bg: #17130f;
    --panel: #2a231e;
    --ink: #f6f1e8;
    --muted: #d2c3b2;
    --line: #5c4d41;
    --accent: #e0bc78;
    --link: #e0bc78;
    --danger: #f09990;
    --warn: #f0b56a;
    --ok: #8fceab;
    --shadow: rgba(0, 0, 0, 0.45);
    --panel-lift: #3d342c;
  }

  body {
    background:
      radial-gradient(circle at top, rgba(224, 188, 120, 0.16), transparent 34%),
      linear-gradient(180deg, #221c17 0%, var(--bg) 100%);
  }

  select,
  .zip-form input[type="text"],
  .vote-search-input,
  .vote-cast-filter {
    background: var(--panel);
    color: var(--ink);
  }

  .build-meta,
  .doctrine-card,
  .doctrine-issue-card,
  .scoring-table-group,
  .voter-chip {
    background: color-mix(in srgb, var(--panel) 86%, var(--panel-lift) 14%);
    color: var(--ink);
  }

  .status-Qualified {
    background: #1e6b43;
    color: #f6f1e8;
  }

  .status-Not-Yet-Tested {
    background: #5c6778;
    color: #f4f6f8;
  }

  .status-Unfit,
  .status-Compromised {
    background: #8a4e12;
    color: #f6f1e8;
  }

  .status-Disqualified {
    background: #8f2f25;
    color: #f6f1e8;
  }

  .status-Insufficient-Record {
    background: #6b625a;
    color: #f6f1e8;
  }

  .voter-chip-status-Qualified { background: #1e6b43; color: #f6f1e8; }
  .voter-chip-status-Not-Yet-Tested { background: #5c6778; color: #f4f6f8; }
  .voter-chip-status-Compromised,
  .voter-chip-status-Unfit { background: #8a4e12; color: #f6f1e8; }
  .voter-chip-status-Disqualified { background: #8f2f25; color: #f6f1e8; }
  .voter-chip-status-Insufficient-Record { background: #6b625a; color: #f6f1e8; }

  .my-ballot-callout {
    background: #3a2a12;
    color: #f6f1e8;
    border-color: #f0b56a;
  }
}

@media print {
  .top-nav,
  .disclaimer-overlay,
  .my-ballot-actions,
  .hero,
  .summary-grid,
  .criteria-panel {
    display: none !important;
  }

  .my-ballot-race {
    break-inside: avoid;
  }

  .my-ballot-notice,
  .my-ballot-callout,
  .my-ballot-race h3 {
    font-size: 12pt;
  }
}
