/* ==========================================================================
   ANIMATIONS
   ========================================================================== */

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

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

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

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

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

/* Reveal-on-scroll: elements start hidden, JS toggles .is-visible via IntersectionObserver */
[data-reveal] {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 720ms var(--ease-out), transform 720ms var(--ease-out);
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}
[data-reveal="stagger"] > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 620ms var(--ease-out), transform 620ms var(--ease-out);
}
[data-reveal="stagger"].is-visible > * {
  opacity: 1;
  transform: translateY(0);
}
[data-reveal="stagger"].is-visible > *:nth-child(1) { transition-delay: 0ms; }
[data-reveal="stagger"].is-visible > *:nth-child(2) { transition-delay: 80ms; }
[data-reveal="stagger"].is-visible > *:nth-child(3) { transition-delay: 160ms; }
[data-reveal="stagger"].is-visible > *:nth-child(4) { transition-delay: 240ms; }
[data-reveal="stagger"].is-visible > *:nth-child(5) { transition-delay: 320ms; }
[data-reveal="stagger"].is-visible > *:nth-child(6) { transition-delay: 400ms; }
[data-reveal="stagger"].is-visible > *:nth-child(7) { transition-delay: 480ms; }
[data-reveal="stagger"].is-visible > *:nth-child(8) { transition-delay: 560ms; }

/* Hero load sequence */
.hero__eyebrow { animation: fadeUp 720ms var(--ease-out) 120ms both; }
.hero__title    { animation: fadeUp 780ms var(--ease-out) 220ms both; }
.hero__desc     { animation: fadeUp 780ms var(--ease-out) 340ms both; }
.hero__actions  { animation: fadeUp 780ms var(--ease-out) 460ms both; }
.hero__pills    { animation: fadeUp 780ms var(--ease-out) 560ms both; }
.hero__media    { animation: fadeIn 900ms var(--ease-out) 200ms both; }
.hero__media-tag{ animation: fadeUp 780ms var(--ease-out) 700ms both; }

/* Blueprint node pulse (used on hero + why-us backgrounds) */
.bp-node { animation: pulseGlow 3.4s ease-in-out infinite; }
.bp-node:nth-of-type(2n) { animation-delay: 0.8s; }
.bp-node:nth-of-type(3n) { animation-delay: 1.6s; }

.bp-line {
  stroke-dasharray: 6 8;
  animation: dashTravel 40s linear infinite;
  stroke-dashoffset: 400;
}

/* Header scroll state (toggled via JS) */
.site-header.is-scrolled {
  background: rgba(6, 14, 36, 0.92);
  box-shadow: var(--shadow-md);
}

/* Mobile nav drawer */
.main-nav {
  transition: right var(--dur-med) var(--ease-out);
}
