/* Shared motion primitives (Monroky + demo sites) */
:root{--e:cubic-bezier(.16,1,.3,1)}
.js .rv{opacity:0;transform:translate3d(0,34px,0);filter:blur(8px);transition:opacity 1s var(--e),transform 1.25s var(--e),filter 1s var(--e);transition-delay:var(--d,0s);will-change:transform,opacity}
.js .rv.in{opacity:1;transform:none;filter:none}
.w{display:inline-block;overflow:hidden;vertical-align:top;padding:.1em .04em .18em;margin:-.1em -.04em -.18em}
.w>span{display:inline-block}
.js [data-split] .w>span{transform:translate3d(0,118%,0);transition:transform 1.3s var(--e)}
.js [data-split].in .w>span{transform:none}
.js [data-zoom]{transform:scale(1.14);transition:transform 2.6s var(--e)}
.js [data-zoom].in{transform:none}
.js [data-wipe]{clip-path:inset(0 0 100% 0);transition:clip-path 1.5s var(--e);transition-delay:var(--d,0s)}
.js [data-wipe].in{clip-path:inset(0)}
.lw{transition:opacity .3s linear}
@media (prefers-reduced-motion:reduce){
  .js .rv,.js [data-split] .w>span,.js [data-zoom],.js [data-wipe]{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important;transition:none!important}
  html{scroll-behavior:auto!important}
}
