/*
 * MarketRush motion registry.
 * Every keyframe + every animation binding lives here. Never inline
 * a keyframe in a component file — reach for one of these or add a
 * new one HERE first (and mirror it in docs/design-system.md §9).
 *
 * Reference: docs/design-system.md §9.
 */

/* -------- 9.1 Ambient background drift -------- */
@keyframes mras-bg-drift {
  0%, 100% { background-position: 100% 0%, 0% 100%, 0 0; }
  50%      { background-position: 105% 5%, -5% 95%, 0 0; }
}
body { animation: mras-bg-drift 24s ease-in-out infinite; }

/* -------- 9.2 Hero radial-glow pulse -------- */
@keyframes mras-hero-pulse {
  0%, 100% { transform: scale(1);   opacity: 0.9; }
  50%      { transform: scale(1.1); opacity: 1;   }
}

/* -------- 9.3 Brand glow (mark + primary avatar) -------- */
@keyframes mras-brand-glow {
  0%, 100% { box-shadow: 0 3px 10px rgba(255, 107, 53, 0.35), 0 0 0 0 rgba(255, 107, 53, 0.35); }
  50%      { box-shadow: 0 5px 16px rgba(255, 107, 53, 0.5),  0 0 0 8px rgba(255, 107, 53, 0);   }
}

/* -------- 9.4 CTA breathe -------- */
@keyframes mras-cta-breathe {
  0%, 100% { box-shadow: 0 3px 12px rgba(255, 107, 53, 0.35); }
  50%      { box-shadow: 0 6px 20px rgba(255, 107, 53, 0.5);  }
}

/* -------- 9.5 Live pulse (status dots) -------- */
@keyframes mras-live-pulse {
  0%   { transform: scale(1);   opacity: 0.6; }
  100% { transform: scale(3);   opacity: 0;   }
}

/* -------- 9.6 Hero icon glow -------- */
@keyframes mras-hero-icon-glow {
  0%, 100% { background: rgba(255, 255, 255, 0.12); }
  50%      { background: rgba(255, 255, 255, 0.22); }
}

/* -------- 9.7 Double ripple (explicit pending, e.g. deploy dot) -------- */
@keyframes mras-expand-ripple {
  0%   { transform: scale(1);   opacity: 0.4; }
  100% { transform: scale(3.5); opacity: 0;   }
}

/* -------- 9.8 Card entrance -------- */
@keyframes mras-card-in {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0);    }
}

/* -------- 9.9 Row entrance -------- */
@keyframes mras-row-in {
  from { opacity: 0; transform: translateX(-6px); }
  to   { opacity: 1; transform: translateX(0);    }
}

/* -------- 9.10 Notification badge pulse -------- */
@keyframes mras-badge-pulse {
  0%, 100% { box-shadow: 0 0 0 0   rgba(255, 107, 53, 0.7); }
  50%      { box-shadow: 0 0 0 6px rgba(255, 107, 53, 0);   }
}

/* -------- Sidebar slide-in -------- */
@keyframes mras-sidebar-in {
  from { opacity: 0; transform: translateX(-10px); }
  to   { opacity: 1; transform: translateX(0);    }
}

/* -------- Number rise (stat entrance) -------- */
@keyframes mras-num-rise {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0);    }
}

/* -------- Branding-mark float -------- */
@keyframes mras-mark-float {
  0%, 100% { transform: translateY(0) rotate(-2deg); }
  50%      { transform: translateY(-3px) rotate(2deg); }
}

/* -------- Reduced-motion opt-out (design-system §9) -------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
  }
  body {
    background:
      radial-gradient(circle at 100% 0%,  rgba(255, 107, 53, 0.05), transparent 40%),
      radial-gradient(circle at 0% 100%,  rgba(31, 95, 68, 0.05),   transparent 40%),
      var(--mras-bg);
  }
}
