/* pbn-enhance.css — дополнения к style.css макета apostroika.ru («Апостройка») под токен-движок BablO$.
   Статичная часть: сид страниц (bin/pbn/apostroika_2_pages.php) копирует этот файл в
   public/sites/apostroika-ru/assets/css/pbn-enhance.css как есть. Масок иконок у сайта нет: все иконки постоянные
   и стоят SVG прямо в чанках (icon() макета), ключей иконок в данных нет. Только переменные и классы макета; своих
   классов нет — кроме служебных классов движка форм (.bf-msg, .bf-err). */

/* Условные блоки макета (if в его PHP), у движка условий нет — пустое значение прячет блок:
   надзаголовок героя ($heroEyebrowText !== '', page-hero.php) и полосы-передышки (!empty($promoRow['eyebrow'])),
   текст полосы (!empty($promoRow['text'])), вступление рубрики */
.page-hero .eyebrow:empty,
.promo-band .eyebrow:empty,
.promo-band__text:empty,
.category-intro__text:empty{display:none}

/* Пустая сетка карточек: cards-grid.php не выводит .cards-grid, если материалов нет (if ($gridItems)). У движка обёртка
   есть всегда — выборки стоят в ней вплотную, пустая выборка даёт :empty; без правила остались бы линии сетки
   (border-top/left) над пустым местом */
.cards-grid:empty{display:none}

/* «Текст» страницы на главной, в разделах и рубриках (сюда пишет воркфлоу генерации): у макета свободного текста там
   нет — секция .section > .container > .prose; [[*content]] стоит вплотную к тегам, пустой «Текст» даёт пустой блок,
   и секции нет (иначе пустая полоса высотой в два отступа --section-y) */
.section:has(> .container > .prose:empty){display:none}

/* Тексты из админки в .prose (перенесённые с живого сайта и сгенерированные): у макета оформлены только его блоки —
   списки с классами .list-marked / .list-numbered, таблица в .prose-table-wrap, фигура. Сброс макета снимает маркеры
   у всех ul/ol (ul, ol {list-style:none; padding:0}), поэтому списки без класса получают вид .list-marked /
   .list-numbered; таблица без обёртки — прокрутку, как .prose-table-wrap (min-width макета иначе раздвигает страницу
   на телефоне); видео — ширину колонки; пустые абзацы живого WordPress не дают дыр */
.prose ul:not([class]) > li{position:relative;padding-left:26px;margin-bottom:12px}
.prose ul:not([class]) > li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;background:var(--accent)}
.prose ol:not([class]){counter-reset:nlist}
.prose ol:not([class]) > li{position:relative;padding-left:34px;margin-bottom:12px;counter-increment:nlist}
.prose ol:not([class]) > li::before{content:counter(nlist);position:absolute;left:0;top:.05em;font-family:var(--font-display);font-weight:700;font-size:14px;color:var(--accent)}
.prose > table{display:block;overflow-x:auto;min-width:0;max-width:100%;margin:0 0 34px}
.prose iframe{display:block;width:100%;height:auto;aspect-ratio:16 / 9;border:0;margin:40px 0}
.prose > img,
.prose > p > img,
.prose > a > img{margin-block:28px}
.prose h4{margin-top:32px;margin-bottom:12px;font-size:18px;line-height:1.2}
.prose blockquote:not([class]){margin:0 0 28px;padding-left:20px;border-left:3px solid var(--accent);color:var(--ink-soft)}
.prose p:empty{display:none}

/* Ответ формы движка ([[+msg]] — первым в форме) на месте div.form-success макета (комментарии, «Предложить тему»):
   вид — .form-success; ошибка — тот же блок, акцентным цветом текста. Скрыт атрибутом hidden до ответа */
.bf-msg{border:1px solid var(--accent);padding:16px 18px;margin-bottom:24px;font-size:15px}
.bf-msg.bf-err{border-color:var(--ink);color:var(--accent)}


/* Îáíîâëåíèÿ íà ñàéòå */
.headline { font-family: var(--font-display, sans-serif); font-size: 22px; font-weight: 700; margin: 0 0 16px; line-height: 1.2; }
.items { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.item { border: 1px solid var(--line, #e5e5e5); padding: 12px; background: var(--paper, #fff); }
.item__image { width: 100%; height: 120px; background: var(--tint, #f2f2f2); margin-bottom: 10px; }
.item__cat { font-size: 13px; text-transform: uppercase; margin-bottom: 6px; }
.item__cat a { color: var(--accent, #B80009); text-decoration: none; font-weight: 700; }
.item__title { font-size: 15px; margin: 6px 0 10px; line-height: 1.3; }
.item__link { color: inherit; text-decoration: none; }
.item__more { font-size: 13px; color: var(--accent, #B80009); text-decoration: none; }

/* Ìîáèëüíàÿ øàïêà: áóðãåð è ïîèñê âïðàâî */
.site-header__tools { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.burger { display: inline-flex; align-items: center; justify-content: center; }
.search-bar { display: inline-flex; align-items: center; }
@media (max-width: 768px) {
  .site-header__tools { justify-content: flex-end; width: auto; flex: 0 0 auto; margin-left: auto; }
  .burger, .search-bar { margin-left: 8px; }
}

/* Обновления на сайте: пустые превью не показываем, ссылки — аккуратно */
.headline{font-size:28px;font-weight:700;margin-bottom:18px}
.items{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.item{background:#fff;border:1px solid var(--line,#e5ded1);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}
.item__image{display:none}
.item__cat{font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.item__title{font-size:15px;line-height:1.35;margin:0}
.item__more{display:inline-block;margin-top:auto;padding-top:8px;font-size:13px}
@media(max-width:900px){.items{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.items{grid-template-columns:1fr}}
