/* Escala comum para a narrativa e a consulta, sem alterar a identidade. */
body { --content-width:1160px; -webkit-text-size-adjust:100%; }
body header.map-header { padding-bottom:0; }
.project-masthead { padding:24px 24px 42px; }
.masthead-logo { width:320px; }
body .masthead-about { margin-top:12px; min-height:44px; }
.opening-inner { max-width:var(--content-width); padding:40px 24px 36px; }
.opening-visual,.opening-copy { min-width:0; }
.opening-visual { max-width:560px; margin-inline:auto; width:100%; }
.opening-copy { max-width:680px; margin-inline:auto; }
.vote-slogan { max-width:520px; }
.vote-intro { font-size:clamp(26px,4.2vw,44px); }
.vote-word { font-size:clamp(40px,7vw,72px); margin-top:6px; }
.vote-slogan::before,.vote-slogan::after { font-size:24px; top:8%; bottom:auto; }
.ballot-art { margin:22px 0 18px; }
body .project-title { font-size:clamp(34px,4.3vw,54px); line-height:1.04; margin-bottom:16px; -webkit-text-stroke:.35px currentColor; }
.project-description { font-size:18px; line-height:1.55; margin-bottom:20px; max-width:52ch; }
.project-data-line { gap:12px; padding-top:14px; }
.project-data-line p { font-size:12px; line-height:1.6; }
.project-data-line>span { font-size:21px; letter-spacing:3px; }
body .map-header .about summary { box-sizing:border-box; max-width:var(--content-width); padding:22px 24px; font-size:30px; }
body .map-header .about .intro { box-sizing:border-box; max-width:var(--content-width); padding:0 24px 28px; }
body .map-header .about .intro p { max-width:72ch; font-size:16px; line-height:1.65; }
.city-overview-inner { max-width:var(--content-width); padding:26px 24px; }
.city-overview-copy { width:65%; }
.city-overview-number { font-size:clamp(76px,7.2vw,98px); }
.city-overview-label { font-size:clamp(26px,2.6vw,32px); }
.city-overview-meta { margin-top:18px; padding-top:12px; }
.city-overview .city-overview-source,.city-overview .city-overview-note { font-size:13px; line-height:1.55; }
.city-overview-caption { top:20px; right:24px; font-size:14px; }
.participation-flow { max-width:1112px; margin:28px auto 0; gap:14px; }
body #participation-invite .invite-copy { grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); }
body .participation-flow #participation-invite h2,body .participation-flow .escuta-invite h2 { font-size:30px; line-height:1.08; }
body #participation-invite .invite-signature,body .participation-flow .escuta-signature { font-size:10px; line-height:1.5; letter-spacing:.06em; }
body .local-search-intro { box-sizing:border-box; width:calc(100% - 48px); max-width:1112px; margin:48px auto 28px; text-align:left; }
body .local-search-intro h2 { max-width:24ch; font-size:36px; line-height:1.08; margin-bottom:18px; }
body .local-search-intro p { max-width:65ch; margin-left:0; font-size:17px; line-height:1.65; }
body .local-search-intro p strong { font-size:19px; }
body #main-content { box-sizing:border-box; display:grid; max-width:var(--content-width); grid-template-columns:minmax(0,1fr) 320px; grid-template-areas:'controls controls' 'nav nav' 'map ranking' 'detail detail'; align-items:start; gap:20px; padding:0 24px 32px; }
body #main-content>#location-controls { grid-area:controls; margin:0; padding:20px; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); grid-template-areas:'search-label sort-label' 'search sort' 'count count'; gap:8px 20px; border-radius:22px; }
#location-controls>* { min-width:0; order:initial; }
#location-controls label[for=search] { grid-area:search-label; }
#location-controls label[for=sort] { grid-area:sort-label; }
#location-controls #search { grid-area:search; }
#location-controls #sort { grid-area:sort; }
body #location-controls input,body #location-controls select { margin:0; min-height:48px; padding:12px; }
body #location-controls #count { grid-area:count; padding:4px 0 0; border:0; font-size:13px; line-height:1.45; }
body #main-content>.view-controls { grid-area:nav; align-self:stretch; max-width:none; margin:0; padding:0 0 3px; gap:10px; }
body .view-controls button { box-shadow:none; border-color:#555; min-height:44px; }
body .view-controls button[aria-pressed=true] { box-shadow:inset 0 0 0 2px var(--paper),0 2px 0 #383838; }
body .view-controls a { min-height:44px; margin-left:auto; padding-inline:0; font-size:14px; }
body #map-view { grid-area:map; }
body #map { height:540px; height:clamp(420px,65svh,580px); border-radius:22px; box-shadow:0 3px 0 #d7cfc2; }
body #map-view>p.small { font-size:13px; line-height:1.55; margin:12px 2px 0; }
body #abstention-filters.legend { margin:16px 0 0; padding:16px; border-radius:18px; }
body #abstention-filters .legend-hint { margin:5px 0 10px; font-size:12px; }
.legend-options { grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px; }
body #abstention-filters .legend-filter { min-width:0; padding:8px; font-size:13px; gap:8px; }
body #abstention-filters .swatch { flex:0 0 auto; }
body #abstention-filters .legend-reset { margin-top:10px; font-size:13px; }
body #locations-panel { grid-area:ranking; box-sizing:border-box; margin:0; max-height:780px; max-height:calc(clamp(420px,65svh,580px) + 236px); padding:8px 16px; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; }
body #locations-panel:has(#ranking[hidden]) { display:none; }
body #ranking .row { padding:16px 0; font-size:13px; line-height:1.5; }
body #ranking .row strong { font-size:17px; line-height:1.25; margin-bottom:7px; }
body #ranking .row .small { font-size:12px; line-height:1.45; }
body #detail { grid-area:detail; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:24px 32px; margin:4px 0 0; padding:26px; border:0; border-radius:22px; scroll-margin-top:20px; }
body #detail:not(:has(.place-summary)) { display:block; }
body #detail .place-title { font-size:30px; line-height:1.1; overflow-wrap:normal; }
body #detail .place-meta,body #detail .place-comparison { font-size:13px; line-height:1.5; }
body #detail .place-metrics { gap:10px; margin:18px 0 14px; }
body #detail .place-metrics>div { padding:12px; }
body #detail .place-metrics dt { font-size:12px; line-height:1.4; }
body #detail .place-metrics dd { font-size:32px; font-variant-numeric:tabular-nums; }
body #detail .place-distribution { border-left:1px solid #fbf7ef66; padding-left:28px; min-width:0; }
body #detail h3 { font-size:18px; margin:0 0 10px; }
body #detail .place-votes>div { gap:16px; padding:9px 0; font-size:14px; line-height:1.5; }
body #detail .place-votes small { font-size:12px; }
body #detail details { margin-top:12px; }
body #detail summary { min-height:44px; box-sizing:border-box; padding:10px 0; font-size:14px; }
body #detail .location-participation { grid-column:1/-1; display:flex; align-items:center; justify-content:space-between; gap:20px; margin:0; padding-top:18px; }
body #detail .location-participation p { margin:0; max-width:48ch; font-size:14px; line-height:1.45; }
body #detail .location-participation a { min-height:44px; }
body #main-content[data-view=table] { grid-template-columns:1fr; grid-template-areas:'controls' 'nav'; }
body #main-content[data-view=table]>#location-controls { grid-template-areas:'search-label sort-label' 'search sort' 'count count' 'legend legend'; }
body #location-controls>#abstention-filters { grid-area:legend; margin:8px 0 0; border-color:#666; }
body #table-section { box-sizing:border-box; max-width:var(--content-width); padding:8px 24px 32px!important; }
body #table-section h2 { font-size:30px; }
body #table-section>p { max-width:85ch; font-size:14px; line-height:1.6; }
body #table-section>div { margin-top:20px; border:1px solid var(--line); border-radius:18px; }
body #sources { margin-top:20px; padding:32px 24px calc(48px + env(safe-area-inset-bottom)); }
.sources-inner { max-width:1112px; margin:auto; }
body #sources h2 { margin:0 0 22px; font-size:28px; }
.sources-copy { columns:2; column-gap:44px; }
body #sources .sources-copy p { margin:0 0 18px; font-size:14px; line-height:1.65; break-inside:avoid; }
@media(min-width:960px) {
 .opening-inner { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); align-items:center; gap:48px; padding-block:48px; }
 .opening-copy { width:100%; }
 .ballot-art { margin-bottom:0; }
 body .local-search-intro { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:10px 32px; }
 body .local-search-intro h2 { grid-row:1/3; margin:0; }
 body .local-search-intro p { margin:0; }
}
@media(max-width:959px) {
 body #main-content { grid-template-columns:1fr; grid-template-areas:'controls' 'nav' 'map' 'detail' 'ranking'; }
 body #locations-panel { max-height:360px; }
 body #detail { grid-template-columns:1fr; gap:22px; }
 body #detail .place-distribution { border:0; padding:18px 0 0; border-top:1px solid #fbf7ef66; }
 .opening-copy { margin-top:24px; }
 .city-overview-caption { display:none; }
}
@media(max-width:760px) {
 .project-masthead { padding:22px 18px 38px; }
 .masthead-logo { width:250px; }
 .opening-inner { padding:28px 20px 26px; }
 .opening-visual { max-width:450px; }
 .vote-intro { font-size:clamp(24px,6.5vw,40px); }
 .vote-word { font-size:clamp(40px,14vw,80px); }
 .ballot-art { margin:18px 0 0; }
 .opening-copy { margin-top:20px; }
 body .project-title { font-size:clamp(29px,7.8vw,42px); line-height:1.04; margin-bottom:14px; }
 .project-description { font-size:16px; line-height:1.55; margin-bottom:18px; }
 .project-data-line p { font-size:12px; }
 body .map-header .about summary { padding:18px 20px; font-size:25px; }
 body .map-header .about .intro { padding:0 20px 22px; }
 .city-overview-inner { padding:22px 20px; }
 .city-overview-copy { width:100%; }
 .city-overview-number { font-size:clamp(64px,18vw,80px); }
 .city-overview-label { font-size:clamp(23px,6vw,28px); }
 .city-overview-meta { margin-top:16px; }
 .city-overview .city-overview-source,.city-overview .city-overview-note { font-size:12px; line-height:1.55; }
 .participation-flow { width:calc(100% - 32px); margin-top:24px; gap:14px; }
 body #participation-invite .invite-copy { grid-template-columns:1fr; }
 body .participation-flow #participation-invite h2,body .participation-flow .escuta-invite h2 { font-size:27px; }
 body .local-search-intro { width:calc(100% - 40px); margin:34px auto 24px; }
 body .local-search-intro h2 { font-size:30px; margin-bottom:16px; }
 body .local-search-intro p { font-size:16px; line-height:1.6; }
 body .local-search-intro p strong { font-size:18px; }
 body #main-content { gap:18px; padding:0 16px 24px; }
 body #main-content>#location-controls { padding:18px; gap:8px; }
 body .view-controls a { margin-left:0; font-size:13px; }
 body .view-controls button { font-size:14px; padding:10px 14px; }
 body #map { height:420px; height:clamp(360px,55svh,460px); }
 body #abstention-filters.legend { padding:14px; }
 body #detail { padding:20px 18px; }
 body #detail .place-title { font-size:27px; }
 body #detail .location-participation { align-items:flex-start; flex-direction:column; gap:12px; }
 body #detail .location-participation p { font-size:14px; }
 body #sources { padding-inline:20px; }
 .sources-copy { columns:1; }
 body #sources h2 { font-size:25px; }
 body #sources .sources-copy p { font-size:13px; line-height:1.7; }
}
@media(max-width:600px) {
 body #main-content>#location-controls { grid-template-columns:1fr; grid-template-areas:'search-label' 'search' 'sort-label' 'sort' 'count'; }
 body #location-controls label[for=sort] { margin-top:6px; }
 body #main-content[data-view=table]>#location-controls { grid-template-areas:'search-label' 'search' 'sort-label' 'sort' 'count' 'legend'; }
 .legend-options { grid-template-columns:1fr; }
}
@media(prefers-reduced-motion:reduce) { body .view-controls button:hover { transform:none; } }
