@layer page {
@keyframes polls-reveal { from { clip-path: inset(0 0 45% 0); } to { clip-path: inset(0); } }
@keyframes polls-pop { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: none; } }
.pg-polling-places .polls-map-panel { position: relative; isolation: isolate; height: 300px; height: clamp(220px, 36svh, 420px); margin-top: var(--s6); overflow: hidden; background: var(--ink); color: var(--paper); --focus: var(--paper); }
.pg-polling-places .polls-map-panel.is-open { height: calc(100vh - var(--header-bar) - var(--rule)); height: calc(100svh - var(--header-bar) - var(--rule)); }
.pg-polling-places .polls-map { position: absolute; inset: 0; }
.pg-polling-places .polls-map-art { position: absolute; top: 44%; left: 50%; width: auto; height: 60%; transform: translate(-50%, -50%); }
.pg-polling-places .polls-map-status { position: absolute; right: 16px; bottom: 16px; left: 16px; z-index: 3; width: fit-content; max-width: calc(100% - 32px); margin-inline: auto; padding: 10px 16px; border: 1px solid var(--paper); border-radius: var(--r-sm); background: var(--ink); font-size: 1rem; line-height: 1.45; text-align: center; text-wrap: balance; }
.pg-polling-places .polls-map-retry { min-height: 44px; padding: 4px 0 0; border: 0; background: none; color: var(--paper); text-decoration: underline; text-underline-offset: 4px; font: 700 1.125rem/1.3 var(--font-action); }
.pg-polling-places .polls-map-tools { position: absolute; right: 16px; bottom: 16px; z-index: 3; display: grid; padding: 3px 0; border-radius: 26px; background: var(--ink); visibility: hidden; }
.pg-polling-places .polls[data-map-state="ready"] .is-open .polls-map-tools { visibility: visible; }
.pg-polling-places .polls-map-tools button { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; background: none; color: var(--paper); transition: color var(--d-hover) var(--ease-out); }
.pg-polling-places .polls-map-tools button + button { border-top: 1px solid var(--middle-teal); }
@media (hover: hover) { .pg-polling-places .polls-map-tools button:hover { color: var(--sky); } }
.pg-polling-places :is(.polls-map-tools svg, .polls-map-open svg, .polls-map-done .ui-glyph) { flex: none; width: 22px; height: 22px; }
.pg-polling-places .polls-map-open { position: absolute; inset: 0; z-index: 2; display: flex; align-items: flex-end; justify-content: flex-end; padding: 16px; border: 0; background: transparent; cursor: zoom-in; }
.pg-polling-places .polls-map-open:focus-visible { outline-offset: -6px; }
.pg-polling-places :is(.polls-map-open span, .polls-map-done) { align-items: center; gap: 8px; min-height: 44px; padding: 0 18px 0 14px; border: 1px solid var(--middle-teal); border-radius: var(--r-pill); background: var(--btn-bg); color: var(--btn-fg); font: 700 1.0625rem/1 var(--font-action); }
.pg-polling-places .polls-map-open span { display: inline-flex; }
.pg-polling-places .polls-map-done { position: absolute; top: 16px; right: 16px; z-index: 3; display: none; }
.pg-polling-places .is-open .polls-map-done { display: inline-flex; }
.pg-polling-places :is(.is-open, .polls[data-map-state="error"]) .polls-map-open { display: none; }
.pg-polling-places .polls-callout { --focus: var(--paper); display: grid; justify-items: start; gap: 2px; max-width: 260px; padding: 12px 16px; border-radius: var(--r-md); background: var(--ink); color: var(--paper); font: 400 1rem/1.45 var(--font-body); }
.pg-polling-places .polls-callout-tag { color: var(--paper); font: 600 .8125rem/1.3 var(--font-action); text-transform: uppercase; letter-spacing: .04em; }
.pg-polling-places .polls-callout-name { color: var(--paper); font: 700 1.3125rem/1.1 var(--font-action); }
.pg-polling-places .polls-callout-room { font: 500 .875rem/1.3 var(--font-label); }
.pg-polling-places .polls-callout-status { margin-top: 2px; font: 600 1rem/1.3 var(--font-action); }
.pg-polling-places .polls-callout-go { display: inline-flex; align-items: center; min-height: 44px; margin-top: 6px; padding: 0 18px; border-radius: var(--r-pill); background: var(--paper); color: var(--ink); font: 700 1.0625rem/1 var(--font-action); text-decoration: none; }
@media (max-width: 1023px) {
.pg-polling-places .polls[data-map-state="error"] .polls-map-panel:not(.is-open) .polls-map-art { top: 50%; right: 16px; left: auto; width: 36%; height: auto; max-height: calc(100% - 32px); object-fit: contain; object-position: right center; transform: translateY(-50%); }
.pg-polling-places .polls[data-map-state="error"] .polls-map-panel:not(.is-open) .polls-map-status { right: auto; max-width: calc(64% - 48px); margin: 0; text-align: start; }
}
@media (min-width: 1024px) {
.pg-polling-places .polls-map-panel { position: sticky; top: calc(var(--header-bar) + var(--rule)); grid-area: 1 / 2 / -1; align-self: start; height: calc(100vh - var(--header-bar) - var(--rule)); height: calc(100svh - var(--header-bar) - var(--rule)); margin: 0; }
.pg-polling-places :is(.polls-map-open, .polls-map-done) { display: none; }
.pg-polling-places .polls[data-map-state="ready"] .polls-map-tools { visibility: visible; }
}
@media (prefers-reduced-motion: no-preference) {
.pg-polling-places .polls-map-panel.is-open { animation: polls-reveal 320ms var(--ease-out) both; }
}
@media (prefers-reduced-motion: reduce) {
.pg-polling-places .polls-map-tools button { transition: none; }
}
@media (forced-colors: active) {
.pg-polling-places :is(.polls-map-panel, .polls-map-tools, .polls-callout, .polls-map-open span, .polls-map-done) { border: 2px solid CanvasText; }
}
}
