/* KMX — motion (all optional; disabled with prefers-reduced-motion) */
@keyframes line-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes dash{to{stroke-dashoffset:0}}
@keyframes ld{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes ldbar{from{transform:translateX(-100%)}to{transform:none}}
@keyframes rise{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
.js .rv{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform 1s var(--ease);transition-delay:calc(var(--d,0)*1ms)}
.js .rv.in{opacity:1;transform:none}
.js .rv-img img{clip-path:inset(0 0 100% 0);transition:clip-path 1.2s var(--ease-io),transform .9s var(--ease)}
.js .rv-img.in img{clip-path:inset(0)}
.hero .word{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.12em;margin-bottom:-.12em}
.hero .word>span{display:inline-block;transform:translateY(105%);animation:word-up 1s var(--ease) forwards;animation-delay:calc(.35s + var(--i)*.07s)}
@keyframes word-up{to{transform:none}}
.hero .fade{opacity:0;animation:rise 1s var(--ease) forwards;animation-delay:calc(var(--d,0)*1ms)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .js .rv{opacity:1;transform:none}.js .rv-img img{clip-path:none}
  .hero .word>span,.hero .fade{transform:none;opacity:1}
}
