/* Novixa Addons - Interactive Location Map. Namespaced under .novixa-interactive-location-map */
.novixa-interactive-location-map {
	--nilm-h: 420px;
	--nilm-gap: 20px;
	--nilm-card-gap: 14px;
	--nilm-list-w: 34%;
	--nilm-cols: 3;
	--nilm-pin: 34px;
	--nilm-pin-c: #e72f79;
	--nilm-pin-glyph: #fff;
	--nilm-cluster: #e72f79;
	--nilm-popup-bg: #fff;
	box-sizing: border-box;
	max-width: 100%;
	color: #333;
}
.novixa-interactive-location-map *,
.novixa-interactive-location-map *::before,
.novixa-interactive-location-map *::after { box-sizing: border-box; }
.novixa-interactive-location-map [hidden] { display: none !important; }

/* ------------------------------------------------------------- toolbar */
.novixa-interactive-location-map__toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px;
}
.novixa-interactive-location-map__search { position: relative; flex: 1 1 240px; min-width: 0; }
.novixa-interactive-location-map__search-input {
	width: 100%;
	min-height: 44px;
	padding: 10px 40px 10px 14px;
	border: 1px solid #d5d5d5;
	border-radius: 8px;
	background: #fff;
	font: inherit;
	color: inherit;
	-webkit-appearance: none;
	appearance: none;
}
.novixa-interactive-location-map__search-input::-webkit-search-cancel-button { display: none; }
.novixa-interactive-location-map__clear {
	position: absolute;
	top: 50%;
	right: 6px;
	width: 32px;
	height: 32px;
	margin-top: -16px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: inherit;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
}
.novixa-interactive-location-map__filters { display: flex; flex-wrap: wrap; gap: 8px; }
.novixa-interactive-location-map__filter {
	min-height: 40px;
	padding: 8px 16px;
	border: 1px solid #d5d5d5;
	border-radius: 999px;
	background: #fff;
	color: #333;
	font: inherit;
	cursor: pointer;
	transition: background-color .2s, color .2s, border-color .2s;
}
.novixa-interactive-location-map__filter.is-active { background: #111; border-color: #111; color: #fff; }
select.novixa-interactive-location-map__filter { border-radius: 8px; padding-right: 28px; }
.novixa-interactive-location-map__count { flex-basis: 100%; margin: 0; font-size: .9em; opacity: .75; }
.novixa-interactive-location-map__search-input:focus-visible,
.novixa-interactive-location-map__filter:focus-visible,
.novixa-interactive-location-map__clear:focus-visible,
.novixa-interactive-location-map__select:focus-visible,
.novixa-interactive-location-map__btn:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }

.novixa-interactive-location-map__notice {
	margin: 0 0 12px;
	padding: 8px 12px;
	border-left: 3px solid #f59e0b;
	background: #fff8e6;
	font-size: 13px;
}

/* -------------------------------------------------------------- layout */
.novixa-interactive-location-map__layout { display: flex; gap: var(--nilm-gap); align-items: flex-start; }
.novixa-interactive-location-map__map-wrap { position: relative; flex: 1 1 0; min-width: 0; }
.novixa-interactive-location-map__list { position: relative; flex: 0 0 var(--nilm-list-w); width: var(--nilm-list-w); min-width: 0; max-height: var(--nilm-h); overflow-y: auto; overscroll-behavior: contain; }
.novixa-interactive-location-map--layout-list-left .novixa-interactive-location-map__list { order: -1; }
.novixa-interactive-location-map--layout-map .novixa-interactive-location-map__layout > .novixa-interactive-location-map__empty { margin: 12px 0 0; }

