/* ========================================================================== */
/* INTEGRATED: forecast pages */
/* ========================================================================== */

.iv-forecast-page {
    --iv-shell: min(calc(100% - 72px), 1320px);
    margin: 0;
    overflow-x: clip;
    background: var(--brand_white) !important;
    color: var(--brand_black);
    font-family: var(--iv-font-sans);
    text-align: left;
}

.iv-forecast-page,
.iv-forecast-page *,
.iv-forecast-page *::before,
.iv-forecast-page *::after {
    box-sizing: border-box;
}

.iv-forecast-page :where(h1, h2, h3, h4, h5, h6, p, a, text, label, button, input, select, td, th) {
    color: inherit;
}



.iv-forecast-page :where(button, input, select) {
    font: inherit;
}

.iv-forecast-page :where(button, select) {
    cursor: pointer;
}

.iv-forecast-page :where(a) {
    text-underline-offset: 4px;
}

.iv-forecast-page [hidden] {
    display: none !important;
}

/* Section rhythm is handled by the major content blocks below. Legacy forecast
   renderers may still inject <hr> elements, so keep them from creating a
   second, competing divider. */
.iv-forecast-page hr {
    display: none !important;
}

/* In-page forecast route */
.iv-forecast-page #nav_menu_forecast.iv-forecast-toc {
    position: fixed;
    top: 152px;
    left: 0;
    z-index: 740;
    display: none !important;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    width: 50px;
    min-height: 0;
    margin: 0;
    padding: 4px;
    overflow: hidden;
    border: 0;
    background: transparent;
    box-shadow: none;
    opacity: 1;
    transform: none;
    transition: width 180ms ease;
}

.iv-forecast-page #nav_menu_forecast.iv-forecast-toc:is(:hover, :focus-within) {
    width: 190px;
    background: var(--brand_white);
    box-shadow: none;
}

.iv-forecast-page #nav_menu_forecast.iv-forecast-toc p {
    position: relative;
    display: flex;
    align-items: center;
    width: 42px;
    margin: 0;
    padding: 0 0 0 8px;
    overflow: hidden;
    color: transparent;
    font-family: var(--iv-font-mono);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .025em;
    line-height: 1.2;
    text-overflow: clip;
    white-space: nowrap;
    cursor: pointer;
    transition: width 180ms ease, padding 180ms ease, color 120ms ease;
}

.iv-forecast-page #nav_menu_forecast.iv-forecast-toc p::before {
    position: absolute;
    top: 50%;
    left: 8px;
    width: 10px;
    height: 2px;
    background: var(--iv-rule);
    content: "";
    transform: translateY(-50%);
    transition: width 150ms ease, background-color 150ms ease;
}

.iv-forecast-page #nav_menu_forecast.iv-forecast-toc:is(:hover, :focus-within) p {
    width: 182px;
    padding-left: 35px;
    color: var(--iv-neutral);
}

.iv-forecast-page #nav_menu_forecast.iv-forecast-toc:is(:hover, :focus-within) p:is(:hover, .active) {
    color: var(--brand_black);
}

.iv-forecast-page #nav_menu_forecast.iv-forecast-toc p.active {
    box-shadow: none;
}

.iv-forecast-page #nav_menu_forecast.iv-forecast-toc p:is(:hover, :focus-visible)::before {
    width: 17px;
    background: var(--brand_black);
}

.iv-forecast-page #nav_menu_forecast.iv-forecast-toc p.active::before {
    width: 18px;
    background: var(--iv-orange);
}

/* Page shell */
.iv-forecast-page #data-div.iv-forecast-main {
    display: block;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: left !important;
}

.iv-forecast-page .iv-forecast-shell {
    width: var(--iv-shell);
    margin-inline: auto;
}

.iv-forecast-page .iv-breadcrumb {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-top: 20px;
    color: var(--iv-neutral);
    font-family: var(--iv-font-mono);
    font-size: 11px;
    font-weight: 650;
    letter-spacing: -0.02em;
    text-transform: uppercase;
}

.iv-forecast-page .iv-breadcrumb a {
    color: inherit;
    text-decoration-thickness: 1px;
}

.iv-forecast-page .iv-forecast-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(520px, .9fr);
    grid-template-areas:
        "title switcher"
        "headline headline";
    align-items: start;
    gap: 20px;
    padding: 10px 0 12px;
    border-bottom: 0;
}

.iv-forecast-page .iv-forecast-title-group {
    display: contents;
}

.iv-forecast-page .iv-control-label,
.iv-forecast-page .iv-map-kicker {
    margin: 0;
    color: var(--iv-accent-text);
    font-family: var(--iv-font-mono);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.iv-forecast-page #state-title {
    grid-area: title;
    display: flex !important;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    font-family: var(--iv-font-sans);
    font-size: inherit !important;
    line-height: 1;
    text-align: left;
}

.iv-forecast-page #state-title .state-title-span {
    display: inline-block;
    max-width: 100%;
    color: var(--brand_black);
    font-family: var(--iv-font-sans);
    font-size: clamp(46px, 6vw, 70px) !important;
    font-weight: 600 !important;
    letter-spacing: -.055em;
    line-height: .94;
    overflow-wrap: anywhere;
    border-bottom: 0 !important;
    background: none !important;
}

.iv-forecast-page #state-title .iv-title-detail {
    color: var(--brand_black);
    font-family: var(--iv-font-sans);
    font-size: clamp(25px, 3.2vw, 42px);
    font-weight: 550;
    letter-spacing: -.045em;
    line-height: 1.02;
}

.iv-forecast-page #updated_time {
    display: inline-flex;
    align-items: center;
    margin: 0 !important;
    color: var(--iv-neutral);
    font-size: 11px !important;
    font-weight: 650;
    letter-spacing: .025em;
    text-align: left !important;
    border-bottom: 0px;
    padding:0px;
    text-transform: uppercase;
}

.iv-forecast-page #forecast-headline {
    grid-area: headline;
    width: 100%;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    text-align: left !important;
}

.iv-forecast-page #forecast-headline h2,
.iv-forecast-page #forecast-headline .forecast-line {
    margin: 0 !important;
    padding: 0 !important;
    color: var(--brand_black);
    font-family: var(--iv-font-sans);
    font-size: clamp(23px, 2.7vw, 32px) !important;
    letter-spacing: -.035em;
    line-height: 1.25 !important;
    text-align: left !important;
    font-weight:450 !important;
}

.iv-forecast-page .iv-forecast-switcher {
    grid-area: switcher;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-self: start;
    justify-items: end;
    align-items: start;
    gap: 12px;
    padding-top: 0;
    border-top: 0;
}

.iv-forecast-page .iv-forecast-switcher-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0;
}

.iv-forecast-page .forecast_button,
.iv-forecast-page .iv-methodology-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    margin: 0 !important;
    padding: 10px 16px !important;
    border: 1px solid var(--brand_black) !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--brand_black) !important;
    font-family: var(--iv-font-mono);
    font-size: 11px !important;
    font-weight: 750 !important;
    text-decoration: none !important;
    margin-left:10px
}

.iv-forecast-page .forecast_button + .forecast_button {
    border-left: 0 !important;
}

.iv-forecast-page .forecast_button:is(:hover, .active) {
    background: var(--brand_black) !important;
    color: var(--brand_white) !important;
}

.iv-forecast-page .iv-methodology-link {
    gap: 18px;
    position: static !important;
    inset: auto !important;
    z-index: auto !important;
    transform: none;
    border-color: var(--brand_orange) !important;
    background: var(--brand_orange) !important;
    color: var(--iv-on-accent) !important;
    box-shadow: none;
    margin-left: 10px !important;
}

.iv-forecast-page .iv-methodology-link:hover {
    box-shadow: 4px 4px 0 var(--brand_black);
    
}

.iv-forecast-page .iv-section-heading {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(260px, 420px);
    gap: 42px;
    align-items: end;
    padding-bottom: 0;
    border-bottom: 0;
}

.iv-forecast-page .iv-section-heading h2,
.iv-forecast-page .iv-analysis-panel > h2,
.iv-forecast-page .iv-analysis-panel #what-could h2 {
    max-width: 760px;
    margin: 0;
    color: var(--brand_black);
}

