/* pbn-enhance.css — дополнения к style.css макета bazapnz.ru под токен-движок BablO$.
   Статичная часть: сид страниц (bin/pbn/bazapnz_2_pages.php) копирует этот файл в
   public/sites/bazapnz-ru/assets/css/pbn-enhance.css и дописывает в конец маски иконок
   i[data-ic="<ключ>"]{--ic:url("data:image/svg+xml,…")}. Только переменные и классы макета; своих
   классов нет — кроме служебных классов движка (.bf-msg, .bf-err, .pdo-*), модификаторов .stars--N
   (их значение лежит в данных) и атрибута схемы data-ic. */

/* Иконки в строках MIGX (служебная полоса шапки, вопросы о размещении, чипы рубрик журнала, счётчик
   просмотров панели «Популярное»): значения набора экранируются, SVG туда нельзя. В строке — ключ
   icon() макета в data-ic, форма — маской из того же SVG (маски дописывает сид страниц), цвет —
   currentColor обёртки. Тег <i> без класса: у <svg> самого icon() класса нет; display:block — как у
   svg{display:block} в style.css. Пустой ключ без маски дал бы сплошной квадрат — прячем. */
i[data-ic]{display:block;flex:0 0 auto;background-color:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}
i[data-ic=""]{display:none}
.utilnav__ic i[data-ic],.faq__ic i[data-ic],.chip i[data-ic],.popular__meta i[data-ic]{display:inline-block;vertical-align:middle}

/* bz_stars() макета закрашивает первые N звёзд классом на каждой звезде; в строке MIGX так нельзя —
   число закрашенных приходит ОДНИМ классом-модификатором из данных (колонка rating_cls набора отзывов,
   TV org_rating_cls карточки). Цвет — тот же var(--c-star), что у .stars__i--on макета. */
.stars--1 .stars__i:nth-child(-n+1),
.stars--2 .stars__i:nth-child(-n+2),
.stars--3 .stars__i:nth-child(-n+3),
.stars--4 .stars__i:nth-child(-n+4),
.stars--5 .stars__i:nth-child(-n+5){color:var(--c-star)}

/* Условных блоков в движке нет: пустое значение — блока нет. Лид под H1, подписи плиток, телефон и
   отметка карточки, анонс и дата материала, подпись иллюстрации, счётчик рубрики, приписки */
.page-title__lead:empty,.hero__tile-note:empty,.tile__note:empty,.badge:empty,
.org-card__phone:empty,.org-card__meta:empty,.art-card__lead:empty,.art-card__date:empty,
.featured__lead:empty,.featured__date:empty,.article__lead:empty,.article__caption:empty,
.article__meta span:empty,.author-card__bio:empty,.author-card__role:empty,.author-card__name:empty,
.media-row__cap:empty,.media-row .text p:empty,.alpha-counter:empty,.rub-block__count:empty,
.journal-hero__sub:empty,.error-block__text:empty,.form-note:empty,.steps__text:empty,
.footer__note:empty,.footer__region-title:empty,.footer__region-note:empty,.megapanel__promo-title:empty,
.contact-block__value .muted:empty,.seo__title:empty,.sortbar__count:empty{display:none}

/* Строка сведений карточки организации (company.php строит $cmpAttrs из того, что заполнено): пустое
   значение, пустая ссылка и пустой рейтинг убирают строку целиком — иначе осталась бы подпись без числа */
.attrs__row:has(> .attrs__val:empty),
.attrs__row:has(> .attrs__val > a:empty),
.attrs__row:has(> .attrs__val > .muted:empty){display:none}

/* Пустой набор MIGX / пустая выдача pdoResources: движок не печатает ни строк, ни обёртки — секция
   уходит целиком. Контейнеры наборов в шаблонах стоят ВПЛОТНУЮ к токену (<ul class="tiles">[[migx? …]]</ul>):
   с переводом строки внутри остался бы текстовый узел из отступов и :empty не сработал бы. Правку
   разметки и правило меняем вместе. */
