/* ============ ANIMATIONS ============ */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes flameFlicker {
  0%, 100% { transform: scale(1) rotate(-1deg); opacity: 0.92; }
  50% { transform: scale(1.05) rotate(1deg); opacity: 1; }
}

@keyframes goldShimmer {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.25); }
}

@keyframes inkDrip {
  0% { stroke-dashoffset: 1000; }
  100% { stroke-dashoffset: 0; }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}

.animate-flicker { animation: flameFlicker 1.2s ease-in-out infinite; transform-origin: bottom center; }
.animate-shimmer { animation: goldShimmer 3s ease-in-out infinite; }
.animate-float { animation: float 4s ease-in-out infinite; }

/* GSAP-targeted classes — initial states */
.gsap-fade-in { opacity: 0; }
.gsap-rise { opacity: 0; transform: translateY(40px); }
.gsap-fall { opacity: 0; transform: translateY(-40px); }
.gsap-side-l { opacity: 0; transform: translateX(-50px); }
.gsap-side-r { opacity: 0; transform: translateX(50px); }
.gsap-scale { opacity: 0; transform: scale(0.85); }

/* === Slide-specific animations === */
.book-cover {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  pointer-events: none;
}
