.indmap {
	--ind-cream: #fbf0e7;
	--ind-title: #4a0f6b;
	--ind-sea: #e8daf7;
	--ind-land: #c29fd9;
	--ind-land-hover: #a67ac4;
	--ind-accent: #eeab82;
	--ind-tip-text: #6d1b8f;
	--ind-info: #4a0f6b;
	--ind-bd: 15;
	--ind-cols: 3;
	--ind-bg: 1.6;
	--ind-panel: rgba(255, 255, 255, .78);
	--ind-h: clamp(480px, 50vw, 780px);

	display: grid;
	grid-template-columns: 58fr 42fr;
	width: 100%;
	min-height: var(--ind-h);
	overflow: hidden;
	background: var(--ind-cream);
	box-sizing: border-box;
}
.indmap *, .indmap *::before, .indmap *::after { box-sizing: inherit; }

/* ---------- Panel izquierdo ---------- */
.indmap .indmap__left {
	position: relative;
	min-width: 0;
	overflow: hidden;
	container-type: inline-size;
	display: flex;
	flex-direction: column;
	background-color: var(--ind-cream);
	background-repeat: no-repeat;
	background-size: cover;
	background-position: center;
}
.indmap .indmap__title {
	position: relative;
	z-index: 2;
	margin: 0;
	padding: 8.5cqw 0 0 8.7cqw;
	font-size: 7.6cqw;
	font-weight: 300;
	line-height: 1.17;
	color: var(--ind-title);
}

.indmap .indmap__bubbles {
	position: relative;
	z-index: 3;
	display: grid;
	--cell: calc(var(--ind-bd) * 1cqw);
	grid-template-columns: repeat(var(--ind-cols, 3), var(--cell));
	justify-content: start;
	gap: calc(var(--ind-bg) * 1cqw);
	margin: 4cqw 8.7cqw 0;
}
.indmap .indmap__bubble {
	justify-self: center;
	align-self: center;
	width: calc(var(--cell) * var(--k, 1));
	height: calc(var(--cell) * var(--k, 1));
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: var(--bg);
	color: var(--fg);
	text-align: center;
	padding: 0 .6cqw;
	overflow: hidden;
	transform: translateY(14px) scale(.6);
	opacity: 0;
	transition: transform .7s cubic-bezier(.2, .9, .3, 1.2), opacity .5s ease;
	transition-delay: calc(var(--i) * 110ms);
}
.indmap.is-in .indmap__bubble { transform: none; opacity: 1; }

.indmap .indmap__num {
	display: block;
	font-size: calc(var(--cell) * var(--k, 1) * .42);
	font-weight: 300;
	line-height: .95;
	letter-spacing: -.02em;
}
.indmap .indmap__bubble.is-long .indmap__num { font-size: calc(var(--cell) * var(--k, 1) * .34); }
.indmap .indmap__lbl {
	display: block;
	margin-top: .25em;
	max-width: 100%;
	font-size: max(10px, calc(var(--cell) * var(--k, 1) * .098));
	font-weight: 300;
	line-height: 1.1;
	overflow-wrap: anywhere;
}

/* ---------- Bloque de texto ---------- */
.indmap .indmap__info {
	position: relative;
	z-index: 2;
	margin: 4cqw 8.7cqw 5cqw;
	padding: 24px 28px;
	border-radius: 20px;
	background: var(--ind-panel);
	-webkit-backdrop-filter: blur(6px);
	        backdrop-filter: blur(6px);
	color: var(--ind-info);
}
.indmap .indmap__info-title {
	margin: 0 0 .5em;
	font-size: clamp(18px, 2.6cqw, 30px);
	font-weight: 500;
	line-height: 1.2;
	color: inherit;
}
.indmap .indmap__info-text {
	font-size: clamp(14px, 1.7cqw, 20px);
	font-weight: 300;
	line-height: 1.5;
	color: inherit;
}
.indmap .indmap__info-text > :first-child { margin-top: 0; }
.indmap .indmap__info-text > :last-child { margin-bottom: 0; }

