/* Subtle, tasteful motion only */
@keyframes fade-up {
    from {
        opacity: 0;
        transform: translateY(24px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes skeleton-sweep {
    to {
        transform: translateX(100%);
    }
}

@keyframes fade-in {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

/* Reveal-on-scroll: elements start hidden, JS adds .is-visible */
.reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity var(--transition-slow) var(--ease),
        transform var(--transition-slow) var(--ease);
    will-change: opacity, transform;
}

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

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