/* pbn-enhance.css — дополнения к style.css макета nevsky-stars.ru под токен-движок BablO$.
   Статичная часть целиком: сид страниц (bin/pbn/nevsky-stars_2_pages.php) копирует этот файл в
   public/sites/nevsky-stars-ru/assets/css/pbn-enhance.css как есть. Масок иконок здесь НЕТ и дописывать их не
   нужно: ни один набор MIGX схемы не выводит иконку (значения MIGX экранируются, а весь SVG макета стоит
   в разметке чанков — object-card, info-card, map-block, faq, шапка, подвал), см. plan.md §5.
   Только переменные и классы макета; своих классов нет — кроме служебных классов движка (.bf-form, .bf-msg,
   .bf-ok, .pdo-pagenav, .pdo-pagebtn) и атрибута схемы data-prose. */

/* ------------------------------------------------------- условные блоки макета
   В движке условий нет: у макета это if ($lead !== '') в page-title-block.php, if ($__relatedItems) в
   related-cards.php, if ($newsPages > 1) в novosti.php. Пустое значение TV — блока нет. */
.lede:empty,
.sec-kicker:empty,
.sec-title:empty,
.title-bar__lead:empty,
.news-card__date:empty,
.news-card__lead:empty,
.object-card__kind:empty,
.article-meta:empty { display: none; }

/* Секция, у которой заголовок (TV) не заполнен, — секции нет целиком: так гасятся «Галерея», «Что у нас есть»,
   «Разделы» и «Ещё у нас» на объектах, где их нечем заполнить (у макета такой секции в файле просто не было) */
.section:has(> .container > .sec-title:empty),
.rule-band:has(> .container > .sec-title:empty) { display: none; }

/* Пустая сетка карточек (нет детей, нет соседей) — секции нет: у макета relatedCards() при пустом наборе
   возвращал управление, ничего не выводя */
.section:has(> .container > .news-grid:empty) { display: none; }

/* ------------------------------------------------------- «Текст» страницы ([[*content]], data-prose)
   Где у макета нет своего абзаца под текст, шаблон ставит секцию .section > .container > .article-body[data-prose]:
   пустой текст — секции нет. Внутри абзацев — картинки, видео и таблицы перенесённых текстов, в ширину колонки
   и в тонах макета */
.section:has(> .container > [data-prose]:empty) { display: none; }
[data-prose] img { max-width: 100%; height: auto; margin: 0 0 20px; }
[data-prose] iframe { display: block; width: 100%; height: auto; aspect-ratio: 16/9; border: 0; margin: 0 0 20px; }
[data-prose] table {
    width: 100%;
    border-collapse: collapse;
    margin: 0 0 24px;
    font-size: 15px;
}
[data-prose] th,
[data-prose] td {
    text-align: left;
    vertical-align: top;
    padding: 12px 16px 12px 0;
    border-bottom: 1px solid var(--color-border);
}
[data-prose] th {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--color-rust);
}
[data-prose] ul,
[data-prose] ol { margin: 0 0 1em; padding-left: 22px; list-style: disc; }
[data-prose] ol { list-style: decimal; }
[data-prose] li { margin-bottom: 6px; }
[data-prose] a { color: var(--color-rust); text-decoration: underline; }
@media (max-width: 760px) { [data-prose] table { display: block; overflow-x: auto; } }

/* ------------------------------------------------------- отзывы гостевой книги
   Набор MIGX рисует цитаты классом макета .quote-block (в style.css правило есть, в страницах макета блок не
   использован); подряд идущие цитаты нужно разделить — у .quote-block своих отступов нет */
.quote-block + .quote-block { margin-top: 28px; }

/* ------------------------------------------------------- листание лент (&paginate движка)
   Кнопки движка дописываются ВНУТРЬ сетки карточек .news-grid. Вместо nav.pagination макета (novosti.php:
   номера ссылками ?page=N) — та же линейка: квадратные номера 38×38, текущая — рустовая заливка, стрелки без рамки */
.news-grid > .pdo-pagenav { grid-column: 1 / -1; }
.pdo-pagenav {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    margin: 48px 0 0 !important;
}
.pdo-pagenav .pdo-pagebtn {
    min-width: 38px;
    height: 38px;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    padding: 0 10px !important;
    border: 1px solid var(--color-border) !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--color-text) !important;
    font-family: var(--font-display);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}
.pdo-pagenav .pdo-pagebtn:hover,
.pdo-pagenav .pdo-pagebtn:focus-visible { border-color: var(--color-rust) !important; color: var(--color-rust) !important; }
.pdo-pagenav .pdo-pagebtn.active { background: var(--color-rust) !important; border-color: var(--color-rust) !important; color: var(--color-white) !important; }
.pdo-pagenav .pdo-pagebtn[disabled] { opacity: .35; cursor: default; border-color: transparent !important; }

/* ------------------------------------------------------- формы движка ([[form?]])
   Ответ [[+msg]] стоит перед p.form__success макета. Экран успеха макета показывал демо-обработчик main.js
   без отправки; в копии main.js сид страниц вырезает из обработчика ветку «успеха» (plan.md §0 — проверка полей
   макета остаётся), а сам экран показывает CSS по успеху движка (.bf-ok). Сообщение движка об успехе при этом
   прячем, чтобы текст не задвоился; ошибку показываем цветом .form__error макета. */
.bf-msg {
    font-family: var(--font-body);
    font-size: 14.5px;
    line-height: 1.5;
    color: var(--color-text);
    margin: 0 0 12px;
}
.bf-msg.bf-err { color: var(--color-danger); }
.bf-form .bf-msg.bf-ok { display: none; }
.bf-form:has(.bf-ok) .form__success[hidden] { display: block !important; }
