/* Приёмы анимации с лаборатории NGU, привязанные к блокам центра.
   Разбор и замеры: _assets\animacii-sajt-2026-10-18.md
   Правило: без скрипта ничего не прячется — карточки видны, если на <html> нет data-zk-anim. */

/* 1. карточки появляются по одной: подъём 16 px, 0,6 с, задержку ставит скрипт */
html[data-zk-anim] .zk-dirs__card,
html[data-zk-anim] .zk-neyro__card,
html[data-zk-anim] .zk-poleznoe__card {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .6s cubic-bezier(.2,.7,.2,1), transform .6s cubic-bezier(.2,.7,.2,1);
}

html[data-zk-anim] .zk-dirs__card.zk-vidno,
html[data-zk-anim] .zk-neyro__card.zk-vidno,
html[data-zk-anim] .zk-poleznoe__card.zk-vidno {
  opacity: 1;
  transform: none;
}

/* 2. ответ FAQ раскрывается плавной высотой. Высоту в покое не задаём: родной details
   остаётся как был, скрипт трогает высоту только на время раскрытия — страница не дёргается.
   box-sizing обязателен: у ответа есть padding, и в content-box заданная высота считается
   без него — из-за этого ответ открывался на 20 px выше и потом прыгал. */
html[data-zk-anim] details[class*="faq"] > div {
  overflow: hidden;
  box-sizing: border-box;
  transition: height .36s cubic-bezier(.2, .7, .2, 1),
              padding-top .36s cubic-bezier(.2, .7, .2, 1),
              padding-bottom .36s cubic-bezier(.2, .7, .2, 1);
}

/* 3. бегущий блик по главной кнопке записи */
.zk-cta__btn--primary,
.zk-prices__btn--primary,
.zk-logoped__btn--primary,
.zk-defektolog__btn--primary,
.zk-neyro__btn--primary,
.zk-shkola__btn--primary {
  position: relative;
  overflow: hidden;
}

.zk-cta__btn--primary::after,
.zk-prices__btn--primary::after,
.zk-logoped__btn--primary::after,
.zk-defektolog__btn--primary::after,
.zk-neyro__btn--primary::after,
.zk-shkola__btn--primary::after {
  content: "";
  position: absolute;
  top: 0;
  left: -60%;
  width: 45%;
  height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .38), transparent);
  transform: skewX(-18deg);
  transition: left .65s cubic-bezier(.22, .61, .36, 1);
  pointer-events: none;
}

.zk-cta__btn--primary:hover::after,
.zk-cta__btn--primary:focus-visible::after,
.zk-prices__btn--primary:hover::after,
.zk-prices__btn--primary:focus-visible::after,
.zk-logoped__btn--primary:hover::after,
.zk-logoped__btn--primary:focus-visible::after,
.zk-defektolog__btn--primary:hover::after,
.zk-defektolog__btn--primary:focus-visible::after,
.zk-neyro__btn--primary:hover::after,
.zk-neyro__btn--primary:focus-visible::after,
.zk-shkola__btn--primary:hover::after,
.zk-shkola__btn--primary:focus-visible::after {
  left: 120%;
}

/* 4. ссылки «Подробнее о логопеде / о дефектологе» в направлениях: под ссылкой
   пробегает линия вместо мгновенного подчёркивания */
html[data-zk-anim] .zk-dirs__card--link:hover .zk-dirs__more,
html[data-zk-anim] .zk-dirs__card--link:focus-visible .zk-dirs__more {
  text-decoration: none;
}

html[data-zk-anim] .zk-dirs__card--link .zk-dirs__more {
  position: relative;
}

html[data-zk-anim] .zk-dirs__card--link .zk-dirs__more::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -3px;
  height: 1.5px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .34s cubic-bezier(.22, .61, .36, 1);
}

html[data-zk-anim] .zk-dirs__card--link:hover .zk-dirs__more::after,
html[data-zk-anim] .zk-dirs__card--link:focus-visible .zk-dirs__more::after {
  transform: scaleX(1);
}

/* «уменьшить движение»: ничего не прячем, ничего не бежит */
@media (prefers-reduced-motion: reduce) {
  html[data-zk-anim] .zk-dirs__card,
  html[data-zk-anim] .zk-neyro__card,
  html[data-zk-anim] .zk-poleznoe__card {
    opacity: 1;
    transform: none;
    transition: none;
  }

  html[data-zk-anim] details[class*="faq"] > div {
    overflow: visible;
    height: auto !important;
    transition: none;
  }

  .zk-cta__btn--primary::after,
  .zk-prices__btn--primary::after,
  .zk-logoped__btn--primary::after,
  .zk-defektolog__btn--primary::after,
  .zk-neyro__btn--primary::after,
  .zk-shkola__btn--primary::after {
    display: none;
  }

  .zk-dirs__card--link .zk-dirs__more::after {
    display: none;
  }

  .zk-dirs__card--link:hover .zk-dirs__more {
    text-decoration: underline;
  }
}
