/*
 * Phoenix Site Engine v2.0.9 — Cinematic experience layer.
 * Scene choreography, masked typography, scroll-linked media depth and
 * restrained pointer depth. Bespoke interactions keep ownership of themselves.
 */
.pse-motion-v2{
  --pse-reveal-y:38px;
  --pse-reveal-scale:.985;
  --pse-stagger-step:86ms;
  --pse-cine-ease:cubic-bezier(.16,1,.3,1);
  --pse-cine-ease-in-out:cubic-bezier(.76,0,.24,1);
}

/* Base reveal API — more expressive than the v2.0.0 fade, without becoming a jump. */
.pse-motion-ready [data-pse-reveal]{
  opacity:0;
  filter:blur(5px);
  clip-path:inset(0 0 10% 0);
  transform:translate3d(0,var(--pse-reveal-y),0) scale(var(--pse-reveal-scale));
  transition-property:opacity,transform,filter,clip-path;
  transition-duration:900ms,1150ms,700ms,1100ms;
  transition-timing-function:var(--pse-cine-ease);
  will-change:opacity,transform,filter,clip-path;
}
.pse-motion-ready [data-pse-reveal="soft"]{--pse-reveal-y:20px;--pse-reveal-scale:.992;filter:blur(2px)}
.pse-motion-ready [data-pse-reveal="early"]{--pse-reveal-y:16px;--pse-reveal-scale:.995;filter:blur(1.5px)}
.pse-motion-ready [data-pse-reveal].is-visible{opacity:1;filter:none;clip-path:inset(0);transform:none}
.pse-motion-ready [data-pse-reveal].is-settled{clip-path:none;will-change:auto}
/* Visual hosts with intentional overhangs must never become clipping layers. */
.pse-motion-ready [data-pse-reveal].pse-cine-overflow-safe,
.pse-motion-ready [data-pse-reveal].pse-cine-overflow-safe.is-visible,
.pse-motion-ready [data-pse-reveal].pse-cine-overflow-safe.is-settled{
  clip-path:none;
}
.pse-motion-ready [data-pse-reveal].pse-cine-overflow-safe{
  transition-property:opacity,transform,filter;
  will-change:opacity,transform,filter;
}
.pse-motion-ready [data-pse-reveal].pse-cine-overflow-safe.is-settled{will-change:auto}

.pse-motion-ready [data-pse-stagger]>*{
  opacity:0;
  filter:blur(3px);
  transform:translate3d(var(--pse-entry-x,0),34px,0) rotate(var(--pse-entry-rotate,0deg)) scale(.985);
  transition-property:opacity,transform,filter;
  transition-duration:760ms,1100ms,680ms;
  transition-timing-function:var(--pse-cine-ease);
  transition-delay:var(--pse-stagger-delay,0ms);
  will-change:opacity,transform,filter;
}
.pse-motion-ready [data-pse-stagger].is-visible>*{opacity:1;filter:none;transform:none}
.pse-motion-ready [data-pse-stagger].is-settled>*{will-change:auto}

/* Hero = a staged opening shot, not one block fading in. */
.pse-cine-hero{position:relative;overflow:clip}
.pse-cine-hero__kicker,
.pse-cine-hero__title,
.pse-cine-hero__support,
.pse-cine-hero__visual{
  will-change:transform,opacity,clip-path,filter;
}
.pse-cine-hero__kicker{
  opacity:0;
  transform:translate3d(0,18px,0);
  letter-spacing:.24em!important;
  transition:opacity 650ms ease 80ms,transform 850ms var(--pse-cine-ease) 80ms,letter-spacing 950ms var(--pse-cine-ease) 80ms;
}
.pse-cine-hero__title{
  opacity:.01;
  clip-path:inset(0 0 105% 0);
  transform:translate3d(0,70px,0) skewY(1.8deg);
  transform-origin:left bottom;
  transition:clip-path 1180ms var(--pse-cine-ease) 120ms,transform 1250ms var(--pse-cine-ease) 120ms,opacity 250ms ease 120ms;
}
.pse-cine-hero__support{
  opacity:0;
  filter:blur(4px);
  transform:translate3d(0,30px,0);
  transition:opacity 850ms ease 430ms,transform 1100ms var(--pse-cine-ease) 430ms,filter 900ms ease 430ms;
}
.pse-cine-hero__visual{
  opacity:0;
  clip-path:inset(0 0 0 100% round 28px);
  transform:translate3d(36px,var(--pse-cine-parallax,0px),0) scale(1.065);
  transition:clip-path 1450ms var(--pse-cine-ease) 260ms,transform 1550ms var(--pse-cine-ease) 260ms,opacity 500ms ease 260ms;
}
.pse-cine-hero.is-cine-ready .pse-cine-hero__kicker{opacity:1;transform:none;letter-spacing:.14em!important}
.pse-cine-hero.is-cine-ready .pse-cine-hero__title{opacity:1;clip-path:inset(0);transform:none}
.pse-cine-hero.is-cine-ready .pse-cine-hero__support{opacity:1;filter:none;transform:none}
.pse-cine-hero.is-cine-ready .pse-cine-hero__visual{opacity:1;clip-path:inset(0 round 28px);transform:translate3d(0,var(--pse-cine-parallax,0px),0) scale(1.025)}
.pse-cine-hero__visual.pse-cine-overflow-safe,
.pse-cine-hero.is-cine-ready .pse-cine-hero__visual.pse-cine-overflow-safe{clip-path:none}
.pse-cine-hero.is-cine-settled .pse-cine-hero__title{clip-path:none;will-change:auto}
.pse-cine-hero.is-cine-settled .pse-cine-hero__kicker,
.pse-cine-hero.is-cine-settled .pse-cine-hero__support{will-change:auto}
.pse-cine-hero.is-cine-settled .pse-cine-hero__visual{clip-path:none;will-change:transform;transition:none}

