/* Motion layer — only active when JS adds .motion to <html> (SEO-safe: without
   JS everything is fully visible). GPU-friendly transform/opacity only. */

.motion .reveal { opacity: 0; transform: translateY(28px); transition: opacity .7s cubic-bezier(.22,.8,.3,1), transform .7s cubic-bezier(.22,.8,.3,1); will-change: opacity, transform; }
.motion .reveal.in { opacity: 1; transform: none; }

.motion .reveal.from-left { transform: translateX(-32px); }
.motion .reveal.from-right { transform: translateX(32px); }
.motion .reveal.zoom { transform: scale(.94); }
.motion .reveal.from-left.in, .motion .reveal.from-right.in, .motion .reveal.zoom.in { transform: none; }

/* lane-dash draw-in */
.motion .lane-dash, .motion .heading-underline::after { transform: scaleX(0); transform-origin: left; transition: transform .8s ease .1s; }
.motion .lane-dash.in, .motion .heading-underline.in::after { transform: scaleX(1); }

/* hero ken-burns */
.hero .hero-bg img { animation: ds-kenburns 16s ease-in-out infinite alternate; }
@keyframes ds-kenburns { from { transform: scale(1.0); } to { transform: scale(1.09); } }

/* signal-dot pulse on hero chip */
.signal-dot { animation: ds-pulse 1.6s ease-in-out infinite; }
@keyframes ds-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(245,179,1,.5); } 50% { box-shadow: 0 0 0 7px rgba(245,179,1,0); } }

@media (prefers-reduced-motion: reduce) {
    .motion .reveal,
    .motion .lane-dash,
    .motion .heading-underline::after { opacity: 1 !important; transform: none !important; transition: none !important; }
    .hero .hero-bg img { animation: none !important; }
    .signal-dot { animation: none !important; }
    html { scroll-behavior: auto !important; }
}
