/* Scroll Reveal Animations */
.reveal-fade-up {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.reveal-scale-in {
    opacity: 0;
    transform: scale(0.95);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.reveal-fade-up.is-visible,
.reveal-scale-in.is-visible {
    opacity: 1;
    transform: none;
}

/* Staggering for lists or grids */
.stagger-1 {
    transition-delay: 0.1s;
}

.stagger-2 {
    transition-delay: 0.2s;
}

.stagger-3 {
    transition-delay: 0.3s;
}

.stagger-4 {
    transition-delay: 0.4s;
}

/* Floating Micro-animations */
@keyframes float {
    0% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-10px);
    }

    100% {
        transform: translateY(0px);
    }
}

@keyframes float-subtle {
    0% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-5px);
    }

    100% {
        transform: translateY(0px);
    }
}

.floating {
    animation: float 6s ease-in-out infinite;
}

.floating-delayed {
    animation: float 8s ease-in-out infinite;
    animation-delay: 1s;
}

.floating-subtle {
    animation: float-subtle 5s ease-in-out infinite;
}

/* Header Underline Expansion */
.reveal-underline {
    transition: width 1.2s cubic-bezier(0.65, 0, 0.35, 1);
    width: 0 !important;
}

.is-visible .reveal-underline {
    width: 100% !important;
}