.iv-forecast-page .iv-section-heading > p,
.iv-forecast-page .iv-compact-section-heading > p:last-child,
.iv-forecast-page .descrips {
    margin: 0;
    color: var(--iv-neutral);
    font-size: 14px;
    font-weight: 450;
    line-height: 1.55;
    text-align: left !important;
    margin-top: 10px;
}

.iv-forecast-page .iv-control-map-workspace {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(18px, 2.5vw, 30px);
    align-items: stretch;
    padding: 20px 0 15px;
    border-bottom: 0;
    scroll-margin-top: 92px;
}

.iv-forecast-page .iv-compact-section-heading {
    padding-bottom: 0;
    border-bottom: 0;
}

.iv-forecast-page .iv-compact-section-heading h2 {
    margin: 7px 0 0;
    color: var(--brand_black);
}

.iv-forecast-page .iv-compact-section-heading > p:last-child {
    margin-top: 10px;
}

.iv-forecast-page .iv-forecast-overview,
.iv-forecast-page .iv-statewide-overview,
.iv-forecast-page .iv-forecast-map-section,
.iv-forecast-page .iv-forecast-section {
    padding: 30px 0;
    border-top: 1px solid var(--iv-rule);
    border-bottom: 0;
}

/* Joint governor and legislative control */
.iv-forecast-page .iv-section-kicker {
    margin: 0 0 9px;
    color: var(--iv-orange);
    font-family: var(--iv-font-mono);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.iv-forecast-page .iv-joint-control-section {
    scroll-margin-top: 92px;
}

.iv-forecast-page .iv-joint-control-odds {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 24px;
}

.iv-forecast-page .iv-joint-odds-item {
    display: grid;
    gap: 5px;
    min-width: 0;
    text-align: center;
}

.iv-forecast-page .iv-joint-odds-item strong {
    font-family: var(--iv-font-sans);
    font-size: clamp(26px, 3vw, 42px);
    font-weight: 600;
    letter-spacing: -.035em;
    line-height: 1;
}

.iv-forecast-page .iv-joint-odds-item span {
    color: var(--iv-neutral);
    font-size: 11px;
    font-weight: 700;
    line-height: 1.35;
}

.iv-forecast-page .iv-joint-odds-item.is-dem strong {
    color: var(--brand_blue);
}

.iv-forecast-page .iv-joint-odds-item.is-rep strong {
    color: var(--brand_red);
}

.iv-forecast-page .iv-joint-control-chart {
    width: min(100%, 980px);
    margin: 26px auto 0;
}

.iv-forecast-page .iv-joint-panel-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
}

.iv-forecast-page .iv-joint-panel-heading h3 {
    margin: 0;
    font-family: var(--iv-font-sans);
    font-size: clamp(20px, 2.1vw, 28px);
    font-weight: 600;
    letter-spacing: -.025em;
}

.iv-forecast-page .iv-joint-grid-panel svg,
.iv-forecast-page .iv-joint-margin-grid,
.iv-forecast-page .iv-joint-seat-histogram {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
}

.iv-forecast-page .iv-joint-control-line {
    pointer-events: none;
    stroke: var(--brand_black);
    stroke-width: 2px;
    vector-effect: non-scaling-stroke;
}

.iv-forecast-page .iv-joint-control-line {
    stroke-dasharray: 5 4;
}

.iv-forecast-page .iv-joint-control-line.is-governor-line {
    stroke-dasharray: 2 3;
}

.iv-forecast-page .iv-joint-axis :is(path, line) {
    stroke: var(--iv-rule-strong);
    vector-effect: non-scaling-stroke;
}

.iv-forecast-page :is(.iv-joint-seat-grid, .iv-joint-margin-grid) .iv-joint-axis :is(.domain, .tick line) {
    display: none;
}

.iv-forecast-page .iv-joint-axis text,
.iv-forecast-page .iv-joint-axis-label {
    fill: var(--iv-neutral);
    font-family: var(--iv-font-mono);
    font-size: 12px;
    font-weight: 650;
}

.iv-forecast-page .iv-joint-chamber-label {
    fill: var(--iv-neutral);
    font-family: var(--iv-font-mono);
    font-size: 14px;
    font-weight: 750;
}

.iv-forecast-page .iv-joint-seat-grid .iv-joint-axis .tick.is-dem text {
    fill: var(--brand_blue);
}

.iv-forecast-page .iv-joint-seat-grid .iv-joint-axis .tick.is-rep text {
    fill: var(--brand_red);
}

.iv-forecast-page .iv-joint-seat-grid .iv-joint-axis .tick.is-tie text {
    fill: var(--iv-neutral);
}

.iv-forecast-page .iv-joint-outcomes {
    padding-top: 0;
}

.iv-forecast-page .iv-joint-empty-range {
    margin: 22px 0 0;
    padding: 18px;
    border: 1px solid var(--iv-rule);
    color: var(--iv-neutral);
    font-size: 12px;
    line-height: 1.5;
    text-align: center;
}

.iv-forecast-page .iv-joint-grid-panels {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(26px, 4vw, 54px);
}

.iv-forecast-page .iv-joint-grid-panels.is-single {
    grid-template-columns: minmax(0, 900px);
    justify-content: center;
}

.iv-forecast-page .iv-joint-grid-panel {
    min-width: 0;
}

.iv-forecast-page .iv-joint-grid-panel.is-single-margin {
    width: min(100%, 980px);
    margin-inline: auto;
}

.iv-forecast-page .iv-joint-panel-heading {
    min-height: 52px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--iv-rule);
}

.iv-forecast-page .iv-joint-governor-filter {
    display: inline-grid;
    grid-template-columns: repeat(3, auto);
    align-items: stretch;
}

.iv-forecast-page .iv-joint-governor-filter button {
    min-height: 38px;
    padding: 7px 10px;
    border: 1px solid var(--iv-rule-strong);
    border-radius: 0;
    background: transparent;
    color: var(--iv-neutral);
    font-family: var(--iv-font-mono);
    font-size: 10px;
    font-weight: 800;
    white-space: nowrap;
}

.iv-forecast-page .iv-joint-governor-filter button + button {
    border-left: 0;
}

.iv-forecast-page .iv-joint-governor-filter button:is(:hover, :focus-visible) {
    color: var(--brand_black);
}

.iv-forecast-page .iv-joint-governor-filter button.is-active {
    border-color: var(--brand_black);
    background: var(--brand_black);
    color: var(--brand_white);
}

.iv-forecast-page .iv-joint-governor-filter button[data-governor-filter="D"].is-active {
    border-color: var(--brand_blue);
    background: var(--brand_blue);
}

.iv-forecast-page .iv-joint-governor-filter button[data-governor-filter="R"].is-active {
    border-color: var(--brand_red);
    background: var(--brand_red);
}

.iv-forecast-page .iv-joint-governor-filter button:disabled {
    cursor: not-allowed;
    opacity: .5;
}

.iv-forecast-page .iv-joint-cell {
    stroke: none;
    cursor:crosshair;
    transition: filter 100ms ease;
}

.iv-forecast-page .iv-joint-cell.is-dem {
    fill: var(--brand_blue);
}

.iv-forecast-page .iv-joint-cell.is-split {
    fill: var(--purple);
}

.iv-forecast-page .iv-joint-cell.is-rep {
    fill: var(--brand_red);
}

.iv-forecast-page .iv-joint-cell:is(:hover, :focus) {
    filter: saturate(1.25) brightness(.78);
}

.iv-forecast-page .iv-joint-histogram-bar {
    fill: var(--iv-orange);
}

