/* =========================================================
   animations.css — Aurora Tech keyframes & motion
   ========================================================= */

@keyframes meshDrift {
  from { transform: translate(0, 0) scale(1); }
  to { transform: translate(2%, -3%) scale(1.05); }
}

@keyframes orbFloat {
  from { transform: translate(0, 0) scale(1); }
  to { transform: translate(4%, -6%) scale(1.08); }
}

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

@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 80px rgba(58, 160, 255, 0.45), 0 0 160px rgba(255, 122, 26, 0.2), inset 0 0 60px rgba(255, 255, 255, 0.12); }
  50% { box-shadow: 0 0 100px rgba(58, 160, 255, 0.6), 0 0 180px rgba(255, 122, 26, 0.32), inset 0 0 70px rgba(255, 255, 255, 0.18); }
}

@keyframes glowPulseIcon {
  0%, 100% { box-shadow: 0 0 0 0 rgba(58, 160, 255, 0.35); }
  50% { box-shadow: 0 0 0 12px rgba(58, 160, 255, 0); }
}

@keyframes pulseRing {
  0% { box-shadow: 0 0 0 0 rgba(34, 211, 166, 0.55); }
  70% { box-shadow: 0 0 0 12px rgba(34, 211, 166, 0); }
  100% { box-shadow: 0 0 0 0 rgba(34, 211, 166, 0); }
}

@keyframes gradientShift {
  0% { background-position: 0% center; }
  50% { background-position: 100% center; }
  100% { background-position: 0% center; }
}

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

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

@keyframes marqueeScroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@keyframes iconBounce {
  0% { transform: rotate(0) scale(1); }
  40% { transform: rotate(-12deg) scale(1.12); }
  70% { transform: rotate(8deg) scale(1.05); }
  100% { transform: rotate(0) scale(1); }
}

@keyframes starPulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.15); opacity: .85; }
}

@keyframes fadeInQuote {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: .25; transform: none; }
}

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

.typewriter-caret::after {
  content: "|";
  margin-left: 2px;
  color: var(--accent);
  animation: blink 1s step-end infinite;
}
@keyframes blink {
  50% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .marquee-track { animation: none; }
}
