/*--------------------------------------------------------------
# Ciclo de vida (solo page-ciclo-de-vida.php)
# El hero reutiliza la maquetación .edudire-hero; aquí solo la variante visual.
--------------------------------------------------------------*/

.ciclo-vida-hero {
	--cvd-hero-bg: var(--primary-40, #d4e5ec);
	background-color: var(--cvd-hero-bg);
	color: var(--secondary-60, #75a7b7);
}

.ciclo-vida-hero .edudire-hero__heading {
	color: var(--secondary-100, #196c87);
}

.ciclo-vida-hero .edudire-hero__subheading {
	color: var(--secondary-60, #75a7b7);
}

.ciclo-vida-hero .edudire-hero__subheading p {
	color: inherit;
}

/*--------------------------------------------------------------
# Tras el hero: intro y rueda
--------------------------------------------------------------*/

.ciclo-vida-seccion--intro .ciclo-vida-intro__texto {
	max-width: 900px;
	margin-left: auto;
	margin-right: auto;
	text-align: center;
	color: var(--secondary-100, #196c87);
}

.ciclo-vida-seccion--intro .ciclo-vida-intro__texto > *:first-child {
	margin-top: 0;
}

.ciclo-vida-seccion--intro .ciclo-vida-intro__texto > *:last-child {
	margin-bottom: 0;
}

.ciclo-vida-seccion--rueda {
	text-align: center;
}

.ciclo-vida-seccion--rueda .contenedor {
	display: flex;
	flex-direction: column;
	align-items: center;
}

.ciclo-vida-rueda__titulo {
	margin: 0;
	color: var(--secondary-100, #196c87);
	text-align: center;
}

/*--------------------------------------------------------------
# Rueda desktop (.rueda-desktop): diagrama circular en ciclo de vida
# HTML: .rueda-desktop.cvd-rueda-diagram > .cvd-rueda-stage > wheel + ul.rueda-cards
# Espacio bajo el h2: .gap-L en ciclo-vida-after-hero.php (gaps.css)
--------------------------------------------------------------*/

.rueda-desktop.cvd-rueda-diagram {
	margin: 0;
	padding: 0;
	width: 100%;
	display: flex;
	justify-content: center;
}

/*
 * Rueda 500×500 px, tarjetas 300×128 px.
 * Órbita base 416 px (250 + 16 + 150) para laterales; ficha 1 arriba usa 330 px (250 + 16 + 64) para 16 px reales.
 * Fichas 2 y 7: translateY hacia abajo + radio extra hacia fuera respecto a la órbita base.
 * Altura fija del stage: --cvd-stage-height (contenido abs. no la define).
 * --cvd-stage-shift-y: evitar valores negativos grandes: recortan la ficha 1 (overflow hidden) y rozan el h2.
 */
.rueda-desktop .cvd-rueda-stage {
	--cvd-stage-height: 800px;
	container-type: inline-size;
	container-name: cvd-rueda;
	position: relative;
	width: min(100%, 1132px);
	height: var(--cvd-stage-height);
	margin: 0;
	padding: 0;
	overflow: hidden;
	--cvd-stage-shift-y: 0px;
	--cvd-wheel-size: 500px;
	--cvd-orbit-r: 416px;
	--cvd-orbit-r-top: 330px;
	--cvd-crown-radial-extra: 20px;
	--cvd-mid-radial-extra: 10px;
	--cvd-bottom-radial-extra: 40px;
	--cvd-card-w: 300px;
	--cvd-card-minh: 128px;
	--cvd-perspective: 1100px;
}

@supports (width: 1cqw) {
	.rueda-desktop .cvd-rueda-stage {
		--cvd-stage-shift-y: 0px;
		--cvd-wheel-size: calc(500 / 1132 * 100cqw);
		--cvd-orbit-r: calc(416 / 1132 * 100cqw);
		--cvd-orbit-r-top: calc(330 / 1132 * 100cqw);
		--cvd-crown-radial-extra: calc(20 / 1132 * 100cqw);
		--cvd-mid-radial-extra: calc(10 / 1132 * 100cqw);
		--cvd-bottom-radial-extra: calc(40 / 1132 * 100cqw);
		--cvd-card-w: calc(300 / 1132 * 100cqw);
		--cvd-card-minh: calc(128 / 1132 * 100cqw);
	}
}

.rueda-desktop .cvd-rueda-wheel {
	position: absolute;
	left: 50%;
	top: 50%;
	z-index: 1;
	width: var(--cvd-wheel-size);
	height: var(--cvd-wheel-size);
	transform: translate(-50%, calc(-50% + var(--cvd-stage-shift-y)));
	pointer-events: none;
}

.rueda-desktop .cvd-rueda-wheel__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	transform-origin: 50% 50%;
	animation: cvd-rueda-spin 96s linear infinite;
	will-change: transform;
}

@keyframes cvd-rueda-spin {
	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.rueda-desktop .cvd-rueda-wheel__img {
		animation: none;
	}
}

.rueda-desktop .cvd-rueda-cards {
	position: absolute;
	inset: 0;
	z-index: 2;
	margin: 0;
	padding: 0;
	list-style: none;
	gap: 0;
	border: 0;
	pointer-events: none;
}

.rueda-desktop .cvd-rueda-card {
	position: absolute;
	left: 50%;
	top: 50%;
	width: var(--cvd-card-w);
	margin: 0;
	padding: 0;
	list-style: none;
	pointer-events: auto;
	--cvd-rot: calc((var(--slot, 1) - 1) * (360deg / 7));
	--cvd-orbit-slot: var(--cvd-orbit-r);
	--cvd-crown-nudge-y: 0px;
	--cvd-crown-nudge-y-extra: 0px;
	--cvd-crown-nudge-x: 0px;
	transform: translate(-50%, -50%) rotate(var(--cvd-rot)) translateY(calc(-1 * var(--cvd-orbit-slot)))
		rotate(calc(-1 * var(--cvd-rot)))
		translateY(calc(var(--cvd-crown-nudge-y) + var(--cvd-crown-nudge-y-extra))) translateX(var(--cvd-crown-nudge-x))
		translateY(var(--cvd-stage-shift-y));
}

.rueda-desktop .cvd-rueda-card[data-slot='1'] {
	--cvd-orbit-slot: var(--cvd-orbit-r-top);
}

.rueda-desktop .cvd-rueda-card[data-slot='2'],
.rueda-desktop .cvd-rueda-card[data-slot='7'] {
	--cvd-orbit-slot: calc(var(--cvd-orbit-r) + var(--cvd-crown-radial-extra));
	--cvd-crown-nudge-y: 90px;
}

.rueda-desktop .cvd-rueda-card[data-slot='2'] {
	--cvd-crown-nudge-x: 40px;
}

.rueda-desktop .cvd-rueda-card[data-slot='7'] {
	--cvd-crown-nudge-x: -40px;
}

.rueda-desktop .cvd-rueda-card[data-slot='3'],
.rueda-desktop .cvd-rueda-card[data-slot='6'] {
	--cvd-orbit-slot: calc(var(--cvd-orbit-r) + var(--cvd-mid-radial-extra));
	--cvd-crown-nudge-y-extra: -40px;
}

.rueda-desktop .cvd-rueda-card[data-slot='4'],
.rueda-desktop .cvd-rueda-card[data-slot='5'] {
	--cvd-orbit-slot: calc(var(--cvd-orbit-r) + var(--cvd-bottom-radial-extra));
	--cvd-crown-nudge-y-extra: -83px;
}

.rueda-desktop .cvd-rueda-card__article {
	position: relative;
	width: 100%;
	min-height: var(--cvd-card-minh);
	height: var(--cvd-card-minh);
	max-height: var(--cvd-card-minh);
	border-radius: 24px;
	outline-offset: 4px;
	isolation: isolate;
}

.rueda-desktop .cvd-rueda-card__article:focus-visible {
	outline: 2px solid var(--secondary-100, #196c87);
}

/* Contenedor sin 3D */
.rueda-desktop .cvd-rueda-card__flipper {
	position: relative;
	width: 100%;
	min-height: var(--cvd-card-minh);
	height: var(--cvd-card-minh);
	max-height: var(--cvd-card-minh);
	border-radius: 24px;
}

/* Anverso: siempre visible */
.rueda-desktop .cvd-rueda-card__face {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 16px;
	text-align: center;
	border-radius: 24px;
	border: 1px solid var(--primary-40, #d4e5ec);
	box-sizing: border-box;
	overflow: hidden;
}

.rueda-desktop .cvd-rueda-card__face--out {
	background: var(--white, #fff);
	color: var(--secondary-100, #196c87);
}

/* Reverso: overlay con fade, igual que .home-somos-tarjetas__hover */
.rueda-desktop .cvd-rueda-card__face--in {
	background: var(--secondary-100, #196c87);
	color: var(--white, #fff);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition:
		opacity 0.3s ease,
		visibility 0.3s ease;
}

.rueda-desktop .cvd-rueda-card__face.cvd-rueda-card__face--in.entry-content {
	font-size: 14px !important;
}

.rueda-desktop .cvd-rueda-card:hover .cvd-rueda-card__face--in,
.rueda-desktop .cvd-rueda-card__article:focus-within .cvd-rueda-card__face--in {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

.rueda-desktop .cvd-rueda-card__face.entry-content,
.rueda-desktop .cvd-rueda-card__face .entry-content {
	width: 100%;
	text-align: center;
}

.rueda-desktop .cvd-rueda-card__face .entry-content > * {
	margin-left: auto;
	margin-right: auto;
	max-width: 100%;
}

.rueda-desktop .cvd-rueda-card__face > *:first-child {
	margin-top: 0;
}

.rueda-desktop .cvd-rueda-card__face > *:last-child {
	margin-bottom: 0;
}

@media (prefers-reduced-motion: reduce) {
	.rueda-desktop .cvd-rueda-card__face--in {
		transition-duration: 0.01ms;
	}
}

/*--------------------------------------------------------------
# Rueda móvil (<992px): Swiper + mitad superior rueda (458px recortada a 229px)
--------------------------------------------------------------*/

.rueda-mobile {
	display: none;
}

@media (max-width: 991px) {
	.rueda-desktop.cvd-rueda-diagram {
		display: none !important;
	}

	.rueda-mobile {
		display: block;
		width: 100%;
		margin: 0;
		padding: 0;
	}

	.rueda-mobile__swiper {
		overflow: visible;
	}

	.rueda-mobile__slide {
		display: flex;
		justify-content: center;
		align-items: stretch;
		height: auto;
	}

	.rueda-mobile__card {
		width: 100%;
		max-width: 20rem;
		margin: 0 auto;
		display: flex;
		flex-direction: column;
		box-sizing: border-box;
	}

	.rueda-mobile__card-out {
		background: var(--white, #fff);
		color: var(--secondary-100, #196c87);
		border: 1px solid var(--primary-40, #d4e5ec);
		border-radius: 24px;
		padding: 16px;
		text-align: center;
		box-sizing: border-box;
		min-height: 5rem;
		flex: 1;
		width: 100%;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.rueda-mobile__card-detail {
		margin-top: 0.75rem;
		padding-top: 0.75rem;
		border-top: 1px solid var(--primary-40, #d4e5ec);
		width: 100%;
		box-sizing: border-box;
		color: var(--secondary-80, #47899f);
	}

	.rueda-mobile .swiper-pagination {
		position: relative;
		margin-top: 1rem;
		bottom: auto !important;
	}

	.rueda-mobile .swiper-pagination-bullet {
		width: 10px;
		height: 10px;
		background: var(--primary-40, #d4e5ec);
		opacity: 1;
	}

	.rueda-mobile .swiper-pagination-bullet-active {
		background: var(--secondary-100, #196c87);
	}

	.rueda-mobile__wheel-clip {
		margin-top: 1.25rem;
		width: calc(100% + 2 * var(--contenedor-padding, 16px));
		max-width: none;
		margin-left: calc(-1 * var(--contenedor-padding, 16px));
		margin-right: calc(-1 * var(--contenedor-padding, 16px));
		padding-left: 0;
		padding-right: 0;
		box-sizing: border-box;
		height: 229px;
		overflow: hidden;
		display: flex;
		justify-content: center;
		align-items: flex-start;
		pointer-events: none;
	}

	.rueda-mobile__wheel-inner {
		width: 100%;
		max-width: min(100vw, 458px);
		height: 458px;
		display: flex;
		align-items: flex-start;
		justify-content: center;
	}

	.rueda-mobile__wheel-img {
		width: auto;
		height: 458px;
		max-width: none;
		display: block;
		object-fit: contain;
		transform: rotate(var(--rueda-mobile-rot, 0deg));
		transform-origin: 50% 50%;
		transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);
	}

	@media (prefers-reduced-motion: reduce) {
		.rueda-mobile__wheel-img {
			transition-duration: 0.01ms;
		}
	}
}
