/**
 * EverHarmony - BioKinetic MedTech Animations
 * 60fps/120fps Hardware-Accelerated Kinetic Motion & Micro-Interactions
 */

@keyframes pulseBioMint {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(0, 245, 155, 0.45);
    transform: translateZ(0) scale(1);
  }
  50% {
    box-shadow: 0 0 14px 2px rgba(0, 245, 155, 0.35);
    transform: translateZ(0) scale(1.015);
  }
}

@keyframes pulseSolar {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(255, 158, 44, 0.45);
    transform: translateZ(0) scale(1);
  }
  50% {
    box-shadow: 0 0 14px 2px rgba(255, 158, 44, 0.35);
    transform: translateZ(0) scale(1.015);
  }
}

@keyframes pulseCyan {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(0, 229, 255, 0.45);
    transform: translateZ(0) scale(1);
  }
  50% {
    box-shadow: 0 0 14px 2px rgba(0, 229, 255, 0.35);
    transform: translateZ(0) scale(1.015);
  }
}

@keyframes floatGentle {
  0%, 100% {
    transform: translate3d(0, 0, 0);
  }
  50% {
    transform: translate3d(0, -6px, 0);
  }
}

@keyframes rotateSlow {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

@keyframes v-fadeInUp {
  from {
    opacity: 0;
    transform: translate3d(0, 14px, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes v-popIn {
  0% {
    opacity: 0;
    transform: scale(0.95) translateZ(0);
  }
  100% {
    opacity: 1;
    transform: scale(1) translateZ(0);
  }
}

@keyframes v-toastSlideIn {
  from {
    opacity: 0;
    transform: translate3d(0, 16px, 0) scale(0.96);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}

/* Kinetic Classes with GPU hints */
.animate-pulse-volt, .animate-pulse-mint {
  animation: pulseBioMint 2.8s infinite cubic-bezier(0.4, 0, 0.2, 1);
  will-change: transform, box-shadow;
}

.animate-pulse-tangerine, .animate-pulse-solar {
  animation: pulseSolar 2.8s infinite cubic-bezier(0.4, 0, 0.2, 1);
  will-change: transform, box-shadow;
}

.animate-pulse-cyan {
  animation: pulseCyan 2.8s infinite cubic-bezier(0.4, 0, 0.2, 1);
  will-change: transform, box-shadow;
}

.animate-float {
  animation: floatGentle 4.5s ease-in-out infinite;
  will-change: transform;
}

.animate-spin-slow {
  animation: rotateSlow 24s linear infinite;
  will-change: transform;
}

.v-anim-fade-up {
  animation: v-fadeInUp 200ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.v-anim-pop {
  animation: v-popIn 200ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
