/*
 * AB - Mapa Somos Bosques
 * Colores oficiales de la campaña (SVG de «Somos Bosques»); se pueden ajustar desde el widget.
 */

@font-face {
	font-family: "AB League Spartan";
	src: url("../fonts/league-spartan-700-latin.woff2") format("woff2");
	font-weight: 700;
	font-style: normal;
	font-display: swap;
}

.abmsb {
	--abmsb-c-amazonia: #bcc852;
	--abmsb-c-chiquitania: #9fb84e;
	--abmsb-c-chaco: #4c663d;
	--abmsb-c-yungas: #cc6f2e;
	--abmsb-c-altiplano: #bea67f;
	--abmsb-c-valles-secos: #9691a6;
	--abmsb-c-pais: #ffffff;
	--abmsb-c-contorno: #a3b61d;
	--abmsb-c-limites: #90227e;
	--abmsb-c-boton: #18231f;
	--abmsb-tinta: #18231f;
	--abmsb-tinta-suave: #5c6b63;
	--abmsb-ancho: 520px;
	--abmsb-tamano: 56px;
	--abmsb-fuente: "AB League Spartan", "League Spartan", "Montserrat", "Arial Black", sans-serif;
	box-sizing: border-box;
	width: 100%;
	max-width: var(--abmsb-ancho);
	margin-left: auto;
	margin-right: auto;
}

.abmsb *,
.abmsb *::before,
.abmsb *::after {
	box-sizing: border-box;
}

/*
 * El mapa interactivo tiene ancho propio, no el de su contenido: dentro de un
 * contenedor que se ajusta al contenido (por ejemplo, flex centrado de Elementor),
 * el texto del panel ensanchaba el widget y el mapa crecía al pasar el cursor.
 */
.abmsb.abmsb--interactivo {
	width: var(--abmsb-ancho);
	max-width: 100%;
}

.abmsb-lienzo {
	position: relative;
	margin: 0;
	padding: 0;
}

.abmsb-svg {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
	filter: drop-shadow(0 18px 26px rgba(24, 35, 31, 0.14));
}

/* Colores por región: el elemento con data-region define --abmsb-color. */
.abmsb [data-region="amazonia"] { --abmsb-color: var(--abmsb-c-amazonia); }
.abmsb [data-region="chiquitania"] { --abmsb-color: var(--abmsb-c-chiquitania); }
.abmsb [data-region="chaco"] { --abmsb-color: var(--abmsb-c-chaco); }
.abmsb [data-region="yungas"] { --abmsb-color: var(--abmsb-c-yungas); }

/* ---------------------------------------------------------------- capas */

.abmsb-pais {
	fill: var(--abmsb-c-pais);
	stroke: var(--abmsb-c-pais);
	stroke-width: 23.58;
}

.abmsb--fondo-transparente {
	--abmsb-c-pais: rgba(255, 255, 255, 0.08);
}

.abmsb--fondo-transparente .abmsb-svg {
	filter: drop-shadow(0 18px 30px rgba(0, 0, 0, 0.28));
}

.abmsb-zona {
	pointer-events: none;
	transition: opacity 0.3s ease;
}

.abmsb-zona[data-zona="altiplano"] { fill: var(--abmsb-c-altiplano); }
.abmsb-zona[data-zona="valles-secos"] { fill: var(--abmsb-c-valles-secos); }

.abmsb-forma {
	fill: var(--abmsb-color, var(--abmsb-c-contorno));
	stroke: #ffffff;
	stroke-width: 8;
	stroke-linejoin: round;
	transition: opacity 0.3s ease;
}

.abmsb-limites {
	fill: none;
	stroke: var(--abmsb-c-limites);
	stroke-width: 7;
	stroke-dasharray: 28 27;
	opacity: 0.5;
	pointer-events: none;
}

.abmsb-contorno {
	fill: none;
	stroke: var(--abmsb-c-contorno);
	stroke-width: 23.58;
	stroke-linejoin: round;
	pointer-events: none;
}

.abmsb-etiqueta {
	font-family: var(--abmsb-fuente);
	font-weight: 700;
	pointer-events: none;
	transition: opacity 0.3s ease;
}

/* ---------------------------------------------------------------- interacción */

.abmsb-region {
	cursor: pointer;
	outline: none;
}

