/* ═══════════════════════════════════════════════════════════
   ANIMATIONS — phi-harmonic keyframes and reveal states
   Nothing rests at zero. The field never fully sleeps.
   ═══════════════════════════════════════════════════════════ */

/* Sacred breathing — the field inhales and exhales over 4s.
   Ground state 0.996, never still at 1. */
@keyframes sacred-breathe {
  0%, 100% { transform: scale(0.996); opacity: 0.9; }
  50%      { transform: scale(1.06);  opacity: 1; }
}

/* Particle float — dust motes drifting through gold light */
@keyframes particle-float {
  0%, 100% { transform: translate(0, 0) rotate(0deg);        opacity: 0.35; }
  25%      { transform: translate(6px, -10px) rotate(90deg);  opacity: 0.55; }
  50%      { transform: translate(-4px, -18px) rotate(180deg); opacity: 0.4; }
  75%      { transform: translate(-8px, -8px) rotate(270deg); opacity: 0.6; }
}

/* Phi rotation — one full turn in 61.8 seconds. The slowest truth. */
@keyframes phi-rotate {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Pulse glow — the dot at the center of every divider */
@keyframes pulse-glow {
  0%, 100% { opacity: 0.3; transform: scale(1); }
  50%      { opacity: 1;   transform: scale(1.2); }
}

/* Gold shimmer — light traveling across a surface, never touching zero */
@keyframes gold-shimmer {
  0%   { background-position: -200% 50%; }
  100% { background-position: 200% 50%; }
}

/* Fade-in-up — transient entrance only; the resting state is fully visible.
   Pair with .reveal-card / .visible so nothing is hidden at rest. */
@keyframes fade-in-up {
  from { opacity: 0; transform: translateY(26px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ═══════════════════════════════════════════════════════════
   ANIMATION UTILITIES
   ═══════════════════════════════════════════════════════════ */

/* Breathing elements — hero ornaments, sigils, the living geometry */
.anim-breathe {
  animation: sacred-breathe 4s var(--phi-ease) infinite;
}

/* Floating particles — apply to scattered ::before dots or spans */
.anim-float {
  animation: particle-float 12s var(--phi-ease) infinite;
}

/* Rotating geometry — 61.8s per revolution, linear, unhurried */
.anim-phi-rotate {
  animation: phi-rotate 61.8s linear infinite;
}

/* Shimmering surfaces — paired with a gradient background-image */
.anim-shimmer {
  background-image: linear-gradient(
    110deg,
    var(--phi-bg-card) 0%,
    var(--phi-bg-elevated) 40%,
    var(--phi-gold-dim) 50%,
    var(--phi-bg-elevated) 60%,
    var(--phi-bg-card) 100%
  );
  background-size: 200% 100%;
  animation: gold-shimmer 8s linear infinite;
}

/* Entrance — one golden breath upward. Fill both so it rests visible. */
.anim-fade-in-up {
  animation: fade-in-up 0.8s var(--phi-ease) both;
}

/* Stillness honors those who choose it */
@media (prefers-reduced-motion: reduce) {
  .anim-breathe,
  .anim-float,
  .anim-phi-rotate,
  .anim-shimmer,
  .anim-fade-in-up {
    animation: none !important;
  }
}