.iv-joint-tooltip {
    position: fixed;
    z-index: 1200;
    width: min(310px, calc(100vw - 24px));
    padding: 14px 16px;
    border: 1px solid var(--brand_black, #242220);
    background: var(--brand_black, #242220);
    color: var(--brand_white, #fff8eb);
    box-shadow: 5px 5px 0 var(--iv-orange, #fa824c);
    pointer-events: none;
}

.iv-joint-tooltip p {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 16px;
    margin: 0;
    font-family: var(--iv-font-mono, monospace);
    font-size: 11px;
    line-height: 1.45;
}

.iv-joint-tooltip p + p {
    margin-top: 6px;
}

.iv-joint-tooltip span {
    color: inherit;
    opacity: .72;
}

.iv-joint-tooltip strong {
    color: inherit;
    font-weight: 800;
    text-align: right;
}

.iv-forecast-page #make_your_own_forecast {
    display: flex;
    position: static !important;
    inset: auto !important;
    z-index: auto !important;
    width: 100% !important;
    min-height: 58px;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin: 34px 0 0 !important;
    padding: 10px !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--brand_black) !important;
    box-shadow: none !important;
    font-family: var(--iv-font-mono);
    font-size: 13px !important;
    font-weight: 750 !important;
    text-decoration: none !important;
    transform: none !important;
    margin-bottom: 30px !important;
    background: var(--iv-orange-2) !important;
    border: 1px solid var(--iv-ink) !important;
}

.iv-forecast-page #make_your_own_forecast span:last-child {
    color: var(--brand_orange);
    font-size: 19px;
    line-height: 1;
    transition: transform 140ms ease;
}

.iv-forecast-page #make_your_own_forecast:hover {
    color: var(--iv-paper) !important;
    background: var(--iv-ink) !important;
    box-shadow: 4px 4px 0 var(--iv-orange-2) !important;
}

.iv-forecast-page #make_your_own_forecast:is(:hover, :focus-visible) span:last-child {
    transform: translateX(4px);
}

.iv-forecast-page #seat_breakdown,
.iv-forecast-page #vote_breakdown {
    width: 100% !important;
    min-height: 0 !important;
    margin: 22px 0 0 !important;
    padding: 22px 0 0;
    overflow: hidden;
    text-align: left !important;
}

.iv-forecast-page .iv-control-map-workspace :is(#seat_breakdown, #vote_breakdown) {
    margin: 0 !important;
    padding: 0 !important;
}

.iv-legislative-forecast .iv-control-map-workspace #seat_breakdown {
    overflow: visible;
}

.iv-forecast-page #seat_breakdown > div {
    max-width: 100%;
}

.iv-forecast-page #seat_breakdown p,
.iv-forecast-page #vote_breakdown p {
    font-family: var(--iv-font-sans);
}

.iv-forecast-page #seat_breakdown .iv-seat-total {
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: inherit !important;
    font-size: inherit !important;
    font-weight: 600 !important;
}

.iv-forecast-page #seat_breakdown .iv-seat-change {
    display: inline-flex;
    align-items: baseline;
    margin-left: 2px;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--iv-neutral) !important;
    font-size: .62em !important;
    font-weight: 700 !important;
    line-height: 1;
    vertical-align: middle;
}

.iv-forecast-page .iv-prerender-seat-breakdown {
    display: grid;
    gap: 10px;
    width: 100%;
}

.iv-forecast-page .iv-prerender-seat-labels {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    width: 100%;
}

.iv-forecast-page .iv-prerender-seat-label {
    max-width: calc(50% - 12px);
    margin: 0 !important;
    font-size: clamp(14px, 2vw, 22px) !important;
}

.iv-forecast-page .iv-prerender-seat-label.is-right {
    margin-left: auto !important;
    text-align: right !important;
}

.iv-forecast-page .iv-prerender-seat-continuum {
    display: flex;
    align-items: stretch;
    width: 100%;
    height: 40px;
}

.iv-forecast-page .iv-prerender-seat-row {
    display: flex;
    height: 100%;
}

.iv-forecast-page .iv-prerender-seat-cell {
    flex: 1 1 0;
    min-width: 0;
    box-sizing: border-box;
    background: var(--seat-color);
    cursor: pointer;
}

.iv-forecast-page .iv-prerender-seat-cell.is-hovered {
    position: relative;
    z-index: 2;
    height: 50px;
    transform: translateY(-10px);
}

.iv-forecast-page .iv-prerender-map-district,
.iv-forecast-page .iv-prerender-statewide-county {
    cursor: pointer;
    pointer-events: all;
}

.iv-forecast-map-tooltip {
    position: absolute;
    z-index: 1000;
    min-width: 150px;
    max-width: min(260px, calc(100vw - 20px));
    padding: 10px 12px;
    border: 1px solid var(--brand_black);
    border-radius: 0;
    background: var(--brand_white);
    color: var(--brand_black);
    box-shadow: 4px 4px 0 color-mix(in srgb, var(--brand_black) 16%, transparent);
    font-family: var(--iv-font-mono);
    font-size: 12px;
    line-height: 1.4;
    pointer-events: none;
}

.iv-forecast-map-tooltip strong,
.iv-forecast-map-tooltip span {
    display: block;
}

.iv-forecast-map-tooltip strong {
    padding-bottom: 5px;
    border-bottom: 1px solid var(--iv-rule-soft);
    font-size: 13px;
}

.iv-forecast-map-tooltip span {
    margin-top: 5px;
}

.iv-forecast-page .iv-prerender-seat-cell.is-striped {
    background: repeating-linear-gradient(
        45deg,
        var(--iv-data-paper, #fcfbf8) 2px,
        var(--iv-data-paper, #fcfbf8) 5px,
        var(--seat-color) 5px,
        var(--seat-color) 10.5px
    );
}

.iv-forecast-page .iv-prerender-seat-cell.is-close {
    border-top: 2px solid var(--brand_black);
    border-bottom: 2px solid var(--brand_black);
}

.iv-forecast-page .iv-prerender-seat-cell.is-close-start {
    border-left: 2px solid var(--brand_black);
}

.iv-forecast-page .iv-prerender-seat-cell.is-close-end {
    border-right: 2px solid var(--brand_black);
}
.iv-prerender-seat-label:nth-of-type(3) {
text-align: right;
}
.iv-candidate-source{
    display: none !important;
}

.iv-forecast-page .iv-loading-copy {
    margin: 0;
    color: var(--iv-neutral);
    font-size: 12px;
}

.iv-forecast-page .iv-map-frame {
    margin-top: 18px;
}

.iv-forecast-page .iv-control-map-workspace .iv-map-frame {
    min-width: 0;
    margin-top: 0;
}

.iv-forecast-page .iv-map-kicker {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    padding: 0 0 14px;
    border-bottom: 1px solid var(--iv-rule-soft);
    color: var(--iv-neutral);
}

.iv-forecast-page #svg_1 {
    position: relative;
    width: 100% !important;
    min-height: clamp(440px, 55vw, 700px);
    overflow: hidden;
}

.iv-forecast-page #svg_1 > div {
    width: 100%;
    height: 100%;
    text-align: center !important;
}

.iv-forecast-page .iv-prerender-map {
    position: relative;
}

.iv-forecast-page .iv-map-controls {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 10;
    display: inline-flex;
    align-items: stretch;
    gap: 8px;
    max-width: calc(100% - 24px);
    transition: top 180ms ease, left 180ms ease;
}

.iv-forecast-page .iv-prerender-map-svg[hidden] {
    display: none !important;
}

.iv-forecast-page .iv-map-view-toggle {
    position: static;
    display: inline-flex;
    align-items: stretch;
    background: var(--brand_white);
    box-shadow: 3px 3px 0 color-mix(in srgb, var(--brand_black) 14%, transparent);
}

.iv-forecast-page .iv-map-view-button {
    min-width: 58px;
    min-height: 42px;
    margin: 0 !important;
    padding: 8px 12px !important;
    border: 1px solid var(--brand_black) !important;
    border-radius: 0 !important;
    background: var(--brand_white) !important;
    color: var(--brand_black) !important;
    font-family: var(--iv-font-mono);
    font-size: 10px !important;
    font-weight: 750 !important;
    line-height: 1;
}

.iv-forecast-page .iv-map-view-button + .iv-map-view-button {
    border-left: 0 !important;
}

.iv-forecast-page .iv-map-view-button:is(:hover, .is-active) {
    background: var(--brand_black) !important;
    color: var(--brand_white) !important;
}

.iv-forecast-page .iv-map-view-button:focus-visible {
    position: relative;
    z-index: 1;
}