.novixa-interactive-location-map--layout-map-above .novixa-interactive-location-map__layout,
.novixa-interactive-location-map--layout-map-below .novixa-interactive-location-map__layout { flex-direction: column; align-items: stretch; }
.novixa-interactive-location-map--layout-map-below .novixa-interactive-location-map__layout { flex-direction: column-reverse; }
.novixa-interactive-location-map--layout-map-above .novixa-interactive-location-map__list,
.novixa-interactive-location-map--layout-map-below .novixa-interactive-location-map__list { flex: none; width: 100%; max-height: none; overflow: visible; }
.novixa-interactive-location-map--layout-map-above .novixa-interactive-location-map__map-wrap,
.novixa-interactive-location-map--layout-map-below .novixa-interactive-location-map__map-wrap { flex: none; width: 100%; }
.novixa-interactive-location-map--layout-map-above .novixa-interactive-location-map__cards,
.novixa-interactive-location-map--layout-map-below .novixa-interactive-location-map__cards { display: grid; grid-template-columns: repeat(var(--nilm-cols), minmax(0, 1fr)); }

.novixa-interactive-location-map__map {
	position: relative;
	z-index: 0;
	width: 100%;
	height: var(--nilm-h);
	min-height: 200px;
	overflow: hidden;
	isolation: isolate;
	border-radius: 12px;
	background: #e9eaec;
}
.novixa-interactive-location-map__fallback { margin: 0; padding: 24px; border-radius: 12px; background: #f4f4f5; text-align: center; }

@media (max-width: 767px) {
	.novixa-interactive-location-map__layout { flex-direction: column; align-items: stretch; }
	.novixa-interactive-location-map--layout-list-left .novixa-interactive-location-map__list { order: 0; }
	.novixa-interactive-location-map__list { flex: none; width: 100%; max-height: none; overflow: visible; }
	.novixa-interactive-location-map__map-wrap { flex: none; width: 100%; }
}

/* --------------------------------------------------------------- cards */
.novixa-interactive-location-map__cards { display: flex; flex-direction: column; gap: var(--nilm-card-gap); margin: 0; padding: 0; list-style: none; }
.novixa-interactive-location-map__card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 6px;
	margin: 0;
	padding: 16px;
	border: 1px solid #e5e7eb;
	border-radius: 12px;
	background: #fff;
	cursor: pointer;
	transition: border-color .2s, box-shadow .2s, background-color .2s;
}
.novixa-interactive-location-map__card:hover { border-color: #cfd3d8; }
.novixa-interactive-location-map__card.is-active { border-color: var(--nilm-pin-active, var(--nilm-pin-c)); box-shadow: 0 0 0 1px var(--nilm-pin-active, var(--nilm-pin-c)); }
.novixa-interactive-location-map__card-title { margin: 0; font-size: 1.05em; line-height: 1.3; }
.novixa-interactive-location-map__select { display: inline; margin: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: inherit; cursor: pointer; }
.novixa-interactive-location-map__img { display: block; width: 100%; height: 150px; margin-bottom: 4px; border-radius: 8px; object-fit: cover; }
.novixa-interactive-location-map__address,
.novixa-interactive-location-map__desc,
.novixa-interactive-location-map__meta { margin: 0; font-size: .92em; line-height: 1.5; }
.novixa-interactive-location-map__desc p { margin: 0 0 .5em; }
.novixa-interactive-location-map__desc p:last-child { margin-bottom: 0; }
.novixa-interactive-location-map__label { font-weight: 600; margin-right: 4px; }
.novixa-interactive-location-map__meta a { color: inherit; text-decoration: underline; }
.novixa-interactive-location-map__empty { margin: 0; padding: 16px; text-align: center; opacity: .8; }

.novixa-interactive-location-map__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.novixa-interactive-location-map .novixa-interactive-location-map__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 40px;
	padding: 8px 14px;
	border: 1px solid #111;
	border-radius: 8px;
	background: #111;
	color: #fff;
	font-size: .9em;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	transition: background-color .2s, color .2s, border-color .2s;
}
.novixa-interactive-location-map .novixa-interactive-location-map__btn:hover { background: #fff; color: #111; }

/* -------------------------------------------------------------- popup */
.novixa-interactive-location-map__popup {
	width: var(--nilm-popup-w, 280px);
	min-width: 180px;
	max-width: calc(100vw - 90px);
	padding: 14px;
	border-radius: 12px;
	background: var(--nilm-popup-bg);
	color: #333;
	box-shadow: 0 3px 14px rgba(0, 0, 0, .25);
	text-align: left;
}
.novixa-interactive-location-map__popup > * + * { margin-top: 6px; }
.novixa-interactive-location-map__popup .novixa-interactive-location-map__img { height: 110px; }
.novixa-interactive-location-map__popup .novixa-interactive-location-map__btn { min-height: 34px; padding: 6px 12px; }
.novixa-interactive-location-map__popup .novixa-interactive-location-map__actions { margin-top: 8px; }
.novixa-interactive-location-map__popup .novixa-interactive-location-map__title { margin: 0; font-size: 1.05em; line-height: 1.3; }
.novixa-interactive-location-map-leaflet-popup .leaflet-popup-content-wrapper { padding: 0; border-radius: 0; background: transparent; box-shadow: none; }
.novixa-interactive-location-map-leaflet-popup .leaflet-popup-content { margin: 0; font: inherit; }
.novixa-interactive-location-map-leaflet-popup .leaflet-popup-content p { margin: 0; }
.novixa-interactive-location-map-leaflet-popup .leaflet-popup-tip { background: var(--nilm-popup-bg); }
.novixa-interactive-location-map .gm-style .gm-style-iw-c { padding: 0 !important; background: transparent; box-shadow: none; }
.novixa-interactive-location-map .gm-style .gm-style-iw-d { overflow: auto !important; max-height: none !important; }
.novixa-interactive-location-map .leaflet-container { font: inherit; }

/* --------------------------------------------------------------- pins */
.novixa-interactive-location-map-icon { background: none; border: 0; }
.novixa-interactive-location-map__pin { position: absolute; left: 0; top: 0; display: block; width: 0; height: 0; cursor: pointer; }
.novixa-interactive-location-map__pin-body {
	position: absolute;
	left: calc(var(--nilm-pin) / -2);
	top: calc(var(--nilm-pin) * -1.207);
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--nilm-pin);
	height: var(--nilm-pin);
	border-radius: 50% 50% 50% 0;
	background: var(--nilm-c, var(--nilm-pin-c));
	box-shadow: 0 2px 6px rgba(0, 0, 0, .35);
	transform: rotate(-45deg);
	transition: transform .2s, background-color .2s;
}
.novixa-interactive-location-map__pin-glyph {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	color: var(--nilm-pin-glyph);
	font-size: calc(var(--nilm-pin) * .42);
	line-height: 1;
	transform: rotate(45deg);
}
.novixa-interactive-location-map__pin-glyph:empty::before { content: ""; width: 34%; height: 34%; border-radius: 50%; background: var(--nilm-pin-glyph); }
.novixa-interactive-location-map__pin-glyph svg { width: 1em; height: 1em; fill: currentColor; }
.novixa-interactive-location-map__pin-img { position: absolute; left: calc(var(--nilm-pin) / -2); top: calc(var(--nilm-pin) * -1); display: block; width: var(--nilm-pin); height: auto; max-width: none; }
.novixa-interactive-location-map-icon.is-active .novixa-interactive-location-map__pin-body,
.novixa-interactive-location-map__pin.is-active .novixa-interactive-location-map__pin-body {
	background: var(--nilm-pin-active, var(--nilm-c, var(--nilm-pin-c)));
	transform: rotate(-45deg) scale(1.2);
}
.novixa-interactive-location-map-icon.is-active .novixa-interactive-location-map__pin-img,
.novixa-interactive-location-map__pin.is-active .novixa-interactive-location-map__pin-img { transform: scale(1.2); transform-origin: 50% 100%; }

/* clusters (OpenStreetMap) */
.novixa-interactive-location-map .marker-cluster div { background: var(--nilm-cluster); color: #fff; font-weight: 700; }
.novixa-interactive-location-map .marker-cluster { background: color-mix(in srgb, var(--nilm-cluster) 35%, transparent); }

@media (prefers-reduced-motion: reduce) {
	.novixa-interactive-location-map * { transition: none !important; }
}
