/* ============================================================
   SNDesk Blog — Entrance Animations
   Driven by data-anim + data-anim-delay attributes.
   The JS observer adds .is-visible when the element enters
   the viewport. Respects prefers-reduced-motion.
============================================================ */

@media (prefers-reduced-motion: no-preference) {

    [data-anim] {
        opacity: 0;
        transition: opacity 0.65s cubic-bezier(0.16, 1, 0.3, 1),
                    transform 0.65s cubic-bezier(0.16, 1, 0.3, 1);
    }

    [data-anim="fade-up"]     { transform: translateY(36px); }
    [data-anim="fade-in"]     { transform: translateY(0);    }
    [data-anim="slide-left"]  { transform: translateX(-44px); }
    [data-anim="slide-right"] { transform: translateX(44px);  }
    [data-anim="scale"]       { transform: scale(0.91);       }

    [data-anim].is-visible {
        opacity: 1;
        transform: none;
    }

    /* ============================================================
       PAGE ENTRANCE — played when the article/case/ebook loads
    ============================================================ */
    @keyframes snd-page-enter {
        from {
            opacity: 0;
            transform: translateY(22px);
        }
        to {
            opacity: 1;
            transform: none;
        }
    }

    .post-shell {
        animation: snd-page-enter 0.55s cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    .case-hero,
    .ebook-hero {
        animation: snd-page-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    /* ============================================================
       POST SHOW 
    ============================================================ */
    .article-kicker {
        animation: snd-page-enter 0.5s cubic-bezier(0.16, 1, 0.3, 1) 0.05s both;
    }
    .article-title {
        animation: snd-page-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) 0.16s both;
    }
    .article-subtitle {
        animation: snd-page-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) 0.28s both;
    }
    .article-byline {
        animation: snd-page-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) 0.40s both;
    }
    .article-cover-wrap {
        animation: snd-page-enter 0.75s cubic-bezier(0.16, 1, 0.3, 1) 0.52s both;
    }
    .content-relative-wrapper {
        animation: snd-page-enter 0.7s cubic-bezier(0.16, 1, 0.3, 1) 0.62s both;
    }

    /* ============================================================
       PAGE EXIT — applied via JS when the user clicks a post link
    ============================================================ */
    body.snd-page-exit {
        opacity: 0 !important;
        transition: opacity 0.22s ease !important;
        pointer-events: none;
    }
}