.iv-forecast-page #svg_1 svg,
.iv-forecast-page #mapSVG {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: clamp(420px, 48vw, 650px);
    margin: 0 auto !important;
    overflow: visible;
}

.iv-forecast-page .iv-control-map-workspace #svg_1 {
    display: grid;
    height: 450px;
    min-height: 0;
    place-items: center;
}

.iv-forecast-page .iv-control-map-workspace #svg_1 svg,
.iv-forecast-page .iv-control-map-workspace #mapSVG {
    width: 100% !important;
    height: 100% !important;
    min-height: 0;
    max-height: 450px;
}

.iv-forecast-page #zoom-out-button {
    position: static !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    min-height: 42px;
    padding: 8px 12px !important;
    border: 1px solid var(--brand_black) !important;
    border-radius: 0 !important;
    background: var(--brand_white) !important;
    color: var(--brand_black) !important;
    font-size: 11px !important;
    font-weight: 750;
}

.iv-forecast-page .iv-analysis-grid,
.iv-forecast-page .iv-statewide-data-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    border-top: 1px solid var(--iv-rule);
    border-bottom: 0;
}

.iv-forecast-page .iv-analysis-panel {
    min-width: 0;
    padding: clamp(34px, 4vw, 52px) clamp(26px, 3vw, 42px);
}

.iv-forecast-page .iv-analysis-panel:first-child {
    padding-left: 0;
    border-right: 1px solid var(--iv-rule);
}

.iv-forecast-page .iv-analysis-panel:last-child {
    padding-right: 0;
}

.iv-legislative-forecast .iv-analysis-grid {
    grid-template-columns: minmax(0, 1fr);
}

.iv-legislative-forecast .iv-analysis-grid .iv-analysis-panel {
    padding-inline: 0;
}

.iv-legislative-forecast .iv-analysis-grid .iv-analysis-panel:first-child {
    border-right: 0;
}

.iv-forecast-page .iv-analysis-panel #what-could h3 {
    margin: 8px 0 0 !important;
    font-size: clamp(27px, 3.4vw, 46px) !important;
    font-weight: 600 !important;
    text-align: left !important;
}

.iv-forecast-page .iv-analysis-panel #what-could .chamber-name {
    max-width: none;
    margin: 0;
    border-radius: 0;
    color: inherit;
    font: inherit !important;
    white-space: normal;
}

.iv-forecast-page #what-could-text {
    margin-top: 0px !important;
}

.iv-forecast-page #what-could-text .descrips {
    text-align: left !important;
}

.iv-forecast-page #histo_div,
.iv-forecast-page #tipping_div,
.iv-forecast-page #race_movement_div,
.iv-forecast-page #race_ratings,
.iv-forecast-page #polls_div,
.iv-forecast-page #county_table {
    width: 100% !important;
    max-width: 100%;
    margin: 28px 0 0 !important;
    overflow-x: auto;
}

.iv-forecast-page #histo_div .histo-tooltip,
.iv-forecast-page :is(#tooltiptipping, #tooltipHeader) {
    border: 1px solid var(--brand_black) !important;
    border-radius: 0 !important;
    background: var(--brand_white) !important;
    color: var(--brand_black) !important;
    box-shadow: 5px 5px 0 var(--brand_black);
}

.iv-forecast-page #tooltipHeader.iv-seat-tooltip {
    position: absolute;
    z-index: 1000;
    min-width: 190px;
    padding: 10px;
    pointer-events: none;
    font-family: var(--iv-font-mono);
}

.iv-forecast-page #tooltipHeader.iv-seat-tooltip p {
    margin: 2px;
    color: var(--brand_black);
    font-size: 14px;
}

.iv-forecast-page #tooltipHeader.iv-seat-tooltip .iv-seat-tooltip-title {
    margin-bottom: 5px;
    border-bottom: 2px solid var(--seat-tooltip-color);
    font-size: 16px;
    font-weight: 600;
}

.iv-forecast-page #tooltipHeader.iv-seat-tooltip .iv-seat-tooltip-incumbent {
    margin-left: 5px;
    padding-left: 5px;
    border-left: 3px solid var(--seat-tooltip-incumbent-color);
    font-weight: 600;
}

.iv-forecast-page .iv-segmented-control,
.iv-forecast-page .iv-chart-controls,
.iv-forecast-page .iv-race-filter {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 24px;
}

.iv-forecast-page .tipbuts,
.iv-forecast-page .time-button,
.iv-forecast-page .rtw-button,
.iv-forecast-page #search_button {
    min-height: 40px;
    margin: 0 !important;
    padding: 9px 12px !important;
    border: 1px solid var(--brand_black) !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--brand_black) !important;
    font-family: var(--iv-font-mono);
    font-size: 11px !important;
    font-weight: 750 !important;
}

.iv-forecast-page :is(.tipbuts, .time-button, .rtw-button):is(:hover, .active, .selected) {
    background: var(--brand_black) !important;
    color: var(--brand_white) !important;
}

.iv-forecast-page #tipping_div .reset_tip > div {
    border-radius: 0 !important;
}

.iv-forecast-page #tipping_div {
    margin-top: 18px !important;
    overflow: visible;
}

.iv-forecast-page #tipping_div .reset_tip {
    display: grid;
    gap: 0;
}

.iv-forecast-page .iv-tipping-outcome {
    padding: 18px 0 20px;
    border-top: 0.5px solid var(--iv-rule);
}

.iv-forecast-page .iv-tipping-outcome-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}

.iv-forecast-page .iv-tipping-outcome-heading h3 {
    margin: 0;
    color: var(--brand_black);
    font-family: var(--iv-font-sans);
    font-size: 20px;
    font-weight: 650;
    letter-spacing: -.02em;
}

.iv-forecast-page .iv-tipping-outcome-probability {
    flex: 0 0 auto;
    padding: 4px 7px;
    border: 1px solid var(--iv-tipping-color);
    background: color-mix(in srgb, var(--iv-tipping-color) var(--iv-tipping-fill, 7%), transparent);
    color: var(--brand_black);
    font-family: var(--iv-font-mono);
    font-size: 12px;
    font-weight: 800;
}

.iv-forecast-page .iv-tipping-outcome-copy {
    margin: 5px 0 12px;
    color: var(--iv-neutral);
    font-size: 13px;
    line-height: 1.45;
    letter-spacing: -.025em;
}

.iv-forecast-page .iv-tipping-districts {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.iv-forecast-page .iv-tipping-district {
    display: inline-flex;
    min-height: 34px;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border: 1px solid var(--iv-rule-strong);
    background: color-mix(in srgb, var(--iv-tipping-color) var(--iv-tipping-fill, 7%), transparent);
    font-family: var(--iv-font-mono);
    font-size: 11px;
    line-height: 1;
}

.iv-forecast-page .iv-tipping-district strong {
    color: var(--brand_black);
    font-weight: 800;
}

.iv-forecast-page .iv-tipping-district span {
    color: var(--iv-neutral);
    font-weight: 700;
}

.iv-forecast-page .tipbuts:is(.maj-democrats, .super-democrats):is(:hover, .active) {
    border-color: var(--brand_blue) !important;
    background: var(--brand_blue) !important;
    color: var(--brand_white) !important;
}

.iv-forecast-page .tipbuts:is(.maj-republicans, .super-republicans):is(:hover, .active) {
    border-color: var(--brand_red) !important;
    background: var(--brand_red) !important;
    color: var(--brand_white) !important;
}

.iv-forecast-page .iv-button-label-short {
    display: none;
}

.iv-forecast-page #race_movement_div svg,
.iv-forecast-page #svg_2 {
    display: block;
    width: 100% !important;
    max-width: 100%;
    height: auto;
    min-height: 0;
    overflow: visible;
}

.iv-legislative-forecast #race_movement_div {
    position: relative;
    width: 100% !important;
    margin: 24px auto 0 !important;
    overflow: visible;
}

.iv-statewide-forecast .iv-statewide-trend-section #race_movement_div {
    position: relative;
    margin-top: 24px !important;
    overflow: visible;
    text-align: center;
}

.iv-statewide-forecast .iv-statewide-trend-section #svg_2 {
    aspect-ratio: auto;
}

