/* ============================================
   ANIMATIONS — keyframes & reveals
   ============================================ */

@keyframes kenburns {
  0%   { transform: scale(1)    translate(0, 0); }
  100% { transform: scale(1.08) translate(-1%, -1.5%); }
}

@keyframes fadeUp {
  0%   { opacity: 0; transform: translateY(20px); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes wordReveal {
  0%   { opacity: 0; transform: translateY(24px) rotateX(20deg); }
  100% { opacity: 1; transform: translateY(0)    rotateX(0); }
}

@keyframes scrollPulse {
  0%, 100% { transform: scaleY(.3); transform-origin: top; opacity: .35; }
  50%      { transform: scaleY(1);  transform-origin: top; opacity: 1;   }
}

@keyframes drawBridge {
  to { stroke-dashoffset: 0; }
}

@keyframes leafGrow {
  0%   { opacity: 0; transform: scale(0)   rotate(-12deg); }
  70%  { opacity: 1; transform: scale(1.1) rotate(3deg); }
  100% { opacity: 1; transform: scale(1)   rotate(0); }
}

/* Scroll reveal utility (for later phases) */
.reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity .9s var(--ease-out),
              transform .9s var(--ease-out);
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── TRADE MAP keyframes ── */
@keyframes pinDrop {
  0%   { opacity: 0; transform: translateY(-40px) scale(0.6); }
  65%  { opacity: 1; transform: translateY(4px)   scale(1.15); }
  100% { opacity: 1; transform: translateY(0)     scale(1); }
}

@keyframes pinPulse {
  0%   { opacity: 0.7; transform: scale(0.6); }
  80%  { opacity: 0;   transform: scale(2.2); }
  100% { opacity: 0;   transform: scale(2.2); }
}

@keyframes routeDraw {
  0%   { opacity: 0;   stroke-dasharray: 100 0; stroke-dashoffset: 100; }
  30%  { opacity: 0.9; }
  100% { opacity: 0.9; stroke-dasharray: 100 0; stroke-dashoffset: 0; }
}

@keyframes routeFlow {
  0%   { stroke-dasharray: 6 8; stroke-dashoffset: 0; }
  100% { stroke-dasharray: 6 8; stroke-dashoffset: -28; }
}

@keyframes wakePulse {
  0%, 100% { opacity: 0.3; transform: scale(0.7); }
  50%      { opacity: 0.7; transform: scale(1.3); }
}

@keyframes starTwinkle {
  0%, 100% { opacity: 0.25; }
  50%      { opacity: 0.9; }
}

@keyframes auroraDrift {
  0%   { transform: translate(0, 0)     rotate(0deg); }
  100% { transform: translate(3%, -2%) rotate(4deg); }
}