.org-grid:empty,.art-grid:empty,.news-grid:empty,.tiles:empty,.reviews:empty,.faq:empty,.steps:empty,
.cloud:empty,.chips:empty,.dash-list:empty,.alpha-cols:empty,.popular__list:empty,.rub-cols__col:empty,
.rub-block__list:empty,.megapanel__list:empty,.mmenu__sub:empty,.modal__cities:empty,
.sitemap-block ul:empty,.footer__list:empty,.attrs:empty,.req-cols:empty{display:none}
section:has(> .section__body > .org-grid:empty),
section:has(> .section__body > .art-grid:empty),
section:has(> .section__body > .news-grid:empty),
section:has(> .section__body > .tiles:empty),
section:has(> .section__body > .faq:empty),
section:has(> .section__body > .dash-list:empty),
section:has(> .steps:empty),
section:has(> .dash-list:empty),
section:has(> .text:empty),
section:has(> .req-cols:empty),
nav.toc:has(> .dash-list:empty),
.megapanel__col:has(> .megapanel__list:empty),
.footer__col:has(> .footer__list:empty),
.sitemap-block:has(> ul:empty),
.filters__group:has(> .filters__body:empty),
.figures:has(> .figures__num:empty),
.contact-block:has(> .contact-block__value:empty),
.rub-block:has(> .rub-block__head > a:empty){display:none}

/* Нижний текстовый блок (sections/seo-text.php): тело — «Текст» страницы, его пишет и воркфлоу
   генерации. Пустой текст — ни заголовка, ни кнопки «Развернуть». */
.seo:has(> .seo__body:empty){display:none}

/* Картинка без значения (TV не заполнен): пустой src браузер показывает сломанным значком, а рамки
   макета с aspect-ratio остались бы пустыми прямоугольниками. У каждой карточки организации и каждого
   материала картинка должна быть заполнена — это страховка, а не штатный режим (см. plan.md). */
img[src=""]{display:none}
.org-card__media:has(> img[src=""]),.art-card__media:has(> img[src=""]),
.news-card__media:has(> img[src=""]),.company__logo:has(> img[src=""]),
.media-row__media:has(> img[src=""]),.megapanel__promo:has(> img[src=""]){display:none}

/* Разметка прежнего сайта в «Тексте» страницы: style.css макета оформляет .text и .article__body
   только для p, h2, h3 и ul — дописываем остальное теми же переменными (нумерованные списки, ссылки,
   цитаты, картинки, видео, таблицы) */
.text ol,.article__body ol,.seo__body ol{margin-top:12px;padding-left:22px;list-style:decimal}
.text ol li,.article__body ol li,.seo__body ol li{line-height:1.65}
.text a,.article__body a,.seo__body a{color:var(--c-accent);text-decoration:underline;text-underline-offset:3px}
.text a:hover,.article__body a:hover,.seo__body a:hover{color:var(--c-accent-2)}
.text h4,.article__body h4{margin-top:24px;margin-bottom:10px;font-size:15px;color:var(--c-title)}
.text blockquote,.article__body blockquote{margin:24px 0;padding:4px 0 4px 20px;border-left:2px solid var(--c-accent);color:var(--c-muted)}
.text img,.article__body img,.seo__body img{width:100%;height:auto;margin:24px 0}
.text iframe,.article__body iframe,.seo__body iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;margin:24px 0;border:0}
.text table,.article__body table,.seo__body table{width:100%;margin:24px 0;border-collapse:collapse;font-size:13px}
.text td,.text th,.article__body td,.article__body th,.seo__body td,.seo__body th{padding:8px 12px;border:1px solid var(--c-line);vertical-align:top;text-align:left}
.text th,.article__body th,.seo__body th{background:var(--c-panel);color:var(--c-title);font-weight:700}
@media (max-width:640px){.text table,.article__body table,.seo__body table{display:block;overflow-x:auto}}

/* Листание движка (&paginate: алфавитный указатель по 12, лента журнала по 3, новости по 9, отзывы по 4).
   У кнопок движка инлайн-стили — перекрываем их видом .pager__list макета. */
