/* Floema Intro Effect - estilos front-end */

.floema-intro-wrapper {
	position: relative;
	overflow: hidden;
	min-height: 100vh;
	background-color: #F2EEE6;
	perspective: 650px;
	perspective-origin: 50% 50%;
	--floema-img-scale: 1;
}

/* El ancho final = ancho base de cada imagen (fijo, calculado en PHP
   según su lugar en la grilla) x el multiplicador de escala, que sí es
   responsivo (--floema-img-scale, controlado desde Elementor por
   breakpoint: escritorio/tablet/móvil). max-width en vw sigue actuando
   como tope de seguridad además de esto. */
.floema-intro-item {
	position: absolute;
	width: calc(var(--floema-base-w, 120px) * var(--floema-img-scale, 1));
	max-width: 42vw;
	pointer-events: none;
	will-change: transform, opacity;
	animation-name: floema-cam-travel;
	animation-timing-function: linear;
	animation-fill-mode: backwards;
	animation-iteration-count: infinite;
}

/* Cada imagen tiene una posición fija (top/left, definidos inline por
   PHP, igual que una pared en una grilla). Se anima su profundidad
   (translateZ, que hace que la perspectiva de CSS la aleje del centro
   sola) Y ADEMÁS una escala explícita superpuesta, para que el
   crecimiento de chica a grande se note con claridad. */
@keyframes floema-cam-travel {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) translateZ(-700px) scale(0.6);
	}
	15% {
		opacity: 1;
	}
	45% {
		transform: translate(-50%, -50%) translateZ(-150px) scale(0.95);
	}
	80% {
		opacity: 1;
	}
	100% {
		opacity: 0;
		transform: translate(-50%, -50%) translateZ(650px) scale(1.7);
	}
}

.floema-intro-item img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 2px;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
}

.floema-intro-title {
	position: absolute;
	inset: 0;
	z-index: 5;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 0 8%;
	margin: 0 auto;
	font-family: 'Playfair Display', Georgia, 'Times New Roman', serif;
	font-variant: small-caps;
	font-size: 56px;
	line-height: 1.15;
	letter-spacing: 1px;
	color: #1B1B1B;
	opacity: 0;
	animation: floema-title-in 1.7s cubic-bezier(.19,1,.22,1) forwards;
	animation-delay: 0.3s;
}

@keyframes floema-title-in {
	from { opacity: 0; transform: translateY(34px) scale(1.05); filter: blur(6px); }
	to   { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}

@media (max-width: 1024px) {
	.floema-intro-wrapper {
		perspective: 550px;
	}
	.floema-intro-item {
		max-width: 46vw;
	}
}

@media (max-width: 767px) {
	.floema-intro-wrapper {
		perspective: 420px;
	}
	.floema-intro-item {
		max-width: 40vw;
	}
	.floema-intro-title {
		padding: 0 6%;
	}
}

@media (max-width: 480px) {
	.floema-intro-wrapper {
		perspective: 340px;
	}
	.floema-intro-item {
		max-width: 34vw;
	}
	.floema-intro-title {
		font-size: 32px;
	}
}
