/* Barometer editorial design. Shared palette, structure and responsive surfaces. */
@import url('https://fonts.googleapis.com/css2?family=Heebo:wght@400;500;600;700;800;900&display=swap');

:root{
  --paper:#F4F6FA; --paper-2:#FFF; --paper-3:#EBEFF6;
  --ink:#102346; --ink-2:#45536D; --ink-3:#67738A;
  --navy:#102346; --navy-2:#091831; --gold:#E7854B;
  --rule:#DCE2EC; --rule-2:#E9EDF4; --rule-strong:#C6D0E0;
  --accent:#3155F5; --accent-light:#EAF0FF; --apricot:#FFAB7B;
  --sans:"Heebo","Assistant",Arial,sans-serif; --serif:var(--sans);
  --page-w:1320px; --gutter:80px;
  --r:18px; --r-s:10px; --r-l:26px;
  --ctl-h:44px; --ctl-fs:.875rem; --ctl-r:10px;
  --shadow-s:0 3px 12px #10234604;
  --shadow-m:0 12px 40px #1023460B;
  --shadow-l:0 30px 90px #10234629;
}
body{font-family:var(--sans);line-height:1.7;background:var(--paper)}
.view::before{content:none}
h1,h2,h3,h4{letter-spacing:-.035em;font-family:var(--sans);font-weight:800}
button,input,select,textarea{font-family:inherit}
button,a,input,select,summary{-webkit-tap-highlight-color:transparent}
button,a,summary{touch-action:manipulation}
a{ text-underline-offset:4px }
button,select,input{max-width:100%}
:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.wrap,#view-home .wrap{width:min(var(--page-w),calc(100% - var(--gutter)))}
.view.on{animation:page-enter .35s ease both}
@keyframes page-enter{from{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:none}}

/* The persistent masthead is calm; only the active destination carries color. */
.masthead{background:rgba(255,255,255,.96);border-bottom:1px solid var(--rule);box-shadow:none;backdrop-filter:blur(18px)}
.masthead-in{min-height:88px;gap:28px}
.brand{gap:10px}
.brand img{width:45px;height:45px}
.brand-txt strong{font-size:1.8rem;font-weight:900;letter-spacing:-.07em}
.brand-txt span{display:block;font-size:.68rem;font-weight:500;margin-top:6px;letter-spacing:0;color:var(--ink-3)}
.mainnav .tabs{gap:3px}
.mainnav .tab{position:relative;padding:13px 12px;border-radius:0;font-size:.875rem;font-weight:500;color:var(--ink-2);min-height:46px}
.mainnav .tab:hover{background:transparent;color:var(--accent)}
.mainnav .tab[aria-current="page"]{background:transparent;color:var(--accent);font-weight:800}
.mainnav .tab::after{content:"";position:absolute;inset:auto 12px 4px;height:3px;background:var(--accent);border-radius:8px;transform:scaleX(0);transition:transform .2s}
.mainnav .tab[aria-current="page"]::after{transform:scaleX(1)}
.masthead-side{gap:14px}
.stamp{padding:0;min-height:40px;border:0;background:transparent;font-size:.75rem;white-space:nowrap}
.pulse{width:6px;height:6px;background:var(--accent);animation:none;box-shadow:none}
.masthead-side .print-btn{background:var(--paper);border:1px solid var(--rule);border-radius:12px;min-width:44px;min-height:44px;justify-content:center;padding:10px}
.masthead-side .print-btn span{display:none}
.masthead-side .print-btn svg{width:18px;height:18px}
.skip:focus{z-index:300}

