.list-hero {
    background: linear-gradient(180deg, var(--ink-50) 0%, var(--paper) 100%);
    border-bottom: 1px solid var(--ink-200);
    padding: var(--sp-8) 0 var(--sp-5);
  }
  .list-hero h1 {
    margin: 0 0 var(--sp-1);
    display: flex;
    align-items: center;
    gap: var(--sp-3);
  }
  .list-hero h1 i { color: var(--civic-blue); }
  .list-hero p { color: var(--ink-600); margin: 0; }
  .list-hero .total {
    font-family: var(--font-mono);
    color: var(--ink-500);
    font-size: var(--fs-sm);
  }

  /* Filter chip row */
  .list-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: var(--sp-3);
  }
  .list-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 12px;
    border-radius: var(--r-full);
    border: 1px solid var(--ink-300);
    background: var(--paper);
    color: var(--ink-700);
    font-size: var(--fs-xs);
    font-weight: 700;
    text-decoration: none;
    transition: all var(--t-fast) var(--ease);
  }
  .list-chip:hover { background: var(--ink-100); color: var(--ink-900); text-decoration: none; }
  .list-chip.active { background: var(--ink-900); color: var(--paper); border-color: var(--ink-900); }
  .list-chip.active-d { background: var(--party-D-strong); color: #fff; border-color: var(--party-D-strong); }
  .list-chip.active-r { background: var(--party-R-strong); color: #fff; border-color: var(--party-R-strong); }
  .list-chip.active-i { background: var(--party-I-strong); color: #fff; border-color: var(--party-I-strong); }

  /* Bill row */
  .bill-row {
    display: grid;
    grid-template-columns: 110px 1fr auto;
    gap: var(--sp-3);
    align-items: center;
    padding: var(--sp-3) var(--sp-4);
    border-bottom: 1px solid var(--ink-100);
    text-decoration: none;
    color: inherit;
    transition: background var(--t-fast) var(--ease);
  }
  .bill-row:hover { background: var(--ink-50); text-decoration: none; color: inherit; }
  .bill-row code {
    font-family: var(--font-mono);
    background: var(--ink-100);
    color: var(--ink-700);
    padding: 2px 8px;
    border-radius: var(--r-sm);
    font-size: 0.8rem;
  }
  .bill-row .title {
    font-weight: 600;
    color: var(--ink-900);
  }
  .bill-row .meta {
    font-size: var(--fs-xs);
    color: var(--ink-500);
    margin-top: 2px;
  }

  /* Vote row */
  .vote-row {
    display: grid;
    grid-template-columns: 90px 1fr auto auto;
    gap: var(--sp-3);
    align-items: center;
    padding: var(--sp-3) var(--sp-4);
    border-bottom: 1px solid var(--ink-100);
    text-decoration: none;
    color: inherit;
  }
  .vote-row:hover { background: var(--ink-50); text-decoration: none; color: inherit; }
  .vote-row .date strong { color: var(--ink-900); display: block; }
  .vote-row .date span { color: var(--ink-500); font-size: var(--fs-xs); }
  .vote-row .tally {
    font-family: var(--font-display);
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    font-size: var(--fs-md);
    color: var(--ink-900);
  }

  /* Hearing row */
  .hearing-row {
    display: grid;
    grid-template-columns: 100px 1fr auto;
    gap: var(--sp-3);
    align-items: flex-start;
    padding: var(--sp-3) var(--sp-4);
    border-bottom: 1px solid var(--ink-100);
  }
  .hearing-row .date {
    text-align: center;
    background: var(--ink-50);
    border: 1px solid var(--ink-200);
    border-radius: var(--r-md);
    padding: 6px;
    line-height: 1.3;
  }
  .hearing-row .date strong { font-family: var(--font-display); display: block; color: var(--ink-900); }
  .hearing-row .date span { font-size: 0.7rem; color: var(--ink-500); }
  .hearing-row .title { font-weight: 600; color: var(--ink-900); margin-bottom: 4px; }
  .hearing-row .meta {
    font-size: var(--fs-xs);
    color: var(--ink-500);
    display: flex; gap: var(--sp-2); flex-wrap: wrap;
  }

/* Mobile: these rows are fixed multi-column grids (110px/90px/100px +
   1fr + auto) that cram on a narrow viewport. lists_base.css had zero
   media queries; collapse each row to a single column so the ID/date,
   title, tally, and pills reflow vertically — the table-to-card pattern
   used elsewhere (bill_detail.css). Backs the highest-traffic browse
   pages (/bills/, /votes/, /hearings/). */
@media (max-width: 600px) {
  .bill-row,
  .vote-row,
  .hearing-row {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: var(--sp-3);
  }
  .bill-row code,
  .hearing-row .date,
  .vote-row .date,
  .vote-row .tally { justify-self: start; }
}
