/* ============================================================
   Parlour Haus Salon: scroll motion styles
   Every rule is scoped to html.motion, which the loader adds before the modules
   run. Nothing here hides content on its own: initial hidden states are set by
   scroll.js (gsap.set / from tweens), so if JS never runs the page is fully visible.
   Colors come only from the site custom properties; none are needed here, so the
   sheet is theme-neutral in both dark and light.
   ============================================================ */

/* GSAP owns the reveal now. Retire the legacy CSS transition so tweens do not fight it. */
html.motion .reveal{transition:none;}

/* SplitText line masks. scroll.js adds .ph-mask to the wrapper SplitText builds around
   each .ph-line. A touch of bottom padding (pulled back by a negative margin, so layout
   does not move) keeps Fraunces descenders from clipping at the mask edge mid-rise. */
html.motion .ph-mask{padding-bottom:.08em;margin-bottom:-.08em;}
html.motion .ph-line{will-change:transform;}

/* About photo. The img is wrapped at runtime in .ph-clip so the parallax overflow clip
   lives on the wrapper and the corner brackets drawn by .about-photo::before/::after
   (which sit outside the box) are never clipped. */
html.motion .ph-clip{position:relative;overflow:hidden;border-radius:2px;}
html.motion .ph-clip img{will-change:transform;}

/* Reduced motion: scroll.js returns before touching anything, so only the hint is dropped. */
@media (prefers-reduced-motion:reduce){
  html.motion .ph-line,html.motion .ph-clip img{will-change:auto;}
}
