/* ============================================================
   Animações de entrada (scroll reveal) — padrão do site
   Uso: adicionar .reveal, .reveal-left, .reveal-right,
   .reveal-scale ou .reveal-card no elemento.
   O JS global (js/reveal.js) adiciona .visible quando o
   elemento entra na viewport.
   ============================================================ */

.reveal {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.visible {
	opacity: 1;
	transform: translateY(0);
}

.reveal-left {
	opacity: 0;
	transform: translateX(-40px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal-left.visible {
	opacity: 1;
	transform: translateX(0);
}

.reveal-right {
	opacity: 0;
	transform: translateX(40px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal-right.visible {
	opacity: 1;
	transform: translateX(0);
}

.reveal-scale {
	opacity: 0;
	transform: scale(0.85);
	transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal-scale.visible {
	opacity: 1;
	transform: scale(1);
}

.reveal-card {
	opacity: 0;
	transform: scale(0.3);
}
.reveal-card.visible {
	animation: popBounce 0.55s cubic-bezier(.17,.89,.32,1.28) forwards;
}
@keyframes popBounce {
	0%   { opacity: 0; transform: scale(0.3); }
	50%  { opacity: 1; transform: scale(1.05); }
	100% { opacity: 1; transform: scale(1); }
}

.delay-1 { transition-delay: 0.15s; }
.delay-2 { transition-delay: 0.3s; }
.delay-3 { transition-delay: 0.45s; }
.delay-4 { transition-delay: 0.6s; }

@media (prefers-reduced-motion: reduce) {
	.reveal, .reveal-left, .reveal-right, .reveal-scale, .reveal-card {
		opacity: 1;
		transform: none;
		transition: none;
		animation: none;
	}
}
