/* ============================================================
   AIVibeSite — Launch Animations v2 (punchier)
   Load AFTER style.css. Fires only when animations.js adds
   .anim-ready; degrades gracefully with JS off.
   ============================================================ */

@media (prefers-reduced-motion: reduce){
  body.anim-ready [data-anim]{opacity:1 !important;transform:none !important;filter:none !important}
  body.anim-ready .wf-bar{animation:none !important}
}

/* ---- Logo: pop in ---- */
body.anim-ready [data-anim="logo"]{opacity:0;transform:translateY(-8px) scale(.8)}
body.anim-ready.play [data-anim="logo"]{animation:aviLogoIn .8s cubic-bezier(.34,1.56,.64,1) forwards}
@keyframes aviLogoIn{
  0%{opacity:0;transform:translateY(-8px) scale(.8)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}

/* ---- Waveform bars: lively ripple on load ---- */
body.anim-ready.play.wf-live .wf-bar{
  transform-origin:center bottom;
  animation:aviRipple 1s ease-in-out infinite;
}
body.anim-ready.play.wf-live .wf-bar:nth-child(1){animation-delay:0s}
body.anim-ready.play.wf-live .wf-bar:nth-child(2){animation-delay:.08s}
body.anim-ready.play.wf-live .wf-bar:nth-child(3){animation-delay:.16s}
body.anim-ready.play.wf-live .wf-bar:nth-child(4){animation-delay:.24s}
body.anim-ready.play.wf-live .wf-bar:nth-child(5){animation-delay:.32s}
@keyframes aviRipple{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.7)}}

/* ---- Hero: staggered rise + slight blur clear ---- */
body.anim-ready [data-anim="hero"]{opacity:0;transform:translateY(28px);filter:blur(6px)}
body.anim-ready.play [data-anim="hero"]{animation:aviHeroRise .85s cubic-bezier(.2,.9,.3,1) forwards}
body.anim-ready.play [data-anim="hero"]:nth-of-type(1){animation-delay:.1s}
body.anim-ready.play [data-anim="hero"]:nth-of-type(2){animation-delay:.22s}
body.anim-ready.play [data-anim="hero"]:nth-of-type(3){animation-delay:.34s}
body.anim-ready.play [data-anim="hero"]:nth-of-type(4){animation-delay:.46s}
@keyframes aviHeroRise{to{opacity:1;transform:none;filter:blur(0)}}

/* ---- Scroll reveal: punchier rise + scale ---- */
body.anim-ready [data-anim="up"]{
  opacity:0;transform:translateY(40px) scale(.96);
  transition:opacity .7s cubic-bezier(.2,.9,.3,1),transform .7s cubic-bezier(.2,.9,.3,1);
}
body.anim-ready [data-anim="up"].in{opacity:1;transform:none}

/* ---- Staggered children inside a revealed grid ---- */
body.anim-ready [data-anim="stagger"]{opacity:1}
body.anim-ready [data-anim="stagger"] > *{
  opacity:0;transform:translateY(34px) scale(.94);
  transition:opacity .6s cubic-bezier(.2,.9,.3,1),transform .6s cubic-bezier(.2,.9,.3,1);
}
body.anim-ready [data-anim="stagger"].in > *{opacity:1;transform:none}
body.anim-ready [data-anim="stagger"].in > *:nth-child(1){transition-delay:.05s}
body.anim-ready [data-anim="stagger"].in > *:nth-child(2){transition-delay:.14s}
body.anim-ready [data-anim="stagger"].in > *:nth-child(3){transition-delay:.23s}
body.anim-ready [data-anim="stagger"].in > *:nth-child(4){transition-delay:.32s}
body.anim-ready [data-anim="stagger"].in > *:nth-child(5){transition-delay:.41s}
body.anim-ready [data-anim="stagger"].in > *:nth-child(6){transition-delay:.50s}

/* ---- Button shimmer on hover (subtle life) ---- */
body.anim-ready .btn-primary{position:relative;overflow:hidden}
body.anim-ready .btn-primary::after{
  content:'';position:absolute;top:0;left:-120%;width:60%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);
  transform:skewX(-18deg);transition:none;
}
body.anim-ready .btn-primary:hover::after{animation:aviShimmer .8s ease}
@keyframes aviShimmer{to{left:130%}}
