/* ============================================
   Система секций (ТЗ 25, B-053, D-064). Этап B1 — фоны и цвета; B2a — одна левая линия.
   Токены --ng-sec-*: база — здесь (:root, главная и Симфония);
   значения ЖК — в flagman.css / vremya-zhit.css (.flagman-page, .ng-zhk--flagman).
   Существующие правила берут токены на месте, с запасным значением = прежнему.
   ============================================ */

:root {
    --ng-sec-accent:    var(--primary-color, #0d3c63); /* рамки, иконки, точки, линии */
    --ng-sec-heading:   var(--text-color, #0d3c63);    /* заголовки секций */
    --ng-sec-text:      var(--text-color, #0d3c63);    /* текст */
    --ng-sec-surface:   var(--light-gray, #f7fafc);    /* подложка секций */
    --ng-sec-cta:       #ec6830;                       /* кнопки CTA: у базы — общий оранжевый */
    --ng-sec-cta-hover: #d55a29;
}

/* Страницы системы: главная, страницы ЖК (дети страницы 13 «Квартиры в новостройках»),
   позиции (дети страниц ЖК 15, 19, 21), карточки квартир; посадочные (ТЗ 30, B3a): 35 «Квартиры от застройщика»
   и её дети (ипотека, рассрочка), 13 «Квартиры в новостройках»; каталог и комнатность (ТЗ 31, B3b: архивы apartments / rooms);
   ТЗ 33 (B3d): 47 «Новости», 53 «Документы», 1444 «Политика», 358 «Коммерческая недвижимость» и объекты коммерции.
   ТЗ 41: 2383 «О застройщике».
   Только здесь секции получают подложку:
   на остальных страницах --ng-sec-bg не задан, и правила секций берут прежний фон */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) {
    --ng-sec-bg: var(--ng-sec-surface);
    /* Этап B2a — одна левая линия: всё в секции начинается от края контента .container.
       Правила секций берут эти токены на месте, запасное значение = прежнее (вне системы ничего не меняется) */
    --ng-sec-gutter: calc(var(--bs-gutter-x, 1.5rem) * .5); /* поле контейнера секции = поле .container (12px) */
    --ng-sec-inset: 0px;     /* собственный боковой отступ заголовка / лида / абзаца секции */
    --ng-sec-align: left;    /* выравнивание заголовка / лида / текста секции */
    --ng-sec-measure: none;  /* ширина лида не ограничивается (решение Евгения 01.10.2026) */
}

/* Блок самой карточки квартиры (ТЗ 24) — вне B2a: токены сброшены, правила берут прежние значения
   («Похожие планировки» — h2.section-title) */
.apartment-container {
    --ng-sec-gutter: initial;
    --ng-sec-inset: initial;
    --ng-sec-align: initial;
    --ng-sec-measure: initial;
    /* B2b: блок карточки вне этапа — отступы прежние */
    --ng-sec-pt: initial;
    --ng-sec-pb: initial;
    --ng-sec-flush: initial;
    --ng-sec-title-gap: initial;
    --ng-sec-lead-gap: initial;
    --ng-card-pad: initial;
}

/* B2a: заголовки секций с Bootstrap .text-center (паттерны 705, 708) — по левому краю.
   .text-center — !important, поэтому и здесь !important, но только в роли заголовка секции */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .section-title.text-center {
    text-align: left !important;
}

/* B2a: «О проекте» на мобиле — текст колонки по левому краю (custom.css, .about-content), но виджет
   Яндекс.Отзывов внутри — карточка, его внутренняя раскладка прежняя (по центру) */
@media (max-width: 991px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-content .reviews-widget {
        text-align: center;
    }
}

/* B2a: «Акции» — .banners-container (тоже .container) вложен в .container: поле удваивалось (24px) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .banners-section .container > .banners-container {
    padding-left: 0;
    padding-right: 0;
}

/* B2a: SEO-текст — у части заголовков и абзацев в редакторе стоит класс container (+12px) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-text-section :is(h2, h3, p, ul, ol).container {
    padding-left: 0;
    padding-right: 0;
    max-width: none !important; /* ТЗ 29: ширину задаёт группа (контейнер 1600 сдвигал текст на 12px левее линии); !important — как у .container в style.css */
}

/* B2a: «Документы не найдены» (template-parts/documents-list.php) выводится без контейнера — текст у края окна */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .no-documents {
    padding-left: var(--ng-sec-gutter);
    padding-right: var(--ng-sec-gutter);
    /* B2b: «Документы» без документов — секция S, поля даёт сам абзац (обёртка #documents без полей) */
    margin: 0;
    padding-top: var(--ng-sec-pt);
    padding-bottom: var(--ng-sec-pb);
}

/* Подложка под всей колонкой контента: белые зазоры между секциями (margin каталога, галерей)
   и прозрачные блоки (галереи, голые h1 / p) не дают полос. Hero и карточки внутри секций — свой фон */
.site-main {
    background: var(--ng-sec-bg, transparent);
}
/* ТЗ 30a: margin первого блока (h1 первым в контенте) схлопывался сквозь main наружу — подложка начиналась
   ниже шапки, над h1 была белая полоса. flow-root останавливает схлопывание: зазор шапка → h1 прежний, фон — от шапки */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .site-main {
    display: flow-root;
}

/* Точки слайдера «Новостей» (мобила): акцент ЖК. Глобальное .swiper-pagination-bullet (custom.css) не трогаем */
.vk-news-section .swiper-pagination-bullet {
    background: var(--ng-sec-accent);
}

/* Точки инлайн-галерей: акцент ЖК (было #2c5282, swiper-modal-gallery.css).
   body — чтобы перебить равную специфичность: swiper-modal-gallery.css подключается позже */
body .swiper-inline-gallery .swiper-pagination-bullet,
body .swiper-inline-gallery .swiper-pagination-bullet-active {
    background: var(--ng-sec-accent);
}

/* ============================================
   Этап B2b — отступы (D-064). Решения Евгения 01.10.2026, шкала 375 → 1920 (линейно на всём отрезке,
   выше 1920 — значения 1920): зазор между блоками M 48 → 96, S 32 → 56; заголовок секции → содержимое
   24 → 40; лид → содержимое 24 → 32; поля белых карточек с текстом 24 → 32.
   Механизм — половинный: у секции padding сверху и снизу = половина зазора, margin между секциями — 0.
   Существующие правила берут токены на месте (запасное значение = прежнее); здесь — токены и правила по роли.
   ============================================ */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) {
    /* clamp(min, a + b*vw, max): b = (max - min) / (1920 - 375) * 100, a = min - b * 375 / 100 */
    --ng-sec-gap:       clamp(4rem, 3.0291rem + 4.1424vw, 8rem);      /* M: 64 → 128 (1366 ≈ 105); B2b-fix 02.10.2026, было 48 → 96 */
    --ng-sec-gap-s:     clamp(2.5rem, 2.0146rem + 2.0712vw, 4.5rem);  /* S: 40 → 72; B2b-fix, было 32 → 56 */
    --ng-sec-title-gap: clamp(1.5rem, 1.2573rem + 1.0356vw, 2.5rem);  /* заголовок секции → содержимое: 24 → 40 */
    --ng-sec-subtitle-gap: clamp(0.75rem, 0.6893rem + 0.2589vw, 1rem); /* заголовок → лид: 12 → 16 (B2b-fix) */
    --ng-sec-lead-gap:  clamp(1.5rem, 1.3786rem + 0.5178vw, 2rem);    /* лид → содержимое: 24 → 32 */
    --ng-sec-para-gap:  clamp(1rem, 0.9393rem + 0.2589vw, 1.25rem);   /* абзац → абзац: 16 → 20 (B2b-fix) */
    --ng-card-pad:      clamp(1.5rem, 1.3786rem + 0.5178vw, 2rem);    /* поля белой карточки с текстом: 24 → 32 */
    --ng-sec-pt: calc(var(--ng-sec-gap) / 2);   /* padding-top секции */
    --ng-sec-pb: calc(var(--ng-sec-gap) / 2);   /* padding-bottom секции */
    --ng-sec-flush: 0px;                        /* внешние отступы секций и обёрток, margin-top заголовка — 0 */
}

/* Компактные секции (S): «Хотите здесь жить?», баннер позиции ВЖ, «Документы» (обёртка паттерна #documents),
   CTA-бар посадочных (ТЗ 30), CTA «Хотите арендовать помещение?» на /commercial/ (ТЗ 33) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.contact-section, .vzh-position-banner, #documents, .seo-cta-bar, .commercial-cta-section) {
    --ng-sec-pt: calc(var(--ng-sec-gap-s) / 2);
    --ng-sec-pb: calc(var(--ng-sec-gap-s) / 2);
}

/* Границы смены фона: у секции сразу после элемента не из системы (hero, блок карточки квартиры) сверху —
   полный зазор, а не половина. Между ними бывают невидимые служебные элементы (script, источник модальной
   галереи .swiper-gallery-source и т. п.) — до двух пропускаются */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.hero-section, .vzh-hero, .apartment-container) + *,
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.hero-section, .vzh-hero, .apartment-container) + :is(script, style, link, template, .swiper-gallery-source, .details-gallery-modal) + *,
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.hero-section, .vzh-hero, .apartment-container) + :is(script, style, link, template, .swiper-gallery-source, .details-gallery-modal) + :is(script, style, link, template, .swiper-gallery-source, .details-gallery-modal) + * {
    --ng-sec-pt: var(--ng-sec-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.hero-section, .vzh-hero, .apartment-container) + :is(.contact-section, .vzh-position-banner, #documents),
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.hero-section, .vzh-hero, .apartment-container) + :is(script, style, link, template, .swiper-gallery-source, .details-gallery-modal) + :is(.contact-section, .vzh-position-banner, #documents),
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.hero-section, .vzh-hero, .apartment-container) + :is(script, style, link, template, .swiper-gallery-source, .details-gallery-modal) + :is(script, style, link, template, .swiper-gallery-source, .details-gallery-modal) + :is(.contact-section, .vzh-position-banner, #documents) {
    --ng-sec-pt: var(--ng-sec-gap-s);
}
/* «Контакты» футера — последняя секция перед тёмным футером: снизу полный зазор */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .footer-contacts-section {
    --ng-sec-pb: var(--ng-sec-gap);
}

/* «Документы»: обёртка паттерна #documents без полей (на позициях Флагмана у неё класс .infrastructure-section
   с мобильными полями — получилось бы двойное поле). Поля даёт .documents-section внутри или .no-documents */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) #documents {
    padding-top: 0;
    padding-bottom: 0;
}

