.hero{background:var(--kale);color:var(--white);padding:80px 24px 64px;position:relative;overflow:hidden}.hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 85% 20%,rgba(206,17,38,.12) 0%,transparent 50%),radial-gradient(circle at 15% 80%,rgba(0,90,45,.25) 0%,transparent 50%);pointer-events:none}.hero-inner{max-width:1100px;margin:0 auto;position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}.hero-map{width:110%;height:387px;overflow:hidden;background:transparent;margin:-17px -5% 0}#hero-map.leaflet-container{background:transparent!important}.hero-map .leaflet-control-zoom,.hero-map .leaflet-control-attribution{display:none}.ward-flag-icon{background:none!important;border:none!important;font-size:16px;line-height:1;text-align:center}.hero .eyebrow{font-size:.75rem;text-transform:uppercase;letter-spacing:2px;font-weight:600;opacity:.8;margin-bottom:12px}.hero h1{font-family:Open Sauce Sans,sans-serif;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:800;line-height:1.15;margin-bottom:64px}.hero .subtext{font-size:1rem;opacity:.85;max-width:600px;margin-bottom:8px}.hero .meta{font-size:.675rem;opacity:.6;margin-top:16px}.hero .stats{display:flex;gap:52px;margin-top:24px}.hero .stat-num{font-family:Open Sauce Sans,sans-serif;font-size:2.4rem;font-weight:900;line-height:1}.hero .stat-label{font-size:.85rem;text-transform:uppercase;letter-spacing:1px;opacity:.7;margin-top:4px}.search-section{max-width:1148px;margin:0 auto;padding:48px 24px 0}.search-title{font-family:Open Sauce Sans,sans-serif;font-size:32px;font-weight:700;margin-top:8px;margin-bottom:24px;color:var(--text)}.search-box{display:flex;gap:8px;max-width:480px}.search-box input{flex:1;padding:12px 16px;border:1px solid var(--border);border-radius:6px;font-family:inherit;font-size:.95rem;background:var(--white);color:var(--text);outline:none;transition:border-color .2s}.search-box input:focus{border-color:var(--kale)}.search-box button{padding:12px 20px;background:var(--watermelon);color:var(--white);border:none;border-radius:6px;font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .2s}.search-box button:hover{background:var(--watermelon-dark)}.search-box button.found{background:var(--kale)}.search-box button.found:hover{background:var(--olive)}.search-result{margin-top:12px;font-size:.9rem;min-height:1.6em}.search-result.success{color:var(--kale);font-weight:600}.search-result.error{color:var(--watermelon)}.ward-block.dimmed{opacity:.3;transition:opacity .4s}.ward-block.highlight{opacity:1;border-radius:8px;padding:16px;margin-left:-16px;margin-right:-16px}.ward-block.highlight.has-pledges{background:#007a3d1a}.ward-block.highlight.no-pledges{background:#ce11261a}.ward-list-section{max-width:1148px;margin:0 auto;padding:48px 24px 64px}.ward-block{margin-bottom:32px;scroll-margin-top:80px}.ward-block h2{font-family:Open Sauce Sans,sans-serif;font-size:1.15rem;font-weight:700;padding-bottom:8px;border-bottom:2px solid var(--kale);margin-bottom:12px;display:flex;align-items:baseline;gap:8px}.ward-block h2 .seats-badge{font-family:Open Sauce Sans,sans-serif;font-size:.825rem;font-weight:500;color:var(--text-light);text-transform:uppercase;letter-spacing:.5px}.candidate-grid{display:flex;flex-wrap:wrap;gap:16px}.candidate-grid .candidate-card{width:calc((100% - 32px) / 3)}.no-candidates{color:var(--text-light);font-size:.9rem;padding:8px 0}.cta-banner{background:var(--kale);color:var(--white);padding:56px 24px;text-align:center}.cta-banner-inner{max-width:600px;margin:0 auto}.cta-banner h2{font-family:Open Sauce Sans,sans-serif;font-size:1.6rem;font-weight:800;margin-bottom:12px}.cta-banner p{font-size:.95rem;opacity:.85;margin-bottom:24px}.cta-banner .btn:hover{background:#ffffff1a!important;opacity:1}@media(max-width:900px){.hero-inner{grid-template-columns:1fr}.hero-map{max-height:280px}}@media(max-width:600px){.hero .stats{flex-wrap:wrap;gap:24px}.hero .stat-num{font-size:1.6rem}.candidate-grid .candidate-card{width:100%}.ward-block h2{flex-wrap:wrap;gap:4px 12px}}
