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

/* Иконки в строках MIGX (площадки отзывов: yandex, gis, chat): значения MIGX экранируются, SVG туда нельзя. В строке —
   ключ icon() макета в data-ic, форма — маской из того же SVG (маски дописывает сид страниц), цвет — currentColor
   обёртки (.platform__ico — var(--clay-text)). Класс — .icon, тот же, что у <svg> icon() макета; display:block — как у
   svg по сбросу макета (img, svg, video {display:block}) */
i.icon[data-ic]{display:block;flex-shrink:0;background-color:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}

/* Условные блоки макета (if в его PHP): пустое значение — блока нет. Кикер и лид шапки внутренней страницы
   (page-hero.php: if ($heroKicker !== ''), if ($heroLead !== '')), плашка тарифа, ответ компании на отзыв
   (reviews.php: if (!empty($answer))) — значение стоит вплотную к тегам, пустое даёт настоящий :empty */
.page-hero .kicker:empty,.page-hero .lead:empty{display:none}
.plan__badge:empty{display:none}
.review__answer:has(> p:last-child:empty){display:none}

/* «Показать ещё отзывы» (reviews.php): скрытых отзывов нет (их меньше пяти) — и кнопки нет */
.review-list:not(:has([data-hidden-item])) + .section__more{display:none}

/* Звёзды fg_stars() макета: закрашено $rating из пяти (.stars__i--on — var(--gold), .stars__i--off — приглушённые). В
   строке MIGX цикла нет: разметка рисует пять закрашенных, лишние гасит цветом .stars__i--off по data-rating (на красной
   полосе отзывов — её цвет .band--red .stars__i--off). Пустая оценка — звёзд нет, пятёрку не выдумываем */
.stars[data-rating="0"] .stars__i,
.stars[data-rating="1"] .stars__i:nth-child(n+2),
.stars[data-rating="2"] .stars__i:nth-child(n+3),
.stars[data-rating="3"] .stars__i:nth-child(n+4),
.stars[data-rating="4"] .stars__i:nth-child(n+5){color:rgba(82, 43, 26, .2)}
.band--red .stars[data-rating="0"] .stars__i,
.band--red .stars[data-rating="1"] .stars__i:nth-child(n+2),
.band--red .stars[data-rating="2"] .stars__i:nth-child(n+3),
.band--red .stars[data-rating="3"] .stars__i:nth-child(n+4),
.band--red .stars[data-rating="4"] .stars__i:nth-child(n+5){color:rgba(255, 255, 255, .3)}
.stars[data-rating=""]{display:none}

/* Секции, которых у макета нет без данных: текст страницы (поле «Текст» — SEO-блок направления, перенесённый текст
   живого сайта; пуст — секции нет), тизеры статей (главная, «Отзывы», «Читайте также»: статей нет — секции нет),
   бригада направления (ключи людей не заданы). Вызов списка стоит вплотную к тегам — пустой список даёт :empty.
   У ленты статей свои .teasers.section__body — их пустоту обрабатывает правило ниже, секцию ленты не прячем */
.section:has(> .container > .prose:empty){display:none}
.section:has(> .container > .teasers:not(.section__body):empty){display:none}
.section:has(> .container > .people:empty){display:none}

/* «Читайте также» (article.php, fg_related_articles(): сначала та же рубрика, потом свежие из других, всего 3). Движок
   не складывает лимит двух выборок — схема выводит до трёх статей рубрики и до трёх из других рубрик, лишние гасятся здесь */
section[aria-labelledby="related-title"] .teasers > :nth-child(n+4){display:none}

/* Лента статей (articles.php): после «главной» статьи остальных нет — вместо сетки абзац-сообщение макета (else-ветка
   if ($artPaged['items'])); он стоит сразу за сеткой */
.teasers.section__body:empty{display:none}
.teasers.section__body:not(:empty) + .lead{display:none}

/* Пагинация движка (&paginate: кнопки с инлайн-стилями дописываются ВНУТРЬ сетки тизеров) — на всю ширину сетки, в
   стиле .pagination / .page-pill макета: пилюля 44px, кремовый фон, активная — var(--ink) */
.teasers > .pdo-pagenav{grid-column:1 / -1}
.pdo-pagenav{display:flex!important;flex-wrap:wrap!important;align-items:center!important;gap:8px!important;margin:40px 0 0!important}
.pdo-pagenav .pdo-pagebtn{display:inline-flex!important;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 16px!important;border:1px solid var(--line)!important;border-radius:999px!important;background:var(--cream)!important;color:var(--ink)!important;font-family:var(--font-text);font-weight:700;font-size:14px;cursor:pointer}
.pdo-pagenav .pdo-pagebtn:hover{border-color:var(--clay)!important}
.pdo-pagenav .pdo-pagebtn.active{background:var(--ink)!important;border-color:var(--ink)!important;color:var(--cream)!important}
.pdo-pagenav .pdo-pagebtn[disabled]{opacity:.4;cursor:default}

/* Текст страницы (поле «Текст», в т. ч. перенесённый с прежнего сайта) живёт в .prose макета: картинки, видео и
   таблицы — в размерах колонки (у макета правил на img/iframe в .prose нет — его тексты без них) */
.prose img{height:auto;border-radius:var(--radius);margin:0 0 16px}
.prose iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0;border-radius:var(--radius);margin:0 0 16px}
@media (max-width: 640px){.prose table{display:block;overflow-x:auto}}

/* Ответ формы движка ([[+msg]] перед .form__note) — вместо «успеха» демо-обработчика initForms() макета (форма движка
   не несёт data-demo-form, и демо-обработчик её не трогает): вид .form__note.is-ok, ошибка — цветом .field__req */
.bf-msg{font-size:13px;line-height:1.5;color:var(--forest);font-weight:700;background:rgba(107, 103, 51, .10);border-radius:10px;padding:12px 14px}
.bf-msg.bf-err{color:var(--brand);background:rgba(184, 48, 55, .08)}

/* Маски иконок площадок отзывов (генерирует bin/pbn/foodg_2_pages.php из icon() макета) */
i.icon[data-ic="yandex"]{--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.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228.6%22%2F%3E%3Cpath%20d%3D%22M13.4%2017.4V6.6h-1.2a2.9%202.9%200%200%200-.5%205.7l-2%205.1M13.4%2012.2h-1.7%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="gis"]{--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.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228.6%22%2F%3E%3Cpath%20d%3D%22M15%209.4a3.4%203.4%200%201%200%20.3%204.4H12%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="chat"]{--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.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20.4%2012.6c0%203.8-3.7%206.8-8.4%206.8-1%200-2-.1-2.9-.4L4%2020.6l1.5-3.6a6.4%206.4%200%200%201-1.9-4.4c0-3.8%203.7-6.8%208.4-6.8s8.4%203%208.4%206.8Z%22%2F%3E%3C%2Fsvg%3E")}

.lead-dialog{border:0;border-radius:16px;padding:0;width:min(520px,calc(100% - 32px));max-height:90vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.lead-dialog::backdrop{background:rgba(8,12,20,.6)}
.lead-dialog__box{position:relative;padding:28px}
.lead-dialog__close{position:absolute;top:10px;right:12px;width:36px;height:36px;border:0;background:transparent;font-size:28px;line-height:1;cursor:pointer}
.lead-dialog__title{margin:0 0 14px;font-size:1.35rem}
.lead-dialog__form{display:grid;gap:12px}
.lead-dialog__form .field{margin:0}
.lead-dialog__form .btn{width:100%}
