:root{color-scheme:dark;--bg:#101010;--ivory:#F0EDE6;--muted:#B8B8B8;--line:#333333;--soft:#171717;--rep:#B74750;--dem:#487FAF;--una:#D9D5CC;--other:#929292;--sans:'Inter',Arial,sans-serif;--serif:'Playfair Display',Georgia,serif;--mast:'Bodoni Moda',Georgia,serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ivory);font:400 15px/1.6 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,select,input{color:var(--ivory)}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--ivory);outline-offset:4px}::selection{background:#595148;color:var(--highlight-text)}.container{max-width:1380px;padding:0 clamp(21px,5vw,85px);margin:auto}.skip{position:absolute;left:-9999px;background:var(--ivory);color:var(--on-inverse);padding:12px;z-index:20}.skip:focus{left:10px;top:10px}.site-header{border-bottom:1px solid var(--line);padding-top:24px}.masthead{text-align:center;padding:12px 0 25px;white-space:nowrap}.masthead a{display:inline-block;font-family:var(--mast);font-weight:500;line-height:1.05;letter-spacing:-.053em;font-size:clamp(35px,7.2vw,112px);color:var(--ivory)}.navigation{display:flex;justify-content:center;gap:clamp(36px,7vw,105px);border-top:1px solid var(--line);padding:14px 0 17px}.navigation a{font-size:12px;letter-spacing:.2em;font-weight:600;color:var(--muted);transition:color .17s}.navigation a:hover,.navigation a[aria-current=page]{color:var(--ivory)}.site-footer{border-top:1px solid var(--line);margin-top:100px;padding:30px 0 50px}.foot-inner{display:flex;align-items:center;justify-content:space-between;gap:25px;flex-wrap:wrap}.footer-brand{font-family:var(--mast);font-size:26px;letter-spacing:-.05em}.footer-links{display:flex;gap:25px;flex-wrap:wrap;color:var(--muted);font-size:12px}.footer-links a:hover{color:var(--ivory)}.copyright{font-size:12px;color:var(--muted)}.page-intro{padding:58px 0 34px}.page-intro h1{font:500 clamp(39px,5vw,72px)/1.14 var(--serif);margin:12px 0 18px;letter-spacing:-.035em}.page-intro h1 em{font-weight:400}.eyebrow,.micro{font-size:11px;font-weight:600;letter-spacing:.15em;text-transform:uppercase}.eyebrow{color:var(--muted)}.asof{font-size:12px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}.muted{color:var(--muted)}.subtle{color:var(--muted);font-size:13px}.section{padding:38px 0 45px;border-top:1px solid var(--line)}.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:23px}.section-title h2{font:400 clamp(26px,3vw,40px)/1.26 var(--serif);letter-spacing:-.02em;margin:0}.section-title p{margin:0}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:0 0 34px;border-bottom:1px solid var(--line);border-top:1px solid var(--line)}.metric{padding:23px 18px 24px 0;min-width:0}.metric:not(:first-child){border-left:1px solid var(--line);padding-left:23px}.metric .micro{color:var(--muted);display:block;line-height:1.5}.metric-value{font:400 clamp(31px,3.4vw,53px)/1.23 var(--serif);letter-spacing:-.03em;margin:14px 0 3px;font-variant-numeric:tabular-nums}.metric .muted{font-size:12px}.chart-controls{display:flex;flex-wrap:wrap;gap:12px 24px;margin-bottom:24px}.chart-controls label{color:var(--muted);display:flex;flex-direction:column;gap:7px;font-size:12px;letter-spacing:.035em}.chart-controls select,.chart-controls input{padding:12px 32px 12px 12px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:0;min-width:165px;font-size:14px;max-width:100%}.chart-controls input{padding-right:12px}.chart-controls select{cursor:pointer}.chart-controls input::placeholder{color:var(--muted)}.year-legend{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:8px}.year-toggle{background:transparent;border:1px solid transparent;padding:11px 13px;min-height:44px;display:inline-flex;gap:10px;align-items:center;font-size:14px;color:var(--ivory)}.year-toggle i{display:inline-block;width:26px;border-top:3px solid currentColor;vertical-align:middle}.year-toggle.old i{border-top-style:dashed}.year-toggle.oldest i{border-top:3px dotted}.year-toggle[aria-pressed=false]{opacity:.42}.year-toggle:hover{border-color:var(--input-border)}.graph-frame{position:relative;width:100%;min-height:360px;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.graph-frame svg{width:100%;height:auto;overflow:visible;touch-action:pan-y}.graph-empty{padding:50px 20px;color:var(--muted);text-align:center;font-size:16px}.chart-tip{border-left:2px solid var(--ivory);padding:12px 15px;margin-top:14px;background:var(--soft);max-width:510px;color:var(--ivory);font-size:14px}.chart-tip .tip-head{font-weight:600}.chart-tip .tip-meta{color:var(--muted);font-size:12px}.small-note{color:var(--muted);font-size:12px;line-height:1.7;margin:14px 0 0}.party-bars{display:grid;gap:16px;max-width:950px}.party-row{display:grid;grid-template-columns:130px minmax(80px,1fr) 150px;gap:18px;align-items:center}.party-row .bar-track{background:var(--track);height:6px;position:relative}.party-row .bar-fill{height:100%;position:absolute;left:0;top:0;transition:width .15s}.party-row .figure{font-variant-numeric:tabular-nums;text-align:right;font-size:13px}.figure .muted{display:block;font-size:12px}.empty-inline{color:var(--muted);padding:28px 0;font-size:14px}.directories{border-top:1px solid var(--line)}.directory-item{border-bottom:1px solid var(--line)}.directory-item summary{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:21px 3px;cursor:pointer;min-height:62px}.directory-item summary::-webkit-details-marker{display:none}.dir-title{font:400 clamp(20px,2.1vw,28px)/1.25 var(--serif)}.dir-count{color:var(--muted);font-size:12px;margin-left:auto;margin-right:18px}.dir-chevron{font-size:21px;transition:transform .18s;color:var(--muted)}.directory-item[open] .dir-chevron{transform:rotate(45deg)}.directory-links{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px 18px;padding:7px 3px 30px}.directory-links a{font-size:13px;line-height:1.6;padding:7px 0;border-bottom:1px solid var(--hairline);overflow-wrap:anywhere}.directory-links a:hover,.plain-link:hover{color:var(--highlight-text);text-decoration:underline;text-underline-offset:4px}.ranking-controls{margin-bottom:9px}.status-line{font-size:12px;min-height:20px}.table-wrap{overflow-x:auto;scrollbar-color:var(--input-border) var(--soft);border-top:1px solid var(--line)}.rank-table{width:100%;border-collapse:collapse;table-layout:fixed;min-width:870px}.rank-table th{text-align:left;color:var(--muted);font:600 11px var(--sans);letter-spacing:.055em;text-transform:uppercase;position:sticky;top:0;background:var(--soft);z-index:2;padding:16px 12px;border-bottom:1px solid var(--input-border)}.rank-table td{padding:16px 12px;border-bottom:1px solid var(--hairline);font-size:13px;vertical-align:middle}.rank-table th:first-child,.rank-table td:first-child{width:160px}.rank-table th:nth-child(2){width:110px}.rank-table th:last-child{width:130px}.rank-table a{font-weight:600}.rank-table a:hover{text-decoration:underline}.party-stack{display:flex;flex-direction:column;gap:4px}.party-stack span{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.party-stack .mini-track{height:4px;background:var(--track);width:100%}.party-stack .mini-fill{height:100%;display:block}.td-num{font-variant-numeric:tabular-nums}.mobile-ranking{display:none}.profile-top{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:42px;margin-bottom:30px;padding:26px 0}.representative .name{font:400 clamp(24px,2.9vw,37px)/1.35 var(--serif);margin:8px 0}.representative .party-pill{display:inline-block;font-size:12px;color:var(--muted)}.representative .party-pill.r:before,.representative .party-pill.d:before,.representative .party-pill.u:before{content:'';width:8px;height:8px;background:var(--rep);display:inline-block;margin-right:8px}.representative .party-pill.d:before{background:var(--dem)}.representative .party-pill.u:before{background:var(--una)}.rep-group{margin:8px 0 20px}.rep-group strong{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-weight:600}.rep-line{padding:8px 0;border-bottom:1px solid var(--track)}.rep-line a:hover{text-decoration:underline}.link-grid{display:flex;flex-wrap:wrap;align-content:start;gap:9px;margin:12px 0}.link-grid a,.link-grid span{border:1px solid var(--input-border);padding:9px 12px;color:var(--ivory);font-size:13px;line-height:1.45}.link-grid a:hover{background:var(--hover)}.year-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 21px}.year-tabs button{background:transparent;border:1px solid var(--input-border);min-height:44px;padding:8px 17px;color:var(--muted);font-size:14px}.year-tabs button.selected{background:var(--ivory);border-color:var(--ivory);color:var(--on-inverse);font-weight:600}.history-list .results-card{border-bottom:1px solid var(--line);padding:19px 0}.results-card h3{font:400 19px var(--serif);margin:0 0 15px}.results-table{width:100%;border-collapse:collapse}.results-table th{text-align:left;font-size:11px;color:var(--muted);padding:7px 12px 10px 0;text-transform:uppercase}.results-table td{padding:12px 12px 12px 0;border-top:1px solid var(--hairline);vertical-align:middle;font-size:14px}.results-table td:last-child,.results-table th:last-child{text-align:right}.results-bar{width:min(200px,25vw);height:5px;background:var(--track)}.results-bar i{height:5px;display:block}.results-card details{margin-top:8px}.results-card summary{color:var(--muted);font-size:13px;cursor:pointer}.map-controls{margin-top:21px}.map-frame{min-height:315px;background:var(--panel-bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden;padding:18px}.map-frame svg{width:100%;max-height:480px;display:block}.map-frame .empty-inline{text-align:center;max-width:460px}.map-frame path{stroke:var(--map-outline);stroke-width:1.2;fill:var(--track);vector-effect:non-scaling-stroke;transition:fill .1s;cursor:pointer}.map-frame path.r{fill:#45272B}.map-frame path.d{fill:#243A50}.map-frame path.u{fill:#45423d}.map-frame path.is-selected,.map-frame path:hover{stroke:var(--highlight-text);stroke-width:2.8}.map-detail{margin-top:10px;font-size:13px;color:var(--muted)}.prose{max-width:840px}.prose h2{font:400 28px var(--serif);margin-top:26px}.prose p{line-height:1.9;color:var(--muted)}.prose a{text-decoration:underline;text-underline-offset:3px}.directory-intro{color:var(--muted);font-size:13px;margin-bottom:18px}.error-text{color:var(--ivory)}.empty-card{border:1px solid var(--input-border);padding:20px;color:var(--muted);line-height:1.7}.year-warning{font-size:12px;color:var(--muted);margin-bottom:13px}
@media(max-width:1020px){.directory-links{grid-template-columns:repeat(4,1fr)}.metrics{grid-template-columns:repeat(2,1fr)}.metric:nth-child(3){border-left:0;padding-left:0;border-top:1px solid var(--line)}.metric:nth-child(4){border-top:1px solid var(--line)}}
@media(max-width:720px){body{font-size:14px}.container{padding:0 20px}.site-header{padding-top:18px}.masthead{padding:10px 0 20px}.masthead a{font-size:clamp(29px,6.65vw,50px);letter-spacing:-.062em}.navigation{padding:15px 0;gap:45px}.navigation a{font-size:12px}.page-intro{padding:39px 0 30px}.page-intro h1{font-size:clamp(36px,8vw,49px)}.section{padding:28px 0 35px}.section-title{align-items:flex-start;flex-direction:column;gap:5px;margin-bottom:18px}.metrics{margin-bottom:18px}.metric{padding:18px 12px 18px 0}.metric:not(:first-child){padding-left:15px}.metric:nth-child(3){padding-left:0}.metric .micro{font-size:10px;letter-spacing:.06em}.metric-value{font-size:clamp(29px,7vw,42px);margin:9px 0 1px}.chart-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.chart-controls label{min-width:0}.chart-controls select,.chart-controls input{min-width:0;width:100%;padding:11px 24px 11px 10px;font-size:14px}.chart-controls input{padding-right:10px}.graph-frame{min-height:300px}.graph-frame svg{min-height:300px}.party-row{grid-template-columns:85px minmax(50px,1fr) 90px;gap:9px;font-size:12px}.party-row .figure{font-size:12px}.directory-links{grid-template-columns:repeat(2,minmax(0,1fr))}.dir-title{font-size:22px}.table-wrap{display:none}.mobile-ranking{display:block;border-top:1px solid var(--line)}.mobile-card{border-bottom:1px solid var(--line);padding:0}.mobile-card summary{cursor:pointer;list-style:none;padding:19px 1px}.mobile-card summary::-webkit-details-marker{display:none}.mobile-card-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.mobile-card-head strong{font-family:var(--serif);font-weight:400;font-size:20px}.mobile-card-head span{font-variant-numeric:tabular-nums}.mobile-card-body{padding:0 2px 20px}.mobile-card-party{display:grid;grid-template-columns:22px 1fr 60px;gap:8px;align-items:center;margin-bottom:10px}.mobile-card-party .mini-track{height:5px;background:var(--track)}.mobile-card-party .mini-fill{height:5px}.mobile-card-party .pct{text-align:right;font-size:12px}.mobile-meta{font-size:12px;color:var(--muted);padding:10px 0}.mobile-card-body .plain-link{display:inline-block;padding:8px 0;text-decoration:underline;text-underline-offset:3px}.profile-top{grid-template-columns:1fr;gap:20px;padding:20px 0}.map-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.results-table td{font-size:12px}.results-bar{width:65px}.foot-inner{align-items:flex-start;flex-direction:column}.site-footer{margin-top:65px}}
@media(max-width:370px){.masthead a{font-size:27px}.metric-value{font-size:27px}.year-toggle{padding:9px;font-size:14px}.directory-links{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}

.compare-pickers{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:23px}.compare-pickers label{display:flex;flex-direction:column;gap:8px;color:var(--muted);font-size:13px}.compare-pickers select{background:var(--soft);border:1px solid var(--input-border);padding:12px;color:var(--ivory);min-width:0}.compare-panels{display:grid;grid-template-columns:1fr 1fr;gap:45px;margin-top:22px}.compare-panel{border-top:1px solid var(--line);padding:24px 0}.compare-panel h2{font:400 32px/1.3 var(--serif);margin:12px 0}.compare-major{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin:20px 0;padding:16px 0;border-bottom:1px solid var(--line)}.compare-major strong{font:400 40px var(--serif)}.compare-stat{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--hairline);font-size:13px}.compare-stat span{color:var(--muted)}.compare-bar{display:flex;margin:18px 0 14px;background:var(--track);min-height:8px}.compare-panel .plain-link{display:inline-block;margin-top:19px}
@media(max-width:720px){.compare-pickers,.compare-panels{grid-template-columns:1fr}.compare-panels{gap:16px}.compare-panel h2{font-size:26px}}

.rank-table th button{background:transparent;border:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;text-align:left;cursor:pointer;padding:7px 0;min-height:32px}.rank-table th button:hover{color:var(--ivory);text-decoration:underline}.history-term{padding:12px 0;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:5px 15px;align-items:baseline}#district-presidential-history{margin:20px 0 26px}#district-presidential-history select{padding:10px;background:var(--input-bg);border:1px solid var(--input-border);color:var(--ivory);margin:10px 0 20px;max-width:100%}
[hidden]{display:none!important}
.graph-frame svg{max-width:100%}
@media(max-width:650px){.year-legend{gap:3px}.section-title{flex-wrap:wrap}.rank-table th button{font-size:12px}}


/* V2.1 · compact accessible circular selectors, resilient page geometry */
html,body{width:100%;max-width:100%;overflow-x:clip}
.container{width:100%;max-width:1380px;min-width:0}
main,main>section,main>header,.section-title,.chart-controls,.ranking-controls,.graph-frame,.table-wrap{min-width:0;max-width:100%}
.choice-controls{display:flex;flex-wrap:wrap;align-items:flex-start;gap:18px 30px;margin:0 0 24px;min-width:0}
.choice-group,.year-field{padding:0;margin:0;border:0;min-width:0;max-width:100%}
.choice-group legend,.year-field legend{display:block;padding:0;margin:0 0 9px;color:var(--muted);font:500 13px/1.5 var(--sans)}
.choice-items,.year-legend{display:flex;align-items:center;flex-wrap:wrap;gap:6px 13px}
.circle-choice,.year-option{display:inline-flex;align-items:center;gap:8px;position:relative;cursor:pointer;color:var(--muted);font:500 13px/1.45 var(--sans);padding:9px 8px 9px 0;min-height:44px;white-space:normal}
.circle-choice input,.year-option input{appearance:none;-webkit-appearance:none;display:inline-block;width:19px;height:19px;border:1.5px solid var(--muted);border-radius:50%;background:transparent;flex:0 0 19px;position:relative;margin:0;cursor:pointer;outline-offset:4px}
.circle-choice input:checked,.year-option input:checked{border-color:var(--ivory)}
.circle-choice input:checked:after,.year-option input:checked:after{content:'';position:absolute;inset:4px;border-radius:50%;background:var(--ivory)}
.circle-choice:has(input:checked),.year-option:has(input:checked){color:var(--ivory)}
.circle-choice input:focus-visible,.year-option input:focus-visible{outline:2px solid var(--ivory)}
.year-field{border-top:1px solid var(--line);padding-top:15px;margin:0 0 8px}
.legend-hint{font-size:12px;font-weight:400;padding-left:7px;color:var(--muted)}
.year-legend{gap:5px 16px;margin:0 0 11px}
.year-option{gap:8px;padding:7px 5px 7px 0}
.year-option .year-sample{width:22px;flex:0 0 22px;border-top:3px solid var(--ivory)}
.year-option.old .year-sample{border-top-style:dashed}
.year-option.oldest .year-sample{border-top-style:dotted}
.year-option:not(:has(input:checked)) .year-sample{opacity:.35}
.graph-frame{min-height:330px;min-width:0;max-width:100%;width:100%;display:flex;align-items:stretch;justify-content:center;overflow:hidden}
.graph-frame>.graph-empty{display:flex;align-items:center;justify-content:center;flex:1 1 100%;min-width:0;width:100%;max-width:100%;margin:0;min-height:280px;line-height:1.65;overflow-wrap:normal;word-break:normal;text-align:center;padding:44px clamp(12px,4vw,65px)}
.graph-frame>svg{display:block;flex:0 0 100%;width:100%;max-width:100%;height:auto;min-width:0;overflow:hidden;touch-action:pan-y}
.ranking-controls{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin:0 0 12px}
.ranking-choices{gap:16px 35px;margin:0 0 4px}
.ranking-choices .choice-group{flex:1 1 245px}
.ranking-choices .choice-group:last-child{flex:2 1 380px}



.table-wrap{width:100%;overflow-x:auto;overscroll-behavior-x:contain}
.rank-table{min-width:900px}
@media(max-width:1000px){.rank-table{display:none}.table-wrap:has(.rank-table){display:none}.mobile-ranking{display:block;border-top:1px solid var(--line)}
.mobile-card{border-bottom:1px solid var(--line);padding:0}.mobile-card summary{cursor:pointer;list-style:none;padding:17px 1px}.mobile-card summary::-webkit-details-marker{display:none}
.mobile-card-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.mobile-card-head strong{font-family:var(--serif);font-weight:400;font-size:19px}.mobile-card-head span{font-variant-numeric:tabular-nums}
.mobile-card-body{padding:0 2px 20px}.mobile-card-party{display:grid;grid-template-columns:22px minmax(0,1fr) 60px;gap:8px;align-items:center;margin-bottom:10px}.mobile-card-party .mini-track{height:5px;background:var(--track)}.mobile-card-party .mini-fill{height:5px}.mobile-card-party .pct{text-align:right;font-size:12px}.mobile-meta{font-size:12px;color:var(--muted);padding:10px 0}.mobile-card-body .plain-link{display:inline-block;padding:8px 0;text-decoration:underline;text-underline-offset:3px}
}
@media(max-width:720px){
 .container{padding-left:18px;padding-right:18px}
 .section-title p{max-width:100%}
 .choice-controls{gap:14px 0}
 .choice-group{width:100%;flex:1 1 100%}
 .choice-items,.year-legend{gap:2px 12px}
 .circle-choice,.year-option{font-size:13px;min-height:44px}
 
 .graph-frame{min-height:310px}
 .graph-frame>.graph-empty{min-height:300px;padding:30px 16px;font-size:15px}
 .graph-frame>svg{min-height:0}
 .year-field{margin-bottom:12px}
 .chart-tip{max-width:100%;overflow-wrap:break-word}
}
@media(max-width:390px){.container{padding-left:16px;padding-right:16px}.year-legend{gap:1px 10px}.year-option{font-size:12px}}

/* V2.2 · outcome-aware political shading. The JS computes colors from current JSON releases. */
.political-map-legend{display:flex;align-items:center;gap:9px 13px;flex-wrap:wrap;margin:2px 0 15px;color:var(--muted);font-size:12px;line-height:1.65}
.political-map-legend>span:first-child{color:var(--ivory);font-weight:600;margin-right:10px}
.map-swatch{width:16px;height:11px;display:inline-block;border:1px solid var(--input-border);vertical-align:middle}
.map-swatch-r{background:#B74750}.map-swatch-d{background:#487FAF}.map-swatch-missing{background:var(--track)}
.map-secondary-notice{flex:1 1 100%;font-size:12px;color:var(--notice)}
.map-inner{width:100%;min-width:0}
.map-inner svg{width:100%;max-height:540px;display:block;margin:auto}
.map-inner path{stroke:var(--map-outline);stroke-width:.6;stroke-opacity:.75;vector-effect:non-scaling-stroke;cursor:pointer;transition:stroke-width .15s,stroke .15s}
.map-inner path:hover,.map-inner path.is-selected{stroke:var(--ivory);stroke-width:2.8;stroke-opacity:1}
.map-inner path:focus-visible{outline:none;stroke:var(--highlight-text);stroke-width:3.8}
.map-polygon-label{font:600 13px/1.2 var(--sans);fill:var(--highlight-text);stroke:var(--map-label-outline);stroke-width:2.7px;paint-order:stroke;pointer-events:none}
.map-member-label{font:500 11px/1.2 var(--sans);fill:var(--ivory);stroke:var(--map-label-outline);stroke-width:2.6px;paint-order:stroke;pointer-events:none}
.map-detail{line-height:1.85;font-size:14px;color:var(--ivory);border-top:1px solid var(--line);padding:15px 4px 6px;min-height:80px}
.map-detail .map-source{font-size:12px;color:var(--muted)}
.map-frame{min-height:340px;padding:clamp(12px,2.5vw,26px)}
.political-directory-item{border-left:4px solid var(--area-shade,#333)!important;padding-left:11px!important;display:flex!important;flex-direction:column;gap:2px;min-width:0}
.political-directory-item small{font:400 11px/1.5 var(--sans);color:var(--muted);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%}
.directory-links a{min-height:42px}
.political-directory-item:hover{background:var(--hover)}
@media(max-width:720px){.map-inner svg{max-height:410px}.map-polygon-label{font-size:17px}.map-member-label{display:none}.map-frame{padding:11px;min-height:270px}.map-detail{font-size:13px}.political-map-legend{font-size:12px}.directory-links a{padding:12px 5px}}

/* V2.3 · year-versus-year controls are accessible circles, not fixed dropdowns. */
.comparison-year-controls{border-block:1px solid var(--line);padding:15px 0;margin:8px 0 14px;gap:14px 32px}
.compare-year-group{flex:1 1 315px}
.compare-year-group .circle-choice{min-height:44px}
#rank-year-controls{margin-bottom:22px}
@media(max-width:680px){.comparison-year-controls{gap:13px}.compare-year-group{flex:1 1 100%}.compare-year-group .choice-items{column-gap:15px}}

/* Exact same continuous 0–40-point margin intensity transform for R and D. */
.shade-scale{display:inline-flex;gap:2px;vertical-align:middle}
.shade-scale i{display:block;width:12px;height:12px;border:1px solid var(--input-border)}

/* V3 themes. Dark is the default, independent of the operating system. */
:root {
 --input-bg:#1a1a1a;--input-border:#424242;--track:#292929;
 --hairline:#282828;--hover:#272727;--panel-bg:#151515;
 --notice:#c9bda9;--map-label-outline:#131313;--map-outline:#d9d5cc;
 --highlight-text:#ffffff;--on-inverse:#101010;
 --chart-grid:#404040;--chart-axis:#b8b8b8;--chart-total:#f0ede6;
 --map-neutral:#292929;--map-rep-low:#30262a;--map-dem-low:#242a34;
}
:root[data-theme="light"] {
 color-scheme:light;--bg:#f4f1ea;--ivory:#171717;--muted:#615e59;
 --line:#cbc5ba;--soft:#eeebe4;--rep:#b74750;--dem:#487faf;
 --una:#827d75;--other:#77736e;--input-bg:#fffdf8;
 --input-border:#bcb6ac;--track:#dfdbd3;--hairline:#ded9d0;
 --hover:#e8e3da;--panel-bg:#ece7de;--notice:#6d5139;
 --map-label-outline:#faf8f3;--map-outline:#777068;
 --highlight-text:#181818;--on-inverse:#fffdf9;
 --chart-grid:#d6d0c7;--chart-axis:#625e57;--chart-total:#272727;
 --map-neutral:#d5d1c9;--map-rep-low:#f5e7e5;--map-dem-low:#e6edf5;
}
:root[data-theme="light"] body{background:var(--bg);color:var(--ivory)}
:root[data-theme="light"] ::selection{background:#d9cdbb;color:#171717}
:root[data-theme="light"] .year-tabs button.selected{color:var(--on-inverse)}
:root[data-theme="light"] .directory-links a:hover,
:root[data-theme="light"] .plain-link:hover{color:var(--ivory)}
:root[data-theme="light"] .map-frame path.is-selected,
:root[data-theme="light"] .map-frame path:hover{stroke:#161616}
:root[data-theme="light"] .map-polygon-label,
:root[data-theme="light"] .map-member-label{fill:#171717;stroke:#faf8f3}
:root[data-theme="light"] .map-inner path:focus-visible{stroke:#171717}
:root[data-theme="light"] .map-frame{background:var(--panel-bg)}
:root[data-theme="light"] .table-wrap{scrollbar-color:var(--input-border) var(--soft)}
:root[data-theme="light"] .map-secondary-notice{color:var(--notice)}
/* Shared accessible theme switch, integrated into the original masthead. */
.masthead{position:relative}
.theme-switch{position:absolute;right:0;top:-11px;display:inline-flex;align-items:center;gap:8px;
 background:var(--soft);color:var(--ivory);border:1px solid var(--line);
 padding:8px 12px;min-height:42px;font:600 11px/1.2 var(--sans);
 letter-spacing:.07em;text-transform:uppercase;transition:background .18s,color .18s,border-color .18s}
.theme-switch:hover{background:var(--hover);border-color:var(--input-border)}
.theme-switch .theme-symbol{font-size:17px;line-height:1;display:block}
.theme-switch:focus-visible{outline:2px solid var(--ivory);outline-offset:3px}
@media(max-width:720px){.theme-switch{position:static;margin:6px auto 0;display:flex;width:max-content}
 .masthead{white-space:normal}.masthead a{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){.theme-switch{transition:none}}


/* V3 fixed horizontal navigation and scroll-only compact masthead.
   Sticky positioning belongs to #header: sticky children inside a short parent
   cannot remain attached once their parent scrolls out of the viewport. */
html,body{max-width:100%;overflow-x:clip}
html{scroll-padding-top:122px}
#header{position:sticky;top:0;z-index:100;isolation:isolate;max-width:100%;background:var(--bg)}
.site-header{background:var(--bg);border-bottom:1px solid var(--line);transition:padding .22s ease,box-shadow .22s ease}
.site-header .masthead{transition:padding .22s ease}
.site-header .masthead a{transition:font-size .22s ease,letter-spacing .22s ease;white-space:nowrap}
.site-header .navigation{transition:padding .22s ease,gap .22s ease}
/* At the page top retain the original generous editorial masthead. */
.site-header:not(.is-condensed) .masthead a{font-size:clamp(24px,7vw,108px)}
/* Compact only when scrolling; never the permanent default. */
.site-header.is-condensed{padding-top:3px;box-shadow:0 5px 22px rgba(0,0,0,.14)}
.site-header.is-condensed .masthead{padding:4px 0 8px}
.site-header.is-condensed .masthead a{font-size:clamp(26px,3vw,40px);letter-spacing:-.05em}
.site-header.is-condensed .navigation{padding:8px 0 10px;gap:clamp(22px,5vw,70px)}
.site-header.is-condensed .navigation a{font-size:11px}
.site-header.is-condensed .theme-switch{top:0;min-height:34px;padding:5px 9px}
@media(max-width:720px){
 .site-header:not(.is-condensed) .masthead{padding:10px 0 14px}
 .site-header:not(.is-condensed) .masthead a{font-size:clamp(22px,6vw,42px)}
 .site-header .navigation{gap:clamp(16px,5vw,32px);padding:10px 0 12px}
 .site-header.is-condensed .masthead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 0 7px}
 .site-header.is-condensed .masthead a{font-size:clamp(18px,4vw,26px);flex:1 1 auto;min-width:0;text-align:left}
 .site-header.is-condensed .theme-switch{position:static;margin:0;min-height:33px;padding:6px 9px;gap:0;flex:0 0 auto}
 .site-header.is-condensed .theme-switch .theme-label{display:none}
 .site-header.is-condensed .navigation{padding:7px 0 9px}
}
@media(max-width:390px){
 .site-header:not(.is-condensed) .masthead a{font-size:clamp(20px,5.85vw,24px)}
 .site-header.is-condensed .masthead a{font-size:clamp(16px,4vw,19px)}
}
@media(prefers-reduced-motion:reduce){
 .site-header,.site-header .masthead,.site-header .masthead a,.site-header .navigation{transition:none}
}

/* V4 masthead: viewport-fixed to work independent of ancestors' overflow. */
#header{position:fixed!important;top:0;left:0;right:0;width:100%;z-index:200;background:var(--bg)}
.header-spacer{height:var(--full-header-height,194px);pointer-events:none}
#header .masthead a{max-width:100%;font-size:clamp(21px,6.9vw,108px)}
#header .container{min-width:0}
html,body{width:100%;max-width:100%;overflow-x:clip}
html{scroll-padding-top:130px}
.v4-feature-link{border:1px solid var(--line);background:var(--soft);padding:22px 27px;display:flex;gap:25px;align-items:center;justify-content:space-between;margin:0 0 46px}
.v4-feature-link strong{font:400 clamp(21px,2.4vw,29px)/1.3 var(--serif);display:block;margin-top:9px}
.v4-feature-link p{font-size:13px;color:var(--muted);margin:9px 0 0}
.v4-cta{display:inline-block;padding:13px 16px;border:1px solid var(--input-border);font-size:12px;white-space:nowrap;font-weight:700;letter-spacing:.04em}
.v4-cta:hover{background:var(--ivory);color:var(--on-inverse)}
.v4-tabs{display:flex;gap:16px;border-bottom:1px solid var(--line);margin:10px 0 26px}
.v4-tabs button{border:0;background:transparent;color:var(--muted);padding:15px 3px;position:relative;font-weight:600;cursor:pointer}
.v4-tabs button.active{color:var(--ivory)}.v4-tabs button.active:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--ivory)}
.v4-toolbar{display:grid;grid-template-columns:2fr 1fr 2fr;gap:15px 24px;align-items:end;margin:18px 0 26px}
.v4-toolbar label,.compare-pickers label{font-size:12px;color:var(--muted);display:grid;gap:7px}
.v4-toolbar select,.compare-pickers select{border:1px solid var(--input-border);background:var(--input-bg);color:var(--ivory);min-width:0;width:100%;padding:12px 10px}
.v4-year-field{margin-bottom:22px}.v4-year-field .year-legend{gap:10px}
.v4-graph{min-height:280px;margin-top:16px}.v4-graph svg{overflow:visible}
.v4-table{margin-top:25px}.v4-table table{width:100%;min-width:700px;border-collapse:collapse}
.v4-table th,.v4-table td{padding:12px 15px;border-bottom:1px solid var(--line);text-align:right;font-size:13px;white-space:nowrap}
.v4-table th:first-child,.v4-table td:first-child{text-align:left}
.v4-table th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.v4-up{color:var(--ivory);font-variant-numeric:tabular-nums}
.v4-boundary-warning{border-left:3px solid var(--rep);padding:11px 15px;background:var(--soft);font-size:13px;margin:12px 0}
.fs-data-banner{display:block;padding:8px 0;border-bottom:1px solid var(--input-border);background:var(--soft);text-align:center;font-size:11px;letter-spacing:.08em;font-weight:700}
.fs-data-banner a{text-decoration:underline;text-underline-offset:3px}.fs-data-banner.demo{background:#5c4331;color:#fff0d5;border-color:#735439}
.fs-data-banner.production{font-weight:500;color:var(--muted)}
.fs-demo-watermark{display:inline-block;font-size:10px;text-transform:uppercase;letter-spacing:.1em;border:1px solid currentColor;padding:1px 5px;vertical-align:middle}
body.fs-demo .map-frame:before{content:'SCHEMATIC ONLY · NOT HISTORICAL NORTH CAROLINA BOUNDARIES';display:block;text-align:center;color:var(--muted);font-size:10px;letter-spacing:.09em;padding:10px}
@media(max-width:780px){.v4-toolbar{grid-template-columns:1fr 1fr}.v4-toolbar label:first-child{grid-column:1/-1}.v4-feature-link{flex-direction:column;align-items:flex-start}}
@media(max-width:480px){.v4-toolbar{display:grid;grid-template-columns:1fr}.v4-toolbar label:first-child{grid-column:auto}.fs-data-banner{line-height:1.5}.v4-feature-link{padding:17px}}

.site-header.is-condensed .fs-data-banner{padding:3px 0;font-size:10px}
.site-header.is-condensed .fs-data-banner .banner-detail{display:none}
.site-header .fs-data-banner{transition:padding .22s ease}
@media(max-width:720px){.site-header:not(.is-condensed) .masthead a{font-size:clamp(21px,5.7vw,42px)}.site-header .navigation{gap:clamp(15px,4vw,32px)}.site-header .navigation a{letter-spacing:.12em;font-size:10px}}

/* V4.2: Reserve a real navigation slot for the theme control. No logo overlap. */
#header .masthead{position:relative;display:block;text-align:center;white-space:nowrap;}
#header .masthead a{display:inline-block;max-width:100%;}
#header .nav-rail{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:clamp(8px,2vw,22px);min-height:63px;border-top:1px solid var(--line);}
#header .nav-rail .navigation{grid-column:2;display:flex;justify-content:center;align-items:center;border-top:0;min-width:0;padding:9px 0;margin:0;}
#header .nav-rail .theme-switch{grid-column:3;position:static;justify-self:end;margin:0;min-height:37px;white-space:nowrap;padding:7px 11px;font-size:10px;letter-spacing:.04em;}
#header .nav-rail .demo-entry{grid-column:1;grid-row:1;justify-self:start;font-size:10px;letter-spacing:.03em;text-decoration:underline;text-underline-offset:3px;color:var(--muted);}
#header .nav-rail .demo-entry:hover{color:var(--ivory)}
#header .site-header.is-condensed .masthead a{font-size:clamp(21px,3vw,40px);}
#header .site-header.is-condensed .nav-rail{min-height:40px;}
#header .site-header.is-condensed .nav-rail .navigation{padding:6px 0;}
#header .site-header.is-condensed .nav-rail .theme-switch{min-height:32px;padding:5px 8px;}
@media(max-width:900px){
 #header .nav-rail{grid-template-columns:minmax(0,1fr) auto;gap:10px;min-height:49px;}
 #header .nav-rail .navigation{grid-column:1;grid-row:1;justify-content:center;gap:clamp(12px,3vw,27px);}
 #header .nav-rail .theme-switch{grid-column:2;grid-row:1;justify-self:end;}
 #header .nav-rail .theme-label{display:none;}
 #header .nav-rail .theme-switch{width:38px;justify-content:center;padding:5px;}
 #header .nav-rail .demo-entry{grid-column:1/-1;grid-row:2;justify-self:center;padding:0 0 8px;font-size:10px;}
}
@media(max-width:480px){
 #header .nav-rail{gap:5px;}
 #header .nav-rail .navigation{gap:clamp(8px,2.8vw,15px);}
 #header .nav-rail .navigation a{font-size:9px;letter-spacing:.08em;}
 #header .nav-rail .theme-switch{width:34px;min-height:32px;}
}