/* Each major section behaves as a scene.
 * v2.5.16: reveal transform and scroll-linked horizontal drift intentionally
 * use separate transform channels (`transform` + individual `translate`).
 * This removes the old settled-state handoff that could visibly snap headings. */
.pse-cine-scene{position:relative;isolation:isolate}
.pse-cine-scene:before{
  content:"";
  position:absolute;
  z-index:4;
  left:max(20px,calc((100vw - 1500px)/2));
  top:0;
  width:min(170px,18vw);
  height:2px;
  background:linear-gradient(90deg,var(--pse-red),rgba(225,29,46,0));
  transform:scaleX(0);
  transform-origin:left center;
  opacity:.85;
  transition:transform 1150ms var(--pse-cine-ease) 110ms;
  pointer-events:none;
}
.pse-cine-scene--even:before{left:auto;right:max(20px,calc((100vw - 1500px)/2));transform-origin:right center;background:linear-gradient(270deg,var(--pse-red),rgba(225,29,46,0))}
.pse-cine-scene.is-cine-active:before{transform:scaleX(1)}

.pse-cine-heading{
  opacity:.01;
  translate:var(--pse-cine-heading-x,0px) 0;
  clip-path:inset(0 0 102% 0);
  transform:translate3d(0,58px,0) skewY(1deg);
  transform-origin:left bottom;
  transition:clip-path 1100ms var(--pse-cine-ease) 80ms,transform 1180ms var(--pse-cine-ease) 80ms,opacity 200ms ease 80ms;
  will-change:clip-path,transform,opacity;
}
.pse-cine-kicker{
  opacity:0;
  translate:var(--pse-cine-kicker-x,0px) 0;
  transform:translate3d(0,16px,0);
  transition:opacity 650ms ease 30ms,transform 850ms var(--pse-cine-ease) 30ms;
}
.pse-cine-scene.is-cine-active .pse-cine-heading{opacity:1;clip-path:inset(0);transform:none}
.pse-cine-scene.is-cine-active .pse-cine-kicker{opacity:1;transform:none}

/* Imagery unveils as a surface and then drifts subtly against the viewport. */
.pse-cine-media{
  clip-path:inset(12% 0 12% 0 round 24px);
  opacity:.25;
  transform:translate3d(0,var(--pse-cine-parallax,24px),0) scale(1.06);
  transition:clip-path 1350ms var(--pse-cine-ease),opacity 800ms ease,transform 1200ms var(--pse-cine-ease);
  will-change:clip-path,opacity,transform;
}
.pse-cine-scene.is-cine-active .pse-cine-media{
  clip-path:inset(0 round 24px);
  opacity:1;
  transform:translate3d(0,var(--pse-cine-parallax,0px),0) scale(1.025);
}
.pse-cine-scene.is-cine-settled .pse-cine-heading{clip-path:none;will-change:auto;transition:none;transform:none}
.pse-cine-scene.is-cine-settled .pse-cine-kicker{will-change:auto;transition:none;transform:none}
.pse-cine-scene.is-cine-settled .pse-cine-media{clip-path:none;will-change:transform;transition:none}

/* Continuous Lenis-linked scene state. This is deliberately restrained on
 * ordinary pages: large type drifts a few pixels against the viewport while
 * media keeps the existing depth move. The stronger spectacle lives in the
 * homepage-specific layer. */
@media(min-width:961px) and (prefers-reduced-motion:no-preference){
  .pse-cine-scene{--pse-scene-progress:0;--pse-scene-center:0}
}