.iv-forecast-page .iv-prerender-map-district:focus:not(:focus-visible),
.iv-forecast-page .iv-prerender-seat-cell:focus:not(:focus-visible) {
    outline: none;
}

.iv-forecast-page .iv-race-movement-overlay {
    fill: transparent;
    pointer-events: all;
    touch-action: pan-y;
}

.iv-forecast-page .iv-race-movement-overlay:focus {
    stroke: none;
}

.iv-forecast-page .iv-race-movement-guide {
    pointer-events: none;
    stroke: var(--brand_black);
    stroke-width: 1px;
    stroke-dasharray: 4 4;
    vector-effect: non-scaling-stroke;
}

.iv-forecast-page .iv-race-movement-tooltip {
    position: absolute;
    z-index: 5;
    width: min(250px, calc(100% - 16px));
    padding: 12px 14px;
    border: 1px solid var(--brand_black);
    background: var(--brand_white);
    color: var(--brand_black);
    box-shadow: 4px 4px 0 var(--brand_black);
    pointer-events: none;
}

.iv-forecast-page .iv-race-movement-tooltip-date {
    display: block;
    margin-bottom: 9px;
    font-family: var(--iv-font-mono);
    font-size: 12px;
    font-weight: 800;
}

.iv-forecast-page .iv-race-movement-tooltip-rows {
    display: grid;
    gap: 6px;
}

.iv-forecast-page .iv-race-movement-tooltip-row {
    display: grid;
    grid-template-columns: 8px minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    font-family: var(--iv-font-mono);
    font-size: 11px;
}

.iv-forecast-page .iv-race-movement-tooltip-swatch {
    width: 8px;
    height: 8px;
}

.iv-forecast-page #race_movement_div :is(.x-axis, .y-axis) text,
.iv-forecast-page #svg_2 :is(.x-axis, .y-axis) text {
    fill: var(--iv-neutral);
    font-family: var(--iv-font-mono);
    font-size: 11px;
}

.iv-forecast-page #conf_interval {
    display: inline-flex;
    padding: 5px 8px !important;
    border: 1px solid var(--iv-rule);
    border-radius: 0 !important;
    background: var(--lt_gray) !important;
    color: var(--brand_black) !important;
    font-size: 13px !important;
    text-align: center;
    margin:12px;
    font-weight:600
}

/* Candidate browser: one DOM for every viewport */
.iv-forecast-page .iv-candidates-section > :is(.iv-section-heading, #cand_div) {
    width: 100% !important;
    max-width: none !important;
    margin-inline: auto !important;
    padding-top: 20px;
}

.iv-forecast-page #cand_div .cand-columns {
    display: grid !important;
    grid-template-columns: minmax(230px, .28fr) minmax(0, .72fr);
    gap: 0 !important;
    height: clamp(390px, 54vh, 500px) !important;
    min-height: 0;
    overflow: hidden;
    border: 1px solid var(--iv-rule);
    border-radius: 0 !important;
    background: var(--brand_white) !important;
}

.iv-forecast-page #cand_div .district-column,
.iv-forecast-page #cand_div .candidate-column {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    min-height: 0;
    min-width: 0;
    width: auto !important;
    overflow: hidden;
    padding: 0 !important;
    background: transparent !important;
}

.iv-forecast-page #cand_div .district-column {
    border-right: 1px solid var(--iv-rule);
}

.iv-forecast-page #cand_div .iv-control-label {
    margin: 0;
    padding: 13px 16px;
    border-bottom: 1px solid var(--iv-rule);
    color: var(--iv-neutral);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.iv-forecast-page #cand_div .column-body {
    min-height: 0;
    height: auto !important;
    max-height: none !important;
    overflow-x: hidden;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    scrollbar-color: var(--brand_orange) transparent;
    scrollbar-gutter: stable;
    scrollbar-width: thin;
    border: 0 !important;
}

.iv-forecast-page #cand_div :is(#district_list, #candidate_list) {
    width: 100%;
    min-height: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

.iv-forecast-page #cand_div #district_list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 42px;
    margin: 0;
    padding: 11px 14px 11px 16px !important;
    border: 0 !important;
    border-bottom: 1px solid var(--iv-rule-soft) !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--brand_black);
    font-size: 12px;
    font-weight: 650;
    cursor: pointer;
}

.iv-forecast-page #cand_div #district_list li:is(:hover, :focus-visible) {
    background: var(--lt_gray) !important;
}

.iv-forecast-page #cand_div #district_list li.active {
    box-shadow: inset 3px 0 0 var(--brand_orange);
    background: color-mix(in srgb, var(--brand_orange) 8%, var(--brand_white)) !important;
    color: var(--brand_black) !important;
}

.iv-forecast-page #cand_div .district-count {
    color: var(--iv-neutral);
    font-size: 10px;
    font-weight: 500;
    white-space: nowrap;
}

.iv-forecast-page #cand_div #candidate_list {
    padding: 4px 18px 24px;
}

.iv-forecast-page #cand_div .candidate-meta {
    position: sticky;
    top: 0;
    z-index: 1;
    min-height: 40px;
    padding: 12px 18px 10px;
    border-bottom: 1px solid var(--iv-rule-soft);
    background: var(--brand_white);
    color: var(--iv-neutral);
    font-family: var(--iv-font-mono);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .06em;
    line-height: 1.35;
    text-transform: uppercase;
}

.iv-forecast-page #cand_div .candidate-meta:empty {
    display: none;
}

.iv-forecast-page #cand_div #candidate_list h4 {
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 18px 0 4px;
    color: var(--brand_black) !important;
    font-family: var(--iv-font-mono) !important;
    font-size: 13px !important;
    font-weight: 700;
    letter-spacing: -.025em;
    text-transform: uppercase;
}

.iv-forecast-page #cand_div #candidate_list h4::before {
    width: 18px;
    height: 2px;
    background: var(--candidate-party-color, var(--iv-neutral));
    content: "";
}

.iv-forecast-page #cand_div .candidate-row {
    border-bottom: 1px solid var(--iv-rule-soft);
}

.iv-forecast-page #cand_div .candidate-link {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto 18px;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-height: 48px;
    margin: 0;
    padding: 9px 8px;
    border: 0;
    background: transparent;
    color: var(--brand_black);
    text-align: left;
}

.iv-forecast-page #cand_div .candidate-link:is(:hover, :focus-visible) {
    background: var(--lt_gray);
}

.iv-forecast-page #cand_div .candidate-name {
    overflow: hidden;
    font-size: 12px;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.iv-forecast-page #cand_div .candidate-badges {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 6px;
}

.iv-forecast-page #cand_div .candidate-status {
    padding: 3px 5px;
    border: 1px solid var(--iv-rule);
    color: var(--iv-neutral);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .04em;
    line-height: 1.2;
    text-transform: uppercase;
}

.iv-forecast-page #cand_div .candidate-status.is-incumbent {
    border-color: var(--brand_black);
    color: var(--brand_black);
}

.iv-forecast-page #cand_div .candidate-arrow {
    color: var(--iv-neutral);
    font-size: 13px;
    opacity: 0;
    transform: translate(-3px, 3px);
    transition: opacity 120ms ease, transform 120ms ease;
}

.iv-forecast-page #cand_div .candidate-link:is(:hover, :focus-visible) .candidate-arrow {
    opacity: 1;
    transform: translate(0, 0);
}

.iv-forecast-page #cand_div .candidate-row.is-primary-eliminated .candidate-link {
    color: var(--iv-neutral);
    opacity: .58;
}

.iv-forecast-page #cand_div .candidate-row.is-primary-eliminated .candidate-status.is-eliminated {
    border-color: currentColor;
    color: inherit;
}

.iv-forecast-page #cand_div .empty {
    color: var(--iv-neutral);
    font-size: 11px;
}

