/**
 * Open Map — front end styles.
 *
 * Glass is chrome over the map, never a wrapper: the panel, the chips, the cards
 * and the cluster bubbles are the only glass surfaces. Type and colour are
 * inherited from the surrounding theme so the map belongs to the site it sits in.
 *
 * Tokens set inline by PHP: --om-height, --om-width, --om-radius, --om-chrome,
 * --om-font, --om-shadow.
 *
 * @package OpenMap
 */

.open-map {
	--om-ink: #1e2a26;
	--om-muted: #5d6b64;
	--om-line: rgba(20, 40, 34, .12);
	--om-surface: #ffffff;
	--om-field: #eef0e8;
	--om-ease: cubic-bezier(.22, .68, .32, 1);
	--om-glass: rgba(255, 255, 255, .78);
	--om-glass-strong: rgba(255, 255, 255, .9);
	--om-panel-width: 22rem;
	--om-pin-drop: 520ms;

	position: relative;
	width: var(--om-width, 100%);
	max-width: 100%;
	color: var(--om-ink);
	font-size: var(--om-font, 15px);
	line-height: 1.45;
	box-sizing: border-box;
}

.open-map *,
.open-map *::before,
.open-map *::after {
	box-sizing: border-box;
}

.open-map__stage {
	position: relative;
	display: grid;
	height: var(--om-height, 600px);
	border-radius: var(--om-radius, 0px);
	overflow: hidden;
	background: var(--om-field);
	box-shadow: var(--om-shadow, none);
	isolation: isolate;
}

.open-map__map {
	position: relative;
	z-index: 1;
	height: 100%;
	width: 100%;
	background: var(--om-field);
}

.open-map__map--nobase {
	background:
		radial-gradient(120% 100% at 20% 0%, #f7f5ef 0%, #e8ece2 55%, #dfe4d8 100%);
}

.open-map__map:focus-visible {
	outline: 2px solid var(--om-chrome);
	outline-offset: -3px;
}

/* Beside layout: the panel takes a fixed column and the map keeps the rest. */
.open-map.om-layout--beside .open-map__stage {
	grid-template-columns: 1fr var(--om-panel-width);
}

.open-map.om-layout--beside.om-side--left .open-map__stage {
	grid-template-columns: var(--om-panel-width) 1fr;
}

.open-map.om-layout--beside.om-side--left .open-map__map {
	order: 2;
}

.open-map.om-layout--beside .open-map__panel {
	order: 1;
	border-radius: 0;
	height: 100%;
}

.open-map.om-layout--beside.om-side--right .open-map__panel {
	order: 2;
}

.open-map.om-layout--overlay .open-map__stage {
	grid-template-columns: 1fr;
}

.open-map.om-layout--overlay .open-map__map {
	grid-area: 1 / 1;
}

.open-map.om-layout--overlay .open-map__panel {
	position: absolute;
	z-index: 3;
	width: min(var(--om-panel-width), calc(100% - 2rem));
	max-height: calc(100% - 2rem);
	grid-area: 1 / 1;
}

.open-map.om-overlay--top-left .open-map__panel {
	top: 1rem;
	left: 1rem;
}

.open-map.om-overlay--top-right .open-map__panel {
	top: 1rem;
	right: 1rem;
}

.open-map.om-overlay--bottom-left .open-map__panel {
	bottom: 1rem;
	left: 1rem;
}

.open-map.om-overlay--bottom-right .open-map__panel {
	bottom: 1rem;
	right: 1rem;
}

/* ---- Panel: the one glass surface, panel + chips + cards ------------- */

.open-map__panel {
	display: flex;
	flex-direction: column;
	border-radius: var(--om-radius, 0px);
	background: var(--om-glass);
	-webkit-backdrop-filter: blur(18px) saturate(1.5);
	backdrop-filter: blur(18px) saturate(1.5);
	border: 1px solid rgba(255, 255, 255, .66);
	box-shadow:
		0 1px 0 rgba(255, 255, 255, .7) inset,
		0 18px 40px -26px rgba(16, 32, 26, .5);
	overflow: hidden;
	transition: opacity 220ms var(--om-ease), transform 260ms var(--om-ease);
}

/* The panel's own rows keep their height and the list takes what is left.
   Without this a long list squeezes the search row and the chips, because
   those controls may shrink to nothing. */
.open-map__panel > .open-map__panel-head,
.open-map__panel > .open-map__filters,
.open-map__list-wrap > .open-map__list-foot {
	flex: 0 0 auto;
}

/* Without backdrop-filter a near-opaque surface keeps contrast readable. */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	.open-map__panel {
		background: var(--om-glass-strong);
	}
}

