@font-face{font-family:Inter;src:url('/assets/inter-latin.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:Switzer;src:url('/assets/switzer.woff2') format('woff2');font-display:swap;font-weight:100 900}
@font-face{font-family:'BN Bergen';src:url('/assets/bergen-bold.otf') format('opentype');font-weight:700;font-style:normal;font-display:swap}
/* Predictable Fantasy design tokens: light dashboard theme (dashboard.predictable.media), Predictable palette.
   Scoped to body.senate (the live Senate screens). Legacy practice views keep their own dark tokens.
   Contrast (WCAG 2.1) checked on white and Cloud; see evidence/dashboard-redesign-2026-10-05/PLAN.md. */
body.senate{
 /* Palette */
 --pf-void:#090B10;--pf-ink:#0D1117;--pf-charcoal:#161B22;--pf-iron:#1E2128;--pf-cloud:#F0F2F5;--pf-stone:#7A7A80;
 --pf-aqua:#05DDA5;--pf-aqua-dark:#0F7A5B;--pf-marigold:#F8E762;--pf-blue-dress:#0073E5;--pf-blue-angel:#ACD4FD;--pf-signal:#E5383B;
 --pf-party-red:#AE3445;/* Exception: Republican party fills and rails only. Never text on light, never warnings. */
 /* Surfaces */
 --pf-page:var(--pf-cloud);--pf-card:#FFFFFF;--pf-soft:#F7F8FA;--pf-rule:#E4E7EB;--pf-track:#E8EBEF;
 --pf-shadow:0 1px 2px rgba(16,24,40,.04),0 6px 20px rgba(16,24,40,.06);--pf-shadow-lift:0 2px 4px rgba(16,24,40,.06),0 12px 28px rgba(16,24,40,.10);
 /* Text. Secondary text is Stone deepened (pure Stone is 4.3:1 on white). */
 --pf-text:var(--pf-ink);--pf-text-2:#454951;--pf-accent-text:#0B6B4F;/* Owner review 2026-10-05: more contrast. Secondary 9.0:1 white / 8.1:1 Cloud; accent text is Dark Aqua deepened for small labels, 6.5:1 white. */
 /* Signals */
 --pf-up:var(--pf-aqua-dark);--pf-up-bg:#E1F6EE;--pf-down:var(--pf-ink);--pf-down-bg:#FCE7E7;--pf-warn-bg:#FDEDEE;
 --pf-dem:var(--pf-blue-dress);--pf-dem-bg:#E6F1FC;--pf-rep:var(--pf-party-red);--pf-rep-bg:#F7E6E9;
 /* Shape and type */
 --pf-r-card:16px;--pf-r-control:10px;--pf-r-pill:999px;--pf-focus:0 0 0 3px #FFFFFF,0 0 0 5px var(--pf-aqua-dark);
 /* Fallbacks matter while web fonts load (and on a slow connection): never the browser's default serif. */
 --pf-display:Switzer,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;--pf-body:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;--pf-label:'BN Bergen',Switzer,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
 /* Roles added for dark mode (2026-10-06). Light values equal the colors these rules used before. */
 --pf-strong:var(--pf-void);--pf-on-strong:var(--pf-cloud);/* Solid pills: active tab, sign in, selected state */
 --pf-text-3:#6B7079;--pf-rule-strong:#CDD2D9;--pf-rule-hover:#AEB4BC;--pf-warn-rule:#F3C4C6;--pf-mine-bg:#F2FBF7;
 --pf-halo:rgba(255,255,255,.85);--pf-logo-filter:none;
 --pf-dem-text:var(--pf-blue-dress);--pf-rep-text:var(--pf-party-red);--pf-on-strong-2:#C9CDD3;--pf-on-strong-accent:var(--pf-aqua);
 --pf-map-land:#E3E6EA;--pf-map-race:#C4ECDD;--pf-map-race-hover:#8FDDBF;--pf-map-used:#D5D9DE;--pf-map-stroke:#FFFFFF;--pf-map-muted:#4A4E57;
 color-scheme:light;
}


/* Dark mode (2026-10-06). Default follows the device setting; the header switch stores an explicit
   choice in html[data-theme]. Ink, Void and Cloud stay fixed for text on bright fills (aqua, marigold). */
@media (prefers-color-scheme:dark){html:not([data-theme=light]) body.senate{--pf-aqua-dark:#2FD9A6;--pf-page:#0B0E13;--pf-card:#151A21;--pf-soft:#1C222B;--pf-rule:#2B323C;--pf-track:#262C35;--pf-shadow:0 1px 2px rgba(0,0,0,.5),0 6px 20px rgba(0,0,0,.35);--pf-shadow-lift:0 2px 4px rgba(0,0,0,.5),0 12px 28px rgba(0,0,0,.45);--pf-text:#EEF1F4;--pf-text-2:#B9C0CA;--pf-text-3:#98A0AB;--pf-accent-text:#3BE3B4;--pf-up:#3BE3B4;--pf-up-bg:#123128;--pf-down:#EEF1F4;--pf-down-bg:#3B2025;--pf-warn-bg:#3B2025;--pf-warn-rule:#6E2C31;--pf-dem-bg:#14263D;--pf-rep:#C24A5C;--pf-rep-bg:#3B1E25;--pf-focus:0 0 0 3px #0B0E13,0 0 0 5px #3BE3B4;--pf-strong:#EEF1F4;--pf-on-strong:#0B0E13;--pf-rule-strong:#3C4450;--pf-rule-hover:#5A636F;--pf-mine-bg:#12302A;--pf-halo:rgba(11,14,19,.85);--pf-logo-filter:invert(1);--pf-dem-text:#93C3FF;--pf-rep-text:#F5AAB6;--pf-on-strong-2:#454951;--pf-on-strong-accent:#0B6B4F;--pf-map-land:#262D37;--pf-map-race:#1E4D3F;--pf-map-race-hover:#28705A;--pf-map-used:#313945;--pf-map-stroke:#0B0E13;--pf-map-muted:#A3ABB6;color-scheme:dark}}
html[data-theme=dark] body.senate{--pf-aqua-dark:#2FD9A6;--pf-page:#0B0E13;--pf-card:#151A21;--pf-soft:#1C222B;--pf-rule:#2B323C;--pf-track:#262C35;--pf-shadow:0 1px 2px rgba(0,0,0,.5),0 6px 20px rgba(0,0,0,.35);--pf-shadow-lift:0 2px 4px rgba(0,0,0,.5),0 12px 28px rgba(0,0,0,.45);--pf-text:#EEF1F4;--pf-text-2:#B9C0CA;--pf-text-3:#98A0AB;--pf-accent-text:#3BE3B4;--pf-up:#3BE3B4;--pf-up-bg:#123128;--pf-down:#EEF1F4;--pf-down-bg:#3B2025;--pf-warn-bg:#3B2025;--pf-warn-rule:#6E2C31;--pf-dem-bg:#14263D;--pf-rep:#C24A5C;--pf-rep-bg:#3B1E25;--pf-focus:0 0 0 3px #0B0E13,0 0 0 5px #3BE3B4;--pf-strong:#EEF1F4;--pf-on-strong:#0B0E13;--pf-rule-strong:#3C4450;--pf-rule-hover:#5A636F;--pf-mine-bg:#12302A;--pf-halo:rgba(11,14,19,.85);--pf-logo-filter:invert(1);--pf-dem-text:#93C3FF;--pf-rep-text:#F5AAB6;--pf-on-strong-2:#454951;--pf-on-strong-accent:#0B6B4F;--pf-map-land:#262D37;--pf-map-race:#1E4D3F;--pf-map-race-hover:#28705A;--pf-map-used:#313945;--pf-map-stroke:#0B0E13;--pf-map-muted:#A3ABB6;color-scheme:dark}

/* Light dashboard theme for the live Senate screens (body.senate), after dashboard.predictable.media:
   Cloud page, white 16px cards with a soft two-layer shadow, Inter body with tabular figures for every number,
   Switzer display, BN Bergen Bold all-caps labels, pill navigation with a filled active tab.
   Overrides the dark rules in senate-ui.css / guided-flow.css / polish.css by scope; legacy views are untouched. */

/* ---------- Foundation ---------- */
body.senate{background:var(--pf-page);color:var(--pf-text);font-family:var(--pf-body);-webkit-font-smoothing:antialiased}
body.senate main.pf{color:var(--pf-text);font-family:var(--pf-body);font-variant-numeric:tabular-nums;max-width:1240px;margin:0 auto;padding:8px 24px 72px}
body.senate main.pf,body.senate main.pf p,body.senate main.pf li,body.senate main.pf label{color:var(--pf-text)}
body.senate main.pf h1{font-family:var(--pf-display);font-weight:800;color:var(--pf-text);letter-spacing:-.035em}
body.senate main.pf h2,body.senate main.pf h3{font-family:var(--pf-display);color:var(--pf-text);letter-spacing:-.015em}
body.senate main.pf .journey-heading>p{color:var(--pf-text-2)}
body.senate main.pf .journey-heading .journey-label,body.senate main.pf .pf-kicker{font:700 12px/1.2 var(--pf-label);letter-spacing:.2em;text-transform:uppercase;color:var(--pf-accent-text)}
body.senate main.pf a{color:var(--pf-accent-text)}
body.senate .pf-num,body.senate main.pf b,body.senate main.pf strong{font-variant-numeric:tabular-nums}

/* Focus: visible ring on every interactive element */
body.senate :is(a,button,input,select,summary,[role=button],[tabindex]):focus-visible{outline:none;box-shadow:var(--pf-focus);border-radius:var(--pf-r-control)}
/* Headings and messages get focus from code (tabindex=-1) so screen readers announce the new page; they are not
   controls, so no focus ring (owner, 2026-10-12: the outline around "Name your team" after a refresh). */
body.senate [tabindex="-1"]:focus,body.senate [tabindex="-1"]:focus-visible{outline:none;box-shadow:none}
body.senate .map-state:focus-visible{outline:3px solid var(--pf-aqua-dark);outline-offset:1px;box-shadow:none}

/* Buttons and inputs */
body.senate main.pf button{font-family:var(--pf-body);min-height:44px;border-radius:var(--pf-r-control);background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule);font-weight:600;font-size:15px;box-shadow:none}
body.senate main.pf button:hover:not(:disabled){border-color:var(--pf-text)}
body.senate main.pf button:disabled{opacity:.55;cursor:not-allowed}
body.senate main.pf .journey-primary{background:var(--pf-aqua);color:var(--pf-void);border:1px solid var(--pf-aqua);font-weight:700;min-height:52px}
body.senate main.pf .journey-primary:hover:not(:disabled){background:#04c895;border-color:#04c895}
body.senate main.pf .pf-secondary{background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule)}
body.senate main.pf input,body.senate main.pf select{background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule);border-radius:var(--pf-r-control);min-height:46px;font:500 16px/1.3 var(--pf-body)}
body.senate main.pf input::placeholder{color:#8A8F98}
body.senate main.pf input[readonly]{background:var(--pf-soft);color:var(--pf-text-2)}
body.senate main.pf input[type=checkbox]{min-height:0;width:22px;height:22px;accent-color:var(--pf-aqua-dark)}

/* Cards: the dashboard surface */
body.senate main.pf :is(.pf-panel,.pf-slip,.pf-lineup,.pf-board,.pf-form,.pf-rules-copy,.pf-empty,.state-map,.admin-editor,.admin-teams,.admin-audit){background:var(--pf-card);border:0;border-radius:var(--pf-r-card);box-shadow:var(--pf-shadow);color:var(--pf-text)}
body.senate main.pf .pf-empty{box-shadow:none;border:1px dashed var(--pf-rule-strong);background:var(--pf-soft)}
body.senate main.pf .pf-empty p,body.senate main.pf .pf-quiet,body.senate main.pf .pf-note,body.senate main.pf .pf-sub{color:var(--pf-text-2)}

/* Status lines */
body.senate main.pf .journey-status{background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule);border-left:4px solid var(--pf-aqua-dark);border-radius:var(--pf-r-control)}
body.senate main.pf .journey-error{background:var(--pf-warn-bg);color:var(--pf-text);border:1px solid var(--pf-warn-rule);border-left:4px solid var(--pf-signal);border-radius:var(--pf-r-control)}

/* ---------- Header and navigation ---------- */
body.senate header{position:static;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"brand mode account" "nav nav nav";align-items:center;gap:14px 16px;max-width:1240px;margin:0 auto;padding:20px 24px 6px;background:transparent;border:0;box-shadow:none;color:var(--pf-text)}
body.senate header .brand{grid-area:brand;display:flex;align-items:center;gap:10px;color:var(--pf-text);text-decoration:none}
body.senate header .brand img{width:30px;height:auto}
body.senate header .brand>span{font:600 19px/1 var(--pf-display);letter-spacing:.08em;color:var(--pf-text)}
body.senate header .brand .aqua{color:var(--pf-aqua-dark)}
body.senate header .brand small{display:block;margin-top:5px;font:700 10px/1.2 var(--pf-label);letter-spacing:.2em;text-transform:uppercase;color:var(--pf-text-2)}
body.senate header .pf-mode{grid-area:mode;justify-self:start}
body.senate header nav{grid-area:nav;display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-start;width:auto;order:0;margin:0}
body.senate header nav button{min-height:40px;padding:8px 15px;border-radius:var(--pf-r-pill);background:var(--pf-card);color:var(--pf-text-2);border:0;box-shadow:0 1px 2px rgba(16,24,40,.06);font:600 15px/1 var(--pf-body)}
body.senate header nav button:hover{color:var(--pf-text)}
body.senate header nav button[aria-current=page]{background:var(--pf-strong);color:var(--pf-on-strong)}
body.senate header nav .nav-admin{color:var(--pf-accent-text)}
/* Active Admin tab: the accent made for text on the strong pill (dark green on the light pill in dark mode, aqua on the dark pill in light mode). */
body.senate header nav .nav-admin[aria-current=page]{color:var(--pf-on-strong-accent)}
body.senate header .pf-account{grid-area:account;justify-self:end}
body.senate header>#signin{grid-area:account;justify-self:end}
body.senate header :is(#signin,#signout){min-height:40px;padding:8px 16px;border-radius:var(--pf-r-pill);background:var(--pf-strong);color:var(--pf-on-strong);border:1px solid var(--pf-strong);font:600 14px/1 var(--pf-body)}
body.senate header #signout{background:var(--pf-card);color:var(--pf-text);border-color:var(--pf-rule)}
body.senate header .pf-account-email{color:var(--pf-text-2);font-size:13px}
body.senate .pf-mode-badge{display:inline-flex;align-items:center;gap:6px;font:700 11px/1 var(--pf-label);letter-spacing:.18em;text-transform:uppercase;padding:6px 10px;border-radius:var(--pf-r-pill);background:var(--pf-marigold);color:var(--pf-ink)}
body.senate .pf-mode-badge.is-live{background:var(--pf-up-bg);color:var(--pf-aqua-dark)}
@media(max-width:760px){
 body.senate header{padding:14px 16px 4px;gap:10px 10px}
 body.senate header .brand>span{font-size:16px}
 body.senate header nav{gap:6px}
 body.senate header nav button{padding:8px 12px;font-size:14px;min-height:44px}
 body.senate main.pf{padding:4px 16px 96px}
}
@media(prefers-reduced-motion:reduce){body.senate *{transition:none!important;animation:none!important}}

/* ---------- Status bar (mode, next step, lock countdown) ---------- */
body.senate main.pf .pf-gameday{display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px;background:var(--pf-card);border:0;border-radius:var(--pf-r-card);box-shadow:var(--pf-shadow);padding:14px 18px;margin:10px 0 22px;border-left:5px solid var(--pf-aqua-dark)}
body.senate main.pf .pf-gameday.is-practice{border-left-color:var(--pf-marigold);background:var(--pf-card)}
body.senate main.pf .pf-gameday.is-open{background:var(--pf-card);border-color:transparent;border-left-color:var(--pf-aqua)}
body.senate main.pf .pf-gameday.is-locked{border-left-color:var(--pf-text)}
body.senate main.pf .pf-gameday-copy{display:grid;gap:2px;min-width:0;flex:1 1 280px}
body.senate main.pf .pf-gameday-copy strong{font:700 16px/1.3 var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-gameday-copy span{font-size:13.5px;color:var(--pf-text-2)}
body.senate main.pf .pf-gameday-copy .pf-next{color:var(--pf-text);font-weight:600;font-size:14px;margin-top:2px}
body.senate main.pf .pf-lock{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--pf-text-2);font-size:13.5px}
body.senate main.pf .pf-count{font:700 14px/1 var(--pf-body);font-variant-numeric:tabular-nums;color:var(--pf-text);background:var(--pf-soft);border:1px solid var(--pf-rule);border-radius:var(--pf-r-pill);padding:7px 11px}
body.senate main.pf .pf-lock.is-urgent .pf-count{background:var(--pf-signal);border-color:var(--pf-signal);color:var(--pf-void)}
body.senate main.pf .pf-link{background:var(--pf-strong);color:var(--pf-on-strong);border:1px solid var(--pf-strong);border-radius:var(--pf-r-pill);padding:8px 16px;min-height:44px;font:600 14px/1 var(--pf-body)}
body.senate main.pf .pf-gameday:not(.is-practice) .pf-link{background:var(--pf-card);color:var(--pf-text);border-color:var(--pf-rule)}

/* ---------- Entry choice (signed out) ---------- */
body.senate main.pf .pf-choice{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;margin:4px 0 26px}
body.senate main.pf .pf-choice section{background:var(--pf-card);border-radius:var(--pf-r-card);box-shadow:var(--pf-shadow);padding:22px}
body.senate main.pf .pf-choice-main{border-top:5px solid var(--pf-aqua)}
body.senate main.pf .pf-choice-alt{border-top:5px solid var(--pf-marigold)}
body.senate main.pf .pf-choice h2{font-size:22px;margin:8px 0 8px}
body.senate main.pf .pf-choice p{color:var(--pf-text-2);margin:0 0 10px;font-size:15px;line-height:1.5}
body.senate main.pf .pf-choice .journey-primary{width:100%;margin-top:6px}
body.senate main.pf .pf-form-title{font-size:20px;margin:0 0 12px}
@media(max-width:760px){body.senate main.pf .pf-choice{grid-template-columns:1fr}}

/* ---------- Team form ---------- */
body.senate main.pf .pf-form{padding:22px;max-width:560px}
body.senate main.pf .pf-form label{font:600 14px/1.3 var(--pf-body);color:var(--pf-text);display:grid;gap:6px}
body.senate main.pf .pf-form p{color:var(--pf-text-2);font-size:14px}

/* ---------- How it works ---------- */
body.senate main.pf .pf-rules-copy{padding:24px 26px;max-width:820px}
body.senate main.pf .pf-rules-lead{font:700 12px/1.2 var(--pf-label);letter-spacing:.2em;text-transform:uppercase;color:var(--pf-accent-text);margin:0 0 10px}
body.senate main.pf .pf-rulelist{counter-reset:rule;list-style:none;margin:0;padding:0;max-width:none}
body.senate main.pf .pf-rulelist li{counter-increment:rule;display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--pf-rule);color:var(--pf-text);font-size:16px;line-height:1.5}
body.senate main.pf .pf-rulelist li::before{content:counter(rule,decimal-leading-zero);font:700 13px/1 var(--pf-body);font-variant-numeric:tabular-nums;color:var(--pf-accent-text)}
body.senate main.pf .pf-rulelist li:last-child{border-bottom:0}
body.senate main.pf .pf-scoreline{margin:18px 0 0;padding:14px 16px;border-radius:12px;background:var(--pf-up-bg);color:var(--pf-text);font-size:15px;line-height:1.55;max-width:none}

/* ---------- Draft room ---------- */
body.senate main.pf .journey-draft{grid-template-columns:minmax(0,1fr) 340px;gap:24px}
body.senate main.pf .pf-rounds{gap:4px;background:var(--pf-card);border-radius:12px;padding:4px;box-shadow:0 1px 2px rgba(16,24,40,.06);width:max-content;max-width:100%}
body.senate main.pf .pf-rounds button{min-height:40px;padding:8px 12px;border-radius:9px;background:transparent;border:0;color:var(--pf-text-2);font:700 12px/1 var(--pf-label);letter-spacing:.14em}
body.senate main.pf .pf-rounds button.is-done{color:var(--pf-accent-text);background:var(--pf-up-bg)}
body.senate main.pf .pf-rounds button.is-now{background:var(--pf-strong);color:var(--pf-on-strong)}
body.senate main.pf .pf-list-head h2{font-size:20px}
body.senate main.pf .pf-list-head span{font:700 11px/1.2 var(--pf-label);letter-spacing:.18em;text-transform:uppercase;color:var(--pf-text-2)}
body.senate main.pf .pf-rows{gap:10px}
body.senate main.pf .pf-row{background:var(--pf-card);border:1px solid transparent;border-radius:14px;box-shadow:var(--pf-shadow);color:var(--pf-text)}
body.senate main.pf .pf-row:hover:not(.is-off){border-color:var(--pf-aqua-dark);background:var(--pf-card)}
body.senate main.pf .pf-row h3{font-family:var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-row.is-off{background:var(--pf-soft);box-shadow:none;border:1px dashed var(--pf-rule-strong)}
body.senate main.pf .pf-why{color:var(--pf-text-2);font-size:13px;font-weight:600}
body.senate main.pf :is(.pf-who img,.pf-avatar,.pf-photo,.pf-thumb){background:var(--pf-soft);border-color:var(--pf-card);box-shadow:0 0 0 1px var(--pf-rule)}
body.senate main.pf .pf-avatar{color:var(--pf-text);font-family:var(--pf-body)}
body.senate main.pf .pf-avatar-d{background:var(--pf-dem-bg);color:var(--pf-dem-text)}
body.senate main.pf .pf-avatar-r{background:var(--pf-rep-bg);color:var(--pf-rep-text)}
body.senate main.pf .pf-ring-d{box-shadow:0 0 0 2px var(--pf-dem)}
body.senate main.pf .pf-ring-r{box-shadow:0 0 0 2px var(--pf-rep)}
body.senate main.pf .pf-party{color:#fff;background:var(--pf-iron);border:0;font-family:var(--pf-body)}
body.senate main.pf .pf-party-d{background:var(--pf-dem)}
body.senate main.pf .pf-party-r{background:var(--pf-rep)}
body.senate main.pf .pf-party-o{background:var(--pf-iron)}
body.senate main.pf .pf-state{font:700 12px/1 var(--pf-body);color:var(--pf-text-2);letter-spacing:.04em}
body.senate main.pf .pf-flag{background:var(--pf-soft);color:var(--pf-text-2);border:1px solid var(--pf-rule);border-radius:var(--pf-r-pill);font:700 11px/1 var(--pf-body);padding:4px 8px}
body.senate main.pf .pf-flag-close{background:var(--pf-marigold);color:var(--pf-ink);border-color:var(--pf-marigold)}
body.senate main.pf .pf-stats{color:var(--pf-text-2)}
body.senate main.pf .pf-stats li{color:var(--pf-text-2)}
body.senate main.pf .pf-odds{min-width:84px}
body.senate main.pf .pf-pay .pf-pts b,body.senate main.pf .pf-pts b{color:var(--pf-text);font:700 26px/1 var(--pf-body);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
body.senate main.pf .pf-odds small{display:block;color:var(--pf-text-2);font:700 10px/1.2 var(--pf-label);letter-spacing:.16em;text-transform:uppercase;margin-top:4px}
body.senate main.pf .pf-prob{display:block;height:6px;border-radius:6px;background:var(--pf-track);overflow:hidden;margin-top:7px;width:84px;margin-left:auto}
body.senate main.pf .pf-prob i{display:block;height:100%;background:var(--pf-aqua);border-radius:6px}
body.senate main.pf .pf-add{background:var(--pf-aqua);border:0;color:var(--pf-void);font-weight:700;border-radius:var(--pf-r-pill)!important}
body.senate main.pf .pf-add:hover:not(:disabled){background:#04c895;color:var(--pf-void)}

/* Map: light surfaces, availability (not party) colors */
body.senate main.pf .state-map{padding:0;overflow:hidden}
body.senate main.pf .map-toggle{background:var(--pf-card);color:var(--pf-text);border:0;border-radius:0;width:100%;min-height:52px}
body.senate main.pf .map-summary-status{color:var(--pf-text-2)}
body.senate main.pf .map-body{background:var(--pf-card);color:var(--pf-text)}
body.senate main.pf .map-intro p,body.senate main.pf .map-insets,body.senate main.pf .map-pan-hint,body.senate main.pf .map-callouts p,body.senate main.pf .map-selection p{color:var(--pf-text-2)}
body.senate main.pf .map-intro button,body.senate main.pf .map-callouts button,body.senate main.pf #map-results{background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule)}
body.senate main.pf .map-callouts button.is-selected,body.senate main.pf .map-intro button[aria-pressed=true]{background:var(--pf-strong);color:var(--pf-on-strong);border-color:var(--pf-strong)}
body.senate main.pf .map-callouts button span{color:inherit;opacity:.8}
body.senate main.pf .us-state-map{background:var(--pf-soft);border-radius:12px}
body.senate main.pf .map-state path{fill:var(--pf-map-land);stroke:var(--pf-map-stroke);stroke-width:1.2}
body.senate main.pf .map-state.has-race path{fill:var(--pf-map-race);stroke:var(--pf-map-stroke)}
body.senate main.pf .map-state.has-race:hover path{fill:var(--pf-map-race-hover)}
body.senate main.pf .map-state.race-used path{fill:var(--pf-map-used)}
body.senate main.pf .map-state.is-close path{fill:var(--pf-marigold)}
body.senate main.pf .map-state.is-selected path{fill:var(--pf-aqua)}
body.senate main.pf .map-state text{fill:var(--pf-text);font:700 12px var(--pf-body)}
body.senate main.pf .map-state.no-race text{fill:var(--pf-map-muted)}
body.senate main.pf .map-border-outer{stroke:var(--pf-text)}
body.senate main.pf .map-border-inner{stroke:var(--pf-map-stroke)}
body.senate main.pf .map-close-pin circle{fill:var(--pf-marigold);stroke:var(--pf-ink)}
body.senate main.pf .map-legend{color:var(--pf-text-2)}
body.senate main.pf .legend-race{background:var(--pf-map-race)}
body.senate main.pf .legend-selected{background:var(--pf-aqua)}
body.senate main.pf .legend-close{background:var(--pf-marigold)}
body.senate main.pf .legend-none{background:var(--pf-map-land)}

/* Lineup rail and phone sheet */
body.senate main.pf .pf-lineup{padding:18px}
body.senate main.pf .pf-lineup-head span{color:var(--pf-text-2)}
body.senate main.pf .pf-lineup-head b{color:var(--pf-text)}
body.senate main.pf .pf-progress{height:8px;border-radius:8px;background:var(--pf-track);overflow:hidden;margin:2px 0 12px}
body.senate main.pf .pf-progress i{display:block;height:100%;background:var(--pf-aqua);border-radius:8px;transition:width .26s cubic-bezier(.2,.8,.2,1)}
body.senate main.pf .pf-lineup-ceiling{background:var(--pf-soft);border:1px solid var(--pf-rule)}
body.senate main.pf .pf-lineup-ceiling span{color:var(--pf-text-2)}
body.senate main.pf .pf-lineup-ceiling strong{font:700 24px/1 var(--pf-body);color:var(--pf-text);font-variant-numeric:tabular-nums}
body.senate main.pf .pf-lslot{border-bottom:1px solid var(--pf-rule)}
body.senate main.pf .pf-lslot>button[data-round]{background:transparent;border:0;color:var(--pf-text);min-height:56px}
body.senate main.pf .pf-lslot.is-now>button[data-round]{background:var(--pf-up-bg);box-shadow:inset 4px 0 0 var(--pf-aqua-dark)}
body.senate main.pf .pf-lslot.is-mvp>button[data-round]{box-shadow:inset 4px 0 0 var(--pf-marigold)}
body.senate main.pf .pf-lslot-who strong{font-family:var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-lslot-who strong.is-open{color:var(--pf-text-2)}
body.senate main.pf .pf-lslot.is-now .pf-lslot-who strong.is-open{color:var(--pf-accent-text)}
body.senate main.pf .pf-lslot-pts b{color:var(--pf-text);font:700 17px/1 var(--pf-body)}
body.senate main.pf .pf-lslot-pts small{color:var(--pf-text-2)}
body.senate main.pf .pf-lslot .journey-remove{color:var(--pf-text-2);width:44px;height:44px;min-height:44px;right:0}
body.senate main.pf .pf-lslot .journey-remove:hover{color:var(--pf-text);background:var(--pf-soft)}
body.senate main.pf .pf-pos{font:700 11px/1 var(--pf-label);letter-spacing:.14em;color:var(--pf-text-2);background:var(--pf-soft);border:1px solid var(--pf-rule);border-radius:7px}
body.senate main.pf .is-mvp .pf-pos{background:var(--pf-marigold);color:var(--pf-ink);border-color:var(--pf-marigold)}
body.senate main.pf .pf-mvp-tag{background:var(--pf-marigold);color:var(--pf-ink);font-family:var(--pf-body)}
body.senate .pf-sheet-toggle,body.senate .mobile-roster-toggle{background:var(--pf-strong);color:var(--pf-on-strong);border:0;box-shadow:var(--pf-shadow-lift)}
body.senate .pf-sheet-toggle em{color:var(--pf-on-strong-2)}
body.senate .pf-sheet-toggle span{color:var(--pf-on-strong-accent)}
@media(max-width:760px){
 body.senate main.pf .pf-gameday{padding:12px 14px}
 body.senate main.pf .pf-lock{margin-left:0}
 body.senate main.pf .pf-rounds{width:100%;overflow-x:auto}
 body.senate main.pf .pf-row{padding:12px}
 body.senate main.pf .pf-pay .pf-pts b{font-size:22px}
 body.senate main.pf .journey-roster.mobile-open{background:var(--pf-card);box-shadow:var(--pf-shadow-lift)}
}

/* Overrides for older !important / border rules in senate-ui.css and guided-flow.css */
body.senate main.pf .pf-gameday .pf-link{background:var(--pf-strong)!important;color:var(--pf-on-strong)!important;border:1px solid var(--pf-strong)!important;min-height:44px!important;padding:8px 16px!important;border-radius:var(--pf-r-pill)!important}
body.senate main.pf .pf-gameday:not(.is-practice) .pf-link{background:var(--pf-card)!important;color:var(--pf-text)!important;border-color:var(--pf-rule)!important}
body.senate main.pf .journey-map,body.senate main.pf .journey-map .map-body{border:0;background:transparent}
body.senate main.pf .journey-map .us-state-map{border:0}
body.senate main.pf .journey-map{border-radius:var(--pf-r-card)}
/* Phones: the map collapses behind its toggle so candidates start above the fold. */
@media(max-width:760px){
 body.senate .journey .journey-map .map-toggle{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;min-height:52px;font:600 15px/1.25 var(--pf-body)}
 body.senate .journey .journey-map .map-toggle strong{color:var(--pf-text)}
 body.senate .journey .journey-map .map-disclosure{color:var(--pf-text-2)}
 body.senate .journey .journey-map .state-map:not(.is-open) .map-drawer{display:none}
}
/* Phone header: brand + account on one row, tabs below; the status bar carries the Practice label on phones. */
body.senate header :is(#signin,#signout){white-space:nowrap}
@media(max-width:560px){
 body.senate header{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand account" "nav nav"}
 body.senate header .pf-mode{display:none}
 body.senate header .brand img{width:26px}
 body.senate header .brand>span{font-size:15px;letter-spacing:.06em}
 body.senate header .brand small{font-size:9px;letter-spacing:.16em}
 body.senate header nav{display:grid;grid-template-columns:repeat(4,auto);justify-content:start;gap:4px;width:100%}
 body.senate header nav button{padding:8px 10px;font-size:13.5px}
 body.senate header nav:has(.nav-admin){grid-template-columns:repeat(3,auto)}
 body.senate main.pf .pf-list-head{display:grid;gap:4px}
}
@media(max-width:560px){
 body.senate header nav{display:flex;flex-wrap:wrap;padding:0;gap:4px}
 body.senate header nav button{padding:8px 9px;font-size:13px;letter-spacing:-.005em}
}
body.senate main.pf .pf-stats li{background:var(--pf-soft)!important;color:var(--pf-text-2)!important;border:1px solid var(--pf-rule)!important;font-weight:600}
body.senate main.pf .pf-stats li b{color:var(--pf-text)!important}
@media(max-width:560px){body.senate main.pf .pf-stats li:nth-child(n+2){display:none}}

/* ---------- KPI tiles (dashboard pattern) ---------- */
body.senate main.pf .pf-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin:0 0 18px}
body.senate main.pf .pf-kpi{background:var(--pf-card);border-radius:var(--pf-r-card);box-shadow:var(--pf-shadow);padding:16px 18px;min-width:0}
body.senate main.pf .pf-kpi-l{display:block;font:700 11px/1.2 var(--pf-label);letter-spacing:.18em;text-transform:uppercase;color:var(--pf-text-2)}
body.senate main.pf .pf-kpi-v{display:block;font:700 30px/1.1 var(--pf-body);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--pf-text);margin-top:8px;overflow-wrap:anywhere}
body.senate main.pf .pf-kpi-s{display:block;font-size:13px;color:var(--pf-text-2);margin-top:6px}
body.senate main.pf .pf-kpi.is-mvp{box-shadow:var(--pf-shadow),inset 0 4px 0 var(--pf-marigold)}
body.senate main.pf .pf-kpi.is-mvp .pf-kpi-v{font:700 20px/1.25 var(--pf-display);letter-spacing:-.01em}
body.senate main.pf .pf-kpi.is-up .pf-kpi-v{color:var(--pf-up)}
body.senate main.pf .pf-kpi.is-warn{box-shadow:var(--pf-shadow),inset 0 4px 0 var(--pf-signal)}
@media(max-width:560px){body.senate main.pf .pf-kpis{grid-template-columns:1fr 1fr;gap:10px}body.senate main.pf .pf-kpi{padding:12px 14px}body.senate main.pf .pf-kpi-v{font-size:24px}}

/* ---------- Review, confirmation, My team ---------- */
body.senate main.pf .pf-slip{overflow:hidden}
body.senate main.pf .pf-slip-head{background:var(--pf-card);border-bottom:1px solid var(--pf-rule)}
body.senate main.pf .pf-slip-head h2{font-family:var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-ceiling strong{font:700 40px/1 var(--pf-body);font-variant-numeric:tabular-nums;color:var(--pf-text);letter-spacing:-.02em}
body.senate main.pf .pf-ceiling span{color:var(--pf-text-2)}
body.senate main.pf .pf-slip-row{border-bottom:1px solid var(--pf-rule);background:var(--pf-card)}
body.senate main.pf .pf-slip-row.is-mvp{background:var(--pf-card);box-shadow:inset 4px 0 0 var(--pf-marigold)}
body.senate main.pf .pf-slip-who strong{font-family:var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-slip-pay .pf-pts b{font-size:20px}
body.senate main.pf .pf-locked{display:block;font:700 10px/1.2 var(--pf-label);letter-spacing:.16em;text-transform:uppercase;color:var(--pf-text-2)}
body.senate main.pf .pick-movement{grid-column:2/-1;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:2px 0 0;font-size:13.5px;color:var(--pf-text-2)}
body.senate main.pf .pick-movement strong{color:var(--pf-text);font-variant-numeric:tabular-nums}
body.senate main.pf .pick-movement small{color:var(--pf-text-2)}
body.senate main.pf .pf-move{font:700 12.5px/1 var(--pf-body);font-variant-numeric:tabular-nums;padding:4px 9px;border-radius:var(--pf-r-pill);background:var(--pf-soft);color:var(--pf-text-2)}
body.senate main.pf .pf-move.is-up{background:var(--pf-up-bg);color:var(--pf-up)}
body.senate main.pf .pf-move.is-down{background:var(--pf-down-bg);color:var(--pf-down)}
body.senate main.pf .review-panel,body.senate main.pf .pf-panel{padding:22px}
body.senate main.pf .review-panel h2,body.senate main.pf .pf-panel h2{font-size:20px}
body.senate main.pf .review-panel p,body.senate main.pf .pf-panel p{color:var(--pf-text-2)}
body.senate main.pf .review-panel.is-locked{box-shadow:var(--pf-shadow),inset 0 5px 0 var(--pf-text)}
body.senate main.pf .pf-lockline b{color:var(--pf-text)}
body.senate main.pf .entry-ack{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;background:var(--pf-soft);border:1px solid var(--pf-rule);border-radius:12px;padding:14px;color:var(--pf-text)}
body.senate main.pf .entry-ack span{color:var(--pf-text)}
body.senate main.pf .pf-entry{color:var(--pf-text-2);font-variant-numeric:tabular-nums}

/* ---------- Leaderboard (scoreboard) ---------- */
body.senate main.pf .pf-board-meta{color:var(--pf-text-2)}
body.senate main.pf .pf-board-meta b{color:var(--pf-text)}
body.senate main.pf .pf-board{overflow:hidden}
body.senate main.pf .pf-board-head{background:var(--pf-card);color:var(--pf-text-2);border-bottom:1px solid var(--pf-rule);font:700 11px/1.2 var(--pf-label);letter-spacing:.16em;text-transform:uppercase}
body.senate main.pf .pf-board-head,body.senate main.pf .pf-board-row{grid-template-columns:64px minmax(0,1fr) 92px 112px}
body.senate main.pf .pf-board-head span:nth-child(n+3),body.senate main.pf .pf-board-row>:nth-child(n+3){text-align:right}
body.senate main.pf .pf-board-row{border-bottom:1px solid var(--pf-rule);background:var(--pf-card)}
body.senate main.pf .pf-board-row:hover{background:var(--pf-soft)}
body.senate main.pf .pf-board-row strong{font-family:var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-board-row b{font:700 19px/1 var(--pf-body);font-variant-numeric:tabular-nums;color:var(--pf-text)}
body.senate main.pf .pf-rank{font:700 15px/1 var(--pf-body);font-variant-numeric:tabular-nums;color:var(--pf-text-2)}
body.senate main.pf .pf-board-row.is-top .pf-rank{display:inline-grid;place-items:center;min-width:40px;height:30px;padding:0 8px;border-radius:var(--pf-r-pill);background:var(--pf-strong);color:var(--pf-on-strong);width:max-content}
body.senate main.pf .pf-board-row.is-mine{background:var(--pf-up-bg);box-shadow:inset 4px 0 0 var(--pf-aqua-dark)}
body.senate main.pf .pf-change{display:inline-block;font:700 13px/1 var(--pf-body);font-variant-numeric:tabular-nums;padding:5px 9px;border-radius:var(--pf-r-pill);background:var(--pf-soft);color:var(--pf-text-2)}
body.senate main.pf .pf-change.is-up{background:var(--pf-up-bg);color:var(--pf-up)}
body.senate main.pf .pf-change.is-down{background:var(--pf-down-bg);color:var(--pf-down)}
body.senate main.pf .pf-warn{color:var(--pf-text);background:var(--pf-warn-bg);border-radius:6px;padding:2px 6px;display:inline-block;margin-top:4px;font-weight:600}
body.senate main.pf .pf-note{color:var(--pf-text-2)}
@media(max-width:560px){
 body.senate main.pf .pf-board-head,body.senate main.pf .pf-board-row{grid-template-columns:48px minmax(0,1fr) 70px 84px;gap:8px;padding:12px}
 body.senate main.pf .pf-board-row b{font-size:16px}
 body.senate main.pf .pf-change{font-size:12px;padding:4px 7px}
}
body.senate main.pf .journey-actions button:not(.journey-primary),body.senate main.pf .pf-secondary{background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule)}
body.senate main.pf .journey-actions button:not(.journey-primary):hover:not(:disabled){border-color:var(--pf-text)}
body.senate main.pf .pf-quiet{color:var(--pf-text-2)!important}
body.senate main.pf :is(.pf-photo,.pf-thumb).pf-avatar{color:var(--pf-text);font-family:var(--pf-body)}
body.senate main.pf :is(.pf-photo,.pf-thumb).pf-avatar-d{color:var(--pf-dem-text)}
body.senate main.pf :is(.pf-photo,.pf-thumb).pf-avatar-r{color:var(--pf-rep-text)}
body.senate main.pf .mobile-roster-toggle.pf-sheet-toggle{background:var(--pf-strong);color:var(--pf-on-strong);border:0;box-shadow:var(--pf-shadow-lift)}
body.senate main.pf .mobile-roster-toggle.pf-sheet-toggle b{color:var(--pf-on-strong)}
body.senate main.pf .mobile-roster-toggle.pf-sheet-toggle em{color:var(--pf-on-strong-2)}
body.senate main.pf .mobile-roster-toggle.pf-sheet-toggle span{color:var(--pf-on-strong-accent)}
body.senate main.pf .map-callouts{background:var(--pf-soft);border:1px solid var(--pf-rule)}
body.senate main.pf .map-callouts h3{color:var(--pf-text)}

/* ---------- Sign-in dialog ---------- */
body.senate .modal-backdrop{background:rgba(13,17,23,.45)}
body.senate .auth{background:var(--pf-card);color:var(--pf-text);border:0;border-radius:var(--pf-r-card);box-shadow:var(--pf-shadow-lift);font-family:var(--pf-body)}
body.senate .auth .eyebrow{font:700 11px/1.2 var(--pf-label);letter-spacing:.2em;text-transform:uppercase;color:var(--pf-accent-text)}
body.senate .auth h2{font:800 28px/1.1 var(--pf-display);letter-spacing:-.03em;color:var(--pf-text)}
body.senate .auth p,body.senate .auth .fine,body.senate .auth [role=status]{color:var(--pf-text-2)}
body.senate .auth label{color:var(--pf-text);font-weight:600}
body.senate .auth input{background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule);border-radius:var(--pf-r-control);min-height:48px;font:500 16px/1.3 var(--pf-body)}
body.senate .auth button{min-height:46px;border-radius:var(--pf-r-control);background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule);font-weight:600}
body.senate .auth button.primary{background:var(--pf-aqua);color:var(--pf-void);border-color:var(--pf-aqua);font-weight:700}
body.senate .auth .google{background:var(--pf-card);color:var(--pf-text)}
body.senate .auth .google:disabled{opacity:.55}
body.senate .auth .divider{color:var(--pf-text-2)}
body.senate .auth .divider::before,body.senate .auth .divider::after{background:var(--pf-rule)}
body.senate .auth .close{background:transparent;border:0;color:var(--pf-text-2);width:44px;height:44px}

/* ---------- Admin ---------- */
body.senate main.pf .admin-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:0 0 16px}
body.senate main.pf .admin-chip{background:var(--pf-card);border:0;border-radius:14px;box-shadow:var(--pf-shadow);padding:12px 14px}
body.senate main.pf .admin-chip span{display:block;font:700 10.5px/1.2 var(--pf-label);letter-spacing:.16em;text-transform:uppercase;color:var(--pf-text-2)}
body.senate main.pf .admin-chip strong{display:block;margin-top:6px;font:700 17px/1.2 var(--pf-body);font-variant-numeric:tabular-nums;color:var(--pf-text)}
body.senate main.pf .admin-chip.is-live{box-shadow:var(--pf-shadow),inset 0 4px 0 var(--pf-signal)}
body.senate main.pf .admin-chip.is-live strong{color:var(--pf-text)}
body.senate main.pf .admin-toolbar button,body.senate main.pf .admin-buttons button,body.senate main.pf .admin-slot-actions button{background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule)}
body.senate main.pf .admin-teams{padding:14px}
body.senate main.pf .admin-search input{background:var(--pf-card)}
body.senate main.pf .admin-team{background:var(--pf-card);color:var(--pf-text);border:0;border-bottom:1px solid var(--pf-rule);border-radius:10px;text-align:left}
body.senate main.pf .admin-team.is-open{background:var(--pf-up-bg);box-shadow:inset 4px 0 0 var(--pf-aqua-dark)}
body.senate main.pf .admin-team small,body.senate main.pf .admin-team-meta small{color:var(--pf-text-2)}
body.senate main.pf .admin-team em{font:700 11px/1 var(--pf-body);font-style:normal;padding:4px 8px;border-radius:var(--pf-r-pill);background:var(--pf-soft);color:var(--pf-text-2)}
body.senate main.pf .admin-team em.is-final{background:var(--pf-up-bg);color:var(--pf-aqua-dark)}
body.senate main.pf .admin-editor{padding:22px}
body.senate main.pf .admin-editor-head{border-bottom:1px solid var(--pf-rule)}
body.senate main.pf .admin-editor-head p{color:var(--pf-text-2)}
body.senate main.pf .admin-ceiling span{font:700 10.5px/1.2 var(--pf-label);letter-spacing:.16em;text-transform:uppercase;color:var(--pf-text-2)}
body.senate main.pf .admin-ceiling strong{font:700 32px/1 var(--pf-body);font-variant-numeric:tabular-nums;color:var(--pf-text)}
body.senate main.pf .admin-hint{color:var(--pf-text-2)}
body.senate main.pf .admin-slot{border-bottom:1px solid var(--pf-rule);background:transparent}
body.senate main.pf .admin-slot.is-mvp{background:transparent;box-shadow:inset 4px 0 0 var(--pf-marigold);padding-left:14px}
body.senate main.pf .admin-slot-line strong{font-family:var(--pf-display);color:var(--pf-text)}
body.senate main.pf .admin-slot-line em{color:var(--pf-text-2);font-style:normal}
body.senate main.pf .admin-slot-line span{color:var(--pf-text-2);font-variant-numeric:tabular-nums}
body.senate main.pf .admin-slot-line b{color:var(--pf-text)}
body.senate main.pf .admin-slot select{background:var(--pf-card);color:var(--pf-text)}
body.senate main.pf .admin-danger{background:var(--pf-warn-bg);border:1px solid var(--pf-warn-rule);border-radius:14px}
body.senate main.pf .admin-danger h3,body.senate main.pf .admin-danger span{color:var(--pf-text)}
body.senate main.pf .admin-danger p{color:var(--pf-text-2)}
body.senate main.pf .admin-danger button{background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-signal)}
body.senate main.pf .admin-audit{padding:18px}
body.senate main.pf .admin-audit *{color:var(--pf-text)}
body.senate main.pf .admin-audit small{color:var(--pf-text-2)}
body.senate main.pf .admin-empty{color:var(--pf-text-2)}
body.senate main.pf .journey-label{font:700 11px/1.2 var(--pf-label);letter-spacing:.18em;text-transform:uppercase;color:var(--pf-accent-text)}
body.senate main.pf .admin-slot.is-mvp .journey-label{color:var(--pf-text)}
body.senate main.pf .admin-buttons .journey-primary,body.senate main.pf .admin-toolbar .journey-primary{background:var(--pf-aqua);color:var(--pf-void);border-color:var(--pf-aqua);font-weight:700}
/* 44px minimum tap targets */
body.senate header nav button,body.senate header :is(#signin,#signout){min-height:44px}
body.senate main.pf .pf-rounds button{min-height:44px}
body.senate main.pf :is(#admin-reopen,#admin-clear-all),body.senate main.pf .admin-danger button{min-height:44px}
body.senate main.pf .pf-lockline{background:var(--pf-soft)!important;border:1px solid var(--pf-rule)!important;color:var(--pf-text-2)!important;border-radius:12px}
body.senate main.pf .pf-lockline b{color:var(--pf-text)!important;font-variant-numeric:tabular-nums}
body.senate main.pf .pf-count{white-space:nowrap}

/* ---------- Legibility pass (owner review 2026-10-05): larger small type, darker secondary text, readable map labels ---------- */
/* Labels (BN Bergen caps): 12-13px minimum */
body.senate header .brand small{font-size:11px}
body.senate main.pf .journey-heading .journey-label,body.senate main.pf .pf-kicker,body.senate main.pf .journey-label,body.senate main.pf .pf-rules-lead{font-size:13px}
body.senate main.pf .pf-kpi-l,body.senate main.pf .admin-chip span,body.senate main.pf .admin-ceiling span{font-size:12.5px}
body.senate main.pf .pf-list-head span{font-size:12.5px}
body.senate main.pf .pf-odds small,body.senate main.pf .pf-locked{font-size:11.5px;letter-spacing:.14em}
body.senate main.pf .pf-rounds button{font-size:13.5px}
body.senate main.pf .pf-pos{font-size:12px}
body.senate main.pf .pf-board-head{font-size:12px}
body.senate .pf-mode-badge{font-size:12px}
/* Body and caption sizes */
body.senate main.pf .pf-gameday-copy span{font-size:15px}
body.senate main.pf .pf-gameday-copy .pf-next{font-size:15.5px}
body.senate main.pf .pf-lock{font-size:15px;color:var(--pf-text-2)}
body.senate main.pf .pf-count{font-size:15px}
body.senate main.pf .pf-state{font-size:14px;color:var(--pf-text-2)}
body.senate main.pf .pf-flag{font-size:13px;padding:5px 9px}
body.senate main.pf .pf-stats li{font-size:14.5px}
body.senate main.pf .pf-kpi-s{font-size:14.5px}
body.senate main.pf .pf-move,body.senate main.pf .pf-change{font-size:14px}
body.senate main.pf .pick-movement{font-size:15px}
body.senate main.pf .pf-warn{font-size:13.5px}
body.senate main.pf .pf-lslot-pts small{font-size:13px}
body.senate main.pf .pf-lineup-ceiling span{font-size:15px}
body.senate main.pf .map-legend{font-size:15px;color:var(--pf-text-2)}
body.senate main.pf .map-intro p,body.senate main.pf .map-selection p,body.senate main.pf .map-summary-status{font-size:15.5px}
body.senate main.pf .map-callouts h3{font-size:15px}
body.senate main.pf .map-callouts button span{font-size:12.5px;opacity:1;color:var(--pf-text-2)}
body.senate main.pf .admin-team small,body.senate main.pf .admin-team-meta small{font-size:13.5px}
body.senate header .pf-account-email{font-size:14.5px}
/* Disabled small-state boxes stay readable (they mean "no race here") */
body.senate main.pf .map-callouts button:disabled{opacity:1;background:var(--pf-soft);color:var(--pf-text-3);border-style:dashed}
/* Map labels: sized in map units, Ink, heavy, with a white halo */
body.senate main.pf .map-state text{font:800 19px/1 var(--pf-body);fill:var(--pf-text);paint-order:stroke;stroke:var(--pf-halo);stroke-width:3px;stroke-linejoin:round;letter-spacing:.02em}
body.senate main.pf .map-state.no-race text{fill:var(--pf-map-muted);font-weight:700}
body.senate main.pf .map-state.is-selected text{fill:var(--pf-ink)}
body.senate main.pf .map-state:is(.is-close,.is-selected) text{fill:var(--pf-ink);stroke:rgba(255,255,255,.85)}
@media(max-width:760px){body.senate main.pf .map-state text{font-size:28px;stroke-width:4px}}

/* ---------- Editorial pass (owner review 2026-10-05): remove template tells ----------
   No eyebrows, no colored accent stripes, no wide-tracked caps, fewer pills, firmer headlines.
   Labels follow dashboard.predictable.media: Inter 600, sentence case, muted. */
/* Headlines */
body.senate main.pf h1{font:700 clamp(30px,3.2vw,40px)/1.08 var(--pf-display);letter-spacing:-.022em;max-width:none;margin:0 0 8px}
body.senate main.pf h2{font-weight:700;letter-spacing:-.012em}
body.senate main.pf .journey-heading{margin:4px 0 20px}
body.senate main.pf .journey-heading>p{font-size:17px;line-height:1.5;color:var(--pf-text-2);max-width:62ch}
body.senate main.pf .pf-roundof{color:var(--pf-text);font-weight:600}
body.senate main.pf .pf-oneline{font-size:min(1em,5.9vw)}
/* Labels: Inter, sentence case, no letterspacing */
body.senate main.pf :is(.pf-kpi-l,.admin-chip span,.admin-ceiling span,.pf-list-head span,.pf-odds small,.pf-locked,.pf-rules-lead,.journey-label){font:600 13.5px/1.3 var(--pf-body);letter-spacing:0;text-transform:none;color:var(--pf-text-2)}
body.senate main.pf .pf-odds small,body.senate main.pf .pf-locked{font-size:13px;margin-top:3px}
body.senate main.pf .pf-rules-lead{font-size:16px;color:var(--pf-text);margin-bottom:6px}
/* Table headers stay small caps, tight tracking (dashboard th) */
body.senate main.pf .pf-board-head{font:600 12px/1.2 var(--pf-body);letter-spacing:.05em;text-transform:uppercase;color:var(--pf-text-2)}
/* Status strip: one quiet row, state carried by a dot and words, no colored stripe */
body.senate main.pf .pf-gameday,body.senate main.pf .pf-gameday.is-practice,body.senate main.pf .pf-gameday.is-open,body.senate main.pf .pf-gameday.is-locked{border-left:0;box-shadow:none;border:1px solid var(--pf-rule);border-radius:12px;padding:12px 16px;background:var(--pf-card)}
body.senate main.pf .pf-gameday-copy strong{font:600 15.5px/1.35 var(--pf-body);display:inline-flex;align-items:center;gap:8px}
body.senate main.pf .pf-gameday-copy strong::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--pf-aqua-dark);flex:0 0 8px}
body.senate main.pf .pf-gameday.is-practice .pf-gameday-copy strong::before{background:#C9A400}
body.senate main.pf .pf-gameday.is-locked .pf-gameday-copy strong::before{background:var(--pf-text)}
body.senate main.pf .pf-count{background:transparent;border:0;padding:0;font-weight:700;color:var(--pf-text)}
body.senate main.pf .pf-lock.is-urgent .pf-count{background:var(--pf-signal);color:var(--pf-void);padding:4px 8px;border-radius:6px}
/* Cards: one construction, no accent bars */
body.senate main.pf .pf-choice-main,body.senate main.pf .pf-choice-alt{border-top:0}
body.senate main.pf .pf-choice-alt{background:var(--pf-soft);box-shadow:none;border:1px solid var(--pf-rule)}
body.senate main.pf .pf-kpi{box-shadow:var(--pf-shadow)}
body.senate main.pf .pf-kpi.is-mvp,body.senate main.pf .pf-kpi.is-warn{box-shadow:var(--pf-shadow)}
body.senate main.pf .pf-kpi-v{font-size:28px;margin-top:6px}
body.senate main.pf .pf-kpi.is-mvp .pf-kpi-v{font:600 19px/1.3 var(--pf-body)}
body.senate main.pf .pf-kpi.is-warn .pf-kpi-v{color:var(--pf-text)}
body.senate main.pf .review-panel.is-locked{box-shadow:var(--pf-shadow)}
/* Facts as text, not chips */
body.senate main.pf .pf-stats{display:block;margin:6px 0 0;padding:0}
body.senate main.pf .pf-stats li{display:inline!important;background:none!important;border:0!important;padding:0!important;font:400 14.5px/1.5 var(--pf-body)!important;color:var(--pf-text-2)!important}
body.senate main.pf .pf-stats li+li::before{content:" \00B7  ";color:#9AA0A8}
@media(max-width:560px){body.senate main.pf .pf-stats li:nth-child(n+2){display:none!important}}
/* Tags: small, squared, only where they carry meaning */
body.senate main.pf .pf-flag{border-radius:4px;padding:3px 7px;font:600 12.5px/1.2 var(--pf-body);border:0;background:var(--pf-soft);color:var(--pf-text-2)}
body.senate main.pf .pf-flag-close{background:#FBF1A9;color:var(--pf-ink)}
body.senate main.pf .pf-party{border-radius:4px;min-width:22px;height:22px;font:700 12px/1 var(--pf-body)}
body.senate .pf-mode-badge{font:600 13px/1 var(--pf-body);letter-spacing:0;text-transform:none;border-radius:6px;padding:6px 9px;background:#FBF1A9}
body.senate main.pf .pf-mvp-tag{border-radius:4px;font:600 12px/1.2 var(--pf-body);padding:3px 7px;background:#FBF1A9}
/* Candidate rows: compact, data-forward */
body.senate main.pf .pf-row{border-radius:12px;box-shadow:0 1px 2px rgba(16,24,40,.05);border:1px solid var(--pf-rule)}
body.senate main.pf .pf-row:hover:not(.is-off){border-color:var(--pf-rule-hover);box-shadow:0 1px 2px rgba(16,24,40,.05)}
body.senate main.pf .pf-row h3{font:700 19px/1.2 var(--pf-display);letter-spacing:-.01em}
body.senate main.pf .pf-pay .pf-pts b,body.senate main.pf .pf-pts b{font:700 26px/1 var(--pf-body);letter-spacing:-.015em}
body.senate main.pf .pf-add{border-radius:8px!important;min-height:44px;padding:0 18px;font:600 15px/1 var(--pf-body)}
body.senate main.pf .pf-prob{height:4px;border-radius:2px}
body.senate main.pf .pf-prob i{border-radius:2px;background:var(--pf-aqua-dark)}
/* Round selector: plain tabs */
body.senate main.pf .pf-rounds{box-shadow:none;border:1px solid var(--pf-rule);border-radius:10px}
body.senate main.pf .pf-rounds button{font:600 14px/1 var(--pf-body);letter-spacing:.01em;border-radius:7px}
body.senate main.pf .pf-rounds button.is-done{background:transparent;color:var(--pf-accent-text)}
body.senate main.pf .pf-rounds button.is-done::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--pf-aqua-dark);margin-left:6px;vertical-align:2px}
/* Lineup rail: slot names as text, MVP as the only colored marker */
body.senate main.pf .pf-pos{background:transparent;border:0;font:600 12.5px/1 var(--pf-body);letter-spacing:.04em;color:var(--pf-text-2);padding:0}
body.senate main.pf .is-mvp .pf-pos{background:#FBF1A9;color:var(--pf-ink);border-radius:4px;padding:4px 6px}
body.senate main.pf .pf-lslot.is-now>button[data-round]{background:var(--pf-soft);box-shadow:inset 3px 0 0 var(--pf-text)}
body.senate main.pf .pf-lslot.is-mvp>button[data-round]{box-shadow:none}
body.senate main.pf .pf-lslot.is-now.is-mvp>button[data-round]{box-shadow:inset 3px 0 0 var(--pf-text)}
body.senate main.pf .pf-lslot.is-now .pf-lslot-who strong.is-open{color:var(--pf-text)}
body.senate main.pf .pf-slip-row.is-mvp{box-shadow:none}
body.senate main.pf .pf-progress{height:6px;border-radius:3px}
body.senate main.pf .pf-progress i{border-radius:3px;background:var(--pf-aqua-dark)}
body.senate main.pf .pf-lineup-ceiling{background:transparent;border:0;border-top:1px solid var(--pf-rule);border-bottom:1px solid var(--pf-rule);border-radius:0;padding:12px 2px}
/* How it works: plain numbered list, no leading zeros, no tinted callout */
body.senate main.pf .pf-rulelist li::before{content:counter(rule) ".";font:600 15px/1.5 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-rulelist li{grid-template-columns:26px 1fr}
body.senate main.pf .pf-scoreline{background:transparent;border-top:1px solid var(--pf-rule);border-radius:0;padding:14px 0 0;color:var(--pf-text-2)}
/* Leaderboard */
body.senate main.pf .pf-board-row.is-top .pf-rank{background:transparent;color:var(--pf-text);padding:0;min-width:0;height:auto;font-weight:700}
body.senate main.pf .pf-board-row.is-mine{background:var(--pf-mine-bg);box-shadow:inset 3px 0 0 var(--pf-aqua-dark)}
body.senate main.pf .pf-change,body.senate main.pf .pf-move{border-radius:4px;padding:3px 7px}
/* Map: static markers, no pulse */
body.senate main.pf .map-close-pin .pin-pulse{display:none}
body.senate main.pf .map-close-pin circle{stroke-width:2.5px}
/* Header: active tab in Ink, others quiet */
body.senate header nav button{box-shadow:none;border:1px solid transparent;background:transparent;color:var(--pf-text-2)}
body.senate header nav button:hover{background:var(--pf-card);color:var(--pf-text)}
body.senate header nav button[aria-current=page]{background:var(--pf-strong);color:var(--pf-on-strong)}

/* ---------- Official Rules page and footer ---------- */
body.senate main.pf .pf-legal{background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:12px;padding:24px clamp(18px,4vw,36px);max-width:860px}
body.senate main.pf .pf-legal-draft{background:#FBF1A9;color:var(--pf-ink);border-radius:8px;padding:10px 14px;font-weight:600;margin:0 0 16px}
body.senate main.pf .pf-legal-toc{display:flex;flex-wrap:wrap;gap:6px 18px;padding:0 0 14px;border-bottom:1px solid var(--pf-rule);margin:0 0 6px}
body.senate main.pf .pf-legal-toc a{font-weight:600;text-decoration:none;color:var(--pf-accent-text);min-height:44px;display:inline-flex;align-items:center}
body.senate main.pf .pf-legal section{padding:18px 0 4px;border-bottom:1px solid var(--pf-rule);scroll-margin-top:12px}
body.senate main.pf .pf-legal section:last-child{border-bottom:0}
body.senate main.pf .pf-legal h2{font-size:22px;margin:0 0 10px}
body.senate main.pf .pf-legal h3{font:600 16px/1.3 var(--pf-body);margin:14px 0 6px}
body.senate main.pf .pf-legal p,body.senate main.pf .pf-legal li{font-size:15.5px;line-height:1.6;color:var(--pf-text);max-width:70ch}
body.senate main.pf .pf-legal-list{padding-left:22px;margin:0 0 10px}
body.senate main.pf .pf-legal-list li{margin:6px 0}
body.senate main.pf .pf-counsel{display:inline-block;background:#FBF1A9;color:var(--pf-ink);border-radius:4px;padding:0 6px;font:600 12.5px/1.6 var(--pf-body);vertical-align:1px}
body.senate main.pf .pf-rules-link{margin:14px 0 0}
body.senate .pf-footer{max-width:1240px;margin:0 auto;padding:8px 24px 96px;color:var(--pf-text-2);font-size:14.5px;border-top:1px solid var(--pf-rule)}
/* Footer (owner review 2026-10-12): note on the left, links on the right; every link is the same inline-flex box so
   buttons and anchors line up; no dot separators (they dangled when the row wrapped on phones). */
body.senate .pf-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 32px}
body.senate .pf-footer p{margin:0}
body.senate .pf-footer .pf-foot-note{padding:12px 0;text-wrap:balance}
body.senate .pf-footlinks{display:flex;flex-wrap:wrap;align-items:center;gap:0 24px}
body.senate .pf-foot-contact{display:inline-flex;align-items:center;gap:6px}
body.senate .pf-footer .pf-footlink{display:inline-flex;align-items:center;background:none;border:0;padding:0;min-height:44px;font:600 14.5px/1 var(--pf-body);color:var(--pf-accent-text);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
@media(max-width:760px){body.senate .pf-footer{flex-direction:column;align-items:flex-start;gap:0}body.senate .pf-footlinks{gap:0 20px}body.senate .pf-foot-contact{flex-basis:100%;flex-wrap:wrap;gap:0 6px}}
@media(max-width:760px){body.senate .pf-footer{padding:8px 16px 104px}}

/* ---------- Leaderboard: player names and expandable teams ---------- */
body.senate main.pf .pf-board-team{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"team caret";align-items:center;gap:2px 10px;width:100%;min-height:44px;padding:4px 0;background:none;border:0;border-radius:6px;text-align:left;color:var(--pf-text);cursor:pointer}
body.senate main.pf .pf-board-team strong{grid-area:team;font:700 16.5px/1.25 var(--pf-display);overflow-wrap:anywhere}
body.senate main.pf .pf-board-caret{grid-area:caret;width:10px;height:10px;border-right:2px solid var(--pf-text-2);border-bottom:2px solid var(--pf-text-2);transform:rotate(45deg) translateY(-3px);transition:transform .2s}
body.senate main.pf .pf-board-row.is-open .pf-board-caret{transform:rotate(-135deg) translateY(-2px)}
body.senate main.pf .pf-board-team:hover strong{text-decoration:underline;text-underline-offset:3px}
body.senate main.pf .pf-board-row.is-open{border-bottom-color:transparent;background:var(--pf-soft)}
body.senate main.pf .pf-board-picks{display:block;background:var(--pf-soft);border-bottom:1px solid var(--pf-rule);padding:4px 16px 18px}
body.senate main.pf .pf-team-strip{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px}
body.senate main.pf .pf-team-strip li{display:grid;justify-items:center;text-align:center;gap:3px;background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:10px;padding:10px 6px;min-width:0}
body.senate main.pf .pf-team-strip li.is-mvp{border-color:#E8D45A;box-shadow:inset 0 0 0 1px #E8D45A}
body.senate main.pf .pf-strip-photo{width:52px;height:52px;border-radius:50%;object-fit:cover;background:var(--pf-soft);box-shadow:0 0 0 1px var(--pf-rule)}
body.senate main.pf .pf-strip-photo.pf-avatar{display:grid;place-items:center;font:700 15px/1 var(--pf-body)}
body.senate main.pf .pf-strip-slot{font:600 12px/1 var(--pf-body);letter-spacing:.04em;color:var(--pf-text-2);margin-top:4px}
body.senate main.pf .pf-team-strip li.is-mvp .pf-strip-slot{background:#FBF1A9;color:var(--pf-ink);border-radius:4px;padding:3px 6px}
body.senate main.pf .pf-team-strip strong{font:700 13.5px/1.25 var(--pf-body);overflow-wrap:anywhere}
body.senate main.pf .pf-strip-meta{display:inline-flex;align-items:center;gap:4px;font:600 12.5px/1 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-strip-meta .pf-party{min-width:18px;height:18px;font-size:11px}
body.senate main.pf .pf-strip-price{font:500 12.5px/1.3 var(--pf-body);font-variant-numeric:tabular-nums;color:var(--pf-text-2)}
@media(max-width:1100px){body.senate main.pf .pf-team-strip{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:560px){body.senate main.pf .pf-team-strip{grid-template-columns:repeat(2,minmax(0,1fr))}body.senate main.pf .pf-board-picks{padding:4px 10px 14px}}
/* Email opt-in */
body.senate main.pf .pf-consent{margin-top:10px;background:var(--pf-card)}
body.senate main.pf .pf-consent-note{margin:6px 0 0!important;font-size:14px}

/* Loading state (first paint and signed-in account load) */
body.senate .pf-loading{display:flex;align-items:center;justify-content:center;gap:12px;min-height:50vh;color:var(--pf-text-2);font:500 17px/1.4 var(--pf-body)}
body.senate .pf-loading p{margin:0}
body.senate .pf-spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--pf-rule);border-top-color:var(--pf-accent-text);animation:pf-spin .8s linear infinite}
@keyframes pf-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){body.senate .pf-spinner{animation:none}}


/* Dark mode support (2026-10-06): logo, theme switch */
body.senate header .brand img{filter:var(--pf-logo-filter)}
body.senate header .pf-theme{display:inline-grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border-radius:var(--pf-r-pill);background:var(--pf-card);color:var(--pf-text);border:1px solid var(--pf-rule);cursor:pointer;flex:0 0 auto}
body.senate header .pf-theme:hover{border-color:var(--pf-text)}
body.senate header .pf-theme svg{width:18px;height:18px;display:block}
body.senate header .pf-headend{grid-area:account;justify-self:end;display:flex;align-items:center;gap:8px}
/* Homepage (2026-10-06): marketing landing page, default for new visitors. Tokens only, so dark mode works. */
body.senate main.pf.is-home{padding-top:8px}
body.senate main.pf .pf-home-hero{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(24px,4vw,56px);align-items:center;margin:8px 0 8px}
body.senate main.pf .pf-home-hero h1{font:700 clamp(40px,5.6vw,64px)/1.02 var(--pf-display);letter-spacing:-.02em;color:var(--pf-text);margin:0 0 18px}
body.senate main.pf .pf-home-lead{font:400 clamp(18px,1.6vw,21px)/1.5 var(--pf-body);color:var(--pf-text-2);margin:0 0 26px;max-width:34em}
body.senate main.pf .pf-home-cta{display:flex;flex-wrap:wrap;gap:12px}
body.senate main.pf .pf-home-cta button{min-height:52px;padding:0 24px;border-radius:var(--pf-r-pill);font-size:16px}
body.senate main.pf .pf-home-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:20px 0 0;color:var(--pf-text-2);font:500 15.5px/1.4 var(--pf-body)}
body.senate main.pf .pf-home-meta .pf-count{background:var(--pf-soft);border:1px solid var(--pf-rule);border-radius:var(--pf-r-pill);padding:6px 12px}
body.senate main.pf .pf-home-stat b{color:var(--pf-text);font-variant-numeric:tabular-nums}
body.senate main.pf .pf-home-figure{margin:0}
body.senate main.pf .pf-home-figure figcaption{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:6px;color:var(--pf-text-2);font:500 14.5px/1.4 var(--pf-body)}
/* Homepage image (owner, 2026-10-09): one image per visit; each slide's background was recolored to the page color in
   both themes (scripts/build-hero-images.py), and the left edge fades into the page so no cut line shows. */
body.senate main.pf .pf-hero-art{position:relative;aspect-ratio:1300/870;overflow:hidden;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 16%);mask-image:linear-gradient(to right,transparent 0,#000 16%)}
body.senate main.pf .pf-hero-slide{position:absolute;inset:0;background:var(--hl) center/cover no-repeat;display:none}
/* One image per visit: slide 4 by default; theme-init.js sets html[data-hero] to 1, 2 or 4. Hidden slides do not load. */
body.senate main.pf .pf-hero-slide[data-slide="4"],html[data-hero="1"] body.senate main.pf .pf-hero-slide[data-slide="1"],html[data-hero="2"] body.senate main.pf .pf-hero-slide[data-slide="2"]{display:block}
html[data-hero="1"] body.senate main.pf .pf-hero-slide[data-slide="4"],html[data-hero="2"] body.senate main.pf .pf-hero-slide[data-slide="4"]{display:none}
@media (prefers-color-scheme:dark){html:not([data-theme=light]) body.senate main.pf .pf-hero-slide{background-image:var(--hd)}}
html[data-theme=dark] body.senate main.pf .pf-hero-slide{background-image:var(--hd)}
@media (max-width:900px){
 body.senate main.pf .pf-hero-art{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 6%);mask-image:linear-gradient(to right,transparent 0,#000 6%)}
 body.senate main.pf .pf-hero-slide{background-image:var(--hls)}
 @media (prefers-color-scheme:dark){html:not([data-theme=light]) body.senate main.pf .pf-hero-slide{background-image:var(--hds)}}
 html[data-theme=dark] body.senate main.pf .pf-hero-slide{background-image:var(--hds)}
}

body.senate main.pf .pf-home-section{margin-top:56px;padding-top:28px;border-top:1px solid var(--pf-rule)}
body.senate main.pf .pf-home-section h2{font:700 clamp(26px,2.6vw,32px)/1.15 var(--pf-display);letter-spacing:-.01em;color:var(--pf-text);margin:0 0 20px}
body.senate main.pf .pf-home-steps{list-style:none;counter-reset:step;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:0}
body.senate main.pf .pf-home-steps li{counter-increment:step;display:grid;gap:8px;align-content:start;background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card);padding:20px 22px}
body.senate main.pf .pf-home-steps li::before{content:counter(step);font:700 34px/1 var(--pf-display);color:var(--pf-accent-text)}
body.senate main.pf .pf-home-steps b{font:700 18px/1.3 var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-home-steps span{font:400 16px/1.5 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-home-split{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px;align-items:start}
body.senate main.pf .pf-home-points{margin:0;padding:0 0 0 20px;display:grid;gap:12px;font:400 17px/1.5 var(--pf-body);color:var(--pf-text)}
body.senate main.pf .pf-home-points li::marker{color:var(--pf-accent-text)}
body.senate main.pf .pf-home-example{background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card);padding:20px 22px}
body.senate main.pf .pf-home-example h3{font:700 19px/1.3 var(--pf-display);color:var(--pf-text);margin:0 0 10px}
body.senate main.pf .pf-home-example p{font:400 16px/1.5 var(--pf-body);color:var(--pf-text-2);margin:0 0 10px}
body.senate main.pf .pf-home-example button{margin-top:6px}
body.senate main.pf .pf-home-prizes{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:0}
body.senate main.pf .pf-home-prizes li{display:grid;gap:6px;justify-items:start;background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card);padding:20px 22px}
body.senate main.pf .pf-home-place{font:600 14.5px/1.3 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-home-prizes b{font:700 24px/1.2 var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-home-note{margin:14px 0 0;color:var(--pf-text-2);font:400 15.5px/1.5 var(--pf-body)}
body.senate main.pf .pf-home-dates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0}
body.senate main.pf .pf-home-dates div{background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card);padding:18px 20px}
body.senate main.pf .pf-home-dates dt{font:600 14.5px/1.3 var(--pf-body);color:var(--pf-text-2);margin:0 0 6px}
body.senate main.pf .pf-home-dates dd{font:700 17px/1.35 var(--pf-display);color:var(--pf-text);margin:0}
body.senate main.pf .pf-home-faq{border-top:1px solid var(--pf-rule);max-width:820px}
body.senate main.pf .pf-home-faq details{border-bottom:1px solid var(--pf-rule)}
body.senate main.pf .pf-home-faq summary{display:flex;align-items:center;min-height:56px;cursor:pointer;font:600 17px/1.35 var(--pf-body);color:var(--pf-text);list-style:none}
body.senate main.pf .pf-home-faq summary::-webkit-details-marker{display:none}
body.senate main.pf .pf-home-faq summary::after{content:"+";margin-left:auto;padding-left:16px;font:500 22px/1 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-home-faq details[open] summary::after{content:"−"}
body.senate main.pf .pf-home-faq p{margin:0 0 18px;font:400 16px/1.55 var(--pf-body);color:var(--pf-text-2);max-width:44em}
body.senate main.pf .pf-home-rules{margin:20px 0 0}
body.senate main.pf .pf-home-band{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;margin:56px 0 8px;padding:24px 26px;background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card)}
body.senate main.pf .pf-home-band p{margin:0;font:400 17px/1.5 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-home-band b{color:var(--pf-text)}
@media(max-width:900px){
 body.senate main.pf .pf-home-hero,body.senate main.pf .pf-home-split{grid-template-columns:1fr}
 body.senate main.pf .pf-home-figure{max-width:none}
 body.senate main.pf .pf-home-steps,body.senate main.pf .pf-home-prizes{grid-template-columns:1fr}
 body.senate main.pf .pf-home-dates{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:560px){
 body.senate main.pf .pf-home-section{margin-top:40px;padding-top:24px}
 body.senate main.pf .pf-home-cta button{flex:1 1 100%}
 body.senate main.pf .pf-home-dates{grid-template-columns:1fr}
}
body.senate main.pf .pf-home-prize-detail{font:400 15px/1.5 var(--pf-body);color:var(--pf-text-2)}
/* Small-state boxes: center the state code in its box (Stu/owner review 2026-10-07). */
body.senate main.pf .map-callouts button{justify-content:center;text-align:center}
body.senate main.pf .map-callouts button strong{min-width:0}
body.senate main.pf .pf-home-prize-lead{margin:0 0 14px;font:400 17px/1.5 var(--pf-body);color:var(--pf-text)}
body.senate .auth .pf-turnstile{min-height:65px;margin:10px 0}
/* Draft banner on the rules page: dark text on the yellow note in both themes (owner review 2026-10-07, dark mode). */
body.senate main.pf .pf-legal p.pf-legal-draft,body.senate main.pf p.pf-legal-draft{color:var(--pf-ink)}
/* Page color fills the whole window (short pages and the loading screen). */
body.senate{min-height:100vh}
/* Invite-only notice (signed in, not on the list) and link-styled buttons in the app. */
body.senate main.pf a.pf-btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;min-height:52px;padding:0 24px;border-radius:var(--pf-r-pill);font:700 16px/1.2 var(--pf-body);text-decoration:none}
body.senate main.pf a.pf-btn.pf-secondary{font-weight:600}
body.senate main.pf .pf-invite-note{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;margin:0 0 20px;padding:16px 18px;background:var(--pf-card);border:1px solid var(--pf-rule);border-left:4px solid var(--pf-aqua-dark);border-radius:var(--pf-r-control);color:var(--pf-text)}
body.senate main.pf .pf-invite-note p{margin:0;max-width:62ch;font:400 15.5px/1.5 var(--pf-body)}
body.senate main.pf .admin-invites{margin-top:28px;padding:20px 22px;background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card)}
body.senate main.pf .admin-invites h2{margin:0 0 8px;font:700 22px/1.2 var(--pf-display);color:var(--pf-text)}
body.senate main.pf .admin-invites p{color:var(--pf-text-2)}
body.senate main.pf .admin-invite-list{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px}
body.senate main.pf .admin-invite-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--pf-rule);border-radius:10px;background:var(--pf-soft)}
body.senate main.pf .admin-invite-list strong{color:var(--pf-text);overflow-wrap:anywhere}
body.senate main.pf .admin-invite-list span{color:var(--pf-text-2);margin-left:6px}
body.senate main.pf .admin-invite-list small{display:block;color:var(--pf-text-2);margin-top:2px}
body.senate main.pf .admin-reset-all{margin-top:20px;padding:18px 20px;display:grid;gap:10px}
body.senate main.pf .admin-reset-all label{display:grid;gap:6px;color:var(--pf-text);font-weight:600}

/* ---------- Tester feedback 2026-10-11: phone widths, refresh note, free line ---------- */
/* Long team names wrap between words. "anywhere" let a squeezed column shrink to one letter per line. */
body.senate main.pf :is(.pf-slip-head h2,.pf-board-row strong,.pf-board-team strong){overflow-wrap:break-word}
/* Team card: the name gets its own line when the score does not fit beside it. */
body.senate main.pf .pf-slip-head{flex-wrap:wrap}
body.senate main.pf .pf-slip-head>div:first-child{flex:1 1 14rem;min-width:0}
body.senate main.pf .pf-phone-only{display:none}
@media(max-width:560px){
 body.senate main.pf .pf-ceiling{text-align:left}
 /* Leaderboard: rank, then the full team name; score and change on a second line under the name. */
 body.senate main.pf .pf-board-head,body.senate main.pf .pf-board-row{grid-template-columns:36px minmax(0,1fr) auto;gap:2px 10px;padding:10px 12px}
 body.senate main.pf .pf-board-head{grid-template-areas:"rank team change"}
 body.senate main.pf .pf-board-head>:nth-child(3){display:none}
 body.senate main.pf .pf-board-head>:nth-child(4){grid-area:change}
 body.senate main.pf .pf-phone-only{display:inline}
 body.senate main.pf .pf-board-row{grid-template-areas:"rank team team" "rank score change"}
 body.senate main.pf .pf-board-row>:nth-child(1){grid-area:rank;align-self:center}
 body.senate main.pf .pf-board-row>:nth-child(2){grid-area:team}
 body.senate main.pf .pf-board-row>b:nth-child(3){grid-area:score;justify-self:start;text-align:left;font-size:18px}
 body.senate main.pf .pf-board-row>:nth-child(4){grid-area:change;justify-self:end}
}
body.senate main.pf .pf-refresh-note{margin:8px 0 0;color:var(--pf-text-2);font-size:14px}
body.senate main.pf .pf-home-free{margin:12px 0 0;font:600 15px/1.4 var(--pf-body);color:var(--pf-text-2)}
/* Very narrow phones (320px, Display Zoom): the header label must not run under the theme button. */
@media(max-width:374px){body.senate header .brand{min-width:0}body.senate header .brand small{letter-spacing:.06em;white-space:normal}}
/* Accessibility audit (axe-core WCAG 2.1 AA, 2026-10-11): opacity on top of muted text colors failed contrast.
   Unavailable candidates keep the dashed border and a faded photo; their text stays readable. */
body.senate main.pf .pf-row.is-off .pf-who{opacity:1}
body.senate main.pf .pf-row.is-off :is(.pf-photo,.pf-avatar,.pf-who img){opacity:.55}
body.senate main.pf .pf-row.is-off h3{color:var(--pf-text-2)}
body.senate main.pf .pf-sheet-toggle em{opacity:1}

/* Team form hints (owner, 2026-10-12): short, small and quiet, for anyone who wants them; not a block to read. */
body.senate main.pf .pf-form p{font-size:13px;line-height:1.45;margin:6px 0 0;color:var(--pf-text-2)}
body.senate main.pf .pf-form label+p{margin-bottom:4px}
body.senate main.pf .pf-form p+label{margin-top:16px}

/* Predictable team (owner, 2026-10-12): the bright green Predictable mark on an ink tile marks team members' rows,
   which have no rank number. The ink tile keeps the bright green visible in light and dark. */
body.senate main.pf .pf-house-badge{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#0D1117;box-shadow:0 0 0 1px rgba(5,221,165,.35);vertical-align:middle}
body.senate main.pf .pf-house-badge::before{content:"";width:22px;height:17px;background:#05DDA5;-webkit-mask:url(/assets/mark-ink.svg) center/contain no-repeat;mask:url(/assets/mark-ink.svg) center/contain no-repeat}
body.senate main.pf .pf-house-note{display:block;margin-top:2px;font:600 12px/1.3 var(--pf-body);color:var(--pf-accent-text)}
body.senate main.pf .pf-picks-hidden{margin:8px 0 4px;font-weight:600}
body.senate main.pf .pf-kpi.is-house{box-shadow:inset 3px 0 0 #05DDA5}

/* Challenge a friend (owner, 2026-10-12): the card after submit and the banner a friend sees. */
body.senate main.pf .pf-challenge{margin:0 0 20px;padding:20px 22px;border:2px solid #05DDA5;border-radius:14px;background:var(--pf-card)}
body.senate main.pf .pf-challenge h2{margin:0 0 6px;font:700 20px/1.25 var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-challenge p{margin:0 0 14px;color:var(--pf-text-2)}
body.senate main.pf .pf-challenge-actions{display:flex;flex-wrap:wrap;gap:10px}
body.senate main.pf .pf-challenge-actions button{min-height:48px;padding:0 20px}
body.senate main.pf .pf-challenge-link{margin:12px 0 0!important;font:500 13px/1.4 var(--pf-body);color:var(--pf-text-2);overflow-wrap:anywhere;user-select:all}
body.senate main.pf .pf-challenge .pf-quiet:empty{display:none}
body.senate main.pf .pf-challenge-banner{display:grid;gap:2px;margin:0 0 18px;padding:12px 14px;border-radius:12px;background:var(--pf-up-bg);box-shadow:inset 4px 0 0 #05DDA5}
body.senate main.pf .pf-challenge-banner strong{font:700 16px/1.3 var(--pf-body);color:var(--pf-text)}
body.senate main.pf .pf-challenge-banner span{font-size:14px;color:var(--pf-text-2)}
@media(max-width:560px){body.senate main.pf .pf-challenge-actions button{flex:1 1 100%}}
/* Signup copy and layout (owner review 2026-10-12): a contained hero panel with clear hierarchy (pill, headline with one
   accent word, short lead, buttons, one prize line, deadline chips), then benefit cards and user quotes. The panel stays
   on the page color, because the hero image background is recolored to the page color; only the copy side gets a glow. */
body.senate main.pf .pf-home-hero{position:relative;padding:clamp(28px,4.5vw,64px);border:1px solid var(--pf-rule);border-radius:28px;background:radial-gradient(120% 90% at 0% 0%,color-mix(in srgb,var(--pf-aqua) 13%,transparent) 0,transparent 55%),var(--pf-page);box-shadow:var(--pf-shadow);margin:8px 0 0}
body.senate main.pf .pf-home-copy{display:flex;flex-direction:column;align-items:flex-start}
body.senate main.pf .pf-home-pill{display:inline-flex;align-items:center;gap:8px;margin:0 0 22px;padding:7px 14px 7px 10px;border:1px solid var(--pf-rule-strong);border-radius:var(--pf-r-pill);background:var(--pf-card);font:600 14px/1.2 var(--pf-body);color:var(--pf-text)}
body.senate main.pf .pf-home-pill svg{width:18px;height:18px;color:var(--pf-accent-text);flex:none}
body.senate main.pf .pf-home-hero h1{margin:0 0 20px}
body.senate main.pf .pf-h1-accent{color:var(--pf-accent-text)}
body.senate main.pf .pf-home-hero .pf-home-lead{margin:0 0 30px;max-width:30em}
body.senate main.pf .pf-home-prizeline{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 6px;margin:26px 0 0;padding-top:20px;border-top:1px solid var(--pf-rule);font:500 15.5px/1.4 var(--pf-body);color:var(--pf-text-2);align-self:stretch}
body.senate main.pf .pf-home-prizeline-amt{font:700 26px/1 var(--pf-display);color:var(--pf-text);letter-spacing:-.01em}
body.senate main.pf .pf-home-hero .pf-home-meta{margin:16px 0 0}
body.senate main.pf .pf-home-hero .pf-home-meta>span:not(.pf-count){background:var(--pf-soft);border:1px solid var(--pf-rule);border-radius:var(--pf-r-pill);padding:6px 12px;font-size:14.5px}
body.senate main.pf .pf-home-hero .pf-home-meta .pf-count{font-size:14.5px}
body.senate main.pf .pf-home-benefits{list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
body.senate main.pf .pf-home-benefits li{display:flex;align-items:center;gap:14px;background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card);padding:18px 20px;box-shadow:var(--pf-shadow)}
body.senate main.pf .pf-benefit-icon{display:inline-grid;place-items:center;width:44px;height:44px;flex:none;border-radius:12px;background:var(--pf-mine-bg);color:var(--pf-accent-text)}
body.senate main.pf .pf-benefit-icon svg{width:22px;height:22px}
body.senate main.pf .pf-home-benefits b{display:block;font:700 16px/1.3 var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-home-benefits li>span:last-child>span{display:block;font:400 14.5px/1.4 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-home-proof{margin-top:56px}
body.senate main.pf .pf-home-proof h2{margin:0 0 16px;font:700 clamp(24px,2.4vw,30px)/1.2 var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-quotes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
body.senate main.pf .pf-quote{margin:0;display:grid;gap:14px;align-content:space-between;background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card);padding:22px 22px 20px}
body.senate main.pf .pf-quote blockquote{margin:0}
body.senate main.pf .pf-quote blockquote p{margin:0;font:600 17px/1.45 var(--pf-display);color:var(--pf-text)}
body.senate main.pf .pf-quote figcaption{font:600 14.5px/1.3 var(--pf-body);color:var(--pf-accent-text)}
@media(max-width:1100px){body.senate main.pf .pf-home-benefits{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){body.senate main.pf .pf-quotes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){
 body.senate main.pf .pf-home-hero{padding:24px 20px;border-radius:22px}
 body.senate main.pf .pf-home-hero h1{font-size:38px}
 body.senate main.pf .pf-home-pill{margin-bottom:18px}
 body.senate main.pf .pf-home-hero .pf-home-lead{margin-bottom:24px}
 body.senate main.pf .pf-home-cta{align-self:stretch}
 body.senate main.pf .pf-home-benefits{gap:10px;margin-top:12px}
 body.senate main.pf .pf-home-benefits li{flex-direction:column;align-items:flex-start;gap:10px;padding:14px}
 body.senate main.pf .pf-benefit-icon{width:38px;height:38px;border-radius:10px}
 body.senate main.pf .pf-home-benefits b{font-size:15px}
 body.senate main.pf .pf-home-benefits li>span:last-child>span{font-size:13.5px}
 body.senate main.pf .pf-quotes{grid-template-columns:1fr;gap:12px}
 body.senate main.pf .pf-quote{padding:18px}
 body.senate main.pf .pf-quote.is-extra{display:none}
 body.senate main.pf .pf-home-proof{margin-top:40px}
}
/* About page eyebrow (shared with the old homepage eyebrow style). */
body.senate main.pf .pf-home-eyebrow{margin:0 0 10px;font:700 13px/1.3 var(--pf-body);letter-spacing:.08em;text-transform:uppercase;color:var(--pf-accent-text)}
body.senate main.pf .pf-home-score-lead{margin:-4px 0 16px;font:400 17px/1.5 var(--pf-body);color:var(--pf-text-2)}
/* About page (/about/, 2026-10-12): reuses the homepage type; narrow measure for reading. */
body.senate main.pf .pf-about{max-width:46rem}
body.senate main.pf .pf-about-hero h1{font:700 clamp(36px,5vw,56px)/1.05 var(--pf-display);letter-spacing:-.02em;color:var(--pf-text);margin:0 0 16px}
body.senate main.pf .pf-about p:not(.pf-home-eyebrow){font:400 17px/1.6 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-about h2{font:700 24px/1.2 var(--pf-display);color:var(--pf-text);margin:0 0 10px}
body.senate main.pf .pf-about-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}
body.senate main.pf .pf-about-list li{background:var(--pf-card);border:1px solid var(--pf-rule);border-radius:var(--pf-r-card);padding:14px 18px;font:400 16px/1.5 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-about-list b{color:var(--pf-text)}
body.senate main.pf .pf-about-proof{margin:16px 0 18px}
/* Homepage polish (owner review 2026-10-12, round 2).
   1. The hero image fills the right side of the panel edge to edge and stands on the panel floor, at close to its
      native size, instead of a shrunken picture in the middle. The caption becomes a chip on the image.
   2. Line breaks: headlines break only between phrases (.pf-phrase), lead sentences sit on their own lines on wider
      screens (.pf-sentence), and marketing text uses balance/pretty wrapping so no line ends with one orphan word.
   3. Color has one job each (owner review, round 3): Aqua = what you do and the brand (buttons, headline accent,
      checks, icons, step numbers, quote marks). Marigold = money you can win (prize amounts, first place). Blue Angel =
      time (the countdown and the lock time). Nothing alternates for decoration. No red: next to blue on a Senate
      site it reads as party colors. */
body.senate{--pf-pop-gold:#7A5E00;--pf-pop-gold-bg:#FCF5C7;--pf-pop-blue:#0062C4;--pf-pop-blue-bg:#E6F1FC}
@media (prefers-color-scheme:dark){html:not([data-theme=light]) body.senate{--pf-pop-gold:#F8E762;--pf-pop-gold-bg:#2B2812;--pf-pop-blue:#ACD4FD;--pf-pop-blue-bg:#16263A}}
html[data-theme=dark] body.senate{--pf-pop-gold:#F8E762;--pf-pop-gold-bg:#2B2812;--pf-pop-blue:#ACD4FD;--pf-pop-blue-bg:#16263A}

body.senate main.pf .pf-home-hero{padding:0;overflow:hidden;gap:0;align-items:stretch;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);
 background:radial-gradient(90% 70% at 0% 0%,color-mix(in srgb,var(--pf-aqua) 13%,transparent) 0,transparent 60%),var(--pf-page)}
body.senate main.pf .pf-home-copy{padding:clamp(32px,4.5vw,64px) clamp(16px,2vw,28px) clamp(32px,4.5vw,64px) clamp(32px,4.5vw,64px);justify-content:center}
body.senate main.pf .pf-home-figure{position:relative;margin:0;min-height:560px}
body.senate main.pf .pf-home-figure .pf-hero-art{position:absolute;inset:28px 0 0 0;aspect-ratio:auto;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 18%);mask-image:linear-gradient(to right,transparent 0,#000 18%)}
body.senate main.pf .pf-home-figure .pf-hero-slide{background-size:cover;background-position:30% 100%}
body.senate main.pf .pf-home-figure figcaption{position:absolute;right:18px;bottom:18px;margin:0;display:block}
body.senate main.pf .pf-home-figure figcaption span{display:inline-block;padding:8px 14px;border-radius:var(--pf-r-pill);border:1px solid var(--pf-rule);background:color-mix(in srgb,var(--pf-page) 78%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font:600 13.5px/1.2 var(--pf-body);color:var(--pf-text)}
body.senate main.pf .pf-phrase{display:inline-block}
body.senate main.pf .pf-sentence{display:block}
body.senate main.pf .pf-nowrap{white-space:nowrap}
body.senate main.pf :is(.pf-home,.pf-about) :is(h1,h2,h3){text-wrap:balance}
body.senate main.pf :is(.pf-home,.pf-about) :is(p,li,blockquote p,dd){text-wrap:pretty}
body.senate main.pf .pf-home-hero .pf-home-lead{max-width:none}
/* Money in Marigold: the prize amount is the eye-catcher under the buttons. Ink on Marigold passes contrast in both themes. */
body.senate main.pf .pf-home-prizeline-amt{display:inline-block;padding:4px 10px;border-radius:10px;background:var(--pf-marigold);color:var(--pf-ink)}
body.senate main.pf .pf-home-hero .pf-home-meta .pf-count{display:inline-flex;align-items:center;gap:7px;background:var(--pf-pop-gold-bg);border-color:color-mix(in srgb,var(--pf-pop-gold) 35%,transparent);color:var(--pf-text)}
body.senate main.pf .pf-home-hero .pf-home-meta .pf-count::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--pf-pop-gold)}
body.senate main.pf .pf-qmark{color:var(--pf-accent-text);font-weight:800}
body.senate main.pf .pf-quote figcaption{color:var(--pf-text-2)}
body.senate main.pf .pf-home-prizes li:first-child{border-color:color-mix(in srgb,var(--pf-marigold) 55%,var(--pf-rule));box-shadow:inset 0 4px 0 var(--pf-marigold),var(--pf-shadow)}
body.senate main.pf .pf-home-prizes li:first-child .pf-home-place{color:var(--pf-pop-gold)}
@media(max-width:900px){
 body.senate main.pf .pf-home-hero{grid-template-columns:1fr}
 body.senate main.pf .pf-home-copy{padding:clamp(24px,5vw,40px) clamp(20px,5vw,40px) 8px}
 body.senate main.pf .pf-home-figure{min-height:0;aspect-ratio:1300/870}
 body.senate main.pf .pf-home-figure .pf-hero-art{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14%);mask-image:linear-gradient(to bottom,transparent 0,#000 14%)}
 body.senate main.pf .pf-home-figure .pf-hero-slide{background-position:center 100%}
 body.senate main.pf .pf-home-figure figcaption{right:12px;bottom:12px}
}
@media(max-width:560px){
 body.senate main.pf .pf-home-figure{aspect-ratio:auto}
 body.senate main.pf .pf-home-figure .pf-hero-art{position:relative;inset:auto;aspect-ratio:1300/870}
 body.senate main.pf .pf-home-figure figcaption{position:static;padding:10px 20px 16px}
 body.senate main.pf .pf-home-figure figcaption span{padding:0;border:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;font-weight:500;color:var(--pf-text-2)}
}
@media(max-width:560px){
 body.senate main.pf .pf-home-hero{padding:0}
 body.senate main.pf .pf-sentence{display:inline}
 body.senate main.pf .pf-home-benefits li{flex-direction:row;align-items:center;gap:14px;padding:14px 16px}
 body.senate main.pf .pf-home-benefits{grid-template-columns:1fr}
}
/* Hero, round 3 (owner review 2026-10-12): the proof row is one module (first prize + a second stat) under the
   buttons, not loose pieces. Desktop: copy and stats on the left, the image fills the right. Phone: copy, stats,
   then the image on the panel floor with its caption. */
body.senate main.pf .pf-home-hero{grid-template-rows:1fr auto;grid-template-areas:"copy fig" "stats fig"}
body.senate main.pf .pf-home-copy{grid-area:copy;justify-content:flex-end;padding-bottom:0}
body.senate main.pf .pf-home-hero:not(:has(.pf-home-stats)) .pf-home-copy{padding-bottom:clamp(32px,4.5vw,64px)}
body.senate main.pf .pf-home-figure{grid-area:fig}
body.senate main.pf .pf-home-stats{grid-area:stats;display:flex;margin:28px clamp(16px,2vw,28px) 0 clamp(32px,4.5vw,64px);padding:22px 0 clamp(32px,4.5vw,64px);border-top:1px solid var(--pf-rule)}
body.senate main.pf .pf-stat{display:grid;gap:4px;margin:0;padding-right:28px}
body.senate main.pf .pf-stat+.pf-stat{padding-left:28px;border-left:1px solid var(--pf-rule)}
body.senate main.pf .pf-stat b{font:700 30px/1 var(--pf-display);letter-spacing:-.01em;color:var(--pf-text);font-variant-numeric:tabular-nums}
body.senate main.pf .pf-stat.is-money b{color:var(--pf-pop-gold)}
body.senate main.pf .pf-stat span{font:500 14.5px/1.3 var(--pf-body);color:var(--pf-text-2)}
body.senate main.pf .pf-home-hero .pf-home-meta{margin:18px 0 0;gap:8px 12px;font:500 14.5px/1.4 var(--pf-body)}
body.senate main.pf .pf-home-hero .pf-home-meta>span:not(.pf-count){background:none;border:0;padding:0}
body.senate main.pf .pf-home-hero .pf-home-meta .pf-count{background:var(--pf-pop-blue-bg);border-color:color-mix(in srgb,var(--pf-pop-blue) 35%,transparent);padding:5px 11px}
body.senate main.pf .pf-home-hero .pf-home-meta .pf-count::before{background:var(--pf-pop-blue)}
body.senate main.pf .pf-home-dates .is-lock dd{color:var(--pf-pop-blue)}
body.senate main.pf .pf-home-prizes b{color:var(--pf-pop-gold)}
@media(max-width:900px){
 body.senate main.pf .pf-home-hero{grid-template-rows:auto;grid-template-areas:"copy" "stats" "fig"}
 body.senate main.pf .pf-home-stats{margin:24px clamp(20px,5vw,40px) 0;padding:18px 0 22px}
 body.senate main.pf .pf-home-hero:not(:has(.pf-home-stats)) .pf-home-copy{padding-bottom:22px}
}
@media(max-width:560px){
 body.senate main.pf .pf-stat{padding-right:18px}
 body.senate main.pf .pf-stat+.pf-stat{padding-left:18px}
 body.senate main.pf .pf-stat b{font-size:26px}
 body.senate main.pf .pf-stat span{font-size:13.5px}
}

*,*::before,*::after{box-sizing:border-box}
html{background:#F0F2F5}@media (prefers-color-scheme:dark){html:not([data-theme=light]){background:#0B0E13}}html[data-theme=dark]{background:#0B0E13}body.senate{margin:0;min-height:100vh;line-height:1.5}
body.senate img{max-width:100%}
body.senate header{grid-template-areas:"brand mode account"}
body.senate main.journey{max-width:1192px;width:calc(100% - 48px);margin:0 auto;padding:24px 0 80px}
body.senate main.pf a.pf-btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;min-height:52px;padding:0 24px;border-radius:var(--pf-r-pill);font:700 16px/1.2 var(--pf-body);text-decoration:none}
body.senate main.pf a.pf-btn.pf-secondary{font-weight:600}
body.senate main.pf a.pf-btn:focus-visible,body.senate .pf-footer a:focus-visible,body.senate header :is(a,button):focus-visible{outline:none;box-shadow:var(--pf-focus)}
body.senate .pf-footer a.pf-footlink{display:inline-flex;align-items:center}
@media(max-width:760px){body.senate main.journey{width:calc(100% - 32px);padding-top:16px}}
@media(max-width:560px){body.senate header{grid-template-areas:"brand account"}body.senate main.pf a.pf-btn{flex:1 1 100%}}
