/* Editorial word entrance for the brand title and contact invitation. */
.text-motion .text-motion-word {
  display: inline-block;
  opacity: 0;
  transform: translate3d(0, .72em, 0);
  filter: blur(7px);
  transition: opacity .72s cubic-bezier(.22, .61, .36, 1),
    transform .72s cubic-bezier(.22, .61, .36, 1), filter .72s ease;
  transition-delay: calc(var(--text-motion-index, 0) * 42ms);
  will-change: opacity, transform, filter;
}
.text-motion.text-motion-visible .text-motion-word {
  opacity: 1;
  transform: none;
  filter: none;
}

/* The original hero title uses background-clip:text on the h1 itself. Once
   the title is split into animated spans, keeping that parent clip paints a
   second copy of the text behind the spans. Move the gradient ownership to
   each animated word so the title remains a single, crisp lockup. */
#showreel .hero-title.text-motion {
  background: none;
  -webkit-background-clip: initial;
  background-clip: initial;
  color: var(--white-p, #fff);
}
#showreel .hero-title.text-motion .text-motion-word {
  background: linear-gradient(180deg, #fff 12%, #d5d8da 82%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
@media (prefers-reduced-motion: reduce) {
  .text-motion .text-motion-word { opacity: 1; transform: none; filter: none; transition: none; }
}

/* Desktop gallery titles: a restrained editorial reveal that follows the
   existing section-header intersection reveal. Each glyph receives a short
   stagger, so English and Korean share the same motion language. */
@media (min-width: 1025px) {
  #cinematography .section-title-text,
  #photography .section-title-text {
    display: inline-flex !important;
    align-items: baseline;
    position: relative;
    isolation: isolate;
  }

  #cinematography .section-title-text::after,
  #photography .section-title-text::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -.34em;
    height: 1px;
    transform: scaleX(0);
    transform-origin: left center;
    background: linear-gradient(90deg, transparent, rgba(166, 226, 245, .95) 18%, rgba(255,255,255,.78) 52%, transparent 100%);
    box-shadow: 0 0 12px rgba(132, 211, 238, .5);
    opacity: 0;
    transition: transform .9s cubic-bezier(.16,.76,.18,1) .34s, opacity .35s ease .34s;
    pointer-events: none;
  }

  #cinematography .section-title-text.text-motion-visible::after,
  #photography .section-title-text.text-motion-visible::after {
    transform: scaleX(1);
    opacity: .8;
  }

  #cinematography .section-title-text .text-motion-word,
  #photography .section-title-text .text-motion-word {
    transform: translate3d(0, .52em, 0) rotateX(-55deg);
    transform-origin: 50% 100%;
    filter: blur(5px);
    transition-duration: .68s;
    transition-delay: calc(var(--text-motion-index, 0) * 38ms);
  }

  #cinematography .section-title-text.text-motion-visible .text-motion-word,
  #photography .section-title-text.text-motion-visible .text-motion-word {
    transform: none;
    filter: none;
  }

  #cinematography .section-title-icon,
  #photography .section-title-icon {
    transition: color .45s ease, filter .65s ease, transform .65s cubic-bezier(.16,.76,.18,1);
  }

  #cinematography .section-title:has(.section-title-text.text-motion-visible) .section-title-icon,
  #photography .section-title:has(.section-title-text.text-motion-visible) .section-title-icon {
    transform: translateY(-1px) scale(1.06);
    filter: drop-shadow(0 0 15px rgba(158, 220, 240, .48));
  }
}

@media (prefers-reduced-motion: reduce) {
  #cinematography .section-title-text::after,
  #photography .section-title-text::after { transition: none; transform: scaleX(1); opacity: .65; }
}
