/* ============================================================
   Rupaa  — Animations & keyframes
   All motion respects prefers-reduced-motion (bottom of file).
   ============================================================ */

@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@keyframes floaty-r{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-12px) rotate(4deg)}}
@keyframes blob-drift{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(28px,-22px) scale(1.06)}66%{transform:translate(-20px,16px) scale(.96)}}
@keyframes ripple{to{transform:scale(3.4);opacity:0}}
@keyframes skeleton{from{background-position:150% 0}to{background-position:-70% 0}}
@keyframes load-sweep{0%{transform:scaleX(.08)}50%{transform:scaleX(1)}100%{transform:scaleX(.08)}}
@keyframes modalIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
@keyframes loaderSpin{0%{transform:rotate(0) scale(1);border-radius:16px}50%{transform:rotate(180deg) scale(.8);border-radius:50%}100%{transform:rotate(360deg) scale(1);border-radius:16px}}
@keyframes spin{to{transform:rotate(360deg)}}

/* Ambient motion assignments */
.blob-1{animation:blob-drift 14s ease-in-out infinite}
.blob-2{animation:blob-drift 18s ease-in-out infinite reverse}
.blob-3{animation:blob-drift 12s ease-in-out infinite 2s}
.float-icon{animation:floaty-r 5s ease-in-out infinite}
.float-icon:nth-child(odd){animation-duration:6.5s;animation-delay:.8s}

/* Page-transition: content fades in on every load */
.page-enter{animation:fadeUp .55s var(--ease) both}

/* Hover glow for primary CTAs */
.glow-hover{transition:box-shadow .3s var(--ease),transform var(--dur) var(--ease)}
.glow-hover:hover{box-shadow:0 0 0 4px var(--brand-soft),0 14px 34px rgba(46,70,255,.4)}

/* Busy spinner inside buttons */
.btn.busy::after{content:"";width:15px;height:15px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}

/* Reduced motion: switch everything off gracefully */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
  [data-aos]{opacity:1!important;transform:none!important}
}
