/* MOTION: сдержанно. Отдельный файл, потому что страницы с base={false}
   (index, science, podbor) свой CSS держат inline и base.css не подключают -
   а анимации нужны на всех. Подключается из Base.astro всегда. */
@keyframes m-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes m-fade{from{opacity:0}to{opacity:1}}
.topbar{animation:m-fade .7s ease-out both}
/* два варианта разметки hero: .hero-eyebrow/.sub на товарных, .eyebrow/.wrap>p на index и science */
.hero-eyebrow,.hero .eyebrow{animation:m-rise .55s cubic-bezier(.22,1,.36,1) .08s both}
.hero h1{animation:m-rise .6s cubic-bezier(.22,1,.36,1) .16s both}
.hero p.sub,.hero .wrap>p{animation:m-rise .6s cubic-bezier(.22,1,.36,1) .24s both}
.hero .cta-row,.hero .wrap>.cta{animation:m-rise .6s cubic-bezier(.22,1,.36,1) .32s both}
.hero-trust{animation:m-rise .6s cubic-bezier(.22,1,.36,1) .40s both}
.hero-visual{animation:m-fade .9s ease-out .35s both}
/* podbor: квиз перерисовывает #stage целиком, IO не нужен - шаг въезжает при вставке в DOM */
html.anim .nav{animation:m-fade .7s ease-out both}
html.anim .stage>*{animation:m-rise .42s cubic-bezier(.22,1,.36,1) both}
/* Scroll-reveal: цели помечены классом .rv, прячутся ДО отрисовки через html.anim
   (класс ставится синхронно в <head>). Нет JS / reduced-motion html.anim
   не выставлен контент виден сразу. .rv-in добавляет reveal.js. */
html.anim .rv{opacity:0;transform:translateY(18px);will-change:transform,opacity;
  transition:opacity .7s cubic-bezier(.22,1,.36,1) var(--rvd,0s),
             transform .7s cubic-bezier(.22,1,.36,1) var(--rvd,0s)}
html.anim .rv-in{opacity:1!important;transform:none!important}
@media (prefers-reduced-motion: reduce){
  *{transition:none!important;animation:none!important}
  html.anim .rv{opacity:1!important;transform:none!important}
}
