/* Animations */

/* Fade In Up */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Scroll Pulse */
@keyframes scrollPulse {
  0%, 100% { opacity: 0.4; transform: scaleY(1); }
  50%      { opacity: 1; transform: scaleY(1.3); }
}

/* Breathing */
@keyframes breathing {
  0%, 100% { transform: scale(1); opacity: 0.8; }
  50%      { transform: scale(1.02); opacity: 1; }
}

/* Reveal */
.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.8s var(--ease-out-expo),
              transform 0.8s var(--ease-out-expo);
}
.reveal.revealed {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger children */
.reveal-stagger .reveal:nth-child(1) { transition-delay: 0ms; }
.reveal-stagger .reveal:nth-child(2) { transition-delay: 100ms; }
.reveal-stagger .reveal:nth-child(3) { transition-delay: 200ms; }
.reveal-stagger .reveal:nth-child(4) { transition-delay: 300ms; }
.reveal-stagger .reveal:nth-child(5) { transition-delay: 400ms; }
.reveal-stagger .reveal:nth-child(6) { transition-delay: 500ms; }

/* Node pulse for interactive elements */
@keyframes nodePulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(139, 115, 85, 0.2); }
  50%      { box-shadow: 0 0 0 10px rgba(139, 115, 85, 0); }
}
.dark-mode @keyframes nodePulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(196, 167, 125, 0.2); }
  50%      { box-shadow: 0 0 0 10px rgba(196, 167, 125, 0); }
}