.pdo-pagenav{display:flex!important;flex-wrap:wrap!important;justify-content:center;align-items:center;gap:6px!important;margin:40px 0 0!important}
.pdo-pagenav .pdo-pagebtn{display:flex!important;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 6px!important;border:1px solid var(--c-line)!important;border-radius:0!important;background:transparent!important;color:var(--c-text)!important;font:inherit;font-size:13px;cursor:pointer}
.pdo-pagenav .pdo-pagebtn:hover{border-color:var(--c-text)!important}
.pdo-pagenav .pdo-pagebtn.active{background:var(--c-accent)!important;border-color:var(--c-accent)!important;color:#fff!important}
.pdo-pagenav .pdo-pagebtn[disabled]{opacity:.4;cursor:default;background:transparent!important;color:var(--c-muted)!important}
/* навигация дописывается сразу после списка — в колоночном .alpha-cols её нельзя оставлять в потоке колонок */
.alpha-cols + .pdo-pagenav{margin-top:24px!important}

/* Ответ формы движка ([[+msg]]: подписка, заявка на размещение, вопрос редакции, отзыв). У макета
   обработчика отправки не было (формы уходили POST на другую страницу), заготовки статуса в разметке
   нет — оформляем сами, в тон .empty-note макета. */
.bf-msg{margin-top:12px;font-size:13px;color:#1E7A3D}
.bf-msg.bf-err{color:#C23B3B}
.subscribe .bf-msg{margin:0 0 0 12px}

i[data-ic="news"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M15%204H4a1%201%200%200%200-1%201v13a2%202%200%200%200%202%202h13a2%202%200%200%200%202-2V8h-4V4Z%22%2F%3E%3Cpath%20d%3D%22M15%204h1.5L20%208%22%2F%3E%3Cpath%20d%3D%22M6.5%208.5h5M6.5%2012h8M6.5%2015.5h8%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="map"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M9%203%203%205.5v15L9%2018l6%202.5%206-2.5v-15L15%205.5%209%203Z%22%2F%3E%3Cpath%20d%3D%22M9%203v15M15%205.5v15%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="plus"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M12%205v14M5%2012h14%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="briefcase"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Crect%20x%3D%223%22%20y%3D%227%22%2F%3E%3Cpath%20d%3D%22M8.5%207V5a1%201%200%200%201%201-1h5a1%201%200%200%201%201%201v2M3%2012h18%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="clock"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228.5%22%2F%3E%3Cpath%20d%3D%22M12%207.5V12l3%202%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="refresh"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M20%2012a8%208%200%201%201-2.6-5.9M20%203.5V9h-5.5%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="shield"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M12%203.5%205%206v6c0%204.4%203%207.5%207%208.5%204-1%207-4.1%207-8.5V6l-7-2.5Z%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="doc"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M6%203.5h8l4%204V20a.5.5%200%200%201-.5.5h-11A.5.5%200%200%201%206%2020V3.5Z%22%2F%3E%3Cpath%20d%3D%22M14%203.5v4h4M9%2012h6M9%2015.5h6%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="alert"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228.5%22%2F%3E%3Cpath%20d%3D%22M12%207.5v5M12%2016v.5%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="list"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M8%206.5h13M8%2012h13M8%2017.5h13M3.5%206.5h1M3.5%2012h1M3.5%2017.5h1%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="factory"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M3%2020.5h18M3.5%2020.5V10l5%203.5V10l5%203.5V6h7v14.5%22%2F%3E%3Cpath%20d%3D%22M17%2010.5h2M17%2014.5h2%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="ruble"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M8.5%2020V4.5h4.5a4%204%200%200%201%200%208H8.5M6.5%2016h8M6.5%2012.5h2%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="building"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M4%2020.5V6l7-2.5V20.5M11%209h9v11.5M4%2020.5h17%22%2F%3E%3Cpath%20d%3D%22M14%2012.5h3M14%2016h3M7%209h1M7%2012.5h1M7%2016h1%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="user"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%228.5%22%20r%3D%223.8%22%2F%3E%3Cpath%20d%3D%22M4.5%2020.5a7.5%207.5%200%200%201%2015%200%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="chip"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Crect%20x%3D%227%22%20y%3D%227%22%2F%3E%3Cpath%20d%3D%22M10%203.5v3.5M14%203.5v3.5M10%2017v3.5M14%2017v3.5M3.5%2010H7M3.5%2014H7M17%2010h3.5M17%2014h3.5%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="marker"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M12%2021s6.5-6.1%206.5-10.5a6.5%206.5%200%201%200-13%200C5.5%2014.9%2012%2021%2012%2021Z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2210.5%22%20r%3D%222.4%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="eye"]{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M2.5%2012S6%206.5%2012%206.5%2021.5%2012%2021.5%2012%2018%2017.5%2012%2017.5%202.5%2012%202.5%2012Z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223%22%2F%3E%3C%2Fsvg%3E")}

/* Пустые состояния: то же, что :empty выше, но для блоков, внутри которых остались переводы строк
   разметки (:empty их не ловит) — см. bin/pbn/bazapnz_2_pages.php */
.filters__group:has(> .filters__body):not(:has(> .filters__body > *)){display:none}
.megapanel__col:has(> .megapanel__list):not(:has(> .megapanel__list > *)){display:none}
.rub-block__list:not(:has(> *)){display:none}
.art-row:not(:has(> *)){display:none}
section:has(> .section__body):not(:has(> .section__body > *)){display:none}
.alpha-cols:not(:has(> *)){display:none}
.seo__title:has(+ .alpha-cols):not(:has(+ .alpha-cols > *)){display:none}
section:has(> .alpha-cols):not(:has(> .alpha-cols > *)){display:none}
