@charset "UTF-8";

/* 2026 제9회 전국지방동시선거 (2026.6.3) */

/* 2026 지방선거 공통 */ 
@import url('https://hkstatic.hankyung.com/resource/special/election/2026/0603/css/common/preset.css?v=202605281056');

/* pc only - inter webfont */
@import url('https://fonts.googleapis.com/css2?family=Gelasio:ital,wght@0,400..700;1,400..700&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
.inter-val {font-family:'Inter', sans-serif}

/* logo */
.tit-election2026 {display:inline-flex; align-items:center; gap:6px; vertical-align:top}
.logo--election2026 {display:inline-flex; align-items:center; gap:6px}
.logo--election2026::before {content:''; display:inline-block; aspect-ratio:1 / 1; height:22px; background:url('https://hkstatic.hankyung.com/resource/common/img/icon/icon-vote.svg') no-repeat 50% 50%/contain; overflow:hidden; vertical-align:top}
.logo--election2026::after {content:''; display:inline-block; aspect-ratio:153 / 21; height:21px; background:var(--election-logo); overflow:hidden; vertical-align:top}
.slogan--election2026 {line-height:0}
.slogan--election2026::before {content:''; display:inline-block; aspect-ratio:146 / 18; height:18px; background:var(--election-slogan); overflow:hidden; vertical-align:top}
/* button */
.election-chip {display:inline-flex; align-items:center; gap:0 4px; height:36px; padding:0 20px; border:1px solid var(--election-chip-border); border-radius:50rem; background:var(--election-chip-bg); font-size:14px; font-weight:700; color:var(--election-key); white-space:nowrap; text-decoration:none; box-sizing:border-box}
.election-chip::after {content:''; display:inline-block; width:20px; height:20px; background:var(--election-chip-link-icon) no-repeat 50% 50%/contain}
.election-chip:hover {text-decoration:none}
/* VS 카드 */
.election-vs-item {position:relative; display:flex; flex-direction:column; height:100%; background:#fff; border-radius:10px; box-sizing:border-box}
.election-vs-item .vs-head {flex: 0 0 auto; display:flex; align-items:center; gap:8px; height:40px; padding:0 16px; border-bottom:1px solid #f0f0f4; box-sizing:border-box}
.election-vs-item .vs-head-tit {flex:1; min-width:0; font-size:14px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.election-vs-item .vs-head-rate {flex-shrink:0; font-size:12px; color:var(--hk-text-secondary); white-space:nowrap}
.election-vs-item .vs-head-rate .rate:not(.inter-val) {color:#999}
.election-vs-item .vs-body {position:relative; display:flex; flex-direction:column; gap:8px; padding:16px; box-sizing:border-box}
.election-vs-item .vs-pair {display:flex; gap:2px; align-items:center; width:100%}
.election-vs-item .vs-cand {flex:1; min-width:0; display:flex; gap:10px; align-items:center}
.election-vs-item .vs-photo {flex:0 0 48px; position:relative; width:48px; height:48px}
.election-vs-item .vs-photo img {display:block; width:100%; height:100%; border:1px solid #ddd; border-radius:100%; object-fit:cover; box-sizing:border-box; object-position:top center}
.election-vs-item .vs-info {flex:1; min-width:0; display:flex; flex-direction:column; gap:8px; align-items:flex-start}
.election-vs-item .vs-info .vs-pair-bar {width:100%}
.election-vs-item .vs-party {font-size:11px; color:var(--hk-text-secondary); line-height:1}
.election-vs-item .vs-name {font-size:14px; font-weight:700; line-height:1; color:#121212}
.election-vs-item .vs-result {width:100%; display:flex; flex-direction:column; gap:6px; align-items:flex-start}
.election-vs-item .vs-rate {font-size:16px; font-weight:700; line-height:1}
.election-vs-item .vs-vote {font-size:11px; color:var(--hk-text-secondary); line-height:1}
.election-vs-item .vs-pair-bar {position:relative; display:flex; width:calc(100% - 116px); height:8px; margin:0 auto; background:#eee; overflow:hidden}
.election-vs-item .vs-pair-bar .vs-bar-fill {display:block; height:100%; background:var(--party-color); transform-origin:left}
.election-vs-item .vs-pair-bar .vs-bar-fill:nth-child(2) {margin-left:auto; transform-origin:right}
.swiper-slide-visible .election-vs-item .vs-pair-bar .vs-bar-fill,
.region-vote-popup .election-vs-item .vs-pair-bar .vs-bar-fill {animation:vsBarGrow .6s cubic-bezier(.25,.1,.25,1) both}
@keyframes vsBarGrow {from {transform:scaleX(0)} to {transform:scaleX(1)}}
.election-vs-item .vs-pair-bar .vs-bar-fill.party-1 {--party-color:var(--e-party-1)}
.election-vs-item .vs-pair-bar .vs-bar-fill.party-2 {--party-color:var(--e-party-2)}
.election-vs-item .vs-pair-bar .vs-bar-fill.party-3 {--party-color:var(--e-party-3)}
.election-vs-item .vs-pair-bar .vs-bar-fill.party-4 {--party-color:var(--e-party-4)}
.election-vs-item .vs-pair-bar .vs-bar-fill.party-5 {--party-color:var(--e-party-5)}
.election-vs-item .vs-pair-bar .vs-bar-fill.party-6 {--party-color:var(--e-party-6)}
.election-vs-item .vs-pair-bar .vs-bar-fill.party-7 {--party-color:var(--e-party-7)}
.election-vs-item .vs-pair-bar .vs-bar-fill.party-etc {--party-color:var(--e-party-etc)}
.election-vs-item .vs-gap {display:flex; gap:2px; align-items:center; justify-content:center; margin:0; font-size:11px; color:var(--hk-text-secondary); line-height:1}
.election-vs-item .vs-gap-num {font-weight:700}
.election-vs-item .loading-spinner {position:absolute; top:40px; left:0; right:0; bottom:0; z-index:3; background-color:#fff; border-radius:0 0 10px 10px; display:flex; align-items:center; justify-content:center}
.election-vs-item .loading-spinner img {width:56px}
/* 우측 후보 레이아웃 */
.election-vs-item .vs-pair .vs-cand:nth-child(2) {flex-direction:row-reverse}
.election-vs-item .vs-pair .vs-cand:nth-child(2) .vs-info {align-items:flex-end}
.election-vs-item .vs-pair .vs-cand:nth-child(2) .vs-result {align-items:flex-end}
/* 단독 후보: 무투표 당선 결과 */
/* .election-vs-item .vs-body:has(.vs-cand:only-child) {padding-bottom:24px} */
.election-vs-item .vs-cand:has(.vs-msg):only-child .vs-info {position:relative; flex:0 0 auto; padding-right:12px; border-right:1px solid #ddd}
.election-vs-item .vs-cand:has(.vs-msg):only-child .vs-msg {flex:1; min-width:0; font-size:11px; line-height:1.5; color:var(--hk-text-secondary)}
/* vs-head 상태 태그(예: 무투표 당선) — 당선자 정당색 사용 */
.election-vs-item .vs-head-tag {flex-shrink:0; display:inline-flex; align-items:center; padding:6px; border-radius:4px; background:color-mix(in srgb, var(--party-color, var(--election-key)) 10%, transparent); font-family:'Noto Sans KR', sans-serif; font-size:11px; font-weight:700; line-height:1; color:var(--party-color, var(--election-key)); white-space:nowrap}
/* 정당 키컬러 */
.election-vs-item:has(.vs-pair > .vs-cand.party-1:only-child) {--party-color:var(--e-party-1)}
.election-vs-item:has(.vs-pair > .vs-cand.party-2:only-child) {--party-color:var(--e-party-2)}
.election-vs-item:has(.vs-pair > .vs-cand.party-3:only-child) {--party-color:var(--e-party-3)}
.election-vs-item:has(.vs-pair > .vs-cand.party-4:only-child) {--party-color:var(--e-party-4)}
.election-vs-item:has(.vs-pair > .vs-cand.party-5:only-child) {--party-color:var(--e-party-5)}
.election-vs-item:has(.vs-pair > .vs-cand.party-6:only-child) {--party-color:var(--e-party-6)}
.election-vs-item:has(.vs-pair > .vs-cand.party-7:only-child) {--party-color:var(--e-party-7)}
.election-vs-item:has(.vs-pair > .vs-cand.party-etc:only-child) {--party-color:var(--e-party-etc)}
.election-vs-item .vs-cand.party-1 {--party-color:var(--e-party-1)}
.election-vs-item .vs-cand.party-2 {--party-color:var(--e-party-2)}
.election-vs-item .vs-cand.party-3 {--party-color:var(--e-party-3)}
.election-vs-item .vs-cand.party-4 {--party-color:var(--e-party-4)}
.election-vs-item .vs-cand.party-5 {--party-color:var(--e-party-5)}
.election-vs-item .vs-cand.party-6 {--party-color:var(--e-party-6)}
.election-vs-item .vs-cand.party-7 {--party-color:var(--e-party-7)}
.election-vs-item .vs-cand.party-etc {--party-color:var(--e-party-etc)}
/* 순위 배지 */
.election-vs-item .vs-badge {position:absolute; top:-12px; z-index:2; display:flex; align-items:center; justify-content:center; width:28px; height:28px; padding-bottom:1px; border-radius:100%; box-sizing:border-box; font-family:'Noto Sans KR', sans-serif; font-size:11px; font-weight:700; line-height:1; color:#fff; white-space:nowrap}
.election-vs-item .vs-cand:nth-child(1) .vs-badge {left:-8px}
.election-vs-item .vs-cand:nth-child(2) .vs-badge {right:-8px}
.election-vs-item .vs-cand:nth-child(1) .vs-rank {background:linear-gradient(180deg, #ad74ee 0%, #5e0dbb 100%)}
.election-vs-item .vs-cand:nth-child(2) .vs-rank {background:linear-gradient(180deg, #b3a8cd 0%, #79669c 100%)}
.vs-badge.rank-likely {background:linear-gradient(180deg, #efaf8b 0%, #ca734f 100%)}
.vs-badge.rank-certain {background:linear-gradient(180deg, #a7cf34 0%, #4fae86 100%)}
.vs-badge.rank-elected {width:29px; height:32px; padding-bottom:2px; border-radius:0; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='32' fill='none'%3E%3Cpath fill='url(%23a)' d='m14.355 0 7.177 3.945L28.645 8l.066 8-.066 8-7.111 4.055L14.354 32l-7.177-3.945L.066 24 0 16l.066-8 7.112-4.055z'/%3E%3Cpath stroke='%23fede7a' stroke-opacity='.5' stroke-width='2' d='m21.051 4.821 6.597 3.762.063 7.425-.063 7.408-6.597 3.763-6.696 3.68-6.696-3.68-6.598-3.763L1 16.008l.061-7.425L7.66 4.821l6.696-3.681z'/%3E%3Cdefs%3E%3ClinearGradient id='a' x1='14.355' x2='14.355' y1='-1.067' y2='32' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23f6c000'/%3E%3Cstop offset='1' stop-color='%23cc8700'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E") no-repeat center/contain}
.vs-photo:has(.rank-elected) img {border:3px solid #e9b203}
/* 최종당선 배지 */
.rank-elected-final {position:absolute; left:50%; bottom:-12px; transform:translateX(-50%); width:60px; height:32px; background:var(--vs-badge-final)}
.vs-photo:has(.rank-elected-final) {background:linear-gradient(180deg, #fede7a 0%, #f6c000 50%, #cc8700 100%); border-radius:100%}
.vs-photo:has(.rank-elected-final) img {border:3px solid transparent}

/*===== 닷컴메인 =====*/
.main-dday {display:flex; align-items:center; gap:0 20px; color:var(--election-key); font-family:'Noto Sans KR', sans-serif}
.main-dday .election-meta {display:flex; align-items:center; gap:0 6px}
.main-dday .election-meta-main {display:flex; align-items:center; gap:4px; font-size:24px; font-weight:700}
.main-dday .election-meta-sub {margin-top:2px; font-size:14px; font-weight:400}
.main-dday .election-meta-time {margin-top:1px; font-size:12px; font-weight:400}
.main-dday:has(.election-extra-area) .dday-info {margin-top:-2px}
.main-dday.dday--vote .election-meta-main {font-size:20px}
.main-dday.dday--vote .election-meta-main::after {content:''; display:inline-block; width:24px; height:24px; background:var(--e-vote-cast-icon)}

.turnout-slide.election-chip::after {display:none}
.turnout-slide .turnout-item {display:inline-flex; align-items:center; gap:0 4px; font-size:14px; font-weight:700; color:var(--election-key); white-space:nowrap; text-decoration:none; box-sizing:border-box}
.turnout-slide .turnout-item.maximum {color:var(--turnout-maximum)}
.turnout-slide .turnout-item.lowest {color:var(--turnout-lowest)}

/* 선거모듈 A타입 */
.main-module.special-module .slogan--election2026 {margin-left:2px}
.election2026-a .layout-container {padding:0; background:var(--election-bg); box-sizing:border-box}
.election2026-a.main-module.special-module > .layout-container {border-color:var(--election-key)}
:is(.election2026-a, .election2026-b) .module-tit > a:not(.no-arrow)::after {background-image:var(--election-chip-link-icon)}
.election2026-a .module-tit-wrap {margin-bottom:24px; height:60px; padding:0 40px; border-bottom:1px solid var(--election-border-strong); box-sizing:border-box; background:var(--election-banner-bg)}
.election2026-a .module-row {padding:0 40px 40px}
/* 선거모듈 B타입 */
.election2026-b .layout-container {display:flex; align-items:center; width:100%; height:80px; border:none; padding:0 24px; box-sizing: border-box; background:var(--election-banner-bg)}
.election2026-b .module-tit-wrap {flex:1; margin:0}

/* 접기,펼치기 모듈 공통 */
.btn-election-toggle {display:inline-flex; align-items:center; gap:4px; height:26px; padding:0 10px; border-radius:4px; border:1px solid #DBDBEC; background:#FFF; font-size:13px; line-height:1; color:var(--election-key)}
.btn-election-toggle::after {content:''; display:inline-block; width:9px; height:5px; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='5' fill='none'%3E%3Cpath stroke='%235e0dbb' stroke-linecap='round' stroke-linejoin='round' d='m.5 4.5 4-4 4 4'/%3E%3C/svg%3E") no-repeat 50% 50%; transition:transform .2s ease; vertical-align:top}
.election-fold:not(.is-open) .btn-election-toggle::after {transform:rotate(180deg)}
.election-fold:not(.is-open) .election-fold-body {display:none}
.election-fold {margin-top:16px}
.election-fold-head {background:var(--election-banner-bg)}
.election-fold-head .module-tit-wrap {height:72px; margin:0}
.election-fold-head .module-tit {display:flex; align-items:center}
.election-fold-head .module-tit > a:not(.no-arrow)::after {display:none}
.election-fold-head .module-tit-sub {margin-left:8px; font-size:16px; line-height:1}
.election-fold-head .btn-election-toggle {margin-left:-8px}
.election-fold-body {padding:16px 0 24px; border-top:1px solid rgba(94, 13, 187, 0.15)}

/* 개표모듈 - 공통 */
.election-count-module {background:#f6f5fa}
.election-count-module .count-status {display:flex; align-items:center; gap:6px; white-space:nowrap}
.election-count-module .count-status .ref-time {font-size:12px}
.election-count-module .count-status .label {font-size:16px; font-weight:700}
.election-count-module .count-status .rate {font-size:16px; font-weight:700; color:var(--election-key)}
.election-count-module .region-tab-wrap {display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:20px}
.election-count-module .rate-tit-wrap {display:flex; align-items:center; gap:6px; font-weight:700; font-size:16px}
.election-count-module .rate-tit-wrap .tit {font-weight:700; line-height:1}
.election-count-module .rate-tit-wrap .rate {color:var(--election-key)}
.election-count-notice {color:#676189; font-size:12px}
.election-count-notice strong {font-weight:700}
.count-slide-indicator {display:flex; align-items:center; justify-content:center; gap:12px; position:relative}
.count-slide-indicator .count-slide-btn {flex:0 0 auto; width:32px; height:32px; padding:0; border:none; border-radius:100%; background-color:#ebe9f5; background-repeat:no-repeat; background-position:center; background-size:20px}
.count-slide-indicator .count-slide-prev {background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none'%3E%3Cpath stroke='%235e0dbb' stroke-linecap='round' stroke-linejoin='round' d='m12.5 15-5-5 5-5'/%3E%3C/svg%3E")}
.count-slide-indicator .count-slide-next {background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none'%3E%3Cpath stroke='%235e0dbb' stroke-linecap='round' stroke-linejoin='round' d='m7.5 15 5-5-5-5'/%3E%3C/svg%3E")}
.count-slide-indicator .count-slide-fraction {display:inline-flex; width:auto; min-width:30px; text-align:center; font-size:14px; line-height:22px; letter-spacing:1.4px}
.count-slide-indicator .count-slide-fraction .swiper-pagination-current {font-weight:700}
.count-slide-indicator .count-slide-controls {margin-left:-4px}
.count-slide-indicator .election-count-notice {position:absolute; top:0; right:0}
.count-slide-indicator:has(.election-count-notice) {min-height:18px}
.count-slide-indicator:not(:has(.swiper-button-lock)) {margin-top:16px}
.count-slide-controls {display:inline-flex; gap:4px}
.count-slide-controls .count-slide-play-pause {width:20px; height:20px; padding:0; border:0; background-color:transparent; background-repeat:no-repeat; background-position:center; background-size:20px 20px}
.count-slide-controls .count-slide-play-pause.is-playing {background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none'%3E%3Cg clip-path='url(%23a)'%3E%3Crect width='20' height='20' fill='%23dfd2f1' rx='4'/%3E%3Cpath fill='%235e0dbb' d='M7.5 6.965c0-.477 0-.716.1-.849a.5.5 0 0 1 .364-.2c.166-.011.367.118.769.376l4.72 3.035c.349.224.523.336.583.478a.5.5 0 0 1 0 .39c-.06.142-.234.254-.583.478l-4.72 3.035c-.402.258-.603.387-.769.375a.5.5 0 0 1-.364-.2c-.1-.132-.1-.371-.1-.848z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h20v20H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}
.count-slide-controls .count-slide-play-pause.is-paused {background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none'%3E%3Cg clip-path='url(%23a)'%3E%3Crect width='20' height='20' fill='%23dfd2f1' rx='4'/%3E%3Cpath stroke='%235e0dbb' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7.5 13V7m5 6V7'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h20v20H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}
/* 개표모듈 - 닷컴 메인 */
.election-fold .election-count-region .region-tab-wrap {margin-bottom:12px; padding-bottom:0; border-bottom:none}
.election-fold .election-count-region .region-tab-area {display:flex; align-items:center; gap:12px}
.election-fold .election-count-region .region-tab-list {gap:25px}
.election-fold .election-count-region .region-tab {min-width:unset; height:auto; padding:0; border:none; border-radius:0; background:none; font-size:14px}
.election-fold .election-count-region .region-tab:hover {background:none; color:var(--election-key)}
.election-fold .election-count-region .region-tab.is-active {background:none; border:none; color:var(--election-key); font-weight:700}
.election-fold .election-count-region .region-tab:not(:first-child) {position:relative}
.election-fold .election-count-region .region-tab:not(:first-child)::before {content:''; display:block; width:1px; height:12px; background:#ccc; position:absolute; top:50%; left:-13px; transform:translateY(-50%)}
.election-fold .election-count-slide .swiper-slide {height:auto}
.election-fold .election-count-rate {position:relative}
.election-fold .count-slide-indicator {display:contents; position:static; margin:0; min-height:unset}
.election-fold .count-slide-indicator .count-slide-btn {position:absolute; top:50%; z-index:2; transform:translateY(-50%)}
.election-fold .count-slide-indicator .count-slide-prev {left:-36px}
.election-fold .count-slide-indicator .count-slide-next {right:-36px}

/* 당선모듈 - 공통 */
/* 당선배너 */
.election-result-banner {border-radius:10px; background:var(--election-result-bg)}
.election-result-banner a:hover {text-decoration:none}
.election-result-banner .banner-title {width:260px; height:32px; background:var(--election-result-tit-shine)}
.election-result-banner .banner-btn {display:inline-flex; align-items:center; gap:0 4px; font-size:14px; font-weight:500; line-height:1; color:#E8D4A6; white-space:nowrap; text-decoration:none}
.election-result-banner .banner-btn::after {content:''; display:inline-block; width:20px; height:20px; background:var(--election-result-btn-arrow) no-repeat 50% 50%/contain}
/* 당선배너 A타입: 개표종료모듈 */
.election-result-banner.type-a {margin-bottom:12px}
.election-result-banner.type-a > .banner-content {position:relative; display:flex; align-items:center; justify-content:center; height:56px}
.election-result-banner.type-a .banner-btn {position:absolute; right:16px; top:50%; transform:translateY(-50%)}
/* 당선배너 B타입: 당선 띠배너 */
.election-result-banner.type-b {max-width:1200px; margin:30px auto; border-radius:0; padding:2px; box-sizing:border-box}
.election-result-banner.type-b > .banner-content {position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; height:96px; box-sizing:border-box}
.election-result-banner.type-b > .banner-content::before {content:''; position:absolute; inset:0; border:2px solid transparent; background:linear-gradient(184deg, #D0B07A -12.49%, #ECD9A6 17.15%, #ECD9A6 23%, #FFFFFF 25.62%, #ECD9A6 28%, #E8D29A 38.85%, #E6BC5F 56.32%, #F8D372 59.5%, #FFDC7A 61.62%, #D09F47 79.62%, #C18C37 84.91%) border-box; background-size:100% 300%; -webkit-mask:linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0); mask:linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0); -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none; animation:bannerLineShine 8s ease-in-out infinite alternate}
@keyframes bannerLineShine {from {background-position:0 0} to {background-position:0 100%}}
.election-result-banner.type-b .banner-title {width:303px; height:37px}
.election-result-banner.type-b .banner-btn-group {display:flex; align-items:center; justify-content:center; gap:32px}
.election-result-banner.type-b .banner-btn-group .banner-btn + .banner-btn {position:relative}
.election-result-banner.type-b .banner-btn-group .banner-btn + .banner-btn::before {content:''; position:absolute; top:50%; left:-19px; width:1px; height:6px; background:#E8D4A6; transform:translate(-50%, -50%)}

/*===== 선거 특집 페이지 =====*/
[data-category="election2026"] .layout-inner {padding-top:40px}
[data-category="election2026"] .cont-wrap .cont-module + .cont-module {padding-top:24px}
[data-category="election2026"] .cont-module .module-tit-wrap {margin-bottom:24px}
[data-category="election2026"] .cont-module .module-tit {font-size:24px; line-height:1}
[data-category="election2026"] .cont-module .module-tit > a {display:inline-flex; align-items:center}
[data-category="election2026"] .module-row.col-line > .col {padding:0}
[data-category="election2026"] .module-row.col-line .news-tit {-webkit-line-clamp:2; line-clamp:2}
[data-category="election2026"] .aside-component + .aside-component {margin-top:40px}
[data-category="election2026"] .aside-component .module-tit-wrap {margin-bottom:16px}
[data-category="election2026"] .aside-component .module-tit-area {gap:8px}
[data-category="election2026"] .aside-component .module-tit-unit {display:flex; align-items:center; gap:6px; font-size:12px; color:#666}
[data-category="election2026"] .aside-component .module-tit-unit .bar {color:#ddd}
[data-category="election2026"] .cont-wrap .contents:only-child {width:100%}
[data-category="election2026"] .cont-wrap .aside-inner {position:sticky; top:80px}
[data-category="election2026"] .select-paging {margin-top:24px}

/* 선거 헤더 */
.election-header { background:var(--election-banner-bg)}
.election-header > .layout-inner {display:flex; align-items:center; justify-content:space-between; height:120px; padding:0}
.election-header .tit-election2026 {gap:12px}
.election-header .logo--election2026 {gap:10px}
.election-header .logo--election2026::before, 
.election-header .logo--election2026::after {height:32px}
.election-header .slogan--election2026::before {height:29px}
.election-header .election-menu {display:flex; align-items:flex-start; gap:0 32px; height:31px; user-select:none}
.election-header .election-menu li {height:100%; padding-top:4px; box-sizing:border-box; font-size:18px; line-height:1.1}
.election-header .election-menu a {display:inline-flex; height:100%; border-bottom:1px solid transparent; color:var(--election-key); box-sizing:border-box; transition:border-color 0.3s ease}
.election-header .election-menu a:hover {text-decoration:none}
.election-header .election-menu li:not(:has(a)) {color:#666; cursor:pointer}
.election-header .election-menu li a:hover {border-bottom-color:var(--election-key)}
.election-header .election-menu li.on a {font-weight:700; border-bottom:2px solid var(--election-key)}
/* 선거 뉴스 리스트 */
.election-news-list.line {gap:48px}
.election-news-list.line .news-item + .news-item::before {top:-24px}
.election-news-list .news-item {flex-direction:row-reverse}
.election-news-list .news-item .news-tit {font-size:20px}
.election-news-list .news-item .lead {margin-top:16px; font-size:14px}
.election-news-list .news-item .txt-date {margin-top:20px}
.election-news-list.news-item-group .news-item .thumb {width:240px; height:150px}
.election-news-list.news-item-group .news-item .text-cont {width:calc(100% - 256px)}
.election-news-list.news-item-group .news-item:not(.type-headline) .lead {-webkit-line-clamp:2; line-clamp:2}
/* 특집 Dday */
.election-dday {position:relative; border-radius:10px; overflow:hidden; font-family:'Noto Sans KR', sans-serif}
.election-dday::after {content:''; position:absolute; top:0; left:0; right:0; bottom:0; border-radius:10px; border:1px solid rgba(0, 0, 0, 0.1); pointer-events:none}
.election-dday .dday-info {position:relative; display:flex; flex-direction:column; gap:8px; padding:20px; line-height:1; font-weight:700; color:#fff; background:#5e0dbb url('https://hkstatic.hankyung.com/resource/special/election/2026/0603/img/bg-dday.jpg') no-repeat center/cover; box-sizing:border-box}
.election-dday .dday-info .tit .txt {font-size:14px}
.election-dday .dday-info .tit .date {position:absolute; top:20px; right:20px; color:#e3dbec; font-size:12px}
.election-dday .dday-info .cont {display:flex; align-items:baseline; justify-content:space-between}
.election-dday .dday-info .cont > strong,
.election-dday .dday-info .cont .dday-value {display:inline-flex; align-items:center; gap:6px; font-size:28px}
.election-dday .dday-info.dday--vote .dday-value::after {content:''; display:inline-block; width:24px; height:24px; background:var(--e-vote-cast-icon)}
.election-dday .dday-info .cont .time {color:#e3dbec; font-weight:400; font-size:12px}
/* 특집 Dday: 개표 - 투표율 */
.election-dday .dday-info.dday--count {align-items:center; text-align:center}
.election-dday .dday-info.dday--count .cont {justify-content:center}
.election-dday .dday-info.dday--count .compare {display:flex; align-items:center; gap:4px; margin-top:8px; font-weight:400; font-size:14px; color:#e3dbec}
.election-dday .dday-info.dday--count .compare .rate {display:inline-flex; align-items:center; gap:4px; font-size:16px; font-weight:700}
.election-dday .dday-info.dday--count .compare .rate::after {content:''; display:inline-block; width:16px; height:16px; background:no-repeat center/contain}
.election-dday .dday-info.dday--count .compare .rate.down::after {background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='%23e3dbec' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 2.667v10.666m-4-4 4 4 4-4'/%3E%3C/svg%3E")}
.election-dday .dday-info.dday--count .compare .rate.up::after {background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='%23e3dbec' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 13.333V2.667m4 4-4-4-4 4'/%3E%3C/svg%3E")}
.election-dday .dday-info.dday--count .total {width:100%; margin-top:8px; padding-top:12px; border-top:1px solid #844bc5; font-weight:400; font-size:12px; color:#e3dbec}

.election-schedule {height:270px; border-radius:0 0 10px 10px; background-color:#fff; box-sizing:border-box; overflow-y:auto; overflow-x:hidden}
.election-schedule::-webkit-scrollbar {width:8px}
.election-schedule::-webkit-scrollbar-thumb {background-color:#C9C9D4; border-radius:4px; background-clip:padding-box; border:1px solid transparent}
.election-schedule::-webkit-scrollbar-track {background-color:#F6F5FA; border-left:1px solid rgba(0, 0, 0, 0.1)}
.election-schedule li {position:relative; color:#666; box-sizing:border-box}
.election-schedule li::before {content:''; display:block; position:absolute; top:20px; left:18px; width:6px; height:6px; border-radius:50%; background-color:#ccc; z-index:2}
.election-schedule li > div {position:relative; padding:14px 16px 14px 34px}
.election-schedule li > div::before {content:''; display:block; position:absolute; top:36px; left:20.5px; bottom:-12px; width:1px; background-color:rgba(94, 13, 187, 0.1); z-index:1}
.election-schedule li:last-child > div::before {display:none}
.election-schedule li .date {display:block; margin-bottom:8px; font-weight:400; font-size:14px; line-height:1.3; letter-spacing:-0.546px}
.election-schedule li p,
.election-schedule li dl {display:flex; align-items:center; gap:6px}
.election-schedule li p,
.election-schedule li dt {font-weight:400; font-size:16px}
.election-schedule li dl {margin-top:5px}
.election-schedule li dt {line-height:1.3}
.election-schedule li .subtxt {font-size:12px; font-weight:400; color:rgba(94, 13, 187, 0.5)}
.election-schedule li.on > div {background-color:#f6f5fa}
.election-schedule li.on .date {font-weight:700; color:#5e0dbb}
.election-schedule li.on p,
.election-schedule li.on dt {color:#121212}
.election-schedule li.on::before {background-color:#5e0dbb}
.aside-dday .election-desc {margin-top:10px; color:var(--hk-text-secondary); font-size:12px; text-align:right}

/*===== 특집: 메인 =====*/
.election-main .cont-wrap:has(.aside) {margin-top:40px; padding-top:40px; border-top:1px solid #121212}
.election-module-inner {margin-top:40px; padding-top:40px; border-top:1px solid #121212}
/* 특집메인: 톱 */
.election-top-news .module-row > .col[data-width] {flex:0 0 auto}
.election-top-news .module-row > .col[data-width="270"] .thumb {width:270px; height:168px}
.election-top-news .news-tit {font-size:20px}
.election-top-news .news-item:not(.column) .thumb {width:160px; height:100px}
.election-top-news .news-item:not(.column) .text-cont {width:calc(100% - 176px)}
.election-top-news .news-item .lead {margin-top:16px}
/* 특집 aside: 제8회 지방선거 결과 */
.e-8th-body {display:flex; flex-direction:column; gap:32px}
.e-8th-section-tit {display:flex; align-items:center; gap:6px; line-height:1.3; white-space:nowrap}
.e-8th-section-tit strong {font-size:16px; font-weight:700}
.e-8th-section-tit span {font-size:12px; font-weight:400; color:#666}
.e-8th-chart {position:relative; width:300px; margin-top:12px}
.e-8th-chart-bars {display:flex; align-items:flex-end; justify-content:space-between; gap:8px; border-bottom:1px solid #ddd; overflow:hidden}
.e-8th-bar {flex:1; position:relative; display:flex; justify-content:center; overflow:visible; border-top:1px solid; box-sizing:border-box; transform-origin:bottom; animation:barGrow .7s cubic-bezier(.25,.1,.25,1) both}
/* .e-8th-bar:nth-child(2) {margin-left:-20px}
.e-8th-bar:nth-child(n+3) {margin-left:-5px} */
.e-8th-bar span {position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); font-size:14px; font-weight:700; line-height:1.3; white-space:nowrap; opacity:0; animation:barFadeIn .5s ease .4s both}
.e-8th-bar.small span {top:auto; bottom:100%; transform:translateX(-50%); margin-bottom:2px}
@keyframes barGrow {from {transform:scaleY(0)} to {transform:scaleY(1)}}
@keyframes barFadeIn {from {opacity:0} to {opacity:1}}
.e-8th-bar.red {background:rgba(222,49,60,0.1); border-color:rgba(222,49,60,0.5)}
.e-8th-bar.red span {color:#de313c}
.e-8th-bar.blue {background:rgba(0,80,184,0.1); border-color:rgba(0,80,184,0.5)}
.e-8th-bar.blue span {color:#0050b8}
.e-8th-bar.crimson {background:rgba(196,0,26,0.1); border-color:rgba(196,0,26,0.5)}
.e-8th-bar.crimson span {color:#c4001a}
.e-8th-bar.gray {background:rgba(102,102,102,0.1); border-color:rgba(102,102,102,0.5)}
.e-8th-bar.gray span {color:#666}
.e-8th-chart-labels {display:flex; justify-content:space-between; gap:8px; padding-top:4px}
.e-8th-chart-labels span {flex:1; font-size:12px; font-weight:400; color:#585858; line-height:1.3; text-align:center}
/* .e-8th-chart-labels span:nth-child(2) {margin-left:-20px}
.e-8th-chart-labels span:nth-child(n+3) {margin-left:-5px} */
/* 특집메인 aside: 역대 지방선거 투표율 */
.e-all-turnout {display:flex; flex-direction:column-reverse; gap:12px}
.e-all-turnout-row {display:flex; align-items:center; gap:6px; min-height:20px; line-height:1.3; white-space:nowrap}
.e-all-turnout-row .label {min-width:50px; font-size:14px; font-weight:400; opacity:0; animation:turnoutFadeIn .2s ease both}
.e-all-turnout-row .label .yy {color: #767676; font-size:12px; vertical-align:2px}
.e-all-turnout-row .bar {height:8px; transform-origin:left; animation:turnoutBarGrow .3s cubic-bezier(.25,.1,.25,1) both}
.e-all-turnout-row .bar.gray {background:#ccc}
.e-all-turnout-row .bar.key {background:var(--election-key)}
.e-all-turnout-row .bar.key-light {background:rgba(94,13,187,0.3)}
.e-all-turnout-row .value {font-size:14px; opacity:0; animation:turnoutFadeIn .2s ease both; font-weight:400; color:#666}
.e-all-turnout-row .value.highlight {font-weight:700; color:var(--election-key)}
.e-all-turnout-row .badge {display:inline-flex; align-items:center; justify-content:center; padding:2px 4px; border:1px solid #ccc; border-radius:4px; font-size:12px; font-weight:400; opacity:0; animation:turnoutFadeIn .2s ease both}
/* 1회~8회 순차 딜레이: --i 기반 calc (label → bar → value → badge) */
.e-all-turnout-row .label {animation-delay:calc(var(--i) * .2s)}
.e-all-turnout-row .bar {animation-delay:calc(var(--i) * .2s + .05s)}
.e-all-turnout-row .value {animation-delay:calc(var(--i) * .2s + .25s)}
.e-all-turnout-row .badge {animation-delay:calc(var(--i) * .2s + .3s)}
@keyframes turnoutBarGrow {from {transform:scaleX(0)} to {transform:scaleX(1)}}
@keyframes turnoutFadeIn {from {opacity:0} to {opacity:1}}
/* 뷰포트 진입 시에만 애니메이션 재생 (JS에서 .is-inview 토글) */
.aside-8th-result:not(.is-inview) .e-8th-bar,
.aside-8th-result:not(.is-inview) .e-8th-bar span,
.aside-all-turnout:not(.is-inview) .e-all-turnout-row > * {animation:none}
/* 특집메인: 투표 모듈 */
.election-dropdown {display:flex; align-items:center}
.election-dropdown .select-tit {position:relative; display:flex; align-items:center; width:100%; height:32px; border-radius:5px; padding:6px 10px; border:1px solid #ddd; font-weight:700; font-size:13px; text-align:left;  box-sizing:border-box; overflow:hidden}
.election-dropdown .select-tit::after {content:''; position:absolute; top:50%; right:15px; width:0px; height:0px; border-top:5px solid #121212; border-left:5px solid transparent; border-right:5px solid transparent; transform:translateY(-50%)}
.election-dropdown .select-tit.active {border-bottom-color:transparent; border-radius:5px 5px 0 0}
.election-dropdown .select-tit.active::after {transform:rotate(180deg) translateY(3px)}
.election-dropdown .drop-list {display:none; position:absolute; left:0; top:31px; width:100%; background-color:#fff; box-sizing:border-box; z-index:1}
.election-dropdown .drop-list::after {content:''; display:block; position:absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%; border-radius:0 0 5px 5px; border:1px solid #ddd; border-top:none; box-sizing:border-box; pointer-events:none}
.election-dropdown .drop-list ul {overflow-x:hidden; overflow-y:auto; max-height:220px; }
.election-dropdown .drop-list ul::-webkit-scrollbar {width:8px}
.election-dropdown .drop-list ul::-webkit-scrollbar-thumb {background-color:#c3cddb; border-radius:20px; background-clip:padding-box; border:1px solid transparent}
.election-dropdown .drop-list ul::-webkit-scrollbar-track {background-color:#f4f6fa; border-left:1px solid rgba(0, 0, 0, 0.05)}
.election-dropdown .drop-item {width:100%; padding:10px 15px; font-size:13px; text-align:left; box-sizing:border-box}
.election-dropdown .drop-item:hover, .election-dropdown .drop-item.on {font-weight:700; background-color:#f4f6fa}
.election-dropdown .select-tit.active + .drop-list {display:block}
.election-dropdown .drop-box {position:relative}
.election-dropdown .drop-box.city-box {width:253px; margin-right:10px}
.election-dropdown .drop-box.city-box + .drop-box {width:calc(100% - 263px)}
.election-chart-legend {display:flex; align-items:center; gap:8px 20px}
.election-chart-legend.legend-vertical {flex-direction:column}
.election-chart-legend > .item {display:inline-flex; gap:5px; align-items:center; font-size:14px}
.election-chart-legend > .item::before {content:''; display:inline-block; width:10px; height:10px; border-radius:100%}
.election-chart-legend .maximum::before {background-color:rgba(239, 59, 113, 0.85)}
.election-chart-legend .lowest::before {background-color:rgba(0, 151, 235, 0.85)}
.region-voting-chart {width:calc(100% - 510px)}
.region-voting-chart .election-chart-legend .item1::before {border:2px solid #4012a2; background-color:#cdb8fa}
.region-voting-chart .election-chart-legend .item2::before {border:2px solid #d0acdd; background-color:#fff}
.region-voting-chart .chart-top-wrap {margin-bottom:20px}
.region-voting-chart .drop-box {min-width:91px}
.region-voting-chart .election-dropdown .select-tit {padding:6px 25px 6px 6px; background-color:#fff}
.region-voting-chart .election-dropdown .select-tit::before {content:''; display:inline-block; width:20px; height:20px; margin-right:2px; vertical-align:middle; background:url('https://static.hankyung.com/img/election/2024/0410/icon-marker.svg')}
.region-voting-chart .election-dropdown .select-tit::after {right:10px}
.chart-top-wrap .chart-tit-wrap {display:flex; align-items:center}
.chart-top-wrap .chart-tit-wrap .tit {font-size:20px}
.chart-top-wrap .chart-tit-wrap .txt-num {margin-left:8px; color:#4012a2; font-weight:700; font-size:28px}
.chart-top-wrap .chart-tit-wrap .standard {margin-left:10px; color:#676189; font-size:14px}
.vote-turnout-wrap {padding-top:25px; border-radius:10px; border:1px solid #DBDBEC; background-color:#fff}
.vote-turnout-wrap .chart-head {position:relative; display:flex; align-items:center; justify-content:space-between; position:relative; padding:0 20px; text-align:center; box-sizing:border-box}
.vote-turnout-wrap .election-dropdown {float:left}
.vote-turnout-wrap .region-turnout {position:absolute; top:50%; left:50%; font-size:18px; transform:translate(-50%,-50%)}
.vote-turnout-wrap .region-turnout .txt-num {font-weight:700; color:#4012a2}
.vote-turnout-wrap .chart-area {padding:20px 20px 25px; box-sizing:border-box}
.vote-turnout-wrap .chart-area > .chart-area-inner {width:100%; height:360px}
.vote-turnout-wrap .chart-area img {width:100%; height:100%}
.vote-turnout-wrap .nationwide-voting {display:flex; border-top:1px solid #dbdbec}
.vote-turnout-wrap .nationwide-voting > div {flex:1 1 auto; width:50%; padding:12px 0; font-size:14px; text-align:center; box-sizing:border-box}
.vote-turnout-wrap .nationwide-voting > div + div {border-left:1px solid #dbdbec}
.vote-turnout-wrap .nationwide-voting > div .txt-num::before {content:''; display:inline-block; margin:0 10px 0 6px; width:1px; height:12px; background-color:#d9d9d9; vertical-align:middle;}
.vote-turnout-wrap .nationwide-voting > div .txt-num {font-weight:700; color:#4012a2}
.vote-turnout-wrap + .election-tbl {margin-top:20px}
.election-tbl table {width:100%; table-layout:fixed; border-top:1px solid #dbdbec}
.election-tbl table tr.active th,
.election-tbl table tr.active td {color:#4012a2}
.election-tbl table tr.active td.on {font-weight:700}
.election-tbl table th, 
.election-tbl table td {border-bottom:1px solid #dbdbec; box-sizing:border-box; font-family:'Noto Sans KR', sans-serif; white-space:nowrap}
.election-tbl table th + th, 
.election-tbl table td + td, 
.election-tbl table th + td {border-left:1px solid #dbdbec}
.election-tbl table th {font-weight:500; font-size:14px; background-color:#edecfb}
.election-tbl table th:first-child {text-align:left;}
.election-tbl table thead th {padding:8px; white-space:nowrap}
.election-tbl table tbody th {padding:15px 8px}
.election-tbl table td {padding:15px 0; box-sizing:border-box}
.election-tbl table td {font-family:'Inter', sans-serif; font-size:16px; text-align:center; background-color:#fff}
.election-tbl .tbl-desc {margin-top:20px; line-height:1.5; color:#676189; font-size:13px}
.election-tbl .election-tbl-scroll {overflow-x:auto; scrollbar-width:thin; scrollbar-color:#4012a2 #edecfb}
.election-tbl .election-tbl-scroll > table {min-width:800px}
.election-tbl .election-tbl-scroll::-webkit-scrollbar {height:8px}
.election-tbl .election-tbl-scroll::-webkit-scrollbar-track {background:#edecfb; border-radius:4px}
.election-tbl .election-tbl-scroll::-webkit-scrollbar-thumb {background:#4012a2; border-radius:4px}
.election-tbl .election-tbl-scroll::-webkit-scrollbar-thumb:hover {background:#5e0dbb}
@media (max-width:1400px) {
    .election-tbl table td {font-size:13px}
}

.region-voting-map {display:flex; flex-direction:column; justify-content:space-between; position:relative; width:400px; border-left:1px solid #ddd; box-sizing:border-box}
.region-voting-map .election-chart-legend {align-items:flex-end}
.region-voting-map .map-area {height:700px}
.region-voting-map .map-area svg {width:100%; height:100%}
.region-voting-map svg rect {cursor: pointer;}
.region-voting-map svg .region {fill:#fff; font-family:'Inter', sans-serif; font-size:16px; font-weight:700; pointer-events:none; text-anchor:middle;}
.region-voting-map svg .region.txt-big {font-size:20px}
.region-voting-map svg .region.txt-sm {font-size:13px}
.region-voting-map svg .region-name {fill:#fff; font-family:'Noto Sans KR', sans-serif; font-weight:500; font-size:13px; pointer-events:none; text-anchor:middle;}
.region-voting-map svg .region-name.txt-big {font-size:15px}
.region-voting-map svg .region-name.txt-sm {font-size:11px}
.region-voting-map svg .maximum {fill:rgba(239, 59, 113, 0.85)}
.region-voting-map svg .lowest {fill:rgba(0, 151, 235, 0.85)}
.region-voting-map svg rect.active, 
.region-voting-map svg rect:hover {fill:#5E0DBB; stroke-width:8px; stroke:rgba(255,255,255,.5)}
.region-voting-map svg .maximum.active, 
.region-voting-map svg .maximum:hover {fill:rgba(239, 59, 113, 0.85)}
.region-voting-map svg .lowest.active, 
.region-voting-map svg .lowest:hover {fill:rgba(0, 151, 235, 0.85)}
.region-voting-map .region-circle {opacity:0; animation-name:animateIn; animation-duration:0.5s; animation-fill-mode:forwards; transform-origin:center; transform-box:fill-box}
.region-voting-map .map-desc {color:#676189; font-size:13px; text-align:right}
@keyframes animateIn {
    0% {
        opacity: 0;
        transform: scale(0.6) rotate(-15deg);
    }
    100% {
        opacity: 1;
        transform: scale(1) rotate(0);
    }
}
/* 투표모듈이 톱 모듈 아래 있을 때 스타일 */
.election-top-news ~ .election-vote-module .election-tbl table th {padding:8px 5px}
.election-top-news ~ .election-vote-module .election-tbl table tbody th {padding:15px 5px}
.election-top-news ~ .election-vote-module .election-tbl table td {padding:15px 0; font-size:14px}
.election-top-news ~ .election-vote-module .election-tbl table th:first-child {padding:8px 5px}
.election-top-news ~ .election-vote-module .region-voting-map .map-group {height:100%; display:flex; flex-direction:column; justify-content:space-between}
.election-top-news ~ .election-vote-module .region-voting-map .map-area {transform:translateX(30px)}
.election-top-news ~ .election-vote-module .map-path path {fill:#EBE9F5; stroke:#DBDBEC}
.election-top-news ~ .election-vote-module .region-voting-map svg .region-name {font-size:15px}
.election-top-news ~ .election-vote-module .region-voting-map svg .region-name.txt-big {font-size:18px}
/* 투표모듈이 최상단에 있을 때 스타일 */
.election-header ~ .election-vote-module {--vote-split:calc(50% + clamp(84px, 7vw, 134.4px)); padding:40px 0; background:linear-gradient(to right, #F6F5FA var(--vote-split), #EBE9F5 var(--vote-split)); border-top:1px solid rgba(94, 13, 187, 0.1)}
.election-header ~ .election-vote-module .election-module-inner {border:none; max-width:1920px; margin:0 auto; padding-top:0; box-sizing:border-box}
.election-header ~ .election-vote-module .election-module-inner > .module-row {gap:0}
.election-header ~ .election-vote-module .region-voting-chart {min-width:0; width:57%; padding:0 3% 0 1%}
.election-header ~ .election-vote-module .region-voting-map {border-left:none; flex:0 0 auto; width:43%; padding:0 1% 0 0}
.election-header ~ .election-vote-module .region-voting-map .map-group {position:relative; padding-left:40px}
.election-header ~ .election-vote-module .region-voting-map .map-area {height:clamp(766px, (100vw - 1440px) / 16 + 766px, 796px)}
.election-header ~ .election-vote-module .region-voting-map .election-chart-legend {position:absolute; top:0; right:0}  
.election-header ~ .election-vote-module .region-voting-map .map-desc {position:absolute; bottom:0; right:0}
.election-header ~ .election-vote-module .election-tbl .tbl-desc > p {position:relative; padding-left:16px}
.election-header ~ .election-vote-module .election-tbl .tbl-desc > p::before {content:''; position:absolute; top:8px; left:8px; width:2px; height:2px; border-radius:1px; background:#676189}
/* 특집메인: 개표모듈 */
[data-category="election2026"] .election-count-module {padding:24px 0 40px; margin-bottom:-40px}
[data-category="election2026"] .election-count-module .election-count-inner {max-width:1200px; margin:0 auto}
[data-category="election2026"] .election-count-module .election-count-inner > .election-count-notice {margin-top:16px; text-align:right}
[data-category="election2026"] .election-count-module .module-tit-wrap {display:flex; align-items:center; gap:16px; min-height:52px; margin-bottom:24px; padding:8px 0 16px; border-bottom:1px solid #121212; box-sizing:border-box}
[data-category="election2026"] .election-count-module .module-tit-area {flex:1; min-width:0}
[data-category="election2026"] .election-count-module .module-tit {font-size:24px; line-height:1.3}
.election-count-body {display:flex; gap:40px}
.election-count-body .count-slide-indicator .count-slide-btn {width:24px; height:24px}
.election-count-body .election-count-region {flex:0 0 420px; min-width:0; box-sizing:border-box; padding:24px; border-radius:20px; background:#EBE9F5}
.election-count-body .election-count-map {flex:1 1 auto; width:700px; min-width:0; border-radius:20px; background:#EBE9F5}
.election-count-body .election-count-map-inner {position:relative; height:100%; padding:24px; box-sizing:border-box; /*border-radius:20px; background:#EBE9F5*/}
.election-count-body .election-vs-item + .election-vs-item {margin-top:8px}
/* 개표모듈 - 전국 개표율 슬라이드 영역 */
.election-count-body .election-count-region .rate-tit-wrap {margin-bottom:16px}
.election-count-body .election-count-region .election-vs-item .vs-head {padding-left:16px; padding-right:16px}
.election-count-body .election-count-region .election-vs-item .vs-body {padding:16px}
/* 개표모듈 - 구시군의장 지도 */
.election-count-map .region-tab-wrap {margin-bottom:16px}
.election-count-map .map-tit-wrap {margin-bottom:24px; padding:8px 0 16px; border-bottom:1px solid #C9C4E0; text-align:center}
.election-count-map .map-tit {font-size:20px; font-weight:700}
.election-count-map .map-meta {display:flex; align-items:center; justify-content:space-between; margin-bottom:24px}
.election-count-map .map-seats {font-size:12px; color:#676189}
.election-count-map .map-meta:has(.map-seats:only-child) {margin:0; position:relative}
.election-count-map .map-meta:has(.map-seats:only-child) .map-seats {position:absolute; top:0; right:0}
.election-count-map .rate-tit-wrap {margin-bottom:0}
.election-count-map .svg-map {display:block; margin:0 auto; max-width:100%}
.election-count-map .svg-map .map-path path {cursor:pointer}
.election-count-map .svg-map .map-path path[data-event="false"] {cursor:default; pointer-events:none}
.election-count-map .svg-map .map-path path.is-hover,
.election-count-map .svg-map .map-path path.selected-region {fill:#DDD7FC; stroke:#8B8BC4; stroke-width:1.5; pointer-events:none}
.election-count-map .svg-map .region-seats g.selected-region .region-name {font-weight:700}
/* 의석 circle 정당 키컬러 */
.election-count-map .svg-map circle {fill:#aaa}
.election-count-map .svg-map circle.party-1 {fill:var(--e-party-1)}
.election-count-map .svg-map circle.party-2 {fill:var(--e-party-2)}
.election-count-map .svg-map circle.party-3 {fill:var(--e-party-3)}
.election-count-map .svg-map circle.party-4 {fill:var(--e-party-4)}
.election-count-map .svg-map circle.party-5 {fill:var(--e-party-5)}
.election-count-map .svg-map circle.party-6 {fill:var(--e-party-6)}
.election-count-map .svg-map circle.party-7 {fill:var(--e-party-7)}
.election-count-map .svg-map circle.party-etc {fill:var(--e-party-etc)}
/* 지역 클릭 레이어 팝업 */
.region-vote-popup {position:absolute; top:calc(50% + 50px); left:50%; transform:translate(-50%, -50%); display:flex; flex-direction:column; width:400px; max-height:560px; background:#fff; border-radius:10px; box-shadow:2px 2px 4px 0 rgba(0, 0, 0, 0.10), 4px 4px 12px 0 rgba(0, 0, 0, 0.10); box-sizing:border-box; z-index:10; overflow:hidden}
.region-vote-popup[hidden] {display:none}
.region-vote-popup-header {flex:0 0 auto; display:flex; align-items:center; gap:8px; height:48px; padding:0 20px; border-bottom:1px solid #e8e8e8}
.region-vote-popup-tit {font-size:16px; font-weight:700; line-height:1}
.region-vote-popup-meta {flex:1; display:flex; align-items:center; gap:8px; font-size:12px; color:var(--hk-text-secondary)}
.region-vote-popup-meta .item:not(:first-child) {border-left:1px solid #ccc; padding-left:8px; line-height:1}
.region-vote-popup-close {flex:0 0 24px; position:relative; width:24px; height:24px; padding:0; border:0; background:none; cursor:pointer}
.region-vote-popup-close::before,
.region-vote-popup-close::after {content:''; position:absolute; top:50%; left:50%; width:16px; height:1.5px; background:#121212}
.region-vote-popup-close::before {transform:translate(-50%, -50%) rotate(45deg)}
.region-vote-popup-close::after {transform:translate(-50%, -50%) rotate(-45deg)}
.region-vote-popup-body {flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; display:flex; flex-direction:column; gap:12px; padding:20px; background:#F6F5FA; scrollbar-width:thin; scrollbar-color:#C9C9D4 #F6F5FA}
.region-vote-popup-body::-webkit-scrollbar {width:8px}
.region-vote-popup-body::-webkit-scrollbar-thumb {background-color:#C9C9D4; border-radius:20px; background-clip:padding-box; border:1px solid transparent}
.region-vote-popup-body::-webkit-scrollbar-track {background-color:#F6F5FA; border-left:1px solid rgba(0, 0, 0, 0.1)}
.region-vote-popup-source {flex:0 0 auto; padding:12px 20px; font-size:12px; color:#999; text-align:right; background:#F6F5FA}
.election-count-map .svg-map .region-seats {pointer-events:none; user-select:none}
/* 의석 circle 순차 등장 애니메이션 */
@keyframes seatFadeIn {from {opacity:0} to {opacity:1}}
/* .election-count-map .svg-map .region-seats .seats > circle {opacity:0}
.election-count-map .svg-map .region-seats.is-inview .seats > circle {animation:seatFadeIn 0.1s ease-in forwards} */
.election-count-map.is-inview .svg-map .region-seats .seats > circle {opacity:0; animation:seatFadeIn 0.1s ease-in forwards}
.election-count-map .election-count-map-inner + .election-count-notice {margin-top:16px; text-align:right}
/* 개표-당선 모듈: 시도지사 지도 */
.election-count-map .tab-map-content .map-area {height:768px; overflow:hidden}
.election-count-map .tab-map-content .svg-map {height:100%}
.election-count-map .tab-map-content .election-count-notice {position:absolute; top:34px; right:24px}
.election-count-map .tab-map-content .election-count-notice.bottom {top:auto; bottom:24px}
.election-count-map .tab-map-1 .region-circle {opacity:0; animation-name:animateIn; animation-duration:0.5s; animation-fill-mode:forwards; transform-origin:center; transform-box:fill-box}
.election-count-map .tab-map-1 .region {fill:#fff; font-family:'Inter', sans-serif; font-size:16px; font-weight:700; pointer-events:none; text-anchor:middle}
.election-count-map .tab-map-1 .region.txt-big {font-size:20px}
.election-count-map .tab-map-1 .region.txt-sm {font-size:13px}
.election-count-map .tab-map-1 .region-ing {font-size:12px; font-weight:500; transform:translateY(-2px)}
.election-count-map .tab-map-1 .region-name {fill:#fff; font-family:'Noto Sans KR', sans-serif; font-weight:500; font-size:13px; pointer-events:none; text-anchor:middle; transform:translateY(-2px)}
.election-count-map .tab-map-1 .region-name.txt-big {font-size:15px}
.election-count-map .tab-map-1 .region-name.txt-sm {font-size:11px}
.election-count-map .tab-map-1 .region-circle:has(.txt-sm) .region-ing {font-size:10px}
/* .election-count-map .tab-map-1 .svg-map {transform:scale(1.1)} */
.election-count-map .tab-map-2 .svg-map {transform:translate(14px, -11px)}

/* 당선모듈 */
.election-vs-results {display:grid; grid-template-columns:repeat(2, calc(50% - 5px)); gap:10px}
.election-vs-results .election-vs-item + .election-vs-item {margin-top:0}
.election-vs-results .election-vs-item .vs-pair-bar {border-radius:0 4px 4px 0}
.election-result-module .election-count-body .election-count-map-inner {height:auto}
.election-result-module .election-result-banner.type-b {margin-bottom:0}
.election-result-module .region-vote-popup {width:420px}
.election-result-module .election-vs-item .vs-cand {align-items:unset}
.election-result-module .election-vs-item .vs-photo {flex:0 0 74px; width:74px; height:74px}
.election-result-module .election-vs-item .vs-body:has(.vs-cand:only-child) {padding:21px 16px}
.election-result-module .election-vs-item .vs-info {justify-content:center}
.election-result-module .election-vs-item:has(.vs-head-tag) .vs-info {padding-top:10px}
.election-result-module .rank-elected-final {width:75px; height:40px}

/*===== 특집: 서브 공통 =====*/
/* 선거유형 탭 */
.election-type-tab-list {display:flex; height:50px; padding:4px; background:#F6F5FA; border-radius:10px; box-sizing:border-box}
.election-type-tab-list .election-type-tab {flex:1; display:inline-flex; align-items:center; justify-content:center; padding:0 10px; border:1px solid #F6F5FA; border-radius:8px; font-size:16px; font-weight:400; white-space:nowrap; font-family:'Noto Sans KR', sans-serif; transition:border-color 0.3s ease}
.election-type-tab-list .election-type-tab:hover {border-color:#ddd}
.election-type-tab-list .election-type-tab.is-active {background:#fff; border-color:#ddd; font-weight:700; color:var(--election-key)}
/* 지역 탭 */
.region-tab-wrap + .cont-wrap {margin-top:24px; padding-top:40px; border-top:1px solid #ddd}
.region-tab-list {display:flex; flex-wrap:wrap; gap:8px; align-items:center}
.region-tab-list .region-tab {display:inline-flex; align-items:center; justify-content:center; gap:4px; min-width:82px; height:40px; padding:0 16px 1px; border:1px solid #ddd; border-radius:25rem; background:#fff; font-size:16px; font-weight:400; font-family:'Noto Sans KR', sans-serif}
.region-tab-list .region-tab .num {font-size:12px; font-weight:400}
.region-tab-list .region-tab:hover {background:#F6F5FA}
.region-tab-list .region-tab.is-active {background:var(--election-key); border-color:var(--election-key); color:#fff; font-weight:700}
/* 지역 배지 */
.module-tit-area:has(.region-badge) {gap:8px}
.region-badge {display:inline-flex; align-items:center; justify-content:center; padding:3px 6px; border-radius:4px; background:rgba(94, 13, 187, 0.1); font-size:14px; font-weight:700; line-height:1.3; color:var(--election-key); white-space:nowrap; font-family:'Noto Sans KR', sans-serif}
/* 지역구 셀렉트 */
.election-select {display:block; width:100%; height:40px; padding:0 48px 0 16px; border:1px solid #ddd; border-radius:8px; background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none'%3E%3Cpath stroke='%23121212' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m5 7.5 5 5 5-5'/%3E%3C/svg%3E") no-repeat right 12px center; font-size:16px; font-family:'Noto Sans KR', sans-serif; letter-spacing:-0.6px; color:#121212; appearance:none; -webkit-appearance:none; cursor:pointer}
/* 선거 데이터 준비 중 */
.election-no-result {padding:100px 0; text-align:center}
.election-no-result .msg {color:var(--hk-text-secondary); font-size:18px}
.election-no-result .msg::before {content:''; display:block; width:100px; height:100px; margin:0 auto 16px; background:url('https://hkstatic.hankyung.com/resource/special/election/2026/0603/img/nodata.png') no-repeat center/contain}
/* 준비중 블러 메시지 */
.election-ready {position:absolute; top:0; left:0; z-index:5; display:flex; align-items:center; justify-content:center; width:100%; height:100%; border-radius:10px; background:rgba(255, 255, 255, 0.70); backdrop-filter:blur(7.5px)}
.election-ready .msg {color:var(--hk-text-secondary); font-size:16px}

/*===== 특집: 후보자/당선자 =====*/
.candidate-contents-wrap {display:flex; flex-direction:column; gap:24px}
.election-type-region-detail {width:288px; margin-bottom:16px}
/* 후보자 리스트 */
.candidate-list-wrap {display:flex; flex-direction:column; gap:40px}
.candidate-list {display:grid; grid-template-columns:repeat(4, 1fr); gap:16px}
.candidate-item {display:flex; flex-direction:column; border:1px solid #ddd; border-radius:10px; overflow:hidden; box-sizing:border-box}
.candidate-summary {display:flex; gap:16px; padding:20px; box-sizing:border-box}
.candidate-info {flex:1; min-width:0; display:flex; flex-direction:column; justify-content:space-between; padding:4px 0}
.candidate-meta {display:flex; flex-direction:column; align-items:flex-start; gap:8px}
.candidate-no {display:inline-flex; align-items:center; justify-content:center; padding:2px 4px; border-radius:4px; background:#eee; font-size:12px; line-height:1.3; font-family:'Noto Sans KR', sans-serif}
.candidate-name-wrap {display:flex; align-items:flex-start; gap:6px; min-width:0}
.candidate-name {flex:0 1 auto; min-width:0; display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; font-size:20px; line-height:1.3; font-weight:700; word-break:break-all}
.candidate-status {flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; padding:2px 4px; border:1px solid #ccc; border-radius:4px; background:#fff; font-size:12px; font-weight:400; line-height:1.3; white-space:nowrap; font-family:'Noto Sans KR', sans-serif}
.candidate-name + .candidate-status {margin-top:2px}
.candidate-photo {position:relative; flex:0 0 100px; width:100px; height:130px; border-radius:10px; overflow:hidden}
.candidate-photo::after {content:''; position:absolute; inset:0; border:1px solid rgba(0, 0, 0, 0.06); border-radius:10px; pointer-events:none}
.candidate-photo img {display:block; width:100%; height:100%; object-fit:cover; object-position:center top}
.candidate-profile {flex:1; display:flex; flex-direction:column; gap:10px; padding:20px; border-top:1px solid #ddd; background:#fafafa; font-size:13px; line-height:1.5; box-sizing:border-box}
.candidate-profile .profile-item {display:flex; gap:0 10px; flex-wrap:wrap}
.candidate-profile dt {flex:0 0 35px; font-weight:700}
.candidate-profile dd {flex:1; min-width:0}
/* 재보궐 — 지역구 타이틀 + 후보자 리스트 그룹 */
.candidate-region-group {display:flex; flex-direction:column; gap:16px}
.candidate-region-tit {display:flex; align-items:center; gap:16px; padding:8px 0 16px; border-bottom:1px solid #121212; font-size:24px; line-height:1.3; font-weight:700}
/* 하단 안내 문구 */
.election-footnote {display:flex; justify-content:flex-end; align-items:center; margin-top:16px; color:var(--hk-text-secondary)}
.election-footnote-link {color:var(--hk-text-secondary); font-size:14px; line-height:1.3;}
.election-footnote-link::after {content:''; display:inline-flex; width:16px; height:16px; margin-left:4px; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='%23585858' stroke-linecap='round' stroke-linejoin='round' d='M10 2h4v4m0-4L8 8M6.667 2H5.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C2 3.52 2 4.08 2 5.2v5.6c0 1.12 0 1.68.218 2.108a2 2 0 0 0 .874.874C3.52 14 4.08 14 5.2 14h5.6c1.12 0 1.68 0 2.108-.218a2 2 0 0 0 .874-.874C14 12.48 14 11.92 14 10.8V9.333'/%3E%3C/svg%3E") no-repeat center center/contain; vertical-align:-3px}
.election-footnote:has(.txt) {justify-content:space-between}
/* 당선자 */
.candidate-list.candidate-result .party-1-logo {width:42px; height:22px}
.candidate-list.candidate-result .party-2-logo {width:66px; height:16px}
.candidate-list.candidate-result .party-3-logo {width:61px; height:14px}
.candidate-list.candidate-result .party-4-logo {width:44px; height:17px}
.candidate-list.candidate-result .party-5-logo {width:36px; height:12px}
.candidate-list.candidate-result .party-6-logo {width:69px; height:12px}
.candidate-list.candidate-result .party-7-logo {width:68px; height:13px}
.candidate-list.candidate-result .party-etc {font-size:13px}