/* ---------- Panel derecho: mapa ---------- */
.indmap .indmap__right {
	position: relative;
	min-width: 0;
	overflow: hidden;
	background: var(--ind-sea);
}
.indmap .indmap__map { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

.indmap .indmap__land path {
	fill: var(--ind-land);
	stroke: var(--ind-sea);
	stroke-width: .6px;
	vector-effect: non-scaling-stroke;
	stroke-linejoin: round;
	transition: fill .25s ease;
}
.indmap .indmap__land path.is-data { cursor: pointer; outline: none; }
.indmap .indmap__land path.is-data:hover,
.indmap .indmap__land path.is-data:focus-visible,
.indmap .indmap__land path.is-active { fill: var(--ind-land-hover); }

.indmap .indmap__dot {
	fill: var(--ind-accent);
	transform-box: fill-box;
	transform-origin: center;
	transition: transform .3s ease;
	pointer-events: none;
}
.indmap .indmap__dot.is-active { transform: scale(1.5); }
.indmap .indmap__hit { fill: transparent; cursor: pointer; }

.indmap .indmap__tip {
	pointer-events: none;
	opacity: 0;
	transform: translateY(16px) scale(.45);
	transform-box: fill-box;
	transform-origin: center;
	transition: opacity .25s ease, transform .4s cubic-bezier(.2, .9, .3, 1.35);
}
.indmap .indmap__tip circle { fill: var(--ind-accent); }
.indmap .indmap__tip text {
	fill: var(--ind-tip-text);
	font-weight: 300;
	font-family: inherit;
	text-anchor: middle;
	dominant-baseline: central;
}
.indmap .indmap__tip .indmap__name {
	font-size: 19px;
	font-weight: 500;
	paint-order: stroke;
	stroke: var(--ind-sea);
	stroke-width: 5px;
	stroke-linejoin: round;
}
.indmap .indmap__tipwrap.is-active .indmap__tip { opacity: 1; transform: translateY(0) scale(1); }

/* ---------- Zoom ---------- */
.indmap .indmap__zoom {
	position: absolute;
	right: 16px;
	bottom: 16px;
	z-index: 5;
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.indmap .indmap__zbtn {
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #fff;
	color: var(--ind-tip-text);
	font: 400 24px/1 Arial, sans-serif;
	cursor: pointer;
	box-shadow: 0 2px 10px rgba(0, 0, 0, .18);
	transition: background .2s ease, color .2s ease, opacity .2s ease;
}
.indmap .indmap__zbtn:hover:not(:disabled),
.indmap .indmap__zbtn:focus-visible { background: var(--ind-accent); outline: none; }
.indmap .indmap__zbtn:disabled { opacity: .4; cursor: default; }
.indmap.is-zoomed .indmap__map { cursor: grab; touch-action: none; }
.indmap.is-dragging .indmap__map { cursor: grabbing; }
.indmap .indmap__map { -webkit-user-select: none; user-select: none; }

.indmap .indmap__status {
	position: absolute;
	left: 16px;
	bottom: 12px;
	margin: 0;
	font-size: .8rem;
	color: var(--ind-tip-text);
}

/* ---------- Tablet / móvil ---------- */
@media (max-width: 880px) {
	.indmap { grid-template-columns: 1fr; min-height: 0; }
	.indmap .indmap__left { height: auto; padding-bottom: 2cqw; }
	.indmap .indmap__bubbles { --cell: calc((84cqw - (var(--ind-cols, 3) - 1) * 3cqw) / var(--ind-cols, 3)); grid-template-columns: repeat(var(--ind-cols, 3), 1fr); justify-content: stretch; margin: 6cqw 8cqw 0; gap: 3cqw; }
	.indmap .indmap__bubble { width: calc(100% * var(--k, 1)); height: auto; aspect-ratio: 1 / 1; max-width: 100%; padding: 0 1cqw; }
	.indmap .indmap__lbl { font-size: max(9px, calc(var(--cell) * .118)); }
	.indmap .indmap__title { font-size: 12cqw; padding: 8cqw 0 0 8cqw; }
	.indmap .indmap__info { margin: 6cqw 8cqw 6cqw; padding: 5cqw; }
	.indmap .indmap__info-title { font-size: 5.6cqw; }
	.indmap .indmap__info-text { font-size: 4cqw; }
	.indmap .indmap__right { height: 118vw; max-height: 720px; }
}

@media (prefers-reduced-motion: reduce) {
	.indmap, .indmap * { transition-duration: .01s !important; transition-delay: 0s !important; }
}
