/* Tempo static-image motion: subtle expansion, never footer/chrome media.
   SSOT for scrim/img lockstep on media-enter (Paul 21/Jul/26).
   Fail-if: .cinematic-static uses transition-property:scale alone inside
   .scene-split__media--enter - that kills opacity/transform fly-in while
   ::after still flies (scrim and image at different speeds). */

/* Banner / lone still: Ken Burns scale only */
.cinematic-static{
  scale:1;
  transition-property:scale;
  transition-duration:8s;
  transition-timing-function:cubic-bezier(.22,1,.36,1);
  will-change:scale;
}
.cinematic-static.is-cinematic-in{
  scale:1.035;
}

/*
  media-enter img: keep fly-in channels (opacity + transform) AND optional
  8s scale. Must match ::after below. Specificity beats page shorthand when
  this file loads after the page <style> block.
*/
.scene-split__media--enter > .cinematic-static,
.scene-split__media--enter.is-in > .cinematic-static{
  transition-property:opacity,transform,scale;
  transition-duration:1.35s,1.45s,8s;
  transition-timing-function:cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.22,1,.36,1);
  transition-delay:var(--strip-enter-delay,0s);
  will-change:opacity,transform,scale;
}
.scene-split__media--enter.is-in > .cinematic-static{
  scale:1.035;
}

.cinematic-bg::before{
  transform:scale(1);
  transform-origin:center;
  transition-property:transform;
  transition-duration:8s;
  transition-timing-function:cubic-bezier(.22,1,.36,1);
  will-change:transform;
}
.cinematic-bg.is-cinematic-in::before{
  transform:scale(1.035);
}

/*
  Scrim lockstep - ::after must match the media-enter img fly-in
  (opacity 1.35s + translate 1.45s) AND the cinematic scale (8s) when used.
  Fail-if: transition-property omits transform (scrim fades in place while img rises).
  Fail-if: image scale without matching scrim scale on overflow:visible caption strips
  (grey matte) - see :has(.scene-split__caption) kill below.
*/
.scene-split__media--enter::after{
  scale:1;
  transform-origin:center;
  transition-property:opacity,transform,scale;
  transition-duration:1.35s,1.45s,8s;
  transition-timing-function:cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1),cubic-bezier(.22,1,.36,1);
  transition-delay:var(--strip-enter-delay,0s);
}
.scene-split__media--enter.is-in::after{
  scale:1.035;
}

/*
  Captioned strip tiles (overflow:visible): no 8s scale on img or scrim.
  overflow:visible cannot clip 1.035 - grey matte. Fly-in only.
  Craft layout (aspect boxes) stays in the page CSS / design.md.
*/
.scene-split__media--enter:has(.scene-split__caption) > .cinematic-static,
.scene-split__media--enter:has(.scene-split__caption).is-in > .cinematic-static,
.scene-split__media--enter:has(.scene-split__caption)::after,
.scene-split__media--enter:has(.scene-split__caption).is-in::after{
  scale:1!important;
  transition-property:opacity,transform!important;
  transition-duration:1.35s,1.45s!important;
  transition-timing-function:cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1)!important;
  transition-delay:var(--strip-enter-delay,0s)!important;
  will-change:opacity,transform;
}

/* One visual reading order: top to bottom inside each reveal root. */
[data-fly-in].is-sequencing > .fly-in-item,
[data-fly-in].is-sequencing .fly-in-item{
  transition-delay:var(--fly-seq-delay,0s)!important;
}
.scene-split__media--enter{
  --strip-enter-delay:var(--cinematic-sequence-delay,0s)!important;
}

@media(prefers-reduced-motion:reduce){
  .cinematic-static,
  .cinematic-static.is-cinematic-in,
  .scene-split__media--enter.is-in > .cinematic-static,
  .scene-split__media--enter:has(.scene-split__caption) > .cinematic-static,
  .scene-split__media--enter:has(.scene-split__caption).is-in > .cinematic-static{
    scale:1!important;
    transition:none!important;
    will-change:auto!important;
  }
  .cinematic-bg::before,
  .cinematic-bg.is-cinematic-in::before{
    transform:none!important;
    transition:none!important;
    will-change:auto!important;
  }
  .scene-split__media--enter::after,
  .scene-split__media--enter.is-in::after,
  .scene-split__media--enter:has(.scene-split__caption)::after,
  .scene-split__media--enter:has(.scene-split__caption).is-in::after{
    scale:1!important;
  }
}
