/* ==========================================================================
   ORIBIN HIGH-PERFORMANCE ANIMATIONS & TRANSITIONS
   Fluid curves: cubic-bezier(0.16, 1, 0.3, 1)
   ========================================================================== */

/* Beacon Pulse on Live Status */
@keyframes beaconWave {
  0% {
    transform: scale(1);
    opacity: 0.8;
  }
  100% {
    transform: scale(2.6);
    opacity: 0;
  }
}

/* Hero Halo Pulse */
@keyframes haloPulse {
  0% {
    transform: scale(0.94);
    opacity: 0.45;
  }
  50% {
    transform: scale(1.08);
    opacity: 0.75;
  }
  100% {
    transform: scale(0.94);
    opacity: 0.45;
  }
}

/* Ambient Blobs Drifting */
@keyframes ambientDrift {
  0% {
    transform: translate(0px, 0px) scale(1);
  }
  50% {
    transform: translate(25px, -20px) scale(1.05);
  }
  100% {
    transform: translate(-20px, 25px) scale(0.98);
  }
}

.ambient-blob {
  animation: ambientDrift 14s ease-in-out infinite alternate;
}

.blob-cyan {
  animation-duration: 16s;
}

.blob-magenta {
  animation-duration: 18s;
}

.blob-green {
  animation-duration: 20s;
}

/* Fade in with subtle lift */
@keyframes revealUp {
  from {
    opacity: 0;
    transform: translateY(14px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.hero-headline {
  animation: revealUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.hero-subhead {
  animation: revealUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.1s backwards;
}

.hero-actions {
  animation: revealUp 0.95s cubic-bezier(0.16, 1, 0.3, 1) 0.15s backwards;
}

.pillars-section {
  animation: revealUp 1s cubic-bezier(0.16, 1, 0.3, 1) 0.25s backwards;
}
