/* Fresh animation utility — self-contained CSS */
/* No external library or CDN dependency. */

:root{
  --motion-duration:1s;
  --motion-delay:0s;
  --motion-repeat:1;
}

.motion,
[class*="motion-"]{
  animation-duration:var(--motion-duration);
  animation-fill-mode:both;
  animation-delay:var(--motion-delay);
  animation-iteration-count:var(--motion-repeat);
}

.motion-infinite{animation-iteration-count:infinite}
.motion-repeat-1{animation-iteration-count:1}
.motion-repeat-2{animation-iteration-count:2}
.motion-repeat-3{animation-iteration-count:3}
.motion-fast{animation-duration:.6s}
.motion-slow{animation-duration:1.8s}

@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0}}
@keyframes fadeInUp{from{opacity:0;transform:translate3d(0,40px,0)}to{opacity:1;transform:none}}
@keyframes fadeInDown{from{opacity:0;transform:translate3d(0,-40px,0)}to{opacity:1;transform:none}}
@keyframes fadeInLeft{from{opacity:0;transform:translate3d(-40px,0,0)}to{opacity:1;transform:none}}
@keyframes fadeInRight{from{opacity:0;transform:translate3d(40px,0,0)}to{opacity:1;transform:none}}
@keyframes zoomIn{from{opacity:0;transform:scale3d(.7,.7,.7)}to{opacity:1;transform:none}}
@keyframes zoomOut{from{opacity:1}to{opacity:0;transform:scale3d(.7,.7,.7)}}
@keyframes bounce{0%,20%,53%,80%,100%{transform:translate3d(0,0,0)}40%,43%{transform:translate3d(0,-22px,0)}70%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,-3px,0)}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
@keyframes shakeX{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
@keyframes shakeY{0%,100%{transform:translateY(0)}25%{transform:translateY(-8px)}75%{transform:translateY(8px)}}
@keyframes flip{from{transform:perspective(400px) rotateY(-90deg);opacity:0}to{transform:perspective(400px) rotateY(0);opacity:1}}
@keyframes heartBeat{0%,100%{transform:scale(1)}14%,42%{transform:scale(1.15)}28%{transform:scale(1)}}
@keyframes swing{20%{transform:rotate(12deg)}40%{transform:rotate(-8deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-3deg)}100%{transform:rotate(0)}}
@keyframes tada{0%,100%{transform:scale(1) rotate(0)}10%,20%{transform:scale(.95) rotate(-2deg)}30%,50%,70%,90%{transform:scale(1.05) rotate(2deg)}40%,60%,80%{transform:scale(1.05) rotate(-2deg)}}
@keyframes rubberBand{0%,100%{transform:scaleX(1)}30%{transform:scale3d(1.2,.8,1)}40%{transform:scale3d(.8,1.15,1)}50%{transform:scale3d(1.1,.9,1)}65%{transform:scale3d(.97,1.03,1)}75%{transform:scale3d(1.03,.97,1)}}
@keyframes wobble{0%,100%{transform:translateX(0)}15%{transform:translateX(-18px) rotate(-3deg)}30%{transform:translateX(14px) rotate(2deg)}45%{transform:translateX(-10px) rotate(-2deg)}60%{transform:translateX(7px) rotate(1deg)}75%{transform:translateX(-3px)}}
@keyframes jello{0%,100%{transform:skew(0)}22%{transform:skew(-8deg,-8deg)}33%{transform:skew(5deg,5deg)}44%{transform:skew(-3deg,-3deg)}55%{transform:skew(2deg,2deg)}66%{transform:skew(-1deg,-1deg)}}
.motion-backInDown{animation-name:backInDown}
.motion-backInLeft{animation-name:backInLeft}
.motion-backInRight{animation-name:backInRight}
.motion-backInUp{animation-name:backInUp}
.motion-backOutDown{animation-name:backOutDown}
.motion-backOutLeft{animation-name:backOutLeft}
.motion-backOutRight{animation-name:backOutRight}
.motion-backOutUp{animation-name:backOutUp}
.motion-bounce{animation-name:bounce}
.motion-bounceIn{animation-name:bounceIn}
.motion-bounceInDown{animation-name:bounceInDown}
.motion-bounceInLeft{animation-name:bounceInLeft}
.motion-bounceInRight{animation-name:bounceInRight}
.motion-bounceInUp{animation-name:bounceInUp}
.motion-bounceOut{animation-name:bounceOut}
.motion-bounceOutDown{animation-name:bounceOutDown}
.motion-bounceOutLeft{animation-name:bounceOutLeft}
.motion-bounceOutRight{animation-name:bounceOutRight}
.motion-bounceOutUp{animation-name:bounceOutUp}
.motion-fadeIn{animation-name:fadeIn}
.motion-fadeInBottomLeft{animation-name:fadeInBottomLeft}
.motion-fadeInBottomRight{animation-name:fadeInBottomRight}
.motion-fadeInDown{animation-name:fadeInDown}
.motion-fadeInLeft{animation-name:fadeInLeft}
.motion-fadeInRight{animation-name:fadeInRight}
.motion-fadeInTopLeft{animation-name:fadeInTopLeft}
.motion-fadeInTopRight{animation-name:fadeInTopRight}
.motion-fadeInUp{animation-name:fadeInUp}
.motion-fadeOut{animation-name:fadeOut}
.motion-fadeOutDown{animation-name:fadeOutDown}
.motion-fadeOutDownBig{animation-name:fadeOutDownBig}
.motion-fadeOutLeft{animation-name:fadeOutLeft}
.motion-fadeOutLeftBig{animation-name:fadeOutLeftBig}
.motion-fadeOutRight{animation-name:fadeOutRight}
.motion-fadeOutRightBig{animation-name:fadeOutRightBig}
.motion-fadeOutUp{animation-name:fadeOutUp}
.motion-fadeOutUpBig{animation-name:fadeOutUpBig}
.motion-flip{animation-name:flip}
.motion-flipInX{animation-name:flipInX}
.motion-flipInY{animation-name:flipInY}
.motion-flipOutX{animation-name:flipOutX}
.motion-flipOutY{animation-name:flipOutY}
.motion-heartBeat{animation-name:heartBeat}
.motion-jello{animation-name:jello}
.motion-lightSpeedInLeft{animation-name:lightSpeedInLeft}
.motion-lightSpeedInRight{animation-name:lightSpeedInRight}
.motion-lightSpeedOutLeft{animation-name:lightSpeedOutLeft}
.motion-lightSpeedOutRight{animation-name:lightSpeedOutRight}
.motion-pulse{animation-name:pulse}
.motion-rubberBand{animation-name:rubberBand}
.motion-shakeX{animation-name:shakeX}
.motion-shakeY{animation-name:shakeY}
.motion-swing{animation-name:swing}
.motion-tada{animation-name:tada}
.motion-wobble{animation-name:wobble}
.motion-zoomIn{animation-name:zoomIn}
.motion-zoomOut{animation-name:zoomOut}

/* Optional compatibility aliases for existing markup. */
.animate__animated{animation-duration:var(--motion-duration);animation-fill-mode:both}
.animate__backInDown{animation-name:backInDown}
.animate__backInLeft{animation-name:backInLeft}
.animate__backInRight{animation-name:backInRight}
.animate__backInUp{animation-name:backInUp}
.animate__backOutDown{animation-name:backOutDown}
.animate__backOutLeft{animation-name:backOutLeft}
.animate__backOutRight{animation-name:backOutRight}
.animate__backOutUp{animation-name:backOutUp}
.animate__bounce{animation-name:bounce}
.animate__bounceIn{animation-name:bounceIn}
.animate__bounceInDown{animation-name:bounceInDown}
.animate__bounceInLeft{animation-name:bounceInLeft}
.animate__bounceInRight{animation-name:bounceInRight}
.animate__bounceInUp{animation-name:bounceInUp}
.animate__bounceOut{animation-name:bounceOut}
.animate__bounceOutDown{animation-name:bounceOutDown}
.animate__bounceOutLeft{animation-name:bounceOutLeft}
.animate__bounceOutRight{animation-name:bounceOutRight}
.animate__bounceOutUp{animation-name:bounceOutUp}
.animate__fadeIn{animation-name:fadeIn}
.animate__fadeInBottomLeft{animation-name:fadeInBottomLeft}
.animate__fadeInBottomRight{animation-name:fadeInBottomRight}
.animate__fadeInDown{animation-name:fadeInDown}
.animate__fadeInLeft{animation-name:fadeInLeft}
.animate__fadeInRight{animation-name:fadeInRight}
.animate__fadeInTopLeft{animation-name:fadeInTopLeft}
.animate__fadeInTopRight{animation-name:fadeInTopRight}
.animate__fadeInUp{animation-name:fadeInUp}
.animate__fadeOut{animation-name:fadeOut}
.animate__fadeOutDown{animation-name:fadeOutDown}
.animate__fadeOutDownBig{animation-name:fadeOutDownBig}
.animate__fadeOutLeft{animation-name:fadeOutLeft}
.animate__fadeOutLeftBig{animation-name:fadeOutLeftBig}
.animate__fadeOutRight{animation-name:fadeOutRight}
.animate__fadeOutRightBig{animation-name:fadeOutRightBig}
.animate__fadeOutUp{animation-name:fadeOutUp}
.animate__fadeOutUpBig{animation-name:fadeOutUpBig}
.animate__flip{animation-name:flip}
.animate__flipInX{animation-name:flipInX}
.animate__flipInY{animation-name:flipInY}
.animate__flipOutX{animation-name:flipOutX}
.animate__flipOutY{animation-name:flipOutY}
.animate__heartBeat{animation-name:heartBeat}
.animate__jello{animation-name:jello}
.animate__lightSpeedInLeft{animation-name:lightSpeedInLeft}
.animate__lightSpeedInRight{animation-name:lightSpeedInRight}
.animate__lightSpeedOutLeft{animation-name:lightSpeedOutLeft}
.animate__lightSpeedOutRight{animation-name:lightSpeedOutRight}
.animate__pulse{animation-name:pulse}
.animate__rubberBand{animation-name:rubberBand}
.animate__shakeX{animation-name:shakeX}
.animate__shakeY{animation-name:shakeY}
.animate__swing{animation-name:swing}
.animate__tada{animation-name:tada}
.animate__wobble{animation-name:wobble}
.animate__zoomIn{animation-name:zoomIn}
.animate__zoomOut{animation-name:zoomOut}

@media (prefers-reduced-motion:reduce){
  .motion,[class*="motion-"],.animate__animated{
    animation-duration:1ms!important;
    animation-iteration-count:1!important;
    transition-duration:1ms!important;
  }
}
