:root{--bg-primary: #0D1228;--bg-secondary: #191E35;--bg-tertiary: #242940;--bg-card: #191E35;--bg-card-hover: #242940;--bg-input: #10152A;--bg-surface: #191E35;--bg-elevated: #242940;--border-color: rgba(169, 199, 255, .08);--border-light: rgba(169, 199, 255, .05);--border-subtle: rgba(169, 199, 255, .05);--border-default: rgba(169, 199, 255, .08);--border-strong: rgba(169, 199, 255, .12);--text-primary: #DDE1FF;--text-secondary: #A9C7FF;--text-muted: #8B95B0;--text-accent: #2E8BFF;--text-disabled: #5A6180;--accent-blue: #2E8BFF;--accent-primary: #2E8BFF;--accent-cyan: #22d3ee;--accent-green: #10B981;--accent-yellow: #F59E0B;--accent-red: #EF4444;--accent-purple: #8B5CF6;--color-info: #2E8BFF;--color-success: #10B981;--color-warning: #F59E0B;--color-danger: #EF4444;--primary-gradient: linear-gradient(135deg, #A9C7FF, #3D90FF);--primary-glow: 0 0 20px rgba(61, 144, 255, .15);--party-democratic: #2E8BFF;--party-ppp: #E61E2B;--party-reform: #3B6ABF;--party-newreform: #FF7210;--party-progressive: #D6001C;--party-justice: #FFCC00;--party-newfuture: #45B97C;--party-independent: #a0a0a0;--party-other: #9370DB;--header-height: 72px;--footer-height: 56px;--sidebar-width: 320px;--panel-width: 560px;--font-family: "Inter", "Noto Sans KR", -apple-system, BlinkMacSystemFont, sans-serif;--font-label: "Public Sans", "Inter", "Noto Sans KR", sans-serif;--text-display: 32px;--text-headline: 22px;--text-title: 18px;--text-body: 15px;--text-caption: 13px;--text-micro: 12px;--font-regular: 400;--font-bold: 600;--leading-tight: 1.3;--leading-normal: 1.6;--space-2: 2px;--space-4: 4px;--space-6: 6px;--space-8: 8px;--space-12: 12px;--space-16: 16px;--space-20: 20px;--space-24: 24px;--space-32: 32px;--space-40: 40px;--transition: all .15s cubic-bezier(.4, 0, .2, 1);--shadow: 0 2px 16px rgba(13, 18, 40, .25);--shadow-lg: 0 4px 32px rgba(13, 18, 40, .35);--glass-bg: rgba(25, 30, 53, .8);--glass-blur: blur(16px);--glass-border: rgba(169, 199, 255, .08);--chart-text: #8b99b5;--chart-grid: rgba(42, 53, 83, .5);--chart-tick: #94a3b8;--chart-legend: #cbd5e1;--chart-grid-line: rgba(148, 163, 184, .08);--tooltip-bg: rgba(26, 34, 54, .95);--tooltip-border: rgba(59, 130, 246, .3);--map-hover-fill: #2a2a3a;--map-bg: #1a2236;--map-region-stroke: #2a3550;--map-label-fill: #ffffff;--map-label-stroke: #000000;--map-district-stroke: #5a6d8a;--map-legend-text: #ffffff;--map-legend-bg: #2a3450;--map-container-shadow: none}@media(prefers-color-scheme:light){:root:not(.dark-mode){--bg-primary: #F5F7FA;--bg-secondary: #FFFFFF;--bg-tertiary: #EDF0F5;--bg-card: #FFFFFF;--bg-card-hover: #EDF0F5;--bg-input: #E8EBF0;--bg-surface: #FFFFFF;--bg-elevated: #EDF0F5;--border-color: rgba(0, 0, 0, .1);--border-light: rgba(0, 0, 0, .06);--border-subtle: rgba(0, 0, 0, .06);--border-default: rgba(0, 0, 0, .1);--border-strong: rgba(0, 0, 0, .15);--text-primary: #1A1D2E;--text-secondary: #4A5068;--text-muted: #6B7280;--text-accent: #2563EB;--text-disabled: #9CA3AF;--accent-blue: #2563EB;--accent-primary: #2563EB;--accent-cyan: #0891B2;--accent-green: #059669;--accent-yellow: #D97706;--accent-red: #DC2626;--accent-purple: #7C3AED;--color-info: #2563EB;--color-success: #059669;--color-warning: #D97706;--color-danger: #DC2626;--primary-gradient: linear-gradient(135deg, #60A5FA, #2563EB);--primary-glow: 0 0 20px rgba(37, 99, 235, .12);--shadow: 0 2px 16px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 32px rgba(0, 0, 0, .12);--glass-bg: rgba(255, 255, 255, .85);--glass-blur: blur(16px);--glass-border: rgba(0, 0, 0, .08);--chart-text: #4A5068;--chart-grid: rgba(0, 0, 0, .08);--chart-tick: #6B7280;--chart-legend: #4A5068;--chart-grid-line: rgba(0, 0, 0, .06);--tooltip-bg: rgba(255, 255, 255, .95);--tooltip-border: rgba(37, 99, 235, .25);--map-hover-fill: #c8ced8;--map-bg: #d0d6e0;--map-region-stroke: #b8bfcc;--map-label-fill: #2a2f3e;--map-label-stroke: rgba(255,255,255,.6);--map-district-stroke: #a8b0be;--map-legend-text: #2a2f3e;--map-legend-bg: rgba(255,255,255,.85);--map-container-shadow: 0 2px 12px rgba(0,0,0,.08)}}.light-mode{--bg-primary: #E0D9D0;--bg-secondary: #E8E2D8;--bg-tertiary: #D6CFC4;--bg-card: #E8E2D8;--bg-card-hover: #D6CFC4;--bg-input: #CEC7BC;--bg-surface: #E8E2D8;--bg-elevated: #D6CFC4;--border-color: rgba(120, 100, 70, .12);--border-light: rgba(120, 100, 70, .07);--border-subtle: rgba(120, 100, 70, .05);--border-default: rgba(120, 100, 70, .12);--border-strong: rgba(120, 100, 70, .2);--text-primary: #2E261A;--text-secondary: #5E5242;--text-muted: #6B5F50;--text-accent: #3B6AD0;--text-disabled: #ADA393;--accent-blue: #3B6AD0;--accent-primary: #3B6AD0;--accent-cyan: #1A8BAA;--accent-green: #0A9060;--accent-yellow: #C97D14;--accent-red: #C83232;--accent-purple: #7040DC;--color-info: #3B6AD0;--color-success: #0A9060;--color-warning: #C97D14;--color-danger: #C83232;--primary-gradient: linear-gradient(135deg, #7BB3F8, #3B6AD0);--primary-glow: 0 0 20px rgba(59, 106, 208, .1);--shadow: 0 2px 16px rgba(80, 60, 30, .07);--shadow-lg: 0 4px 32px rgba(80, 60, 30, .1);--glass-bg: rgba(232, 226, 216, .92);--glass-blur: blur(16px);--glass-border: rgba(120, 100, 70, .09);--chart-text: #5C5040;--chart-grid: rgba(120, 100, 70, .08);--chart-tick: #8A7E6E;--chart-legend: #5C5040;--chart-grid-line: rgba(120, 100, 70, .06);--tooltip-bg: rgba(247, 243, 237, .96);--tooltip-border: rgba(37, 99, 235, .2);--map-hover-fill: #b0b8c8;--map-bg: #b8c2d4;--map-region-stroke: #8a96aa;--map-label-fill: #1a1f2e;--map-label-stroke: rgba(255,255,255,.7);--map-district-stroke: #8890a0;--map-legend-text: #1a1f2e;--map-legend-bg: rgba(255,255,255,.9);--map-container-shadow: 0 2px 12px rgba(0,0,0,.1)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:var(--leading-normal)}body{font-family:var(--font-family);background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;letter-spacing:-.01em;overflow:hidden;height:100vh;height:100dvh;width:100vw}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}#loading-screen{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg-primary);display:flex;align-items:center;justify-content:center;z-index:10000;transition:opacity .5s ease}#loading-screen.hidden{opacity:0;pointer-events:none}.loading-content{text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--border-color);border-top-color:var(--accent-blue);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px}.loading-content h2{font-size:1.5rem;font-weight:700;margin-bottom:8px;color:var(--text-primary)}.loading-content p{color:var(--text-secondary);font-size:.9rem}.election-banner{position:fixed;top:var(--header-height);left:0;right:0;z-index:999;transition:all .3s ease}.election-banner-content{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;font-size:.82rem;font-weight:500}@media(max-width:768px){.election-banner-content{padding:6px 12px;font-size:.75rem;gap:6px}.banner-close-btn{padding:4px;min-width:36px;min-height:36px;display:flex;align-items:center;justify-content:center}}.banner-text{flex:1;text-align:center}.banner-link{color:inherit;text-decoration:underline;margin-left:8px;font-weight:600}.banner-close-btn{background:none;border:none;color:inherit;cursor:pointer;padding:4px 8px;opacity:.7;font-size:.9rem}.banner-close-btn:hover{opacity:1}.banner-info{background:linear-gradient(90deg,#1e3a5f,#2a4a7f);color:#93c5fd}.banner-warning{background:linear-gradient(90deg,#78350f,#92400e);color:#fbbf24}.banner-campaign{background:linear-gradient(90deg,#1e3a5f,#1e40af);color:#93c5fd}.banner-vote{background:linear-gradient(90deg,#064e3b,#065f46);color:#6ee7b7}.banner-result{background:linear-gradient(90deg,#312e81,#4338ca);color:#a5b4fc}body:not(.banner-hidden) .election-banner{top:calc(var(--header-height) + 36px)}body:not(.banner-hidden) .election-banner~#main-content{top:calc(var(--header-height) + 36px + 36px)}@media(max-width:768px){body:not(.banner-hidden) .election-banner{top:calc(var(--header-height) + 30px)}body:not(.banner-hidden) .election-banner~#main-content{top:calc(var(--header-height) + 30px + 30px)}}.poll-ban-notice{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px 20px;text-align:center;color:var(--text-secondary)}.poll-ban-notice i{font-size:2.5rem;color:#fbbf24;opacity:.7}.poll-ban-notice h4{font-size:1rem;color:#fbbf24;font-weight:700}.poll-ban-notice p{font-size:.85rem;line-height:1.6;color:var(--text-secondary)}.poll-ban-period{font-size:.9rem;font-weight:600;color:var(--text-primary);padding:6px 16px;border:1px solid rgba(251,191,36,.3);border-radius:6px;background:#fbbf2414}.poll-ban-notice small{font-size:.72rem;color:var(--text-muted)}#main-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--glass-border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;z-index:1000}.header-left{display:flex;align-items:center;gap:16px;flex-shrink:0}.logo{display:flex;align-items:center;gap:10px;font-size:1.65rem;font-weight:800;color:var(--text-primary);background:none;border:none;letter-spacing:-.04em;padding:0;cursor:pointer;font-family:inherit;appearance:none}.logo-egg{flex-shrink:0}.logo i{color:var(--accent-blue);font-size:1.3rem}.logo:focus-visible{outline:2px solid var(--accent-blue);outline-offset:3px;border-radius:6px}.header-subtitle{color:var(--text-muted);font-size:.82rem;padding-left:var(--space-12);border-left:1px solid var(--border-default);line-height:1.2}.header-center{flex:1;max-width:580px;margin:0 28px}.search-box{position:relative;display:flex;align-items:stretch;background:#ffffff12;border:2px solid rgba(169,199,255,.2);border-radius:26px;overflow:visible;transition:box-shadow .25s ease,border-color .25s ease,transform .2s ease;box-shadow:0 2px 12px #2e8bff0f}.search-box:hover{border-color:#a9c7ff4d;box-shadow:0 4px 20px #2e8bff1a;transform:translateY(-1px)}.search-box:focus-within{border-color:var(--accent-blue);box-shadow:0 0 0 3px #2e8bff1f,0 4px 24px #2e8bff24}.search-inner{display:flex;align-items:center;flex:1;padding:0 16px;min-width:0}.search-icon{color:var(--text-muted);font-size:1rem;flex-shrink:0;transition:color .2s}.search-box:focus-within .search-icon{color:var(--accent-blue)}.search-box input{flex:1;background:none;border:none;outline:none;color:var(--text-primary);font-size:1rem;padding:14px 12px;font-family:var(--font-family);min-width:0}.search-box input::placeholder{color:var(--text-disabled);font-size:.9rem;letter-spacing:-.01em}.search-btn{display:flex;align-items:center;justify-content:center;width:52px;background:var(--accent-blue);border:none;border-radius:0 24px 24px 0;cursor:pointer;color:#fff;font-size:.85rem;transition:background .2s,opacity .2s;flex-shrink:0;margin:-2px -2px -2px 0;padding:0;opacity:.85}.search-btn:hover{opacity:1;background:var(--accent-blue)}.search-btn:active{opacity:.95}.light-mode .search-box{background:#fff;border-color:#7864462e;box-shadow:0 2px 12px #2563eb0d}.light-mode .search-box:hover{border-color:#78644647;box-shadow:0 4px 20px #2563eb14}.light-mode .search-box:focus-within{border-color:var(--accent-blue);box-shadow:0 0 0 3px #2563eb1a,0 4px 24px #2563eb1a}.light-mode .search-box input{color:#2c2418}.light-mode .search-box input::placeholder{color:#a89e8e}.light-mode .search-icon{color:#a89e8e}.search-results{position:absolute;top:100%;left:0;right:0;background:var(--bg-card);border:1px solid var(--border-default);border-top:none;border-radius:0 0 16px 16px;max-height:360px;overflow-y:auto;display:none;z-index:100;box-shadow:0 12px 40px #0000002e;margin-top:2px}.light-mode .search-results{box-shadow:0 12px 40px #503c1e1f}.search-results.active{display:block}.search-result-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;transition:var(--transition);border-bottom:none}.search-result-item:hover{background:var(--bg-card-hover)}.search-result-item .result-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:.8rem;flex-shrink:0}.search-result-item .result-text{flex:1}.search-result-item .result-name{font-weight:500;font-size:.9rem}.search-result-item .result-desc{font-size:.8rem;color:var(--text-muted)}.search-result-item.active,.search-result-item:hover{background:var(--bg-card-hover)}.search-result-item.no-hover{cursor:default}.search-result-item.no-hover:hover{background:transparent}.search-result-item mark{background:#3b82f64d;color:var(--text-primary);border-radius:2px;padding:0 1px}.result-type-badge{font-size:.65rem;color:var(--text-muted);background:var(--bg-input);padding:2px 8px;border-radius:4px;flex-shrink:0;font-weight:600;white-space:nowrap}.search-results{max-height:400px;overflow-y:auto}.header-right{display:flex;align-items:center;gap:16px;flex-shrink:0}.dday-counter{display:flex;align-items:center;gap:6px;background:#2e8bff1a;border:1px solid rgba(46,139,255,.12);border-radius:10px;padding:8px 14px;height:42px;box-sizing:border-box}.dday-label{font-size:.72rem;color:var(--text-muted);letter-spacing:.02em}.dday-number{font-size:1rem;font-weight:700;color:var(--color-info);line-height:1;letter-spacing:-.02em}.pre-vote-info{display:flex;align-items:center;gap:7px;font-size:.85rem;color:var(--text-secondary);background:var(--bg-card);padding:8px 14px;border-radius:10px;border:1px solid var(--border-default)}.pre-vote-info i{color:var(--accent-green)}#main-content{display:flex;position:fixed;top:var(--header-height);left:0;right:0;bottom:var(--footer-height)}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-right:none;overflow-y:auto;padding:var(--space-16);flex-shrink:0;transition:width .3s ease,padding .3s ease;position:relative}.sidebar.collapsed{width:0;padding:0;overflow:hidden;border-right:none}.sidebar-toggle{position:absolute;top:12px;right:-14px;z-index:100;width:28px;height:28px;border-radius:50%;background:var(--bg-secondary);border:none;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:11px;transition:all .2s;box-shadow:0 2px 6px #0000004d}.sidebar-toggle:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebar.collapsed .sidebar-toggle{right:-36px}.sidebar.collapsed .sidebar-toggle i{transform:rotate(180deg)}.sidebar-section{margin-bottom:var(--space-24)}.section-title{font-size:var(--text-caption);font-weight:var(--font-bold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-8);display:flex;align-items:center;gap:var(--space-6)}.section-title i{color:var(--text-muted);font-size:var(--text-caption)}.election-calendar-list{display:flex;flex-direction:column;gap:14px}.calendar-group{display:flex;flex-direction:column;gap:8px}.calendar-group-title{font-size:.72rem;font-weight:700;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase}.calendar-item{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:12px;border:none;background:var(--bg-tertiary);box-shadow:none}.calendar-item.is-active{border-color:#10b98166;background:linear-gradient(180deg,rgba(16,185,129,.08),var(--bg-tertiary))}.calendar-item--registration{border-left:3px solid var(--accent-blue)}.calendar-item--campaign{border-left:3px solid var(--accent-red)}.calendar-item--poll{border-left:3px solid var(--accent-yellow)}.calendar-item--vote{border-left:3px solid var(--accent-green)}.calendar-item--admin{border-left:3px solid var(--accent-cyan)}.calendar-item--rule{border-left:3px solid var(--accent-purple)}.calendar-item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.calendar-item-date{font-size:.77rem;color:var(--text-secondary);line-height:1.4}.calendar-item-status{flex-shrink:0;padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:700;white-space:nowrap}.calendar-status--active{color:#7ee7bf;background:#10b98129}.calendar-status--upcoming{color:#93c5fd;background:#3b82f629}.calendar-status--warning{color:#fcd34d;background:#f59e0b29}.calendar-item-title{font-size:.92rem;font-weight:650;color:var(--text-primary);line-height:1.4}.calendar-item-meta{display:flex;flex-wrap:wrap;gap:6px}.calendar-chip{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;border:none;background:var(--glass-bg);color:var(--text-secondary);font-size:.68rem;font-weight:600;line-height:1.2}.calendar-chip--subtle{color:var(--text-muted)}.calendar-item-description{font-size:.78rem;color:var(--text-secondary);line-height:1.5}.election-calendar-note{margin-top:10px;font-size:.72rem;color:var(--text-muted);line-height:1.5}.election-calendar-note a{color:var(--text-accent);text-decoration:none}.election-calendar-note a:hover{text-decoration:underline}.calendar-empty{padding:12px;border-radius:12px;border:1px dashed var(--border-color);background:#1a2236b8;color:var(--text-muted);font-size:.82rem}.election-type-filters{display:flex;flex-direction:column;gap:6px}.filter-btn{display:flex;align-items:center;justify-content:space-between;width:100%;gap:var(--space-8);padding:var(--space-12) var(--space-16);background:transparent;border:none;border-radius:8px;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s;font-family:var(--font-family);font-size:var(--text-body)}.filter-btn:hover{background:var(--bg-elevated);color:var(--text-primary)}.filter-btn.active{background:#2e8bff1a;border-color:var(--accent-blue);color:var(--accent-blue)}.filter-icon{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;background:transparent;font-size:var(--text-caption);color:var(--text-muted)}.filter-btn.active .filter-icon{color:var(--color-info)}.filter-count{margin-left:auto;font-size:var(--text-caption);font-weight:var(--font-bold);color:var(--text-muted)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat-card{background:var(--bg-surface);border:none;border-radius:12px;padding:var(--space-12);text-align:center;transition:background .15s}.stat-card:hover{background:var(--bg-elevated)}.stat-value{font-size:var(--text-headline);font-weight:var(--font-bold);color:var(--text-primary);line-height:var(--leading-tight);letter-spacing:-.02em}.stat-label{font-size:var(--text-micro);color:var(--text-muted);margin-top:var(--space-2)}.party-dominance{display:flex;flex-direction:column;gap:8px}.party-dominance-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg-card);border-radius:8px;border:none}.party-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.party-dominance-name{flex:1;font-size:.85rem;font-weight:500}.party-dominance-count{font-size:1rem;font-weight:700;color:var(--accent-cyan)}.party-dominance-bar{width:60px;height:4px;background:var(--bg-input);border-radius:2px;overflow:hidden}.party-dominance-bar-fill{height:100%;border-radius:2px;transition:width .5s ease}.hotspot-list{display:flex;flex-direction:column;gap:4px}.hotspot-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg-card);border:none;border-radius:8px;cursor:pointer;transition:var(--transition)}.hotspot-item:hover{background:var(--bg-card-hover);border-color:var(--accent-yellow)}.hotspot-item.within-margin{border-left:3px solid var(--accent-yellow)}.hotspot-rank{font-size:.8rem;font-weight:700;color:var(--accent-yellow);width:20px;text-align:center}.hotspot-name{flex:1;font-size:.85rem;font-weight:500}.hotspot-gap{font-size:.8rem;font-weight:600;padding:2px 8px;border-radius:4px;background:#f59e0b1a;color:var(--accent-yellow)}.national-party-bar .party-bar-chart{display:flex;height:24px;border-radius:6px;overflow:hidden;margin-bottom:10px}.party-bar-segment{transition:width .5s ease;position:relative;min-width:2px}.party-bar-segment:hover{filter:brightness(1.2)}.party-bar-segment:nth-child(2n){background-image:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(255,255,255,.08) 3px,rgba(255,255,255,.08) 6px)}.party-bar-segment:nth-child(3n){background-image:repeating-linear-gradient(-45deg,transparent,transparent 3px,rgba(255,255,255,.08) 3px,rgba(255,255,255,.08) 6px)}.party-bar-labels{display:flex;flex-wrap:wrap;gap:8px}.party-bar-label{display:flex;align-items:center;gap:4px;font-size:.78rem;color:var(--text-secondary)}.party-bar-label-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}#map-section{flex:1;position:relative;overflow:hidden;background:var(--bg-primary);contain:layout style}.map-controls{position:absolute;top:50px;left:16px;z-index:10;display:flex;flex-direction:row;gap:8px}.map-byelection-note{position:absolute;bottom:16px;left:16px;right:auto;max-width:clamp(220px,calc(100% - 280px),620px);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:10px;padding:10px 14px;font-size:.85rem;color:var(--text-secondary);align-items:center;gap:8px;line-height:1.4;display:none}.map-byelection-note.visible{display:flex}.map-legend{position:absolute;bottom:16px;right:16px;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-radius:10px;border:1px solid var(--glass-border);padding:12px 14px;max-width:220px;color:var(--text-secondary);z-index:10;pointer-events:none}.map-legend h4{font-size:.8rem;text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px;color:var(--text-muted)}.legend-items{display:flex;flex-direction:column;gap:6px}.legend-item{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--text-primary)}.legend-color{width:12px;height:12px;border-radius:3px;flex-shrink:0}.map-mode-controls{display:flex;flex-direction:column;gap:6px}.map-mode-btn{background:var(--bg-card);border:none;color:var(--text-secondary);border-radius:8px;padding:6px 10px;font-size:.8rem;cursor:pointer;transition:var(--transition);text-align:left}.map-mode-btn:hover{border-color:var(--accent-blue);color:var(--text-primary)}.map-mode-btn.hidden{display:none}.map-mode-label{font-size:.78rem;color:var(--text-muted);padding-left:2px}.map-zoom-controls{display:flex;flex-direction:column;gap:var(--space-2);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:8px;padding:var(--space-4)}.map-zoom-controls button{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s;font-size:16px}.map-zoom-controls button span{display:none}.map-zoom-controls button:hover{background:var(--bg-elevated);color:var(--text-primary)}#map-container,#korea-map{width:100%;height:100%}.light-mode #map-container{border-radius:12px;box-shadow:var(--map-container-shadow);margin:8px}@media(prefers-color-scheme:light){:root:not(.dark-mode) #map-container{border-radius:12px;box-shadow:0 2px 12px #00000014;margin:8px}}#korea-map .region{stroke:#fff3;stroke-width:1.2;cursor:pointer;transition:fill .15s,stroke .15s,stroke-width .15s}#korea-map .region:hover{stroke:#ffffff73;stroke-width:1.8;filter:brightness(1.15)}#korea-map .region.region-merged:hover{stroke:inherit;stroke-width:inherit}#korea-map .region.selected{stroke:#fff9;stroke-width:2.5;filter:brightness(1.15)}#korea-map .region.hotspot-blink{animation:hotspotPulse 2s ease-in-out infinite}#korea-map .district{stroke:#ffffff26;stroke-width:.8;cursor:pointer;transition:fill .15s,stroke .15s,stroke-width .15s}#korea-map .district:hover{stroke:var(--accent-cyan);stroke-width:2;filter:brightness(1.2)}#korea-map .district.selected{stroke:var(--accent-cyan);stroke-width:2.5;filter:brightness(1.15)}#korea-map .council-district.selected,#korea-map .basic-district.selected{stroke:#fff;stroke-width:3;filter:brightness(1.5) drop-shadow(0 0 4px rgba(255,255,255,.5));z-index:10}#korea-map .council-district.dimmed,#korea-map .basic-district.dimmed,#korea-map .council-bg-fill.dimmed,#korea-map .basic-bg-fill.dimmed{opacity:.3!important;transition:opacity .15s ease}#korea-map .council-district.selected,#korea-map .basic-district.selected{opacity:1!important}#korea-map .district.merged-changwon,#korea-map .district.merged-changwon:hover,#korea-map .district.merged-changwon.selected{stroke:none!important;stroke-width:0!important}#korea-map .subdistrict{cursor:pointer;filter:drop-shadow(0 0 10px rgba(59,130,246,.2));transition:transform .2s ease,stroke .2s ease}#korea-map .subdistrict:hover{transform:translateY(-2px);stroke-width:1.5}#korea-map .subdistrict.selected{stroke:#22d3ee;stroke-width:2;filter:brightness(1.3)}@keyframes hotspotPulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.4)}}#korea-map .region-label{fill:var(--map-label-fill);font-size:10px;font-weight:700;text-anchor:middle;pointer-events:none;stroke:var(--map-label-stroke);stroke-width:3px;paint-order:stroke}.map-tooltip{position:fixed;padding:10px 14px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;pointer-events:none;z-index:500;display:none;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow-lg);max-width:260px;font-size:.85rem;contain:layout style}@media(max-width:768px){.map-tooltip{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--bg-card);max-width:min(260px,calc(100vw - 24px));font-size:.82rem}}.map-tooltip.active{display:block}.map-tooltip .tooltip-temporary{font-size:.85rem;color:#fef9c3;font-weight:600}.tooltip-title{font-weight:600;font-size:.9rem;margin-bottom:6px;display:flex;align-items:center;gap:6px}.tooltip-party-dot{width:8px;height:8px;border-radius:50%}.tooltip-row{display:flex;justify-content:space-between;font-size:.85rem;color:var(--text-secondary);margin-top:5px}.tooltip-row .label{color:var(--text-muted)}.tooltip-row .value{font-weight:500;color:var(--text-primary);text-align:right;max-width:160px;word-break:keep-all}.tooltip-block{display:flex;flex-direction:column;font-size:.8rem;color:var(--text-secondary);margin-top:5px;padding:5px 8px;background:#ffffff0d;border-radius:5px;border-left:2px solid var(--border-color)}.tooltip-block .label{color:var(--text-muted);margin-bottom:2px;font-size:.8rem}.tooltip-reason-text{color:var(--text-primary);font-weight:500;font-size:.8rem;line-height:1.45;word-break:keep-all;white-space:normal}.detail-panel{width:var(--panel-width);background:var(--bg-secondary);border-left:none;display:flex;flex-direction:column;flex-shrink:0;transform:translate(0);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow:hidden;box-shadow:-4px 0 32px #0d122866}.detail-panel.collapsed{transform:translate(100%);margin-right:calc(-1 * var(--panel-width))}.panel-fade-in .panel-header,.panel-fade-in .panel-tabs,.panel-fade-in .panel-content{animation:panelFadeIn .25s ease-out both}.panel-fade-in .panel-tabs{animation-delay:.05s}.panel-fade-in .panel-content{animation-delay:.1s}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-16);border-bottom:none;background:var(--bg-tertiary);flex-shrink:0}.panel-title-area h2{font-size:var(--text-headline);font-weight:var(--font-bold);color:var(--text-primary);letter-spacing:-.02em;line-height:var(--leading-tight)}.panel-subtitle{font-size:var(--text-caption);color:var(--text-muted);margin-top:var(--space-2)}.panel-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.panel-close:hover{background:var(--bg-elevated);color:var(--text-primary)}.panel-tabs{display:flex;gap:0;border-bottom:none;background:var(--bg-tertiary);flex-shrink:0;margin-bottom:0}.panel-tab{flex:1;padding:var(--space-12) var(--space-16);min-height:44px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:var(--text-body);font-weight:var(--font-regular);font-family:var(--font-family);cursor:pointer;transition:color .15s,border-color .15s;display:flex;align-items:center;justify-content:center;gap:var(--space-4)}.panel-tab:hover{color:var(--text-secondary)}.panel-tab.active{color:var(--accent-blue);font-weight:var(--font-bold);border-bottom-color:var(--accent-blue)}.panel-content{flex:1;overflow-y:auto;padding:16px;font-size:.88rem;line-height:1.65}.panel-welcome{text-align:center;padding:40px 20px}.welcome-icon{width:64px;height:64px;background:#2e8bff14;border:none;border-radius:16px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:1.5rem;color:var(--accent-blue)}.welcome-egg{display:block;margin:0 auto 12px}.panel-welcome h3{font-size:1rem;font-weight:600;margin-bottom:8px}.panel-welcome p{font-size:.85rem;color:var(--text-secondary);line-height:1.6}.welcome-tip{display:flex;align-items:flex-start;gap:8px;margin-top:20px;padding:12px;background:var(--bg-card);border-radius:8px;border:none;text-align:left}.welcome-tip i{color:var(--accent-yellow);margin-top:2px;flex-shrink:0}.welcome-tip span{font-size:.78rem;color:var(--text-secondary);line-height:1.5}.panel-card{background:var(--bg-tertiary);border:none;border-radius:12px;padding:var(--space-16);margin-bottom:var(--space-12);transition:background .15s;content-visibility:auto;contain-intrinsic-size:auto 200px}.superintendent-summary-card{padding-bottom:12px}.panel-region-badge{margin-top:12px;padding:8px 12px;background:#0f172acc;border-radius:999px;font-size:.85rem;color:#facc15;border:none}.panel-card h4{font-size:var(--text-body);font-weight:var(--font-bold);color:var(--text-secondary);margin-bottom:var(--space-12);display:flex;align-items:center;gap:var(--space-6);letter-spacing:-.01em}.panel-card h4 i{color:var(--text-muted);font-size:var(--text-caption)}.election-overview-card{background:var(--bg-tertiary);border:none;border-radius:12px;padding:var(--space-16);margin-bottom:var(--space-12)}.ov-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8)}.ov-trend-badge{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-8);border-radius:4px;font-size:var(--text-micro);font-weight:var(--font-bold);background:#3b82f626;color:var(--color-info)}.ov-date{font-size:var(--text-caption);color:var(--text-muted)}.ov-headline{font-size:var(--text-headline);font-weight:800;color:var(--text-primary);margin-bottom:var(--space-8);line-height:var(--leading-tight);letter-spacing:-.03em;word-break:keep-all}.ov-narrative{font-size:var(--text-body);color:var(--text-secondary);line-height:var(--leading-normal);margin-bottom:var(--space-12);white-space:pre-line;word-break:keep-all}.ov-summary{font-size:var(--text-body);color:var(--text-secondary);line-height:var(--leading-normal);margin-bottom:var(--space-12)}.ov-issues{display:flex;flex-wrap:wrap;gap:var(--space-6);margin-bottom:var(--space-12)}.ov-issues .issue-tag{background:#ffffff0a;color:var(--text-secondary);padding:var(--space-2) var(--space-8);border-radius:4px;font-size:var(--text-micro);font-weight:var(--font-bold)}.ov-risk{font-size:var(--text-caption);color:var(--color-warning);padding:var(--space-8) var(--space-12);background:#f59e0b0f;border-radius:12px;border:1px solid rgba(245,158,11,.1)}.ov-risk i{margin-right:var(--space-4)}.prev-result{display:flex;align-items:center;gap:12px}.prev-winner{flex:1;text-align:center}.prev-winner .name{font-weight:600;font-size:.95rem}.prev-winner .party-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:500;margin-top:4px;color:#fff}.prev-winner .rate{font-size:1.3rem;font-weight:700;margin-top:4px}.prev-vs{font-size:.8rem;color:var(--text-muted);font-weight:600}.prev-turnout{text-align:center;margin-top:10px;padding-top:10px;border-top:none;font-size:.8rem;color:var(--text-secondary)}.governor-info{display:flex;align-items:center;gap:12px}.governor-avatar{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.3rem;color:#fff;font-weight:700;flex-shrink:0}.governor-details .name{font-weight:600;font-size:1rem}.governor-details .meta{font-size:.8rem;color:var(--text-secondary);margin-top:2px}.candidate-card{display:flex;gap:12px;padding:12px;background:var(--bg-tertiary);border-radius:12px;border:none;margin-bottom:8px;transition:var(--transition)}.candidate-card:hover{background:var(--bg-elevated)}.candidate-avatar{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:#fff;font-weight:700;flex-shrink:0}.candidate-info{flex:1;min-width:0}.candidate-name-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.candidate-name{font-weight:600;font-size:.95rem}.candidate-party-tag{display:inline-block;padding:1px 6px;border-radius:4px;font-size:.65rem;font-weight:600;color:#fff}.candidate-career{font-size:.8rem;color:var(--text-muted);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.candidate-pledges{display:flex;flex-direction:column;gap:3px}.pledge-item{font-size:.8rem;color:var(--text-secondary);display:flex;align-items:flex-start;gap:5px}.pledge-item:before{content:"";width:4px;height:4px;border-radius:50%;background:var(--accent-blue);margin-top:5px;flex-shrink:0}.candidate-poll-rate{font-size:1.1rem;font-weight:700;text-align:right;min-width:50px;flex-shrink:0;align-self:center}#key-issues-card:has(#key-issues:empty){display:none}.issues-list{display:flex;flex-wrap:wrap;gap:6px}.poll-mock-badge{background:#f59e0b1a;border:1px solid rgba(245,158,11,.25);color:#fbbf24;padding:4px 10px;border-radius:6px;font-size:.8rem;margin-bottom:8px;text-align:center}.panel-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;gap:12px;color:var(--text-muted);font-size:.85rem}.panel-loading-spinner{width:28px;height:28px;border:3px solid var(--border-color);border-top-color:var(--accent-blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.issue-tag{padding:var(--space-4) var(--space-12);background:#ffffff0a;border:none;border-radius:4px;font-size:var(--text-caption);font-weight:var(--font-bold);color:var(--text-secondary)}.issues-meta{margin-top:8px;font-size:.78rem;color:var(--text-muted);line-height:1.4}.issues-evidence{margin-top:8px;display:grid;gap:6px}.issues-evidence-item{display:flex;flex-direction:column;gap:2px;padding:7px 9px;border-radius:8px;border:none;background:var(--bg-input)}.issues-evidence-item .issue-name{font-size:.76rem;color:var(--text-primary);font-weight:600}.issues-evidence-item .issue-evidence-meta,.issues-evidence-item .issue-evidence-source{font-size:.7rem;color:var(--text-muted)}.poll-source-info{font-size:.8rem;color:var(--text-muted);margin-bottom:10px;padding:6px 10px;background:var(--bg-input);border-radius:6px}.poll-disclaimer{display:flex;align-items:flex-start;gap:8px;padding:10px;background:#f59e0b14;border:1px solid rgba(245,158,11,.2);border-radius:8px;margin-top:12px}.poll-disclaimer i{color:var(--accent-yellow);margin-top:2px;flex-shrink:0}.poll-disclaimer p{font-size:.78rem;color:var(--text-secondary);line-height:1.5}.poll-consensus-hero{display:flex;align-items:stretch;gap:var(--space-12);margin-bottom:var(--space-16)}.poll-consensus-leader{flex:1;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-16);border-radius:12px;background:var(--bg-surface);border-left:3px solid transparent}.poll-consensus-leader-meta{font-size:var(--text-micro);color:var(--text-disabled);font-weight:500}.poll-consensus-leader-name{font-size:var(--text-title);font-weight:var(--font-bold);color:var(--text-primary);letter-spacing:-.02em}.poll-consensus-leader-party{font-size:var(--text-caption);font-weight:600}.poll-consensus-leader-pct{font-size:36px;font-weight:800;letter-spacing:-.04em;line-height:1;margin-top:var(--space-4)}.poll-consensus-bar-section{display:flex;flex-direction:column;gap:var(--space-12);padding:var(--space-16);border-radius:12px;background:var(--bg-surface);flex:1;justify-content:center}.poll-consensus-bar-label{font-size:var(--text-caption);color:var(--text-muted);margin-bottom:var(--space-8)}.poll-cards-header h4{font-size:var(--text-body);font-weight:var(--font-bold);color:var(--text-secondary);margin:var(--space-16) 0 var(--space-12);letter-spacing:-.01em}.poll-cards-list{display:flex;flex-direction:column;gap:var(--space-12)}.poll-result-card{padding:var(--space-16);border:none;border-radius:12px;background:var(--bg-surface);transition:background .15s}.poll-result-card:hover{background:var(--bg-elevated)}.poll-result-card.poll-outlier{border-color:#f59e0b4d!important}.poll-card-header{display:flex;align-items:center;gap:var(--space-8);flex-wrap:wrap;margin-bottom:var(--space-4)}.poll-card-org{font-size:var(--text-body);font-weight:var(--font-bold);color:var(--text-primary);letter-spacing:-.01em}.poll-card-method,.poll-card-sample{font-size:var(--text-micro);font-weight:var(--font-bold);color:var(--text-muted);background:#ffffff0a;padding:var(--space-2) var(--space-8);border-radius:4px}.poll-card-date{font-family:var(--font-label);font-size:var(--text-caption);color:var(--text-muted);margin-bottom:var(--space-8)}.poll-card-margin{font-size:var(--text-caption);color:var(--text-muted);margin-bottom:var(--space-12)}.poll-card-margin-warn{color:var(--color-warning);font-weight:var(--font-bold)}.poll-card-results{display:flex;flex-direction:column;gap:var(--space-12)}.poll-card-result{display:flex;flex-direction:column;gap:var(--space-4)}.poll-card-result-info{display:flex;align-items:baseline;gap:var(--space-6)}.poll-card-candidate{font-size:var(--text-title);font-weight:var(--font-bold);color:var(--text-primary);letter-spacing:-.02em}.poll-card-party{font-size:var(--text-caption)}.poll-card-support{margin-left:auto;font-size:var(--text-title);font-weight:var(--font-bold);color:var(--text-primary);letter-spacing:-.02em}.poll-card-bar-bg{height:8px;background:#ffffff0a;border-radius:4px;overflow:hidden}.poll-card-bar{height:100%;border-radius:4px;transition:width .6s cubic-bezier(.4,0,.2,1);box-shadow:0 0 8px currentColor}.poll-card-no-result{font-size:var(--text-caption);color:var(--text-muted);padding:var(--space-8) 0}.poll-card-footer{margin-top:var(--space-12);padding-top:var(--space-8);border-top:none}.poll-card-footer a{font-size:var(--text-caption);color:var(--text-muted);text-decoration:none;transition:color .15s}.poll-card-footer a:hover{color:var(--color-info)}.poll-empty-rich{padding:16px}.poll-empty-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border-light)}.poll-empty-card{background:var(--bg-elevated);border-radius:10px;padding:14px;margin-bottom:10px}.poll-empty-card-title{font-size:.8rem;font-weight:700;color:var(--text-muted);margin-bottom:6px}.poll-method-badge{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:4px;background:var(--bg-elevated);color:var(--text-secondary)}.poll-trend-card{margin-bottom:var(--space-12);background:var(--bg-surface);border:none;border-radius:12px;padding:var(--space-16)}.poll-trend-card h4{font-size:var(--text-body);font-weight:var(--font-bold);color:var(--text-secondary);margin-bottom:var(--space-12)}.poll-more-btn{display:block;width:100%;padding:var(--space-12);margin-top:var(--space-12);background:transparent;border:none;border-radius:12px;color:var(--text-secondary);font-size:var(--text-body);font-family:var(--font-family);cursor:pointer;transition:background .15s,color .15s}.poll-more-btn:hover{background:var(--bg-elevated);color:var(--text-primary)}.news-feed{display:flex;flex-direction:column;gap:8px}.news-live{background:var(--bg-card);border:none;border-radius:10px;padding:12px}.news-live-header{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-bottom:8px}.news-live-title{font-size:.9rem;font-weight:700;color:var(--text-primary)}.news-live-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.news-live-btn{border:none;background:var(--bg-input);color:var(--text-secondary);padding:4px 8px;font-size:.78rem;border-radius:999px;cursor:pointer;transition:var(--transition);width:100%;min-height:30px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.news-live-btn.active,.news-live-btn:hover{border-color:var(--accent-blue);color:var(--text-primary);background:#3b82f61f}.news-live-list{display:flex;flex-direction:column;gap:6px}.news-live-item{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-radius:8px;border:none;background:var(--bg-card);text-decoration:none;color:var(--text-primary);transition:var(--transition);margin-bottom:6px}.news-live-item:hover{border-color:var(--accent-blue);background:var(--bg-hover);transform:translate(2px)}.news-live-item-badges{display:flex;gap:4px}.news-live-item-title{font-size:.85rem;font-weight:600;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.news-live-item-meta{font-family:var(--font-label);font-size:.78rem;color:var(--text-muted);display:flex;align-items:center;gap:6px}.news-press{font-weight:500}.news-time{margin-left:auto}.news-badge{display:inline-block;padding:1px 5px;border-radius:3px;font-size:.62rem;font-weight:700;border:1px solid transparent;line-height:1.4}.news-badge-fresh{background:#ef444426;color:#f87171;border-color:#ef44444d}.news-badge-major{background:#3b82f626;color:#93c5fd;border-color:#3b82f64d}.news-badge-local{background:#14b8a626;color:#5eead4;border-color:#14b8a64d}.news-badge-district{background:#fbbf2426;color:#fbbf24;border-color:#fbbf244d}.news-score{display:flex;align-items:center;gap:6px;margin-top:2px}.news-score-bar{flex:1;height:3px;border-radius:2px;background:var(--accent-blue);opacity:.6;max-width:80px}.news-score span{font-size:.62rem;color:var(--text-muted);font-weight:600}.news-sort-toggle{display:inline-flex;gap:4px;margin-top:6px}.news-sort-btn{padding:4px 12px;border:none;background:transparent;color:var(--text-muted);font-size:.78rem;font-weight:500;cursor:pointer;border-radius:18px;transition:all .2s;display:flex;align-items:center;gap:4px}.news-sort-btn.active{background:var(--accent-blue);color:#fff;font-weight:600;box-shadow:0 1px 4px #3b82f64d}.news-sort-btn:hover:not(.active){background:#ffffff0f;color:var(--text-primary)}.local-media-details{margin-top:8px;border:none;border-radius:8px;overflow:hidden}.local-media-details summary{padding:8px 12px;font-size:.78rem;font-weight:600;color:var(--text-secondary);cursor:pointer;background:var(--bg-card);list-style:none;display:flex;align-items:center;gap:6px}.local-media-details summary:before{content:"\25b6";font-size:.6rem;transition:transform .2s}.local-media-details[open] summary:before{transform:rotate(90deg)}.local-media-list{display:flex;flex-wrap:wrap;gap:4px;padding:8px 12px}.local-media-tag{padding:2px 8px;border-radius:4px;font-size:.7rem;background:#ffffff0d;color:var(--text-muted);border:none}.local-media-tag.tier1{background:#14b8a61a;color:#5eead4;border-color:#14b8a640}.local-media-tag.district{background:#fbbf241a;color:#fbbf24;border-color:#fbbf2440}.news-load-more-btn{width:100%;padding:8px;background:var(--bg-card);border:none;border-radius:8px;color:var(--text-secondary);font-size:.8rem;cursor:pointer;transition:var(--transition);margin-top:4px}.news-load-more-btn:hover{border-color:var(--accent-blue);color:var(--text-primary)}@keyframes news-shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.news-skeleton-item{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-radius:8px;border:none;background:var(--bg-card);margin-bottom:6px}.news-skeleton-bar{height:14px;border-radius:4px;background:linear-gradient(90deg,#2a355366,#2a3553cc,#2a355366 80%);background-size:200px 100%;animation:news-shimmer 1.4s ease-in-out infinite}.news-skeleton-bar.short{width:40%}.news-skeleton-bar.medium{width:70%}.news-skeleton-bar.long{width:95%}.news-skeleton-badges{display:flex;gap:4px}.news-skeleton-badge{width:40px;height:16px;border-radius:3px;background:linear-gradient(90deg,#2a355366,#2a3553cc,#2a355366 80%);background-size:200px 100%;animation:news-shimmer 1.4s ease-in-out infinite}.news-skeleton-meta{display:flex;gap:8px}.news-error{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 16px;text-align:center}.news-error-icon{font-size:2rem;color:var(--text-muted);opacity:.5}.news-error-title{font-size:.9rem;font-weight:600;color:var(--text-secondary)}.news-error-detail{font-size:.78rem;color:var(--text-muted);line-height:1.5}.news-retry-btn{padding:6px 16px;border:none;border-radius:6px;background:var(--bg-card);color:var(--text-secondary);font-size:.8rem;cursor:pointer;transition:var(--transition);display:inline-flex;align-items:center;gap:6px}.news-retry-btn:hover{border-color:var(--accent-blue);color:var(--text-primary);background:var(--bg-card-hover)}@media(max-width:768px){.panel-card canvas{max-height:220px}.ht-row{padding:6px 0}.ht-names{font-size:.78rem}.hpf-timeline{gap:0;padding:28px 8px 12px}.hpf-line{width:6px}}.ht-uncontested{font-size:.72rem;color:var(--text-muted);font-style:italic;padding:2px 0}.news-card{display:flex;gap:12px;padding:12px;background:var(--bg-card);border:none;border-radius:8px;cursor:pointer;transition:var(--transition)}.news-card:hover{border-color:var(--accent-blue);background:var(--bg-card-hover)}.news-icon{width:40px;height:40px;border-radius:8px;background:var(--bg-input);display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.9rem;flex-shrink:0}.news-content{flex:1;min-width:0}.news-title{font-size:.9rem;font-weight:500;line-height:1.5;margin-bottom:4px;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.news-meta{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--text-muted)}.news-sentiment{padding:1px 6px;border-radius:3px;font-size:.65rem;font-weight:500}.news-sentiment.positive{background:#10b98126;color:var(--accent-green)}.news-sentiment.negative{background:#ef444426;color:var(--accent-red)}.news-sentiment.neutral{background:#8b99b526;color:var(--text-secondary)}.compare-table{width:100%;border-collapse:collapse}.compare-table th,.compare-table td{padding:10px 8px;text-align:left;font-size:.8rem;border-bottom:none}.compare-table th{color:var(--text-muted);font-weight:500;font-size:.8rem;text-transform:uppercase}.compare-table td{color:var(--text-secondary)}.compare-candidate-header{display:flex;align-items:center;gap:6px}.compare-party-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.compare-name{font-weight:600;color:var(--text-primary)}#main-footer{position:fixed;bottom:0;left:0;right:0;height:var(--footer-height);background:var(--bg-card);border-top:1px solid var(--border-color);z-index:1000}.footer-toggle{display:flex;align-items:center;justify-content:center;height:var(--footer-height);cursor:pointer;gap:10px;font-size:.88rem;font-weight:600;letter-spacing:.01em;color:var(--text-secondary);user-select:none;padding:0 24px;transition:all .2s ease;border-top:1px solid transparent}.footer-toggle:hover{color:var(--text-primary);background:var(--bg-elevated);border-top-color:var(--accent-primary)}.footer-toggle-icon{font-size:1.1rem;opacity:.7}.footer-toggle:hover .footer-toggle-icon{opacity:1}.footer-toggle svg{transition:transform .3s ease;flex-shrink:0;opacity:.5}.footer-toggle:hover svg{opacity:1}#footer-panel{position:fixed;bottom:0;left:0;right:0;z-index:1001;transform:translateY(100%);transition:transform .4s cubic-bezier(.4,0,.2,1);max-height:85vh;overflow-y:auto;box-shadow:0 -8px 32px #00000040}#footer-panel.open{transform:translateY(0)}.footer-panel-close{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px;cursor:pointer;color:var(--text-muted);font-size:.75rem;user-select:none;background:var(--bg-tertiary);border-bottom:1px solid var(--border-light)}.footer-panel-close:hover{color:var(--text-primary);background:var(--bg-elevated)}.al-footer{width:100%;background:var(--bg-secondary);font-family:Inter,Noto Sans KR,sans-serif}.al-footer .footer-main{max-width:1280px;margin:0 auto;padding:48px 32px;display:flex;gap:96px}.al-footer .footer-brand{flex:0 0 280px;max-width:320px}.al-footer .footer-logo{display:flex;align-items:center;gap:14px;margin-bottom:12px}.al-footer .footer-logo-icon{flex-shrink:0}.al-footer .footer-logo-group{display:flex;flex-direction:column;gap:6px}.al-footer .footer-logo-text{font-size:24px;font-weight:900;color:var(--text-primary);letter-spacing:-.02em;line-height:1}.al-footer .footer-logo-divider{display:block;width:100%;height:2px;background:linear-gradient(90deg,#6faaff,transparent);border-radius:1px}.al-footer .footer-logo-slogan{font-size:12px;font-weight:400;color:var(--text-muted);letter-spacing:.04em;line-height:1}.al-footer .footer-tagline{font-size:14px;font-weight:500;color:var(--text-secondary);line-height:1.6;margin-bottom:4px}.al-footer .footer-sub{font-size:12px;color:var(--text-muted);margin-bottom:24px}.al-footer .footer-election-info{margin-bottom:24px}.al-footer .footer-election-title{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:2px}.al-footer .footer-election-date{font-size:12px;color:var(--text-muted)}.al-footer .footer-sources{padding-top:20px;border-top:1px solid var(--border-light)}.al-footer .footer-sources-title{font-size:13px;font-weight:700;color:var(--text-primary);margin-bottom:8px;letter-spacing:.02em}.al-footer .footer-sources-list{font-size:12px;color:var(--text-muted);line-height:1.7}.al-footer .footer-desc{font-size:13px;color:var(--text-muted);line-height:1.7;margin-top:16px}.al-footer .footer-nav-grid{flex:1;display:grid;grid-template-columns:repeat(2,1fr);gap:48px}.al-footer .footer-col-title{font-size:13px;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:16px}.al-footer .footer-links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.al-footer .footer-links a{font-size:14px;font-weight:500;color:var(--text-secondary);text-decoration:none;transition:color .2s ease-in-out}.al-footer .footer-links a:hover{color:var(--accent-blue)}.al-footer .footer-meta{font-size:13px;color:var(--text-muted)}.al-footer .footer-bottom{background:var(--bg-tertiary);padding:24px 0 20px}.al-footer .footer-bottom-inner{max-width:1280px;margin:0 auto;padding:0 32px;display:flex;align-items:center;justify-content:space-between}.al-footer .footer-legal-left{display:flex;align-items:center;gap:24px}.al-footer .footer-copyright{font-size:12px;font-weight:500;color:var(--text-secondary);letter-spacing:.02em}.al-footer .footer-data-source{font-size:11px;color:var(--text-muted);letter-spacing:.01em}.al-footer .footer-legal-links{display:flex;gap:16px}.al-footer .footer-legal-links a{font-size:12px;font-weight:500;color:var(--text-secondary);text-decoration:none;transition:color .2s ease-in-out}.al-footer .footer-legal-links a:hover{color:var(--accent-blue)}.al-footer .footer-social-link{color:var(--text-secondary);transition:color .2s ease-in-out;display:flex;align-items:center}.al-footer .footer-social-link:hover{color:var(--accent-blue)}.al-footer .footer-disclaimer{max-width:1280px;margin:12px auto 0;padding:0 32px;font-size:11px;color:var(--text-muted);letter-spacing:.02em}@media(max-width:1024px){.al-footer .footer-main{flex-direction:column;gap:40px;padding:40px 24px}.al-footer .footer-brand{flex:none;max-width:100%}.al-footer .footer-nav-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.al-footer .footer-main{padding:32px 16px}.al-footer .footer-nav-grid{grid-template-columns:1fr 1fr;gap:24px}.al-footer .footer-bottom-inner{flex-direction:column;gap:12px;padding:0 16px}.al-footer .footer-legal-left{flex-direction:column;align-items:center;gap:8px}.al-footer .footer-disclaimer{text-align:center;padding:0 16px}}@media(max-width:768px){#footer-panel{max-height:90vh;overscroll-behavior-y:contain}.footer-toggle{min-height:48px;padding:0 16px;font-size:.82rem}.footer-panel-close{min-height:48px;padding:12px 16px;font-size:.82rem}.footer-toggle span{font-size:.78rem}}.info-modal-overlay{position:fixed;inset:0;z-index:2000;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;padding:24px}.info-modal-overlay.open{display:flex}.info-modal{background:var(--bg-card);border-radius:16px;max-width:680px;width:100%;max-height:80vh;overflow-y:auto;overscroll-behavior-y:contain;padding:40px;position:relative;box-shadow:0 24px 64px #0000004d}.info-modal-close{position:absolute;top:16px;right:20px;background:none;border:none;font-size:1.6rem;color:var(--text-muted);cursor:pointer;padding:4px 8px;border-radius:8px;transition:all .2s ease}.info-modal-close:hover{color:var(--text-primary);background:var(--bg-elevated)}.info-modal h2{font-size:1.4rem;font-weight:800;color:var(--text-primary);margin-bottom:24px;padding-right:32px}.info-modal h3{font-size:.95rem;font-weight:700;color:var(--text-primary);margin-top:24px;margin-bottom:8px}.info-modal p{font-size:.85rem;color:var(--text-secondary);line-height:1.7;margin-bottom:8px}.info-modal ul{padding-left:20px;margin-bottom:8px}.info-modal li{font-size:.85rem;color:var(--text-secondary);line-height:1.7;margin-bottom:4px}.info-modal a{color:var(--accent-primary);text-decoration:none}.info-modal a:hover{text-decoration:underline}.info-modal section{padding-bottom:16px;border-bottom:1px solid var(--border-subtle)}.info-modal section:last-child{border-bottom:none}.info-modal-updated{font-size:.78rem;color:var(--text-muted);margin-bottom:20px}@media(max-width:640px){.info-modal{padding:24px 20px;max-height:85vh;border-radius:12px}.info-modal h2{font-size:1.2rem}}canvas{max-width:100%}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}[id^=tab-][style*="display: block"],[id^=tab-]:not([style*="display: none"]):not([style*="display:none"]){animation:tabFadeIn .15s ease}@keyframes tabFadeIn{0%{opacity:0}to{opacity:1}}.animate-in{animation:fadeIn .4s ease forwards}.animate-slide{animation:slideInRight .3s ease forwards}@media(max-width:1400px){:root{--sidebar-width: 280px;--panel-width: 500px}}@media(max-width:1200px){:root{--sidebar-width: 260px;--panel-width: 400px}.header-subtitle{display:none}}.mobile-election-chips{display:none;position:absolute;top:8px;left:0;right:0;z-index:20;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:none;padding:0 12px;gap:6px;white-space:nowrap}.mobile-election-chips::-webkit-scrollbar{display:none}.mobile-election-chip{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:20px;background:var(--bg-card);border:1.5px solid var(--border-default);color:var(--text-secondary);font-size:.78rem;font-weight:500;cursor:pointer;transition:all .2s;box-shadow:0 2px 8px #0000001f;white-space:nowrap;flex-shrink:0}.mobile-election-chip:active{transform:scale(.96)}.mobile-election-chip.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff;box-shadow:0 2px 12px #2e8bff4d}.mobile-election-chip .chip-icon{font-size:.7rem}.mobile-election-chip .chip-count{font-size:.68rem;opacity:.7;margin-left:2px}.light-mode .mobile-election-chip{box-shadow:0 1px 6px #00000014}.map-mini-card{display:none;position:absolute;bottom:16px;left:12px;right:12px;z-index:30;background:var(--bg-card);border:1.5px solid var(--border-default);border-radius:14px;box-shadow:0 4px 20px #0000002e;cursor:pointer;transition:transform .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent}.map-mini-card:active{transform:scale(.98);box-shadow:0 2px 12px #0000001f}.mini-card-content{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;gap:12px}.mini-card-info{display:flex;flex-direction:column;gap:3px;min-width:0}.mini-card-region{font-weight:700;font-size:.95rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-card-detail{font-size:.78rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-card-action{display:flex;align-items:center;gap:4px;color:var(--accent-blue);font-size:.82rem;font-weight:600;flex-shrink:0}.mini-card-action i{font-size:.7rem}.light-mode .map-mini-card{box-shadow:0 2px 12px #0000001a}.mobile-search-toggle{display:none;background:var(--bg-card);border:none;color:var(--text-primary);width:36px;height:36px;border-radius:10px;align-items:center;justify-content:center;font-size:.95rem;cursor:pointer;transition:background .2s}.mobile-search-toggle:hover{background:var(--bg-hover)}.mobile-search-overlay{display:none;position:fixed;inset:0;z-index:2000;background:var(--bg-primary);flex-direction:column}.mobile-search-overlay.active{display:flex}.mobile-search-header{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border-default);background:var(--bg-secondary)}.mobile-search-input-wrap{flex:1;display:flex;align-items:center;background:var(--bg-card);border:2px solid var(--border-default);border-radius:24px;padding:0 14px;gap:8px;transition:border-color .2s}.mobile-search-input-wrap:focus-within{border-color:var(--accent-blue)}.mobile-search-icon{color:var(--text-secondary);font-size:.9rem}.mobile-search-input-wrap input{flex:1;background:none;border:none;outline:none;color:var(--text-primary);font-size:1rem;padding:10px 0}.mobile-search-input-wrap input::placeholder{color:var(--text-tertiary)}.mobile-search-close{background:none;border:none;color:var(--accent-blue);font-size:.95rem;font-weight:600;cursor:pointer;padding:8px 4px;white-space:nowrap}.mobile-search-results{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding:8px 0}.mobile-search-results .search-result-item{display:flex;align-items:center;gap:12px;padding:14px 20px;color:var(--text-primary);cursor:pointer;transition:background .15s}.mobile-search-results .search-result-item:active{background:var(--bg-hover)}.mobile-search-results .search-result-item i{color:var(--text-secondary);font-size:.9rem;width:20px;text-align:center}.mobile-search-results .search-result-label{font-size:.95rem}.mobile-search-results .search-result-sub{font-size:.8rem;color:var(--text-secondary);margin-top:2px}.mobile-filter-toggle{display:none;background:var(--bg-card);border:none;color:var(--text-primary);width:36px;height:36px;border-radius:8px;cursor:pointer;font-size:14px;align-items:center;justify-content:center}.mobile-filter-sheet{display:none;position:fixed;inset:0;z-index:1000}.mobile-filter-sheet.active{display:block}.mobile-filter-sheet-backdrop{position:absolute;inset:0;background:#00000080}.mobile-filter-sheet-content{position:absolute;bottom:0;left:0;right:0;background:var(--bg-secondary);border-top:none;border-radius:16px 16px 0 0;padding:12px 16px 24px;max-height:70vh;overflow-y:auto;overscroll-behavior-y:contain;transform:translateY(0);transition:transform .3s ease}.mobile-filter-sheet-handle{width:36px;height:4px;background:var(--text-muted);border-radius:2px;margin:0 auto 12px}.mobile-filter-sheet-title{font-size:.95rem;font-weight:600;color:var(--text-primary);margin-bottom:12px;text-align:center}.mobile-filter-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.mobile-filter-grid .filter-btn{width:100%;justify-content:flex-start;padding:12px;min-height:48px;font-size:.85rem}@media(max-width:1024px){.mobile-filter-toggle{display:flex}.sidebar{display:none}.header-center{max-width:320px}.pre-vote-info{display:none}:root{--panel-width: 340px}}@media(max-width:768px){:root{--header-height: 56px;--footer-height: 48px;--panel-width: 100%}.header-left .logo-text{font-size:1.3rem}#main-header{padding:0 12px}.header-right{gap:8px}.header-center{display:none}.mobile-search-toggle{display:flex!important;min-width:44px;min-height:44px}.mobile-filter-toggle{display:none!important}.mobile-election-chips{display:flex}.map-election-type-label{display:none}.map-breadcrumb{display:none;top:auto;bottom:60px;left:8px;font-size:.72rem;padding:3px 8px}.map-breadcrumb.breadcrumb-in-province{display:flex}.map-legend{display:none;position:absolute;bottom:128px;right:8px;left:auto;max-width:160px}.map-legend.legend-visible{display:block}.legend-toggle-btn{display:flex;position:absolute;bottom:84px;right:12px;z-index:25;width:36px;height:36px;border-radius:50%;background:var(--bg-card);border:1.5px solid var(--border-default);color:var(--text-secondary);align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 10px #00000038;font-size:.8rem;padding:0;transition:background .2s,color .2s;-webkit-tap-highlight-color:transparent}.legend-toggle-btn:active{transform:scale(.94)}.legend-toggle-btn.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff;box-shadow:0 2px 12px #2e8bff59}.dday-counter{padding:3px 10px;height:36px}.dday-label{display:none}.theme-toggle-btn{width:44px;height:44px}.detail-panel{position:fixed;left:0;right:0;bottom:var(--footer-height);top:auto;width:100%;max-width:100%;height:85vh;border-radius:16px 16px 0 0;z-index:500;will-change:transform}.detail-panel.panel-animating{transition:transform .3s cubic-bezier(.32,.72,0,1)}.detail-panel.collapsed{transform:translateY(calc(100% + var(--footer-height)))}.detail-panel.panel-peek{transform:translateY(55vh)}.detail-panel.panel-half{transform:translateY(35vh)}.detail-panel.panel-full{transform:translateY(0)}.detail-panel.panel-peek .panel-tabs,.detail-panel.panel-peek .panel-content{opacity:0;pointer-events:none;transition:opacity .2s}.detail-panel.panel-half .panel-tabs,.detail-panel.panel-half .panel-content,.detail-panel.panel-full .panel-tabs,.detail-panel.panel-full .panel-content{opacity:1;pointer-events:auto;transition:opacity .2s}.panel-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.panel-tabs::-webkit-scrollbar{display:none}.panel-tab{flex:0 0 auto;padding:10px 14px;font-size:.82rem;white-space:nowrap;min-height:44px}.panel-content{padding:14px 12px 32px;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;touch-action:pan-y}.panel-resize-handle{display:none}.panel-header:before{content:"";position:absolute;top:8px;left:50%;transform:translate(-50%);width:40px;height:4px;border-radius:2px;background:var(--border-default)}.panel-header{position:relative;padding-top:20px}.panel-close{width:44px;height:44px;font-size:1.1rem}.panel-title-area h2{font-size:1.1rem}.map-legend{bottom:80px;font-size:.7rem;padding:8px;max-width:140px}.info-modal{max-width:100%;max-height:90vh;margin:auto 8px;padding:24px 16px;border-radius:12px 12px 0 0}.search-results{max-height:60vh;border-radius:0 0 12px 12px}.news-live-actions{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap}.news-live-actions::-webkit-scrollbar{display:none}.news-live-item{padding:14px 12px}#dong-search-modal .info-modal{max-width:100%;padding:20px 14px}.compare-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.info-grid{grid-template-columns:repeat(2,1fr)}.candidate-card-full{padding:16px 14px}.news-card{padding:14px}.district-card{padding:12px 14px;min-height:48px}.map-zoom-controls button{min-width:44px;min-height:44px}.news-live-btn{min-height:44px;padding:8px 12px}.news-cat-btn{min-height:44px}.mobile-filter-grid .filter-btn{min-height:52px}.result-type-badge,.info-label,.hpf-stat-lbl,.hpf-rate,.hpf-change-mark,.calendar-item-status,.calendar-group-title,.cand-incumbent-badge,.cand-status-badge{font-size:.75rem}.news-sentiment{font-size:.72rem}.hpf-party,.hpf-label,.ht-uncontested{font-size:.75rem}.mobile-search-input-wrap input{font-size:16px}.map-controls{top:auto;bottom:80px;left:8px;flex-direction:column}.map-byelection-note{font-size:.75rem;padding:8px 10px;bottom:80px;max-width:calc(100% - 60px)}.panel-content button[onclick]{min-height:44px!important;padding:10px 12px!important;font-size:.82rem!important}.poll-card-nesdc-badge{min-height:28px!important;padding:4px 10px!important;font-size:.72rem!important;display:inline-flex!important;align-items:center!important}.panel-content table td,.panel-content table th{padding:10px 8px}.party-badge{font-size:.72rem!important;padding:2px 8px!important}}.text-democratic{color:var(--party-democratic)}.text-ppp{color:var(--party-ppp)}.text-reform{color:var(--party-reform)}.text-newreform{color:var(--party-newreform)}.text-progressive{color:var(--party-progressive)}.text-newfuture{color:var(--party-newfuture)}.text-justice{color:var(--party-justice)}.text-independent{color:var(--party-independent)}.text-other{color:var(--party-other)}.bg-democratic{background-color:var(--party-democratic)}.bg-ppp{background-color:var(--party-ppp)}.bg-reform{background-color:var(--party-reform)}.bg-newreform{background-color:var(--party-newreform)}.bg-progressive{background-color:var(--party-progressive)}.bg-newfuture{background-color:var(--party-newfuture)}.bg-justice{background-color:var(--party-justice)}.bg-independent{background-color:var(--party-independent)}.bg-other{background-color:var(--party-other)}.transparency-banner{position:fixed;top:0;left:0;right:0;background:linear-gradient(135deg,#3b82f626,#10b9811f);border-bottom:1px solid rgba(59,130,246,.3);z-index:1100;padding:8px 20px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.transparency-banner .banner-content{display:flex;align-items:center;gap:10px;max-width:1400px;margin:0 auto;font-size:.78rem;color:var(--text-secondary);line-height:1.5}.transparency-banner .banner-content i{color:var(--accent-green);font-size:1rem;flex-shrink:0}.transparency-banner .banner-content strong{color:var(--text-primary)}.banner-close{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px;margin-left:auto;flex-shrink:0;font-size:.8rem;transition:var(--transition)}.banner-close:hover{color:var(--text-primary)}#main-header{top:36px}#main-content{top:calc(var(--header-height) + 36px)}@media(max-width:768px){.transparency-banner{padding:6px 12px}.transparency-banner .banner-content{font-size:.72rem;gap:6px}.transparency-banner .banner-content i{font-size:.85rem}#main-header{top:30px}#main-content{top:calc(var(--header-height) + 30px)}body.banner-hidden #main-header{top:0}body.banner-hidden #main-content{top:var(--header-height)}}body.banner-hidden .transparency-banner{display:none}body.banner-hidden #main-header{top:0}body.banner-hidden #main-content{top:var(--header-height)}.ad-slot{display:flex;align-items:center;justify-content:center;background:var(--bg-card);border:1px dashed var(--border-color);border-radius:8px;color:var(--text-muted);font-size:.7rem;letter-spacing:1px;position:relative;overflow:hidden}.ad-label{padding:2px 8px;background:#8b99b51a;border-radius:4px;font-weight:600;font-size:.65rem}.ad-slot-top{position:fixed;top:calc(var(--header-height) + 36px);left:0;right:0;height:0;z-index:99;display:none}.ad-slot-sidebar{height:100px;margin-bottom:16px}.ad-slot-map{position:absolute;bottom:60px;left:16px;width:160px;height:80px;z-index:5;opacity:.85}.ad-slot-panel{height:80px;margin-top:4px}.filter-btn-wrap{position:relative}.filter-tooltip{display:none;position:fixed;width:260px;background:var(--bg-card);border:1px solid var(--accent-blue);border-radius:10px;padding:14px;z-index:9999;box-shadow:var(--shadow-lg);animation:fadeIn .2s ease;pointer-events:none;word-break:keep-all;overflow-wrap:break-word}.filter-tooltip .ft-title{font-size:.9rem;font-weight:700;color:var(--text-primary);margin-bottom:6px}.filter-tooltip .ft-desc{font-size:.78rem;color:var(--text-secondary);line-height:1.6;margin-bottom:8px}.filter-tooltip .ft-meta{display:flex;flex-direction:column;gap:5px}.filter-tooltip .ft-meta-row{display:flex;flex-direction:column;font-size:.78rem;gap:1px}.filter-tooltip .ft-meta-row .label{color:var(--text-muted)}.filter-tooltip .ft-meta-row .value{color:var(--accent-cyan);font-weight:600}.gallup-source{margin-top:10px;padding:8px 10px;background:var(--bg-input);border-radius:6px;font-size:.78rem;color:var(--text-muted);line-height:1.5}.gallup-source strong{color:var(--text-secondary)}.gallup-source a{color:var(--accent-blue);text-decoration:none}.gallup-source a:hover{text-decoration:underline}.sidebar .national-party-bar .party-bar-chart{height:20px}.sidebar .party-bar-labels{gap:4px 8px;margin-top:6px}.sidebar .party-bar-label{font-size:.78rem}.poll-transparency-box{background:linear-gradient(135deg,#10b98114,#3b82f614);border:1px solid rgba(16,185,129,.25);border-radius:10px;padding:14px;margin-bottom:14px}.poll-transparency-box .ptb-header{font-size:.85rem;font-weight:700;color:var(--accent-green);margin-bottom:8px;display:flex;align-items:center;gap:6px}.poll-transparency-box p{font-size:.78rem;color:var(--text-secondary);line-height:1.6;margin-bottom:8px}.poll-transparency-box strong{color:var(--text-primary)}.poll-transparency-box .ptb-link{display:inline-flex;align-items:center;gap:4px;font-size:.8rem;color:var(--accent-blue);text-decoration:none;font-weight:500;transition:var(--transition)}.poll-transparency-box .ptb-link:hover{text-decoration:underline}.transparency-badges{display:flex;flex-direction:column;gap:8px;margin-top:20px;text-align:left}.badge-item{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg-card);border:none;border-radius:8px;font-size:.82rem;color:var(--text-secondary)}.badge-item i{color:var(--accent-green);font-size:.9rem;flex-shrink:0}.districts-list{display:flex;flex-direction:column;gap:6px}.districts-map-wrap{background:var(--bg-card);border:none;border-radius:12px;padding:12px;margin-bottom:10px}.districts-map-header h4{font-size:.9rem;font-weight:700;color:var(--text-primary);margin-bottom:4px}.districts-map-header p{font-size:.78rem;color:var(--text-muted);line-height:1.5;margin-bottom:10px}.districts-map-container{width:100%;height:240px;background:radial-gradient(circle at 30% 20%,rgba(59,130,246,.08),transparent 45%),radial-gradient(circle at 70% 80%,rgba(14,165,233,.08),transparent 50%);border:none;border-radius:10px;overflow:hidden}#districts-map{width:100%;height:100%}.district-tile{cursor:pointer;transition:var(--transition)}.district-tile:hover{opacity:.9;filter:brightness(1.05)}.district-tile.selected{stroke:var(--accent-blue);stroke-width:2;filter:drop-shadow(0 0 6px rgba(59,130,246,.35))}.district-tile-label{font-size:.65rem;fill:var(--text-primary);pointer-events:none;text-anchor:middle;dominant-baseline:middle}.district-detail{display:none;background:var(--bg-card);border:none;border-radius:10px;padding:12px;margin-bottom:10px}.district-detail.active{display:block}.district-detail-title{display:flex;align-items:center;gap:8px;margin-bottom:8px}.district-detail-title h4{font-size:.9rem;font-weight:700;color:var(--text-primary)}.district-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.district-detail-card{background:var(--bg-input);border:none;border-radius:8px;padding:8px 10px}.district-detail-label{font-size:.7rem;color:var(--text-muted);margin-bottom:4px}.district-detail-value{font-size:.82rem;color:var(--text-primary);font-weight:600}.district-detail-meta{font-size:.8rem;color:var(--text-secondary);margin-top:8px;line-height:1.4}.district-info-header{padding:12px 14px;background:var(--bg-card);border:none;border-radius:10px;margin-bottom:8px}.district-info-header h4{font-size:.9rem;font-weight:700;color:var(--text-primary);margin-bottom:4px}.district-info-header p{font-size:.78rem;color:var(--text-muted);line-height:1.5}.district-card{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg-card);border:none;border-radius:8px;cursor:pointer;transition:var(--transition)}.district-card.selected{border-color:var(--accent-blue);background:#3b82f614}.district-card:hover{background:var(--bg-card-hover);border-color:var(--accent-blue);transform:translate(3px)}.district-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.8rem;flex-shrink:0}.district-name{flex:1;font-size:.85rem;font-weight:500}.district-party-indicator{width:8px;height:8px;border-radius:50%;flex-shrink:0}.district-arrow{color:var(--text-muted);font-size:.7rem}.district-no-data{text-align:center;padding:30px 20px;color:var(--text-muted);font-size:.85rem}.district-no-data i{display:block;font-size:2rem;margin-bottom:12px;color:var(--border-color)}.news-search-link{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;background:linear-gradient(135deg,#3b82f61a,#22d3ee14);border:1px solid rgba(59,130,246,.25);border-radius:10px;color:var(--accent-blue);text-decoration:none;font-size:.85rem;font-weight:600;transition:var(--transition);margin-bottom:10px}.news-search-link:hover{background:linear-gradient(135deg,#3b82f633,#22d3ee26);transform:translateY(-1px)}.news-search-link i{font-size:1rem}.news-category-btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:12px}.news-cat-btn{padding:5px 12px;background:var(--bg-card);border:none;border-radius:20px;color:var(--text-secondary);font-size:.8rem;font-family:var(--font-family);cursor:pointer;transition:var(--transition);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:4px;width:100%;min-height:32px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:480px){.news-live-actions,.news-category-btns,.info-grid,.district-detail-grid{grid-template-columns:1fr}}.news-cat-btn:hover{background:var(--bg-card-hover);border-color:var(--accent-blue);color:var(--accent-blue)}.news-cat-btn i{font-size:.7rem}.news-notice{padding:10px 12px;background:var(--bg-card);border:none;border-radius:8px;font-size:.8rem;color:var(--text-muted);line-height:1.5;display:flex;align-items:flex-start;gap:8px;margin-top:8px}.news-notice i{color:var(--accent-yellow);margin-top:2px;flex-shrink:0}.map-breadcrumb{position:absolute;top:8px;left:12px;z-index:20;display:flex;align-items:center;gap:4px;padding:4px 10px;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:6px;font-size:.8rem}.breadcrumb-item{color:var(--text-muted);cursor:pointer;padding:2px 6px;border-radius:4px;transition:all .2s;white-space:nowrap}.breadcrumb-item:hover{color:var(--text-primary);background:#3b82f61a}.breadcrumb-item.active{color:var(--accent-blue);font-weight:600;cursor:default}.breadcrumb-item.active:hover{background:transparent}.breadcrumb-separator{color:var(--text-muted);font-size:.65rem;opacity:.5}.map-election-type-label{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:6px;padding:5px 14px;background:#3b82f61f;border:1px solid rgba(59,130,246,.25);border-radius:20px;color:var(--accent-blue);font-size:.8rem;font-weight:600;white-space:nowrap;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.map-election-type-label i{font-size:.8rem}.byelection-marker{fill:#f59e0b;stroke:#fff;stroke-width:2;cursor:pointer;filter:drop-shadow(0 0 4px rgba(245,158,11,.6));transition:r .2s}.byelection-marker:hover{r:10;filter:drop-shadow(0 0 8px rgba(245,158,11,.9))}.byelection-pulse{fill:none;stroke:#f59e0b;stroke-width:2;opacity:0;animation:byelection-pulse-anim 2s ease-out infinite;pointer-events:none}@keyframes byelection-pulse-anim{0%{r:7;opacity:.8;stroke-width:2}to{r:25;opacity:0;stroke-width:.5}}.byelection-label{fill:var(--text-secondary);font-size:9px;text-anchor:middle;font-weight:500;pointer-events:none}.district{transition:opacity .15s,stroke-width .15s}.district:hover{stroke-width:2.5!important;filter:brightness(1.2)}.district.selected{stroke:var(--accent-blue)!important;stroke-width:2.5!important}.district.merged-changwon,.district.merged-changwon:hover,.district.merged-changwon.selected{stroke:none!important;stroke-width:0!important}.district-label{pointer-events:auto;cursor:pointer;fill:var(--map-label-fill);stroke:var(--map-label-stroke);stroke-width:2px;paint-order:stroke;font-weight:600}.filter-btn.active{background:#3b82f61a;color:var(--color-info)}.council-districts-list{display:flex;flex-direction:column;gap:6px}.district-card{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg-secondary);border-radius:8px;cursor:pointer;transition:all .2s;border:1px solid transparent}.district-card:hover{background:var(--bg-tertiary);border-color:var(--border-color);transform:translate(2px)}.district-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:.85rem;flex-shrink:0}.district-name{font-weight:600;color:var(--text-primary);flex:1}.district-arrow{color:var(--text-muted);font-size:.8rem}.panel-body{transition:opacity .2s ease}#detail-panel .panel-section{animation:panelFadeIn .3s ease}@keyframes panelFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.info-card{background:linear-gradient(180deg,#ffffff05,#ffffff01);border:none;border-radius:10px;padding:12px;min-height:110px;display:flex;flex-direction:column;gap:6px}.info-label{font-size:.65rem;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase}.info-value{font-size:1.1rem;font-weight:600;color:var(--text-primary)}.info-note{font-size:.8rem;color:var(--text-secondary);line-height:1.4}.info-stack{display:flex;justify-content:space-between;align-items:baseline;gap:6px}.superintendent-summary-card{padding-bottom:10px}.proportional-summary{display:flex;flex-direction:column;gap:12px}.proportional-summary-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.summary-label{font-size:.7rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em}.summary-meta{font-size:.8rem;color:var(--text-muted)}.proportional-party-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}.proportional-party-row{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;font-size:.85rem}.party-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.party-name{color:var(--text-primary);font-weight:500}.party-seats{color:var(--text-secondary)}.party-share{color:var(--accent-cyan);font-weight:600}.no-data-message{text-align:center;padding:24px 16px;color:var(--text-muted)}.no-data-message i{font-size:1.5rem;margin-bottom:8px;display:block;opacity:.5}.cand-count-summary{font-size:.82rem;color:var(--text-secondary);margin-bottom:12px;display:flex;align-items:center;gap:6px}.candidate-card-full{background:var(--bg-card);border:none;border-radius:12px;padding:14px;margin-bottom:8px;border-left:3px solid transparent;transition:background .15s}.candidate-card-full:hover{background:var(--bg-elevated)}.candidate-card-full.status-nominated{border-left-color:var(--color-success);background:#22c55e0a}.candidate-card-full.status-declared{border-left-color:var(--color-info)}.candidate-card-full.status-nominated .candidate-name{font-size:1rem;font-weight:700}.candidate-card-full.status-nominated .candidate-avatar{width:40px;height:40px;font-size:1rem}.candidate-header{display:flex;align-items:center;gap:10px}.candidate-avatar{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;color:#fff;flex-shrink:0}.candidate-info{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.candidate-name{font-weight:600;font-size:.9rem}.candidate-age{font-size:.8rem;color:var(--text-muted)}.candidate-career{font-size:.8rem;color:var(--text-muted);margin-top:2px}.cand-core-message{font-size:.8rem;color:var(--accent-cyan);margin-top:2px}.candidate-pledges{margin-top:8px;padding-top:8px;border-top:none}.pledges-title{font-size:.78rem;font-weight:600;color:var(--text-muted);margin-bottom:4px}.pledge-item{display:flex;gap:6px;font-size:.78rem;color:var(--text-secondary);padding:2px 0}.pledge-num{color:var(--accent-blue);font-weight:600;min-width:14px}.cand-card-footer{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.cand-incumbent-badge{font-size:.7rem;padding:1px 6px;border-radius:3px;background:#facc1526;color:var(--accent-yellow);border:1px solid rgba(250,204,21,.25)}.cand-status-badge{font-size:.7rem;padding:1px 6px;border-radius:3px}.cand-source-badge{font-size:.8rem;color:var(--text-muted);display:flex;align-items:center;gap:3px}.candidate-source-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.official-source-link{display:inline-flex;align-items:center;gap:5px;min-height:28px;padding:4px 8px;border-radius:6px;background:#3b82f61a;border:1px solid rgba(59,130,246,.22);color:#93c5fd;font-size:.74rem;font-weight:600;text-decoration:none}.official-source-link:hover{background:#3b82f629;color:#bfdbfe}.compare-table{margin-top:8px}.compare-header{display:flex;gap:8px;margin-bottom:6px}.compare-col-header{flex:1;text-align:center;padding:6px;background:var(--bg-input);border-radius:6px}.compare-row{display:flex;gap:8px;margin-bottom:4px}.compare-cell{flex:1;font-size:.78rem;color:var(--text-secondary);padding:4px 6px;background:var(--bg-card);border-radius:4px}.hpf-timeline-wrap{position:relative;overflow:hidden}.hpf-timeline-wrap:after{content:"";position:absolute;top:0;right:0;width:40px;height:100%;background:linear-gradient(to right,transparent,var(--bg-card));pointer-events:none;z-index:1}.hpf-timeline{display:flex;align-items:center;justify-content:space-between;gap:0;overflow-x:hidden;padding:28px 16px 12px}.hpf-node{display:flex;flex-direction:column;align-items:center;flex:1;min-width:0;position:relative;overflow:hidden}.hpf-dot{width:14px;height:14px;border-radius:50%;margin-bottom:6px;border:2px solid var(--bg-card);box-shadow:0 0 0 1px #ffffff1a}.hpf-dot--circle{border-radius:50%}.hpf-dot--square{border-radius:2px}.hpf-dot--diamond{border-radius:2px;transform:rotate(45deg)}.hpf-dot--dash{border-radius:2px;width:14px;height:6px;margin-bottom:10px}.hpf-label{font-size:.7rem;color:var(--text-secondary);font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:clip;max-width:100%}.hpf-rate{font-size:.6rem;color:var(--text-muted);margin-top:2px;text-align:center;white-space:nowrap}.hpf-party{font-size:.62rem;font-weight:600;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;text-align:center}.hpf-line{width:8px;height:2px;flex-shrink:0;margin-top:-24px;border-radius:1px}.hpf-change-mark{position:absolute;top:-18px;font-size:.58rem;color:#fbbf24;font-weight:700;background:#f59e0b26;padding:1px 4px;border-radius:3px;white-space:nowrap}.hpf-summary{display:flex;justify-content:space-around;padding:10px 0;margin-top:8px;border-top:none;gap:8px}.hpf-stat{display:flex;flex-direction:column;align-items:center;flex:1;padding:6px 4px;background:var(--bg-card);border-radius:8px;border:none}.hpf-stat-val{font-weight:700;font-size:.85rem;color:var(--text-primary)}.hpf-stat-lbl{font-size:.65rem;color:var(--text-muted);margin-top:2px}.ht-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.05)}.ht-row:last-child{border-bottom:none}.ht-turnout{font-size:.68rem;color:var(--text-muted);margin-top:3px}.ht-section-label{font-size:.72rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:10px 0 4px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:4px}.ht-left{flex-shrink:0;width:36px;text-align:right}.ht-year{font-size:.82rem;font-weight:600;color:var(--text-primary)}.ht-center{flex:1;min-width:0}.ht-bar-track{height:8px;border-radius:4px;background:#ffffff0f;overflow:hidden;margin-bottom:5px}.ht-bar-fill{height:100%;border-radius:3px}.ht-names{display:flex;justify-content:space-between;font-size:.78rem;color:var(--text-primary)}.ht-names b{font-weight:700}.ht-names .ht-sub{color:var(--text-muted);font-size:.78rem}.ht-dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;vertical-align:middle}.ht-dot--circle{border-radius:50%}.ht-dot--square{border-radius:1px}.ht-dot--diamond{border-radius:1px;transform:rotate(45deg)}.ht-dot--dash{border-radius:1px;width:10px;height:4px;vertical-align:middle}.history-results .hr-item{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:none;font-size:.82rem}.history-results .hr-year{font-weight:600;color:var(--text-muted);min-width:36px}.history-results .hr-winner{font-weight:600;color:var(--text-primary)}.history-results .hr-rate{color:var(--text-secondary);margin-left:auto}.history-chart-footnote{font-size:.68rem;color:var(--text-muted);text-align:center;padding:6px 0 2px;line-height:1.5}.panel-resize-handle{position:absolute;left:-6px;top:0;bottom:0;width:12px;cursor:col-resize;background:transparent;transition:background .2s;z-index:10}.panel-resize-handle:before{content:"\22ee";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:18px;letter-spacing:-2px;color:var(--text-muted);opacity:.6;transition:opacity .2s,color .2s;pointer-events:none}.panel-resize-handle:after{content:"";position:absolute;left:3px;top:50%;transform:translateY(-50%);width:5px;height:48px;border-radius:3px;background:var(--border-color);opacity:.4;transition:opacity .2s,background .2s}.panel-resize-handle:hover:before{opacity:1;color:var(--accent-blue)}.panel-resize-handle:hover:after,.panel-resize-handle:active:after{opacity:1;background:var(--accent-blue)}.panel-resize-handle:hover,.panel-resize-handle:active{background:#3b82f614}.term-tooltip{border-bottom:1px dotted var(--text-muted);cursor:pointer;position:relative}.term-tooltip:hover:after,.term-tooltip:focus:after{content:attr(title);position:absolute;bottom:calc(100% + 4px);left:0;background:var(--bg-tertiary);color:var(--text-primary);padding:6px 10px;border-radius:6px;font-size:var(--text-caption);white-space:normal;width:max-content;max-width:250px;z-index:1000;box-shadow:var(--shadow-md);line-height:1.4;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.district-detail{margin-bottom:12px}.theme-toggle-btn{background:none;border:1px solid var(--border-color);color:var(--text-secondary);width:42px;height:42px;border-radius:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition);font-size:17px;flex-shrink:0}.theme-toggle-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.light-mode .loading-content h2,.light-mode .logo-text{background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.light-mode .map-tooltip span[style*="color:#fff"],.light-mode .map-tooltip span[style*="color: #fff"]{color:var(--text-primary)!important}.light-mode .map-tooltip span[style*="color:#e0e0e0"],.light-mode .map-tooltip span[style*="color: #e0e0e0"]{color:var(--text-secondary)!important}.light-mode .map-tooltip div[style*="color:#888"],.light-mode .map-tooltip div[style*="color: #888"],.light-mode .map-tooltip div[style*="color:#6b7280"],.light-mode .map-tooltip div[style*="color: #6b7280"]{color:var(--text-muted)!important}.light-mode .map-tooltip .tooltip-temporary{color:#92400e}.light-mode #loading-screen{background:var(--bg-primary)}.light-mode .loading-spinner{border-color:var(--border-color);border-top-color:var(--accent-primary)}@supports (padding: env(safe-area-inset-top)){#main-header{padding-left:max(24px,env(safe-area-inset-left));padding-right:max(24px,env(safe-area-inset-right))}#main-footer{padding-bottom:env(safe-area-inset-bottom)}.mobile-filter-sheet-content{padding-bottom:calc(24px + env(safe-area-inset-bottom))}.mobile-search-overlay{padding-top:env(safe-area-inset-top)}}@media(max-width:768px)and (orientation:landscape){:root{--header-height: 44px}.detail-panel{height:80vh}.detail-panel.panel-peek{transform:translateY(40vh)}.detail-panel.panel-half{transform:translateY(20vh)}.detail-panel.panel-full{transform:translateY(0)}.mobile-election-chips{top:4px}.mobile-election-chip{padding:5px 10px;font-size:.72rem}.map-mini-card{bottom:8px;left:8px;right:8px}}@media(max-width:380px){#main-header{padding:0 12px}.header-right{gap:4px}.dday-counter{padding:2px 6px;font-size:.82rem}.dday-number{font-size:.88rem}.mobile-election-chip{padding:5px 10px;font-size:.72rem}.panel-tab{padding:8px 10px;font-size:.78rem}.panel-content{padding:10px 8px}}.toast-notification{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(20px);padding:10px 20px;border-radius:8px;font-size:.85rem;color:#fff;z-index:10000;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none;max-width:90vw;text-align:center}.toast-visible{opacity:1;transform:translate(-50%) translateY(0)}.toast-info{background:var(--info, #3b82f6)}.toast-warn{background:var(--warning, #f59e0b);color:#1a1a2e}.toast-error{background:var(--danger, #ef4444)}.panel-header-actions{display:flex;align-items:center;gap:6px}.share-btn{background:none;border:1px solid var(--border-color, rgba(255,255,255,.15));border-radius:4px;padding:4px 8px;cursor:pointer;color:var(--text-color, #c8d3f5);font-size:.78rem;white-space:nowrap;transition:background .15s}.share-btn:hover{background:var(--hover-bg, rgba(255,255,255,.08))}.copy-toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--accent-color, #3b82f6);color:#fff;padding:8px 16px;border-radius:4px;font-size:.85rem;z-index:9999;pointer-events:none;animation:copyFadeInOut 2s forwards}@keyframes copyFadeInOut{0%{opacity:0}10%{opacity:1}80%{opacity:1}to{opacity:0}}.welcome-actions{margin-top:16px}.ics-export-btn{background:none;border:1px solid var(--border-color, rgba(255,255,255,.15));border-radius:6px;padding:6px 14px;cursor:pointer;color:var(--text-color, #c8d3f5);font-size:.82rem;transition:background .15s}.ics-export-btn:hover{background:var(--hover-bg, rgba(255,255,255,.08))}.skeleton-container{padding:16px}.skeleton-line{height:14px;border-radius:4px;margin-bottom:12px;background:var(--skeleton-bg, #2a2a2a);position:relative;overflow:hidden}.skeleton-line.short{width:40%}.skeleton-line.medium{width:70%}.skeleton-line.long{width:100%}.skeleton-line.title{height:20px;width:50%;margin-bottom:16px}.skeleton-chart{height:200px;border-radius:8px;background:var(--skeleton-bg, #2a2a2a);margin-bottom:16px;position:relative;overflow:hidden}.skeleton-line:after,.skeleton-chart:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);animation:skeleton-shimmer 1.5s infinite}@keyframes skeleton-shimmer{0%{left:-100%}to{left:100%}}.light-mode .skeleton-line,.light-mode .skeleton-chart{background:#e0e0e0}.light-mode .skeleton-line:after,.light-mode .skeleton-chart:after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.drag-handle{width:40px;height:4px;border-radius:2px;background:var(--border-color, #555);margin:8px auto;cursor:grab}@media(min-width:769px){.drag-handle{display:none}}@media(min-width:769px){.legend-toggle-btn{display:none}}@media(max-width:768px){.detail-panel,#detail-panel{will-change:transform}}.disclosure-section{margin:10px 0 4px;padding:10px 12px;background:#ffffff06;border:1px solid var(--border-color);border-radius:8px}.disclosure-section.disclosure-pending{border-style:dashed;opacity:.9}.disclosure-header{font-size:.72rem;font-weight:600;color:var(--text-muted);margin-bottom:8px;display:flex;align-items:center;gap:5px;text-transform:uppercase;letter-spacing:.06em}.disclosure-row{display:flex;align-items:flex-start;gap:7px;padding:4px 0;font-size:.8rem;color:var(--text-secondary);border-bottom:1px solid rgba(255,255,255,.04);flex-wrap:wrap}.disclosure-row:last-of-type{border-bottom:none}.disclosure-row>i{margin-top:2px;width:14px;text-align:center;opacity:.55;flex-shrink:0}.disclosure-label{color:var(--text-muted);min-width:32px;font-size:.75rem;flex-shrink:0}.disclosure-value{color:var(--text-primary);flex:1}.disclosure-row.criminal-warning>i,.disclosure-row.criminal-warning .disclosure-label,.disclosure-row.criminal-warning .disclosure-value{color:#f97316;opacity:1}.disclosure-row.criminal-warning .disclosure-value{font-weight:600}.disclosure-row.criminal-clear>i{color:#4ade80;opacity:1}.disclosure-row.criminal-clear .disclosure-value{color:#4ade80}.disclosure-row.tax-warning .disclosure-value{color:#f97316;font-weight:600}.criminal-details{width:100%;margin-top:3px}.criminal-details summary{cursor:pointer;font-size:.73rem;color:var(--text-muted);padding:2px 0;list-style:none;user-select:none}.criminal-details summary::-webkit-details-marker{display:none}.criminal-details summary:before{content:"\25b6  ";font-size:.62rem}.criminal-details[open] summary:before{content:"\25bc  "}.criminal-list{list-style:none;padding:5px 0 2px 4px;margin:0}.criminal-list li{font-size:.75rem;color:var(--text-secondary);padding:3px 0;border-bottom:1px solid rgba(255,255,255,.04)}.criminal-list li:last-child{border-bottom:none}.crime-name{color:#f97316;font-weight:500}.criminal-raw{font-size:.75rem;color:var(--text-secondary);padding:5px 0 2px 4px;white-space:pre-wrap}.disclosure-source{font-size:.67rem;color:var(--text-disabled, #4a5568);margin-top:7px;text-align:right;opacity:.7}
