/* SUIT Location Map – front end */
.suitlm {
	--suitlm-height: 720px;
	--suitlm-panel-bg: #fffbee;
	--suitlm-panel-text: #173462;
	--suitlm-project: #f0412e;
	--suitlm-office: #5b8def;
	--suitlm-water: #1b2333;
	--suitlm-panel-width: 34%;
	--suitlm-panel-radius: 20px;
	position: relative;
	display: flex;
	width: 100%;
	height: var(--suitlm-height);
	min-height: 420px;
	overflow: hidden;
	background: var(--suitlm-water);
	box-sizing: border-box;
	font-family: inherit;
	container-type: inline-size;
	container-name: suitlm;
}
.suitlm *,
.suitlm *::before,
.suitlm *::after { box-sizing: border-box; }

.suitlm--panel-left { flex-direction: row-reverse; }

.suitlm__map {
	position: relative;
	flex: 1 1 auto;
	min-width: 0;
	height: 100%;
	background: var(--suitlm-water);
}
.suitlm__map .maplibregl-canvas,
.suitlm__map .mapboxgl-canvas { outline: none; }

/* Loading spinner */
.suitlm__loading {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 1;
	pointer-events: none;
	transition: opacity .4s ease;
}
.suitlm__loading span {
	width: 34px;
	height: 34px;
	border-radius: 50%;
	border: 3px solid rgba(255, 255, 255, .2);
	border-top-color: #fff;
	animation: suitlm-spin .9s linear infinite;
}
.suitlm__map.is-loaded .suitlm__loading { opacity: 0; }
.suitlm__map--error .suitlm__loading { display: none; }
@keyframes suitlm-spin { to { transform: rotate(360deg); } }

/* Panel */
.suitlm__panel {
	flex: 0 0 var(--suitlm-panel-width);

	max-width: 520px;
	min-width: 260px;
	height: 100%;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 2rem;
	padding: clamp(1.25rem, 3cqi, 2.75rem);
	background: var(--suitlm-panel-bg);
	color: var(--suitlm-panel-text);
	z-index: 2;
}
.suitlm .suitlm__heading {
	margin: 0;
	padding: 0;
	color: inherit;
	font-family: inherit;
	font-size: clamp(1.9rem, 4.0cqi, 4rem);
	overflow-wrap: anywhere;
	hyphens: auto;
	font-weight: 800;
	line-height: .95;
	letter-spacing: -.01em;
	text-transform: uppercase;
	border: 0;
}
.suitlm__stats { display: flex; flex-direction: column; }
.suitlm__stat {
	border-top: 1px solid currentColor;
	padding: 1rem 0 .5rem;
}
.suitlm__stat-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}
.suitlm__stat-label {
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .02em;
	text-transform: uppercase;
	line-height: 1.3;
}
.suitlm__stat-value {
	margin-top: .35rem;
	font-size: clamp(1.9rem, 4.0cqi, 4.0rem);
	font-weight: 800;
	line-height: 1;
	font-variant-numeric: tabular-nums;
}

/* Rounded panel corners (higher specificity so theme styles on <aside> can't override) */
.suitlm .suitlm__panel {
	border-radius: var(--suitlm-panel-radius, 20px);
	overflow: hidden;
}

/* Toggle switch */
.suitlm .suitlm__toggle {
	position: relative;
	flex: none;
	width: 40px;
	height: 20px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: #b9bfca;
	cursor: pointer;
	box-shadow: inset 0 1px 2px rgba(0, 0, 0, .15);
	transition: background-color .2s ease;
}
.suitlm .suitlm__toggle::after {
	content: '';
	position: absolute;
	top: 2px;
	left: 2px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
	transition: left .2s ease;
}
.suitlm .suitlm__toggle.is-on::after { left: 22px; }
.suitlm .suitlm__stat--project .suitlm__toggle.is-on { background: var(--suitlm-project); }
.suitlm .suitlm__stat--office .suitlm__toggle.is-on { background: var(--suitlm-panel-text); }
.suitlm .suitlm__toggle:focus-visible { outline: 2px solid var(--suitlm-panel-text); outline-offset: 2px; }
.suitlm--hide-project .suitlm__stat--project .suitlm__stat-value,
.suitlm--hide-office .suitlm__stat--office .suitlm__stat-value { opacity: .35; }
.suitlm__stat-value { transition: opacity .2s ease; }

