/* ════════════════════════════════════════
   animations.css — Keyframes & Reveal Classes
   ════════════════════════════════════════ */

/* ── Reveal (fade up) ── */
.reveal {
  opacity: 0;
  transform: translateY(32px);
  transition:
    opacity 0.9s var(--ease-out),
    transform 0.9s var(--ease-out);
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── Keyframes ── */
@keyframes float-1 {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50%       { transform: translateX(-50%) translateY(-28px); }
}

@keyframes float-2 {
  0%, 100% { transform: translateY(0) translateX(0); }
  33%       { transform: translateY(18px) translateX(-10px); }
  66%       { transform: translateY(-10px) translateX(8px); }
}

@keyframes float-3 {
  0%, 100% { transform: translateY(0) translateX(0); }
  50%       { transform: translateY(-22px) translateX(12px); }
}

@keyframes twinkle {
  0%, 100% { opacity: var(--op-min, 0.08); }
  50%       { opacity: var(--op-max, 0.55); }
}

@keyframes scroll-line {
  0%   { transform: scaleY(0); transform-origin: top; }
  49%  { transform: scaleY(1); transform-origin: top; }
  50%  { transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

@keyframes pulse-dot {
  0%, 100% { box-shadow: 0 0 0 3px rgba(167,139,250,0.2), 0 0 16px rgba(167,139,250,0.2); }
  50%       { box-shadow: 0 0 0 7px rgba(167,139,250,0.08), 0 0 28px rgba(167,139,250,0.35); }
}

@keyframes line-draw {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

@keyframes fade-in-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
