/* ==========================================================================
   ПЛАВНЫЙ СКРОЛЛ — СТИЛИ (перенос с karatasso.com, 09.10.2026)

   Источник: assets/css/layout/smooth-scroll.css и часть base/reset.css
   сайта Karatasso Studio. Логика — smooth-scroll.js рядом.

   Классы .lenis, .lenis-smooth, .lenis-stopped библиотека ставит на <html>
   сама. Пока скрипт не отработал, правила с ними не действуют — без JS
   страница просто прокручивается по-родному.

   ЧТО ПОДСТРОИТЬ ПОД ТЕМУ (помечено «ПОД ТЕМУ»):
   · высоту липкой/фиксированной шапки в scroll-padding-top;
   · классы-замки — те же, что в CONFIG.lockClasses в smooth-scroll.js;
   · фиксированную шапку — ей тоже нужно поле справа под замком.
   ========================================================================== */

html {
  /* ПОД ТЕМУ. Якорь не уезжает под шапку: Lenis (и родной переход
     со страницы на страницу) читают отступ отсюда. Высота шапки + воздух.
     Одно место правды — не дублировать scroll-margin-top на секциях,
     иначе браузер сложит оба.

     Тема MDL Advisers: высота шапки — её же переменная --header-h
     (main.css, секция ШАПКА: 104–124px, на телефоне 64px), воздух 16px —
     как было у section[id] { scroll-margin-top } до переноса сюда.
     Вошедшему редактору WordPress ставит сверху свою панель и сдвигает
     шапку под неё — её высоту прибавляем тоже; гостю переменной нет,
     и слагаемое равно нулю. */
  scroll-padding-top: calc(var(--header-h, 104px) + var(--wp-admin--admin-bar--height, 0px) + 16px);

  /* Запрет горизонтальной прокрутки должен стоять на <html>, а не на
     <body> — иначе Safari после замка теряет position: sticky. В теме
     MDL Advisers он и так на html: overflow-x: clip в main.css, секция
     «html { overflow-x: clip; scrollbar-gutter: stable }». Здесь не
     дублируем. */
}

/* Высоту документа считает сама библиотека. Если её зафиксировать
   (html, body { height: 100% } в теме), она не увидит, что страница
   стала длиннее. */
html.lenis,
html.lenis body {
  height: auto;
}

/* Родная плавность браузера (scroll-behavior: smooth в теме) вместе
   с Lenis дерётся за одну позицию — якорь дёргается. При включённой
   библиотеке родную выключаем; переходы ведёт lenis.scrollTo. */
html.lenis {
  scroll-behavior: auto;
}

/* Окно или меню остановили Lenis — страница под ними не прокручивается.
   Второй засов — правило с классами-замками ниже; вдвоём они запирают
   страницу и тогда, когда остановленный Lenis отдаёт колесо браузеру. */
.lenis:not(.lenis-autoToggle).lenis-stopped {
  overflow: clip;
}

/* ПОД ТЕМУ: классы-замки (= CONFIG.lockClasses). Запирается <html>,
   а не <body> — по той же причине, что overflow-x выше. Класс остаётся
   на body, правило ставит overflow корню через :has(). ОДИН селектор
   со списком внутри :has(), а не два через запятую: сжатие CSS
   склеивает два в :is(…) и может потерять правило. */
html:has(> body.is-scroll-locked) {
  overflow: hidden;
}

/* Место исчезнувшей полосы прокрутки (компьютер с обычной полосой):
   без него страница под окном становится шире и съезжает вправо.
   Ширину меряет smooth-scroll.js; на телефоне и Маке с плавающей
   полосой она 0. */
body.is-scroll-locked {
  padding-right: var(--ss-scrollbar-width, 0px);
}

/* Фиксированная шапка темы (.header, position: fixed) поле body
   не получает — ей то же поле своим правилом, иначе её правый край
   (кнопка, бургер) дёрнется вправо. Своего поля справа у .header нет,
   отступы лежат на .header__inner. */
body.is-scroll-locked .header {
  padding-right: var(--ss-scrollbar-width, 0px);
}

/* Своя родная прокрутка внутри (data-lenis-prevent): докрутив до края,
   колесо не перекидывается на страницу. */
[data-lenis-prevent] {
  overscroll-behavior: contain;
}

/* Пока идёт инерция, курсор не должен «проваливаться» в iframe (карта,
   видео): он съедает колесо, и прокрутка встаёт. */
.lenis.lenis-smooth iframe {
  pointer-events: none;
}
