/* Shared page motion (home, about, services). Reveals gated on .js with a CSS failsafe. */
.js [data-rv]{opacity:0;transform:translateY(24px);transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1);will-change:opacity,transform}
.js span[data-rv]{display:inline-block}
.js [data-rv="fade"]{transform:none}
.js [data-rv].in{opacity:1;transform:none}
.js:not(.rv-ready) [data-rv]{animation:rv-failsafe 0s 2.5s forwards}
@keyframes rv-failsafe{to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
.js [data-rv]{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}
}
