/* ============================================================
   animations.css — Keyframes, reveals y efectos
   ============================================================ */

/* ---------- Cursor parpadeante de la terminal ---------- */
@keyframes blink {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

/* ---------- Float para tarjetas decorativas ---------- */
@keyframes floaty {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}
.float-card.fc-1 { animation: floaty 5s ease-in-out infinite; }
.float-card.fc-2 { animation: floaty 6s ease-in-out infinite 0.8s; }

/* ---------- Glow pulsante (badge hero) ---------- */
@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(34, 211, 238, 0.45); }
  50% { box-shadow: 0 0 0 6px rgba(34, 211, 238, 0); }
}
.hero-badge .dot { animation: pulseGlow 2s ease-in-out infinite; }

/* ---------- Aurora / degradado animado de fondo (refuerzo) ---------- */
@keyframes auroraShift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* ---------- Entrada del contenido (reveal al hacer scroll) ---------- */
.reveal {
  opacity: 0;
  transform: translateY(36px);
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
              transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}
.reveal.in-view {
  opacity: 1;
  transform: translateY(0);
}
/* Escalado para variantes suaves */
.reveal-scale { transform: translateY(20px) scale(0.97); }
.reveal-scale.in-view { transform: translateY(0) scale(1); }

/* Retardo escalonado para grids */
.reveal[data-delay="1"] { transition-delay: 0.1s; }
.reveal[data-delay="2"] { transition-delay: 0.2s; }
.reveal[data-delay="3"] { transition-delay: 0.3s; }
.reveal[data-delay="4"] { transition-delay: 0.4s; }

/* ---------- Hero: entrada inicial ---------- */
@keyframes heroIn {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
.hero-badge { animation: heroIn 0.7s ease both 0.1s; }
.hero h1 { animation: heroIn 0.7s ease both 0.2s; }
.hero .lead { animation: heroIn 0.7s ease both 0.35s; }
.hero-cta { animation: heroIn 0.7s ease both 0.5s; }
.hero-visual { animation: heroIn 0.9s ease both 0.4s; }

/* ---------- Respetar prefers-reduced-motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1 !important; transform: none !important; }
  .float-card, .hero-badge .dot { animation: none !important; }
}