/* Data tables */
.iv-forecast-page :is(#race_ratings, #polls_div, #county_table) > div,
.iv-forecast-page :is(#race_ratings, #polls_div, #county_table) table {
    min-width: 660px;
    margin: 0 !important;
    border-collapse: collapse !important;
    border-spacing: 0 !important;
}

.iv-forecast-page :is(#race_ratings, #polls_div, #county_table) :is(th, td) {
    padding: 10px 9px !important;
    border: 0 !important;
    border-bottom: 1px solid var(--iv-rule) !important;
    background: transparent !important;
    color: var(--brand_black) !important;
    font-family: var(--iv-font-mono);
    line-height: 1.35;
    text-align: left;
    vertical-align: middle;
}

.iv-forecast-page :is(#race_ratings, #polls_div, #county_table) tr:first-child :is(td, th) {
    position: static !important;
    top: auto !important;
    color: var(--iv-neutral) !important;
    font-weight: 700 !important;
    letter-spacing: -.02em;
}

.iv-forecast-page :is(#race_ratings, #polls_div, #county_table) :is(td, th) p {
    margin: 0 !important;
    color: inherit !important;
}

.iv-forecast-page #county_table .iv-party-badge {
    color: var(--iv-on-party) !important;
}

.iv-forecast-page #county_table .iv-party-badge[data-party="TIE"] {
    color: var(--iv-ink) !important;
}

.iv-forecast-page .iv-races-section .iv-section-heading {
    align-items: end;
}

.iv-forecast-page .iv-race-filter {
    justify-self: end;
    margin-top: 0;
}

.iv-forecast-page #search_button {
    width: auto !important;
}

/* Compact race table: a quiet, centered ledger rather than a dashboard card. */
.iv-page.iv-legislative-forecast .iv-races-section .iv-section-heading.iv-section-heading-row {
    display: block !important;
    width: 100%;
    margin-inline: auto;
}


.iv-legislative-forecast .iv-races-section .iv-race-filter {
    justify-self: start;
    width: 100%;
    margin-top: 18px;
}

.iv-legislative-forecast .iv-race-search {
    display: grid;
    flex: 0 0 100%;
    grid-template-columns: minmax(0, 1fr);
    gap: 5px;
    width: 100%;
    margin-top: 9px;
}

.iv-legislative-forecast .iv-race-search[hidden] {
    display: none !important;
}

.iv-legislative-forecast .iv-race-search label {
    color: var(--iv-neutral);
    font-family: var(--iv-font-mono);
    font-size: 12px;
    font-weight: 750;
    letter-spacing: -.02em;
    line-height: 1.2;
}

.iv-legislative-forecast .iv-race-search input {
    width: 100%;
    min-height: 38px;
    padding: 7px 10px;
    border: 1px solid var(--iv-rule-strong);
    border-radius: 0;
    background: transparent;
    color: var(--BLACK);
    font: 600 12px/1.2 var(--iv-font-mono);
}



.iv-legislative-forecast #race_ratings {
    width: 100% !important;
    margin: 18px 0 0 !important;
    overflow: visible;
}

.iv-legislative-forecast #race_ratings > div {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100%;
    margin: 0 auto !important;
    overflow: visible;
}

.iv-legislative-forecast #race_ratings table {
    display: table !important;
    width: 100% !important;
    min-width: 0 !important;
    margin-inline: auto !important;
    border-top: 1px solid var(--iv-rule-strong);
    border-bottom: 1px solid var(--iv-rule-strong);
    border-collapse: collapse !important;
    table-layout: fixed;
}

.iv-legislative-forecast #race_ratings :is(th, td) {
    height: 30px;
    padding: 4px 7px !important;
    border-bottom-color: var(--iv-rule-soft) !important;
    font-size: 12.5px !important;
    font-variant-numeric: tabular-nums;
    line-height: 1.12;
}

.iv-legislative-forecast #race_ratings :is(th, td) p {
    overflow: hidden;
    line-height: 1.12 !important;
    text-overflow: ellipsis;
}

.iv-legislative-forecast #race_ratings .iv-race-table-header {
    position: static !important;
    top: auto !important;
    background: transparent !important;
    box-shadow: none !important;
}

.iv-legislative-forecast #race_ratings .iv-race-table-header :is(th, td) {
    height: 32px;
    padding-block: 6px !important;
    border-top: 0 !important;
    border-bottom: 1px solid var(--iv-rule-strong) !important;
    border-left: 0 !important;
    border-right: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--iv-neutral) !important;
    font-size: 11px !important;
    letter-spacing: -.02em;
}

.iv-legislative-forecast #race_ratings .iv-race-table-header :is(th, td) p {
    display: inline-flex;
    max-width: 100%;
    padding: 0 !important;
    color: inherit !important;
    font: inherit !important;
    cursor: pointer;
}

.iv-legislative-forecast #race_ratings .iv-race-table-header .iv-sort-active {
    color: var(--brand_orange) !important;
}

.iv-legislative-forecast #race_ratings .iv-race-table-row:hover td {
    background: var(--iv-hover-orange-bg) !important;
}

.iv-legislative-forecast #race_ratings .iv-race-table-row:last-child td {
    border-bottom: 0 !important;
}

.iv-legislative-forecast #race_ratings :is(th, td):nth-child(1) {
    width: 14%;
    text-align: center !important;
}

.iv-legislative-forecast #race_ratings :is(th, td):nth-child(2) {
    width: 36%;
    text-align: left !important;
}

.iv-legislative-forecast #race_ratings :is(th, td):nth-child(3) {
    width: 18% !important;
    text-align: right !important;
}

.iv-legislative-forecast #race_ratings :is(th, td):nth-child(4) {
    width: 16%;
    max-width:200px !important;
    text-align: right !important;
}

.iv-legislative-forecast #race_ratings :is(th, td).iv-tipping-column {
    width: 16%;
    text-align: right !important;
}

.iv-legislative-forecast #race_ratings .iv-race-table-row .iv-tipping-column p {
    color: var(--iv-neutral);
    font-weight: 700;
    white-space: nowrap;
}

.iv-legislative-forecast #race_ratings .iv-race-table-row td:nth-child(2) {
    border-left: 0 !important;
}

.iv-legislative-forecast #race_ratings .iv-race-table-row td:nth-child(2) p,
.iv-legislative-forecast #race_ratings .iv-race-table-row td:nth-child(3) p,
.iv-legislative-forecast #race_ratings .iv-race-table-row td:nth-child(4) p {
    white-space: nowrap;
}

.iv-legislative-forecast #race_ratings .iv-race-table-row td:nth-child(2) p {
    display: flex;
    align-items: center;
    gap: 7px;
}

.iv-legislative-forecast #race_ratings .iv-incumbent-full {
    display: inline;
}

.iv-legislative-forecast #race_ratings .iv-incumbent-phone {
    display: none;
}

.iv-legislative-forecast #race_ratings .iv-race-table-row td:nth-child(2) p::before {
    width: 7px;
    height: 7px;
    flex: 0 0 7px;
    border: 1px solid color-mix(in srgb, var(--iv-row-party, var(--iv-neutral-2)) 72%, var(--iv-ink));
    border-radius: 50%;
    background: var(--iv-row-party, var(--iv-neutral-2));
    content: "";
}

.iv-legislative-forecast #race_ratings tr:not(:first-child) td:nth-child(4) p {
    min-height: 22px;
    padding: 3px 6px !important;
    border-radius: 2px !important;
    line-height: 16px !important;
}

.iv-legislative-forecast #race_ratings tr:not(:first-child) td:nth-child(4) p > span {
    background: var(--iv-light) !important;
    color: var(--iv-dark) !important;
    padding: 1px 4px !important;
    border-radius: 1px !important;
    text-shadow: none;
}

/* Statewide details follow the same compact, centered table rhythm. */
.iv-statewide-forecast #polls_div {
    width: min(100%, 660px) !important;
    margin: 18px auto 0 !important;
    overflow: visible;
}

.iv-statewide-forecast #county_table {
    width: 100% !important;
    margin: 24px 0 0 !important;
    overflow: visible;
}

.iv-statewide-forecast :is(#polls_div, #county_table) > div {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100%;
    margin-inline: auto !important;
    overflow: visible;
}

.iv-statewide-forecast :is(#polls_div, #county_table) table {
    display: table !important;
    width: 100% !important;
    min-width: 0 !important;
    margin-inline: auto !important;
    border-top: 1px solid var(--iv-rule-strong);
    border-bottom: 1px solid var(--iv-rule-strong);
    border-collapse: collapse !important;
    table-layout: fixed;
}

