/* Apple-style Scroll Animations */

/* Base transition settings for smooth feeling */
:root {
    --ease-out-apple: cubic-bezier(0.25, 1, 0.5, 1);
    --duration-apple: 0.8s;
}

/* Base class for hidden elements */
.reveal-on-scroll {
    opacity: 0;
    transform: translateY(30px) scale(0.98);
    filter: blur(10px);
    transition:
        opacity var(--duration-apple) var(--ease-out-apple),
        transform var(--duration-apple) var(--ease-out-apple),
        filter var(--duration-apple) var(--ease-out-apple);
    will-change: opacity, transform, filter;
}

/* Active state (triggered by JS) */
.reveal-on-scroll.is-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
}

/* Staggered delays for child elements (grids, lists) */
.reveal-stagger>* {
    opacity: 0;
    transform: translateY(20px);
    transition:
        opacity 0.6s var(--ease-out-apple),
        transform 0.6s var(--ease-out-apple);
}

.reveal-stagger.is-visible>* {
    opacity: 1;
    transform: translateY(0);
}

/* Generate stagger delays (up to 10 items) */
.reveal-stagger.is-visible>*:nth-child(1) {
    transition-delay: 0.1s;
}

.reveal-stagger.is-visible>*:nth-child(2) {
    transition-delay: 0.2s;
}

.reveal-stagger.is-visible>*:nth-child(3) {
    transition-delay: 0.3s;
}

.reveal-stagger.is-visible>*:nth-child(4) {
    transition-delay: 0.4s;
}

.reveal-stagger.is-visible>*:nth-child(5) {
    transition-delay: 0.5s;
}

.reveal-stagger.is-visible>*:nth-child(6) {
    transition-delay: 0.6s;
}

.reveal-stagger.is-visible>*:nth-child(7) {
    transition-delay: 0.7s;
}

.reveal-stagger.is-visible>*:nth-child(8) {
    transition-delay: 0.8s;
}

.reveal-stagger.is-visible>*:nth-child(9) {
    transition-delay: 0.9s;
}

.reveal-stagger.is-visible>*:nth-child(10) {
    transition-delay: 1.0s;
}

/* Special Hero Animation (Load trigger) */
.hero-animate-enter {
    animation: heroFadeIn 1.2s var(--ease-out-apple) forwards;
    opacity: 0;
    filter: blur(5px);
    transform: scale(0.95);
}

@keyframes heroFadeIn {
    to {
        opacity: 1;
        filter: blur(0);
        transform: scale(1);
    }
}

/* Delay for hero elements */
.hero-delay-1 {
    animation-delay: 0.2s;
}

.hero-delay-2 {
    animation-delay: 0.4s;
}

.hero-delay-3 {
    animation-delay: 0.6s;
}