/* Заголовок с лидом: заголовок → лид — --ng-sec-subtitle-gap (B2b-fix, одно значение для всех), лид → содержимое —
   --ng-sec-lead-gap. У .section-title зазор берётся из --ng-sec-title-gap (в т. ч. в !important для .mb-5) — здесь он
   подменяется; заголовки ВЖ / Флагмана / каталога берут --ng-sec-subtitle-gap на месте */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .section-title:has(+ :is(.section-subtitle, .infrastructure-subtitle, .seo-plannings-lead, .page-lead)) {
    --ng-sec-title-gap: var(--ng-sec-subtitle-gap);
}
/* Лид — сразу под заголовком: margin-top 0 у всех ролей лида */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.section-subtitle, .infrastructure-subtitle, .flg-position-info__subtitle, .vzh-position-info__subtitle, .vzh-composition__count, .catalog-header__meta, .seo-plannings-lead, .page-lead) {
    margin-top: 0;
}
/* Два лида / лид и абзац подряд (два абзаца в «Дворовом пространстве», «Расположении» Флагмана):
   между ними — абзац → абзац, лид → содержимое — только у последнего */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.section-subtitle, .infrastructure-subtitle):has(+ :is(.section-subtitle, .infrastructure-subtitle, p)) {
    margin-bottom: var(--ng-sec-para-gap);
}

