/* Public statistics reuse the established admin map, controls and type scale. */
.public-header{padding:20px 4vw;display:flex;align-items:center;justify-content:space-between;gap:24px;background:var(--cream);border-bottom:2px solid var(--ink)}
.public-header img{display:block;width:auto;max-width:100%;height:72px}

#main{max-width:1520px;padding:40px 24px;margin:0 auto}
#main[aria-busy=true]>section{visibility:visible!important}
.public-heading{align-items:flex-start;gap:16px 32px;padding-bottom:24px}
.public-heading h1{margin:0 0 8px}
.public-heading .form-summary{margin:0;color:var(--muted)}
.public-heading .form-summary:empty,.public-updated:empty{display:none}
.public-heading .public-updated{font-size:var(--text-small);color:var(--muted);margin:8px 0 0;text-align:right;white-space:nowrap}
.public-map-about{margin:12px 16px 16px;color:var(--muted);font-size:var(--text-small)}
.public-map-about summary{cursor:pointer;min-height:44px;padding:12px 0}
.public-map-about .map-heat-note,.public-map-about .map-coverage{margin:0 0 12px}
#form-dashboard .map-navigation:has(button[hidden]){display:none}
.public-status{padding:24px 0;color:var(--muted);display:flex;align-items:center;gap:16px}
.public-status[data-error=true]{color:var(--deep)}
.public-footer{width:100%;padding:24px 4vw;border-top:2px solid var(--ink);background:var(--cream);display:flex;justify-content:space-between;gap:20px;font-size:13px;color:var(--muted)}
.public-footer p{margin:0}.public-footer nav{display:flex;gap:18px}
.public-footer nav a{color:var(--muted);font-weight:700;text-decoration:none}
.public-footer nav a:hover{text-decoration:underline}
#main[aria-busy=true] #form-dashboard{opacity:.65;pointer-events:none}
@media(max-width:800px){
 .public-header{padding:20px 4vw;gap:12px;flex-wrap:wrap}.public-header img{width:160px;height:auto}
 #main{padding:28px 16px}.page-heading h1{font-size:36px}
 .public-footer{flex-wrap:wrap}
}
.public-header-actions{display:flex;align-items:center;gap:12px;margin-left:auto}
.public-language,.public-donate{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;color:var(--ink);font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;white-space:nowrap}
.public-language{border:2px solid var(--ink)}
.public-donate{background:var(--orange);border:2px solid var(--orange)}
.public-donate:hover{background:var(--deep);border-color:var(--deep);color:#fff}
@media(max-width:800px){.public-header-actions{gap:8px}.public-language,.public-donate{font-size:11px;padding:8px 10px}}
.public-language:hover{background:var(--hover)}

@media(max-width:600px){
 .public-heading{flex-direction:column;gap:8px;padding-bottom:20px}
 .public-heading .public-updated{margin:0;align-self:flex-end;font-size:12px}
 .page-heading h1{font-size:32px;line-height:1.15;text-wrap:balance}
 .public-header{gap:12px}
 .public-header>a{min-width:0;flex:1}
 .public-header img{width:160px}
 .public-header-actions{flex-shrink:0}
 #form-dashboard .map-view-tabs{width:100%}
 #form-dashboard .map-view-tabs button{flex:1;min-height:48px}
 #form-dashboard .map-zoom-buttons{display:grid;grid-template-columns:44px 36px 44px minmax(0,1fr);width:100%;gap:4px}
 #form-dashboard .map-zoom-buttons output{min-width:0;align-self:center}
 #form-dashboard .map-zoom-buttons .map-zoom-reset{margin:0;padding:0 8px;white-space:normal}
 #form-dashboard .map-legend{margin-inline:16px;display:grid;grid-template-columns:auto minmax(40px,90px) auto;justify-content:start}
 #form-count-label{grid-column:1/-1}
 #form-dashboard .map-active-filters button{min-height:44px}
 #form-dashboard .map-ranking th,#form-dashboard .map-ranking td{font-size:14px}
 .public-footer nav{flex-wrap:wrap;gap:4px 24px}
 .public-footer nav a{display:inline-flex;align-items:center;min-height:44px}
}

/* Reserve the chart layout before data arrives, including across language changes. */
@font-face{font-family:'Public heading';font-style:normal;font-weight:400;font-display:block;src:url('/fonts/bebas-neue.woff2') format('woff2')}
.public-heading h1{font-family:'Public heading','Bebas Neue',sans-serif;line-height:1.2}
.public-heading .form-summary{min-height:1.5em}
.public-heading .form-summary:empty{display:block}
.public-updated{min-height:21px}
.public-heading .public-updated:empty{display:block;min-width:180px}
#list{position:relative}
.public-status{position:absolute;z-index:1;top:220px;left:24px;right:24px;padding:16px;justify-content:center}
/* Match the admin loader while keeping its translated announcement accessible. */
.public-status:not([data-error=true])::before{content:"";display:block;flex:none;width:38px;height:38px;border:3px solid var(--line);border-top-color:var(--deep);border-radius:50%;animation:view-loading-spin .8s linear infinite}
.public-status:not([data-error=true])>span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.public-status[data-error=true]{background:var(--surface);flex-wrap:wrap;text-align:center}
@media(prefers-reduced-motion:reduce){.public-status::before{animation:none!important}}
#form-dashboard[data-loading] .map-panel{visibility:hidden}
#form-dashboard[data-loading]{pointer-events:none}
#form-dashboard .map-timeline{min-height:320px}
#form-dashboard[data-loading] .map-ranking-scroll{height:520px}
.public-map-about summary{display:flex;align-items:center;gap:6px;list-style:none}
.public-map-about summary::-webkit-details-marker{display:none}
.public-map-about[open] .map-chart-chevron{transform:rotate(90deg)}
@media(max-width:1000px){#form-dashboard[data-loading] .map-ranking-scroll{height:330px}}
@media(max-width:600px){#form-dashboard .map-timeline{min-height:256px}.public-status{top:220px;left:16px;right:16px}}

@font-face{font-family:'Public body';font-style:normal;font-weight:100 900;font-display:block;src:url('/fonts/archivo.woff2') format('woff2')}
body{font-family:'Public body',Archivo,system-ui,sans-serif}

/* Public mobile hierarchy: context, return action, view switch, then the map. */
.public-mobile-map-help{display:none}
#form-dashboard .map-main-panel>.map-panel-heading>.map-navigation{order:3}
@media(max-width:600px){
 .public-heading{gap:4px;padding-bottom:16px}
 .public-heading .public-updated{align-self:flex-start;text-align:left;font-size:12px;min-height:18px}
 #form-dashboard .map-main-panel>.map-panel-heading{flex-direction:column;align-items:stretch;gap:12px;padding-top:12px}
 #form-dashboard .map-main-panel>.map-panel-heading>.map-navigation{order:0;width:auto;margin:0}
 #form-dashboard .map-main-panel>.map-panel-heading>div:not(.map-navigation){order:1}
 #form-dashboard .map-main-panel>.map-panel-heading>.map-view-tabs{order:2}
 #form-dashboard .map-zoom-hint{flex-basis:100%;font-size:13px}
 #form-map-back{border:0;background:transparent;padding:0;min-height:44px;text-align:left}
 #form-dashboard .map-zoom-controls{margin-top:2px}
 .public-mobile-map-help{display:block;margin:0 0 12px}
}

/* The map owns pinch/pan gestures; the rest of the page remains scrollable. */
@media(max-width:600px){
 #form-map svg{touch-action:none}
 #form-map .form-dot{stroke-width:.75px}
}


/* Reuse admin filters, calendar, buttons and metric spacing. */
#list[data-kind] .filters.public-filters{grid-template-columns:repeat(3,minmax(0,1fr));background:var(--surface);border:1px solid var(--line)}
#list[data-kind] .filters.public-filters .list-date-field{grid-column:auto}
.public-filters #filter-error{grid-column:1/-1;margin:0;color:var(--deep)}
.public-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
.public-metrics .map-metric{border-bottom:0}
.public-metrics .map-metric h2{white-space:nowrap}
.public-metrics .map-metric:last-child{border-right:0}
.public-heading #form-summary[hidden]{display:none}
.public-filters .select-trigger{height:48px}
.public-metrics strong{font-variant-numeric:tabular-nums}
@media(max-width:600px){
 #list[data-kind] .filters.public-filters{grid-template-columns:1fr auto}
 #list[data-kind] .filters.public-filters>label,
 #list[data-kind] .filters.public-filters .list-date-field{grid-column:1/-1}
 #list[data-kind] .filters.public-filters #public-apply{grid-column:2;min-width:100px;width:auto}
 .public-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
 .public-metrics .map-metric{padding:14px 10px;border-bottom:0;border-right:1px solid var(--line)}
 .public-metrics .map-metric:last-child{border-right:0}
 .public-metrics .map-metric strong{font-size:clamp(20px,5.7vw,28px)}
 .public-metrics .map-metric span{font-size:12px}
 .public-metrics .map-metric p{font-size:11px;line-height:1.4}
 .public-status{top:480px}
 #form-dashboard .chart-time-controls{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
 #form-dashboard .chart-time-controls label{min-width:0}
 #form-dashboard .chart-time-controls .map-date-shortcut{min-width:0;padding-inline:10px;gap:6px}
}

#list #public-apply{width:100%;min-width:88px;padding-inline:20px;justify-self:stretch}
.public-statistics{position:relative}
.public-statistics .public-status{top:64px}
.public-statistics:has(#form-dashboard[data-loading]) .public-metrics{visibility:hidden}

/* Keep removable filters explicit on both desktop and touch screens. */
#form-active-filters button{display:inline-flex;align-items:center;gap:10px;min-height:44px}
#form-active-filters .map-filter-remove{font-size:20px;line-height:1;color:var(--muted)}
.form-timeline-frame{display:flex;min-width:0}
#form-timeline .form-timeline-axis{flex:none}
.form-timeline-scroll{flex:1;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
#form-timeline .form-timeline-plot{max-width:none}
#form-timeline .form-bar-target{cursor:pointer;outline:none}
#form-timeline .form-bar-target:focus-visible{outline:2px solid var(--deep);outline-offset:-2px}
#form-timeline .form-day-bar.is-selected{fill:var(--ink)}
.form-timeline-selection{min-height:1.5em;margin:10px 0 16px;color:var(--muted);font-size:var(--text-caption)}
.form-timeline-empty{min-height:256px;margin:0;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:var(--text-caption)}
#form-dashboard .map-primary>.map-secondary{grid-template-columns:minmax(0,1fr)}
@media(max-width:600px){
 #form-timeline .form-timeline-frame text{font-size:12px}
}
.map-zip-hit{cursor:pointer}
.map-zip-options{display:grid;gap:6px;max-height:180px;overflow:auto;margin:12px 0}
.map-zip-options button{min-height:44px;text-align:left}
@media(max-width:600px){
 #form-dashboard .map-main-panel>.map-panel-heading{padding:16px 12px 10px;gap:10px}
 #form-dashboard .map-main-panel>.map-panel-heading p,
 #form-dashboard .map-main-panel>.map-panel-heading .map-navigation{display:none}
 #form-view-panel{display:flex;flex-direction:column;min-width:0}
 #form-map{order:0;margin:0 8px;min-width:0}
 #form-view-panel>.map-tooltip{order:1}
 #form-zoom-controls{order:2;display:flex;flex-direction:column-reverse;align-items:stretch;gap:8px;margin:12px}
 #form-dashboard .map-zoom-buttons{display:flex;width:auto;justify-content:flex-start;gap:4px}
 #form-dashboard .map-zoom-buttons output{width:32px;flex:none}
 #form-dashboard .map-zoom-buttons .map-zoom-reset{margin-left:auto;padding-inline:12px;width:auto;white-space:nowrap}
 #form-dashboard .map-zoom-hint{flex-basis:auto;font-size:12px;line-height:1.5}
 #form-map-description{display:none}
 #form-count-legend{order:3;margin:4px 12px 0}
 .public-map-about{order:4;margin:12px;font-size:12px}
 .public-map-about .map-heat-note{font-size:12px}
 #form-map svg.is-moving .map-state-label{visibility:hidden}
}