.open-map__panel-head {
	display: flex;
	gap: .5rem;
	align-items: center;
	padding: .75rem .75rem .5rem;
}

.open-map__search {
	position: relative;
	display: flex;
	align-items: center;
	flex: 1 1 auto;
	min-width: 0;
}

.open-map__search-icon {
	position: absolute;
	left: .625rem;
	width: 1rem;
	height: 1rem;
	color: var(--om-muted);
	pointer-events: none;
}

.open-map__search-input {
	width: 100%;
	margin: 0;
	padding: .5rem 2rem .5rem 2rem;
	font: inherit;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
	appearance: none;
	transition: border-color 160ms var(--om-ease), box-shadow 160ms var(--om-ease);
}

.open-map__search-input::-webkit-search-cancel-button {
	display: none;
}

.open-map__search-input::placeholder {
	color: var(--om-muted);
}

.open-map__search-input:focus {
	outline: none;
	border-color: var(--om-chrome);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--om-chrome) 22%, transparent);
}

.open-map__search-clear {
	position: absolute;
	right: .5rem;
	display: grid;
	place-items: center;
	width: 1.5rem;
	height: 1.5rem;
	padding: 0;
	font-size: 0;
	color: var(--om-muted);
	background: transparent;
	border: 0;
	border-radius: 50%;
	cursor: pointer;
	transition: background-color 150ms var(--om-ease), color 150ms var(--om-ease);
}

.open-map__search-clear::before,
.open-map__search-clear::after {
	content: "";
	position: absolute;
	width: .75rem;
	height: 1.4px;
	border-radius: 2px;
	background: currentColor;
}

.open-map__search-clear::before {
	transform: rotate(45deg);
}

.open-map__search-clear::after {
	transform: rotate(-45deg);
}

.open-map__search-clear:hover {
	background: rgba(20, 40, 34, .08);
	color: var(--om-ink);
}

.open-map__list-toggle {
	display: none;
	flex: 0 0 auto;
	padding: .45rem .7rem;
	font: inherit;
	font-weight: 600;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
	cursor: pointer;
}

.open-map__filters {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	padding: .25rem .75rem .625rem;
}

.open-map__chip {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	flex: 0 0 auto;
	padding: .3rem .625rem;
	font: inherit;
	font-size: .82em;
	font-weight: 600;
	white-space: nowrap;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
	cursor: pointer;
	transition: background-color 160ms var(--om-ease), border-color 160ms var(--om-ease), color 160ms var(--om-ease), transform 160ms var(--om-ease);
}

.open-map__chip:hover {
	transform: translateY(-1px);
	border-color: color-mix(in srgb, var(--om-chrome) 45%, transparent);
}

/* Active chip is the darkest surface on the map, so text goes pure white. */
.open-map__chip.is-active {
	color: #fff;
	background: var(--om-chrome);
	border-color: var(--om-chrome);
}

.open-map__chip-dot {
	width: .6rem;
	height: .6rem;
	border-radius: 50%;
	background: var(--om-chip, var(--om-chrome));
	box-shadow: 0 0 0 1.5px rgba(255, 255, 255, .85);
}

.open-map__chip-count {
	opacity: .62;
	font-variant-numeric: tabular-nums;
}

.open-map__chip.is-active .open-map__chip-count {
	opacity: .85;
}

.open-map__list-wrap {
	display: flex;
	flex-direction: column;
	min-height: 0;
	flex: 1 1 auto;
}

.open-map__list {
	flex: 1 1 auto;
	min-height: 0;
	margin: 0;
	padding: 0 0 .25rem;
	list-style: none;
	overflow-y: auto;
	overscroll-behavior: contain;
	scrollbar-width: thin;
	scrollbar-color: rgba(20, 40, 34, .28) transparent;
}

.open-map__item {
	position: relative;
	display: flex;
	align-items: center;
	gap: .5rem;
	padding: 0 .75rem;
	border-top: 1px solid var(--om-line);
	transition: background-color 150ms var(--om-ease);
}

.open-map__item.is-hidden {
	display: none;
}

.open-map__item.is-active {
	background: color-mix(in srgb, var(--om-chrome) 8%, transparent);
}

.open-map__item.is-active::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 3px;
	background: var(--om-dot, var(--om-chrome));
}

.open-map__item:hover {
	background: rgba(20, 40, 34, .045);
}

