/* ==========================================================================
   Animations — keyframes & motion utilities (reveal logic lives in base.css)
   ========================================================================== */

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

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

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

@keyframes pulseGlow {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 1; }
}

.hero-orb {
  animation: floatSlow 9s var(--ease-in-out) infinite;
}
.hero-ring {
  animation: rotateSlow 60s linear infinite;
  transform-origin: center;
}
.pulse-dot { animation: pulseGlow 2.4s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
  .hero-orb, .hero-ring, .pulse-dot { animation: none; }
}

/* Cursor-follow glow used on hero sections (opt-in via [data-glow-surface]) */
[data-glow-surface] {
  position: relative;
}
[data-glow-surface]::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 20%), rgba(62,28,0,0.12), transparent 60%);
  transition: background var(--dur-fast) ease-out;
}
