/**
 * JS-CMS Animations
 * Lightweight motion system for published sites.
 */

:root {
    --cms-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
    --cms-ease-smooth: cubic-bezier(0.16, 1, 0.3, 1);
    --cms-ease-bounce-soft: cubic-bezier(0.2, 0.9, 0.2, 1);
}

/* ---------------------------------------------------------------------------
   Reveal on scroll
   --------------------------------------------------------------------------- */
.cms-reveal,
.reveal-on-scroll {
    opacity: 0;
    transform: translate3d(0, 24px, 0);
    transition:
        opacity 0.7s var(--cms-ease-out),
        transform 0.7s var(--cms-ease-out);
    will-change: opacity, transform;
}

.cms-reveal.revealed,
.reveal-on-scroll.revealed {
    opacity: 1;
    transform: none;
}

.cms-reveal.reveal-left,
.reveal-on-scroll.reveal-left {
    transform: translate3d(-28px, 0, 0);
}

.cms-reveal.reveal-right,
.reveal-on-scroll.reveal-right {
    transform: translate3d(28px, 0, 0);
}

.cms-reveal.reveal-scale,
.reveal-on-scroll.reveal-scale {
    transform: scale(0.96);
}

.cms-reveal.reveal-soft,
.reveal-on-scroll.reveal-soft {
    transform: translate3d(0, 18px, 0);
}

/* ---------------------------------------------------------------------------
   Page intro
   --------------------------------------------------------------------------- */
.cms-intro-motion {
    opacity: 0;
    transform: translate3d(0, 22px, 0);
    transition:
        opacity 0.8s var(--cms-ease-smooth),
        transform 0.8s var(--cms-ease-smooth);
}

.cms-intro-motion.is-visible {
    opacity: 1;
    transform: none;
}

/* ---------------------------------------------------------------------------
   Interactive surfaces
   --------------------------------------------------------------------------- */
.cms-post-card,
.cms-generic-card,
.bl-fg__side-item article,
.cms-tool__card,
.tc-std__card,
.tc-split__tool,
.tc-split__info,
.cms-section-header,
.post-related-grid article,
.team-card,
.team-car__card {
    transition:
        box-shadow 0.28s var(--cms-ease-smooth),
        border-color 0.24s ease,
        background-color 0.24s ease;
}

.cms-post-card img,
.cms-generic-card img,
.bl-fg__side-item article img,
.hero-centered .cms-parallax-media,
.hero-post-split__image img,
.hero-cwm__media img {
    transition: transform 0.45s var(--cms-ease-smooth);
}

.cms-section-header__title,
.hero-centered h1,
.hero-post-split__text h1,
.hero-cwm__text h1 {
    text-wrap: balance;
}

/* ---------------------------------------------------------------------------
   Ambient motion
   --------------------------------------------------------------------------- */
.hero-centered,
.hero-post-split__image,
.hero-cwm__media {
    isolation: isolate;
}

.hero-centered::after,
.hero-post-split__image::after,
.hero-cwm__media::after,
.hero-centered__scroll {
    display: none !important;
}

/* ---------------------------------------------------------------------------
   Glass card
   --------------------------------------------------------------------------- */
.glass-card {
    background: rgba(255, 255, 255, 0.05);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.1);
}

/* ---------------------------------------------------------------------------
   Smooth transitions
   --------------------------------------------------------------------------- */
.transition-smooth {
    transition: all 0.3s ease;
}

.transition-smooth-slow {
    transition: all 0.6s ease;
}

/* ---------------------------------------------------------------------------
   Reduced motion
   --------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    .cms-reveal,
    .reveal-on-scroll,
    .cms-intro-motion,
    .cms-post-card,
    .cms-generic-card,
    .bl-fg__side-item article,
    .cms-post-card img,
    .cms-generic-card img,
    .bl-fg__side-item article img,
    .hero-centered .cms-parallax-media,
    .hero-post-split__image img,
    .hero-cwm__media img,
    .hero-centered::after,
    .hero-post-split__image::after,
    .hero-cwm__media::after,
    .hero-centered__scroll {
        animation: none !important;
        transition: none !important;
        transform: none !important;
        filter: none !important;
        opacity: 1 !important;
    }
}

@media (hover: hover) and (pointer: fine) {
    .cms-post-card:hover img,
    .cms-generic-card:hover img,
    .bl-fg__side-item article:hover img,
    .hero-post-split__image:hover img,
    .hero-cwm__media:hover img {
        transform: scale(1.01);
    }
}

/* Creation QA baseline: listing cards must never stay hidden on mobile. */
@media (max-width: 800px) {
    :is(
        .listing-grid,
        .cms-post-list,
        .post-related-grid,
        .author-posts,
        .cms-related-posts
    ) :is(
        .cms-post-card,
        .cms-post-card.cms-reveal,
        .cms-post-card.reveal-on-scroll,
        [data-reveal]
    ) {
        opacity: 1 !important;
        transform: none !important;
        animation: none !important;
        transition: none !important;
        filter: none !important;
    }
}
