/* ===== ANIMATIONS & PARTICLES ===== */

/* PROGRESS SHIMMER */
@keyframes shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}

/* OVERLAY BOUNCE */
@keyframes bounce{from{transform:scale(1)}to{transform:scale(1.15)}}

/* SPLASH STARS TWINKLE */
@keyframes twinkle{0%,100%{opacity:.2;transform:scale(1)}50%{opacity:1;transform:scale(1.4)}}

/* SPLASH LOGO POP */
@keyframes splash-pop{from{transform:scale(0) rotate(-10deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}

/* SPLASH BUTTON PULSE */
@keyframes pulse-btn{0%,100%{box-shadow:0 6px 28px rgba(255,107,157,.55)}50%{box-shadow:0 8px 40px rgba(255,140,0,.7)}}

/* VQA MODAL FADE */
@keyframes vqa-fade{from{opacity:0}to{opacity:1}}

/* VQA MODAL SLIDE */
@keyframes vqa-slide{from{transform:translateY(40px) scale(.95);opacity:0}to{transform:none;opacity:1}}

/* VQA INTRO POP */
@keyframes vqa-pop{from{transform:scale(0)}to{transform:scale(1)}}

/* CELEBRATE RING */
@keyframes pulse-ring{0%{transform:scale(.8);opacity:1}100%{transform:scale(2.5);opacity:0}}

/* PARTICLES */
.sparkle{position:absolute;pointer-events:none;width:8px;height:8px;border-radius:50%;
  animation:sparkle-anim .6s ease-out forwards;}
@keyframes sparkle-anim{
  0%{transform:scale(0) translate(0,0);opacity:1;}
  100%{transform:scale(1.5) translate(var(--dx),var(--dy));opacity:0;}
}

/* FLOATING EMOJI */
.float-emoji{position:fixed;pointer-events:none;font-size:32px;
  animation:float-up 1.5s ease-out forwards;z-index:998;}
@keyframes float-up{
  0%{transform:translateY(0) scale(.5);opacity:1;}
  100%{transform:translateY(-200px) scale(1.2);opacity:0;}
}

/* CELEBRATE RING */
.pulse-ring{position:absolute;border-radius:50%;border:4px solid #FFD700;
  animation:pulse-ring .6s ease-out forwards;pointer-events:none;}
