/* 21CEE polling-miss scenarios. Uses the site's theme variables (--paper --ink --muted --line --surface --surface-soft). */
.pms-page{--pms-d:#1f5fc4;--pms-r:#c42d3a;--pms-poll:#6d4fa0;--pms-i:#8a6700;--pms-d-tint:#e8f0fc;--pms-r-tint:#fbe9ea;--pms-poll-tint:#f0ebf7;background:var(--paper);color:var(--ink)}
html[data-theme=dark] .pms-page{--pms-d:#77a9ff;--pms-r:#ff8990;--pms-poll:#c2a5ed;--pms-i:#ffd85c;--pms-d-tint:#1b2c4a;--pms-r-tint:#40232b;--pms-poll-tint:#2a2540}
.pms-page .eyebrow{color:var(--pms-poll)}
.pms-shell{max-width:1380px;margin:auto;padding:48px max(4vw,20px) 72px}
.pms-shell>section,.pms-shell>div{min-width:0}
.pms-shell h1,.pms-shell h2,.pms-shell h3,.pms-shell h4{overflow-wrap:anywhere}

/* hero */
.pms-hero{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:44px;align-items:center;margin:20px 0 34px}
.pms-hero h1{font-size:clamp(42px,6.2vw,92px);line-height:.98;letter-spacing:-.06em;margin:0}
.pms-hero h1 em{display:block;font:400 1em var(--serif);color:var(--pms-poll)}
.pms-lede{font-size:clamp(16px,1.5vw,20px);line-height:1.55;margin:22px 0 0;max-width:660px}
.pms-stamp{font-size:12px;line-height:1.6;color:var(--muted);margin:14px 0 0;max-width:660px}
.pms-jump{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}
.pms-jump a{font-size:12px;font-weight:700;padding:8px 14px;border:1px solid var(--line);border-radius:99px;background:var(--surface);color:var(--ink);text-decoration:none}
.pms-jump a:hover,.pms-jump a:focus-visible{border-color:var(--pms-poll);outline:2px solid var(--pms-poll);outline-offset:2px}
.pms-hero-cards{display:grid;gap:12px}
.pms-hero-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 16px;padding:18px 22px;background:var(--surface);border:1px solid var(--line);border-left:8px solid var(--c);border-radius:14px}
.pms-hero-dem{--c:var(--pms-d)}.pms-hero-poll{--c:var(--pms-poll)}.pms-hero-gop{--c:var(--pms-r)}
.pms-hero-card span{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--c)}
.pms-hero-card strong{grid-row:1/3;grid-column:2;font-size:clamp(38px,4.6vw,64px);line-height:1;letter-spacing:-.05em;color:var(--c);display:flex;align-items:baseline;gap:6px}
.pms-hero-card strong small{font-size:14px;letter-spacing:0;color:var(--muted);font-weight:600}
.pms-hero-card p a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.pms-hero-card p{grid-column:1;font-size:13px;line-height:1.45;color:var(--muted);margin:0}

/* filter */
.pms-focus{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 30px;padding:12px 14px;background:var(--surface-soft);border:1px solid var(--line);border-radius:12px}
.pms-focus[hidden]{display:none}
.pms-focus span{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-right:4px}
.pms-focus button{font:inherit;font-size:13px;font-weight:700;padding:9px 15px;border:1px solid var(--line);border-radius:99px;background:var(--surface);color:var(--ink);cursor:pointer}
.pms-focus button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.pms-focus button:focus-visible{outline:3px solid var(--pms-poll);outline-offset:2px}
.pms-shell[data-focus=dem] [data-scenario]:not([data-scenario=dem]),.pms-shell[data-focus=poll] [data-scenario]:not([data-scenario=poll]),.pms-shell[data-focus=gop] [data-scenario]:not([data-scenario=gop]){display:none}

