/* ==========================================================================
   4Search — politics.css
   The Politics service (/politics/...). Every class is pol- prefixed and the
   colours run through the --pol-* tokens, so the colour modes of app.css
   section 14 need only the token block at the end: hybrid and light share the
   base (light content), dark restates the tokens. Party colours are the
   conventional ones (red Republican, blue Democrat, purple-grey independent)
   and are used for identification only, never for judgement.
   ========================================================================== */

/* ------------------------------------------------------------------ tokens */
.pol-page{
  --pol-ink:#0f1720;
  --pol-ink-2:#3a4250;
  --pol-ink-3:#677180;
  --pol-ink-4:#8b94a3;
  --pol-line:#e4e8ef;
  --pol-line-2:#eef1f6;
  --pol-surface:#ffffff;
  --pol-surface-2:#f5f7fb;
  --pol-surface-3:#eef2f8;
  --pol-page:#f3f5f9;
  --pol-accent:#1a56b8;
  --pol-accent-soft:#e8f0fd;
  --pol-r:#c62f3a;
  --pol-r-soft:#fdeaec;
  --pol-d:#1f5fbf;
  --pol-d-soft:#e6efff;
  --pol-i:#7a5ea8;
  --pol-i-soft:#f0ebf8;
  --pol-yea:#0d8050;
  --pol-yea-soft:#e3f5ec;
  --pol-nay:#c42b3e;
  --pol-nay-soft:#fdebee;
  --pol-present:#b7791f;
  --pol-nv:#b8c0cc;
  --pol-law:#0d8050;
  --pol-amber:#9a5b00;
  --pol-amber-soft:#fff4e0;
  --pol-radius:14px;
  --pol-radius-sm:10px;
  --pol-shadow:0 1px 2px rgba(16,24,40,.04), 0 2px 6px rgba(16,24,40,.04);
  font-variant-numeric:tabular-nums;
}

/* -------------------------------------------------------------------- page */
.pol-main{ padding:0 0 32px; background:var(--pol-page); flex:1; }
.pol-container{ max-width:1320px; margin:0 auto; padding:0 16px; }
.pol-muted{ color:var(--pol-ink-3); }
.pol-small{ font-size:13px; }
.pol-nowrap{ white-space:nowrap; }
.pol-dot{ color:var(--pol-ink-4); margin:0 5px; }
.pol-empty{ color:var(--pol-ink-3); font-size:14px; margin:6px 0; }
.pol-h1{ font-size:26px; font-weight:750; letter-spacing:-.02em; color:var(--pol-ink); margin:0; line-height:1.25; }
.pol-lede{ color:var(--pol-ink-3); font-size:15px; margin:6px 0 0; max-width:820px; line-height:1.55; }
.pol-page-head{ padding:16px 2px 10px; }
.pol-kicker{ font-size:13px; color:var(--pol-ink-3); margin-bottom:6px; display:flex; flex-wrap:wrap; gap:6px 8px; align-items:center; }
.pol-crumbs{ font-size:13px; color:var(--pol-ink-3); padding:12px 2px 0; }
.pol-crumbs a{ color:var(--pol-accent); text-decoration:none; }
.pol-crumbs a:hover{ text-decoration:underline; }
.pol-subhead{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--pol-ink-3); margin:14px 0 8px; }
.pol-callout{ background:var(--pol-amber-soft); border:1px solid rgba(154,91,0,.18); border-radius:var(--pol-radius-sm); padding:10px 12px; font-size:14px; color:var(--pol-ink-2); margin:10px 0 14px; }
.pol-callout .pol-chip{ display:inline-flex; vertical-align:middle; margin:0 6px; }
.pol-disclaimer{ font-size:12px; line-height:1.55; color:var(--pol-ink-4); margin:26px 2px 6px; max-width:980px; }
.pol-disclaimer a{ color:inherit; text-decoration:underline; }
.pol-scroll-x{ overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:thin; }
.pol-ico{ width:1em; height:1em; vertical-align:-.125em; }
.pol-prose p, .pol-prose li{ color:var(--pol-ink-2); font-size:15px; line-height:1.65; }
.pol-prose ul{ padding-left:20px; }
html[data-pol-js] .pol-clip{ max-height:420px; overflow:hidden; position:relative; }
html[data-pol-js] .pol-clip::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:90px; background:linear-gradient(rgba(255,255,255,0), var(--pol-surface)); }
.pol-tag{ display:inline-block; font-size:12px; padding:2px 8px; border-radius:999px; background:var(--pol-surface-3); color:var(--pol-ink-2); text-decoration:none; white-space:nowrap; }
a.pol-tag:hover{ background:var(--pol-accent-soft); color:var(--pol-accent); }
.pol-tags{ display:flex; flex-wrap:wrap; gap:6px; }
.pol-subtopics{ margin:0 0 14px; }
.pol-links{ list-style:none; padding:0; margin:0; font-size:14px; }
.pol-links li{ padding:5px 0; border-bottom:1px solid var(--pol-line-2); }
.pol-links li:last-child{ border-bottom:0; }
.pol-links a{ color:var(--pol-accent); text-decoration:none; }
.pol-links a:hover{ text-decoration:underline; }

