/* 04 · Modalidades de terapia (bloque_iconos del original, id 150086).
   3 iconos circulares (160px, borde 3px primary) + título + separador + texto + «LEER MÁS»,
   y 3 popups .vf-modal (componente compartido) con fondo blanco y texto primary. */

.vf-s04 {
	--vf-s04-ink: var(--wp--preset--color--primary);
	--vf-s04-circle: 160px;
	background-color: var(--wp--preset--color--base);
	color: var(--vf-s04-ink);
	text-align: center;
}

/* Título del bloque: 47px también en móvil (el original no lo reduce) */
.vf-s04 .vf-title {
	font-size: 47px;
}

/* Fila de iconos (row justify-content-around + col-lg-4) */
.vf-s04 .wp-block-columns {
	margin-block: 0;
	row-gap: 0;
}

.vf-s04 .wp-block-columns > .wp-block-column {
	padding-bottom: 45px;
}

.vf-s04 .wp-block-column > * {
	margin-block: 0;
}

/* Icono redondo */
.vf-s04 .wp-block-column > .wp-block-image {
	width: var(--vf-s04-circle);
	height: var(--vf-s04-circle);
	margin-inline: auto;
}

.vf-s04 .wp-block-column > .wp-block-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border: 3px solid var(--vf-s04-ink);
	border-radius: 50%;
}

/* Título del icono (h3.icono-title: 24px, negrita sintética como en el original) */
.vf-s04 .wp-block-column > h3 {
	margin-top: 32px;
	font-size: 24px;
	font-weight: 700;
	line-height: 26px;
	color: var(--vf-s04-ink);
}

/* hr.separator: 60% del ancho, 2px */
.vf-s04 .wp-block-column > .wp-block-separator {
	width: 60%;
	height: 0;
	margin: 32px auto 30px;
	border: 0;
	border-top: 2px solid var(--vf-s04-ink);
	opacity: 1;
	background: none;
}

/* p.icono-texto */
.vf-s04 .wp-block-column > p {
	margin-bottom: 20px;
	padding-inline: 20px;
	font-size: 20px;
	line-height: 35px;
	color: var(--vf-s04-ink);
}

/* Botón «LEER MÁS» (.boton del original: Bubbler One, 16px, 38px de alto, radio .25rem, sin cambio en hover) */
.vf-s04 .wp-block-column > .wp-block-buttons {
	justify-content: center;
}

.vf-s04 .wp-block-column .wp-block-button__link {
	padding: 8px 13px;
	border-radius: 4px;
	font-family: var(--wp--preset--font-family--bubbler-one);
	font-size: 16px;
	font-weight: 700;
	line-height: 22px;
	background-color: var(--vf-s04-ink);
	color: var(--wp--preset--color--base);
}

/* ---------------------------------------------------------------- Popups
   Réplica del .wrapper-popup > .popup del original (medido en www.virginiaferre.es a 1440 y 390 px):
   - capa blanca fija; la caja del popup va de y=136 (76 + 60) a 60px del borde inferior y el contenido
     se centra en vertical dentro de ella (flex + align-items:center); si no cabe, se desplaza desde arriba;
   - columna de texto = .container de Bootstrap menos 30px (1110 / 930 / 690 / 510 / 100%);
   - ≤768px el popup lleva padding 45px 15px: texto a 30px del borde y caja desde y=76;
   - aspa de 44px a 25px del borde superior y 10px del derecho de la caja, líneas de 22 × 1.55px.
   En flex los márgenes no colapsan: se dan ya colapsados (h3 28/28, h2 10/60, p 20/20 en el original). */
.vf-s04 .vf-modal {
	--vf-s04-pop-text: 1110px;
	--vf-s04-close-y: 25px;  /* top del aspa respecto al inicio del contenido */
	--vf-s04-close-x: 5px;   /* lo que el aspa sobresale a la derecha de la columna de texto */
	max-width: none;
	padding: calc(136px - var(--vf-header-h, 82px)) 15px 60px;
	text-align: start;
	background-color: var(--wp--preset--color--base);
	color: var(--vf-s04-ink);
}

.vf-s04 .vf-modal:is(.is-open, :target) {
	display: flex;
	flex-direction: column;
}