/* Абзац → абзац (B2b-fix): текстовые потоки секций вне карточек — SEO-тексты, «О проекте», голые абзацы контента.
   Было: 20 (SEO), 16 (Bootstrap p), 24–32 (два лида). Внутри карточек абзацы не трогаются (раскладка карточек) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.seo-text-section, .about-text) p:has(+ p),
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > p:has(+ p) {
    margin-bottom: var(--ng-sec-para-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.seo-text-section, .about-text) p + p,
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > p + p {
    margin-top: 0;   /* SEO-текст на мобиле: margin 20px сверху и снизу */
}

/* Текстовые потоки (B2b-fix2): заголовок → первый абзац = заголовок → лид (было 40 — заголовок → содержимое).
   SEO-тексты (h2 + p) и «О проекте» (h2.section-title + колонка .about-text). Заголовки берут --ng-sec-title-gap — он подменяется */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-text-section h2:has(+ p),
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .section-title:has(+ .about-content-col) {
    --ng-sec-title-gap: var(--ng-sec-subtitle-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-text-section h2 + p,
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-text > p:first-child {
    margin-top: 0;   /* SEO-текст на мобиле: margin-top 20px схлопывался с зазором заголовка */
}

/* Bootstrap-утилиты в разметке паттернов (.mb-5 / .mb-4 — !important): перебиваются !important строго в роли */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .section-title.mb-5 {                       /* «Акции», «Новости», «Способы покупки», «Ход строительства», «Контакты» */
    margin-bottom: var(--ng-sec-title-gap) !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .section-header.mb-5,                       /* шапка «заголовок + лид»: «Наши ЖК», «Лучшие предложения» */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .row:has(> .col-12 > :is(.section-title, h2)) {   /* шапка в ряду .row.mb-5 / .mb-4: «Инфраструктура», «Генплан», «Видеоотзывы»
                                                         (в паттернах ВЖ заголовок — h2.vzh-location__title, ряд иногда обнимает всю секцию) */
    margin-bottom: 0 !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .catalog-header.mb-4 {                      /* каталог: заголовок + счётчик / сортировка (лид) → фильтр комнат */
    margin-bottom: var(--ng-sec-lead-gap) !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .catalog-rooms-filter.mb-4 {               /* каталог ЖК (ТЗ 31, B-065 п. 1): фильтр комнат → карточки — лид → содержимое */
    margin-bottom: var(--ng-sec-lead-gap) !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.seo-kak-kupit-section, .seo-cta-bar).mt-5 {   /* посадочные (ТЗ 30): зазор между секциями — только поля секций */
    margin-top: var(--ng-sec-flush) !important;
}

/* SEO-текст: первый элемент — без margin сверху, последний — без margin снизу (отступ даёт секция) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-text-section > :first-child,
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-text-section > :is(.container, .wp-block-group__inner-container) > :first-child {
    margin-top: 0;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-text-section > :last-child,
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-text-section > :is(.container, .wp-block-group__inner-container) > :last-child {
    margin-bottom: 0;
}

/* «О проекте»: поля колонок у краёв секции — 0 (между колонками на мобиле — прежние) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-content-col {
    padding-top: 0;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-video-col {
    padding-bottom: 0;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-content > :last-child {   /* .about-text { margin-bottom: 40px } */
    margin-bottom: 0;
}
@media (min-width: 992px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-content-col {
        padding-bottom: 0;
    }
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-video-col {
        padding-top: 0;
    }
}
/* «О проекте» до lg (ТЗ 32a, B-065): текст → [отзывы] → видео — все звенья = --ng-sec-lead-gap */
@media (max-width: 991.98px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-text p:last-child {   /* custom.css:778 */
        margin-bottom: 0;
    }
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-text:not(:last-child) {   /* custom.css:775, только при виджете */
        margin-bottom: var(--ng-sec-lead-gap);
    }
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-content-col {   /* custom.css:870, 882 */
        padding-bottom: 0;
        margin-bottom: var(--ng-sec-lead-gap);
    }
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .about-project-section .about-video-col {   /* custom.css:882 */
        padding-top: 0;
    }
}

/* Хвосты сеток: нижний margin колонок / карточек последнего ряда уходил в низ секции.
   Отрицательный margin последнего ряда гасит ровно его — промежутки между рядами прежние */
/* «Инфраструктура», «Особенности», «Подъезды», «Рендеры» до lg (ТЗ 32a, B-065): 24 между карточками и рядами, как на ≥ 992.
   Гасятся .mb-3 колонок, .mb-4 / row-gap ряда (Bootstrap, !important) и margin-bottom карточек (custom.css) */
@media (max-width: 991.98px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .infrastructure-section .row:has(> [class*="col"] .infrastructure-card) {
        row-gap: 1.5rem;
        margin-bottom: 1.5rem !important;   /* .mb-4 ряда */
    }
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .infrastructure-section .row:has(> [class*="col"] .infrastructure-card) > [class*="col"] {
        margin-bottom: 0 !important;        /* .mb-3 колонки */
    }
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .infrastructure-section .infrastructure-card {
        margin-bottom: 0;                   /* custom.css:1019, 1034 */
    }
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .infrastructure-section .row:has(> [class*="col"] .infrastructure-card):last-child {
        margin-bottom: 0 !important;        /* хвост */
    }
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .flagman-features-section .container > .row:last-child {   /* .col-md-6 { margin-bottom: 32px } — flagman.css */
    margin-bottom: -32px;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.flagman-tours-section, .flagman-yard-section, .flagman-location-section) .container > .row:last-child,
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .pozicii-grid-section .pozicii-grid:last-child,   /* «Позиции жилого комплекса» (B2b-fix) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .construction-progress-grid {               /* колонки .mb-4 (1.5rem) */
    margin-bottom: -1.5rem;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .documents-section .documents-grid:last-child {
    margin-bottom: 0;
}
@media (max-width: 768px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .genplan-section .genplan-image-container:last-child {
        margin-bottom: 0;
    }
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .shortcode-apartments-catalog > .container > .apartments-grid:last-child:has(> .mb-4) {   /* колонки карточек .mb-4; у сообщения «нет квартир» (.col-12) его нет */
    margin-bottom: -1.5rem;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .shortcode-apartments-catalog .alert:last-child {
    margin-bottom: 0;
}
/* «Акции»: точки слайдера (position: relative) поднимал bottom Swiper (8px) — место под ними пустовало.
   bottom: 0 — как на мобиле, где его задаёт .swiper-pagination { bottom: 0 !important } (custom.css, до 767) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .banners-section .banners-pagination {
    bottom: 0;
}

/* Инлайн-галереи (figure.wp-block-gallery → .swiper-inline-gallery) — секция по роли. Под слайдами — место
   под точки (50px, как было на мобиле), точки стоят на половине зазора от низа; margin фигуры — 0 */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .swiper-inline-gallery {
    padding-top: var(--ng-sec-pt);
    padding-bottom: calc(var(--ng-sec-pb) + 50px);
    margin-bottom: 0;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .swiper-inline-gallery .swiper-pagination {
    bottom: calc(var(--ng-sec-pb) + 2px) !important;   /* на мобиле custom.css ставит всем .swiper-pagination bottom: 0 !important;
                                                          + 2px — активная точка увеличена scale(1.3) и выходит вниз */
    font-size: 0;                          /* без строки текста: низ контейнера = низ точек */
}
/* Активный слайд увеличен (scale(1.05), swiper-modal-gallery.css) и выходит в верхнее поле на 2,5 % высоты
   картинки: 80vh → 2vh (от 992), 60vh → 1,5vh (768–991), на мобиле scale(1). Поле сверху больше ровно на столько */
@media (min-width: 992px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .swiper-inline-gallery {
        padding-top: calc(var(--ng-sec-pt) + 2vh);
    }
}
@media (min-width: 768px) and (max-width: 991.98px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .swiper-inline-gallery {
        padding-top: calc(var(--ng-sec-pt) + 1.5vh);
    }
}

/* Голые блоки верхнего уровня (позиции: h1 + абзац + галерея на 2.3 / 2.4 / 2.5, «Кладовые» на 2.25):
   заголовок открывает секцию (сверху половина зазора; первым в контенте, под шапкой, — полный),
   абзац сразу после заголовка — лид, группа с картинкой закрывает секцию (снизу половина зазора) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading {
    margin-top: var(--ng-sec-pt);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading:first-child {
    margin-top: var(--ng-sec-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading:not(:has(+ p)) {
    margin-bottom: var(--ng-sec-title-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading:has(+ p) {   /* заголовок → лид (B2b-fix) */
    margin-bottom: var(--ng-sec-subtitle-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading + p {
    margin-top: 0;
    margin-bottom: var(--ng-sec-lead-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading + p + .swiper-inline-gallery {
    padding-top: 0;
}
@media (min-width: 992px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading + p + .swiper-inline-gallery {
        padding-top: 2vh;
    }
}
@media (min-width: 768px) and (max-width: 991.98px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading + p + .swiper-inline-gallery {
        padding-top: 1.5vh;
    }
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-group:not(.seo-text-section) {
    margin-bottom: var(--ng-sec-pb);
}
/* Посадочные (ТЗ 30): интро (фото + текст) сразу под h1 — «заголовок → содержимое», верхнее поле даёт margin заголовка */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading + .seo-hero-section {
    padding-top: 0;
}
/* Посадочные (ТЗ 30): CTA-бар — белая карточка без оранжевой рамки (D-064 п. 3: оранжевый — только кнопки);
   рамка прозрачная, размеры карточки прежние */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-cta-bar__inner {
    border-color: transparent;
}
/* Посадочные (ТЗ 30a): голый h2 над секцией карточек — «заголовок → содержимое», верхнее поле секции даёт margin заголовка */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading + :is(.seo-novyj-gorod-section, .seo-kak-kupit-section, .seo-faq-section) {
    padding-top: 0;
}
/* Посадочные (ТЗ 30a): акцентный блок (seo-content.css: margin со всех сторон) — край на линии, у краёв контейнера /
   колонки margin 0 (в колонке с height: 100% верхний margin выталкивал блок вниз); между блоками — прежние */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-accent-block {
    margin-left: 0;
    margin-right: 0;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-accent-block:first-child {
    margin-top: 0;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-accent-block:last-child {
    margin-bottom: 0;
}
/* Посадочные (ТЗ 30a): «Наши ЖК» — последний элемент контейнера (абзац) без margin снизу: низ секции = ½ M */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-buildings-section .container > :last-child {
    margin-bottom: 0;
}
/* Посадочные (ТЗ 30a): таблицы на подложке — строки белые (как карточки), шапка таблицы прозрачная.
   Источник (seo-content.css, .seo-table tbody tr td) — с !important, поэтому и здесь */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-table tbody td {
    background: #ffffff !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .seo-table thead :is(th, td) {
    background: transparent;
}

/* Каталог и комнатность (ТЗ 31, B3b; D-067 п. 2, 3). main.apartments-archive-page: первый блок — .container.py-4
   шаблона (крошки + h1), дальше .entry-content страницы-двойника: блок каталога (.container вокруг шорткода; у комнатности —
   .container.py-4 из контента страницы, B-062) и SEO-паттерны. Верх по шкале: шапка → крошки — прежний py-4;
   крошки → h1 и h1 → панель — «заголовок → лид»; панель → сетка — «лид → содержимое». Панель — справа над сеткой, как была.
   Bootstrap-утилиты (.py-4, .mb-4, .mb-5 — !important) перебиваются !important строго здесь */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page > .container:first-child {
    padding-bottom: 0 !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page > .container:first-child > nav {
    margin-bottom: 0 !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page > .container:first-child .breadcrumb {
    margin-bottom: 0;
}
/* h1 архива: style.css h1 { margin: 32px } — на левую линию; сверху и снизу — «заголовок → лид» */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page > .container:first-child > h1 {
    margin-inline: 0;
    margin-top: var(--ng-sec-subtitle-gap);
    margin-bottom: var(--ng-sec-subtitle-gap) !important;
}
/* До 992 панель — липкая полоса с полем .75rem над кнопками (custom.css); полоса цвета подложки не видна,
   поэтому h1 → кнопки = «заголовок → лид» */
@media (max-width: 991.98px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page > .container:first-child > h1 {
        margin-bottom: max(0px, calc(var(--ng-sec-subtitle-gap) - .75rem)) !important;
    }
}
/* Блок каталога — секция: сверху 0 (зазор даёт h1), снизу ½ M; py-4 обёртки комнатности и .mb-5 ряда шорткода — 0 */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page .entry-content > .container:has(#apartments-container) {
    padding-top: 0 !important;
    padding-bottom: var(--ng-sec-pb) !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page .row.mb-5:has(> .catalog-toolbar) {
    margin-bottom: 0 !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page .catalog-toolbar {
    margin-bottom: var(--ng-sec-lead-gap);
}
/* Хвост сетки: колонки карточек .mb-4 (1.5rem) — последний ряд гасится; у сообщения «нет квартир» (.col-12 > .alert) — margin алерта */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page #apartments-container:has(> .mb-4) {
    margin-bottom: -1.5rem;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page #apartments-container .alert:last-child {
    margin-bottom: 0;
}
/* Голые абзацы контента сразу под каталогом открывают текстовый блок: сверху ½ M (каталог → текст = M + M) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page .entry-content > .container:has(#apartments-container) + p {
    margin-top: var(--ng-sec-pt);
}
/* ТЗ 31a (2.8): последний голый абзац закрывает текстовый блок снизу ½ M (абзац → следующая секция = M + M) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page .entry-content > p:has(+ :not(p)) {
    margin-bottom: var(--ng-sec-pb);
}
/* «Планировки» каталога закрываются абзацем-примечанием (.seo-plannings-lead — снизу «лид → содержимое»):
   последний элемент контейнера без margin снизу — низ секции ½ M, как у посадочных (ср. «Наши ЖК», ТЗ 30a) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .apartments-archive-page .seo-plannings-section .container > :last-child {
    margin-bottom: 0;
}
/* Пресеты (ТЗ 33, B-070): h1 → панель каталога — как на каталоге: «заголовок → лид» (было «заголовок → содержимое»).
   Между h1 и рядом панели — <script> шорткода. До 992 панель — липкая полоса с полем .75rem над кнопками */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading:has(+ .row > .catalog-toolbar, + script + .row > .catalog-toolbar) {
    margin-bottom: var(--ng-sec-subtitle-gap);
}
@media (max-width: 991.98px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > .wp-block-heading:has(+ .row > .catalog-toolbar, + script + .row > .catalog-toolbar) {
        margin-bottom: max(0px, calc(var(--ng-sec-subtitle-gap) - .75rem));
    }
}

/* Пустой абзац редактора верхнего уровня (<p class="wp-block-paragraph"></p>, например после шорткода «Новостей»
   на позициях ВЖ): его margin-bottom добавлялся к зазору перед «Контактами» */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > p:empty {
    margin: 0;
}
/* B2b-fix: пустой абзац внутри секций контента — без высоты и отступов. Абзац из одного &nbsp; или <br>
   CSS не отличить от абзаца с текстом — такие убираются в редакторе (B-062) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content p:empty:not(.apartment-container p) {
    display: none;
}

/* ============================================
   ТЗ 33 — B3d (B-063): «Новости» (47), «Документы» (53), «Политика» (1444) — page.php, как посадочные;
   «Коммерческая недвижимость» (358, commercial.php) и объекты (single-commercial_object.php) — свои шаблоны без
   контента редактора: роли по классам шаблона, обёртка .entry-content им не нужна. Bootstrap-утилиты (.py-4, .py-5) — !important
   ============================================ */
/* «Новости», «Документы»: h1 в контенте нет, первой под шапкой — секция: сверху полный зазор, как у h1 первым */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > :is(.vk-news-section, .documents-section-grouped):first-child {
    --ng-sec-pt: var(--ng-sec-gap);
}
/* «Документы» (template-parts/documents-grouped.php, custom.css: padding 60px): поля секции; группы категорий —
   заголовок по линии, заголовок → карточки, между группами — зазор секций */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .documents-section-grouped {
    padding-top: var(--ng-sec-pt);
    padding-bottom: var(--ng-sec-pb);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .documents-category-title {
    text-align: var(--ng-sec-align);
    margin-bottom: var(--ng-sec-title-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .documents-category-group:not(:last-child) {
    margin-bottom: var(--ng-sec-gap);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .documents-category-group > .row:last-child:has(> .mb-4) {   /* «Официальные сообщения»: колонки .mb-4 — хвост */
    margin-bottom: -1.5rem;
}
/* «Политика» и другие текстовые страницы: последний голый абзац закрывает текст снизу ½ M (как у каталога, ТЗ 31a) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .entry-content > p:last-child:not(:empty) {
    margin-bottom: var(--ng-sec-pb);
}
/* /commercial/: шапка раздела (h1 + лид) первой под шапкой сайта — сверху полный зазор, снизу 0 (лид → плитка — «лид → содержимое») */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .site-main > .py-5:first-child:has(> .container > h1) {
    padding-top: var(--ng-sec-gap) !important;
    padding-bottom: 0 !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .page-lead {
    margin-bottom: var(--ng-sec-lead-gap);
}
/* Плитка объектов: сверху 0 (зазор даёт лид), снизу ½ M; хвост сетки — margin ряда и колонок последнего ряда (по 20px) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) #commercial-tiles {
    padding-top: 0;
    padding-bottom: var(--ng-sec-pb);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-row {
    margin-bottom: -20px;
}
@media (max-width: 767px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-row {
        margin-bottom: -15px;   /* commercial-styles.css: колонки по 15px до 768 */
    }
}
/* CTA «Хотите арендовать помещение?» — как CTA-бар посадочных (ТЗ 30): S, рамка прозрачная, заголовок — цвет заголовков (D-064 п. 3) */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-cta-section {
    padding-top: var(--ng-sec-pt);
    padding-bottom: var(--ng-sec-pb);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-cta-block {
    border-color: transparent;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-cta-title {
    color: var(--ng-sec-heading);
}
/* Объект: шапка → крошки — 24 (.py-4, как у каталога), крошки → h1 — «заголовок → лид». Блок объекта (галерея, вкладки,
   карта, CTA) — карточка, раскладка внутри прежняя (как блок карточки квартиры); снизу — ½ M */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-single {
    padding-top: 0;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-single > .py-4:first-child {
    padding-bottom: var(--ng-sec-subtitle-gap) !important;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-object-main {
    padding-bottom: var(--ng-sec-pb);
}
@media (min-width: 992px) {
    body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-object-main .row.mt-5 > .commercial-left-col.mb-4 {
        margin-bottom: 0 !important;   /* «Расположение» рядом с CTA: .mb-4 — хвост блока (до 992 — зазор до CTA под ним, не трогается) */
    }
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-rooms-section {
    padding-top: var(--ng-sec-pt);
    padding-bottom: var(--ng-sec-pb);
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .commercial-rooms-title {
    margin-bottom: var(--ng-sec-title-gap);
}

/* ============================================
   ТЗ 33 — контраст-минимум (хвосты B-053)
   ============================================ */
/* Серый мелкий текст: текст кнопок-контуров каталога (Bootstrap .btn-outline-secondary, #6c757d: сортировка, «Опции»,
   «Лучшая цена», «Фильтры») на подложках — 4,47 / 4,27 / 4,18. Минимальное затемнение того же оттенка: 4,82 / 4,59 / 4,50,
   на белом 5,05. Рамка, наведение, нажатие — прежние */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) {
    --ng-sec-muted: #677077;
}
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) .btn-outline-secondary {
    --bs-btn-color: var(--ng-sec-muted);
}
/* Неактивные точки слайдеров (WCAG 1.4.11): было — заливка акцентом с прозрачностью .3 (1,41–1,76 к подложке). Заливка даёт 3:1
   только при прозрачности ≥ .87 — не отличить от активной, поэтому неактивная — кольцо акцента (3,6–10,9). Активная — прежняя */
body:is(.home, .parent-pageid-13, .parent-pageid-15, .parent-pageid-19, .parent-pageid-21, .single-apartments, .page-id-35, .parent-pageid-35, .page-id-13, .post-type-archive-apartments, .tax-rooms, .page-id-47, .page-id-53, .page-id-1444, .page-id-358, .single-commercial_object, .page-id-2383) :is(.banners-pagination, .popular-pagination, .vk-news-section, .swiper-inline-gallery, .similar-pagination) .swiper-pagination-bullet:not(.swiper-pagination-bullet-active) {
    background: transparent;
    box-shadow: inset 0 0 0 2px var(--ng-sec-accent);
    opacity: 1;
}

/* ============================================
   ТЗ 41 — «О застройщике» (страница 2383), заготовка для показа клиенту. Паттерн «О застройщике (заготовка 2026-10)».
   Всё под обёрткой .ng-about. Секции — .section-padding (поля --ng-sec-pt / -pb), подложка — main, карточки белые
   (.seo-card, .seo-buildings-items, .seo-accent-block — как на посадочных), линия — край .container.
   Временное: .ng-photo-slot (место под фото) и .ng-draft-q (вопрос клиенту) — при чистовике убираются из разметки
   или одним правилом display: none; рамка фото .ng-about__photo остаётся
   ============================================ */
/* Первый экран: первая секция под шапкой — сверху полный зазор (как h1 первым в контенте) */
.ng-about > section:first-child {
    padding-top: var(--ng-sec-gap);
}
.ng-about .ng-about__title {               /* style.css: h1 { margin: 32px } */
    margin: 0 0 var(--ng-sec-subtitle-gap);
    color: var(--ng-sec-heading);
}
.ng-about__hero .seo-hero__text + .ng-about__photo {
    margin-top: var(--ng-sec-lead-gap);
}
/* Текстовые потоки: заголовок → абзац = «заголовок → лид» (как SEO-тексты, B2b-fix2), абзац → абзац */
.ng-about .section-title:has(+ .seo-hero__text) {
    --ng-sec-title-gap: var(--ng-sec-subtitle-gap);
}
.ng-about .seo-hero__text p {
    margin-bottom: var(--ng-sec-para-gap);
}

/* Рамка фото: пропорция задаётся рамкой, фото — <img> внутри (cover). 4:3 — по умолчанию */
.ng-about .ng-about__photo {
    position: relative;
    aspect-ratio: 4 / 3;
    border-radius: 16px;
    overflow: hidden;
}
.ng-about .ng-about__photo--wide {
    aspect-ratio: 16 / 9;
}
.ng-about .ng-about__photo--portrait {
    aspect-ratio: 3 / 4;
    max-width: 320px;
}
.ng-about .ng-about__photo > img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
/* Галерея — сетка рамок; зазор до неё — «лид → содержимое» (отрицательный margin ряда учтён) */
.ng-about .ng-about__gallery {
    margin-top: calc(var(--ng-sec-lead-gap) - var(--bs-gutter-y));
}

/* В цифрах */
.ng-about .ng-about__num {
    display: block;
    font-size: clamp(28px, 2.6vw, 40px);
    font-weight: 700;
    line-height: 1.15;
    color: var(--ng-sec-heading);
    margin-bottom: 8px;
}

/* История: линия времени в карточке */
.ng-about .ng-about__timeline {
    position: relative;
    list-style: none;
    margin: 0;
    padding: 0 0 0 28px;
}
.ng-about .ng-about__timeline::before {
    content: "";
    position: absolute;
    left: 6px;
    top: .5em;
    bottom: .5em;
    width: 2px;
    background: var(--ng-sec-accent);
    opacity: .25;
}
.ng-about .ng-about__step {
    position: relative;
}
.ng-about .ng-about__step::before {
    content: "";
    position: absolute;
    left: -28px;
    top: .45em;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 2px solid var(--ng-sec-accent);
    background: #ffffff;
}
.ng-about .ng-about__step + .ng-about__step {
    margin-top: var(--ng-sec-para-gap);
}
.ng-about .ng-about__step p {
    margin: 0;
}
.ng-about .ng-about__step .ng-about__photo {
    max-width: 480px;
    margin-top: 12px;
}

/* Признание: список в карточке */
.ng-about .ng-about__list {
    margin: 0;
    padding-left: 1.25rem;
}
.ng-about .ng-about__list li + li {
    margin-top: .5rem;
}

/* Слово директора: цитата — акцентный блок посадочных */
.ng-about .ng-about__quote blockquote {
    margin: 0;
}
.ng-about .ng-about__quote figcaption {
    margin-top: 12px;
    font-weight: 400;
}

/* ЖК (паттерн seo-buildings-section как есть): у последней строки .mb-5 (!important) — хвост секции */
.ng-about .seo-buildings-items:last-child {
    margin-bottom: 0 !important;
}

/* Временное — место под фото: серая подложка, по центру — подпись */
.ng-about .ng-photo-slot {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 12px;
    background: #dde2e7;
    border: 2px dashed #9aa5b0;
    border-radius: inherit;
    color: #34404b;                        /* 8,1 : 1 к подложке */
    font-size: 14px;
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
}
@media (max-width: 575.98px) {
    .ng-about .ng-photo-slot {
        font-size: 12px;
        padding: 8px;
    }
}
/* Временное — вопрос клиенту: жёлтая плашка, тёмный текст (#2b2300 на #ffe58a — 14 : 1). В строке — <span>, абзацем — <p> */
.ng-about .ng-draft-q {
    background: #ffe58a;
    color: #2b2300;
    font-weight: 500;
    padding: .1em .4em;
    border-radius: 4px;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
}
.ng-about p.ng-draft-q {
    display: block;
    margin: var(--ng-sec-para-gap) 0 0;
    padding: 12px 16px;
    border-left: 4px solid #c99700;
    font-size: clamp(14px, 1.04vw, 15px);
    line-height: 1.6;
}
.ng-about .row + p.ng-draft-q {
    margin-top: var(--ng-sec-lead-gap);
}
.ng-about .ng-about__num .ng-draft-q {
    font-size: .6em;
    vertical-align: .15em;
}