.iv-statewide-forecast :is(#polls_div, #county_table) :is(th, td) {
    height: 30px;
    padding: 4px 7px !important;
    border-bottom-color: var(--iv-rule-soft) !important;
    font-size: 12.5px !important;
    font-variant-numeric: tabular-nums;
    line-height: 1.12;
}

.iv-statewide-forecast :is(#polls_div, #county_table) :is(th, td) p {
    overflow: hidden;
    line-height: 1.12 !important;
    text-overflow: ellipsis;
}

.iv-statewide-forecast #polls_div :is(th, td):nth-child(1) {
    width: 40% !important;
}

.iv-statewide-forecast #polls_div :is(th, td):nth-child(2) {
    width: 18% !important;
}

.iv-statewide-forecast #polls_div :is(th, td):nth-child(n + 3) {
    width: 14% !important;
}

.iv-statewide-forecast #county_table :is(th, td):nth-child(1) {
    width: 50% !important;
}

.iv-statewide-forecast #county_table :is(th, td):nth-child(n + 2) {
    width: 25% !important;
}

.iv-statewide-forecast .iv-statewide-county-section .iv-section-heading {
    grid-template-columns: minmax(0, 1fr) minmax(280px, 430px);
}

.iv-statewide-forecast :is(#polls_div, #county_table) :is(th, td):not(:first-child) {
    white-space: nowrap;
}

.iv-statewide-forecast :is(#polls_div, #county_table) .iv-statewide-table-header {
    position: static !important;
    top: auto !important;
    background: transparent !important;
    box-shadow: none !important;
}

.iv-statewide-forecast :is(#polls_div, #county_table) .iv-statewide-table-header :is(th, td) {
    height: 32px;
    padding-block: 6px !important;
    border-top: 0 !important;
    border-bottom: 1px solid var(--iv-rule-strong) !important;
    border-left: 0 !important;
    border-right: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--iv-neutral) !important;
    font-size: 13px !important;
    letter-spacing: -.02em !important;
}

.iv-statewide-forecast #county_table .iv-statewide-table-header td {
    cursor: pointer;
}

.iv-statewide-forecast #county_table .iv-statewide-table-header .iv-sort-active {
    color: var(--brand_orange) !important;
}

.iv-statewide-forecast :is(#polls_div, #county_table) .iv-statewide-table-row:hover td {
    background: var(--iv-hover-orange-bg) !important;
}

.iv-statewide-forecast :is(#polls_div, #county_table) .iv-statewide-table-row:last-child td {
    border-bottom: 0 !important;
}

.iv-statewide-forecast #county_table .iv-party-badge {
    min-height: 22px;
    padding: 3px 6px !important;
    border-radius: 2px !important;
    line-height: 16px !important;
}

/* Statewide renderer */
.iv-statewide-forecast {
    --iv-candidate-pink: #d35b94;
}

.iv-statewide-forecast [id="candidate-Dave Bronson"] {
    --iv-red: var(--brand_orange);
    --brand_red: var(--brand_orange);
}

.iv-statewide-forecast [id="candidate-Candi English"] {
    --iv-red: var(--iv-candidate-pink);
    --brand_red: var(--iv-candidate-pink);
}

.iv-statewide-forecast #vote_breakdown {
    display: flex;
    flex-direction: column;
    gap: 20px;
    overflow: visible;
}

.iv-statewide-forecast #vote_breakdown > .iv-candidate-summary {
    display: flex;
    width: 100%;
    min-width: 0;
    flex-direction: column;
    padding: 0 !important;
    border: 0;
    border-radius: 0 !important;
}



.iv-statewide-forecast #vote_breakdown .iv-candidate-runner-up > div:first-child {
    margin-left: auto;
}

.iv-statewide-forecast #vote_breakdown .sw-header {
    margin: 0 0 10px;
    font-family: var(--iv-font-sans);
}

.iv-statewide-forecast #vote_breakdown .iv-candidate-runner-up .sw-header {
    margin-left: auto;
    text-align: right;
}

.iv-statewide-forecast #vote_breakdown .iv-candidate-vote-bar {
    min-width: 2px;
    overflow: hidden;
}

.iv-statewide-forecast #vote_breakdown .iv-prerender-statewide-shade {
    display: inline-block;
    float: left;
    width: 5%;
    height: 100%;
}

.iv-forecast-page .iv-chart-controls {
    justify-self: end;
    margin-top: 0;
}

.iv-forecast-page .iv-statewide-data-grid .iv-analysis-panel {
    overflow: hidden;
}

.iv-forecast-page .iv-noscript {
    display: grid;
    gap: 12px;
    margin: 40px 0;
    padding: 24px;
    border: 2px solid var(--brand_orange);
}

.iv-forecast-page .iv-noscript h2,
.iv-forecast-page .iv-noscript p {
    margin: 0;
}

@media (max-width: 1080px) {
    .iv-forecast-page .iv-forecast-hero {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas:
            "title"
            "switcher"
            "headline";
        gap: 30px 42px;
    }

    .iv-forecast-page .iv-forecast-switcher {
        grid-template-columns: 1fr;
        justify-items: start;
        align-items: start;
        padding-top: 0;
        border-top: 0;
    }

    .iv-forecast-page .iv-methodology-link {
        width: fit-content;
    }
}

@media (max-width: 800px) {
    .iv-forecast-page {
        --iv-shell: min(calc(100% - 32px), 1320px);
    }

    .iv-forecast-page #nav_menu_forecast.iv-forecast-toc {
        display: none !important;
    }

    .iv-forecast-page .iv-forecast-hero {
        grid-template-columns: 1fr;
        grid-template-areas:
            "title"
            "switcher"
            "headline";
        gap: 30px;
    }

    .iv-forecast-page .iv-forecast-hero-summary {
        padding: 0;
        border-top: 0;
        border-left: 0;
    }

    .iv-forecast-page .iv-section-heading {
        grid-template-columns: 1fr;
        gap: 18px;
        align-items: start;
    }

    .iv-forecast-page .iv-control-map-workspace {
        grid-template-columns: 1fr;
        gap: 24px;
    }

    .iv-forecast-page .iv-control-map-workspace #svg_1 {
        height: clamp(360px, 58vw, 500px);
        min-height: 0;
    }

    .iv-forecast-page .iv-control-map-workspace #svg_1 svg,
    .iv-forecast-page .iv-control-map-workspace #mapSVG {
        min-height: 0;
        max-height: 500px;
    }

    .iv-forecast-page .iv-analysis-grid,
    .iv-forecast-page .iv-statewide-data-grid {
        grid-template-columns: 1fr;
    }

    .iv-forecast-page .iv-joint-grid-panels {
        grid-template-columns: minmax(0, 1fr);
        gap: 42px;
    }

    .iv-forecast-page .iv-analysis-panel,
    .iv-forecast-page .iv-analysis-panel:first-child,
    .iv-forecast-page .iv-analysis-panel:last-child {
        padding-inline: 0;
        border-right: 0;
    }

    .iv-forecast-page .iv-analysis-panel:first-child {
        border-bottom: 1px solid var(--iv-rule);
    }

    .iv-forecast-page #svg_1 {
        min-height: 390px;
    }

    .iv-forecast-page #svg_1 svg,
    .iv-forecast-page #mapSVG {
        min-height: 380px;
    }

    .iv-forecast-page #cand_div .cand-columns {
        grid-template-columns: minmax(180px, .34fr) minmax(0, .66fr);
        height: min(480px, 68vh) !important;
    }

    .iv-forecast-page .iv-race-filter,
    .iv-forecast-page .iv-chart-controls {
        justify-self: start;
    }
}

