/* ==========================================================================
   NOVA DENTAL - KEYFRAME ANIMATIONS & MICRO-INTERACTIONS
   ========================================================================== */

/* Preloader Spin */
@keyframes preloaderSpin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

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

/* Emerald Telemetry Status Pulse */
@keyframes pulseEmerald {
  0%, 100% {
    opacity: 1;
    transform: scale(1);
    box-shadow: 0 0 8px #0df2c9;
  }
  50% {
    opacity: 0.4;
    transform: scale(0.85);
    box-shadow: 0 0 2px #0df2c9;
  }
}

/* Aurora Glowing Beacon */
@keyframes pulseCyan {
  0%, 100% {
    box-shadow: 0 0 15px var(--glow);
  }
  50% {
    box-shadow: 0 0 35px var(--glow), 0 0 10px var(--ray-hi);
  }
}

/* Mouse Scroll Wheel Motion */
@keyframes mouseScroll {
  0% {
    transform: translate(-50%, 0);
    opacity: 1;
  }
  60% {
    transform: translate(-50%, 12px);
    opacity: 0;
  }
  61% {
    transform: translate(-50%, 0);
    opacity: 0;
  }
  100% {
    transform: translate(-50%, 0);
    opacity: 1;
  }
}

/* Holographic Optical Scan Line */
@keyframes scanlineMove {
  0% {
    top: -10%;
    opacity: 0;
  }
  30% {
    opacity: 0.8;
  }
  70% {
    opacity: 0.8;
  }
  100% {
    top: 110%;
    opacity: 0;
  }
}

.hologram-scanner-line {
  position: absolute;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--primary) 50%, transparent);
  box-shadow: 0 0 15px var(--glow);
  animation: scanlineMove 4s cubic-bezier(0.4, 0, 0.2, 1) infinite;
  pointer-events: none;
  z-index: 3;
}

/* Float Animation for UI Badges */
@keyframes gentleFloat {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-8px);
  }
}

.float-slow {
  animation: gentleFloat 6s ease-in-out infinite;
}

.float-reverse {
  animation: gentleFloat 7s ease-in-out infinite reverse;
}

/* Subtle Shimmer for High-End Cards */
@keyframes cardShimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

.shimmer-active {
  background: linear-gradient(90deg, 
    rgba(255, 255, 255, 0) 0%, 
    rgba(0, 212, 255, 0.08) 50%, 
    rgba(255, 255, 255, 0) 100%);
  background-size: 200% 100%;
  animation: cardShimmer 5s infinite;
}

/* Micro Focus Target */
.target-crosshair {
  position: relative;
}

.target-crosshair::before,
.target-crosshair::after {
  content: '';
  position: absolute;
  width: 8px;
  height: 8px;
  border-color: var(--cyan-primary);
  pointer-events: none;
}

.target-crosshair::before {
  top: -4px;
  left: -4px;
  border-top: 1px solid var(--cyan-primary);
  border-left: 1px solid var(--cyan-primary);
}

.target-crosshair::after {
  bottom: -4px;
  right: -4px;
  border-bottom: 1px solid var(--cyan-primary);
  border-right: 1px solid var(--cyan-primary);
}

/* Pedestal Radial Core Pulse */
@keyframes pedestalPulse {
  0% {
    transform: scale(0.92);
    opacity: 0.55;
  }
  50% {
    transform: scale(1.08);
    opacity: 0.95;
    filter: blur(28px) drop-shadow(0 0 20px #00f0ff);
  }
  100% {
    transform: scale(0.92);
    opacity: 0.55;
  }
}

/* Slow Holographic Ring Rotation */
@keyframes slowRotate {
  from {
    transform: translate(-50%, -50%) rotate(0deg);
  }
  to {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}

/* Scroll Arrow Bounce */
@keyframes arrowBounce {
  0%, 20%, 50%, 80%, 100% {
    transform: translateY(0);
  }
  40% {
    transform: translateY(6px);
  }
  60% {
    transform: translateY(3px);
  }
}

/* Floating Tooth Oscillation */
@keyframes toothHover {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

.tooth-hover-active {
  animation: toothHover 5s ease-in-out infinite;
}

