/* House outlook: supplied frozen values and separately exported scenarios. */
.house-outlook { margin-bottom: var(--s-5); min-width: 0; }
.house-outlook h2, .house-diagnostics h2 { margin: 0 0 var(--s-3); }
.house-outlook__metrics, .house-scenario-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-4); margin: var(--s-4) 0; }
.house-outlook__metrics div, .house-scenario-metrics div { padding: var(--s-3); background: var(--neutral-pale); border: 1px solid var(--rule); min-width: 0; }
.house-outlook dt, .house-scenario-metrics dt { color: var(--ink-soft); font-size: .8rem; }
.house-outlook dd, .house-scenario-metrics dd { font-size: 1.65rem; font-weight: 700; font-variant-numeric: tabular-nums; margin: var(--s-2) 0 0; }
.house-outlook__note, .house-diagnostics__intro, .house-diagnostics__status { color: var(--ink-soft); font-size: .875rem; line-height: 1.55; }
.house-outlook__review { border-left: 3px solid var(--amber); padding: var(--s-3); background: var(--amber-pale); color: var(--ink); }
.house-outlook__range { width: 100%; display: block; height: auto; margin: var(--s-3) 0; }
.house-outlook__range text, .house-seat-histogram text { font-family: var(--sans); fill: var(--ink-soft); font-size: 11px; }
.house-outlook__range .house-range-rail { stroke: var(--rule); stroke-width: 8; }
.house-outlook__range .house-range-band { stroke: var(--blue); stroke-width: 8; }
.house-outlook__range .house-range-marker { stroke: var(--ink); stroke-width: 2; }
.house-outlook__range .house-range-median { fill: var(--ink); }
.house-diagnostics { padding-top: var(--s-5); margin-top: var(--s-5); border-top: 1px solid var(--rule); min-width: 0; }
.house-scenario-control { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3); margin: var(--s-4) 0; }
.house-scenario-control label { font-weight: 650; }
.house-scenario-control select { color: var(--ink); background: var(--paper); border: 1px solid var(--rule); border-radius: 4px; padding: var(--s-2) var(--s-3); max-width: 100%; }
.house-seat-histogram { display: block; width: 100%; height: auto; max-height: 230px; }
.house-seat-histogram .house-hist-dem { fill: var(--blue); }
.house-seat-histogram .house-hist-rep { fill: var(--red); }
.house-seat-histogram .house-hist-threshold { stroke: var(--ink); stroke-width: 1; stroke-dasharray: 3 3; }
.house-diagnostics .table-wrap { width: 100%; max-width: 100%; overflow-x: auto; }
.house-diagnostics table { font-variant-numeric: tabular-nums; font-size: .875rem; }
.house-diagnostics table tr.is-selected { background: var(--blue-pale); }
.house-diagnostics details { margin-top: var(--s-4); font-size: .875rem; overflow-wrap: anywhere; }
.house-diagnostics summary { cursor: pointer; font-weight: 650; }
.house-diagnostics ul { padding-left: 1.4em; color: var(--ink-soft); }
.house-diagnostics__status { overflow-wrap: anywhere; }
@media (max-width: 600px) {
  .house-outlook__metrics, .house-scenario-metrics { grid-template-columns: minmax(0, 1fr); gap: var(--s-2); }
  .house-outlook__metrics div, .house-scenario-metrics div { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-3); }
  .house-outlook dd, .house-scenario-metrics dd { margin: 0; font-size: 1.4rem; white-space: nowrap; }
}

/* Polish (Oct 7): keep chart text at reading size and give the outlook a calmer layout. */
.house-outlook__metrics, .house-scenario-metrics { gap: 0; margin: var(--s-4) 0 var(--s-3); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.house-outlook__metrics div, .house-scenario-metrics div { padding: var(--s-3) var(--s-4); background: none; border: 0; border-left: 1px solid var(--rule); }
.house-outlook__metrics div:first-child, .house-scenario-metrics div:first-child { padding-left: 0; border-left: 0; }
.house-outlook dt, .house-scenario-metrics dt { font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted, var(--ink-soft)); }
.house-outlook dd { font-size: 2rem; font-weight: 800; }
.house-outlook__range { max-width: 760px; margin: var(--s-4) auto var(--s-3); }
.house-outlook__range text { font-size: 7.5px; }
.house-seat-histogram { max-width: 760px; max-height: 260px; margin: 0 auto; }
.house-seat-histogram text { font-size: 8px; }
.house-outlook__note { max-width: 860px; }
@media (max-width: 640px) {
  .house-outlook__metrics div, .house-scenario-metrics div { padding: var(--s-2) 0; border-left: 0; border-top: 1px solid var(--rule); }
  .house-outlook__metrics div:first-child, .house-scenario-metrics div:first-child { border-top: 0; }
  .house-outlook__range text { font-size: 14px; }
  .house-seat-histogram text { font-size: 14px; }
}