/* Markers */
.suitlm-marker {
	display: block;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	font-family: inherit;
	line-height: 1;
}
.suitlm-marker--cluster {
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: var(--suitlm-project);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	box-shadow: 0 0 0 4px rgba(240, 65, 46, .18);
	transition: transform .15s ease, box-shadow .15s ease;
}
.suitlm-marker--cluster:hover,
.suitlm-marker--cluster:focus-visible {
	transform: scale(1.12);
	box-shadow: 0 0 0 7px rgba(240, 65, 46, .25);
	outline: none;
}
.suitlm .suitlm-marker--cluster { z-index: 2; }
.suitlm .suitlm-marker--tri { z-index: 1; }
.suitlm-marker--tri { width: 18px; height: 16px; transition: transform .15s ease; }
.suitlm-marker--tri svg { display: block; width: 100%; height: 100%; overflow: visible; }
.suitlm-marker--tri path { stroke-linejoin: round; stroke-width: 1.5; }
.suitlm-marker--project path { fill: var(--suitlm-project); stroke: var(--suitlm-project); }
.suitlm-marker--office path { fill: var(--suitlm-office); stroke: var(--suitlm-office); }
.suitlm-marker--tri:hover,
.suitlm-marker--tri:focus-visible { transform: scale(1.25); outline: none; }

/* Popup */
.suitlm-popup-wrap .maplibregl-popup-content,
.suitlm-popup-wrap .mapboxgl-popup-content {
	padding: 0;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 10px 30px rgba(0, 0, 0, .35);
	font-family: inherit;
}
.suitlm-popup-wrap .maplibregl-popup-close-button,
.suitlm-popup-wrap .mapboxgl-popup-close-button {
	width: 26px;
	height: 26px;
	font-size: 18px;
	color: #173462;
	background: rgba(255, 255, 255, .85);
	border-radius: 0 10px 0 8px;
	z-index: 1;
}
.suitlm-popup__img { display: block; width: 100%; height: 140px; object-fit: cover; }
.suitlm-popup__body { padding: 14px 16px 16px; color: #173462; }
.suitlm-popup__kind {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--suitlm-project);
	margin-bottom: 4px;
}
.suitlm-popup--office .suitlm-popup__kind { color: var(--suitlm-office); }
.suitlm-popup__title { font-size: 16px; font-weight: 800; line-height: 1.2; text-transform: uppercase; }
.suitlm-popup__addr,
.suitlm-popup__text { margin-top: 6px; font-size: 13px; line-height: 1.4; color: #44516a; }
.suitlm-popup__link {
	display: inline-block;
	margin-top: 10px;
	font-size: 13px;
	font-weight: 700;
	color: #173462;
	text-decoration: underline;
}

/* Controls tinted to match */
.suitlm .maplibregl-ctrl-group,
.suitlm .mapboxgl-ctrl-group { border-radius: 8px; overflow: hidden; }

/* Narrow: shorter map */
@media (max-width: 760px) {
	.suitlm { height: max(460px, calc(var(--suitlm-height) * .75)); }
}

/* Narrow container: panel becomes a card floating over the map (like the original) */
@container suitlm (max-width: 760px) {
	.suitlm__map { height: 100%; flex: 1 1 100%; }
	.suitlm__panel {
		position: absolute;
		top: 1rem;
		left: 1rem;
		right: 1rem;
		height: auto;
		min-width: 0;
		max-width: none;
		padding: 1rem 1.1rem;
		gap: 1rem;
		box-shadow: 0 8px 24px rgba(0, 0, 0, .25);
	}
	.suitlm .suitlm__heading { font-size: 1.6rem; }
	.suitlm__stats { flex-direction: row; gap: 1rem; }
	.suitlm__stat { flex: 1; border-top: 0; padding: 0; }
	.suitlm__stat-row { flex-direction: column-reverse; align-items: flex-start; gap: .4rem; }
	.suitlm__stat-label { font-size: .68rem; }
	.suitlm__stat-value { font-size: 2.2rem; margin-top: .2rem; }
}

@media (prefers-reduced-motion: reduce) {
	.suitlm *, .suitlm *::after { transition: none !important; animation: none !important; }
}