.open-map__item-main {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	flex: 1 1 auto;
	min-width: 0;
	padding: .625rem 0;
	font: inherit;
	text-align: left;
	color: inherit;
	background: transparent;
	border: 0;
	cursor: pointer;
}

.open-map__item-main:focus-visible {
	outline: 2px solid var(--om-chrome);
	outline-offset: -2px;
	border-radius: 6px;
}

.open-map__item-dot {
	flex: 0 0 auto;
	width: .625rem;
	height: .625rem;
	margin-top: .35rem;
	border-radius: 50%;
	background: var(--om-dot, var(--om-chrome));
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--om-dot, var(--om-chrome)) 22%, transparent);
}

.open-map__item-text {
	display: block;
	min-width: 0;
}

.open-map__item-title {
	display: block;
	font-weight: 600;
	line-height: 1.3;
}

.open-map__item-address {
	display: block;
	margin-top: .15rem;
	font-size: .86em;
	color: var(--om-muted);
}

.open-map__item-actions {
	display: flex;
	flex: 0 0 auto;
	gap: .25rem;
}

.open-map__item-action {
	padding: .2rem .45rem;
	font-size: .78em;
	font-weight: 600;
	text-decoration: none;
	color: var(--om-muted);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
	transition: color 150ms var(--om-ease), border-color 150ms var(--om-ease);
}

.open-map__item-action:hover,
.open-map__item-action:focus-visible {
	color: var(--om-chrome);
	border-color: currentColor;
}

.open-map__list-foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: .5rem;
	padding: .5rem .75rem .75rem;
	border-top: 1px solid var(--om-line);
	/* A frosted strip, so rows scrolling under it fade out instead of
	   showing through. */
	background: rgba(255, 255, 255, .92);
	backdrop-filter: blur(10px) saturate(115%);
	-webkit-backdrop-filter: blur(10px) saturate(115%);
}

@supports not (backdrop-filter: blur(1px)) {
	.open-map__list-foot {
		background: var(--om-surface);
	}
}

.open-map__count {
	margin: 0;
	font-size: .82em;
	color: var(--om-muted);
	font-variant-numeric: tabular-nums;
}

.open-map__hint {
	margin: 0;
	padding: 1.25rem .75rem;
	font-size: .9em;
	text-align: center;
	color: var(--om-muted);
}

.open-map__more,
.open-map__page {
	font: inherit;
	font-size: .82em;
	font-weight: 600;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
	cursor: pointer;
	transition: border-color 150ms var(--om-ease), color 150ms var(--om-ease), transform 150ms var(--om-ease);
}

.open-map__more {
	padding: .35rem .75rem;
}

.open-map__pager {
	/* Long lists read better as two rows: the count on the first, the pager on
	   the next. */
	flex: 1 0 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .35rem;
}

.open-map__page {
	padding: .3rem .6rem;
}

.open-map__more:hover,
.open-map__page:hover:not(:disabled) {
	transform: translateY(-1px);
	color: var(--om-chrome);
	border-color: currentColor;
}

.open-map__page:disabled {
	opacity: .4;
	cursor: default;
}

.open-map__page-info {
	font-size: .8em;
	color: var(--om-muted);
	font-variant-numeric: tabular-nums;
}

.open-map__note {
	margin: 0;
	padding: 1.5rem .75rem;
	font-size: .9em;
	text-align: center;
	color: var(--om-muted);
}

