/* ===== ESN Motion : transitions de page, apparitions, parallaxe, survols ===== */

/* Transitions entre pages (navigateurs compatibles) : la barre de menu reste, le contenu glisse */
@view-transition{navigation:auto}
.nav{view-transition-name:esn-nav}
::view-transition-old(root){animation:esn-vt-out .32s cubic-bezier(.4,0,.2,1) both}
::view-transition-new(root){animation:esn-vt-in .55s cubic-bezier(.2,.8,.2,1) both}
@keyframes esn-vt-out{to{opacity:0;transform:translateY(-14px)}}
@keyframes esn-vt-in{from{opacity:0;transform:translateY(22px)}}

/* Défilement fluide : le JS prend la main, on coupe le scroll natif « smooth » */
html.lenis,html.lenis body{height:auto}
html.lenis{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* Menu : se range quand on descend, revient dès qu'on remonte */
.nav{transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .3s}
.nav.m-hide{transform:translateY(calc(-100% - 2px))}
.nav.m-float{box-shadow:0 10px 30px rgba(29,27,23,.08)}

/* Barre de progression de lecture */
.m-prog{position:fixed;left:0;top:0;height:2px;width:100%;z-index:120;background:var(--sand);transform-origin:0 50%;transform:scaleX(var(--p,0));pointer-events:none}

/* Titres : montée masquée */
.m-t{clip-path:inset(0 0 100% 0);transform:translateY(.35em);transition:clip-path 1s cubic-bezier(.2,.8,.2,1) var(--d,0s),transform 1s cubic-bezier(.2,.8,.2,1) var(--d,0s)}
.m-t.m-in{clip-path:inset(-.2em -.2em -.3em -.2em);transform:none}

/* Blocs et cartes : apparition en cascade */
.m-r{opacity:0;transform:translateY(28px) scale(.985);transition:opacity .9s cubic-bezier(.2,.8,.2,1) var(--d,0s),transform .9s cubic-bezier(.2,.8,.2,1) var(--d,0s)}
.m-r.m-in{opacity:1;transform:none}
[data-reveal]{transition-delay:var(--d,0s)}

/* Parallaxe (piloté par --my, en pixels) */
.m-par{transform:translate3d(0,var(--my,0px),0) scale(1.08);will-change:transform}

/* Survols */
.btn{position:relative;overflow:hidden;transition:transform .35s cubic-bezier(.2,.8,.2,1),background .3s,color .3s,border-color .3s,box-shadow .35s}
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.btn:hover::after{transform:translateX(120%)}
.btn:hover{box-shadow:0 12px 26px rgba(29,27,23,.16)}
.ic-vis,.crew-ph,.ent-media .vid,.ent-poster,.hop-photo img,.u-next-card,.also-card,.pb{transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s cubic-bezier(.2,.8,.2,1)}
.ic-vis:hover,.crew-ph:hover{transform:translateY(-6px);box-shadow:0 22px 40px rgba(0,0,0,.22)}
.ent-media .vid:hover,.ent-poster:hover{transform:translateY(-4px)}
.u-nav a{transition:background .25s,color .25s,border-color .25s,transform .3s cubic-bezier(.2,.8,.2,1)}
.u-nav a:hover{transform:translateY(-2px)}

/* Accessibilité : aucune animation si l'appareil le demande */
@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  .m-t,.m-r{clip-path:none!important;opacity:1!important;transform:none!important;transition:none!important}
  .m-par{transform:none!important}
  .nav.m-hide{transform:none}
  .btn::after{display:none}
}
