@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}
@keyframes scaleIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
@keyframes cardEntrance{from{opacity:0;transform:translateY(1.5rem) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes popupSlide{from{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:translateY(0)}}
@keyframes toastIn{from{opacity:0;transform:translateY(10px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes notifIn{from{opacity:0;transform:translateX(2rem) scale(.96)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@keyframes shimmer{0%{background-position:0}50%{background-position:100%}100%{background-position:0}}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(92,55,139,.4)}50%{box-shadow:0 0 0 6px rgba(92,55,139,0)}}
@keyframes spin{to{transform:rotate(360deg)}}
.anim-fade-up{animation:fadeUp .6s var(--ease) both}
.anim-scale-in{animation:scaleIn .5s var(--ease) both}
.anim-card{animation:cardEntrance .6s var(--ease) both}
.anim-popup{animation:popupSlide .4s var(--easeb) both}
.anim-toast{animation:toastIn .45s var(--easeb) both}
.anim-notif{animation:notifIn .5s var(--easeb) both}
.anim-bounce{animation:bounce 1.6s ease-in-out infinite}
.anim-spin{animation:spin .8s linear infinite}
.d1{animation-delay:.06s}.d2{animation-delay:.12s}.d3{animation-delay:.18s}.d4{animation-delay:.24s}.d5{animation-delay:.30s}.d6{animation-delay:.36s}
[data-anim]{opacity:0;will-change:opacity,transform}
[data-anim="mask"]{clip-path:inset(100% 0 0 0);will-change:clip-path,transform}
.rw{display:inline-block;overflow:hidden;vertical-align:top;line-height:inherit}
.rwi{display:inline-block;will-change:transform;transform:translate3d(0,115%,0)}
@media (prefers-reduced-motion:reduce){
  [data-anim]{opacity:1!important;transform:none!important;clip-path:none!important}
  .rwi{transform:none!important}
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