/* chambers */
.pms-chamber{margin:64px 0 0;scroll-margin-top:90px}
.pms-chamber-head h2,.pms-method h2{font-size:clamp(32px,4.2vw,58px);line-height:1.04;letter-spacing:-.05em;margin:0 0 12px}
.pms-cover{font-size:13px;line-height:1.6;color:var(--muted);margin:0 0 22px;max-width:760px}
.pms-tiles{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:14px;margin:0 0 20px}
.pms-tile{display:grid;gap:10px;align-content:start;padding:20px 22px;background:var(--surface);border:1px solid var(--line);border-top:6px solid var(--c);border-radius:14px;min-width:0}
.pms-tile-dem{--c:var(--pms-d)}.pms-tile-poll{--c:var(--pms-poll)}.pms-tile-gop{--c:var(--pms-r)}
.pms-tile-label{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--c)}
.pms-tile-seats{display:flex;gap:22px;flex-wrap:wrap;font-size:clamp(40px,4.4vw,62px);line-height:1;letter-spacing:-.05em}
.pms-tile-seats span{display:flex;flex-direction:column}
.pms-tile-seats small{font-size:11px;letter-spacing:.12em;font-weight:800;margin-top:6px}
.pms-seat-d{color:var(--pms-d)}.pms-seat-r{color:var(--pms-r)}.pms-seat-i{color:var(--pms-i)}
.pms-tile-text{font-size:13px;line-height:1.5;color:var(--muted)}
.pms-control{display:inline-block;justify-self:start;max-width:100%;padding:8px 14px;border-radius:99px;font-size:13px;font-weight:800;line-height:1.35;color:#fff;background:var(--ink);overflow-wrap:anywhere}
.pms-control-d{background:var(--pms-d)}.pms-control-r{background:var(--pms-r)}
html[data-theme=dark] .pms-control-d,html[data-theme=dark] .pms-control-r{color:#101725}
.pms-tile-flips{font-size:12px;color:var(--muted)}

/* races */
.pms-races{display:grid;gap:14px}
.pms-race{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.75fr);grid-template-areas:"head head" "match cells";gap:16px 30px;padding:20px 24px 22px 30px;background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.pms-race::before{content:"";position:absolute;inset:0 auto 0 0;width:6px;background:linear-gradient(var(--pms-d),var(--pms-poll),var(--pms-r))}
.pms-race-head{grid-area:head;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;min-width:0}
.pms-rank{font-size:12px;font-weight:800;padding:4px 10px;border-radius:99px;background:var(--ink);color:var(--paper)}
.pms-race-head h4{font-size:26px;letter-spacing:-.04em;line-height:1.1;margin:0}
.pms-race-sub{font-size:13px;color:var(--muted)}
.pms-base{margin-left:auto;font-size:13px;color:var(--muted)}
.pms-base b{color:var(--ink);font-size:15px}
.pms-matchup{grid-area:match;display:flex;gap:6px;align-items:flex-start;justify-content:space-around;min-width:0}
.pms-vs{align-self:center;font:italic 400 18px var(--serif);color:var(--muted)}
.pms-page .candidate-person.candidate-identity.pms-big{--candidate-size:92px;display:flex;flex-direction:column;width:100%;text-align:center;gap:12px}
.pms-page .pms-big .candidate-portrait{border-width:5px}
.pms-page .pms-big .candidate-party{width:32px;height:32px;right:-2px;bottom:-2px}
.pms-page .pms-big .candidate-party .party-graphic{width:20px;height:20px}
.pms-page .pms-big .candidate-identity-copy{display:grid;gap:5px;justify-items:center;min-width:0;max-width:100%}
.pms-page .pms-big .candidate-name{font-size:15px;font-weight:700;line-height:1.25}
.pms-page .candidate-race-link{color:inherit;text-decoration:none;display:block;min-width:0;border-radius:10px}
.pms-matchup>.candidate-race-link,.pms-matchup>.pms-person{flex:1 1 0;min-width:0}
.pms-page .candidate-race-link:hover .candidate-name{text-decoration:underline}
.pms-page .candidate-race-link:focus-visible{outline:3px solid var(--pms-poll);outline-offset:3px}
.pms-page .candidate-person.candidate-identity .candidate-initials{font-family:var(--serif)}
.pms-page .portrait-status{color:var(--muted);font-size:11px}
.pms-page .portrait-status:empty{display:none}
.pms-tag{display:inline-block;font-style:normal;font-size:10px;font-weight:850;letter-spacing:.1em;padding:3px 8px;border-radius:5px;line-height:1.3;color:#fff}
.pms-tag-d{background:var(--pms-d)}.pms-tag-r{background:var(--pms-r)}.pms-tag-i{background:var(--pms-i);color:#101725}
html[data-theme=dark] .pms-tag-d,html[data-theme=dark] .pms-tag-r{color:#101725}
html[data-theme=light] .pms-tag-i{color:#fff}
.pms-caucus{font-size:12px;line-height:1.4;color:var(--ink);max-width:230px;padding:5px 9px;border:1px dashed var(--pms-i);border-radius:6px;background:var(--surface-soft);overflow-wrap:anywhere}
.pms-caucus b{font-weight:800}
.pms-cells{grid-area:cells;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:12px;min-width:0}
.pms-cell{--c:var(--pms-poll);display:grid;align-content:start;gap:12px;padding:14px 16px;background:var(--surface-soft);border:1px solid var(--line);border-top:5px solid var(--c);border-radius:12px;min-width:0}
.pms-cell-dem{--c:var(--pms-d)}.pms-cell-gop{--c:var(--pms-r)}
.pms-cell.is-flip.pms-win-d{background:var(--pms-d-tint);border-color:var(--pms-d)}
.pms-cell.is-flip.pms-win-r{background:var(--pms-r-tint);border-color:var(--pms-r)}
.pms-cell.is-flip.pms-win-i{border-color:var(--pms-i)}
.pms-cell-label{font-size:11px;font-weight:850;letter-spacing:.07em;text-transform:uppercase;color:var(--c)}
.pms-page .candidate-person.candidate-identity.pms-mini{--candidate-size:46px;gap:10px;display:flex;flex-direction:row;text-align:left;flex:none}
.pms-page .pms-mini .candidate-portrait{border-width:3px}
.pms-page .pms-mini .candidate-party{width:20px;height:20px;right:-5px;bottom:-4px}
.pms-page .pms-mini .candidate-party .party-graphic{width:13px;height:13px}
.pms-page .pms-mini .candidate-identity-copy{display:grid;justify-items:start;gap:4px}
.pms-page .pms-mini .candidate-name{font-size:14px;font-weight:700;line-height:1.25}
.pms-page .pms-mini .pms-caucus{font-size:11px;max-width:none}
.pms-cell-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.pms-cell-meta b{font-size:22px;letter-spacing:-.04em;line-height:1}
.pms-flip,.pms-hold{font-size:11px;font-weight:800;padding:3px 8px;border-radius:99px;border:1px solid var(--line);white-space:nowrap}
.pms-flip{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.pms-hold{color:var(--muted)}
.pms-outside{margin:16px 0 0;padding:14px 18px;background:var(--surface-soft);border:1px solid var(--line);border-radius:12px;font-size:13px;line-height:1.6}
.pms-outside summary{cursor:pointer;font-weight:700}
.pms-outside summary:focus-visible{outline:3px solid var(--pms-poll);outline-offset:3px}
.pms-outside ul{margin:10px 0 0;padding-left:20px}

/* method */
.pms-method{margin:76px 0 0;scroll-margin-top:90px}
.pms-size-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}
.pms-size{padding:22px;background:var(--surface);border:1px solid var(--line);border-top:6px solid var(--c);border-radius:14px;min-width:0}
.pms-size-dem{--c:var(--pms-d)}.pms-size-poll{--c:var(--pms-poll)}.pms-size-gop{--c:var(--pms-r)}
.pms-size-k{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--c)}
.pms-size strong{display:block;font-size:clamp(38px,4vw,56px);letter-spacing:-.05em;line-height:1.1;margin:8px 0;color:var(--c)}
.pms-size p,.pms-note,.pms-steps,.pms-sourcelist{font-size:14px;line-height:1.65}
.pms-size p{margin:0}
.pms-note{border-left:4px solid var(--pms-poll);padding:10px 14px;background:var(--surface-soft);margin:16px 0;max-width:980px}
.pms-table-wrap{margin:18px 0}
.pms-table{width:100%;border-collapse:collapse;font-size:13px;line-height:1.5}
.pms-table caption{text-align:left;font-size:12px;line-height:1.6;color:var(--muted);margin:0 0 10px}
.pms-table th,.pms-table td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.pms-table thead th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.pms-table tbody th small,.pms-table td small{display:block;color:var(--muted);font-size:11px;font-weight:400}
.pms-table tbody th{font-size:18px}
.pms-num{font-weight:800;font-size:16px}
.pms-steps{padding-left:22px;max-width:980px}.pms-steps li{margin:0 0 12px}
.pms-sources h3{font-size:20px;margin:26px 0 10px}
.pms-sourcelist{padding-left:20px;max-width:980px}.pms-sourcelist li{margin:0 0 8px}
.pms-method a,.pms-sourcelist a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}

@media(max-width:1000px){.pms-hero{grid-template-columns:1fr;gap:26px}.pms-race{grid-template-columns:1fr;grid-template-areas:"head" "match" "cells"}.pms-cells{grid-auto-flow:row;grid-auto-columns:auto}.pms-tiles{grid-auto-flow:row;grid-auto-columns:auto}.pms-size-grid{grid-template-columns:1fr}}
@media(max-width:700px){
.pms-shell{padding-top:20px}.pms-chamber{margin-top:48px}.pms-method{margin-top:56px}
.pms-hero h1{font-size:clamp(46px,14vw,64px)}.pms-hero-card{padding:14px 16px}
.pms-race{padding:16px 14px 16px 20px;gap:14px}.pms-race-head h4{font-size:23px}.pms-base{margin-left:0;flex-basis:100%}
.pms-page .candidate-person.candidate-identity.pms-big{--candidate-size:80px}
.pms-tile,.pms-size{padding:16px}.pms-cells{gap:8px}
.pms-cell{padding:10px 12px;gap:8px 10px;grid-template-columns:minmax(0,1fr) auto;align-items:center}
.pms-cell-label{grid-column:1/-1}
.pms-cell .pms-cell-meta{flex-direction:column;align-items:flex-end;gap:6px}
.pms-cell .pms-cell-meta b{font-size:20px}
.pms-page .candidate-person.candidate-identity.pms-mini{--candidate-size:40px}
.pms-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.pms-table,.pms-table tbody,.pms-table tr,.pms-table th,.pms-table td{display:block;width:100%}
.pms-table tr{padding:12px 0;border-bottom:1px solid var(--line)}.pms-table th,.pms-table td{border:0;padding:3px 0}
.pms-table td[data-label]::before{content:attr(data-label) ": ";font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
}
@media(prefers-reduced-motion:reduce){.pms-page *{scroll-behavior:auto!important}}