/* Home: one editorial statement beside the actual mandate distribution. */
#view-home.on{display:block;width:100%;padding:0;margin:0}
#view-home .verdict{background:#FFF;border:0;border-bottom:1px solid var(--rule);border-radius:0;box-shadow:none;overflow:hidden;color:var(--ink)}
#view-home .verdict::before,#view-home .verdict::after{content:none}
#view-home .verdict-in{display:block;max-width:none;text-align:start;padding:25px 0 0;min-height:0}
.verdict-top{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:12px;padding-bottom:18px;border-bottom:1px solid var(--rule)}
#view-home .verdict .eyebrow{padding:0;margin:0;border:0;background:none;border-radius:0;color:var(--ink-2);font-size:.75rem;letter-spacing:0;font-weight:500}
.edition-label{font-family:var(--mono);color:var(--ink-3);font-size:.65rem;letter-spacing:.09em;white-space:nowrap}
.election-hero{display:grid;grid-template-columns:1fr 1.12fr;align-items:center;gap:64px;padding:38px 0 34px}
.election-copy{min-width:0}
.hero-overline{color:var(--accent);font-size:.8rem;font-weight:700;letter-spacing:0;margin:0 0 15px}
#view-home .verdict h1{font-size:clamp(3rem,5.7vw,5rem);font-weight:900;letter-spacing:-.065em;line-height:1.05;max-width:none;color:var(--ink);margin:0 0 24px}
#view-home .verdict h1 em{color:var(--accent);font-style:normal}
#view-home .verdict-result{background:transparent;border:0;border-radius:0;box-shadow:none;width:100%;margin:0;padding:0;text-align:start}
#view-home #verdict-auto{font-size:clamp(1.15rem,1.7vw,1.5rem);line-height:1.45;font-weight:800;letter-spacing:-.03em;color:var(--ink);margin:0 0 7px;max-width:30ch}
#view-home #verdict-auto em{font-style:normal;color:inherit}
#view-home .verdict .lede{font-size:.95rem;color:var(--ink-2);line-height:1.65;max-width:45ch;margin:0}
.hero-description{max-width:43ch;font-size:.9rem;line-height:1.8;color:var(--ink-3);margin:14px 0 19px}
.hero-link{display:inline-flex;align-items:center;gap:27px;font-size:.875rem;font-weight:700;text-decoration:none;color:var(--ink);min-height:44px}
.hero-link span{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--rule);border-radius:50%;font-size:1.3rem;transition:background .2s,color .2s}
.hero-link:hover span{background:var(--accent);border-color:var(--accent);color:white}
.election-visual{background:var(--paper);border-radius:26px;padding:22px 25px 17px;min-width:0;position:relative}
.visual-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:700;font-size:.875rem}
.visual-topline>span:last-child{font-size:.75rem;color:var(--ink-3);font-weight:400}
.home-hemicycle{margin:13px auto 3px;max-width:510px}
.home-hemicycle svg{display:block;width:100%;height:auto;overflow:visible}
.hemicycle-total{font-family:var(--sans);font-size:58px;font-weight:800;fill:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-3px}
.hemicycle-caption{font-family:var(--sans);font-size:16px;font-weight:500;fill:var(--ink-3);direction:rtl}
#view-home .readout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;background:transparent;border:0;border-radius:0;padding:10px 0 0;margin:0;width:100%;box-shadow:none}
#view-home .readout .rd{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0;padding:0 7px;border:0;border-inline-end:1px solid var(--rule)}
#view-home .readout .rd:nth-child(3){border:0}
#view-home .readout .rd .rd-lbl{font-size:.75rem;font-weight:500;color:var(--ink-2);gap:6px;white-space:normal;text-align:center}
#view-home .readout .rd .rd-lbl i{width:7px;height:7px;border-radius:2px}
#view-home .readout .rd b,#view-home .readout .rd.lead b{font-family:var(--sans);font-size:2.2rem;line-height:1.1;font-weight:800;letter-spacing:-.05em;color:var(--ink)}
#view-home .readout .rd-need{display:none}
.visual-footnote{text-align:center;color:var(--ink-3);font-size:.68rem;margin:18px 0 0;line-height:1.5}
#view-home .home-forecast-controls{display:flex;align-items:center;justify-content:flex-start;gap:14px 26px;padding:18px 0;border-top:1px solid var(--rule);margin:0;flex-wrap:wrap}
#view-home .home-switch{background:var(--paper);padding:4px;border:0;border-radius:12px;box-shadow:none;align-self:auto;display:inline-flex}
#view-home .home-switch button{font-size:.85rem;min-height:40px;padding:8px 17px;border-radius:9px;font-weight:600;color:var(--ink-2)}
#view-home .home-switch button[aria-pressed="true"]{background:var(--ink);color:white;box-shadow:0 2px 8px #10234615}
#view-home .home-history-pick{display:flex;gap:10px;font-size:.8rem;color:var(--ink-3);font-weight:400}
#view-home .home-history-pick select{min-width:155px;min-height:42px;border:1px solid var(--rule);background:#fff;color:var(--ink);border-radius:10px;box-shadow:none;padding:8px 12px;font-size:.8rem}
.intro-result-links{width:auto;margin:0;margin-inline-start:auto;justify-content:flex-end;display:flex;gap:16px}
.intro-result-links a,.intro-result-links button{min-height:44px;display:inline-flex;align-items:center;padding:4px 0;background:none;border:0;text-decoration:none;border-radius:0;color:var(--ink-3);font-size:.75rem;font-weight:500}
.intro-result-links a:hover,.intro-result-links button:hover{color:var(--accent)}
.intro-result-links a{display:none}

/* Horizontal comparison rows replace the former wall of portrait cards. */
#view-home .board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;padding:36px 0 48px}
.board-title{grid-column:1/-1;display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:5px}
.board-title h2{font-size:1.8rem;line-height:1.25}
.board-title>p{font-size:.8rem;color:var(--ink-3);margin:0}
#view-home .bloc,#view-home .bloc+.bloc{padding:24px 24px 12px;background:#FFF;border:1px solid var(--rule);border-radius:20px;margin:0;overflow:hidden;min-width:0}
#view-home .bloc-head{align-items:center;justify-content:space-between;margin:0 0 8px;padding:0 0 17px;border-bottom:1px solid var(--rule)}
#view-home .bloc-head h2{font-size:1rem;line-height:1.5;letter-spacing:-.025em}
#view-home .bloc-head .tally{font-size:1.8rem;font-weight:800;letter-spacing:-.04em;line-height:1.15;background:var(--paper);border-radius:9px;padding:5px 10px;color:var(--ink)}
#view-home .bloc-head .tally::before{content:none}
#view-home .cards{display:flex;flex-direction:column;gap:0}
#view-home .hcard{display:grid;grid-template-columns:42px minmax(90px,1fr) minmax(45px,.9fr) 44px 16px;align-items:center;gap:12px;padding:14px 0;min-height:78px;border:0;border-bottom:1px solid var(--rule-2);border-radius:0;background:transparent;box-shadow:none;text-align:start;overflow:visible;color:var(--ink);transform:none;transition:background .18s}
#view-home .hcard:last-child{border-bottom:0}
#view-home .hcard::before{content:none}
#view-home .hcard:hover{background:var(--paper);box-shadow:none;transform:none;border-color:var(--rule-2)}
#view-home .hcard-photo{display:block;width:42px;height:46px;aspect-ratio:auto;overflow:hidden;border-radius:9px;background:var(--paper-3);box-shadow:none}
#view-home .hcard-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 24%}
#view-home .hcard-body{display:grid;align-content:center;gap:3px;padding:0;text-align:start;min-width:0}
#view-home .hcard-name{font-size:.875rem;font-weight:700;line-height:1.4;letter-spacing:-.02em}
#view-home .hcard-leader{font-size:.68rem;line-height:1.5;color:var(--ink-3);font-weight:400}
.hcard-track{display:block;height:8px;border-radius:4px;background:var(--rule-2);overflow:hidden}
.hcard-track>span{display:block;height:100%;background:var(--bc);border-radius:4px;min-width:0;transition:width .45s ease}
#view-home .hcard-seatline{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;margin:0;min-height:0}
#view-home .hcard-seat{font-size:1.9rem;line-height:1;font-weight:800;color:var(--ink);letter-spacing:-.04em}
#view-home .hcard-delta{font-size:.65rem;padding:2px 4px}
#view-home .hcard-pct{font-size:.65rem;padding:0;background:none;border:0}
.hcard-action{font-size:1rem;color:var(--rule-strong);transition:color .2s,transform .2s}
.hcard:hover .hcard-action{color:var(--accent);transform:translate(-2px,2px)}
#view-home .hcard.is-below .hcard-seat{color:var(--ink-3)}
.board-note{grid-column:1/-1;font-size:.75rem;color:var(--ink-3);margin:0}