@media (max-width: 560px) {
    .iv-forecast-page {
        --iv-shell: min(calc(100% - 28px), 1320px);
    }

    .iv-forecast-page .iv-breadcrumb {
        padding-top: 28px;
    }

    .iv-forecast-page .iv-forecast-hero {
        padding-block: 10px;
    }
    .iv-forecast-page .iv-joint-control-chart{
        margin-top: 10px;
    }

    .iv-forecast-page #state-title .state-title-span {
        font-size: clamp(42px, 14vw, 58px) !important;
    }

    .iv-forecast-page #state-title .iv-title-detail {
        max-width: 340px;
        font-size: clamp(23px, 8vw, 34px);
    }

    .iv-forecast-page #forecast-headline h2,
    .iv-forecast-page #forecast-headline .forecast-line {
        font-size: 24px !important;
    }

    .iv-forecast-page .iv-forecast-switcher-links {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        width: 100%;
    }

    .iv-forecast-page .forecast_button {
        min-width: 0;
        width: 100%;
        padding-inline: 8px !important;
    }

    .iv-forecast-page .forecast_button + .forecast_button {
        border-left: 1px solid var(--brand_black) !important;
    }

    .iv-forecast-page .iv-forecast-switcher-links .forecast_button:not(:nth-child(3n + 1)) {
        border-left: 0 !important;
    }

    .iv-forecast-page .iv-section-heading h2,
    .iv-forecast-page .iv-analysis-panel > h2,
    .iv-forecast-page .iv-analysis-panel #what-could h2,
    .iv-forecast-page .iv-analysis-panel #what-could h3 {
        font-size: 30px !important;
    }

    .iv-forecast-page .iv-joint-control-odds {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 6px;
        margin-top: 10px;
    }

    .iv-forecast-page .iv-joint-odds-item {
        grid-template-columns: minmax(0, 1fr);
        align-content: start;
        padding: 12px 3px;
    }

    .iv-forecast-page .iv-joint-odds-item + .iv-joint-odds-item {
        border-left: 0;
    }

    .iv-forecast-page .iv-joint-odds-item strong {
        font-size: clamp(23px, 7.2vw, 30px);
    }

    .iv-forecast-page .iv-joint-odds-item span {
        font-size: 9px;
        text-wrap: balance;
    }

    .iv-forecast-page .iv-joint-panel-heading {
        flex-direction: column;
        align-items: stretch;
    }

    .iv-forecast-page .iv-joint-governor-filter {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        width: 100%;
    }

    .iv-forecast-page .iv-joint-governor-filter button {
        padding-inline: 5px;
        white-space: normal;
    }

    .iv-forecast-page .iv-joint-panel-heading h3 {
        font-size: 21px;
    }

    .iv-forecast-page .iv-joint-axis text,
    .iv-forecast-page .iv-joint-axis-label {
        font-size: 18px;
    }

    .iv-forecast-page .iv-joint-chamber-label {
        font-size: 24px;
    }

    .iv-forecast-page .iv-forecast-overview,
    .iv-forecast-page .iv-statewide-overview,
    .iv-forecast-page .iv-forecast-map-section,
    .iv-forecast-page .iv-forecast-section{
        padding-block: 38px;
    }

    .iv-forecast-page .iv-control-map-workspace {
        padding-block: 8px;
    }

    .iv-forecast-page #svg_1 {
        min-height: 330px;
    }

    .iv-forecast-page #svg_1 svg,
    .iv-forecast-page #mapSVG {
        min-height: 320px;
    }

    .iv-forecast-page .iv-control-map-workspace #svg_1 {
        height: clamp(300px, 88vw, 360px);
        min-height: 0;
    }

    .iv-forecast-page .iv-control-map-workspace #svg_1 svg,
    .iv-forecast-page .iv-control-map-workspace #mapSVG {
        min-height: 0;
        max-height: 360px;
    }

    .iv-forecast-page #histo_div,
    .iv-forecast-page #tipping_div,
    .iv-forecast-page #race_movement_div,
    .iv-forecast-page #race_ratings,
    .iv-forecast-page #polls_div,
    .iv-forecast-page #county_table {
        margin-top: 22px !important;
    }

    .iv-forecast-page .iv-segmented-control,
    .iv-forecast-page .iv-chart-controls,
    .iv-forecast-page .iv-race-filter {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        width: 100%;
    }

    .iv-forecast-page #tipping_buttons.iv-segmented-control {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }

    .iv-forecast-page #tipping_buttons .tipbuts {
        min-width: 0;
        min-height: 48px;
        padding: 7px 3px !important;
        font-size: 9px !important;
        line-height: 1.15;
    }

    .iv-forecast-page #tipping_buttons .tipbuts + .tipbuts {
        border-left: 0 !important;
    }

    .iv-forecast-page .iv-button-label-long {
        display: none;
    }

    .iv-forecast-page .iv-button-label-short {
        display: inline;
    }

    .iv-forecast-page .iv-tipping-outcome {
        padding-block: 16px;
    }

    .iv-forecast-page .iv-tipping-district {
        min-height: 32px;
        padding: 6px 7px;
    }

    .iv-forecast-page :is(.tipbuts, .time-button, .rtw-button, #search_button) {
        width: 100%;
    }

    .iv-forecast-page :is(.tipbuts, .time-button, .rtw-button) + :is(.tipbuts, .time-button, .rtw-button) {
        border-left: 1px solid var(--brand_black) !important;
    }

    .iv-legislative-forecast .iv-races-section .iv-section-heading,
    .iv-legislative-forecast #race_ratings {
        width: 100% !important;
    }

    .iv-legislative-forecast .iv-races-section .iv-race-filter {
        grid-template-columns: minmax(0, 1.45fr) minmax(0, .9fr) minmax(0, .65fr);
    }

    .iv-legislative-forecast .iv-races-section .iv-race-search {
        grid-column: 1 / -1;
    }

    .iv-legislative-forecast #race_ratings :is(th, td) {
        height: 28px;
        padding: 3px 4px !important;
        font-size: 11px !important;
    }

    .iv-legislative-forecast #race_ratings .iv-race-table-header :is(th, td) {
        height: 30px;
        font-size: 11px !important;
    }

    .iv-legislative-forecast #race_ratings :is(th, td):nth-child(1) {
        width: 13%;
    }

    .iv-legislative-forecast #race_ratings :is(th, td):nth-child(2) {
        width: 37%;
    }

    .iv-legislative-forecast #race_ratings .iv-incumbent-full {
        display: none;
    }

    .iv-legislative-forecast #race_ratings .iv-incumbent-phone {
        display: inline;
    }

    .iv-legislative-forecast #race_ratings :is(th, td):nth-child(3) {
        width: 20%;
    }

    .iv-legislative-forecast #race_ratings :is(th, td):nth-child(4) {
        width: 30%;
    }

    .iv-legislative-forecast #race_ratings .iv-tipping-column {
        display: none;
    }

    .iv-legislative-forecast #race_ratings tr:not(:first-child) td:nth-child(4) p {
        min-height: 20px;
        padding: 2px 4px !important;
        line-height: 16px !important;
    }

    .iv-statewide-forecast :is(#polls_div, #county_table) :is(th, td) {
        height: 28px;
        padding: 3px 4px !important;
        font-size: 11px !important;
    }

    .iv-statewide-forecast :is(#polls_div, #county_table) .iv-statewide-table-header :is(th, td) {
        height: 30px;
        font-size: 11px !important;
    }

    .iv-statewide-forecast #county_table .iv-party-badge {
        min-height: 20px;
        padding: 2px 4px !important;
        line-height: 16px !important;
    }

    .iv-forecast-page #cand_div .cand-columns {
        grid-template-columns: 1fr;
        height: auto !important;
        max-height: none;
        overflow: visible;
    }

    .iv-forecast-page #cand_div .district-column {
        height: 240px;
        max-height: 240px;
        border-right: 0;
        border-bottom: 1px solid var(--iv-rule);
    }

    .iv-forecast-page #cand_div .candidate-column {
        min-height: 210px;
        max-height: 360px;
    }

    .iv-statewide-forecast #vote_breakdown {
        gap: 28px;
    }

    .iv-statewide-forecast #vote_breakdown .iv-candidate-summary > div:first-child {
        width: min(92%, 560px);
    }
}

@media (prefers-reduced-motion: reduce) {
    .iv-forecast-page *,
    .iv-forecast-page *::before,
    .iv-forecast-page *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}
/* Gated prerendered forecasts stay hidden until SiteAuth releases the protected block. */
[data-site-auth-prerender-guard="true"] {
    visibility: hidden !important;
}
