/* BYLD Wealth — Universal Animations
   Shared @keyframes used across all tiers. Tier CSS overrides breathe color.
   ================================================================== */

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Default gold breathe — overridden per tier */
@keyframes breathe {
  0%, 100% { box-shadow: 0 0 20px rgba(196,154,60,0.15); }
  50% { box-shadow: 0 0 40px rgba(196,154,60,0.4); }
}

@keyframes borderGlow {
  0% { border-color: rgba(196,154,60,0.2); }
  50% { border-color: rgba(196,154,60,0.5); }
  100% { border-color: rgba(196,154,60,0.2); }
}

@keyframes gold-pulse {
  0%, 100% { box-shadow: 0 0 20px rgba(196,154,60,0.25); }
  50% { box-shadow: 0 0 40px rgba(196,154,60,0.5); }
}

@keyframes subtle-glow {
  0%, 100% { opacity: 0.3; }
  50% { opacity: 0.6; }
}

@keyframes notifPulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.3); }
}

@keyframes drawLine {
  from { stroke-dashoffset: 400; }
  to { stroke-dashoffset: 0; }
}

@keyframes pulse {
  0%, 100% { opacity: 0.7; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.05); }
}

@keyframes slideIn {
  from { transform: translateX(-8px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes typeIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes typingBounce {
  0%, 80%, 100% { transform: translateY(0); opacity: 0.4; }
  40% { transform: translateY(-6px); opacity: 1; }
}

@keyframes typingDot {
  0%, 80%, 100% { transform: scale(0.8); opacity: 0.4; }
  40% { transform: scale(1.2); opacity: 1; }
}

@keyframes progressFill {
  from { width: 0%; }
  to { width: var(--fill); }
}

@keyframes slideUp {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes chipPop {
  0% { transform: scale(0.9); opacity: 0; }
  60% { transform: scale(1.03); }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes cardSlideIn {
  from { opacity: 0; transform: translateX(30px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes dotFadeIn {
  from { opacity: 0; transform: scale(0.5); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes focusPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(196,154,60,0.3); }
  50% { box-shadow: 0 0 0 6px rgba(196,154,60,0.08); }
}

@keyframes floatBadge {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}

@keyframes barGrow {
  from { width: 0%; }
  to { width: var(--bar-w); }
}

/* Accessibility — WCAG 2.3.3 Animation from Interactions */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