/* Announced to screen readers only. */
.open-map__status {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ---- Pins, clusters, tooltips, popups ------------------------------ */

.open-map__pin {
	background: transparent;
	border: 0;
	filter: drop-shadow(0 6px 7px rgba(14, 28, 22, .32));
	transition: filter 200ms var(--om-ease);
}

.open-map__pin svg {
	display: block;
	transform-origin: 50% 100%;
	transition: transform 200ms var(--om-ease);
}

/* Leaflet positions markers with an inline transform, so the lift lives on the SVG. */
.open-map__pin.is-highlight svg {
	transform: translateY(-3px) scale(1.14);
}

.open-map__pin.is-highlight {
	filter: drop-shadow(0 12px 14px rgba(14, 28, 22, .42));
}

.open-map__pin.is-highlight path {
	stroke: rgba(255, 255, 255, .95);
	stroke-width: 2.2;
}

.open-map__cluster {
	background: transparent;
	border: 0;
}

.open-map__cluster-bubble {
	display: grid;
	place-items: center;
	border-radius: 50%;
	font-size: .82em;
	font-weight: 700;
	line-height: 1;
	color: #fff;
	text-shadow: 0 1px 2px rgba(0, 0, 0, .35);
	background: color-mix(in srgb, var(--om-cluster, var(--om-chrome)) 92%, transparent);
	border: 2px solid rgba(255, 255, 255, .86);
	-webkit-backdrop-filter: blur(6px) saturate(1.3);
	backdrop-filter: blur(6px) saturate(1.3);
	box-shadow:
		0 12px 22px -14px rgba(14, 28, 22, .7),
		0 0 0 7px color-mix(in srgb, var(--om-cluster, var(--om-chrome)) 15%, transparent);
	transition: transform 200ms var(--om-ease);
	cursor: pointer;
}

.open-map__cluster-bubble:hover {
	transform: scale(1.06);
}

/* The card is shared by the hover tooltip and the click popup. */
.open-map__card-title {
	margin: 0;
	font-weight: 700;
	line-height: 1.3;
	color: var(--om-ink);
}

.open-map__card-address {
	margin: .08rem 0 0;
	font-size: .86em;
	line-height: 1.4;
	color: var(--om-muted);
}

.open-map__card-actions {
	display: flex;
	flex-wrap: wrap;
	gap: .35rem;
	margin-top: .5rem;
}

.open-map__card-action {
	padding: .2rem .5rem;
	font-size: .78em;
	font-weight: 600;
	text-decoration: none;
	color: var(--om-chrome);
	background: color-mix(in srgb, var(--om-chrome) 8%, transparent);
	border: 1px solid color-mix(in srgb, var(--om-chrome) 32%, transparent);
	border-radius: 999px;
	transition: background-color 150ms var(--om-ease), color 150ms var(--om-ease);
}

.open-map__card-action:hover,
.open-map__card-action:focus-visible {
	color: #fff;
	background: var(--om-chrome);
}

/* ---- Leaflet chrome ------------------------------------------------- */

.open-map .leaflet-container {
	background: var(--om-field);
	font: inherit;
}

.open-map .leaflet-tooltip.open-map__tooltip {
	width: max-content;
	max-width: min(16rem, 70vw);
	padding: .55rem .7rem;
	border: 1px solid rgba(255, 255, 255, .7);
	border-radius: 14px;
	color: var(--om-ink);
	background: var(--om-glass-strong);
	-webkit-backdrop-filter: blur(14px) saturate(1.5);
	backdrop-filter: blur(14px) saturate(1.5);
	box-shadow: 0 20px 36px -24px rgba(14, 28, 22, .85);
	/* Leaflet tooltips are nowrap by default, which lets long titles run
	   straight out of the card. */
	white-space: normal;
	/* `anywhere` would let this absolutely-positioned box shrink to a single
	   character, so it wraps only when a word genuinely does not fit. */
	overflow-wrap: break-word;
	word-break: normal;
}

.open-map .leaflet-tooltip.open-map__tooltip .open-map__card {
	max-width: 100%;
}

/* Arrow, so the card points at its pin. */
.open-map .leaflet-tooltip.open-map__tooltip.leaflet-tooltip-top::before {
	border-top-color: rgba(255, 255, 255, .94);
}

.open-map .leaflet-tooltip.open-map__tooltip.leaflet-tooltip-bottom::before {
	border-bottom-color: rgba(255, 255, 255, .94);
}

.open-map .leaflet-tooltip.open-map__tooltip.leaflet-tooltip-left::before {
	border-left-color: rgba(255, 255, 255, .94);
}

.open-map .leaflet-tooltip.open-map__tooltip.leaflet-tooltip-right::before {
	border-right-color: rgba(255, 255, 255, .94);
}

.open-map .leaflet-popup.open-map__popup .leaflet-popup-content-wrapper {
	border: 1px solid rgba(255, 255, 255, .7);
	border-radius: 16px;
	color: var(--om-ink);
	background: var(--om-glass-strong);
	-webkit-backdrop-filter: blur(16px) saturate(1.5);
	backdrop-filter: blur(16px) saturate(1.5);
	box-shadow: 0 26px 50px -30px rgba(14, 28, 22, .9);
}

.open-map .leaflet-popup.open-map__popup .leaflet-popup-content {
	margin: .7rem .85rem;
	font: inherit;
	line-height: 1.45;
}

.open-map .leaflet-popup.open-map__popup .leaflet-popup-tip {
	background: rgba(255, 255, 255, .92);
	box-shadow: none;
}

.open-map .leaflet-popup.open-map__popup a.leaflet-popup-close-button {
	top: .45rem;
	right: .45rem;
	width: 1.4rem;
	height: 1.4rem;
	padding: 0;
	font: 700 1rem/1.4 system-ui, sans-serif;
	color: var(--om-muted);
	border-radius: 50%;
}

.open-map .leaflet-popup.open-map__popup a.leaflet-popup-close-button:hover {
	color: var(--om-ink);
	background: rgba(20, 40, 34, .08);
}

.open-map .leaflet-control-attribution {
	padding: 0 .4rem;
	font-size: 10px;
	color: var(--om-muted);
	background: rgba(255, 255, 255, .8);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}

.open-map .leaflet-control-attribution a {
	color: var(--om-chrome);
}

.open-map__control {
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	color: var(--om-ink);
	background: var(--om-glass-strong);
	-webkit-backdrop-filter: blur(12px) saturate(1.4);
	backdrop-filter: blur(12px) saturate(1.4);
	border: 1px solid rgba(255, 255, 255, .72);
	border-radius: 12px;
	box-shadow: 0 10px 20px -12px rgba(14, 28, 22, .75);
	cursor: pointer;
	transition: transform 160ms var(--om-ease), color 160ms var(--om-ease), border-color 160ms var(--om-ease);
}

.open-map__control:hover,
.open-map__control:focus-visible {
	color: var(--om-chrome);
	transform: translateY(-1px);
	border-color: color-mix(in srgb, var(--om-chrome) 40%, transparent);
}

.open-map__control-icon {
	width: 1.05rem;
	height: 1.05rem;
	background: currentColor;
}

.open-map__control-icon--locate {
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 3v3M12 18v3M3 12h3M18 12h3'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 3v3M12 18v3M3 12h3M18 12h3'/%3E%3C/svg%3E") center / contain no-repeat;
}

.open-map__control-icon--expand {
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5'/%3E%3C/svg%3E") center / contain no-repeat;
}

.open-map .leaflet-control {
	margin: .625rem;
}

/* ---- Motion: a few orchestrated moments, gated on JS having run ---- */

@keyframes open-map-rise {
	from {
		opacity: 0;
		transform: translateY(10px);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

@keyframes open-map-drop {
	0% {
		opacity: 0;
		transform: translateY(-16px) scale(.82);
	}

	60% {
		transform: translateY(2px) scale(1.04);
	}

	100% {
		opacity: 1;
		transform: none;
	}
}

@keyframes open-map-pop {
	from {
		opacity: 0;
		transform: scale(.6);
	}

	to {
		opacity: 1;
		transform: scale(1);
	}
}

@keyframes open-map-sheen {
	from {
		transform: translateX(-60%);
	}

	to {
		transform: translateX(160%);
	}
}

.open-map.is-ready .open-map__pin svg {
	animation: open-map-drop 420ms var(--om-ease) backwards;
}

.open-map.is-ready .open-map__cluster-bubble {
	animation: open-map-pop 240ms var(--om-ease) backwards;
}

.open-map.is-ready .open-map__panel {
	animation: open-map-rise 360ms var(--om-ease) backwards;
}

/* Loading sheen: the only motion before data arrives. */
.open-map.is-loading .open-map__stage::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 5;
	pointer-events: none;
	background: linear-gradient(100deg, transparent 30%, rgba(255, 255, 255, .5) 50%, transparent 70%);
	animation: open-map-sheen 1.6s linear infinite;
}

.open-map.is-failed .open-map__stage::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 5;
	pointer-events: none;
	background: var(--om-field);
	opacity: .85;
}

@media (prefers-reduced-motion: reduce) {
	.open-map *,
	.open-map *::before,
	.open-map *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}

	.open-map.is-loading .open-map__stage::after {
		animation: none;
		display: none;
	}

	.open-map__pin.is-highlight svg,
	.open-map__cluster-bubble:hover {
		transform: none;
	}
}

