/* ══════════════════════════════════════════════════════
   ANIMATIONS & TRANSITIONS
   ══════════════════════════════════════════════════════ */

/* ── Scroll Reveal ─────────────────────────────────── */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity .7s ease, transform .7s ease;
}
.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger children (used on grids) */
.reveal:nth-child(2) { transition-delay: .1s; }
.reveal:nth-child(3) { transition-delay: .2s; }
.reveal:nth-child(4) { transition-delay: .3s; }

/* ── Hero entrance ─────────────────────────────────── */
.hero__title {
    opacity: 0;
    transform: translateY(20px);
    animation: heroIn .8s ease .3s forwards;
}
.hero__subtitle {
    opacity: 0;
    transform: translateY(20px);
    animation: heroIn .8s ease .6s forwards;
}
.hero__scroll {
    opacity: 0;
    animation: heroIn .8s ease 1s forwards;
}
@keyframes heroIn {
    to { opacity: 1; transform: translateY(0); }
}

/* ── Gallery card hover ────────────────────────────── */
.gallery-card {
    transition: transform var(--transition), box-shadow var(--transition);
}
.gallery-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow);
}

/* ── Reduce motion ─────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
    .reveal {
        opacity: 1;
        transform: none;
    }
    .hero__title,
    .hero__subtitle,
    .hero__scroll {
        opacity: 1;
        transform: none;
        animation: none;
    }
}
