/* Scroll Reveal — shared primitives for cosmic calculators */

:root {
    --reveal-duration: 0.6s;
    --reveal-easing: cubic-bezier(0.22, 1, 0.36, 1);
    --reveal-distance: 24px;
    --reveal-stagger-step: 90ms;
}

.reveal-on-scroll,
.reveal-stagger > *,
.reveal-scale {
    opacity: 0;
    transition: opacity var(--reveal-duration) var(--reveal-easing),
                transform var(--reveal-duration) var(--reveal-easing);
    will-change: opacity, transform;
}

.reveal-on-scroll {
    transform: translateY(var(--reveal-distance));
}

.reveal-scale {
    transform: scale(0.94);
}

.reveal-stagger > * {
    transform: translateY(var(--reveal-distance));
    transition-delay: calc(var(--reveal-index, 0) * var(--reveal-stagger-step));
}

.reveal-on-scroll.is-visible,
.reveal-stagger.is-visible > *,
.reveal-scale.is-visible {
    opacity: 1;
    transform: none;
    will-change: auto;
}

@media (prefers-reduced-motion: reduce) {
    .reveal-on-scroll,
    .reveal-stagger > *,
    .reveal-scale {
        opacity: 1;
        transform: none;
        transition: none;
    }
}
