/* ============================================================================
   Seller KineticSpread v2 - refined masked line-reveal treatment.
   Replaces the char-scatter intro. Pairs with /js/seller-kinetic-v2.js.

   DEFAULT (no-JS / pre-GSAP) STATE: every title line sits at its natural
   position, fully visible, laid out identically to the un-animated section.
   overflow:hidden on the line box is safe because the line-text rests at
   translateY:0 inside it. JS sets the hidden start states only after GSAP
   is confirmed present, so fail-open keeps all text readable.
   ============================================================================ */

/* Mask box: clip the line-text as it rises from below. Default visible. */
.kinetic-spread__line {
  overflow: hidden;
  display: block;
}

/* The element that actually translates inside the mask box. */
.kinetic-spread__line-text {
  display: inline-block;
  will-change: transform;
}

/* The rail default-state in the Astro CSS hides it (opacity:0, clipped). That
   is correct for no-JS since the rail is decorative (aria-hidden). v2 draws it
   in via JS. No override needed; left here as a note for maintainers. */

/* The Astro palette CSS rotates the ghost 180deg as a baseline
   (kinetic-spread__ghost[data-astro-cid-c7yhxe2q]{transform:rotate(180deg)}).
   v2 wants a clean upright ghost that only drifts (translate) and fades, never
   rotates. Match that attribute-qualified specificity to neutralize the static
   rotation so GSAP's translate composes from upright. Decorative aria-hidden
   element, so this is purely visual. */
.kinetic-spread__ghost,
.kinetic-spread__ghost[data-astro-cid-c7yhxe2q] {
  transform: none;
}
