
.avatar{overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.avatar[data-side=red]{border-color:#fa5c7c;box-shadow:0 0 0 3px #fa355918}.avatar[data-side=blue]{border-color:#629dff;box-shadow:0 0 0 3px #2678ff18}
.is-first-round .demo-ribbon,.is-first-round .demo-dock{display:none!important}.round-overview{margin:26px 0 8px;padding:24px 28px;border:1px solid #b6c6dd1a;border-radius:16px;background:#17223425}.round-data-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.round-data-heading>span{color:#b9a483;font-size:10px;letter-spacing:1.6px}.round-data-heading>b{font-size:12px;font-weight:500;color:#b9c5d7}.vote-data{display:grid;grid-template-columns:1.3fr 1fr 1fr;margin-top:24px}.vote-data>div{display:flex;flex-direction:column;gap:10px;padding-left:28px;border-left:1px solid #b6c6dd22}.vote-data>div:first-child{padding-left:0;border:0}.vote-data span{font-size:12px;color:#acbad0}.vote-data strong{font-size:30px;letter-spacing:-1px;font-weight:500;font-variant-numeric:tabular-nums}.round-overview>p{font-size:10px;line-height:1.8;color:#95a5bb;margin:24px 0 0}.round-data-source{font-size:10px;color:#97a8bf;margin-top:10px;line-height:1.8}.round-data-source summary{cursor:pointer}.round-data-source a{color:#d6bd92;margin-right:20px}.round-return{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:20;background:#1b293ded!important;box-shadow:0 8px 35px #0004;padding:14px 22px;white-space:nowrap}.is-waiting #roundOverview{display:none}.is-first-round .site-footer{padding-bottom:100px}
@media(max-width:580px){.round-overview{padding:20px 16px;margin-top:15px}.round-data-heading{align-items:flex-start}.round-data-heading>span{font-size:8px;max-width:90px;line-height:1.6}.round-data-heading>b{font-size:10px;text-align:right}.vote-data{grid-template-columns:1fr 1fr 1fr;margin-top:20px}.vote-data>div{padding-left:10px;gap:10px}.vote-data span{font-size:9px}.vote-data strong{font-size:17px;letter-spacing:-.5px}.round-overview>p{font-size:9px}.round-return{bottom:16px;font-size:11px}.entry-footnote{line-height:1.8}}

.round-return{position:static;transform:none;box-shadow:none;z-index:auto;margin-left:auto}.is-first-round #fullscreenBtn{display:none}@media(max-width:580px){.page-heading .round-return{display:flex;width:auto;height:auto;font-size:9px;padding:10px;white-space:normal;max-width:105px;text-align:center;line-height:1.5}.is-first-round .page-heading{align-items:center}}

footer a[href*="instagram.com"]{color:inherit;text-decoration:none;text-underline-offset:4px}footer a[href*="instagram.com"]:hover{color:#e2c99d;text-decoration:underline}footer a[href*="instagram.com"]:focus-visible{outline:2px solid #e2c99d;outline-offset:5px;border-radius:3px}

.share-fab{position:fixed;right:24px;bottom:96px;z-index:35;width:48px;height:48px;display:grid;place-items:center;border-radius:50%;border:1px solid #cab18b77;background:radial-gradient(circle at 30% 20%,#435064,#1a283c 65%,#101c2d);box-shadow:inset 0 1px 1px #ffffff24,inset 0 -3px 3px #0005,0 8px 20px #0004;transition:transform .2s,box-shadow .2s;cursor:pointer}.share-fab:hover{transform:translateY(-3px);box-shadow:inset 0 1px 1px #ffffff36,0 11px 26px #0005}.share-fab:active{transform:translateY(1px)}.share-fab svg{width:24px;height:26px}.share-dialog label{display:block;color:#aebbd0;font-size:11px;margin:24px 0 8px}.share-dialog input{width:100%;min-width:0;background:#142136;border:1px solid #ffffff22;color:#c9d5e6;padding:13px 12px;font:11px Manrope,sans-serif;border-radius:8px;box-sizing:border-box}.share-dialog .primary-button{margin-top:16px}.share-dialog #shareStatus{min-height:20px;margin:12px 0 0;color:#d7c2a0;font-size:11px}.is-first-round .share-fab{bottom:28px}
@media(max-width:580px){.share-fab{right:16px;bottom:150px;width:44px;height:44px}.is-first-round .share-fab{bottom:22px}.share-dialog input{font-size:16px!important}.share-dialog #shareStatus{font-size:10px}}
@media(prefers-reduced-motion:reduce){.share-fab{transition:none}.share-fab:hover{transform:none}}

/* A compact, balanced utility row in every experience state. */
.header.utility-header{min-height:64px;height:64px;padding:10px 32px;gap:16px;justify-content:space-between;align-items:center;flex-wrap:nowrap}
.header.utility-header .audience{margin:0;padding:0;width:auto;order:0;border:0;flex-shrink:1}
.header.utility-header .audience-item{gap:8px;align-items:center}
.header.utility-header .audience-item>div{display:flex;flex-direction:row;align-items:baseline;gap:6px}
.header.utility-header .audience-item b{font-size:14px;line-height:1.2;letter-spacing:0}
.header.utility-header .audience-item small{font-size:11px;line-height:1.2}
.header.utility-header .audience-icon{width:23px;height:25px}.header.utility-header .audience-icon svg{width:19px;height:19px}.header.utility-header .audience-icon i{width:5px;height:5px;right:0;top:3px}
.header.utility-header .audience-note{display:none}
.header.utility-header .header-actions{margin:0;gap:8px;order:1;display:flex;align-items:center}
.header.utility-header .icon-button{width:40px;height:40px;display:grid;place-items:center;padding:8px}
.header.utility-header .avatar{width:36px;height:36px;flex-shrink:0}
/* Vote margin sits between the candidates, using the same data in both modes. */
.versus.vote-gap{width:116px;flex:0 0 116px;align-self:center;margin:0;opacity:1;display:flex;justify-content:center;align-items:center;gap:0}
#difference{font-size:10px;line-height:1.6;color:#9caec4;letter-spacing:0;text-align:center}
#difference b{display:block;font-size:18px;font-weight:500;line-height:1.3;letter-spacing:-.4px;color:#e4d4b9;font-variant-numeric:tabular-nums;white-space:nowrap;margin-bottom:4px}
.rope-caption{justify-content:space-between}.rope-caption>span:last-child{width:auto;font-size:9px}
@media(max-width:1000px) and (min-width:761px){.versus.vote-gap{width:96px;flex-basis:96px}.candidates{gap:16px}#difference b{font-size:16px}#difference{font-size:9px}}
@media(max-width:760px){
 .header.utility-header{min-height:60px;height:60px;padding:8px 20px;gap:12px}
 .header.utility-header .icon-button{width:44px;height:44px;padding:10px}.header.utility-header .avatar{width:38px;height:38px}.header.utility-header .header-actions{gap:6px}
 .versus.vote-gap{display:flex;position:absolute;left:50%;top:96px;transform:translateX(-50%);width:100px;min-height:42px;margin:0;pointer-events:none}
 #difference{font-size:8px;line-height:1.5}#difference b{font-size:14px;letter-spacing:-.2px;margin-bottom:3px}
}
@media(max-width:580px){
 .header.utility-header{padding:8px 18px}.header.utility-header .audience-item{gap:6px}.header.utility-header .audience-item b{font-size:13px}.header.utility-header .audience-item small{font-size:10px}.header.utility-header .audience-icon{width:21px}
 .versus.vote-gap{top:95px;width:94px}.rope-caption{justify-content:center}.rope-caption>span:last-child{font-size:8px}
}
@media(max-width:360px){.header.utility-header{padding-inline:12px}.header.utility-header .audience-item small{font-size:9px}.header.utility-header .header-actions{gap:2px}.versus.vote-gap{width:84px}#difference b{font-size:12px}.candidate-score strong{font-size:26px}}

/* Soft heartbeat for the green status indicators. */
.live-dot,.tiny-dot,.audience-icon i{animation:status-beacon 2.4s ease-in-out infinite;transform-origin:center}
@keyframes status-beacon{0%,100%{opacity:.8;transform:scale(.9);box-shadow:0 0 0 0 #56c8a82e}45%{opacity:1;transform:scale(1.1);box-shadow:0 0 0 5px #56c8a800}}
@media(prefers-reduced-motion:reduce){.live-dot,.tiny-dot,.audience-icon i{animation:none}}

/* Municipality vote totals: one clear column per candidate. */
.detail-candidate-name{display:inline-flex;align-items:center;gap:6px}
.map-detail.has-vote-counts .detail-stats{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;margin:0}
.map-detail.has-vote-counts .detail-candidate{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:0}
.map-detail.has-vote-counts .detail-candidate+.detail-candidate{border-left:1px solid #b6c6dd22;padding-left:28px}
.map-detail.has-vote-counts .detail-stats b{margin:0;font-size:24px;line-height:1.2;letter-spacing:-.6px;font-variant-numeric:tabular-nums}
.detail-votes:not([hidden]){display:flex;flex-direction:column;gap:3px;margin-top:5px}
.detail-votes strong{font-size:32px;font-weight:500;line-height:1.2;letter-spacing:-.8px;font-variant-numeric:tabular-nums;color:#e7edf6}
.detail-votes small{font-size:10px;color:#9dacc1}
.map-detail.has-vote-counts .detail-red>b{color:#fb6680}.map-detail.has-vote-counts .detail-blue>b{color:#6b9eff}
.map-detail>#detailFoot[hidden]{display:none}
@media(max-width:760px){.map-detail.has-vote-counts .detail-stats{margin-top:20px;gap:16px}.map-detail.has-vote-counts .detail-candidate+.detail-candidate{padding-left:16px}.detail-votes strong{font-size:clamp(22px,6.7vw,30px)}.map-detail.has-vote-counts .detail-stats b{font-size:24px}}

.entry-content #entryStep .entry-credit{margin:30px 0 0;padding-top:20px;border-top:1px solid #b6c6dd1a;text-align:center;font-size:10px;line-height:1.8;color:#96a9c1}
.entry-credit a{color:#d8c5a5;text-decoration:none;font-weight:500;white-space:nowrap;text-underline-offset:4px}.entry-credit a:hover{text-decoration:underline;color:#f0dcb6}.entry-credit a:focus-visible{outline:2px solid #e2c99d;outline-offset:4px;border-radius:3px}.entry-credit a span{margin-left:3px;font-size:11px}
@media(max-width:580px){.entry-content #entryStep .entry-credit{margin-top:22px;padding-top:16px}}

/* Opening: an animated globe and quiet, flat controls. */
.login-dialog{width:980px}.login-dialog[open]{grid-template-columns:1fr 1fr}.login-art.globe-art{min-height:560px;height:auto;padding:20px;justify-content:center;isolation:isolate;background:radial-gradient(ellipse at 0 45%,#70344b3d,transparent 65%),radial-gradient(ellipse at 100% 55%,#2b579d40,transparent 65%),#142131}
.globe-aura{position:absolute;inset:20%;z-index:-1;border-radius:50%;background:#8aabc40a;filter:blur(35px)}#entryGlobe{display:block;width:100%;max-width:460px;aspect-ratio:1;flex-shrink:0}.globe-caption{position:absolute;bottom:30px;left:30px;right:30px;display:flex;align-items:center;justify-content:space-between;gap:12px}.globe-caption>span{font-size:8px;letter-spacing:2.2px;color:#9aaec4}.globe-caption button{display:flex;align-items:center;gap:5px;padding:7px 9px;border:1px solid #b5c6df20;border-radius:20px;color:#a6b5c9;background:#17243888;font-size:9px}.globe-caption button svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.4}.globe-caption button[aria-pressed=true] svg{opacity:.4}.globe-caption button:focus-visible{outline:2px solid #dfc79f;outline-offset:3px}
.entry-intro{margin-bottom:28px}.entry-kicker{display:flex;align-items:center;gap:7px;font-size:9px;letter-spacing:1.6px;color:#c6b496}.entry-kicker i{width:5px;height:5px;border-radius:50%;background:#c9b594;box-shadow:0 0 0 4px #c9b5940d}.entry-content .entry-intro h2{font-size:36px;line-height:1.16;letter-spacing:-1.3px;color:#f0ece5;font-weight:500;margin:19px 0 15px}.entry-intro p{font-size:12px;line-height:1.8;color:#aab9ce;margin:0;max-width:315px}.entry-preview-note{display:block;font-size:10px;line-height:1.6;color:#8a9fb9;margin-top:6px}#loginDialog button svg{filter:none;transform:none}#loginDialog .guest-button svg{width:18px;height:18px;stroke:#253448}#loginDialog .identify-button svg{width:18px;height:18px;stroke:#d8c5a5}
@media(max-width:760px){.login-dialog{width:430px}.login-dialog[open]{display:block}.login-art.globe-art{height:210px;min-height:0;padding:0;align-items:center;border-right:0;border-bottom:1px solid #b4c6df1c}#entryGlobe{width:280px;max-width:none;position:absolute;top:-35px}.globe-caption{left:20px;right:20px;bottom:14px}.globe-caption>span{font-size:7px;letter-spacing:1.7px}.entry-intro{margin-bottom:22px}.entry-content .entry-intro h2{font-size:29px;margin:15px 0 12px}.entry-intro p{font-size:11px}.entry-preview-note{font-size:9px}.entry-kicker{font-size:8px}.entry-content{padding:28px 25px}.entry-content #entryStep .entry-credit{margin-top:22px;padding-top:16px}}
@media(max-width:380px){.login-art.globe-art{height:180px}#entryGlobe{width:240px;top:-30px}.entry-content{padding:24px 21px}.entry-content .entry-intro h2{font-size:27px}.globe-caption>span{letter-spacing:1.2px}}

#entryStep .guest-button{margin-top:0}

body:has(#loginDialog[open])>#shareBtn{visibility:hidden}#loginDialog .entry-share{position:fixed;right:24px;bottom:96px;width:48px;height:48px;padding:0;z-index:50;color:#dfc8a3}#loginDialog .entry-share svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}#loginDialog .entry-share:focus-visible{outline:2px solid #e2c99d;outline-offset:4px}@media(max-width:580px){#loginDialog .entry-share{right:16px;bottom:max(16px,env(safe-area-inset-bottom));width:44px;height:44px}}
/* Brazil only: real borders, quiet relief, no globe or orbital decoration. */
.login-art.brazil-art{min-height:560px;height:auto;padding:10px;display:flex;align-items:center;justify-content:center;isolation:isolate;background:radial-gradient(ellipse at 15% 35%,#7d30412b,transparent 65%),radial-gradient(ellipse at 85% 65%,#235c932b,transparent 65%),#14202e}
.brazil-ambient{position:absolute;inset:25%;z-index:-1;background:linear-gradient(120deg,#b4395915,#3379bc15);filter:blur(35px);border-radius:50%}
#entryBrazil{display:block;position:relative;width:100%;height:auto;max-width:470px;flex-shrink:0;transform-origin:50% 55%;animation:brazil-float 10s ease-in-out infinite;will-change:transform}
@keyframes brazil-float{0%,100%{transform:perspective(950px) rotateX(12deg) rotateY(-7deg) rotateZ(-3deg) translateY(3px)}50%{transform:perspective(950px) rotateX(8deg) rotateY(5deg) rotateZ(-1deg) translateY(-4px)}}
.brazil-caption{position:absolute;left:30px;right:30px;bottom:30px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brazil-caption>span{color:#a3b3c8;font-size:9px;letter-spacing:4px}.brazil-caption button{display:flex;align-items:center;gap:5px;padding:7px 9px;border:1px solid #b5c6df20;border-radius:20px;color:#a6b5c9;background:#17243888;font-size:9px}.brazil-caption button svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.4}.brazil-caption button:focus-visible{outline:2px solid #dfc79f;outline-offset:3px}
@media(max-width:760px){.login-art.brazil-art{height:225px;min-height:0;padding:0;border-right:0;border-bottom:1px solid #b4c6df1c}#entryBrazil{width:235px;max-width:none}.brazil-caption{left:20px;right:20px;bottom:15px}.brazil-caption>span{font-size:8px;letter-spacing:3px}}
@media(max-width:380px){.login-art.brazil-art{height:200px}#entryBrazil{width:215px}}
@media(prefers-reduced-motion:reduce){#entryBrazil{animation:none;transform:perspective(950px) rotateX(10deg) rotateY(-3deg) rotateZ(-2deg)}}

/* Stationary neutral relief on the opening screen. */
.login-art.brazil-art{background:radial-gradient(ellipse at 45% 45%,#ffffff08,transparent 65%),#171e27}.brazil-ambient{background:#ffffff06}#entryBrazil{animation:none;will-change:auto;transform:perspective(950px) rotateX(12deg) rotateY(-7deg) rotateZ(-3deg)}

/* Uploaded opening logo, preserving its original proportions. */
.entry-content .entry-intro .entry-logo-heading{margin:0 0 20px;line-height:0}
.entry-logo{display:block;width:238px;max-width:100%;height:auto;border-radius:0;margin-inline:auto}
@media(max-width:760px){.entry-logo{width:200px}.entry-content .entry-intro .entry-logo-heading{margin-bottom:16px}}
.brazil-ambient{background:radial-gradient(ellipse,#ffffff1a 0%,#ffffff08 45%,transparent 72%);filter:blur(22px)}

/* Local vote difference belongs to the currently selected map area. */
.detail-vote-gap[hidden]{display:none}
.detail-vote-gap{grid-column:1 / -1;display:flex;align-items:center;justify-content:center;gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid #b6c6dd1a;color:#aab9ce;font-size:11px}
.detail-vote-gap strong{font-size:24px;font-weight:500;letter-spacing:-.5px;font-variant-numeric:tabular-nums;color:#e2c99d}
.detail-vote-gap small{font-size:11px;color:#c7d1df}
@media(max-width:580px){.detail-vote-gap{flex-wrap:wrap;gap:5px 10px;margin-top:18px}.detail-vote-gap>span{width:100%;text-align:center}.detail-vote-gap strong{font-size:26px}}

/* Layout after removing the demonstration toolbar. */
body:not(.is-waiting) .site-footer{padding-bottom:35px}
.is-waiting .waiting-panel{padding-bottom:70px}
#countdown[hidden]{display:none!important}
#urnMachine{cursor:default}
#waitingTitle{max-width:440px;margin-inline:auto}
@media(max-width:580px){.is-waiting .waiting-panel{padding-bottom:70px}}

.map-navigation-tools{flex-wrap:wrap;justify-content:flex-end}#resetMapView{color:#e2c99d}#resetMapView svg{width:15px;height:15px}.profile-dialog #forgetProfile{margin-top:14px}
@media(max-width:580px){.map-top{align-items:flex-start}.map-top>span{width:100%}.map-navigation-tools{justify-content:flex-start}#mapCanvas{top:94px}.map-navigation-tools .map-pill{font-size:8px;padding:6px 8px}}