/* A secondary deep-blue section holds the existing methodology links. */
.home-method{background:var(--navy);color:#FFF;padding:52px 0 32px;border-radius:0;margin:0}
.method-intro{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:35px}
.method-intro h2{font-size:clamp(1.65rem,3vw,2.5rem);line-height:1.3;font-weight:700;letter-spacing:-.04em;color:#FFF}
.home-method .kicker{color:var(--apricot)}
.home-method .btn{background:var(--apricot);color:var(--navy-text);border:0;border-radius:10px;min-height:46px;font-size:.875rem;gap:25px;box-shadow:none}
#view-home .pipeline{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;width:100%;margin:0;border:1px solid #FFFFFF25;border-radius:16px;overflow:hidden;background:#FFFFFF04}
#view-home .pipe-node{display:flex;flex-direction:column;gap:12px;padding:23px 21px;text-align:start;background:transparent;border:0;border-inline-end:1px solid #FFFFFF25;border-radius:0;box-shadow:none;min-width:0;transform:none;color:#FFF;transition:background .2s}
#view-home .pipe-node:last-child{border:0}
#view-home .pipe-node:hover{background:#FFFFFF09;transform:none;box-shadow:none}
#view-home .pipe-node::before,#view-home .pipe-node::after{content:none}
#view-home .pipe-step{position:static;display:block;color:#91A3C3;font:500 .7rem var(--mono);padding:0;background:none}
#view-home .pipe-k{color:#D9E2F2;font-size:.85rem;font-weight:500}
#view-home .pipe-n{font-size:1.7rem;font-weight:800;color:#FFF;letter-spacing:-.04em;line-height:1.2;white-space:normal}
#view-home .pipe-t{font-size:.75rem;line-height:1.8;color:#A8B9D5;max-width:none}
.home-method .hero-countdown{display:flex;justify-content:space-between;max-width:none;margin:30px 0 0;padding:22px 0 0;border:0;border-top:1px solid #FFFFFF25;border-radius:0;background:transparent;color:white;box-shadow:none}
.home-method .hero-countdown h3{color:#BBC9DF;font-size:.8rem}
.home-method .hero-countdown .countdown-cells{gap:10px}
.home-method .hero-countdown .countdown-cells .num{color:white;font-size:1.35rem}
.home-method .hero-countdown .countdown-cells em{color:#A8B9D5;font-size:.65rem;margin-top:5px}
.home-method .hero-countdown .cd-sep{color:#7A8FB2;padding:0 0 16px}

/* Shared inner-page language: spacious heading, concise controls, dense data. */
.page-intro,.page-head,#view-polls .page-head{position:relative;background:none;padding:44px 0 30px;margin:0;border-bottom:1px solid var(--rule)}
.page-intro::before,.page-intro::after,.page-head::before,.page-head::after{content:none!important}
.page-intro h2,.page-head h2,#view-polls .page-head h2,#view-crossover .page-head h2{font-size:clamp(2rem,3.5vw,3rem);line-height:1.2;letter-spacing:-.045em;color:var(--ink);max-width:none;margin:0}
.page-intro>p:not(.kicker){font-size:1rem;line-height:1.9;color:var(--ink-2);max-width:72ch;margin:17px 0 0}
.kicker{font-size:.75rem;line-height:1.5;font-weight:700;letter-spacing:.02em;color:var(--accent);margin:0 0 8px;padding:0;border:0}
.sec{padding:34px 0;border-color:var(--rule)}
.sec-head{align-items:end;gap:20px;justify-content:space-between;margin-bottom:23px}
.sec h2{font-size:1.5rem;line-height:1.35;letter-spacing:-.035em}
.sec h3{font-size:1.1rem;line-height:1.5}
.sec-note,.data-explainer{font-size:.875rem;line-height:1.85;color:var(--ink-3)}
.sec-head>.sec-note{max-width:63ch;margin:0}
.card,.step,.sector,.floorcard,.pillar,.hemi,.gauge,.crosschart,.average-results,#forecast-bars{border:1px solid var(--rule);border-radius:18px;box-shadow:var(--shadow-s);background:var(--paper-2)}
.pad,.hemi{padding:24px}
.grid{gap:20px}
.split{gap:24px}
.stats,.page-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:#FFF;border:1px solid var(--rule);border-radius:16px;box-shadow:none;gap:0;padding:0;overflow:hidden}
.stats>div,.page-facts>div{display:flex;flex-direction:column;padding:20px 24px;gap:5px;border:0;border-inline-end:1px solid var(--rule);min-width:0}
.stats>div:last-child,.page-facts>div:last-child{border-inline-end:0}
.stats b,.page-facts b{color:var(--ink);font-size:1.85rem;font-weight:800;line-height:1.3;letter-spacing:-.04em}
.stats span,.page-facts span{color:var(--ink-3);font-size:.75rem;font-weight:400;line-height:1.5}
.page-facts b span{color:inherit;font-size:inherit;font-weight:inherit}
.page-facts.compact{grid-template-columns:repeat(3,minmax(0,1fr));padding:0;gap:0;margin-bottom:22px}
.page-facts.compact>div{padding:15px 20px}
.page-facts.compact b{font-size:1.2rem;letter-spacing:-.02em}
.notice{border:1px solid #D7E1FF;background:#EFF3FF;border-radius:13px;padding:17px 20px;font-size:.9rem;line-height:1.85;box-shadow:none}
.notice.warm{background:#FFF5EB;border-color:#F2DAC3}
.notice .ic{font-size:.9rem;border-radius:7px}
.takeaway{background:#EDF2FF;border:0;border-inline-start:3px solid var(--accent);padding:17px 20px;border-radius:0 8px 8px 0;font-size:.9rem;line-height:1.9}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:10px 20px;font-size:.875rem;border-radius:10px;background:var(--navy);border:1px solid var(--navy);box-shadow:none}
.btn:hover{background:var(--accent);border-color:var(--accent);transform:none}
.btn.ghost{background:white;color:var(--ink);border:1px solid var(--rule)}
.btn.ghost:hover{background:var(--accent-light);border-color:var(--accent)}
.switch,.poll-view-tabs{border:1px solid var(--rule);background:var(--paper-3);border-radius:12px;padding:4px;gap:3px;box-shadow:none}
.switch button,.poll-view-tabs button,.calib-switch button{border-radius:8px;padding:9px 15px;min-height:40px;font-size:.85rem;font-weight:600}
.switch button[aria-pressed="true"],.poll-view-tabs button[aria-pressed="true"]{background:var(--navy);color:#FFF;box-shadow:0 1px 4px #10234610}
.switch.gold button[aria-pressed="true"]{background:var(--navy);color:#FFF}
.controls{gap:16px;align-items:end;padding:18px;background:#FFF;border:1px solid var(--rule);border-radius:14px;margin-bottom:18px}
.field>span,.control-label{font-size:.75rem;font-weight:600;color:var(--ink-3);margin-bottom:5px}
select,input[type="search"],.field input,.field select{background:#FFF;color:var(--ink);border:1px solid var(--rule-strong);border-radius:9px;min-height:44px;padding:8px 13px;font-size:.875rem}
input[type="range"]{accent-color:var(--accent)}
.subtabs{padding:18px 0 0;margin:0;border:0;gap:7px;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:thin}
.subtab{padding:9px 15px;min-height:43px;font-size:.8rem;white-space:nowrap;border-radius:9px;border:1px solid transparent;color:var(--ink-3);font-weight:500}
.subtab[aria-current="page"]{background:#FFF;border-color:var(--rule);color:var(--accent);font-weight:700;box-shadow:var(--shadow-s)}

/* Pollster scorecards: identity first, comparable scores and visible drill-down. */
#view-e2022 .page-intro{padding-bottom:26px}
#acc-facts{margin-top:26px}
#acc-facts>div:last-child{background:var(--accent-light)}
#acc-facts>div:last-child b{font-size:1.1rem;line-height:1.6;color:var(--accent)}
#view-e2022 .reliability-ranking{padding-top:30px}
#view-e2022 .reliability-ranking>.sec-head{display:flex}
#view-e2022 .reliability-ranking>.sec-head h2{font-size:1.2rem}
#view-e2022 .reliability-ranking>.sec-head .kicker{display:none}
.grade-legend{gap:8px}
.grade-legend .grade{font-size:.65rem;background:transparent;border:1px solid var(--rule);padding:5px 9px}
#view-e2022 .ranks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px}
#view-e2022 .rank{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto auto auto 1fr;align-content:start;align-items:stretch;justify-items:stretch;gap:15px;padding:22px 20px 18px;aspect-ratio:auto;min-height:0;border:1px solid var(--rule);border-radius:18px;background:#FFF;box-shadow:none;position:relative;transition:transform .2s,border-color .2s,box-shadow .2s}
#view-e2022 .rank:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:var(--shadow-m)}
#view-e2022 .rank:first-child{background:#FFF;border-color:#B4C3EE;box-shadow:inset 0 4px var(--accent)}
#view-e2022 .rank.grade-high{border-color:#C6DDCF}
#view-e2022 .rank:first-child.grade-high{border-color:#B4C3EE}
#view-e2022 .rank>.score-top{grid-row:3;gap:10px;padding:13px 0 0;border-top:1px solid var(--rule-2)}
#view-e2022 .rank>.orglogo{grid-row:1;width:100%!important;height:73px!important;border:0;border-radius:0;background:#FFF}
#view-e2022 .rank>.orglogo img{width:100%;height:73px;object-fit:contain;padding:3px 24px}
#view-e2022 .rank>div:not(.meters):not(.final):not(.score-top):not(.runs){grid-row:2;gap:4px;text-align:center;justify-items:center}
#view-e2022 .rank>div strong{font-size:1.05rem;font-weight:800}
#view-e2022 .rank>div>span{font-size:.7rem!important;color:var(--ink-3)}
.score-row{direction:ltr;align-items:center;justify-content:space-between}
.score-row b{font-size:2.8rem;letter-spacing:-.06em;font-weight:800}
.rank-no{height:26px;min-width:31px;border-radius:7px;background:var(--paper);color:var(--ink-3);font-size:.7rem;order:2}
.rank:first-child .rank-no{background:var(--accent);color:white}
.score-foot{justify-content:space-between;gap:5px}
.score-foot .grade{font-size:.65rem;padding:4px 7px;letter-spacing:0}
.score-top small{font-size:.63rem;font-weight:400;letter-spacing:0}
.score-bar{height:5px;background:var(--paper-3);border-radius:3px}
.score-bar u{border-radius:3px}
.score-top.grade-high b{color:#237252}.score-top.grade-mid b{color:#996126}.score-top.grade-low b{color:#A7443B}
#view-e2022 .rank>.runs{grid-row:4;gap:5px}
.runs span{background:var(--paper);border:0;border-radius:7px;padding:8px 3px;gap:4px}
.runs small{font-size:.66rem;font-weight:400}.runs b{font-size:.9rem;font-weight:700}
#view-e2022 .rank>.meters{grid-row:5;background:transparent;padding:3px 0;border:0;border-radius:0;gap:11px;grid-template-columns:1fr;grid-column:auto;width:100%}
.meter>span{font-size:.72rem;font-weight:400}.meter b{font-weight:600}.meter i{height:4px;background:var(--paper-3)}
#view-e2022 .rank>.final.rank-outlets{grid-row:6;display:flex;flex-direction:column;align-items:center;justify-content:end;gap:10px;padding-top:14px;margin-top:2px;border-top:1px solid var(--rule-2);grid-column:auto}
#view-e2022 .rank-outlets>span{font-size:.65rem;letter-spacing:0;font-weight:400}
#view-e2022 .rank-outlets .outlet-icons{gap:10px;flex-wrap:wrap;justify-content:center}
#view-e2022 .rank-outlets .outlet-icons span{height:64px;width:76px;border:1px solid var(--rule-2);border-radius:10px;box-shadow:none;background:#FFF;font-size:.8rem}
#view-e2022 .rank-outlets .outlet-icons img{padding:7px}
#view-e2022 .rank-nocalib{grid-template-rows:auto auto auto 1fr auto;background:#FBFCFF}
#view-e2022 .rank-nocalib>.meters.nocalib-note{grid-row:4;background:var(--paper);padding:13px;border-radius:9px;display:block;align-self:start}
#view-e2022 .rank-nocalib>.final.rank-outlets{grid-row:6}
#view-e2022 .rank>.nocalib-note p{font-size:.75rem;line-height:1.8;text-align:start;color:var(--ink-2)}
#view-e2022 .fstrip.three{gap:18px}
#view-e2022 .fblock{display:flex;align-items:center;gap:22px;border:1px solid var(--rule);border-top:1px solid var(--rule);background:#FFF;padding:24px;border-radius:16px}
#view-e2022 .fblock b{font-size:2.5rem;font-weight:800;letter-spacing:-.06em;line-height:1;color:var(--c)}
#view-e2022 .fblock span{font-size:.875rem;line-height:1.8;color:var(--ink-2)}

/* Archive and comparison tables have a quiet header and readable row rhythm. */
.tablewrap{border:1px solid var(--rule);background:#FFF;border-radius:14px;box-shadow:none;overflow:auto;overscroll-behavior-x:contain;max-width:100%}
table{font-size:.875rem}
th{background:#EBEFF6;color:var(--ink-2);font-size:.75rem;font-weight:600}
th,td{padding:13px 14px;border-color:var(--rule-2)}
tbody tr:hover{background:#F7F9FD}
.arch th{background:#EBEFF6;font-size:.7rem;padding:14px 9px}
.arch td{padding:12px 9px}
.arch tr.actual td{background:#EAF0FF;color:var(--ink);border-top:0;border-bottom:2px solid #CFD9FF}
.arch .cell.ok{background:#F4F9F6}.arch .cell.near{background:#F9FBF9}
.arch .cell.off{background:#FFF8E9}.arch .cell.far{background:#FFF0ED}
.arch-key{font-size:.75rem}
.cell-key{border-radius:4px}
.arch-more{display:flex;margin:18px auto 0}
.scen-block{padding:25px;background:#FFF;border:1px solid var(--rule);border-radius:20px;max-width:1100px}
.scen-head{gap:18px;margin-bottom:20px}
.scen-card{border:1px solid var(--rule);border-top:3px solid var(--c);border-radius:12px;background:var(--paper)}
.scen-explain,.scen-text{font-size:.875rem;line-height:1.85}

/* Survey cards retain all source, time and comparison controls. */
#view-polls .page-head{align-items:start;gap:24px}
#view-polls .page-head-main{width:100%}
#view-polls .page-head .stats{display:flex;flex-wrap:wrap;background:none;border:0;margin-top:18px;padding:0;gap:18px 28px}
#view-polls .page-head .stats>div{display:flex;flex-direction:row;gap:7px;padding:0;align-items:baseline;border:0}
#view-polls .page-head .stats b{font-size:1.25rem;font-weight:700}
#view-polls .page-head .stats span{font-size:.8rem;font-weight:400}
.poll-view-tabs{flex:none;align-self:end}
.poll-view-tabs button{gap:7px}
.poll-view-tabs .view-icon{color:inherit;font-size:1rem;opacity:.65}
#polls-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media(max-width:1300px){#polls-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}
.poll-result-card{border:1px solid var(--rule);border-radius:20px;background:white;box-shadow:none;overflow:hidden}
.poll-result-card>header{padding:22px 24px 17px;gap:12px}
.poll-result-card h3{font-size:1.2rem;font-weight:800}
.poll-result-card header p{color:var(--ink-3);font-size:.75rem}
.poll-result-card .orglogo{border:1px solid var(--rule);background:#FFF;border-radius:10px;width:46px;height:46px}
.poll-date-pick select{font-size:.72rem;padding:5px 7px;min-height:32px;min-width:0;max-width:98px;background:var(--paper);border:0}
.poll-blocgraph{margin:0 24px 12px;border-radius:7px;overflow:visible;height:37px;box-shadow:none}
.poll-blocgraph .bc-seg b{font-size:1rem;font-weight:700}
.poll-cols{padding:0 18px;gap:16px}
.poll-list li{padding-block:9px;border-color:var(--rule-2);gap:7px}
.poll-party-name{font-size:.85rem;gap:8px}.poll-list .pname{font-size:.85rem;line-height:1.4}
.poll-list li>b{font-size:1.2rem;font-weight:700}
.poll-result-card>footer{padding:12px 22px;margin-top:auto;background:#F8FAFD;border-top:1px solid var(--rule-2);color:var(--ink-3);font-size:.68rem}
.zero-results{padding:0 24px}.zero-results summary{font-size:.75rem;color:var(--ink-3)}
.firm-card{padding:22px!important;border-top-width:3px!important;transition:box-shadow .2s}
#compare-picker{border:0;padding:0;margin:12px 0 24px;display:flex;flex-wrap:wrap;gap:10px}
#compare-picker legend{font-size:.95rem;font-weight:700;margin-bottom:14px}
#compare-picker label{display:flex;align-items:center;gap:10px;border:1px solid var(--rule);border-radius:11px;padding:12px 16px;background:white;font-size:.875rem;min-height:44px}
#compare-picker .compare-label-text{display:flex;flex-wrap:wrap;align-items:center;gap:3px 8px;min-width:0}
#compare-picker .compare-label-text small{flex-basis:100%}
#compare-picker input{accent-color:var(--accent)}
#compare-picker label:has(input:checked){background:var(--accent-light);border-color:#BCCBFF}
.average-toolbar{padding:20px;background:#FFF;border:1px solid var(--rule);border-radius:16px;gap:25px}
.average-days{gap:6px;flex-wrap:wrap}.average-days button{border-radius:8px;font-size:.8rem;min-height:42px}
.average-days button[aria-pressed="true"]{background:var(--accent);color:white}
.average-results{padding:26px;gap:22px}.average-party{min-height:49px}
.average-status,#compare-status{font-size:.8rem;color:var(--ink-3);margin:16px 0}

/* Research, election-night and geographic surfaces. */
.steps{gap:18px}.step{padding:24px}.step>em{color:var(--accent);font-family:var(--mono);font-size:.9rem;font-style:normal;background:none}
.step h3{margin:17px 0 10px}.step p{font-size:.9rem;line-height:1.9;color:var(--ink-2)}
.dstep{padding:32px 0;gap:24px;border-color:var(--rule)}
.dstep-body,.dstep-head{grid-template-columns:minmax(0,1fr)}
.dstep-num{border-radius:10px;background:var(--ink);color:white;font-size:1rem;min-width:36px;height:36px;box-shadow:none}
.dstep-head h2{font-size:1.45rem;margin-bottom:16px}
.floorcard{padding:28px;background:#FFF}.floornum b{font-size:4.5rem;letter-spacing:-.07em;font-weight:800}
.floorcard p{font-size:.9rem;line-height:1.85}.floorcard .kicker{font-size:.75rem}
.pillar{padding:24px}.pillar h3{font-size:1.1rem}
.map-layout{grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:23px;align-items:start}
.mapbox{background:#EAF0F7;border:1px solid #D2DDEA;box-shadow:none;border-radius:20px;overflow:hidden}
.map-main{min-height:550px}
.map-side{gap:13px}
.map-search input{font-size:.9rem;min-height:48px;background:#FFF;border-radius:12px;border:1px solid var(--rule-strong);padding:10px 15px;width:100%}
.map-list{gap:8px}.map-list button{border:1px solid var(--rule);background:#FFF;border-radius:11px;padding:14px}
.map-list button.sel{border-color:var(--accent);background:var(--accent-light)}
.map-list b{font-size:.85rem}.map-list span,.map-list-count{font-size:.75rem}
.locdetail{border-top:3px solid var(--accent)}
.maplegend{padding:16px;font-size:.8rem;background:#FFFFFFC7}
.sector,.cluster{padding:23px}
.live-status{border-radius:15px;background:#FFF;border:1px solid var(--rule);padding:20px}
.live-main{gap:24px}.live-card{border-radius:17px}.live-feed{border-color:var(--rule)}
.live-feed li{background:#FFF;border:1px solid var(--rule);padding:18px;border-radius:12px;margin-bottom:10px;font-size:.9rem}
.live-intro{background:none}.live-intro h2{color:var(--ink)}
.crosschart{padding:22px}.crossrow-label{font-size:.85rem}.crossrow{min-height:50px}
.fstrip{gap:16px}.fblock{background:#FFF;border-color:var(--rule);border-radius:16px}
.submitted-research{font-size:.875rem;line-height:1.85}
details{border-color:var(--rule)}summary{font-size:.875rem;line-height:1.7;min-height:44px}

/* Dialogs use the same document hierarchy and preserve native focus behavior. */
dialog{background:#FFF;color:var(--ink);border:1px solid var(--rule);border-radius:22px;box-shadow:var(--shadow-l);max-height:88dvh;padding:27px;scrollbar-gutter:stable}
dialog::backdrop{background:#09183189;backdrop-filter:blur(5px)}
dialog.wide{width:min(1060px,calc(100% - 40px));padding:30px}
.close,.dlg-close,.dclose{min-width:40px;min-height:40px;border-radius:50%;background:var(--paper);color:var(--ink);border:1px solid var(--rule)}
.fd-head{gap:18px;padding-inline-end:42px}.fd-head h2{font-size:1.65rem}.fd-head p{font-size:.8rem}
.fd-score{border:0;background:var(--accent-light);border-radius:12px;padding:12px 18px}.fd-score b{color:var(--accent);font-size:2.2rem;letter-spacing:-.04em}
.fd-about{font-size:.95rem;line-height:1.85;margin-top:20px}
.fd-comps{gap:12px;margin-top:25px}.fd-comps>div{padding:15px;border-radius:11px}.fd-comps>div>span{font-size:.75rem}.fd-comps>div>b{font-size:1.8rem}
.fd-final{background:var(--navy)!important}.fd-comps .fd-final>b,.fd-comps .fd-final>span{color:#FFF}
.fd-run{margin-top:30px;border-color:var(--rule)}.fd-run h3{font-size:1.2rem;line-height:1.6}
.fd-why{font-size:.875rem;line-height:1.85}

/* Footer: useful navigation is separate from source and methodology details. */
body>footer{margin-top:55px;padding:40px 0 26px;background:#FFF;border-top:1px solid var(--rule);color:var(--ink-2)}
body:has(#view-home.on)>footer{margin-top:0;border-top:0}
body>footer .wrap{gap:40px}
body>footer h4{font-size:.85rem;color:var(--ink);line-height:1.4}
body>footer p{font-size:.75rem;line-height:1.9;color:var(--ink-3)}
body>footer a{color:var(--ink-2)}
body>footer a:hover{color:var(--accent)}
#footer-sources{font-size:.75rem;line-height:1.9}

@media(min-width:1600px){.election-hero{gap:90px;padding:44px 0}.election-copy{padding-inline-end:30px}}
@media(max-width:1200px){
  :root{--gutter:48px}
  .masthead-in{gap:15px}.mainnav .tab{padding-inline:9px;font-size:.8rem}
  .brand-txt span{font-size:.6rem}.brand-txt strong{font-size:1.6rem}
  .election-hero{gap:35px}.election-visual{padding:20px}
  #view-home .hcard{grid-template-columns:36px minmax(82px,1fr) minmax(35px,.65fr) 38px 12px;gap:9px}
  #view-home .hcard-photo{width:36px;height:42px}
  #view-home .pipe-node{padding:22px 15px}
  #view-e2022 .ranks{grid-template-columns:repeat(3,minmax(0,1fr))}
  #view-polls .page-head{flex-direction:column;align-items:start}.poll-view-tabs{align-self:start}
}
@media(max-width:1000px){
  .masthead-in{min-height:73px;padding:12px 0 0;flex-wrap:wrap;gap:10px 16px}
  .mainnav{order:3;width:100%;flex-basis:100%;justify-content:flex-start;margin:0;padding:0;overflow-x:auto}
  .mainnav .tabs{gap:8px;min-width:max-content}.mainnav .tab{font-size:.825rem;padding:12px 13px;min-height:45px}
  .masthead-side{margin-inline-start:auto}.brand-txt span{font-size:.65rem}
  .election-hero{gap:28px;grid-template-columns:1fr 1.1fr}
  #view-home .verdict h1{font-size:3.8rem}
  .hero-description{font-size:.8rem}
  #view-home .home-forecast-controls{gap:10px 20px}
  .intro-result-links{margin-inline-start:0}
  .map-layout{grid-template-columns:minmax(0,1.1fr) minmax(250px,1fr)}
  .grade-legend{max-width:350px}
  .home-method .pipeline{grid-template-columns:repeat(5,minmax(0,1fr))}
  #view-home .pipe-n{font-size:1.4rem}
}
@media(max-width:760px){
  :root{--gutter:36px}
  .election-hero{grid-template-columns:1fr;gap:26px;padding:28px 0}
  #view-home .verdict h1{font-size:3.8rem;margin-bottom:18px}
  .hero-description{font-size:.9rem;max-width:56ch;margin:12px 0}
  #view-home #verdict-auto{max-width:none;font-size:1.3rem}
  .hero-link{gap:16px}.hero-link span{height:34px;width:34px}
  .election-visual{padding:20px 25px;border-radius:20px}
  .home-hemicycle{max-width:450px;margin-top:5px}
  .edition-label{display:none}
  #view-home .board{grid-template-columns:1fr;gap:16px;padding:30px 0 35px}
  .board-title{flex-direction:column;align-items:start;gap:9px}.board-title h2{font-size:1.6rem}
  #view-home .bloc{padding:22px 20px 10px}
  #view-home .hcard{grid-template-columns:40px minmax(100px,1fr) minmax(45px,1.2fr) 43px 15px;gap:12px}
  #view-home .hcard-photo{width:40px;height:45px}
  #view-home .hcard-name{font-size:.95rem}.hcard-track{height:9px}
  #view-home .hcard-leader{font-size:.72rem}
  .home-method{padding:35px 0 26px}
  .method-intro{align-items:start;flex-direction:column;gap:22px;margin-bottom:25px}
  #view-home .pipeline{grid-template-columns:repeat(2,minmax(0,1fr));border-radius:13px}
  #view-home .pipe-node{border:0;border-bottom:1px solid #FFFFFF25;padding:20px;gap:8px}
  #view-home .pipe-node:nth-child(odd){border-inline-end:1px solid #FFFFFF25}
  #view-home .pipe-node:last-child{grid-column:1/-1;border:0}
  #view-home .pipe-n{font-size:1.65rem}
  .page-intro,.page-head,#view-polls .page-head{padding:28px 0 22px}
  .page-intro h2,.page-head h2,#view-polls .page-head h2{font-size:2.1rem}
  .page-intro>p:not(.kicker){font-size:.95rem;margin-top:13px;line-height:1.8}
  .sec{padding:26px 0}.sec-head{align-items:start;flex-direction:column;gap:13px;margin-bottom:18px}
  .sec h2{font-size:1.35rem}
  .stats,.page-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stats>div,.page-facts>div{padding:17px 20px;border-bottom:1px solid var(--rule)}
  .stats>div:nth-child(2n),.page-facts>div:nth-child(2n){border-inline-end:0}
  .stats>div:nth-last-child(-n+2),.page-facts>div:nth-last-child(-n+2){border-bottom:0}
  .stats b,.page-facts b{font-size:1.5rem}
  .page-facts.compact{grid-template-columns:1fr 1fr}
  .page-facts.compact>div:last-child{grid-column:1/-1;border-top:1px solid var(--rule)}
  #view-e2022 .ranks{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  #view-e2022 .rank{padding:18px 16px;gap:13px}
  #view-e2022 .fstrip.three{grid-template-columns:1fr;gap:12px}
  #view-e2022 .fblock{padding:20px;gap:22px}
  #view-e2022 .reliability-ranking>.sec-head{flex-direction:column;gap:12px;align-items:start}
  .grade-legend{max-width:none;align-self:start;gap:5px}
  #polls-cards{grid-template-columns:1fr;gap:20px}
  .poll-view-tabs{display:flex;width:100%}.poll-view-tabs button{flex:1;padding:10px 7px;font-size:.8rem;gap:6px}
  .grid.g2,.grid.g3,.split{grid-template-columns:1fr}
  .scen-block{padding:20px}.scen-head{flex-direction:column;align-items:start}
  .controls{flex-wrap:wrap;padding:16px}.controls .field{flex:1 1 170px}
  .map-layout{grid-template-columns:1fr}.map-main{min-height:420px}
  .map-side{grid-template-columns:1fr}.map-list{max-height:350px;overflow-y:auto}
  .base-row{grid-template-columns:1fr;gap:6px;margin-bottom:16px}
  .base-blocbar.votes{height:auto;min-height:72px}
  .base-blocbar.votes>span{display:flex;flex-direction:column;justify-content:center;gap:3px;min-width:0;white-space:normal;padding:10px 5px;font-size:.7rem;text-align:center}
  .base-blocbar.votes b{font-size:1rem;white-space:nowrap}
  .crossbar{height:auto;min-height:76px}
  .crossbar>span{white-space:normal;padding:12px 8px;font-size:.75rem;line-height:1.7}
  #acc-facts>div:nth-child(3) b{font-size:1.1rem;white-space:nowrap}
  .dstep{gap:13px}.dstep-num{min-width:30px;height:30px}.dstep-head h2{font-size:1.25rem}
  dialog.wide{padding:23px;width:calc(100% - 24px);max-height:92dvh}
  .fd-head{flex-wrap:wrap;gap:12px}.fd-head h2{font-size:1.35rem}.fd-score{margin:0}
  .fd-comps{grid-template-columns:repeat(2,minmax(0,1fr))}.fd-final{grid-column:auto}
  body>footer{padding:28px 0;margin-top:32px}
}
@media(max-width:420px){
  :root{--gutter:28px}
  .brand-txt strong{font-size:1.5rem}.brand img{width:37px;height:37px}
  .stamp{font-size:.65rem;gap:5px}.masthead-side{gap:9px}
  .masthead-side .print-btn{min-width:35px;min-height:38px;padding:8px}
  .mainnav .tabs{gap:1px}.mainnav .tab{font-size:.78rem;padding:11px 10px}
  #view-home .verdict h1{font-size:3.2rem}
  #view-home .verdict .eyebrow{font-size:.68rem}
  .election-visual{padding:17px 14px}
  .visual-topline{font-size:.8rem}.visual-topline>span:last-child{font-size:.65rem}
  #view-home .readout .rd .rd-lbl{font-size:.65rem}#view-home .readout .rd b{font-size:1.9rem}
  #view-home .home-forecast-controls{align-items:stretch;gap:12px;padding:15px 0}
  #view-home .home-switch{width:100%;justify-content:stretch}#view-home .home-switch button{flex:1;font-size:.8rem;padding:8px 10px}
  #view-home .home-history-pick{flex:1;justify-content:space-between;gap:8px;font-size:.72rem}
  #view-home .home-history-pick select{min-width:135px;font-size:.75rem}
  .intro-result-links{width:100%;justify-content:flex-start}.intro-result-links button{min-height:32px}
  #view-home .hcard{grid-template-columns:34px minmax(90px,1fr) minmax(25px,.6fr) 34px;gap:9px}
  #view-home .hcard-photo{width:34px;height:40px}.hcard-action{display:none}
  #view-home .hcard-name{font-size:.85rem}#view-home .hcard-leader{font-size:.68rem}#view-home .hcard-seat{font-size:1.7rem}
  #view-home .bloc{padding:18px 14px 8px}#view-home .bloc-head h2{font-size:.85rem}
  .board-title h2{font-size:1.4rem}.board-title>p{font-size:.75rem}
  #view-e2022 .rank{padding:16px 12px;gap:12px}
  #view-e2022 .rank>.orglogo,#view-e2022 .rank>.orglogo img{height:60px!important}
  #view-e2022 .rank>.orglogo img{padding:5px 10px}
  #view-e2022 .rank>div strong{font-size:.9rem}
  .score-row b{font-size:2.35rem}.score-foot{align-items:start;flex-direction:column;gap:7px}
  .rank-no{font-size:.63rem;min-width:27px;padding:0 5px}
  .runs b{font-size:.8rem}.runs small{font-size:.6rem}
  .meter>span{font-size:.65rem}
  .grade-legend .grade{padding:4px 6px;font-size:.6rem}
  #view-e2022 .rank>.nocalib-note p{font-size:.7rem}
  .poll-result-card>header{padding:18px 16px 14px}.poll-blocgraph{margin-inline:16px}
  .poll-cols{padding-inline:12px;gap:10px}.poll-list .pname{font-size:.75rem}
  .poll-party-name{gap:5px}
  .poll-result-card .orglogo{width:37px;height:37px}.poll-result-card h3{font-size:1.1rem}
  .poll-result-card>footer{padding:11px 15px}
  .home-method .hero-countdown{gap:16px;flex-wrap:wrap}
  .home-method .hero-countdown .countdown-cells{gap:7px}
  .page-intro h2,.page-head h2,#view-polls .page-head h2{font-size:1.85rem}
  .pad,.hemi{padding:18px}.fd-head{padding-inline-end:28px}.fd-head .orglogo{width:40px!important;height:40px!important}
}
/* Secondary metadata remains readable in the compact layouts. */
.stamp,.brand-txt span,.edition-label,.visual-footnote,.hcard-leader,.hcard-pct,
.score-top small,.score-foot .grade,.rank-no,.runs small,.grade-legend .grade,
.hero-countdown .countdown-cells em,.poll-result-card>footer{font-size:.75rem}
#view-home .hcard-leader,#view-home .hcard-pct,#view-home .readout .rd .rd-lbl,
#view-e2022 .rank>div>span,#view-e2022 .rank-outlets>span{font-size:.75rem!important}
.footer-nav{display:flex;flex-wrap:wrap;gap:12px 23px;margin:19px 0;font-size:.875rem}
.footer-nav a{text-decoration:none;font-weight:600}
.footer-details{border-top:1px solid var(--rule);margin-top:16px;padding-top:7px}
.footer-details>summary{font-size:.85rem;font-weight:600;color:var(--ink)}
@media(max-width:420px){.brand-txt span{display:none}.stamp{font-size:.68rem}}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}.view.on{animation:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
@media print{
  .masthead,.home-method,.hero-link,.home-forecast-controls,.hero-description,.edition-label{display:none!important}
  #view-home.on{display:block;width:100%}
  #view-home .verdict{background:#FFF;border:0}#view-home .verdict-in{padding:0}
  .election-hero{display:block;padding:10px 0}.election-visual{display:none}
  #view-home .verdict h1{font-size:24pt}#view-home .verdict h1 br{display:none}
  #view-home .verdict h1 em{color:#000}#view-home .verdict-top{border:0}
  #view-home .board{display:block;padding:0}.board-title,.board-note,#view-home .bloc{display:none}
  .printsheet{display:block!important}body>footer{display:none}
}
