/* ==========================================================================
   ANIMATIONS — animations.css
   Keyframes, reveal states, scroll indicators
   ========================================================================== */

/* ── Keyframes ────────────────────────────────────────────────────────────── */
@keyframes scrollPulse {
  0% {
    transform: translateY(-100%);
  }
  100% {
    transform: translateY(250%);
  }
}

@keyframes pulse {
  0%, 100% {
    opacity: 0.4;
  }
  50% {
    opacity: 1;
  }
}

/* ==========================================================================
   REVEAL ANIMATIONS
   Initial hidden states — JS adds .is-visible to trigger
   ========================================================================== */

/* ── Fade Up Reveal ───────────────────────────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity var(--t-reveal),
    transform var(--t-reveal);
  will-change: transform, opacity;
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── Text Slide Reveal (for hero name lines) ──────────────────────────────── */
.reveal-text {
  display: inline-block;
  transform: translateY(110%);
  transition: transform 1.2s var(--ease-editorial);
  will-change: transform;
}

.reveal-text.is-visible {
  transform: translateY(0);
}

/* ==========================================================================
   PRELOADER / INTRO ANIMATION
   ========================================================================== */

/* ── Preloader Container ──────────────────────────────────────────────────── */
.preloader {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background-color: var(--c-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.8s var(--ease-editorial), opacity 0.6s var(--ease-out);
  will-change: transform, opacity;
}

.preloader.is-sliding {
  transform: translateY(-100%);
  opacity: 0;
}

.preloader.is-done {
  display: none;
}

/* ── Words Container ──────────────────────────────────────────────────────── */
.preloader__words {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 6rem;
}

/* ── Individual Word ──────────────────────────────────────────────────────── */
.preloader__word {
  position: absolute;
  font-family: var(--f-sans);
  font-size: clamp(2rem, 6vw, 4rem);
  font-weight: var(--fw-bold);
  letter-spacing: -0.03em;
  color: var(--c-text);
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity 0.4s var(--ease-out),
    transform 0.4s var(--ease-editorial);
  white-space: nowrap;
}

.preloader__word.is-active {
  opacity: 1;
  transform: translateY(0);
}

.preloader__word.is-fading {
  opacity: 0;
  transform: translateY(-20px);
}