.abmsb-realce {
	--abmsb-color: var(--abmsb-color-realce, transparent);
	fill: var(--abmsb-color);
	stroke: #ffffff;
	stroke-width: 12;
	stroke-linejoin: round;
	opacity: 0;
	pointer-events: none;
	transform-box: fill-box;
	transform-origin: center;
	transition: opacity 0.3s ease, transform 0.45s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.abmsb.is-enfocado .abmsb-realce {
	opacity: 1;
	transform: scale(1.035);
}

.abmsb.is-foco-teclado .abmsb-realce {
	stroke: var(--abmsb-tinta);
	stroke-width: 16;
}

.abmsb.is-enfocado .abmsb-region:not(.is-enfocada) .abmsb-forma,
.abmsb.is-enfocado .abmsb-zona {
	opacity: 0.32;
}

.abmsb.is-enfocado .abmsb-etiqueta:not(.is-enfocada) {
	opacity: 0.2;
}

/* ---------------------------------------------------------------- panel de información */

.abmsb .abmsb-info {
	display: flex;
	align-items: center;
	gap: 16px;
	margin-top: 18px;
	padding: 14px 16px;
	min-height: 84px;
	border: 1px solid rgba(24, 35, 31, 0.08);
	border-radius: 14px;
	background: rgba(255, 255, 255, 0.92);
	box-shadow: 0 12px 28px rgba(24, 35, 31, 0.08);
}

.abmsb .abmsb-info-silueta {
	flex: none;
	width: 56px;
	height: 56px;
	overflow: visible;
	transition: transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* Sin región seleccionada, la silueta del país va en un verde muy claro. */
.abmsb .abmsb-info-silueta:not([data-region]) {
	--abmsb-color: #dfe5d6;
}

.abmsb .abmsb-info-silueta .abmsb-forma {
	stroke-width: 0;
}

.abmsb.is-enfocado .abmsb-info-silueta {
	transform: scale(1.06);
}

/*
 * Texto visible y copias invisibles de cada estado en la misma celda: el panel
 * mide lo que el texto más largo y no cambia de alto al pasar de una región a otra.
 */
.abmsb .abmsb-info-texto {
	flex: 1 1 auto;
	min-width: 0;
	display: grid;
}

.abmsb .abmsb-info-texto > * {
	grid-area: 1 / 1;
	min-width: 0;
}

.abmsb .abmsb-info-medida {
	visibility: hidden;
	pointer-events: none;
}

.abmsb .abmsb-info-titulo {
	margin: 0;
	color: var(--abmsb-tinta);
	font-family: var(--abmsb-fuente);
	font-size: 1.15rem;
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: 0.01em;
	text-transform: uppercase;
}

.abmsb .abmsb-info-detalle {
	margin: 5px 0 0;
	color: var(--abmsb-tinta-suave);
	font-size: 0.92rem;
	line-height: 1.4;
}

.abmsb .abmsb-info-detalle strong {
	color: var(--abmsb-tinta);
	font-weight: 700;
}

.abmsb a.abmsb-info-boton {
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 10px 16px;
	border-radius: 999px;
	background: var(--abmsb-c-boton);
	color: #ffffff;
	font-size: 0.9rem;
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
	white-space: nowrap;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.abmsb a.abmsb-info-boton:hover,
.abmsb a.abmsb-info-boton:focus-visible {
	color: #ffffff;
	transform: translateX(3px);
	box-shadow: 0 8px 18px rgba(24, 35, 31, 0.22);
}

/*
 * Sin región, el botón no se ve ni se puede enfocar, pero conserva su espacio para
 * que el panel no cambie de tamaño. Se usa una clase y no el atributo «hidden»
 * porque hojas de estilo globales fuerzan «[hidden] { display: none !important }».
 */
.abmsb a.abmsb-info-boton.is-oculto {
	visibility: hidden;
}

@media (max-width: 560px) {
	.abmsb .abmsb-info {
		display: grid;
		grid-template-columns: 44px minmax(0, 1fr);
		align-items: start;
		column-gap: 12px;
		row-gap: 10px;
	}

	.abmsb .abmsb-info-silueta {
		width: 44px;
		height: 44px;
	}

	.abmsb a.abmsb-info-boton {
		grid-column: 2;
		justify-self: start;
	}
}

/* ---------------------------------------------------------------- silueta */

.abmsb--silueta {
	display: inline-block;
	width: var(--abmsb-tamano);
	height: var(--abmsb-tamano);
	max-width: none;
	vertical-align: middle;
}

.abmsb--silueta svg {
	display: block;
	width: 100%;
	height: 100%;
	overflow: visible;
	filter: drop-shadow(0 3px 5px rgba(24, 35, 31, 0.18));
}

.abmsb--silueta .abmsb-forma {
	stroke-width: 0;
}

/* ---------------------------------------------------------------- movimiento reducido */

@media (prefers-reduced-motion: reduce) {
	.abmsb *,
	.abmsb *::before,
	.abmsb *::after {
		transition: none !important;
	}

	.abmsb.is-enfocado .abmsb-realce,
	.abmsb.is-enfocado .abmsb-info-silueta,
	.abmsb a.abmsb-info-boton:hover {
		transform: none;
	}
}
