/* ============================================================
   ANIMATIONS — every @keyframes definition in the project,
   centralized so no section ever redefines one. Sections only
   reference these by name in their own `animation:` rules.
   ============================================================ */

/* Eyebrow dot pulse — components.css (.eyebrow .dot) */
@keyframes pulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(244, 196, 48, .18); }
  50%      { box-shadow: 0 0 0 8px rgba(244, 196, 48, 0); }
}

/* Button ripple — components.css (.ripple) */
@keyframes ripple { to { transform: scale(2.6); opacity: 0; } }

/* Ambient background grid drift — app.css (.bg__grid) */
@keyframes gridDrift { to { background-position: 64px 64px, 64px 64px; } }

/* Ambient background blobs — app.css (.bg__blob) */
@keyframes float1 {
  0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
  50%      { transform: translate3d(4vw, 5vh, 0) scale(1.12); }
}
@keyframes float2 {
  0%, 100% { transform: translate3d(0, 0, 0) scale(1.05); }
  50%      { transform: translate3d(-5vw, -4vh, 0) scale(.92); }
}

/* Preloader mark draw-in — sections/preloader */
@keyframes draw { to { stroke-dashoffset: 0; } }
@keyframes popIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* Mobile menu link stagger — sections/navbar */
@keyframes mIn { to { opacity: 1; transform: none; } }

/* Ticker tape scroll — sections/tape */
@keyframes tape { to { transform: translateX(-50%); } }

/* Gentle float — shared by sections/hero (.terminal, .float-card)
   and sections/enroll (.band__glow) */
@keyframes hover {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}

/* Terminal glass reflection sheen — sections/hero */
@keyframes sheen {
  0%, 62%, 100% { transform: translateX(-40%) rotate(14deg); opacity: 0; }
  70%           { opacity: 1; }
  92%           { transform: translateX(260%) rotate(14deg); opacity: 0; }
}

/* Live indicator blink — sections/hero, sections/hub */
@keyframes pulseDot { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }

/* New live-signal row fade-in — sections/hero (market-panel__list--signals) */
@keyframes mpRowIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

/* Testimonials marquee scroll — sections/testimonials */
@keyframes slide { to { transform: translateX(-50%); } }
