.fonte-locality-map,
.fonte-locality-map * { box-sizing: border-box; }
.fonte-locality-map { width: 100%; min-width: 0; }
.fonte-locality__map-wrap { position: relative; width: 100%; min-height: 21.25rem; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 1.75rem; background: var(--fonte-web-image-placeholder); }
.fonte-locality__map { width: 100%; height: 100%; min-height: inherit; }
.fonte-locality__map:focus-visible { outline: 0.1875rem solid var(--fonte-web-accent); outline-offset: -0.1875rem; }
.fonte-locality__map-state { position: absolute; z-index: 500; inset: 0; display: flex; align-items: center; justify-content: center; margin: 0; padding: 1.5rem; background: var(--fonte-web-image-placeholder); color: var(--fonte-web-ink-soft); font-family: var(--fonte-locality-copy-font-family); font-size: var(--fonte-type-public-lg); text-align: center; }
.fonte-locality__map-state[hidden] { display: none; }
.fonte-locality__map-gate { position: absolute; z-index: 600; inset: 0; display: flex; align-items: flex-end; justify-content: center; padding: 0 1.125rem 1.125rem; border: 0; background: var(--fonte-locality-map-gate-overlay); pointer-events: none; }
.fonte-locality__map-gate span { display: inline-flex; min-height: 2.5rem; padding: 0 1.125rem; align-items: center; justify-content: center; border-radius: var(--fonte-token-radius-pill); background: var(--fonte-web-ink-82); color: var(--fonte-web-white); font-family: var(--fonte-font-public); font-size: var(--fonte-type-public-md); font-weight: var(--fonte-font-weight-semibold); backdrop-filter: blur(0.375rem); }
.fonte-locality__map-gate[hidden] { display: none; }
.fonte-locality-marker { border: 0; background: transparent; }
.fonte-locality-marker span { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; border: var(--fonte-border-width) solid var(--fonte-web-line); border-radius: var(--fonte-token-radius-pill); background: var(--fonte-web-cream); box-shadow: var(--fonte-token-shadow-sm); color: var(--fonte-web-accent); transform: scale(var(--fonte-locality-marker-scale, 1)); transition: transform var(--fonte-token-transition); }
.fonte-locality-marker svg { width: 1.625rem; height: 1.625rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.fonte-locality-marker--project span { border: 0; background: var(--fonte-web-accent); color: var(--fonte-web-white); }
.fonte-locality-marker--project svg { width: 1.75rem; height: 1.75rem; stroke-width: 1.8; }
.fonte-locality-radius { fill: var(--fonte-web-accent); fill-opacity: 0.08; stroke: var(--fonte-web-accent); stroke-dasharray: 8 8; stroke-width: 2; }
.fonte-locality-map .fonte-locality-project-label { padding: 0; border: 0; background: transparent; box-shadow: none; color: var(--fonte-web-ink); font-family: var(--fonte-font-public); text-align: center; }
.fonte-locality-map .fonte-locality-project-label > span { display: flex; flex-direction: column; align-items: center; }
.fonte-locality-map .fonte-locality-project-label strong { font-size: var(--fonte-type-public-xl); line-height: 1.1; }
.fonte-locality-map .fonte-locality-project-label span span { font-size: var(--fonte-type-public-lg); font-weight: var(--fonte-font-weight-bold); line-height: 1.1; }
.fonte-locality-map .fonte-locality-project-label::before { display: none; }
.fonte-locality-map .fonte-locality-popup-shell .leaflet-popup-content-wrapper { overflow: hidden; padding: 0; border: var(--fonte-border-width) solid var(--fonte-web-line); border-radius: var(--fonte-token-radius-md); background: var(--fonte-web-cream); box-shadow: var(--fonte-token-shadow-md); color: var(--fonte-web-ink); }
.fonte-locality-map .leaflet-popup-pane,
.fonte-locality-map .leaflet-popup { z-index: var(--fonte-z-locality-popup); }
.fonte-locality-map .leaflet-control-container .leaflet-top,
.fonte-locality-map .leaflet-control-container .leaflet-bottom { z-index: var(--fonte-z-locality-controls); }
.fonte-locality-map .fonte-locality-popup-shell .leaflet-popup-content { width: 13.5rem !important; margin: 0; }
.fonte-locality-map .fonte-locality-popup-shell .leaflet-popup-tip { background: var(--fonte-web-cream); box-shadow: none; }
.fonte-locality-popup { font-family: var(--fonte-font-public); }
.fonte-locality-popup header { display: flex; min-height: 0; margin: 0; padding: 0.5rem 0.75rem; align-items: center; box-sizing: border-box; }
.fonte-locality-popup header strong { overflow: hidden; min-width: 0; margin: 0; padding: 0; font-size: var(--fonte-type-public-sm); font-weight: var(--fonte-font-weight-bold); line-height: 1; text-overflow: ellipsis; white-space: nowrap; }
.fonte-locality-popup__icon { display: none; }
.fonte-locality-popup__category { display: flex; min-height: 0; margin: 0; padding: 0.5rem 0.75rem; align-items: center; box-sizing: border-box; background: var(--fonte-web-ink); color: var(--fonte-web-white); font-size: var(--fonte-type-public-xs); font-weight: var(--fonte-font-weight-bold); line-height: 1; }
.fonte-locality-map .fonte-locality-popup-shell .fonte-locality-popup__category { margin: 0; }
.fonte-locality-popup__meta { display: flex; min-height: 0; margin: 0; padding: 0.5rem 0.75rem; align-items: center; box-sizing: border-box; gap: 0.5rem; color: var(--fonte-web-ink-soft); line-height: 1; }
.fonte-locality-popup__meta strong { margin: 0; padding: 0; color: var(--fonte-web-ink); font-size: var(--fonte-type-public-sm); line-height: 1; }
.fonte-locality-popup__meta span { margin: 0; padding: 0; font-size: var(--fonte-type-public-xs); line-height: 1; }
.fonte-locality-layers { display: flex; padding: 0.1875rem; border-radius: 0.4375rem; background: var(--fonte-web-cream); box-shadow: var(--fonte-token-shadow-sm); }
.fonte-locality-layers button { height: 1.375rem; padding: 0 0.5625rem; border: 0; border-radius: 0.3125rem; background: transparent; color: var(--fonte-web-ink-soft); cursor: pointer; font-family: var(--fonte-font-public); font-size: var(--fonte-type-public-sm); font-weight: var(--fonte-font-weight-bold); }
.fonte-locality-layers button.is-active { background: var(--fonte-web-action); color: var(--fonte-web-white); }
.fonte-locality-fullscreen { display: flex; width: 2.5rem; height: 2.5rem; padding: 0; align-items: center; justify-content: center; border: 0; border-radius: var(--fonte-token-radius-sm); background: var(--fonte-web-cream); box-shadow: var(--fonte-token-shadow-sm); color: var(--fonte-web-ink); cursor: pointer; transition: background var(--fonte-motion-fast) var(--fonte-ease-standard), color var(--fonte-motion-fast) var(--fonte-ease-standard), transform var(--fonte-motion-fast) var(--fonte-ease-standard); }
.fonte-locality-fullscreen svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; transition: transform var(--fonte-motion-fast) var(--fonte-ease-standard); }
.fonte-locality-fullscreen:focus-visible { outline: 0; background: var(--fonte-web-action); color: var(--fonte-web-white); transform: translateY(-0.125rem); }
@media (min-width: 75.001rem) and (hover: hover) and (pointer: fine) {
.fonte-locality-fullscreen:hover { outline: 0; background: var(--fonte-web-action); color: var(--fonte-web-white); transform: translateY(-0.125rem); }
}
.fonte-locality-fullscreen:focus-visible svg { transform: scale(1.08); }
@media (min-width: 75.001rem) and (hover: hover) and (pointer: fine) {
.fonte-locality-fullscreen:hover svg { transform: scale(1.08); }
}
.fonte-locality-map .leaflet-control-zoom { overflow: hidden; border: 0; border-radius: var(--fonte-token-radius-md); box-shadow: var(--fonte-token-shadow-sm); }
.fonte-locality-map .leaflet-control-zoom a { width: 3rem; height: 3rem; border-color: var(--fonte-web-line); background: var(--fonte-web-cream); color: var(--fonte-web-ink); font-family: var(--fonte-font-public); font-size: 1.75rem; line-height: 2.875rem; }
.fonte-locality-map .leaflet-control-attribution { color: var(--fonte-web-ink-soft); font-family: var(--fonte-font-public); }
@media (max-width: 53.75rem) {
    .fonte-locality__map-wrap { min-height: 18rem; aspect-ratio: 16 / 10; }
}
@media (max-width: 47.5rem) {
    .fonte-locality__map-wrap { min-height: 15rem; aspect-ratio: 4 / 3; border-radius: 1.25rem; }
    .fonte-locality__map { overflow: hidden; border-radius: inherit; }
}
