/* =========================================================
   Motion layer — page transitions, text reveal, gentle photo
   drift. Deliberately restrained: a handful of calm, purposeful
   touches rather than constant movement. Pure CSS/JS, zero
   external dependency — works even if the optional GSAP
   enhancement scripts fail to load.
   ========================================================= */

/* ---------- Page transition: clean, single fade ---------- */
.page-fade{
  position:fixed;inset:0;z-index:9999;pointer-events:none;
  background:var(--bg);opacity:0;
  transition:opacity .2s ease;
}
.page-fade.covering{opacity:1;pointer-events:all;}

/* ---------- Text split reveal (subtle rise, no rotation) ---------- */
.split-words{overflow:visible;}
.split-words .w{display:inline-block;overflow:hidden;vertical-align:top;}
.split-words .w span{display:inline-block;transform:translateY(100%);opacity:0;animation:wordUp .7s cubic-bezier(.22,1,.36,1) forwards;animation-delay:calc(var(--wi) * 40ms + .1s);}
@keyframes wordUp{to{transform:translateY(0);opacity:1;}}

/* ---------- Gentle photo drift (slow, subtle — used sparingly) ---------- */
.ken-burns{overflow:hidden;}
.ken-burns img{animation:kenBurns 34s ease-in-out infinite alternate;}
@keyframes kenBurns{from{transform:scale(1);}to{transform:scale(1.045);}}

/* ---------- Soft base for hero/detail photography (legibility, not mood) ---------- */
.cine-vignette{position:relative;}
.cine-vignette::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(19,31,28,0),rgba(19,31,28,.14));
}

/* ---------- Scroll parallax helper (used by GSAP when available) ---------- */
.parallax-layer{will-change:transform;}
