/* Motion — scroll reveal + hero fade + image hover */

.js-reveal {
    opacity: 0;
    transform: translateY(20px);
    transition:
        opacity 0.9s var(--ease-out-expo),
        transform 0.9s var(--ease-out-expo);
    transition-delay: var(--reveal-delay, 0ms);
}

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

@keyframes heroFade {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.hero__media {
    animation: heroFade 1.4s var(--ease-out-expo) both;
}

@media (prefers-reduced-motion: reduce) {
    .js-reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .hero__media {
        animation: none;
    }

    .output-tile img,
    .portfolio-cell img,
    .gallery-cell img {
        transition: none;
    }

    .hero__scroll span::after {
        animation: none;
    }
}
