/* ==========================================================================
   Animations — subtle motion, fully disabled for reduced-motion users
   Reveal-on-scroll classes are added by assets/js/animations.js, so
   content is always visible when JavaScript is unavailable.
   ========================================================================== */

.reveal {
    opacity: 0;
    transform: translateY(1.5rem);
    transition:
        opacity var(--duration-slow) var(--ease-out),
        transform var(--duration-slow) var(--ease-out);
    transition-delay: var(--reveal-delay, 0ms);
}

.reveal.is-visible {
    opacity: 1;
    transform: none;
}

/* Small stagger for items that appear side by side */
.reveal--delay-1 {
    --reveal-delay: 90ms;
}

.reveal--delay-2 {
    --reveal-delay: 180ms;
}

.reveal--delay-3 {
    --reveal-delay: 270ms;
}

/* Accordion panels fade in when opened */
@keyframes panel-in {
    from {
        opacity: 0;
        transform: translateY(-0.375rem);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

.accordion__panel:not([hidden]) {
    animation: panel-in var(--duration-base) var(--ease-out);
}

/* --------------------------------------------------------------------------
   Respect the operating-system "reduce motion" setting
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        transition-delay: 0s !important;
    }

    .reveal {
        opacity: 1;
        transform: none;
    }
}
