/* Candidacies: a geographic entry point and portrait-ready party cards. */
.portal[data-mode=candidates]{--panel-muted:#65656c;--line:#dedee3}
.portal[data-mode=candidates][data-wide=true] .portal-layout{max-width:1200px}
.portal[data-mode=candidates] .portal-controls>.segmented{background:#ededf0;border-radius:14px;padding:4px;width:fit-content}
.portal[data-mode=candidates] .segmented button{border-radius:11px;min-height:44px;padding-inline:20px}
.portal[data-mode=candidates] .segmented button[aria-pressed=true]{background:#fff;box-shadow:0 1px 4px #0000000d}
.portal[data-mode=candidates] .portal-field :is(select,input){border:1px solid transparent;background:#f0f0f3;border-radius:12px}
.cand-lead{margin:0 0 30px;max-width:720px}.cand-badge{display:inline-block;background:#ededf1;color:#65656c;border-radius:20px;padding:7px 11px;font-size:11px}
.cand-lead h3{font-size:clamp(32px,4vw,48px);font-weight:350;letter-spacing:-.045em;line-height:1.1;margin:18px 0 14px}
.cand-lead p,.cand-roster-heading p{color:#65656c;font-size:14px;line-height:1.65}
.cand-geography{background:#f5f5f7;border-radius:28px;padding:28px}
.cand-map-heading{display:flex;justify-content:space-between;gap:24px;align-items:center}.cand-map-heading h4{font-size:24px;font-weight:350;letter-spacing:-.03em;margin:0 0 8px}.cand-map-heading p{font-size:13px;color:#65656c;margin:0;line-height:1.6}.cand-map-heading .portal-field{width:240px;flex-shrink:0;margin:0}.cand-map-heading .portal-field select{background:#fff}
.cand-map{display:block;width:100%;max-height:640px;margin:18px auto 0}.cand-map g[role=button]{cursor:pointer;outline:none}.cand-map path{fill:#dddde4;stroke:#f5f5f7;stroke-width:1.5;vector-effect:non-scaling-stroke;transition:fill .15s}.cand-map text{font-family:inherit;font-size:13px;fill:#65656c;pointer-events:none}.cand-map g[aria-pressed=true] path{fill:#242522}.cand-map g:focus-visible path{stroke:#242522;stroke-width:3;fill:#a4a4b0}.cand-map g:hover path{fill:#aaaab5}.cand-map g[aria-pressed=true]:hover path{fill:#414147}
.cand-map-caption{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff;border-radius:16px;padding:18px 22px}.cand-map-caption strong{font-size:23px;font-weight:500;letter-spacing:-.03em}.cand-map-caption span{font-size:12px;color:#65656c}.cand-map-source{font-size:10px;line-height:1.6;color:#65656c;margin:14px 0 0}.cand-map-source a{color:inherit}
.cand-roster{margin-top:42px}.cand-roster-heading h4{font-size:32px;letter-spacing:-.04em;font-weight:350;margin:14px 0 8px}.cand-party-filters{display:flex;gap:7px;flex-wrap:wrap;margin:24px 0 12px}.cand-party-filters button{border:0;border-radius:12px;background:#ededf1;padding:10px 14px;min-height:44px;font:inherit;font-size:12px;cursor:pointer}.cand-party-filters button[aria-pressed=true]{background:#242522;color:#fff}.cand-note{font-size:12px;line-height:1.6;color:#65656c;margin-bottom:22px}
.cand-people{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.cand-person{border-radius:22px;overflow:hidden;background:#f5f5f7;min-width:0}.cand-portrait{height:220px;position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;background:color-mix(in srgb,var(--party) 9%,#f5f5f7);padding:20px 20px 50px}.cand-portrait>svg{width:105px;height:120px;stroke:color-mix(in srgb,var(--party) 28%,#aaa);stroke-width:1.2}.cand-portrait>span{font-size:10px;color:#65656c}.cand-logo{position:absolute;bottom:14px;left:18px;height:46px;max-width:calc(100% - 36px);display:flex;align-items:center;padding:8px 10px;border-radius:10px;background:#fff}.cand-logo img{object-fit:contain;width:100px;height:36px}.cand-logo[data-logo=bildu],.cand-logo[data-logo=bng],.cand-logo[data-logo=adelante]{background:#303442}.cand-person-copy{padding:20px}.cand-person-copy h5{font-size:19px;font-weight:400;margin:0 0 10px}.cand-person-copy p{font-size:13px;line-height:1.5;margin:0 0 14px}.cand-person-copy>span{font-size:11px;color:#65656c}
.portal[data-mode=candidates] .candidate-list{background:#f5f5f7;border:0;border-radius:18px;padding:8px 18px;margin-bottom:10px}.portal[data-mode=candidates] .candidate-profile{background:#f5f5f7;border-radius:24px;padding:24px}
.portal[data-mode=candidates] :is(button,select,input,a):focus-visible{outline:2px solid #242522;outline-offset:3px}
@media(max-width:900px){.cand-people{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.cand-geography{padding:20px 14px;border-radius:22px}.cand-map-heading{display:block}.cand-map-heading .portal-field{width:100%;margin-top:16px}.cand-map{min-height:280px}.cand-map-caption{align-items:start;flex-direction:column;gap:8px;padding:16px}.cand-people{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.cand-portrait{height:185px;padding-inline:12px}.cand-person-copy{padding:16px}.cand-person-copy h5{font-size:17px}.cand-roster-heading h4{font-size:28px}.cand-party-filters{flex-wrap:nowrap;overflow:auto;padding-bottom:8px}.cand-party-filters button{flex-shrink:0}.cand-logo{left:12px}.cand-logo img{width:82px}}
@media(prefers-reduced-motion:reduce){.cand-map path{transition:none}}
@media(prefers-contrast:more){.cand-geography,.cand-person,.cand-party-filters button{border:1px solid #777}.cand-map path{stroke:#777}}
.portal[data-mode=candidates][data-overview=false] .portal-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:20px}
.portal[data-mode=candidates][data-overview=false] .portal-intro{padding:0;border:0}.portal[data-mode=candidates][data-overview=false] .portal-intro h2{margin:0 0 8px}
.portal[data-mode=candidates][data-overview=false] .portal-tabs{position:static;border:0;margin:0;padding:0;background:none}.portal[data-mode=candidates] .back-categories{display:none}
.portal[data-mode=candidates][data-wide=true] .portal-layout{padding-top:0}.portal[data-mode=candidates] .portal-controls{margin-bottom:20px}
.cand-map-inset{fill:none;stroke:#dedee4;stroke-width:1}
@media(max-width:760px){.portal[data-mode=candidates][data-overview=false] .portal-heading{display:block}.portal[data-mode=candidates][data-overview=false] .portal-tabs{margin-top:14px}.portal[data-mode=candidates][data-overview=false] .portal-intro h2{font-weight:350}.cand-lead h3{font-size:30px}}
.cand-portrait>span{position:absolute;top:14px;right:14px;background:#ffffffa8;padding:5px 8px;border-radius:20px}
