/* HEYDAY — Animations (safe: never permanently hide). */

body {
  animation: pageEnter 0.4s cubic-bezier(0.4, 0, 0.2, 1) both;
}
body.page-exit {
  animation: pageExit 0.25s cubic-bezier(0.4, 0, 0.2, 1) forwards;
  pointer-events: none;
}

/* NB: keep this opacity-only. A lingering transform on <body> (even identity
   translateY(0) от fill-mode:both) делает body containing-block'ом для всех
   position:fixed потомков — это ломало липкий хедер (уезжал при скролле),
   высоту мобильного меню (во всю страницу) и кнопку «наверх». */
@keyframes pageEnter {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes pageExit {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(-4px); }
}

/* Scroll fade-up: subtle. Elements stay visible (opacity 1) by default —
   .is-visible just nudges them up smoothly. No risk of stuck-invisible cards. */
body.js .glass-card,
body.js .fade-up,
body.js .service-step,
body.js .feature-item,
body.js .faq-item,
body.js .cert-item {
  transition:
    opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
