.reveal {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity 0.9s ease, transform 0.9s ease;
}

.reveal.is-visible,
.timeline-item.is-visible,
.exp-card.is-visible,
.gallery-card.is-visible {
    opacity: 1;
    transform: none;
}

.timeline-item,
.exp-card,
.gallery-card {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.8s ease, transform 0.8s ease;
}

.hero-content > * {
    opacity: 0;
    transform: translateY(16px);
}

.hero.is-in .eyebrow { animation: rise 0.8s 0.05s ease forwards; }
.hero.is-in h1 { animation: rise 0.9s 0.18s ease forwards; }
.hero.is-in .hero-desc { animation: rise 0.9s 0.34s ease forwards; }
.hero.is-in .hero-actions { animation: rise 0.9s 0.48s ease forwards; }
.hero.is-in .scroll-hint { animation: rise 0.9s 0.7s ease forwards; }

@keyframes rise {
    to {
        opacity: 1;
        transform: none;
    }
}

@keyframes loaderPulse {
    0%, 100% { transform: scaleX(0.4); opacity: 0.4; }
    50% { transform: scaleX(1); opacity: 1; }
}

.featured img {
    transform: scale(1.08);
    transition: transform 12s linear;
}

.featured.is-visible img,
.featured:hover img {
    transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }

    *,
    *::before,
    *::after {
        animation: none !important;
        transition: none !important;
    }

    .reveal,
    .timeline-item,
    .exp-card,
    .gallery-card,
    .hero-content > * {
        opacity: 1 !important;
        transform: none !important;
    }

    .hero-media img,
    .featured img {
        transform: none !important;
    }
}
