
/* =========================================================
   SWIFTROUTE — SCROLL REVEAL + PARALLAX MOTION
   ========================================================= */

/* Base hidden state only after JS enables motion */
html.sr-motion .sr-reveal{
    opacity:0;
    transform:translateY(34px) scale(.985);
    transition:
        opacity .75s cubic-bezier(.22,.61,.36,1),
        transform .75s cubic-bezier(.22,.61,.36,1);
    will-change:opacity,transform;
}

html.sr-motion .sr-reveal.sr-reveal-left{
    transform:translateX(-36px);
}

html.sr-motion .sr-reveal.sr-reveal-right{
    transform:translateX(36px);
}

html.sr-motion .sr-reveal.sr-reveal-zoom{
    transform:scale(.94);
}

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

/* Staggered children */
html.sr-motion .sr-stagger > *{
    opacity:0;
    transform:translateY(24px);
    transition:
        opacity .62s cubic-bezier(.22,.61,.36,1),
        transform .62s cubic-bezier(.22,.61,.36,1);
}

html.sr-motion .sr-stagger.is-visible > *{
    opacity:1;
    transform:none;
}

html.sr-motion .sr-stagger.is-visible > *:nth-child(1){transition-delay:.04s}
html.sr-motion .sr-stagger.is-visible > *:nth-child(2){transition-delay:.10s}
html.sr-motion .sr-stagger.is-visible > *:nth-child(3){transition-delay:.16s}
html.sr-motion .sr-stagger.is-visible > *:nth-child(4){transition-delay:.22s}
html.sr-motion .sr-stagger.is-visible > *:nth-child(5){transition-delay:.28s}
html.sr-motion .sr-stagger.is-visible > *:nth-child(6){transition-delay:.34s}

/* Hero load entrance */
html.sr-motion .sr-hero-copy{
    animation:srHeroIn .9s cubic-bezier(.22,.61,.36,1) both;
}

html.sr-motion .sr-track-card{
    animation:srTrackIn 1s .14s cubic-bezier(.22,.61,.36,1) both;
}

@keyframes srHeroIn{
    from{opacity:0;transform:translateY(28px)}
    to{opacity:1;transform:none}
}

@keyframes srTrackIn{
    from{opacity:0;transform:translateY(34px) scale(.98)}
    to{opacity:1;transform:none}
}

/* Parallax hero image */
.sr-hero-media,
.sr-hero-media img{
    will-change:transform;
}

.sr-hero-media img{
    transform:translate3d(0,var(--sr-parallax-y,0px),0) scale(1.06);
    transition:transform .12s linear;
}

/* Gentle premium hover motion */
@media (hover:hover){
    .sr-service-card,
    .cms-service,
    .sr-benefit-grid article,
    .sr-process-grid article{
        transition:
            transform .28s ease,
            box-shadow .28s ease,
            border-color .28s ease;
    }

    .sr-service-card:hover,
    .cms-service:hover{
        transform:translateY(-6px);
        box-shadow:0 18px 40px rgba(13,39,54,.12);
    }

    .sr-benefit-grid article:hover,
    .sr-process-grid article:hover{
        transform:translateY(-4px);
    }
}

/* Mobile: keep movement elegant, not excessive */
@media (max-width:767px){
    html.sr-motion .sr-reveal{
        transform:translateY(24px);
        transition-duration:.62s;
    }

    html.sr-motion .sr-reveal.sr-reveal-left,
    html.sr-motion .sr-reveal.sr-reveal-right{
        transform:translateY(24px);
    }

    .sr-hero-media img{
        transform:translate3d(0,var(--sr-parallax-y,0px),0) scale(1.08);
    }
}

/* Respect accessibility preference */
@media (prefers-reduced-motion: reduce){
    html.sr-motion .sr-reveal,
    html.sr-motion .sr-stagger > *,
    html.sr-motion .sr-hero-copy,
    html.sr-motion .sr-track-card,
    .sr-hero-media img{
        opacity:1!important;
        transform:none!important;
        animation:none!important;
        transition:none!important;
    }
}
