/* ============================================================
   VITALEDGE & VITALVAULT - Shared Animations
   ============================================================ */

/* --- Keyframe Animations --- */

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

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

@keyframes checkPulse {
  0%, 100% { transform: scale(1); box-shadow: 0 0 20px rgba(16, 185, 129, 0.2); }
  50% { transform: scale(1.05); box-shadow: 0 0 35px rgba(16, 185, 129, 0.4); }
}

@keyframes dotPulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 8px var(--accent); }
  50% { opacity: 0.4; box-shadow: 0 0 16px var(--accent); }
}

@keyframes btnPulse {
  0%, 100% { box-shadow: 0 4px 20px rgba(112, 0, 255, 0.25); }
  50% { box-shadow: 0 4px 35px rgba(255, 0, 122, 0.35); }
}

@keyframes ebookFloat {
  0%, 100% { transform: rotateY(-12deg) rotateX(4deg) translateY(-10px); }
  50% { transform: rotateY(-12deg) rotateX(4deg) translateY(10px); }
}

@keyframes shadowFloat {
  0%, 100% { transform: translateX(-50%) scale(0.85); opacity: 0.4; }
  50% { transform: translateX(-50%) scale(1.05); opacity: 0.8; }
}

/* Floating Ambient Orbs Keyframes */
@keyframes orbFloat1 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(-40px, 60px) scale(1.1); }
  66% { transform: translate(30px, -30px) scale(0.9); }
}

@keyframes orbFloat2 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(60px, -40px) scale(1.15); }
}

@keyframes orbFloat3 {
  0%, 100% { transform: translate(-50%, 0); }
  40% { transform: translate(-50%, -50px); }
  80% { transform: translate(-50%, 30px); }
}

@keyframes shimmer {
  100% { left: 125%; }
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .5; }
}
