/* Personal votes and election-night arrival cues. */
.result-overview.is-live {grid-template-columns:minmax(180px,.7fr) minmax(420px,1.6fr)}
.is-live #overview-gauges {grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.count-gauge .gauge-value {font-size:34px;letter-spacing:-1px}
.count-total {font-size:19px;fill:#abc8b9;letter-spacing:-.5px}
.count-gauge {border-radius:10px}
.result-arrived {animation:count-arrival 2.3s ease-out 2}
@keyframes count-arrival {0%,100%{background:transparent}35%{background:#2c705848;box-shadow:0 0 20px #9aefc433}}
.arrival-banner {position:absolute;z-index:710;top:18px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 36px);border:1px solid #a4ead0;border-radius:8px;background:#dcefe8f7;color:#103526;box-shadow:0 6px 24px #0006;padding:12px 18px;font-size:16px;font-weight:600;text-align:center;pointer-events:none;animation:report-arrival .55s ease-out}
.district-pulse {animation:pulse 2.8s ease-out 2}
.report-event.just-arrived {animation:report-arrival .6s ease-out}
@keyframes report-arrival {from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}
.person-panel {margin-top:24px;border:1px solid #304854;border-radius:10px;background:#0e202c;padding:25px 28px;color:#e5edf1}
.person-heading {display:flex;justify-content:space-between;gap:18px;align-items:center}
.person-heading h2 {font-size:27px;line-height:1.15;margin:0;font-weight:600;letter-spacing:-.5px}
.person-heading .eyebrow {font-size:11px;letter-spacing:1.3px;margin-bottom:6px}
#person-scope {font-size:15px;color:#aac3d0;margin:8px 0 0}
#person-status {font-size:14px;color:#afc6d2;max-width:800px;line-height:1.65}
#person-status:empty {display:none}
.person-tools {display:flex;align-items:end;justify-content:space-between;gap:20px;margin:22px 0 10px}
.person-tools label {display:grid;gap:5px;font-size:12px;color:#b4ccd8;width:320px;max-width:100%}
.person-tools input {font:inherit;font-size:16px;padding:11px 13px;min-height:44px;border:1px solid #4d6573;border-radius:6px;background:#081a26;color:#eff7f9;width:100%;outline-offset:3px}
.person-tools input:focus-visible {outline:2px solid #a0dfc7}
#person-coverage {font-size:12px;color:#9db7c6;padding-bottom:10px}
.person-list {list-style:none;margin:12px 0 0;padding:0}
.person-list.expanded {max-height:680px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.candidate-row {display:grid;grid-template-columns:minmax(230px,1fr) 130px minmax(280px,1.5fr);gap:24px;align-items:center;padding:19px 14px;border-top:1px solid #2c424f}
.candidate-row.selected {background:#17392e;border-radius:8px;border:1px solid #7ab69b}
.candidate-name {background:none;border:0;padding:4px 0;text-align:left;color:#e8f4f8;min-width:0;min-height:44px}
.candidate-name strong {display:block;font-size:18px;line-height:1.35;font-weight:600;overflow-wrap:anywhere}
.candidate-name span {display:block;margin-top:5px;color:#9fbac8;font-size:12px;line-height:1.4}
.candidate-name:hover strong {color:#a1e8c4;text-decoration:underline;text-underline-offset:4px}
.candidate-count {text-align:right;font-variant-numeric:tabular-nums}
.candidate-count strong {font-size:27px;font-weight:600;display:block;color:#bcebd4;line-height:1.25}
.candidate-count small {font-size:11px;display:block;color:#a8c1cc;margin-top:5px}
.candidate-meter {min-width:0;padding:10px 0}
.person-track {height:12px;border-radius:6px;background:#2b404e;position:relative;overflow:visible;margin:0 2px 10px 0}
.person-track:after {content:'';position:absolute;right:0;top:-4px;height:20px;width:2px;background:#e6f0f4;border-radius:1px}
.person-track>div {height:100%;border-radius:6px;background:#7ca8c7;transition:width .8s ease-out;max-width:100%}
.person-track.passed>div {background:#74c8a0}
.person-threshold-label {display:block;font-size:14px;line-height:1.5;color:#b4c9d3;font-variant-numeric:tabular-nums}
.person-intro {font-size:13px;line-height:1.6;color:#acc6d2;max-width:1000px;margin:16px 0 8px}
.person-empty {padding:20px 0;font-size:14px;color:#b2c8d2}
#person-more {margin-top:12px;min-width:140px}
.person-explanation {border-top:1px solid #2c424f;margin-top:18px;padding-top:12px;color:#aac3d0;font-size:13px}
.person-explanation summary {padding:8px 0;cursor:pointer;font-size:13px;min-height:40px}
.person-explanation p {max-width:880px;line-height:1.7;margin:10px 0}
.person-explanation a {display:inline-block;margin:7px 0;color:#a5ddc3}
.popup-person {font-size:15px;margin:0 0 8px;color:#b6d6c8}
.popup-person-count {font-size:24px;font-weight:600;margin:0 0 13px;color:#d8f2e6}
#map-top-anchor {scroll-margin-top:12px}
.bigscreen .person-panel {margin-top:20px}
@media(max-width:1250px) {
  .result-overview.is-live {grid-template-columns:1fr;gap:12px}
  .is-live .overview-heading {display:grid;grid-template-columns:1fr auto;column-gap:15px}
  .is-live .overview-heading h1,.is-live .overview-heading .eyebrow {grid-column:1}
  .is-live #party-name {grid-column:2;grid-row:1/3;margin:0;align-self:center}
  .is-live #vote-value {grid-column:1}.is-live #share {grid-column:2;grid-row:3;justify-self:end}
}
@media(max-width:900px) {
  .candidate-row {grid-template-columns:1fr 110px;gap:8px 20px;padding:16px 4px}
  .candidate-meter {grid-column:1/-1;padding:4px 0 10px}
}
@media(max-width:700px) {
  .person-panel {padding:20px 16px;margin-top:20px}.person-heading {align-items:start;flex-wrap:wrap}.person-heading h2 {font-size:25px}
  .person-tools {align-items:start;flex-direction:column;gap:10px}.person-tools label {width:100%}#person-coverage {padding:0}
  .candidate-name strong {font-size:17px}.candidate-row {grid-template-columns:1fr 95px;column-gap:12px}
  .candidate-count strong {font-size:25px}.candidate-count small {font-size:10px}.candidate-name span {font-size:11px}
  .is-live .overview-heading {display:block}.is-live #party-name {margin:7px 0 3px}
  .is-live #overview-gauges {grid-template-columns:1fr 1fr;gap:10px}
  .count-gauge {grid-column:1/-1;max-width:none;display:grid;grid-template-columns:1fr 135px;align-items:center;text-align:left;border-top:1px solid #355044;padding-top:8px;margin-top:2px}
  .count-gauge .gauge-label {grid-column:1;font-size:14px;padding-left:6px}
  .count-gauge svg {grid-column:2;grid-row:1/3;margin:0;max-height:79px}
  .count-gauge .gauge-caption {grid-column:1;font-size:11px;padding-left:6px;align-self:start}
  .count-gauge .gauge-value {font-size:37px}.count-total {font-size:25px}
  .arrival-banner {font-size:13px;padding:10px 12px;top:12px}
}
@media(prefers-reduced-motion:reduce) {.result-arrived,.district-pulse,.report-event.just-arrived,.arrival-banner{animation:none!important}.person-track>div{transition:none!important}}