/* ---- Responsive: the panel stacks, then becomes a sheet ------------- */

@media (max-width: 860px) {
	.open-map.om-layout--beside .open-map__stage {
		grid-template-columns: 1fr;
		grid-template-rows: auto auto;
		height: auto;
	}

	.open-map.om-layout--beside .open-map__map {
		order: 1;
		height: var(--om-height, 600px);
	}

	.open-map.om-layout--beside .open-map__panel {
		order: 2;
		max-height: 60vh;
		border-radius: 0 0 var(--om-radius, 0px) var(--om-radius, 0px);
	}
}

@media (max-width: 620px) {
	.open-map__list-toggle {
		display: inline-flex;
		align-items: center;
	}

	.open-map.om-layout--overlay .open-map__stage {
		/* Honour the height that was asked for, with only enough of a floor to
		   keep the panel usable on a phone. */
		height: clamp(240px, var(--om-height, 600px), 88vh);
	}

	.open-map.om-layout--overlay .open-map__panel {
		left: .625rem;
		right: .625rem;
		top: auto;
		bottom: .625rem;
		width: auto;
		max-height: calc(100% - 1.25rem);
	}

	.open-map.om-layout--overlay .open-map__list-wrap {
		display: none;
	}

	.open-map.om-layout--overlay.is-list-open .open-map__list-wrap {
		display: flex;
	}

	.open-map.om-layout--overlay .open-map__list {
		max-height: 46vh;
	}

	.open-map__item {
		padding: 0 .625rem;
	}

	.open-map__panel-head {
		padding: .625rem .625rem .375rem;
	}

	.open-map__filters {
		padding: .25rem .625rem .5rem;
	}

	.open-map__list-foot {
		padding: .5rem .625rem .625rem;
	}

	.open-map__filters {
		flex-wrap: wrap;
		overflow-x: visible;
	}
}

