.vlora-map {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.vlora-map__canvas {
	position: relative;
	z-index: 0;
	height: 70vh;
	min-height: 24rem;
	border: 1px solid var(--vlora-color-border);
	border-radius: var(--vlora-radius);
	background: var(--vlora-color-surface-soft);
	overflow: hidden;
}

.vlora-map--single .vlora-map__canvas,
.vlora-map--office .vlora-map__canvas {
	height: 24rem;
	min-height: 18rem;
}

.vlora-map__canvas:focus-visible {
	outline: var(--vlora-focus);
	outline-offset: 3px;
}

.vlora-map__controls {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.vlora-map__count {
	margin: 0;
	color: var(--o-muted);
	font-size: 0.875rem;
}

.vlora-map__button {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.6rem 1rem;
	border: 1px solid var(--vlora-color-accent);
	border-radius: var(--vlora-radius-btn);
	background: var(--vlora-color-accent);
	color: var(--o-cream);
	font: inherit;
	font-size: 0.9375rem;
	line-height: 1.2;
	cursor: pointer;
}

.vlora-map__button--ghost {
	background: transparent;
	color: var(--vlora-color-accent);
}

.vlora-map__button:hover {
	background: var(--o-olive-dark);
	color: var(--o-cream);
}

.vlora-map__button--ghost:hover {
	background: rgba(85, 85, 47, .08);
	color: var(--vlora-color-accent);
}

.vlora-map__button:focus-visible {
	outline: var(--vlora-focus);
	outline-offset: 3px;
}

.vlora-map__button:disabled {
	cursor: progress;
	opacity: 0.65;
}

.vlora-map__status {
	margin: 0;
	color: var(--o-muted);
	font-size: 0.875rem;
}

.vlora-map__status:empty {
	display: none;
}

.vlora-map__noscript {
	margin: 0;
	padding: 0.75rem 1rem;
	border: 1px solid var(--vlora-color-border);
	border-radius: var(--vlora-radius);
	background: var(--vlora-color-surface-soft);
	color: var(--vlora-color-ink);
	font-size: 0.9375rem;
}

.vlora-map__canvas.maplibregl-map,
.vlora-map__canvas .maplibregl-ctrl,
.vlora-map__canvas .maplibregl-popup {
	font-family: var(--o-sans);
}

.vlora-map__canvas .maplibregl-ctrl-attrib {
	margin: 0;
	padding: 2px 6px;
	border-radius: 0 var(--vlora-radius) 0 0;
	background: rgba(255, 255, 255, 0.85);
	font-size: 0.75rem;
}

.vlora-map__canvas .maplibregl-popup-content {
	padding: 0;
	border-radius: var(--vlora-radius);
	overflow: hidden;
}

.vlora-map__canvas .maplibregl-popup-close-button {
	padding: 0.25rem 0.5rem;
	font-size: 1.25rem;
	line-height: 1;
	color: var(--vlora-color-ink);
}

.vlora-map-popup {
	display: flex;
	gap: 0.75rem;
	min-width: 14rem;
	max-width: 20rem;
	font-size: 0.9375rem;
}

.vlora-map-popup__cover {
	flex: 0 0 auto;
	width: 7.5rem;
	height: 5rem;
	border-radius: var(--vlora-radius) 0 0 var(--vlora-radius);
	object-fit: cover;
	background: var(--vlora-color-surface-soft);
}

.vlora-map-popup__body {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding: 0.6rem 0.75rem 0.6rem 0;
	min-width: 0;
}

.vlora-map-popup__title {
	margin: 0;
	font-size: 1rem;
	line-height: 1.25;
}

.vlora-map-popup__status,
.vlora-map-popup__price {
	margin: 0;
	color: var(--o-muted);
	font-size: 0.8125rem;
}

.vlora-map-popup__price {
	color: var(--vlora-color-ink);
	font-weight: 500;
}

@media (max-width: 768px) {
	.vlora-map__canvas {
		height: 60vh;
		min-height: 20rem;
	}

	.vlora-map--single .vlora-map__canvas,
	.vlora-map--office .vlora-map__canvas {
		height: 18rem;
		min-height: 14rem;
	}

	.vlora-map__button {
		width: 100%;
		justify-content: center;
	}
}