/* ----------------------------------------------------------- search box */
.pol-search{ margin:6px 0 2px; }
.pol-search-box{
  position:relative; display:flex; align-items:center; gap:6px;
  background:#fff; border:1px solid #dfe5ec; border-radius:16px; padding:5px 6px 5px 14px;
  box-shadow:0 2px 10px rgba(9,14,22,.10); transition:box-shadow .2s ease, border-color .2s ease;
}
.pol-search-box:focus-within{ border-color:var(--accent, #1abc9c); box-shadow:0 0 0 3px rgba(26,188,156,.22), 0 8px 24px rgba(9,14,22,.12); }
.pol-search-ico{ color:#7a8391; display:inline-flex; }
.pol-search-ico .ico{ width:18px; height:18px; }
.pol-search-input{ flex:1; min-width:0; border:0; outline:0; background:transparent; font-size:16px; color:#0f1720; padding:8px 4px; font-family:inherit; }
.pol-search-input::placeholder{ color:#8b94a3; }
.pol-search-btn{
  flex-shrink:0; width:40px; height:40px; border-radius:12px; border:0; cursor:pointer;
  background:#ffc107; color:#1b1f26; display:inline-flex; align-items:center; justify-content:center;
  box-shadow:0 2px 6px rgba(16,24,40,.18); transition:transform .15s ease;
}
.pol-search-btn:hover{ transform:scale(1.05); }
.pol-search-btn .ico{ width:18px; height:18px; }
.pol-suggest{
  position:absolute; left:0; right:0; top:calc(100% + 8px); z-index:1100;
  background:#fff; border:1px solid rgba(16,24,40,.10); border-radius:14px;
  box-shadow:0 18px 44px rgba(16,24,40,.20); padding:6px; max-height:440px; overflow-y:auto;
}
.pol-suggest[hidden]{ display:none; }
.pol-sug-item{ display:flex; align-items:center; gap:10px; padding:7px 10px; border-radius:10px; color:#0f1720; text-decoration:none; }
.pol-sug-item.is-active, .pol-sug-item:hover{ background:#f0f4fa; }
.pol-sug-img{ width:28px; height:34px; border-radius:6px; object-fit:cover; background:#eef1f6; flex-shrink:0; }
.pol-sug-label{ flex:1; min-width:0; font-size:14px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pol-sug-sub{ font-size:12px; color:#677180; white-space:nowrap; }
.pol-sug-kind{ font-size:11px; color:#677180; background:#f2f4f8; border-radius:6px; padding:2px 6px; white-space:nowrap; }

/* -------------------------------------------------------------- subnav */
.pol-subnav{ background:var(--pol-surface); border-bottom:1px solid var(--pol-line); margin-bottom:6px; }
.pol-subnav-track{ display:flex; gap:4px; overflow-x:auto; scrollbar-width:none; padding:6px 12px; max-width:1320px; margin:0 auto; }
.pol-subnav-track::-webkit-scrollbar{ display:none; }
.pol-subnav-link{ flex:0 0 auto; padding:7px 13px; border-radius:999px; font-size:14px; font-weight:500; color:var(--pol-ink-2); text-decoration:none; transition:background .15s ease, color .15s ease; }
.pol-subnav-link:hover{ background:var(--pol-surface-2); color:var(--pol-ink); }
.pol-subnav-link.is-active{ background:var(--pol-accent-soft); color:var(--pol-accent); font-weight:650; }

/* --------------------------------------------------------------- layout */
.pol-grid{ display:grid; grid-template-columns:minmax(0,1fr); gap:16px; align-items:start; }
.pol-col{ display:flex; flex-direction:column; gap:16px; min-width:0; }
@media (min-width:992px){
  .pol-grid-main{ grid-template-columns:minmax(0,1fr) 380px; }
  .pol-grid-2{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .pol-grid-3{ grid-template-columns:repeat(3, minmax(0,1fr)); }
}
.pol-card{ background:var(--pol-surface); border:1px solid var(--pol-line); border-radius:var(--pol-radius); box-shadow:var(--pol-shadow); padding:16px 18px; min-width:0; }
.pol-card-head{ display:flex; align-items:center; gap:10px; margin:-2px 0 12px; flex-wrap:wrap; }
.pol-card-title{ font-size:16px; font-weight:700; color:var(--pol-ink); margin:0; letter-spacing:-.01em; display:flex; align-items:center; gap:8px; }
.pol-card-title a{ color:inherit; text-decoration:none; }
.pol-card-title a:hover{ color:var(--pol-accent); }
.pol-card-ico{ color:var(--pol-accent); width:16px; height:16px; }
.pol-card-more{ margin-left:auto; font-size:13px; font-weight:600; color:var(--pol-accent); text-decoration:none; white-space:nowrap; }
.pol-card-more:hover{ text-decoration:underline; }
.pol-card-note{ font-size:12px; color:var(--pol-ink-4); margin:12px 2px 0; line-height:1.5; }
.pol-card-note a{ color:inherit; text-decoration:underline; }
.pol-ai{ margin:0 0 16px; }

/* ------------------------------------------------------------- controls */
.pol-toolbar{ display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center; margin:0 0 14px; }
.pol-filters{ display:flex; flex-wrap:wrap; gap:4px; background:var(--pol-surface); border:1px solid var(--pol-line); border-radius:999px; padding:3px; }
.pol-card .pol-filters{ margin:0 0 12px; display:inline-flex; }
.pol-filter{ padding:5px 12px; border-radius:999px; font-size:13px; font-weight:550; color:var(--pol-ink-2); text-decoration:none; white-space:nowrap; }
.pol-filter:hover{ background:var(--pol-surface-2); }
.pol-filter.is-active{ background:var(--pol-ink); color:#fff; }
.pol-inline-search{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; flex:1 1 320px; }
.pol-inline-search input[type=search], .pol-inline-search select, .pol-roll-filter input, .pol-roll-filter select{
  border:1px solid var(--pol-line); background:var(--pol-surface); color:var(--pol-ink); border-radius:10px; padding:7px 10px; font-size:14px; font-family:inherit; min-width:0;
}
.pol-inline-search input[type=search]{ flex:1 1 220px; }
.pol-btn{ display:inline-flex; align-items:center; gap:6px; padding:7px 13px; border-radius:10px; border:1px solid var(--pol-line); background:var(--pol-surface);
  color:var(--pol-ink-2); font-size:13.5px; font-weight:600; text-decoration:none; cursor:pointer; white-space:nowrap; font-family:inherit; }
.pol-btn:hover{ border-color:var(--pol-accent); color:var(--pol-accent); }
.pol-pager{ display:flex; gap:8px; justify-content:space-between; margin-top:14px; }
.pol-roll-filter{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:0 0 10px; }
.pol-roll-filter[hidden]{ display:none; }

/* ---------------------------------------------------------------- party */
.pol-party{ display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; border-radius:50%; font-size:10.5px; font-weight:800; color:#fff; flex-shrink:0; vertical-align:middle; }
.pol-party-r{ background:var(--pol-r); }
.pol-party-d{ background:var(--pol-d); }
.pol-party-i, .pol-party-l, .pol-party-\?{ background:var(--pol-i); }
.pol-split{ font-size:12px; padding:2px 7px; border-radius:7px; white-space:nowrap; }
.pol-split-r{ background:var(--pol-r-soft); color:var(--pol-r); }
.pol-split-d{ background:var(--pol-d-soft); color:var(--pol-d); }
.pol-split-i{ background:var(--pol-i-soft); color:var(--pol-i); }

/* --------------------------------------------------------------- votes */
.pol-votes{ list-style:none; padding:0; margin:0; }
.pol-vote{ display:grid; grid-template-columns:minmax(0,1fr); gap:8px 18px; padding:12px 0; border-bottom:1px solid var(--pol-line-2); }
.pol-vote:first-child{ padding-top:2px; }
.pol-vote:last-child{ border-bottom:0; padding-bottom:0; }
@media (min-width:720px){ .pol-vote{ grid-template-columns:minmax(0,1fr) 220px; align-items:center; } }
.pol-vote-meta{ font-size:12.5px; color:var(--pol-ink-3); display:flex; flex-wrap:wrap; align-items:center; gap:2px 0; margin-bottom:3px; }
.pol-vote-meta .pol-chamber{ margin-right:8px; }
.pol-vote-title{ font-size:15px; font-weight:650; color:var(--pol-ink); text-decoration:none; line-height:1.35; }
.pol-vote-title:hover{ color:var(--pol-accent); text-decoration:underline; }
.pol-vote-q{ font-size:13px; color:var(--pol-ink-3); margin-top:2px; }
.pol-vote-side{ display:flex; flex-direction:column; gap:5px; }
.pol-vote-split{ display:flex; flex-wrap:wrap; gap:4px; }
.pol-chamber{ font-size:11px; font-weight:750; letter-spacing:.04em; text-transform:uppercase; padding:2px 7px; border-radius:6px; }
.pol-chamber-house{ background:#e9f6f1; color:#0b6b4c; }
.pol-chamber-senate{ background:#efeafb; color:#5b3fa0; }
.pol-doc-tag{ font-size:12px; font-weight:650; color:var(--pol-accent); text-decoration:none; }
a.pol-doc-tag:hover{ text-decoration:underline; }
.pol-result{ font-size:12.5px; font-weight:700; }
.pol-result-pass{ color:var(--pol-yea); }
.pol-result-fail{ color:var(--pol-nay); }
.pol-result-other{ color:var(--pol-ink-2); }
.pol-tally{ display:flex; align-items:center; gap:8px; font-size:13px; }
.pol-tally-n{ white-space:nowrap; color:var(--pol-ink-3); }
.pol-yea-ink{ color:var(--pol-yea); }
.pol-nay-ink{ color:var(--pol-nay); }
.pol-bar{ flex:1; min-width:80px; height:8px; border-radius:999px; overflow:hidden; display:flex; background:var(--pol-surface-3); }
.pol-bar span{ display:block; height:100%; }
.pol-bar-yea{ background:var(--pol-yea); }
.pol-bar-nay{ background:var(--pol-nay); }
.pol-bar-present{ background:var(--pol-present); }
.pol-bar-nv{ background:var(--pol-nv); }
.pol-pos{ font-size:12.5px; font-weight:700; padding:2px 8px; border-radius:7px; white-space:nowrap; }
.pol-pos-yea{ background:var(--pol-yea-soft); color:var(--pol-yea); }
.pol-pos-nay{ background:var(--pol-nay-soft); color:var(--pol-nay); }
.pol-pos-present{ background:var(--pol-amber-soft); color:var(--pol-amber); }
.pol-pos-nv{ background:var(--pol-surface-3); color:var(--pol-ink-3); }
.pol-against{ font-size:11px; font-weight:650; color:var(--pol-amber); white-space:nowrap; margin-left:4px; }
.pol-vote-hero{ background:var(--pol-surface); border:1px solid var(--pol-line); border-radius:var(--pol-radius); padding:14px 18px; margin:0 0 16px; display:flex; flex-direction:column; gap:10px; }
.pol-vote-hero .pol-tally{ font-size:15px; }
.pol-vote-hero .pol-bar{ height:14px; }
.pol-vote-result{ display:flex; flex-wrap:wrap; gap:6px 14px; align-items:baseline; }
.pol-vote-result .pol-result{ font-size:18px; }
.pol-vote-totals{ display:flex; flex-wrap:wrap; gap:6px 18px; font-size:14px; color:var(--pol-ink-2); }

/* --------------------------------------------------------------- tables */
.pol-table{ width:100%; border-collapse:collapse; font-size:14px; color:var(--pol-ink); }
.pol-table th{ font-size:12px; font-weight:650; color:var(--pol-ink-3); text-align:left; padding:8px 10px; border-bottom:1px solid var(--pol-line); white-space:nowrap; }
.pol-table td, .pol-table tbody th{ padding:8px 10px; border-bottom:1px solid var(--pol-line-2); vertical-align:middle; }
.pol-table tbody th{ font-weight:600; color:var(--pol-ink-2); }
.pol-table tbody tr:last-child td, .pol-table tbody tr:last-child th{ border-bottom:0; }
.pol-table a{ color:var(--pol-ink); text-decoration:none; font-weight:550; }
.pol-table a:hover{ color:var(--pol-accent); text-decoration:underline; }
.pol-num{ text-align:right !important; }
.pol-td-bar{ width:40%; min-width:120px; }
.pol-table th[data-sortable]{ cursor:pointer; user-select:none; }
.pol-table th[data-sortable]::after{ content:"↕"; margin-left:4px; opacity:.35; font-size:11px; }
.pol-table th[aria-sort=ascending]::after{ content:"↑"; opacity:1; color:var(--pol-accent); }
.pol-table th[aria-sort=descending]::after{ content:"↓"; opacity:1; color:var(--pol-accent); }
.pol-members-table td{ padding:6px 10px; }
.pol-member-votes td:nth-child(3){ min-width:260px; }

/* --------------------------------------------------------------- people */
.pol-chip{ display:inline-flex; align-items:center; gap:10px; text-decoration:none; color:var(--pol-ink); min-width:0; }
a.pol-chip:hover .pol-chip-name{ color:var(--pol-accent); text-decoration:underline; }
.pol-face{ width:36px; height:44px; border-radius:8px; object-fit:cover; background:var(--pol-surface-3); flex-shrink:0; display:inline-block; }
.pol-chip-text{ display:flex; flex-direction:column; min-width:0; line-height:1.3; }
.pol-chip-name{ font-weight:650; font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pol-chip-seat{ font-size:12px; color:var(--pol-ink-3); display:flex; align-items:center; gap:5px; white-space:nowrap; }
.pol-chip-seat .pol-party{ width:15px; height:15px; font-size:9px; }
.pol-chip-extra{ font-size:12px; color:var(--pol-ink-2); }
.pol-chips{ list-style:none; padding:0; margin:0; display:flex; flex-wrap:wrap; gap:10px 18px; }
.pol-chips-col{ flex-direction:column; gap:8px; }
.pol-chips-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:10px 16px; }
.pol-leaders{ list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:8px; }
.pol-people{ list-style:none; padding:0; margin:0; }
.pol-people-row{ display:grid; grid-template-columns:22px minmax(0,1fr) 110px; gap:10px; align-items:center; padding:6px 0; border-bottom:1px solid var(--pol-line-2); }
.pol-people-row:last-child{ border-bottom:0; }
.pol-people-rank{ font-size:12px; color:var(--pol-ink-4); text-align:right; }
.pol-people-who{ min-width:0; }
.pol-person{ font-weight:650; font-size:14px; color:var(--pol-ink); text-decoration:none; }
.pol-person:hover{ color:var(--pol-accent); text-decoration:underline; }
.pol-people-n{ position:relative; display:flex; justify-content:flex-end; align-items:center; height:22px; font-size:12.5px; }
.pol-people-n b{ position:relative; z-index:1; padding-right:6px; color:var(--pol-ink-2); }
.pol-people-bar{ position:absolute; right:0; top:3px; bottom:3px; background:var(--pol-accent-soft); border-radius:6px; }

/* ---------------------------------------------------------------- bills */
.pol-bills, .pol-docs{ list-style:none; padding:0; margin:0; }
.pol-bill, .pol-doc{ padding:12px 0; border-bottom:1px solid var(--pol-line-2); }
.pol-bill:first-child, .pol-doc:first-child{ padding-top:2px; }
.pol-bill:last-child, .pol-doc:last-child{ border-bottom:0; padding-bottom:0; }
.pol-bill-top, .pol-doc-top{ display:flex; flex-wrap:wrap; gap:6px 8px; align-items:center; margin-bottom:3px; }
.pol-bill-num{ font-weight:800; font-size:13px; color:var(--pol-accent); text-decoration:none; white-space:nowrap; }
a.pol-bill-num:hover{ text-decoration:underline; }
.pol-bill-title, .pol-doc-title{ display:block; font-size:15px; font-weight:650; color:var(--pol-ink); text-decoration:none; line-height:1.35; }
.pol-bill-title:hover, .pol-doc-title:hover{ color:var(--pol-accent); text-decoration:underline; }
.pol-bill-sponsor{ font-size:13px; margin-top:3px; color:var(--pol-ink-2); }
.pol-bill-sponsor a{ color:inherit; }
.pol-bill-latest{ font-size:13px; color:var(--pol-ink-2); margin-top:3px; line-height:1.45; }
.pol-status{ font-size:11.5px; font-weight:700; padding:2px 8px; border-radius:999px; background:var(--pol-surface-3); color:var(--pol-ink-2); white-space:nowrap; }
.pol-status-law{ background:var(--pol-yea-soft); color:var(--pol-law); }
.pol-status-to_president, .pol-status-passed_both{ background:var(--pol-accent-soft); color:var(--pol-accent); }
.pol-status-passed_house, .pol-status-passed_senate{ background:#eef6ff; color:#2a5f9e; }
.pol-status-vetoed, .pol-status-failed{ background:var(--pol-nay-soft); color:var(--pol-nay); }
.pol-policy{ font-size:12px; color:var(--pol-ink-3); text-decoration:none; }
a.pol-policy:hover{ text-decoration:underline; }
.pol-steps{ list-style:none; display:flex; padding:0; margin:4px 0 16px; counter-reset:s; overflow-x:auto; }
.pol-step{ flex:1 1 0; min-width:84px; position:relative; text-align:center; font-size:12.5px; color:var(--pol-ink-4); padding-top:22px; }
.pol-step::before{ content:""; position:absolute; top:7px; left:-50%; right:50%; height:3px; background:var(--pol-line); }
.pol-step:first-child::before{ display:none; }
.pol-step-dot{ position:absolute; top:0; left:50%; transform:translateX(-50%); width:17px; height:17px; border-radius:50%; background:var(--pol-surface); border:3px solid var(--pol-line); z-index:1; }
.pol-step.is-done, .pol-step.is-current{ color:var(--pol-ink-2); font-weight:600; }
.pol-step.is-done::before, .pol-step.is-current::before{ background:var(--pol-accent); }
.pol-step.is-done .pol-step-dot{ background:var(--pol-accent); border-color:var(--pol-accent); }
.pol-step.is-current .pol-step-dot{ background:var(--pol-surface); border-color:var(--pol-accent); box-shadow:0 0 0 4px var(--pol-accent-soft); }
.pol-step.is-current{ color:var(--pol-accent); }
.pol-step.is-veto.is-current{ color:var(--pol-nay); }
.pol-step.is-veto.is-current .pol-step-dot{ border-color:var(--pol-nay); box-shadow:0 0 0 4px var(--pol-nay-soft); }
.pol-steps-sm{ margin:10px 0 6px; }
.pol-steps-sm .pol-step{ font-size:10.5px; min-width:0; padding-top:20px; line-height:1.25; }
.pol-steps-sm .pol-step-dot{ width:14px; height:14px; border-width:2px; }
.pol-steps-sm .pol-step::before{ top:6px; }
/* The side column is narrow at every width: one column per vote there. */
.pol-col-side .pol-vote{ grid-template-columns:minmax(0,1fr); }
.pol-col-side .pol-vote-title{ font-size:14px; }
.pol-timeline{ list-style:none; padding:0; margin:0; }
.pol-timeline li{ display:grid; grid-template-columns:100px minmax(0,1fr); gap:12px; padding:7px 0; border-bottom:1px solid var(--pol-line-2); font-size:14px; }
.pol-timeline li[hidden]{ display:none; }
.pol-tl-date{ color:var(--pol-ink-3); font-size:13px; white-space:nowrap; }
.pol-tl-text{ color:var(--pol-ink-2); line-height:1.45; }
.pol-timeline + .pol-btn{ margin-top:10px; }

/* ------------------------------------------------------------ documents */
.pol-doc-kind{ font-size:11.5px; font-weight:750; padding:2px 8px; border-radius:6px; background:var(--pol-surface-3); color:var(--pol-ink-2); white-space:nowrap; }
.pol-doc-presidential{ background:#fff1d6; color:#8a5300; }
.pol-doc-rule{ background:var(--pol-yea-soft); color:var(--pol-yea); }
.pol-doc-proposed_rule{ background:var(--pol-accent-soft); color:var(--pol-accent); }
.pol-sig{ font-size:11px; font-weight:700; color:var(--pol-nay); }
.pol-agency{ font-size:12px; color:var(--pol-ink-3); }
.pol-doc-abs{ font-size:13.5px; color:var(--pol-ink-2); margin:4px 0 0; line-height:1.5; }
.pol-doc-dates{ font-size:12.5px; color:var(--pol-ink-3); margin-top:4px; }
.pol-doc-dates a{ color:var(--pol-accent); }
.pol-comment-open{ color:var(--pol-yea); font-weight:650; }

/* ----------------------------------------------------------------- news */
.pol-news{ list-style:none; padding:0; margin:0; }
.pol-news-item{ display:flex; gap:12px; padding:10px 0; border-bottom:1px solid var(--pol-line-2); }
.pol-news-item:first-child{ padding-top:0; }
.pol-news-item:last-child{ border-bottom:0; padding-bottom:0; }
.pol-news-img{ width:96px; height:64px; border-radius:8px; object-fit:cover; flex-shrink:0; background:var(--pol-surface-3); }
.pol-news-text{ min-width:0; }
.pol-news-title{ font-size:14.5px; font-weight:650; color:var(--pol-ink); text-decoration:none; line-height:1.38; }
.pol-news-title:hover{ color:var(--pol-accent); text-decoration:underline; }
.pol-news-snip{ font-size:13.5px; color:var(--pol-ink-2); margin:3px 0 0; line-height:1.5; }
.pol-news-meta{ font-size:12px; color:var(--pol-ink-3); margin-top:3px; }

/* --------------------------------------------------------- seats, stats */
.pol-seats{ margin:0 0 6px; }
.pol-seat-bar{ position:relative; display:flex; height:16px; border-radius:6px; overflow:hidden; background:var(--pol-surface-3); }
.pol-seat-bar span{ display:block; height:100%; }
.pol-seat-r{ background:var(--pol-r); }
.pol-seat-d{ background:var(--pol-d); }
.pol-seat-i, .pol-seat-l{ background:var(--pol-i); }
.pol-seat-majority{ position:absolute !important; top:-3px; bottom:-3px; width:2px !important; background:var(--pol-ink) !important; opacity:.6; }
.pol-seat-legend{ display:flex; flex-wrap:wrap; gap:4px 14px; font-size:13px; color:var(--pol-ink-2); margin-top:6px; }
.pol-seat-legend span{ display:inline-flex; align-items:center; gap:5px; }
.pol-glance .pol-subhead:first-child{ margin-top:0; }
.pol-stats{ display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:10px; margin:0 0 16px; }
.pol-stat{ background:var(--pol-surface); border:1px solid var(--pol-line); border-radius:var(--pol-radius-sm); padding:12px 14px; display:flex; flex-direction:column; }
.pol-stat-n{ font-size:22px; font-weight:750; color:var(--pol-ink); letter-spacing:-.01em; }
.pol-stat-l{ font-size:12.5px; color:var(--pol-ink-3); }
.pol-facts{ display:flex; flex-wrap:wrap; gap:6px 18px; font-size:13.5px; color:var(--pol-ink-2); margin:10px 0; }
.pol-facts b{ color:var(--pol-ink-3); font-weight:600; margin-right:4px; }
.pol-facts a{ color:var(--pol-accent); }
.pol-facts-bar{ background:var(--pol-surface); border:1px solid var(--pol-line); border-radius:var(--pol-radius-sm); padding:10px 14px; margin:0 0 16px; }
.pol-spark{ display:flex; align-items:flex-end; gap:2px; height:44px; margin:0 0 4px; }
.pol-spark span{ flex:1; background:var(--pol-accent); opacity:.75; border-radius:2px 2px 0 0; min-height:2px; }

/* -------------------------------------------------------------- profile */
.pol-profile{ display:flex; gap:20px; align-items:flex-start; padding:14px 2px 16px; flex-wrap:wrap; }
.pol-profile-photo{ width:150px; height:183px; object-fit:cover; border-radius:var(--pol-radius); background:var(--pol-surface-3); flex-shrink:0; border:1px solid var(--pol-line); }
.pol-profile-text{ flex:1 1 320px; min-width:0; }
.pol-contact{ display:flex; flex-wrap:wrap; gap:8px; margin:8px 0; }
@media (max-width:575px){ .pol-profile-photo{ width:110px; height:134px; } }

/* -------------------------------------------------------- committees, topics */
.pol-committee-list{ list-style:none; padding:0; margin:0; font-size:14px; }
.pol-committee-list li{ padding:6px 0; border-bottom:1px solid var(--pol-line-2); display:flex; flex-wrap:wrap; gap:4px 8px; align-items:baseline; }
.pol-committee-list li:last-child{ border-bottom:0; }
.pol-committee-list li.pol-sub{ padding-left:16px; font-size:13px; }
.pol-committee-list a{ color:var(--pol-ink); text-decoration:none; font-weight:550; }
.pol-committee-list a:hover{ color:var(--pol-accent); text-decoration:underline; }
.pol-topic-links{ list-style:none; padding:0; margin:0; display:flex; flex-wrap:wrap; gap:6px; }
.pol-topic-links a{ display:inline-block; font-size:13px; padding:4px 10px; border-radius:999px; background:var(--pol-surface-2); border:1px solid var(--pol-line); color:var(--pol-ink-2); text-decoration:none; }
.pol-topic-links a:hover{ border-color:var(--pol-accent); color:var(--pol-accent); }
.pol-topic-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:14px; }
.pol-topic-kids{ list-style:none; padding:0; margin:8px 0 0; display:flex; flex-wrap:wrap; gap:4px 12px; font-size:13.5px; }
.pol-topic-kids a{ color:var(--pol-accent); text-decoration:none; }
.pol-topic-kids a:hover{ text-decoration:underline; }

@media (max-width:575px){
  .pol-h1{ font-size:22px; }
  .pol-card{ padding:14px; }
  .pol-news-img{ width:72px; height:52px; }
  .pol-timeline li{ grid-template-columns:78px minmax(0,1fr); }
  .pol-people-row{ grid-template-columns:18px minmax(0,1fr) 70px; }
}

/* =====================================================================
   DARK MODE (html[data-fs-theme="dark"], app.css section 14)
   ===================================================================== */
html[data-fs-theme="dark"] .pol-page{
  --pol-ink:#e2e9f1;
  --pol-ink-2:#c3cdd9;
  --pol-ink-3:#93a3b5;
  --pol-ink-4:#73839a;
  --pol-line:#243040;
  --pol-line-2:#1d2734;
  --pol-surface:#141b24;
  --pol-surface-2:#1a2330;
  --pol-surface-3:#212c3a;
  --pol-page:#0f141b;
  --pol-accent:#79b8ff;
  --pol-accent-soft:rgba(121,184,255,.13);
  --pol-r:#ff6b77;
  --pol-r-soft:rgba(255,107,119,.14);
  --pol-d:#6ea8ff;
  --pol-d-soft:rgba(110,168,255,.14);
  --pol-i:#b197fc;
  --pol-i-soft:rgba(177,151,252,.14);
  --pol-yea:#3ddc97;
  --pol-yea-soft:rgba(61,220,151,.13);
  --pol-nay:#ff7a85;
  --pol-nay-soft:rgba(255,122,133,.13);
  --pol-present:#f0b44c;
  --pol-nv:#3a4656;
  --pol-law:#3ddc97;
  --pol-amber:#f0b44c;
  --pol-amber-soft:rgba(240,180,76,.12);
  --pol-shadow:0 1px 2px rgba(0,0,0,.3);
}
html[data-fs-theme="dark"] .pol-main{ background:var(--pol-page); }
html[data-fs-theme="dark"] .pol-search-box{ background:#1a222d; border-color:#2a3542; box-shadow:0 2px 10px rgba(0,0,0,.35); }
html[data-fs-theme="dark"] .pol-search-input{ color:#dbe4ee; }
html[data-fs-theme="dark"] .pol-search-input::placeholder{ color:#6f7e90; }
html[data-fs-theme="dark"] .pol-suggest{ background:#1a222d; border-color:#2a3542; box-shadow:0 18px 44px rgba(0,0,0,.6); }
html[data-fs-theme="dark"] .pol-sug-item{ color:#dbe4ee; }
html[data-fs-theme="dark"] .pol-sug-item.is-active, html[data-fs-theme="dark"] .pol-sug-item:hover{ background:#232e3c; }
html[data-fs-theme="dark"] .pol-sug-sub, html[data-fs-theme="dark"] .pol-sug-kind{ color:#93a3b5; }
html[data-fs-theme="dark"] .pol-sug-kind{ background:#232e3c; }
html[data-fs-theme="dark"] .pol-filter.is-active{ background:var(--pol-accent); color:#0b1420; }
html[data-fs-theme="dark"] .pol-chamber-house{ background:rgba(61,220,151,.12); color:#3ddc97; }
html[data-fs-theme="dark"] .pol-chamber-senate{ background:rgba(177,151,252,.14); color:#b197fc; }
html[data-fs-theme="dark"] .pol-status-passed_house, html[data-fs-theme="dark"] .pol-status-passed_senate{ background:rgba(121,184,255,.10); color:#9cc9ff; }
html[data-fs-theme="dark"] .pol-doc-presidential{ background:rgba(240,180,76,.13); color:#f0b44c; }
html[data-fs-theme="dark"] .pol-callout{ border-color:rgba(240,180,76,.25); }
html[data-fs-theme="dark"] .pol-clip::after{ background:linear-gradient(rgba(20,27,36,0), var(--pol-surface)); }
