.rehearsal-page { padding-bottom:24px; }
.rehearsal-banner { display:flex; align-items:center; flex-wrap:wrap; gap:8px 15px; background:#fff1ce; color:#673800; border:2px solid #ad6721; border-radius:8px; padding:10px 14px; margin:16px 0; }
.rehearsal-banner strong { font-size:.9rem; letter-spacing:.08em; }
.rehearsal-controls p,.rehearsal-source,.rehearsal-card p { color:var(--muted); }
.rehearsal-controls h1 { font-size:clamp(2rem,5vw,3.3rem); }
.rehearsal-fields { display:flex; align-items:end; flex-wrap:wrap; gap:8px 12px; }
#copyFallback { margin:8px 0; }
#copyFallback[hidden],#previewLink[hidden] { display:none; }
.rehearsal-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; }
.rehearsal-card { min-width:0; background:#fff; border:1px solid var(--line); border-radius:8px; padding:16px; }
.rehearsal-card h2 { font-size:clamp(1.4rem,4vw,2.5rem); }
#rehearsalStates { width:100%; display:block; background:#eff5f7; margin-top:12px; border-radius:5px; }
#rehearsalStates path { fill:#e4ebee; stroke:#506d7b; stroke-width:1; vector-effect:non-scaling-stroke; }
#rehearsalStates [data-party=dem] { fill:#3376c4; }
#rehearsalStates [data-party=rep] { fill:#c94f58; }
#rehearsalStates [data-party=other] { fill:#8270a1; }
#rehearsalStates [data-party=waiting] { fill:#f2d79b; }
#rehearsalStates .rehearsal-state-active { cursor:pointer; }
#rehearsalStates .rehearsal-state-active:hover,#rehearsalStates [aria-pressed=true] { stroke:#142536; stroke-width:2.4; }
#raceStatus.rehearsal-stale { color:#8a4200; font-weight:750; }
.rehearsal-vote { display:grid; grid-template-columns:minmax(0,1fr) auto 4em; align-items:center; gap:8px; padding:7px 10px; margin:5px 0; background:#f0f4f6; border-left:5px solid #8270a1; border-radius:4px; font-variant-numeric:tabular-nums; }
.rehearsal-vote small { text-align:right; }
.rehearsal-vote.rehearsal-dem { background:#e9f2ff; border-color:#3376c4; }
.rehearsal-vote.rehearsal-rep { background:#ffeded; border-color:#c94f58; }
.rehearsal-output .rehearsal-nav,.rehearsal-output .rehearsal-controls,.rehearsal-output #rehearsalMap,.rehearsal-output .rehearsal-source { display:none; }
.rehearsal-output .rehearsal-page { max-width:none; min-height:100vh; padding:2.5vh 4vw; display:grid; align-content:start; gap:1.6vh; }
.rehearsal-output .rehearsal-banner { margin:0; font-size:clamp(.75rem,2.2vh,1.5rem); }
.rehearsal-output .rehearsal-banner strong { font-size:inherit; }
.rehearsal-output .rehearsal-grid { grid-template-columns:minmax(0,1fr); }
.rehearsal-output #raceGraphic { padding:1.5vh 1.7vw; background:white; margin:0; }
.rehearsal-output #raceTitle { font-size:clamp(1.45rem,6vh,4.4rem); }
.rehearsal-output #raceKicker,.rehearsal-output #raceStatus,.rehearsal-output #raceTotal { margin:.8vh 0; font-size:clamp(.75rem,2.25vh,1.6rem); }
.rehearsal-output .rehearsal-vote { font-size:clamp(.8rem,3.2vh,2.7rem); margin:.6vh 0; padding:.65vh 1vw; }
@media(max-width:710px){.rehearsal-grid{grid-template-columns:minmax(0,1fr)}}
