/* PRÉ-SCRIPTUM — système de mouvement unifié.
   Références validées : 350 ms interactions, 450 ms visuels,
   700 ms apparitions de contenu, 850 ms ouverture de page. */
:root{
  --motion-interaction:350ms;
  --motion-visual:450ms;
  --motion-content:700ms;
  --motion-page:850ms;
  --motion-ease:cubic-bezier(.2,.7,.2,1);
  --motion-ease-soft:cubic-bezier(.22,.61,.36,1);
}
html{scroll-behavior:smooth}
body{animation:ps-page-enter var(--motion-page) var(--motion-ease) both}
body.is-leaving{opacity:0;transition:opacity var(--motion-interaction) var(--motion-ease-soft)}

[data-page-intro="mark"]{animation:ps-page-mark var(--motion-page) var(--motion-ease) both}
[data-page-intro="copy"]{animation:ps-page-copy var(--motion-content) 120ms var(--motion-ease) both}

.motion-ready [data-reveal]:not(.is-visible){opacity:0;transform:translateY(24px)}
[data-reveal]{transition:opacity var(--motion-content) var(--motion-ease),transform var(--motion-content) var(--motion-ease)}
[data-reveal].is-visible{opacity:1;transform:none}

.site-header .nav-link:not(.nav-contact):after,
.site-header .nav-poles>summary:before{
  transition:transform var(--motion-interaction) var(--motion-ease)
}
.site-header .nav-contact,
.nav-poles .pole-menu,
.nav-poles .pole-menu a,
.site-header .mobile-menu,
.site-header .mobile-menu a,
.menu-toggle,
.text-link,
.origin-link,
.contact .button,
.service-cta,
.event-actions a,
.event-practical .contact-button,
.book-page .hero .actions a,
.book-page .action a{
  transition:
    background-color var(--motion-interaction) var(--motion-ease),
    color var(--motion-interaction) var(--motion-ease),
    border-color var(--motion-interaction) var(--motion-ease),
    box-shadow var(--motion-interaction) var(--motion-ease),
    transform var(--motion-interaction) var(--motion-ease),
    opacity var(--motion-interaction) var(--motion-ease)
}

.pole,.book,.collection-card,.note,.news-card,.launch-book{
  transition:
    transform var(--motion-interaction) var(--motion-ease),
    box-shadow var(--motion-interaction) var(--motion-ease),
    border-color var(--motion-interaction) var(--motion-ease),
    background-color var(--motion-interaction) var(--motion-ease)
}
.link-arrow{display:inline-block;transition:transform var(--motion-interaction) var(--motion-ease)}

.book-cover img,
.book-page .cover img,
.official-house-panel img,
.hero-gold-mark,
.studio-book,
.launch-cover-stage a,
.house-hero-mark img,
.pole-identity img{
  transition:
    transform var(--motion-visual) var(--motion-ease),
    filter var(--motion-visual) var(--motion-ease),
    box-shadow var(--motion-visual) var(--motion-ease)
}

.pole:hover,.pole:focus-within,.pole.is-touch-active{transform:translate(-4px,-4px)}
.book:hover,.book:focus-within,.book.is-touch-active,
.launch-book:hover,.launch-book:focus-within,.launch-book.is-touch-active{transform:translateY(-7px)}
.collection-card:hover,.collection-card:focus-within,.collection-card.is-touch-active,
.note:hover,.note:focus-within,.note.is-touch-active{transform:translateY(-5px)}
.news-card:hover,.news-card:focus-within,.news-card.is-touch-active{transform:translateX(5px)}

.pole:hover .link-arrow,.pole:focus-within .link-arrow,.pole.is-touch-active .link-arrow,
.book:hover .link-arrow,.book:focus-within .link-arrow,.book.is-touch-active .link-arrow,
.collection-card:hover .link-arrow,.collection-card:focus-within .link-arrow,.collection-card.is-touch-active .link-arrow,
.note:hover .link-arrow,.note:focus-within .link-arrow,.note.is-touch-active .link-arrow,
.launch-book:hover .link-arrow,.launch-book:focus-within .link-arrow,.launch-book.is-touch-active .link-arrow{
  transform:translateX(6px)
}

.book:hover .book-cover img,.book:focus-within .book-cover img,.book.is-touch-active .book-cover img{transform:scale(1.035)}
.book-page .cover:hover img,.book-page .cover:focus-within img,.book-page .cover.is-touch-active img{transform:scale(1.025) rotate(-.5deg)}
.pole:hover .pole-identity img,.pole:focus-within .pole-identity img,.pole.is-touch-active .pole-identity img{transform:scale(1.035)}

.event-copy>*{animation:ps-content-up var(--motion-content) var(--motion-ease) both}
.event-copy>h1{animation-delay:100ms}
.event-copy>.lead{animation-delay:180ms}
.event-copy>.event-date{animation-delay:260ms}
.event-copy>.event-countdown{animation-delay:340ms}
.event-copy>.event-actions{animation-delay:420ms}
.launch-cover-stage a{animation:ps-cover-in var(--motion-page) var(--motion-ease) both}
.launch-cover-stage a:nth-child(2){animation-delay:170ms}
.launch-cover-stage a:nth-child(3){animation-delay:340ms}

.back-to-top{transition:transform var(--motion-interaction) var(--motion-ease),background-color var(--motion-interaction) var(--motion-ease)}
.scroll-cue span{transition:transform var(--motion-interaction) var(--motion-ease)}

a:active,button:active{transition-duration:90ms}
.site-header .nav-contact:active,
.contact .button:active,
.book-page .hero .actions a:active,
.event-actions a:active{transform:translateY(1px);box-shadow:none}

@keyframes ps-page-enter{from{opacity:0}to{opacity:1}}
@keyframes ps-page-mark{from{opacity:0;transform:translateY(22px) scale(.975)}to{opacity:1;transform:none}}
@keyframes ps-page-copy{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
@keyframes ps-content-up{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes ps-cover-in{from{opacity:0;filter:blur(5px);transform:translateY(12px)}to{opacity:1;filter:none}}

@media(hover:none){
  .pole.is-touch-active,.book.is-touch-active,.collection-card.is-touch-active,
  .note.is-touch-active,.news-card.is-touch-active,.launch-book.is-touch-active{
    transition-duration:180ms
  }
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  body,body.is-leaving,[data-page-intro],[data-reveal],
  .motion-ready [data-reveal]:not(.is-visible){opacity:1!important;transform:none!important;filter:none!important}
  .pole,.book,.collection-card,.note,.news-card,.launch-book,.book-cover img,
  .book-page .cover img,.launch-cover-stage a,.studio-book,.link-arrow{transform:none!important}
}
