/* Homepage styles are isolated from the campaign management interface. */
body.wn-home-page {
    --wn-ink: #183c36;
    --wn-muted: #69756f;
    --wn-green: #146b57;
    --wn-border: #dfe5de;
    --wn-paper: #f7f8f4;
    margin: 0;
    width: 100%;
    height: auto;
    background: var(--wn-paper);
    color: var(--wn-ink);
    font-family: 'Nunito', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.5;
}
.wn-home-page *, .wn-home-page *::before, .wn-home-page *::after { box-sizing: border-box; }
.wn-home-page .grand { min-height: 100vh; }
.wn-home-page h1, .wn-home-page h2, .wn-home-page h3, .wn-home-page p { margin: 0; color: inherit; }
.wn-home-page a { color: inherit; text-decoration: none; }
.wn-home-page button, .wn-home-page input, .wn-home-page select { font: inherit; }
.wn-home-page button, .wn-home-page select, .wn-home-page a { -webkit-tap-highlight-color: transparent; }
.wn-home-page button { cursor: pointer; }
.wn-home-page [hidden] { display: none !important; }
.wn-home-page :is(a, button, input, select):focus-visible { outline: 3px solid #b57c24; outline-offset: 4px; }
.wn-container { width: min(1440px, calc(100% - 96px)); margin-inline: auto; }
.wn-sr-only, .wn-skip:not(:focus) { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.wn-skip:focus { position: fixed; top: 10px; left: 10px; z-index: 100; padding: 12px 20px; background: white; }
.wn-header { background: #fff; border-bottom: 1px solid var(--wn-border); }
.wn-header-inner { min-height: 92px; display: flex; align-items: center; justify-content: space-between; gap: 32px; }
.wn-brand { display: inline-flex; align-items: center; gap: 11px; flex-shrink: 0; }
.wn-brand img { display: block; object-fit: contain; }
.wn-brand > span { font-size: 22px; font-weight: 900; letter-spacing: -.8px; }
.wn-brand small { display: block; font-size: 11px; color: var(--wn-muted); font-weight: 600; letter-spacing: .65px; }
.wn-nav { display: flex; align-items: center; gap: 30px; align-self: stretch; }
.wn-nav a { display: flex; align-items: center; position: relative; font-size: 14px; font-weight: 700; color: #68746e; }
.wn-nav a:hover, .wn-nav a.wn-nav-active { color: var(--wn-green); }
.wn-nav-active::after { content: ''; position: absolute; bottom: 0; height: 3px; border-radius: 3px 3px 0 0; background: var(--wn-green); width: 100%; }
.wn-header-cta { display: inline-flex; align-items: center; gap: 22px; padding: 10px 17px; min-height: 44px; border: 1px solid #cbd8cf; border-radius: 8px; font-size: 13px; font-weight: 800; }
.wn-header-cta:hover { background: #edf3eb; }
.wn-header-cta > span { font-size: 20px; }
.wn-election-switcher { display: flex; justify-content: flex-end; margin-top: 22px; }
.wn-election-switcher form { display: grid; grid-template-columns: auto minmax(190px, 260px) auto; align-items: center; gap: 5px; padding: 5px; border: 1px solid #d5dfd5; border-radius: 12px; background: #fff; box-shadow: 0 5px 18px #183c3608; }
.wn-election-switcher label { padding-inline: 10px 7px; font-size: 10px; font-weight: 900; letter-spacing: 1px; text-transform: uppercase; color: #64736a; }
.wn-election-switcher select { width: 100%; min-width: 0; min-height: 42px; padding: 8px 34px 8px 11px; border: 0; border-left: 1px solid #e0e6df; border-radius: 0; background: #fff; color: var(--wn-ink); font-size: 13px; font-weight: 700; }
.wn-election-switcher button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 42px; padding: 8px 13px; border: 0; border-radius: 8px; background: var(--wn-green); color: #fff; font-size: 11px; font-weight: 900; }
.wn-election-switcher button:hover { background: #0e5343; }
.wn-election-switcher button span:last-child { font-size: 17px; line-height: 1; }
.wn-hero { padding-block: 55px 42px; display: grid; grid-template-columns: 1.18fr 1fr; align-items: center; gap: 64px; }
.wn-eyebrow { display: flex; align-items: center; gap: 10px; font-size: 10px; line-height: 1.5; letter-spacing: 1.65px; font-weight: 900; color: var(--wn-green); }
.wn-hero .wn-eyebrow { font-size: 11px; letter-spacing: 1.6px; }
.wn-flag { display: inline-flex; width: 22px; height: 14px; border-radius: 2px; overflow: hidden; }
.wn-flag i { flex: 1; background: #177949; }.wn-flag i:nth-child(2) { background: #ebc94b; }.wn-flag i:nth-child(3) { background: #d75646; }
.wn-hero h1 { margin-top: 20px; font-size: clamp(42px, 4.3vw, 65px); letter-spacing: -2.8px; font-weight: 900; line-height: 1.09; }
.wn-hero h1 em { font-family: 'Playfair Display', Georgia, serif; color: var(--wn-green); font-weight: 400; }
.wn-hero-copy > p { margin-top: 23px; color: #63716a; line-height: 1.7; font-size: 16px; }
.wn-hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 22px; margin-top: 27px; }
.wn-button { display: inline-flex; justify-content: center; align-items: center; min-height: 50px; gap: 11px; padding: 12px 19px; border-radius: 8px; border: 1px solid transparent; font-size: 13px; font-weight: 800; line-height: 1.5; transition: background 180ms ease, transform 180ms ease; }
.wn-home-page .wn-button-primary { background: var(--wn-green); color: white; box-shadow: 0 4px 9px #146b5712; }
.wn-button-primary:hover { background: #0e5343; transform: translateY(-2px); }
.wn-button svg { width: 21px; height: 21px; flex-shrink: 0; }
.wn-button > span:last-child { margin-left: 8px; font-size: 20px; line-height: 1; }
.wn-text-link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-size: 12px; font-weight: 800; }
.wn-text-link:hover { text-decoration: underline; text-underline-offset: 5px; }
.wn-election-date { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; color: var(--wn-muted); font-size: 12px; margin-top: 22px; }
.wn-election-date svg { height: 15px; width: 15px; margin-right: 3px; }
.wn-election-date time { font-weight: 800; }
.wn-assembly { position: relative; min-width: 0; background: #e9efe5; border: 1px solid #dce5d6; border-radius: 18px; padding: 25px 28px 19px; overflow: hidden; }
.wn-assembly-top { display: flex; justify-content: space-between; align-items: center; gap: 14px; font-size: 10px; font-weight: 900; letter-spacing: 1.5px; }
.wn-pill { background: #ffffffa8; padding: 6px 10px; border: 1px solid #ffffffcf; border-radius: 20px; font-size: 10px; font-weight: 700; letter-spacing: 0; white-space: nowrap; }
.wn-hemicycle-wrap { position: relative; width: 100%; max-width: 370px; margin: 43px auto 24px; }
.wn-hemicycle { display: block; width: 100%; height: auto; overflow: visible; }
.wn-seats { fill: #527d65; }
.wn-seat-count { position: absolute; left: 50%; bottom: -2px; transform: translateX(-50%); text-align: center; width: 145px; }
.wn-seat-count strong { display: block; font-size: clamp(36px, 4vw, 56px); font-weight: 900; line-height: 1; letter-spacing: -2px; }
.wn-seat-count span { display: block; color: #526b58; margin-top: 6px; font-size: 11px; }
.wn-assembly--single::before { content: ''; position: absolute; z-index: 0; inset: 46px 0 40px; background: linear-gradient(180deg, #e8f0e4e6 0%, #e8f0e4b8 45%, #e8f0e466 100%), url('../../uploads/components/palais-republique.jpeg') center 58% / cover no-repeat; opacity: .82; pointer-events: none; mix-blend-mode: multiply; }
.wn-assembly--single > * { position: relative; z-index: 1; }
.wn-assembly--single .wn-hemicycle { visibility: hidden; }
.wn-election-winner { position: absolute; inset: 12px 0 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; text-align: center; }
.wn-election-winner img { display: block; width: 118px; height: 118px; border: 5px solid #f7faf4; border-radius: 50%; object-fit: cover; object-position: center 20%; box-shadow: 0 0 0 1px #b7cbb5, 0 10px 28px #183c3630; }
.wn-election-winner > span { display: flex; flex-direction: column; align-items: center; }
.wn-election-winner small { color: var(--wn-green); font-size: 9px; line-height: 1.4; font-weight: 900; letter-spacing: 1.5px; }
.wn-election-winner strong { max-width: 280px; margin-top: 3px; font-size: 20px; line-height: 1.15; font-weight: 900; letter-spacing: -.4px; }
.wn-election-winner em { margin-top: 4px; color: #576b5b; font-size: 10px; line-height: 1.4; font-style: normal; }
.wn-assembly-bottom { display: flex; justify-content: space-between; gap: 12px; border-top: 1px solid #ccd8c7; padding-top: 16px; font-size: 11px; color: #536954; }
.wn-assembly-bottom > span:last-child { font-size: 18px; line-height: 1; }
.wn-overview { display: grid; grid-template-columns: 1fr 1fr 1fr 1.15fr; padding: 24px 0; border-top: 1px solid var(--wn-border); border-bottom: 1px solid var(--wn-border); }
.wn-overview > div, .wn-overview > a { display: flex; align-items: center; gap: 15px; padding: 0 30px; border-left: 1px solid var(--wn-border); }
.wn-overview > div:first-child { border: 0; padding-left: 0; }
.wn-overview strong { font-size: 30px; font-weight: 900; letter-spacing: -1px; }
.wn-overview .wn-overview-winner { align-items: flex-start; flex-direction: column; gap: 2px; }
.wn-overview .wn-overview-winner strong { max-width: 220px; font-size: 17px; line-height: 1.2; letter-spacing: -.25px; }
.wn-overview span { color: #617267; font-size: 12px; }
.wn-overview a { padding-right: 0; }
.wn-overview a:hover b { text-decoration: underline; text-underline-offset: 3px; }
.wn-overview a > svg { width: 32px; height: 32px; flex-shrink: 0; color: var(--wn-green); }
.wn-overview a b { color: var(--wn-ink); }
.wn-overview .wn-overview-arrow { font-size: 24px; margin-left: auto; color: var(--wn-green); }
.wn-explore-layout { display: grid; grid-template-columns: minmax(0, .88fr) minmax(0, 1.5fr); gap: 38px; padding-block: 43px 64px; align-items: start; }
.wn-explore-layout section { scroll-margin-top: 24px; }
.wn-section-heading { min-height: 75px; display: flex; align-items: start; }
.wn-section-heading h2 { margin-top: 8px; font-size: 24px; line-height: 1.3; letter-spacing: -.7px; font-weight: 900; display: flex; align-items: center; gap: 10px; }
.wn-count-badge { display: inline-flex; align-items: center; justify-content: center; font-size: 11px; letter-spacing: 0; min-width: 28px; height: 25px; padding-inline: 6px; border-radius: 6px; background: #e4ebdf; color: #496249; }
.wn-map-card { position: relative; border: 1px solid var(--wn-border); border-radius: 12px; background: #fff; padding: 23px; }
.wn-map-diaspora { position: absolute; z-index: 2; top: 12px !important; right: 18px; display: inline-flex; flex-direction: column; align-items: center; gap: 4px; width: 104px; min-height: 82px; padding: 6px 7px 7px; border: 1px solid #d6e2d0; border-radius: 10px; background: #f3f7ef; color: var(--wn-green); font-size: 10px; font-weight: 900; }
.wn-map-icon { display: inline-flex; align-items: center; justify-content: center; width: 90px; height: 56px; overflow: hidden; border-radius: 6px; background: #dfeade; }
.wn-map-icon .wn-world-map { display: block; width: 86px; height: 54px; }
.wn-world-map #ocean { fill: #dfeade !important; }
.wn-world-map path:not(#ocean) { fill: var(--country-winner, #3f775d) !important; stroke: #f3f7ef !important; }
.wn-world-map .landxx { fill: var(--country-winner, #6f9672); stroke: #f3f7ef; stroke-width: 1.2; transition: fill 150ms ease, opacity 150ms ease; }
.wn-world-map [data-country-name] { cursor: pointer; }
.wn-world-map [data-country-name]:hover, .wn-world-map [data-country-name]:focus { fill: #146b57; opacity: 1; outline: none; }
.wn-map-diaspora:hover, .wn-map-diaspora:focus-visible { background: #e5efdf; border-color: #abc6a8; }
.wn-map-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.wn-map-heading > span { margin-right: 118px; }
.wn-map-heading h3 { font-size: 17px; font-weight: 900; }
.wn-map-heading > span { font-size: 10px; background: #f1f4ef; padding: 5px 9px; border-radius: 5px; font-weight: 700; color: #657761; }
.wn-map-card > p { font-size: 12px; color: var(--wn-muted); margin-top: 7px; }
.wn-senegal { display: block; width: 100%; height: auto; aspect-ratio: 1100 / 885; margin: 18px auto 10px; }
.wn-senegal path { fill: var(--region-winner, #b7cdb1); stroke: #fff; stroke-width: 3; stroke-linejoin: round; transition: fill 180ms ease, filter 180ms ease; }
.wn-senegal a[data-region-winner=""] path { fill: #dfe8dc; }
.wn-senegal a:hover path, .wn-senegal a:focus path { fill: color-mix(in srgb, var(--region-winner, #27694f) 72%, #183c36); filter: saturate(1.12); }
.wn-senegal a { cursor: pointer; }
.wn-senegal a:focus-visible { outline: none; }
.wn-senegal a:focus-visible path { stroke: #9b691c; stroke-width: 7; }
.wn-map-caption { display: flex; justify-content: center; align-items: center; gap: 7px; color: #607463; min-height: 34px; font-size: 11px; }
.wn-region-tooltip { position: fixed; z-index: 20; display: flex; align-items: center; gap: 10px; width: min(230px, calc(100vw - 28px)); padding: 9px 11px 9px 9px; border: 1px solid #c8d8c4; border-radius: 10px; background: #fffffff7; box-shadow: 0 12px 30px #183c3630; pointer-events: none; transform: translateY(-4px); }
.wn-region-tooltip[hidden] { display: none; }
.wn-region-tooltip img { width: 48px; height: 48px; flex: 0 0 48px; border: 2px solid #d8e3d4; border-radius: 50%; object-fit: cover; object-position: center 20%; }
.wn-region-tooltip span { min-width: 0; }
.wn-region-tooltip strong { display: block; color: var(--wn-ink); font-size: 11px; line-height: 1.25; overflow-wrap: anywhere; }
.wn-region-tooltip small { display: block; margin-top: 4px; color: var(--wn-green); font-size: 10px; font-weight: 800; }
.wn-map-dot { width: 7px; height: 7px; background: #78966b; border-radius: 50%; flex-shrink: 0; }
.wn-region-form { margin-top: 16px; padding-top: 17px; border-top: 1px solid #e9ede6; }
.wn-region-form label { display: block; font-size: 11px; font-weight: 800; margin-bottom: 8px; }
.wn-region-controls { display: flex; gap: 8px; }
.wn-region-controls select { min-width: 0; flex: 1; min-height: 44px; padding: 10px 12px; border: 1px solid var(--wn-border); border-radius: 7px; background: #fafbf8; color: var(--wn-ink); font-size: 12px; }
.wn-region-controls button { min-height: 44px; min-width: 44px; border: 0; border-radius: 7px; background: #e7eee1; color: var(--wn-green); font-size: 20px; }
.wn-region-controls button:hover { background: #d1e1c8; }
.wn-diaspora-card { display: flex; align-items: center; gap: 13px; padding: 20px; margin-top: 16px; border-radius: 11px; background: #eaf0e5; border: 1px solid #dce5d6; }
.wn-globe { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; border: 1px solid #cbdac1; border-radius: 50%; flex-shrink: 0; }
.wn-globe svg { width: 26px; height: 26px; }
.wn-diaspora-card strong { display: block; font-size: 14px; font-weight: 900; }
.wn-diaspora-card > span > span { display: block; font-size: 11px; color: #5c6f54; margin-top: 4px; }
.wn-diaspora-card > b { margin-left: auto; font-size: 22px; }
.wn-diaspora-card:hover { background: #e0ead9; }
.wn-search { display: flex; align-items: center; gap: 10px; padding: 0 15px; border: 1px solid #d9e1d8; background: #fff; border-radius: 8px; min-height: 47px; }
.wn-search:focus-within { border-color: var(--wn-green); box-shadow: 0 0 0 3px #146b5712; }
.wn-search svg { width: 18px; height: 18px; flex-shrink: 0; color: #768274; }
.wn-search input { width: 100%; min-width: 0; border: 0; border-radius: 0; padding: 12px 0; background: transparent; color: var(--wn-ink); font-size: 13px; box-shadow: none; height: auto; }
.wn-search input::placeholder { color: #798274; opacity: 1; }
.wn-search input:focus-visible { outline-offset: 1px; }
.wn-results-meta { display: flex; justify-content: space-between; gap: 12px; padding: 15px 0 14px; color: #65715f; font-size: 11px; }
.wn-results-meta > span:first-child { font-weight: 800; }
.wn-results-meta > span:last-child { color: #758071; }
.wn-candidate-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 17px; }
.wn-candidate-card { display: flex; flex-direction: column; min-width: 0; overflow: hidden; background: #fff; border: 1px solid var(--wn-border); border-radius: 10px; transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease; }
.wn-candidate-card:hover { transform: translateY(-3px); border-color: #a6bda7; box-shadow: 0 8px 20px #183c360c; }
.wn-candidate-photo { position: relative; aspect-ratio: 1.2; background: #edf0ea; overflow: hidden; }
.wn-candidate-photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center 22%; transition: transform 240ms ease; }
.wn-candidate-card:hover img { transform: scale(1.035); }
.wn-candidate-rank { position: absolute; top: 10px; left: 10px; min-width: 31px; padding: 5px 7px; border-radius: 999px; background: #fff; color: var(--wn-ink); font-size: 11px; font-weight: 900; box-shadow: 0 3px 10px #183c3624; }
.wn-card-arrow { position: absolute; right: 9px; bottom: 9px; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: #fffffff2; font-size: 18px; color: var(--wn-ink); }
.wn-candidate-info { padding: 12px 13px 15px; }
.wn-party { display: flex; align-items: center; gap: 6px; color: #607258; font-size: 9px; line-height: 1.4; font-weight: 900; letter-spacing: .45px; overflow-wrap: anywhere; }
.wn-party i { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--party-color); box-shadow: 0 0 0 1px #00000012; flex-shrink: 0; }
.wn-candidate-info h3 { margin-top: 6px; font-size: 15px; line-height: 1.3; font-weight: 900; letter-spacing: -.3px; overflow-wrap: anywhere; }
.wn-candidate-info p { margin-top: 5px; font-size: 10px; line-height: 1.45; color: #6b7567; overflow-wrap: anywhere; }.wn-candidate-info p strong { color: var(--wn-green); font-weight: 900; }
.wn-no-results, .wn-data-empty { padding: 40px 24px; background: #fff; text-align: center; border: 1px dashed #bac8b7; border-radius: 10px; }
.wn-no-results h3 { font-size: 20px; font-weight: 800; }.wn-no-results p { color: var(--wn-muted); margin-block: 8px 18px; }
.wn-button-outline { border-color: #bacbb9; background: #f6f9f1; color: var(--wn-green); }
.wn-button-outline:hover { background: #e9f0e2; }
.wn-footer { border-top: 1px solid var(--wn-border); padding-block: 28px; background: #eef2ea; }
.wn-footer > div { display: flex; align-items: center; justify-content: space-between; gap: 24px; font-size: 11px; color: #67765f; }
.wn-footer-brand { font-size: 18px; font-weight: 900; color: var(--wn-ink) !important; }
.wn-footer-brand span { display: block; margin-top: 3px; font-size: 11px; font-weight: 400; color: #67765f; }
.wn-footer-actions { display: flex; align-items: center; justify-content: flex-end; gap: 20px; }
.wn-footer-actions a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 800; }
.wn-footer-admin { gap: 8px; padding: 8px 13px; border: 1px solid #c5d2c5; border-radius: 8px; background: #f7f9f4; color: var(--wn-ink) !important; transition: background 180ms ease, border-color 180ms ease, transform 180ms ease; }
.wn-footer-admin svg { width: 16px; height: 16px; flex: 0 0 16px; }
.wn-footer-admin:hover { border-color: #9fb7a2; background: #e4ece0; transform: translateY(-1px); }
.wn-footer-top:hover { text-decoration: underline; text-underline-offset: 4px; }
@media (min-width: 1550px) { .wn-hero-actions { flex-wrap: nowrap; }.wn-hero { padding-block: 64px 46px; }.wn-candidate-photo { aspect-ratio: 1.25; } }
@media (max-width: 1199px) {
    .wn-container { width: calc(100% - 56px); }.wn-header-inner { gap: 20px; }.wn-nav { gap: 20px; }
    .wn-hero { gap: 32px; }.wn-hero h1 { font-size: 51px; }.wn-assembly { padding-inline: 22px; }.wn-assembly-top { letter-spacing: .8px; font-size: 9px; }
    .wn-overview > div, .wn-overview > a { padding-inline: 18px; gap: 10px; }.wn-overview strong { font-size: 26px; }.wn-overview span { font-size: 11px; }
    .wn-explore-layout { gap: 25px; grid-template-columns: minmax(0, .86fr) minmax(0,1.3fr); }.wn-section-heading h2 { font-size: 21px; }.wn-candidate-grid { gap: 12px; }.wn-candidate-info { padding: 11px; }.wn-candidate-info h3 { font-size: 14px; }
}
@media (max-width: 959px) {
    .wn-header-inner { min-height: 80px; }.wn-brand > span { font-size: 20px; }.wn-nav { gap: 18px; }.wn-nav a { font-size: 12px; }.wn-header-cta { font-size: 11px; gap: 10px; }
    .wn-election-switcher form { grid-template-columns: auto minmax(170px, 240px) auto; }.wn-hero { gap: 25px; padding-block: 40px 30px; }.wn-hero h1 { font-size: 43px; letter-spacing: -2px; }.wn-hero-copy > p { font-size: 14px; }.wn-desktop-break { display: none; }
    .wn-assembly { padding: 20px 18px 15px; }.wn-assembly-top { flex-direction: column; align-items: flex-start; gap: 8px; }.wn-hemicycle-wrap { margin-top: 25px; }.wn-seat-count strong { font-size: 38px; }.wn-seat-count span { font-size: 9px; }.wn-assembly-bottom { font-size: 10px; }
    .wn-overview { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px 0; }.wn-overview > div:nth-child(3) { padding-left: 0; border: 0; }.wn-overview > a { min-height: 40px; }
    .wn-explore-layout { grid-template-columns: minmax(0, .8fr) minmax(0, 1fr); gap: 22px; }.wn-candidate-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }.wn-map-card { padding: 18px; }.wn-map-heading > span { margin-right: 108px; }.wn-map-diaspora { top: 10px !important; right: 12px; }.wn-diaspora-card { padding: 15px; gap: 9px; }.wn-globe { width: 34px; height: 34px; }.wn-diaspora-card strong { font-size: 12px; }.wn-diaspora-card > span > span { font-size: 10px; }.wn-section-heading h2 { font-size: 20px; }.wn-count-badge { min-width: 24px; }.wn-eyebrow { font-size: 9px; letter-spacing: 1.3px; }
    .wn-footer > div { flex-wrap: wrap; }
}
@media (max-width: 699px) {
    .wn-container { width: calc(100% - 36px); }.wn-header-inner { flex-wrap: wrap; min-height: auto; padding-top: 15px; gap: 12px; }.wn-brand img { width: 40px; height: 40px; }.wn-brand { gap: 8px; }.wn-brand > span { font-size: 19px; }.wn-brand small { font-size: 9px; }.wn-header-cta { margin-left: auto; padding: 8px 10px; font-size: 10px; gap: 8px; min-height: 42px; }.wn-header-cta > span { font-size: 17px; }
    .wn-nav { order: 3; width: 100%; justify-content: space-between; gap: 20px; }.wn-nav a { min-height: 45px; font-size: 12px; }
    .wn-election-switcher { margin-top: 16px; }.wn-election-switcher form { width: 100%; grid-template-columns: auto minmax(0,1fr) 44px; }.wn-election-switcher label { padding-inline: 8px 5px; }.wn-election-switcher select { min-height: 44px; font-size: 16px; }.wn-election-switcher button { width: 44px; min-height: 44px; padding: 0; }.wn-switcher-submit-label { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }.wn-hero { grid-template-columns: 1fr; gap: 27px; padding-block: 34px 27px; }.wn-hero .wn-eyebrow { font-size: 10px; }.wn-hero h1 { font-size: clamp(42px,10vw,58px); margin-top: 17px; }.wn-hero-copy > p { font-size: 15px; margin-top: 18px; max-width: 420px; }.wn-hero-actions { margin-top: 23px; gap: 9px 18px; }.wn-button-primary { min-height: 52px; font-size: 12px; padding-inline: 15px; }.wn-text-link { font-size: 12px; }.wn-election-date { margin-top: 12px; }
    .wn-assembly { padding: 19px 23px 16px; }.wn-assembly-top { flex-direction: row; align-items: center; font-size: 9px; }.wn-hemicycle-wrap { max-width: 285px; margin: 23px auto 18px; }.wn-seat-count strong { font-size: 42px; }.wn-seat-count span { font-size: 10px; }.wn-election-winner img { width: 96px; height: 96px; }.wn-election-winner strong { max-width: 230px; font-size: 17px; }.wn-assembly-bottom { font-size: 10px; }
    .wn-overview { padding-block: 20px; gap: 19px 0; }.wn-overview > div, .wn-overview > a { gap: 10px; padding-inline: 13px; }.wn-overview strong { font-size: 27px; }.wn-overview span { font-size: 10px; }.wn-overview a > svg { width: 26px; height: 26px; }.wn-overview .wn-overview-arrow { font-size: 19px; }
    .wn-explore-layout { grid-template-columns: 1fr; gap: 33px; padding-top: 32px; padding-bottom: 40px; }.wn-section-heading { min-height: 68px; }.wn-section-heading h2 { font-size: 24px; }.wn-eyebrow { font-size: 10px; }.wn-map-card { padding: 21px; }.wn-senegal { max-width: 400px; max-height: 295px; }.wn-map-heading h3 { font-size: 18px; }.wn-map-heading > span { margin-right: 108px; }.wn-map-diaspora { top: 12px !important; right: 14px; width: 96px; }.wn-map-icon { width: 84px; height: 50px; }.wn-map-icon .wn-world-map { width: 80px; height: 48px; }.wn-diaspora-card { padding: 18px; gap: 12px; }.wn-diaspora-card strong { font-size: 14px; }.wn-diaspora-card > span > span { font-size: 11px; }.wn-globe { width: 40px; height: 40px; }
    .wn-candidate-grid { gap: 14px; }.wn-candidate-photo { aspect-ratio: 1.05; }.wn-candidate-info { padding: 12px; }.wn-candidate-info h3 { font-size: 15px; }.wn-party { font-size: 10px; }.wn-candidate-info p { font-size: 11px; }.wn-search input { font-size: 14px; }.wn-results-meta { font-size: 11px; }
    .wn-footer > div { flex-direction: column; align-items: flex-start; gap: 16px; }.wn-footer { padding-block: 24px; }.wn-footer-actions { width: 100%; flex-wrap: wrap; justify-content: flex-start; gap: 8px 18px; }
}
@media (max-width: 359px) { .wn-container { width: calc(100% - 28px); }.wn-brand small { display: none; }.wn-brand > span { font-size: 17px; }.wn-header-cta { font-size: 9px; }.wn-section-heading h2 { font-size: 21px; }.wn-button-primary { gap: 8px; padding-inline: 12px; font-size: 11px; }.wn-candidate-grid { gap: 10px; }.wn-candidate-info { padding: 10px; }.wn-candidate-info h3 { font-size: 14px; } }
@media (prefers-reduced-motion: reduce) { .wn-home-page *, .wn-home-page *::before, .wn-home-page *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }

/* Assembly seats: hover, keyboard focus and tap share the same tooltip. */
.wn-seats circle[aria-label] { cursor: help; }
.wn-seats circle.wn-seat-active, .wn-seats circle:focus-visible { stroke: #183c36; stroke-width: 2; }
.wn-seat-tooltip { position: fixed; z-index: 100; width: max-content; max-width: min(280px, calc(100vw - 24px)); padding: 10px 13px; border: 1px solid #31584b; border-radius: 10px; background: #183c36; color: #fff; box-shadow: 0 8px 24px #183c3630; font-size: 12px; font-weight: 600; line-height: 1.5; overflow-wrap: anywhere; }
.wn-seat-tooltip[hidden] { display: none; }
.wn-data-coverage { color: var(--wn-muted); font-size: 12px; line-height: 1.5; margin: 8px 0 16px; }
.wn-data-coverage a { text-decoration: underline; text-underline-offset: 3px; }
