/**
 * Scroll Reveal Animations
 * Estilos para efeitos de revelação por scroll
 */

/* Estado inicial - elementos ocultos */
.reveal {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, transform;
}

/* Estado revelado */
.reveal.revealed {
    opacity: 1;
    transform: translateY(0);
}

/* Variações de direção */
.reveal-left {
    opacity: 0;
    transform: translateX(-40px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, transform;
}

.reveal-left.revealed {
    opacity: 1;
    transform: translateX(0);
}

.reveal-right {
    opacity: 0;
    transform: translateX(40px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, transform;
}

.reveal-right.revealed {
    opacity: 1;
    transform: translateX(0);
}

.reveal-up {
    opacity: 0;
    transform: translateY(-40px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, transform;
}

.reveal-up.revealed {
    opacity: 1;
    transform: translateY(0);
}

/* Efeitos de escala */
.reveal-scale {
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, transform;
}

.reveal-scale.revealed {
    opacity: 1;
    transform: scale(1);
}

/* Efeitos combinados */
.reveal-fade {
    opacity: 0;
    transition: opacity 0.8s ease-out;
    will-change: opacity;
}

.reveal-fade.revealed {
    opacity: 1;
}

.reveal-zoom-in {
    opacity: 0;
    transform: scale(0.8) translateY(30px);
    transition: opacity 0.7s ease-out, transform 0.7s ease-out;
    will-change: opacity, transform;
}

.reveal-zoom-in.revealed {
    opacity: 1;
    transform: scale(1) translateY(0);
}

/* Animação mais lenta */
.reveal-slow {
    transition-duration: 1s !important;
}

/* Animação mais rápida */
.reveal-fast {
    transition-duration: 0.3s !important;
}

/* Delays personalizados */
.reveal-delay-1 {
    transition-delay: 100ms !important;
}

.reveal-delay-2 {
    transition-delay: 200ms !important;
}

.reveal-delay-3 {
    transition-delay: 300ms !important;
}

.reveal-delay-4 {
    transition-delay: 400ms !important;
}

.reveal-delay-5 {
    transition-delay: 500ms !important;
}

/* Para navegadores que não suportam */
@media (prefers-reduced-motion: reduce) {
    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* Animação de bounce suave ao revelar */
.reveal-bounce {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.6s ease-out, transform 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55);
    will-change: opacity, transform;
}

.reveal-bounce.revealed {
    opacity: 1;
    transform: translateY(0);
}

/* Rotação suave */
.reveal-rotate {
    opacity: 0;
    transform: rotate(-5deg) scale(0.9);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, transform;
}

.reveal-rotate.revealed {
    opacity: 1;
    transform: rotate(0deg) scale(1);
}

/* Efeito blur ao revelar */
.reveal-blur {
    opacity: 0;
    filter: blur(10px);
    transform: translateY(30px);
    transition: opacity 0.6s ease-out, filter 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, filter, transform;
}

.reveal-blur.revealed {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
}
