/* ═══════════════════════════════════════════
   ANIMATIONS — Keyframes y sistema de revelado
   ═══════════════════════════════════════════ */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(28px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(200%); }
}
@keyframes drift {
  0%, 100% { transform: translate(0, 0); }
  33% { transform: translate(20px, -15px); }
  66% { transform: translate(-10px, 10px); }
}
@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 4px rgba(79,122,189,0.2); }
  50% { box-shadow: 0 0 20px rgba(79,122,189,0.4), 0 0 40px rgba(79,122,189,0.1); }
}
@keyframes gradientFlow {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes shineSlide {
  0% { left: -100%; }
  100% { left: 200%; }
}
@keyframes dotPing {
  0% { transform: scale(1); opacity: 0.7; }
  100% { transform: scale(2.5); opacity: 0; }
}
@keyframes borderGlow {
  0%, 100% { border-color: var(--navy-200); }
  50% { border-color: var(--navy-400); }
}
@keyframes floatSoft {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
@keyframes orbFloat {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: 0.7; }
  25% { transform: translate(15px, -20px) scale(1.05); opacity: 0.85; }
  50% { transform: translate(-10px, -10px) scale(0.95); opacity: 0.6; }
  75% { transform: translate(20px, 5px) scale(1.02); opacity: 0.8; }
}
@keyframes pulseGlow {
  0%, 100% { opacity: 0.4; filter: blur(40px); }
  50% { opacity: 0.7; filter: blur(55px); }
}

/* ── Premium background animations ── */
@keyframes orbWander1 {
  0%   { transform: translate(0, 0) scale(1); }
  20%  { transform: translate(120px, -80px) scale(1.15); }
  40%  { transform: translate(-60px, 60px) scale(0.9); }
  60%  { transform: translate(80px, 40px) scale(1.1); }
  80%  { transform: translate(-100px, -40px) scale(0.95); }
  100% { transform: translate(0, 0) scale(1); }
}
@keyframes orbWander2 {
  0%   { transform: translate(0, 0) scale(1); }
  20%  { transform: translate(-90px, 70px) scale(1.1); }
  40%  { transform: translate(70px, -90px) scale(0.92); }
  60%  { transform: translate(-50px, -50px) scale(1.08); }
  80%  { transform: translate(60px, 30px) scale(1.02); }
  100% { transform: translate(0, 0) scale(1); }
}
@keyframes orbWander3 {
  0%   { transform: translate(0, 0) scale(1) rotate(0deg); }
  25%  { transform: translate(100px, -60px) scale(1.12) rotate(2deg); }
  50%  { transform: translate(-80px, 50px) scale(0.88) rotate(-1deg); }
  75%  { transform: translate(40px, 70px) scale(1.06) rotate(1deg); }
  100% { transform: translate(0, 0) scale(1) rotate(0deg); }
}
@keyframes lightSweep {
  0%   { transform: translateX(-100%) rotate(-35deg); opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { transform: translateX(300%) rotate(-35deg); opacity: 0; }
}
@keyframes breathe {
  0%, 100% { opacity: 0.4; transform: scale(1); }
  50%      { opacity: 0.7; transform: scale(1.08); }
}

/* ── Ken Burns — movimiento continuo en fotos ── */
@keyframes kenBurnsHero {
  0%   { transform: scale(1)    translate(0, 0); }
  50%  { transform: scale(1.06) translate(-1%, -1.5%); }
  100% { transform: scale(1)    translate(0, 0); }
}
@keyframes kenBurnsBanner1 {
  0%   { transform: scale(1.02) translate(0, 0); }
  50%  { transform: scale(1.08) translate(-1.5%, -1%); }
  100% { transform: scale(1.02) translate(0, 0); }
}
@keyframes kenBurnsBanner2 {
  0%   { transform: scale(1.03) translate(0, 0); }
  50%  { transform: scale(1.09) translate(1%, -1.2%); }
  100% { transform: scale(1.03) translate(0, 0); }
}
@keyframes kenBurnsBanner3 {
  0%   { transform: scale(1.01) translate(0, 0); }
  50%  { transform: scale(1.07) translate(-0.5%, 1%); }
  100% { transform: scale(1.01) translate(0, 0); }
}

/* Reveal — aparicion al hacer scroll */
.reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 0.8s cubic-bezier(0.22,1,0.36,1), transform 0.8s cubic-bezier(0.22,1,0.36,1);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-d1 { transition-delay: 0.08s; }
.reveal-d2 { transition-delay: 0.16s; }
.reveal-d3 { transition-delay: 0.24s; }
.reveal-d4 { transition-delay: 0.32s; }
.reveal-d5 { transition-delay: 0.4s; }
