/* ============================================================
   ANIMATIONS.CSS — Keyframes & animation-specific rules
   ============================================================ */

/* ── Floating orbs ─────────────────────────────────────────── */
@keyframes floatOrb1 {
  0%,  100% { transform: translate(  0px,   0px) scale(1.00); opacity: 0.35; }
  25%       { transform: translate( 70px,  55px) scale(1.05); opacity: 0.42; }
  50%       { transform: translate( 30px, 110px) scale(0.95); opacity: 0.28; }
  75%       { transform: translate(-50px,  45px) scale(1.08); opacity: 0.38; }
}

@keyframes floatOrb2 {
  0%,  100% { transform: translate(  0px,   0px) scale(1.00); opacity: 0.30; }
  20%       { transform: translate(-55px, -70px) scale(1.10); opacity: 0.26; }
  55%       { transform: translate(-90px, -35px) scale(0.90); opacity: 0.38; }
  80%       { transform: translate(-25px, -95px) scale(1.04); opacity: 0.32; }
}

@keyframes floatOrb3 {
  0%,  100% { transform: translate(  0px,   0px) scale(1.00); opacity: 0.20; }
  35%       { transform: translate(-65px,  45px) scale(1.15); opacity: 0.26; }
  68%       { transform: translate( 45px, -55px) scale(0.85); opacity: 0.16; }
}

/* ── Scroll hint ────────────────────────────────────────────── */
@keyframes scrollDrop {
  0%          { transform: scaleY(0); transform-origin: top;    opacity: 0;   }
  20%         { transform: scaleY(0); transform-origin: top;    opacity: 1;   }
  50%         { transform: scaleY(1); transform-origin: top;    opacity: 1;   }
  51%         { transform: scaleY(1); transform-origin: bottom; opacity: 1;   }
  85%         { transform: scaleY(0); transform-origin: bottom; opacity: 0;   }
  100%        { transform: scaleY(0); transform-origin: bottom; opacity: 0;   }
}

@keyframes scrollFade {
  0%, 100% { opacity: 0.20; }
  50%      { opacity: 0.55; }
}

/* ── Button glow pulse (idle state on download btn) ─────────── */
@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 14px rgba(139, 92, 246, 0.20); }
  50%      { box-shadow: 0 0 30px rgba(139, 92, 246, 0.48),
                         0 0 60px rgba(96,  165, 250, 0.14); }
}

/* ── Blinking caret (mock window) ───────────────────────────── */
@keyframes caretBlink {
  0%, 100% { opacity: 0.85; }
  50%      { opacity: 0.10; }
}

/* ── Reveal entrance (used via JS by toggling .in-view) ─────── */
/* Defined here as reference; actual transition is in style.css   */