/* District labels in state view: font size comes from the layer's font-size attribute (set in house-map.js). */
.house-district-labels .house-district-label { font-size: inherit; }
.house-label-leader { stroke: var(--ink); stroke-width: 1; opacity: .85; vector-effect: non-scaling-stroke; }
.house-label-dot { fill: var(--ink); }

/* House state view (house.html?state=XX): Senate state-page parity. Reuses styles.css classes; race-editorial.css is not loaded here. */
.house-is-state-view [data-house-scope="national"] { display: none !important; }
@media (max-width: 760px) {
  .house-state-view .race-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .house-state-view .race-summary-item, .house-state-view .race-summary-item + .race-summary-item { padding: 12px 12px 14px 0; }
  .house-state-view .race-summary-item:nth-child(2n) { padding-left: 12px; border-right: 0; }
  .house-state-view .race-summary-item--wide { grid-column: 1 / -1; padding-left: 0 !important; border-top: 1px solid var(--rule-faint); }
  .house-state-view .model-breakdown-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .house-state-view .model-factor--result { grid-column: 1 / -1; }
  .house-state-view .house-state-inputs { grid-template-columns: minmax(0, 1fr); }
}

/* District outlines match the site's other maps: solid page-colour borders. */
#house-map .house-district { stroke: var(--paper) !important; stroke-width: 1.1 !important; vector-effect: non-scaling-stroke; }
#house-map .house-district:hover, #house-map .house-district.is-hovered { stroke: #fff !important; stroke-width: 2 !important; }
#house-map .house-district.is-selected { stroke: var(--ink) !important; stroke-width: 2.5 !important; }
#house-map .house-state-outline { stroke: var(--paper) !important; stroke-width: 2 !important; }

/* National House map: no side panel; the map uses the full tile width.
   Hover shows the tooltip, a click opens that state's House page. */
.house-map-panel .house-map-detail { display: none !important; }
.house-map-panel .house-map-shell { display: block !important; grid-template-columns: none !important; }
.house-map-panel .house-map-canvas { width: 100% !important; max-width: none !important; }
.house-map-panel #house-map { display: block; width: min(100%, 1200px) !important; height: auto !important; min-height: 0 !important; aspect-ratio: 1100 / 620; margin: 0 auto; }

