/* Portal Scroll Animations - estilos dos efeitos
 * Leve, sem dependencias. Usa apenas transform + opacity (GPU, sem travar).
 */

/* Estado inicial: elemento invisivel, aguardando entrar na tela.
 * A duracao e a distancia sao definidas via variaveis CSS pelo JS. */
.psa-animate {
	opacity: 0;
	will-change: transform, opacity;
	transition-property: opacity, transform;
	transition-duration: var(--psa-duration, 700ms);
	transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
	transition-delay: var(--psa-delay, 0ms);
}

/* Estado final: visivel e no lugar. */
.psa-animate.psa-visible {
	opacity: 1;
	transform: none;
}

/* ---- Efeitos (estado inicial de cada um) ---- */
.psa-fade {
	transform: none;
}

.psa-fade-up {
	transform: translateY(var(--psa-distance, 40px));
}

.psa-fade-down {
	transform: translateY(calc(var(--psa-distance, 40px) * -1));
}

.psa-fade-left {
	transform: translateX(calc(var(--psa-distance, 40px) * -1));
}

.psa-fade-right {
	transform: translateX(var(--psa-distance, 40px));
}

.psa-zoom-in {
	transform: scale(0.9);
}

.psa-zoom-out {
	transform: scale(1.08);
}

/* Acessibilidade: respeita quem pediu menos animacoes no sistema. */
@media (prefers-reduced-motion: reduce) {
	.psa-animate {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}
