/* WeSound only: one-shot text entrances, using opacity and transform. */
body.ws-motion-enabled h1,body.ws-motion-enabled .hero-tag,body.ws-motion-enabled .hero-sub,body.ws-motion-enabled .hero-cta{animation:none}
body.ws-motion-enabled .reveal{opacity:1;transform:none;transition:none}
@media(prefers-reduced-motion:no-preference){
 html.ws-text-boot :is(h1,h2,h3,.hero-tag,.hero-sub,.hero-cta,main p,section p,.section-label,.eyebrow,.team-name,.proj-desc){opacity:0!important}
 body.ws-motion-enabled .ws-motion-pending{opacity:0!important}
 body.ws-motion-enabled:not(.ws-motion-ready) .ws-motion-live,body.ws-motion-enabled:not(.ws-motion-ready) .ws-word{animation-play-state:paused!important}
}
.ws-text{--ws-duration:560ms;--ws-step:14ms;--ws-lift:7px}
.ws-text.ws-kind-intro{--ws-duration:720ms;--ws-step:45ms;--ws-lift:20px}
.ws-text.ws-kind-heading{--ws-duration:640ms;--ws-step:34ms;--ws-lift:13px}
.ws-text.ws-kind-mini{--ws-duration:540ms;--ws-step:25ms;--ws-lift:9px}
.ws-word{display:inline-block}
.ws-motion-live .ws-word{animation:ws-word-arrive var(--ws-duration) cubic-bezier(.2,.65,.25,1) both;animation-delay:calc(var(--ws-word-index,0)*var(--ws-step));will-change:opacity,transform}
.ws-motion-enabled .ws-motion-live.ws-kind-label{animation:ws-label-arrive 580ms cubic-bezier(.2,.65,.25,1) both}
.ws-motion-enabled .ws-motion-live.ws-kind-stat{animation:ws-stat-arrive 720ms cubic-bezier(.2,.65,.25,1) both}
.ws-motion-enabled .ws-motion-live.ws-kind-link,.ws-motion-enabled .ws-motion-live.ws-motion-block{animation:ws-block-arrive 580ms cubic-bezier(.2,.65,.25,1) both}
.ws-motion-complete .ws-word{animation:none;will-change:auto}
@keyframes ws-word-arrive{from{opacity:0;transform:translate3d(0,var(--ws-lift),0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes ws-label-arrive{from{opacity:0;transform:translate3d(-7px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes ws-stat-arrive{from{opacity:0;transform:translate3d(0,8px,0) scale(.96)}to{opacity:1;transform:translate3d(0,0,0) scale(1)}}
@keyframes ws-block-arrive{from{opacity:0;transform:translate3d(0,6px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@media(prefers-reduced-motion:reduce){.ws-text,.ws-motion-live,.ws-word{animation:none!important;opacity:1!important;transform:none!important;will-change:auto!important}.reveal{opacity:1!important;transform:none!important;transition:none!important}h1,.hero-tag,.hero-sub,.hero-cta{animation:none!important}}
