/* Alcyone — animations. Uniquement transform + opacity, lentes et feutrées (langage du DS).
   Les états initiaux masqués sont conditionnés à html.js : sans JavaScript, la page reste intacte. */

/* ---------- Voile d'introduction ---------- */
.veil{position:fixed;inset:0;z-index:100;background:var(--ecume);display:flex;align-items:center;justify-content:center;animation:veil-lift 700ms var(--ease) 1500ms forwards}
.veil__wordmark{font:300 clamp(24px,4vw,40px)/1 var(--font-sans);color:var(--encre);opacity:0;animation:veil-word 900ms var(--ease) 150ms forwards}
@keyframes veil-word{from{opacity:0;letter-spacing:.12em}to{opacity:1;letter-spacing:var(--ls-caps-wide)}}
@keyframes veil-lift{to{transform:translateY(-101%)}}
.veil-skip .veil{display:none}
@media (prefers-reduced-motion:reduce){.veil{display:none}}

/* ---------- Entrée en cascade du hero ---------- */
.js .hero__eyebrow,.js .hero h1,.js .hero__sub,.js .resa-wrap{opacity:0;transform:translateY(26px);transition:opacity 900ms var(--ease),transform 900ms var(--ease)}
.js .hero__video{opacity:0;transition:opacity 1200ms var(--ease)}
.js .is-ready .hero__eyebrow{opacity:1;transform:none;transition-delay:100ms}
.js .is-ready .hero h1{opacity:1;transform:none;transition-delay:250ms}
.js .is-ready .hero__sub{opacity:1;transform:none;transition-delay:400ms}
.js .is-ready .resa-wrap{opacity:1;transform:none;transition-delay:600ms}
.js .is-ready .hero__video{opacity:1}

/* ---------- Apparitions au scroll ---------- */
.js [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity var(--dur-slow) var(--ease) var(--reveal-delay,0ms),transform var(--dur-slow) var(--ease) var(--reveal-delay,0ms)}
.js [data-reveal].is-visible{opacity:1;transform:none}
/* Filets signature : se tracent après l'apparition du bloc */
.js [data-reveal] .section-heading__rule,
.js [data-reveal] .quote__rule,
.js [data-reveal] .menu-card__rule{width:0;transition:width var(--dur-slow) var(--ease) calc(var(--reveal-delay,0ms) + 200ms)}
.js [data-reveal].is-visible .section-heading__rule,
.js [data-reveal].is-visible .quote__rule,
.js [data-reveal].is-visible .menu-card__rule{width:32px}

/* ---------- Parallaxe du hero (desktop) ---------- */
@media (min-width:900px){.js .hero__content{will-change:transform,opacity}}

/* ---------- Soulignement glissant des liens de nav ---------- */
.site-header__link{position:relative}
.site-header__link::after{content:"";position:absolute;left:0;right:0;bottom:0;border-top:1px solid currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--dur) var(--ease)}
.site-header__link:hover::after{transform:scaleX(1)}

/* ---------- Menu mobile en cascade ---------- */
.mobile-menu.is-open{animation:menu-fade var(--dur) var(--ease) both}
.mobile-menu.is-open a,.mobile-menu.is-open .mobile-menu__rule,.mobile-menu.is-open .lang-switch{animation:menu-item var(--dur) var(--ease) both}
.mobile-menu.is-open a:nth-of-type(1){animation-delay:60ms}
.mobile-menu.is-open a:nth-of-type(2){animation-delay:110ms}
.mobile-menu.is-open a:nth-of-type(3){animation-delay:160ms}
.mobile-menu.is-open a:nth-of-type(4){animation-delay:210ms}
.mobile-menu.is-open a:nth-of-type(5){animation-delay:260ms}
.mobile-menu.is-open .mobile-menu__rule{animation-delay:310ms}
.mobile-menu.is-open .lang-switch{animation-delay:360ms}
@keyframes menu-fade{from{opacity:0}to{opacity:1}}

/* ---------- Dépliage de la carte complète ---------- */
.menu-more:not([hidden]) .menu-card{animation:menu-item var(--dur-slow) var(--ease) both}
.menu-more:not([hidden]) .menu-card:nth-child(2){animation-delay:150ms}
@keyframes menu-item{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ---------- Mouvement réduit : tout visible, rien ne bouge ---------- */
@media (prefers-reduced-motion:reduce){
  .js .hero__eyebrow,.js .hero h1,.js .hero__sub,.js .resa-wrap,.js .hero__video,.js [data-reveal]{opacity:1;transform:none}
  .js [data-reveal] .section-heading__rule,.js [data-reveal] .quote__rule,.js [data-reveal] .menu-card__rule{width:32px}
}
