/* Каскадное появление блоков при скролле.
   Прячем до первой отрисовки (html.anim-ready ставится инлайн-скриптом в <head>),
   показываем по мере входа в вьюпорт. Если JS не сработал — ничего не прячем. */

html.anim-ready :is(header, section, footer) > *,
html.anim-ready .mono-srow,
html.anim-ready .at-card,
html.anim-ready .sk-srow,
html.anim-ready .kt-srow {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity .72s cubic-bezier(.22, .65, .2, 1),
    transform .72s cubic-bezier(.22, .65, .2, 1);
  transition-delay: var(--d, 0ms);
  will-change: opacity, transform;
}

html.anim-ready .is-in {
  opacity: 1 !important;
  transform: none !important;
}

/* Лёгкое «дыхание» акцентных цифр в hero — едва заметное, без навязчивости */
@keyframes anim-rise {
  from { opacity: 0; transform: translateY(28px) }
  to   { opacity: 1; transform: none }
}

@media (prefers-reduced-motion: reduce) {
  html.anim-ready :is(header, section, footer) > *,
  html.anim-ready .mono-srow,
  html.anim-ready .at-card,
  html.anim-ready .sk-srow,
  html.anim-ready .kt-srow {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}
