/* ============================================================================
   dc-surface-shell.css — единый «телеграм»-контракт для экранов публикации.

   Три зоны, один механизм клавиатуры для ВСЕХ поверхностей «пост + лента + поле ввода»:
     1) ШАПКА  — настоящая header.dc-app-header (position:fixed;top:0). Не двигается.
     2) СКРОЛЛ — единственный overflow:auto (.dc-surface-scroll). Прокручивается под шапкой.
     3) КОМПОЗЕР — .dc-surface-composer, поднимается РОВНО на высоту клавиатуры.

   Единственный источник высоты клавиатуры — переменные из dc-viewport-keyboard.js:
     --dc-keyboard-offset  (px высоты клавиатуры; 0 когда закрыта)
     --dc-keyboard-open    (0/1)
     body.dc-keyboard-open (класс)
   Никаких per-surface visualViewport-костылей и репозиционирования контейнера — именно
   это давало «прыжки». Контейнер держим на dvh-lock, шапке НИКОГДА не пишем top:vv-offset.
   ============================================================================ */

/* Зона 2: СКРОЛЛ. Резиновый скролл не пробивает на body/шапку. */
.dc-surface-scroll {
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
}

/* Зона 3: КОМПОЗЕР. Поднимаем на высоту клавиатуры единым рычагом.
   offset=0 в покое → композер сидит на месте; при открытии клавиатуры
   visualViewport шлёт непрерывные события → translateY плавно следует без
   CSS-transition (transition тут только рассинхронил бы с анимацией iOS). */
.dc-surface-composer {
  transform: translate3d(0, calc(-1 * var(--dc-keyboard-offset, 0px)), 0);
}

/* Когда клавиатура поднята — нижняя safe-area (home indicator) закрыта клавиатурой,
   поэтому её резерв в композере убираем, чтобы поле не «висело» над клавиатурой. */
body.dc-keyboard-open .dc-surface-composer {
  padding-bottom: 8px !important;
}
