/**
 * Анимации — Hero sequence (JS-driven), scroll reveal
 */

/* ── Hero: начальное состояние (до JS) ── */
.hero__eyebrow,
.hero__tagline,
.hero__actions,
.hero__editorial {
  opacity: 0;
  transform: translateY(1.25rem);
}

.hero__title-line {
  display: block;
  overflow: hidden;
  padding-bottom: 0.05em;
}

.hero__word {
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
  margin-right: 0.22em;
}

.hero__word-text {
  display: inline-block;
  opacity: 0;
  transform: translateX(-0.4em);
  will-change: transform, opacity;
}

.hero__title-dash {
  display: inline-block;
  opacity: 0;
  transform: translateX(-0.25em);
  color: var(--color-text-muted);
  font-weight: var(--weight-regular);
}

.motif-stroke {
  stroke-dasharray: 120;
  stroke-dashoffset: 120;
}

/* ── Hero: после reveal ── */
.hero__eyebrow.is-visible,
.hero__tagline.is-visible,
.hero__actions.is-visible,
.hero__editorial.is-visible {
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity 0.85s var(--ease-out-expo),
    transform 0.85s var(--ease-out-expo);
}

.hero__word.is-visible .hero__word-text {
  opacity: 1;
  transform: translateX(0);
  transition:
    transform 0.6s var(--ease-out-expo),
    opacity 0.6s var(--ease-out-expo);
}

.hero__title-dash.is-visible {
  opacity: 1;
  transform: translateX(0);
  transition:
    transform 0.55s var(--ease-out-expo),
    opacity 0.55s var(--ease-out-expo);
}

.motif-stroke.is-drawn {
  stroke-dashoffset: 0;
  transition: stroke-dashoffset 1.1s ease;
}

.hero--done .hero__eyebrow,
.hero--done .hero__tagline,
.hero--done .hero__actions,
.hero--done .hero__editorial,
.hero--done .hero__word-text,
.hero--done .hero__title-dash {
  transition: none;
}

/* ── Scroll reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(2.5rem);
  transition:
    opacity 0.75s var(--ease-out-expo),
    transform 0.75s var(--ease-out-expo);
}

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

.reveal-clip {
  opacity: 1;
  transform: none;
  clip-path: inset(100% 0 0 0);
  transition: clip-path 0.85s var(--ease-out-expo);
}

.reveal-clip.is-visible {
  clip-path: inset(0 0 0 0);
}

.reveal-image {
  opacity: 0;
  transform: scale(1.03) translateY(1rem);
  transition:
    opacity 0.85s var(--ease-out-expo),
    transform 0.85s var(--ease-out-expo);
}

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

.reveal-stagger > * {
  opacity: 0;
  transform: translateY(1.25rem);
  transition:
    opacity 0.65s var(--ease-out-expo),
    transform 0.65s var(--ease-out-expo);
}

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

.reveal--delay-1 {
  transition-delay: 0.08s;
}

.reveal--delay-2 {
  transition-delay: 0.16s;
}

.reveal--delay-3 {
  transition-delay: 0.24s;
}

.reveal--scale {
  opacity: 0;
  transform: translateY(2rem) scale(0.97);
  transition:
    opacity 0.85s var(--ease-out-expo),
    transform 0.85s var(--ease-out-expo);
}

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

@media (prefers-reduced-motion: reduce) {
  .hero__eyebrow,
  .hero__tagline,
  .hero__actions,
  .hero__editorial {
    opacity: 1;
    transform: none;
  }

  .hero__word-text,
  .hero__title-dash {
    opacity: 1;
    transform: none;
  }

  .motif-stroke {
    stroke-dashoffset: 0;
  }

  .reveal,
  .reveal-clip,
  .reveal-image,
  .reveal--scale,
  .reveal-stagger > * {
    opacity: 1;
    transform: none;
    clip-path: none;
    transition: none;
  }
}
