/* Shellix — полноэкранные секции и посекционная прокрутка.
   Подключается на презентационных страницах. FAQ, формы, юридические
   документы и CRM-интерфейс этот файл НЕ подключают — там свободная
   прокрутка, снап мешал бы читать длинный текст.

   Почему proximity, а не mandatory. На странице есть секции высотой
   в 2–5 экранов: их высота — это таймлайн скролл-анимации (стек
   карточек, орбиты, проявление цитаты). Mandatory тянул бы прокрутку
   к ближайшей точке всё время, пока пользователь идёт сквозь такую
   секцию, и дрался бы с анимацией. Proximity срабатывает только рядом
   с границей секции — прокрутка внутри остаётся свободной.
   Радиус притяжения у Blink — треть экрана (замер: отбрасывает с 269px,
   не трогает с 271px при экране 812px).

   Почему scroll-snap-stop: normal, а не always. Always запрещает жесту
   пройти мимо точки фиксации, поэтому один бросок пальца продвигал ровно
   на одну границу, сколько силы в него ни вложи: 17 экранов главной
   стоили десяти обязательных махов и столько же на возврат наверх.
   Ровно это ощущается как «страница держит палец». Доводку до границы
   даёт сам proximity: жест закончился рядом — кадр встанет по секции,
   закончился далеко — инерция донесёт туда, куда летела.

   Про длинные секции. У снап-области выше экрана валидна не одна точка,
   а вся полоса, где область накрывает экран (CSS Scroll Snap 1, §5.1).
   Поэтому прокрутка внутри анимационных секций свободна и без правок:
   позиции 3000, 7000, 9500 на главной держатся без отбрасывания.
   Закрепление кадра на время анимации сделано в разметке через
   position: sticky (index.html:325 и :578) и отдельных классов не требует. */

html {
  scroll-snap-type: y proximity;
}

/* Общее для всех секций-экранов.
   min-height, а не height: короткие секции дорастают до экрана,
   длинные сохраняют свою высоту вместе с анимацией внутри.
   svh, а не vh: на мобильных vh считается по развёрнутому во весь
   экран окну, из-за чего низ секции уезжает под адресную строку.
   Инлайновый min-height в разметке перебивает эту пару по специфичности —
   если задаёте высоту секции инлайном, пишите её тоже в svh. */
.om-screen,
.om-snap {
  min-height: 100vh;
  min-height: 100svh;
  scroll-snap-align: start;
}

.om-screen {
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* «Уменьшить движение»: посекционная фиксация сама по себе не анимация,
   но доводка кадра на инерции дезориентирует. Оставляем свободную
   прокрутку — контент от этого не теряется. */
@media (prefers-reduced-motion: reduce) {
  html { scroll-snap-type: none; }
}