/* ---- House page v2 ---- */
/* Compact caution note: one line of text, no bullet list. */
.forecast-page--house > .model-disclosure { padding: 12px 18px !important; }
.forecast-page--house > .model-disclosure h2, .forecast-page--house > .model-disclosure .model-disclosure__points { display: none !important; }
.forecast-page--house > .model-disclosure .model-disclosure__body { margin: 0 !important; font-size: 14px; }
/* Control tile: everything centered, stats row underneath. */
.forecast-page--house > .house-summary-panel { text-align: center; }
.forecast-page--house > .house-summary-panel .home-house__control { display: flex; flex-direction: column; align-items: center; gap: 12px; width: 100%; }
.forecast-page--house > .house-summary-panel .cg-slot { width: 100%; max-width: 380px; margin: 0 auto; }
.forecast-page--house > .house-summary-panel .home-house__labels, .forecast-page--house > .house-summary-panel .home-house__bar, .forecast-page--house > .house-summary-panel .home-house__expected { width: 100%; }
.hn-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); width: 100%; margin: 16px 0 0; border-top: 1px solid var(--card-rule, #2a2d31); }
.hn-stat { padding: 12px 6px 0; text-align: center; }
.hn-stat + .hn-stat { border-left: 1px solid var(--card-rule, #2a2d31); }
.hn-stat dt { color: var(--muted); font: 700 10.5px/1.2 var(--sans); letter-spacing: .08em; text-transform: uppercase; }
.hn-stat dd { margin: 6px 0 2px; color: var(--ink); font: 800 1.35rem/1.1 var(--sans); font-variant-numeric: tabular-nums; }
.hn-stat dd a { color: inherit; }
.hn-stat p { margin: 0; color: var(--muted); font-size: 11.5px; }
/* Seat chart tile: centered semicircle. */
#house-seats .hx-seats__chart { display: flex; justify-content: center; }
#house-seats .hx-seats__chart svg { margin: 0 auto; }
#house-seats .hx-seats__head, #house-seats .hx-seats__note { text-align: center; justify-content: center; }
/* Pull chart. */
.hn-pull__svg { display: block; width: 100%; height: auto; }
.hn-axis { stroke: var(--rule-faint, #26282b); stroke-width: 1; }
.hn-axis--zero { stroke: var(--ink-soft); stroke-dasharray: 3 3; }
.hn-tick { fill: var(--muted); font: 600 12px var(--sans); }
.hn-pull__hit { fill: transparent; }
.hn-pull__row:hover .hn-pull__hit, .hn-pull__row:focus .hn-pull__hit { fill: rgba(255, 255, 255, .035); }
.hn-pull__name { fill: var(--ink); font: 800 14px var(--sans); }
.hn-pull__sub { fill: var(--muted); font: 600 11.5px var(--sans); }
.hn-pull__span { stroke: #5a5e64; stroke-width: 2; }
.hn-pull__fund, .hn-pull__poll { fill: var(--card, #1b1c1e); stroke-width: 2; }
.hn-pull__fund { stroke: var(--ink-soft); }
.hn-pull__poll { stroke: #c9ccd1; }
.hn-pull__model { stroke: var(--paper); stroke-width: 1.5; }
.hn-pull__val { font: 800 14px var(--sans); }
.hn-pull__val.is-d { fill: var(--blue); } .hn-pull__val.is-r { fill: var(--red); }
.hn-pull__key { display: flex; justify-content: center; gap: 20px; margin: 12px 0 0; color: var(--ink-soft); font: 600 12.5px var(--sans); }
.hn-pull__key span { display: inline-flex; align-items: center; gap: 7px; }
.hn-key { width: 11px; height: 11px; border-radius: 50%; border: 2px solid; }
.hn-key--fund { width: 9px; height: 9px; border-radius: 1px; transform: rotate(45deg); }
.hn-key--fund { border-color: var(--ink-soft); } .hn-key--poll { border-color: #c9ccd1; } .hn-key--model { border-color: var(--ink); background: var(--ink); }
.hn-muted { color: var(--muted); }
/* Every state. */
.hn-states { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0 var(--col-gap, 28px); }
.hn-state { display: flex; flex-direction: column; gap: 7px; padding: 11px 0 12px; border: 0; border-top: 1px solid var(--rule); border-radius: 0; background: none; color: var(--ink); text-decoration: none; }
.hn-state:hover .hn-state__head strong, .hn-state:focus-visible .hn-state__head strong { text-decoration: underline; text-underline-offset: 3px; }
.hn-state__head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.hn-state__head strong { font: 700 15px/1.2 var(--sans); }
.hn-state__head span { color: var(--muted); font-size: 12px; }
.hn-state__bar { display: flex; gap: 2px; height: 10px; }
.hn-state__bar i { flex: 1; border-radius: 0; }
.hn-state__foot { color: var(--muted); font-size: 12px; }
@media (max-width: 760px) { .hn-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .hn-stat:nth-child(3) { border-left: 0; } .hn-pull__key { flex-wrap: wrap; } }
#house-seats .hx-seats__chart svg { width: 100% !important; max-width: 640px; height: auto !important; }
/* Toss-up cards: the last row stretches to the edge, no holes. */
#house-tossups .hx-cards { display: flex !important; flex-wrap: wrap; gap: 12px; }
#house-tossups .hx-cards > .hx-card { flex: 1 1 240px; }
#house-tossups .hx-cards > .hx-card[hidden] { display: none; }
/* National control needle fills its tile. */
.forecast-page--house > .house-summary-panel .cg-slot { max-width: 520px !important; }
.forecast-page--house > .house-summary-panel .cg-needle { max-width: none !important; width: 100% !important; }
.forecast-page--house > .house-summary-panel .cg-needle__svg { width: 100% !important; height: auto !important; }
#house-seats .hx-seats__chart { width: 100% !important; max-width: none !important; align-self: stretch; }
#house-seats .hx-seats__chart svg.hx-hemi { width: 100% !important; max-width: 680px !important; }

/* One divider below the House model notice. */
.hp-page .hp-top .sd-top__head { border-bottom: 0 !important; }