/* ---- Theme-proof controls ------------------------------------------- */

/* Themes and builders style bare button/input/anchor elements with more
   specificity than a single class — an Elementor kit uses
   `.elementor-kit-6 button`, which beats `.open-map__chip`. These rules
   re-assert the map's own control styling at `.open-map .x` specificity, so
   the map looks the same inside any theme. Keep in step with the base rules. */

.open-map .open-map__search-input,
.open-map .open-map__search-clear,
.open-map .open-map__list-toggle,
.open-map .open-map__chip,
.open-map .open-map__more,
.open-map .open-map__page,
.open-map .open-map__item-main,
.open-map .open-map__item-action,
.open-map .open-map__card-action,
.open-map .open-map__control {
	font-family: inherit;
	text-transform: none;
	letter-spacing: normal;
	text-decoration: none;
	text-shadow: none;
	box-shadow: none;
	min-height: 0;
	min-width: 0;
	max-width: none;
	line-height: 1.4;
	border-style: solid;
	appearance: none;
	-webkit-appearance: none;
}

/* A row is text on a surface, never a button. */
.open-map .open-map__item-main {
	padding: .625rem 0;
	font-size: inherit;
	font-weight: inherit;
	color: inherit;
	text-align: left;
	background: transparent;
	border: 0;
	border-radius: 0;
}

.open-map .open-map__item-title,
.open-map .open-map__item-address {
	white-space: normal;
}

.open-map .open-map__search-input {
	padding: .5rem 2rem;
	font-size: inherit;
	font-weight: 400;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
}

.open-map .open-map__search-clear {
	width: 1.5rem;
	height: 1.5rem;
	padding: 0;
	color: var(--om-muted);
	background: transparent;
	border: 0;
	border-radius: 50%;
}

.open-map .open-map__list-toggle,
.open-map .open-map__more,
.open-map .open-map__page {
	font-size: .82em;
	font-weight: 600;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
}

.open-map .open-map__list-toggle {
	padding: .45rem .7rem;
}

.open-map .open-map__more {
	padding: .35rem .75rem;
}

.open-map .open-map__page {
	padding: .3rem .6rem;
}

.open-map .open-map__chip {
	padding: .3rem .625rem;
	font-size: .82em;
	font-weight: 600;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
}

.open-map .open-map__chip.is-active {
	color: #fff;
	background: var(--om-chrome);
	border-color: var(--om-chrome);
}

.open-map .open-map__item-action,
.open-map .open-map__card-action {
	padding: .2rem .45rem;
	font-size: .78em;
	font-weight: 600;
	border-radius: 999px;
}

.open-map .open-map__item-action {
	color: var(--om-muted);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
}

.open-map .open-map__card-action {
	padding: .2rem .5rem;
	color: var(--om-chrome);
	background: color-mix(in srgb, var(--om-chrome) 8%, transparent);
	border: 1px solid color-mix(in srgb, var(--om-chrome) 32%, transparent);
}

.open-map .open-map__control {
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	color: var(--om-ink);
	background: var(--om-glass-strong);
	border: 1px solid rgba(255, 255, 255, .72);
	border-radius: 12px;
}

.open-map .open-map__status {
	position: absolute;
	clip-path: inset(50%);
}

/* Whatever the markup hides stays hidden, whatever display a theme sets. */
.open-map [hidden] {
	display: none !important;
}