/* Interactive surfaces feel dimensional, but the effect stays restrained enough
 * for business content and never runs on touch. */
.pse-cine-tilt{
  --pse-tilt-x:0deg;
  --pse-tilt-y:0deg;
  --pse-tilt-lift:0px;
  transform:perspective(1100px) translate3d(var(--pse-scroll-x,0px),calc(var(--pse-scroll-y,0px) + var(--pse-tilt-lift)),0) rotateZ(var(--pse-scroll-rotate,0deg)) rotateX(var(--pse-tilt-x)) rotateY(var(--pse-tilt-y)) scale(var(--pse-scroll-scale,1));
  transform-style:preserve-3d;
  transition:transform 520ms var(--pse-cine-ease),box-shadow 520ms var(--pse-cine-ease),border-color 420ms ease!important;
}

/* Directional controls. */
.pse-motion-v2 .pse-btn,
.pse-motion-v2 .pse-text-link{
  transition:transform 380ms var(--pse-cine-ease),box-shadow 520ms var(--pse-cine-ease),border-color 300ms ease,background-color 300ms ease,color 300ms ease;
}
.pse-motion-v2 .pse-btn span[aria-hidden="true"],
.pse-motion-v2 .pse-text-link span[aria-hidden="true"]{
  display:inline-block;
  transition:transform 420ms var(--pse-cine-ease);
}

@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .pse-motion-v2 .pse-main .pse-btn:hover,
  .pse-motion-v2 .pse-main .pse-text-link:hover{transform:translate3d(0,-3px,0)}
  .pse-motion-v2 .pse-main .pse-btn:hover span[aria-hidden="true"],
  .pse-motion-v2 .pse-main .pse-text-link:hover span[aria-hidden="true"]{transform:translate3d(7px,-3px,0) rotate(-3deg)}
  .pse-cine-tilt:hover{
    border-color:rgba(225,29,46,.34)!important;
    box-shadow:0 34px 80px rgba(0,0,0,.2)!important;
  }
}

@media(max-width:960px){
  .pse-cine-scene:before{width:110px}
  .pse-cine-hero__title{transform:translate3d(0,48px,0) skewY(1.2deg)}
  .pse-cine-heading{transform:translate3d(0,40px,0) skewY(.7deg)}
  .pse-cine-hero__visual{transform:translate3d(20px,0,0) scale(1.04)}
  .pse-cine-hero.is-cine-ready .pse-cine-hero__visual{transform:none}
  .pse-cine-media,.pse-cine-scene.is-cine-active .pse-cine-media{transform:none}
}

@media(max-width:767px){
  .pse-motion-v2{--pse-reveal-y:24px;--pse-stagger-step:62ms}
  .pse-motion-ready [data-pse-reveal],.pse-motion-ready [data-pse-stagger]>*{filter:none}
  .pse-cine-scene:before{left:20px;right:auto;width:72px;height:2px}
  .pse-cine-scene--even:before{left:20px;right:auto;transform-origin:left center;background:linear-gradient(90deg,var(--pse-red),rgba(225,29,46,0))}
  .pse-cine-hero__title{transform:translate3d(0,34px,0)}
  .pse-cine-heading{transform:translate3d(0,30px,0)}
  .pse-cine-hero__visual{clip-path:inset(0 0 100% 0 round 22px);transform:translate3d(0,24px,0) scale(1.025)}
  .pse-cine-hero.is-cine-ready .pse-cine-hero__visual{clip-path:inset(0 round 22px);transform:none}
  .pse-cine-hero__visual.pse-cine-overflow-safe,.pse-cine-hero.is-cine-ready .pse-cine-hero__visual.pse-cine-overflow-safe{clip-path:none}
  .pse-cine-media{clip-path:inset(8% 0 8% 0 round 20px);transform:none}
  .pse-cine-scene.is-cine-active .pse-cine-media{clip-path:inset(0 round 20px);transform:none}
  .pse-cine-scene.is-cine-settled .pse-cine-media{clip-path:none;will-change:auto}
}

@media(prefers-reduced-motion:reduce){
  [data-pse-reveal],[data-pse-stagger]>*,.pse-cine-hero__kicker,.pse-cine-hero__title,.pse-cine-hero__support,.pse-cine-hero__visual,.pse-cine-heading,.pse-cine-kicker,.pse-cine-media,.pse-cine-tilt{
    opacity:1!important;filter:none!important;clip-path:none!important;transform:none!important;transition:none!important;animation:none!important;will-change:auto!important;
  }
  .pse-cine-scene:before{display:none!important}
  .pse-motion-v2 .pse-btn,.pse-motion-v2 .pse-text-link{transition:none!important}
}
