/**
 * Scroll-triggered stagger reveal for grid cards.
 *
 * The hidden start state is gated behind .mgc-stagger-active, which stagger.js
 * only adds once it has taken over. If the script never runs (JS off/failed),
 * the cards are simply visible — never stuck invisible.
 *
 * @package     mod_grid_card
 * @copyright   (C) 2026 Morrison Web Design
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

.mod-grid-card.mgc-stagger-active .card-item {
    opacity: 0;
    transform: translateY(24px);
    /* Duration + per-card step come from the module's Advanced tab (set inline on
       the root); fall back to the built-in defaults when absent. */
    transition: opacity var(--mgc-stagger-duration, 0.5s) ease,
                transform var(--mgc-stagger-duration, 0.5s) ease;
    /* Per-batch index set inline by stagger.js; 0 until then. */
    transition-delay: calc(var(--mgc-stagger-index, 0) * var(--mgc-stagger-step, 0.1s));
    will-change: opacity, transform;
}

.mod-grid-card.mgc-stagger-active .card-item.is-visible {
    opacity: 1;
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .mod-grid-card.mgc-stagger-active .card-item {
        opacity: 1;
        transform: none;
        transition: none;
    }
}