/* Espaciadores: centran el contenido cuando cabe; si no, miden 0 (sin desbordar por arriba) */
.vf-s04 .vf-modal:is(.is-open, :target)::before,
.vf-s04 .vf-modal:is(.is-open, :target)::after {
	content: "";
	flex: 1 0 0;
}

.vf-s04 .vf-modal > * {
	flex-shrink: 0;
	box-sizing: border-box;
	width: 100%;
	max-width: var(--vf-s04-pop-text);
	margin-block: 0;
}

/* Botón de cierre: fila de alto 0 al principio (no ocupa sitio); el aspa queda fija (sticky) al hacer scroll.
   El texto queda para lectores de pantalla. */
.vf-s04 .vf-modal:is(.is-open, :target) > .vf-modal-close {
	order: -1;
	top: 0; /* Chrome cuenta el top de sticky desde el borde del padding del contenedor con scroll */
	z-index: 2;
	height: 0;
	margin-bottom: 0 !important;
	align-items: flex-start;
	justify-content: flex-end;
	overflow: visible;
}

.vf-s04 .vf-modal-close .wp-block-button__link {
	position: relative;
	display: block;
	width: 44px;
	height: 44px;
	margin: var(--vf-s04-close-y) calc(-1 * var(--vf-s04-close-x)) 0 0;
	padding: 0;
	overflow: hidden;
	font-size: 0;
	line-height: 0;
	color: transparent;
	background-color: var(--wp--preset--color--base);
	border-radius: 0;
}

.vf-s04 .vf-modal-close .wp-block-button__link::before,
.vf-s04 .vf-modal-close .wp-block-button__link::after {
	content: "";
	position: absolute;
	top: calc(50% - 1px);
	left: calc(50% - 11px);
	width: 22px;
	height: 1.55px;
	background-color: var(--vf-s04-ink);
	transform: rotate(45deg);
}

.vf-s04 .vf-modal-close .wp-block-button__link::after {
	transform: rotate(-45deg);
}

/* Títulos y texto (h3 1.75rem, h2 = título de bloque 47px, p 20px/35px; negrita sintética) */
.vf-s04 .vf-modal h2,
.vf-s04 .vf-modal h3 {
	font-weight: 700;
	line-height: 1.1;
	color: var(--vf-s04-ink);
}

.vf-s04 .vf-modal > h3 { font-size: 28px; }
.vf-s04 .vf-modal > h2 { font-size: 47px; }

.vf-s04 .vf-modal > p {
	font-size: 20px;
	line-height: 35px;
	color: var(--vf-s04-ink);
}

.vf-s04 .vf-modal > p,
.vf-s04 .vf-modal > h2 { margin-top: 20px; }
.vf-s04 .vf-modal > h3,
.vf-s04 .vf-modal > h3 + p,
.vf-s04 .vf-modal > h3 + h2 { margin-top: 28px; }
.vf-s04 .vf-modal > h2 + * { margin-top: 60px; }
.vf-s04 .vf-modal > :last-child { margin-bottom: 20px; }

@media (max-width: 1199.98px) {
	.vf-s04 .vf-modal { --vf-s04-pop-text: 930px; }
}

@media (max-width: 991.98px) {
	.vf-s04 .vf-modal { --vf-s04-pop-text: 690px; }
}

@media (max-width: 768px) {
	.vf-s04 .vf-modal {
		--vf-s04-close-y: -20px;
		--vf-s04-close-x: 20px;
		padding: calc(121px - var(--vf-header-h, 70px)) 30px 105px;
	}
}

@media (max-width: 767.98px) {
	.vf-s04 .vf-modal { --vf-s04-pop-text: 510px; }
}

@media (max-width: 575.98px) {
	.vf-s04 .vf-modal { --vf-s04-pop-text: none; }
}

/* ---------------------------------------------------------------- Aparición (AOS fade / fade-up, 1000 ms) */
.vf-s04 .vf-aos-wait {
	opacity: 0;
	transition: opacity 1s ease, transform 1s ease;
}

.vf-s04 .vf-aos-up.vf-aos-wait {
	transform: translate3d(0, 100px, 0);
}

.vf-s04 .vf-aos-wait.is-in {
	opacity: 1;
	transform: none;
}