/* Elementor's kit targets `input:not([type="button"]):not([type="submit"])`,
   which counts (0,4,1) — the field needs a fourth class to win outright. */
.open-map .open-map__panel .open-map__search .open-map__search-input {
	width: 100%;
	height: auto;
	min-height: 2.75rem;
	padding: .5rem 2rem;
	font-family: inherit;
	font-size: inherit;
	font-weight: 400;
	line-height: 1.4;
	text-transform: none;
	letter-spacing: normal;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
	box-shadow: none;
	appearance: none;
	-webkit-appearance: none;
}

.open-map .open-map__panel .open-map__search .open-map__search-input::placeholder {
	color: var(--om-muted);
}

.open-map .open-map__panel .open-map__search .open-map__search-input:focus {
	border-color: var(--om-chrome);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--om-chrome) 22%, transparent);
}

.open-map .open-map__panel .open-map__search .open-map__search-input::-webkit-search-cancel-button,
.open-map .open-map__panel .open-map__search .open-map__search-input::-webkit-search-decoration {
	appearance: none;
	-webkit-appearance: none;
	display: none;
}

.open-map .open-map__panel .open-map__search-clear {
	font-size: 0;
}

/* ---- Theme-proof: hover, focus and the controls width --------------- */

/* The Controls width setting, in px, drives the panel. */
.open-map {
	--om-panel-width: var(--om-controls, 352px);
}

/* Elementor's kit makes buttons blocks, which drops the flex gap and
   collapses the category dot: put the chip back together. */
.open-map .open-map__filters .open-map__chip {
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	max-width: 100%;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
	text-transform: none;
	letter-spacing: normal;
}

.open-map .open-map__filters .open-map__chip:hover {
	color: var(--om-ink);
	background: color-mix(in srgb, var(--om-chrome) 8%, var(--om-surface));
	border-color: color-mix(in srgb, var(--om-chrome) 45%, transparent);
}

.open-map .open-map__filters .open-map__chip.is-active,
.open-map .open-map__filters .open-map__chip.is-active:hover {
	color: #fff;
	background: var(--om-chrome);
	border-color: var(--om-chrome);
}

.open-map .open-map__filters .open-map__chip .open-map__chip-count {
	margin-left: .1rem;
	color: inherit;
	background: transparent;
}

/* Rows: the theme's accent must not reach the title on hover. */
.open-map .open-map__panel .open-map__item-main,
.open-map .open-map__panel .open-map__item-main:hover,
.open-map .open-map__panel .open-map__item-main:focus {
	color: inherit;
	background: transparent;
	text-decoration: none;
}

.open-map .open-map__panel .open-map__item:hover {
	background: rgba(20, 40, 34, .05);
}

.open-map .open-map__panel .open-map__item.is-active,
.open-map .open-map__panel .open-map__item.is-active:hover {
	background: color-mix(in srgb, var(--om-chrome) 8%, transparent);
}

.open-map .open-map__panel .open-map__item-action {
	color: var(--om-muted);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	text-decoration: none;
}

.open-map .open-map__panel .open-map__item-action:hover,
.open-map .open-map__panel .open-map__item-action:focus-visible {
	color: var(--om-chrome);
	background: var(--om-surface);
	border-color: var(--om-chrome);
}

/* Buttons again: the kit turns them into blocks, which would collapse the
   row's flex line and leave the category dot with no size at all. */
.open-map .open-map__panel .open-map__item-main {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
}

.open-map .open-map__panel .open-map__item-dot {
	display: block;
	flex: 0 0 auto;
	width: .625rem;
	height: .625rem;
}

.open-map .open-map__panel .open-map__item-text {
	display: block;
	min-width: 0;
}

/* The list toggle shows at every width, so a desktop can fold the list too. */
.open-map .open-map__panel .open-map__panel-head .open-map__list-toggle {
	display: inline-flex;
	align-items: center;
	color: var(--om-ink);
	background: var(--om-surface);
	border: 1px solid var(--om-line);
	border-radius: 999px;
}

.open-map .open-map__panel .open-map__panel-head .open-map__list-toggle:hover,
.open-map .open-map__panel .open-map__panel-head .open-map__list-toggle:focus-visible {
	color: var(--om-chrome);
	background: var(--om-surface);
	border-color: var(--om-chrome);
}

.open-map .open-map__panel .open-map__list-foot .open-map__more,
.open-map .open-map__panel .open-map__list-foot .open-map__page {
	color: var(--om-ink);
}

