body.modal-open{overflow:hidden}

/* Резерв места под вертикальный скроллбар на ВСЕХ страницах: иначе на короткой странице (без
   скролла) центрированная шапка/контент смещается по горизонтали относительно длинной (со скроллом)
   — меню в шапке «прыгает» при переходах. scrollbar-gutter держит ширину вьюпорта постоянной. */
html{scrollbar-gutter:stable}

/* === МЕХАНИКА общей обвязки (НЕ дизайн) ===
   Дизайн шапки/подвала/карточки модалки/формы заявки приходит ИЗ ИМПОРТА index.html
   (см. pageio.derive_frame → запись хрома, kind="frame"; грузится в base.html после CSS
   страницы). Здесь — только то, чего нет в index и что нужно для работы оболочки:
   полоса-шапка макета, прилипание, оверлей модалки, статус отправки формы. */

/* Полоса шапки на уровне макета (base.html): тёмный фон одинаков везде; прилипание — класс
   is-sticky (переключатель в админке). Полоса — прямой потомок body, поэтому sticky работает
   на всю высоту страницы одинаково. Оформление содержимого шапки (бренд, меню) — из хрома. */
.site-header{background:linear-gradient(135deg,#061014,#0B1B1D);position:relative;z-index:60;color:#fff}
.site-header.is-sticky{position:sticky;top:0}
/* Ссылки шапки/подвала оформляем здесь, а не полагаемся на глобальный
   `a{color:inherit;text-decoration:none}` страницы: его нет на части страниц (документы, 404),
   из-за чего пункты меню/ссылки/бренд получали браузерный вид — подчёркивание и фиолетовый
   «посещённый», а на 404 тёмный бренд сливался с тёмной полосой. Цвет шапки — белый (#fff выше),
   бренд и пункты меню наследуют его; цвет ссылок подвала задаёт запись хрома (грузится позже).
   Намеренно НЕ трогаем кнопки-CTA (`.header-actions .btn`): у `.primary/.secondary` свой цвет,
   поэтому ограничиваемся брендом и ссылками <nav>, а не всеми `.site-header a`. */
.site-header .brand,.site-header nav a{color:inherit;text-decoration:none}
footer a{text-decoration:none}
/* Текущий/наведённый пункт меню — ярче (раньше это правило жило в content_page.css и работало
   лишь на контент-страницах; теперь — в хроме, на всех страницах). Специфичность (0,2,2) выше
   `.site-header nav a` (0,1,2), поэтому подсветка не теряется. */
.site-header nav a.active,.site-header nav a:hover{color:#fff}
/* Тот же текущий пункт в мобильной панели — подсвечиваем фоном (как :hover), цвет ярче. */
.mobile-nav-panel a.active{background:rgba(55,226,196,.12);color:#fff}
/* Переход к якорю раздела при прилипшей шапке: иначе заголовок раздела прячется под шапкой.
   Значение — запасное на момент загрузки; точную высоту шапки подставляет JS (partials/scripts.html). */
:root:has(.site-header.is-sticky){scroll-padding-top:96px}
.site-header-inner{width:min(1180px,calc(100% - 44px));margin:0 auto}
/* CTA-кнопки шапки: одинаковая ГЕОМЕТРИЯ на всех страницах. У каждой страницы свой padding/ширина
   кнопок (например home `padding:0 20px`, partners `0 24px`), из-за чего менялась ширина
   .header-actions и «прыгал» зазор бренд↔меню. Жёстко фиксируем тут (специфичность 0,3,0 бьёт
   правила страниц). Цвет/фон кнопок по-прежнему из CSS страницы — полное выравнивание вида
   (в т.ч. цветов) даёт derive в записи обвязки при (ре)импорте. */
.site-header .header-actions .btn{width:auto;min-width:0;flex:0 0 auto;padding:0 20px}

/* Оверлей модалки заявки (открытие/закрытие). Оформление карточки и полей формы — из хрома. */
.modal{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(3,8,10,.72);backdrop-filter:blur(8px)}
.modal.is-open,.modal:target{display:flex}
.modal-backdrop{position:absolute;inset:0;display:block}

/* Cookie-баннер: ВЕСЬ дизайн (.cookie / .cookie button / .cookie .close, в т.ч. кнопка-ссылка
   «Подробнее») приходит ИЗ ИМПОРТА index.html — derive_frame уносит .cookie* в запись обвязки
   (см. _FRAME_SELECTOR_RE), поэтому правки стилей делаются в original_pages и применяются
   реимпортом. Здесь cookie-стилей нет намеренно. */

/* Статус отправки формы (фича приложения — асинхронная отправка; в index такого нет). */
.form-status{margin:0;padding:11px 14px;border-radius:12px;font-size:14px;line-height:1.45}
.form-status.is-ok{background:#E9FBF4;color:#0B6B53;border:1px solid #B7E8D7}
.form-status.is-error{background:#FDECEC;color:#9A2A2A;border:1px solid #F3C9C9}

/* Мобильное меню: при переходе к якорю секции принудительно прячем панель/подложку
   (страховка для iOS/Safari, если чекбокс остался отмеченным). */
body:has(#platform:target) .mobile-nav-panel,
body:has(#solutions:target) .mobile-nav-panel,
body:has(#services:target) .mobile-nav-panel,
body:has(#scale:target) .mobile-nav-panel,
body:has(#contacts:target) .mobile-nav-panel,
body:has(#contact-modal:target) .mobile-nav-panel,
body:has(#platform:target) .mobile-nav-backdrop,
body:has(#solutions:target) .mobile-nav-backdrop,
body:has(#services:target) .mobile-nav-backdrop,
body:has(#scale:target) .mobile-nav-backdrop,
body:has(#contacts:target) .mobile-nav-backdrop,
body:has(#contact-modal:target) .mobile-nav-backdrop{display:none!important}