.open-map .open-map__panel .open-map__list-foot .open-map__more:hover,
.open-map .open-map__panel .open-map__list-foot .open-map__page:hover:not(:disabled),
.open-map .open-map__panel .open-map__list-foot .open-map__page:focus-visible {
	color: var(--om-chrome);
	background: var(--om-surface);
	border-color: var(--om-chrome);
}

/* Folded away: only with JS running, only when the toggle says so. */
.open-map.is-ready:not(.is-list-open) .open-map__list-wrap {
	display: none;
}

/* Search: the field stays a pill while focused, the clear button keeps its
   distance from the edge, and neither borrows the theme's accent. */
.open-map .open-map__panel .open-map__search .open-map__search-input:focus {
	border-radius: 999px;
	padding-right: 2.25rem;
}

.open-map .open-map__panel .open-map__search .open-map__search-clear {
	right: .6rem;
	color: var(--om-muted);
	background: transparent;
}

.open-map .open-map__panel .open-map__search .open-map__search-clear:hover,
.open-map .open-map__panel .open-map__search .open-map__search-clear:focus-visible {
	color: var(--om-ink);
	background: rgba(20, 40, 34, .1);
}

/* Map controls and card actions, same accent throughout. */
.open-map .open-map__control {
	display: grid;
	place-items: center;
	color: var(--om-ink);
	background: var(--om-glass-strong);
	border: 1px solid rgba(255, 255, 255, .72);
}

.open-map .open-map__control:hover,
.open-map .open-map__control:focus-visible {
	color: var(--om-chrome);
	background: var(--om-glass-strong);
	border-color: color-mix(in srgb, var(--om-chrome) 40%, transparent);
}

.open-map .open-map__card .open-map__card-action:hover,
.open-map .open-map__card .open-map__card-action:focus-visible {
	color: #fff;
	background: var(--om-chrome);
	border-color: var(--om-chrome);
}

/* The card's two lines are paragraphs, and the theme gives every paragraph a
   bottom margin — which lands as a gap between the title and the address. */
.open-map .open-map__card .open-map__card-title,
.open-map .open-map__card .open-map__card-address {
	margin: 0;
	margin-block-start: 0;
	margin-block-end: 0;
	padding: 0;
}

.open-map .open-map__card .open-map__card-title {
	line-height: 1.25;
}

.open-map .open-map__card .open-map__card-address {
	margin-top: .1rem;
}

/* ---- Wheel-zoom lock ---- */

.open-map .open-map__control.is-active {
	color: var(--om-chrome);
	border-color: color-mix(in srgb, var(--om-chrome) 45%, transparent);
	background: color-mix(in srgb, var(--om-chrome) 12%, var(--om-glass-strong));
}

.open-map__control-icon--zoom-lock {
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.5 11V8a4.5 4.5 0 0 1 9 0v3'/%3E%3Crect x='5' y='11' width='14' height='9' rx='2.5'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.5 11V8a4.5 4.5 0 0 1 9 0v3'/%3E%3Crect x='5' y='11' width='14' height='9' rx='2.5'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ---- Feedback over the map ---- */

.open-map__toast {
	position: absolute;
	left: 50%;
	top: 1rem;
	z-index: 600;
	max-width: min(22rem, calc(100% - 2rem));
	margin: 0;
	padding: .5rem .9rem;
	font-size: .82em;
	line-height: 1.35;
	text-align: center;
	color: var(--om-ink);
	background: var(--om-glass-strong);
	-webkit-backdrop-filter: blur(12px) saturate(1.4);
	backdrop-filter: blur(12px) saturate(1.4);
	border: 1px solid rgba(255, 255, 255, .72);
	border-radius: 999px;
	box-shadow: 0 16px 30px -18px rgba(14, 28, 22, .8);
	transform: translate(-50%, -.5rem);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 220ms var(--om-ease), transform 220ms var(--om-ease), visibility 220ms;
}

.open-map__toast.is-visible {
	opacity: 1;
	visibility: visible;
	transform: translate(-50%, 0);
}

/* ---- Fullscreen, and the in-place fallback ---- */

.open-map.is-expanded {
	position: fixed;
	inset: 0;
	z-index: 99999;
	width: 100%;
	max-width: none;
	height: 100vh;
	height: 100dvh;
	margin: 0;
}

.open-map.is-expanded .open-map__stage {
	height: 100%;
	border-radius: 0;
}

body:has(.open-map.is-expanded) {
	overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
	.open-map__toast {
		transition: none;
	}
}
