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

/* Иконки в строках MIGX (соцсети подвала, карточки «Выберите формат», звезда в цифрах героя, преимущества): значения MIGX
   экранируются, SVG туда нельзя. В строке — ключ icon() макета в data-ic, форма — маской из того же SVG (маски дописывает
   сид страниц), цвет — currentColor обёртки (.icon-badge, .footer-social, .stat-value — золото макета). Класс .icon — тот
   же, что у <svg> icon() макета: его правила (.stat-value .icon — размер 0.6em) действуют и на маску; display:block — как у
   svg по сбросу макета (img, svg {display:block}). Пустой ключ (цифра без звезды — if (!empty($heroStat['icon']))) —
   иконки нет */
i.icon[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.icon[data-ic=""]{display:none}

/* Звёзды cf_stars() макета: до оценки — закрашенные star-fill, дальше — контурные star. В строке MIGX цикла нет: чанк на
   каждой из пяти позиций рисует обе звезды (star-fill, затем star), лишнюю гасит CSS по data-rating. Пустая оценка —
   звёзд нет (пятёрку не выдумываем) */
.stars[data-rating] > .icon-star{display:none}
.stars[data-rating="0"] > .icon-star-fill,
.stars[data-rating="1"] > .icon-star-fill:nth-child(n+3),
.stars[data-rating="2"] > .icon-star-fill:nth-child(n+5),
.stars[data-rating="3"] > .icon-star-fill:nth-child(n+7),
.stars[data-rating="4"] > .icon-star-fill:nth-child(n+9){display:none}
.stars[data-rating="0"] > .icon-star,
.stars[data-rating="1"] > .icon-star:nth-child(n+4),
.stars[data-rating="2"] > .icon-star:nth-child(n+6),
.stars[data-rating="3"] > .icon-star:nth-child(n+8),
.stars[data-rating="4"] > .icon-star:nth-child(n+10){display:block}
.stars[data-rating=""]{display:none}

/* Условные блоки макета (if/!empty в его PHP): пустое значение — блока нет */
.eyebrow:empty,.lead:empty,.dish-card-tag:empty{display:none}
/* плашка категории блюда и даты статьи — с инлайн display:inline-flex, как в dish.php */
.pill-tag:empty{display:none!important}
/* review-card.php: if (!empty($cardReview['context'])) — повод в атрибуте, строка скрыта при пустом */
.review-context[data-context=""]{display:none}
/* promo-banner.php: if (!empty($bannerText)), if (!empty($bannerCtaText)) */
.promo-banner-content p:empty,.promo-banner-content .btn:empty{display:none}
/* блюдо из прежнего меню: без описания, состава, веса, калорий, аллергенов — строк и заголовков нет (у макета у каждого
   блюда всё заполнено; «Состав» скрывает сама обёртка набора — пустой набор не выводит ничего) */
.dish-body-grid .text-muted:empty{display:none}
.dish-body-grid h2:has(+ .text-muted:empty + [data-prose]:empty){display:none}
.spec-table tr:has(> td:empty){display:none}
/* кухня без «Топа блюд» (у живых кухонь без пары набора может не быть): секции нет. Вызов списка стоит вплотную к тегам
   сетки — пустой набор даёт настоящий :empty */
.service-section:has(> .dish-grid:empty){display:none}
/* «Предыдущее / следующее блюдо»: у макета соседи по кругу, в дереве у крайних блюд соседа нет — одиночная ссылка
   «Следующее» остаётся в правой колонке сетки .dish-nav; обоих нет — блока нет */
.dish-nav > .dish-nav-link.next:first-child{grid-column:2}
.dish-nav:empty{display:none}
/* Лента статей: пустой раздел — абзац .filter-empty за сеткой. У «Меню» .filter-empty свой (data-filter-empty, hidden) —
   его показывает main.js, правило его не трогает */
.dish-grid:not(:empty) + .filter-empty:not([data-filter-empty]){display:none}

/* Текст страницы (поле «Текст», в т. ч. перенесённый с прежнего сайта: прайс-лист меню, тексты кухонь и главной, документы
   privacy/oferta с классами и инлайн-стилями макета). Блока статьи у макета нет: текст — своей секцией
   (.container[data-prose]) или блоком колонки ([data-prose]). Пустой текст — блока нет. Сброс макета снимает маркеры и
   отступы списков — возвращаем. Размеры и отступы — как у документов макета (privacy.php: h2 20px с отступом 32px,
   абзац .text-muted с отступом 12px), таблицы — как .spec-table dish.php */
[data-prose]:empty{display:none}
.section:has(> .container[data-prose]:empty){display:none}
.dish-body-grid [data-prose],.service-section [data-prose]{margin-top:16px}
.service-section [data-prose] + .check-list{margin-top:16px}
[data-prose] > :is(p,ul,ol,h2,h3,h4,blockquote){max-width:760px}
[data-prose] > :first-child{margin-top:0}
[data-prose] p,[data-prose] li{color:var(--text-light-muted)}
[data-prose] h2{font-size:20px;margin-top:32px}
[data-prose] h3,[data-prose] h4{font-size:17px;margin-top:24px}
[data-prose] :is(h2,h3,h4) + :is(p,ul,ol,table){margin-top:12px}
[data-prose] ul,[data-prose] ol{margin:0 0 1em;padding-left:1.4em}
[data-prose] ul{list-style:disc}
[data-prose] ol{list-style:decimal}
[data-prose] li + li{margin-top:.35em}
[data-prose] a{color:var(--gold)}                  /* как ссылка на e-mail в privacy.php: золото без подчёркивания */
[data-prose] blockquote{margin:0 0 1em;padding:4px 0 4px 20px;border-left:2px solid var(--gold)}
[data-prose] img{height:auto;border-radius:var(--radius-photo);margin:0 0 1em}
[data-prose] iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0;border-radius:var(--radius-photo);margin:0 0 1em}
[data-prose] table{margin:0 0 1.6em}
[data-prose] tr{border-bottom:1px solid var(--gold-line)}
[data-prose] tbody tr:last-child{border-bottom:0}
[data-prose] th,[data-prose] td{text-align:left;padding:13px 4px;font-size:14.5px;vertical-align:top}
[data-prose] th{font-weight:500;color:var(--text-light-muted)}
[data-prose] td{font-weight:600}
[data-prose] td a{font-weight:500}
@media (max-width: 640px){[data-prose] table{display:block;overflow-x:auto}}

/* Ответ формы движка ([[+msg]] перед полями брони): тон .form-note на тёмной карточке .contact-form-card, рамка — золотой
   линией макета; ошибка — красным, как подсветка незаполненного поля в main.js (#c05252) */
.bf-msg{margin:0 0 18px;padding:12px 16px;border:1px solid var(--gold-line-hover);border-radius:var(--radius-input);font-size:14.5px;line-height:1.5;color:var(--text-light)}
.bf-msg.bf-err{border-color:#c05252;color:#c05252}

/* Маски иконок i.icon[data-ic="<ключ>"] по icon() макета — дописывает bin/pbn/cutfish-restaurant_2_pages.php при
   каждом прогоне. Файл перезаписывается целиком: статичную часть правьте в bin/pbn/data/cutfish-restaurant/pbn-enhance.css */
i.icon[data-ic="award"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%229%22%20r%3D%225%22%2F%3E%3Cpath%20d%3D%22m8.5%2013.5-1.5%206%205-2.5%205%202.5-1.5-6%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="fish"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%2012c4-5%2010-7%2015-4-1%202-1%206%200%208-5%203-11%201-15-4z%22%2F%3E%3Ccircle%20cx%3D%2216%22%20cy%3D%2210.5%22%20r%3D%22.6%22%20fill%3D%22%23000%22%20stroke%3D%22none%22%2F%3E%3Cpath%20d%3D%22M20%208c1%201.6%201%206.4%200%208%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="leaf"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%204C10%204%204%2010%204%2018c8%200%2014-6%2014-14z%22%2F%3E%3Cpath%20d%3D%22M8%2018C10%2012%2014%208%2020%204%22%2F%3E%3C%2Fsvg%3E")}
i.icon[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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203l7%203v6c0%204.5-3%207.7-7%209-4-1.3-7-4.5-7-9V6z%22%2F%3E%3Cpath%20d%3D%22m9%2012%202%202%204-4%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="star-fill"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20fill%3D%22%23000%22%20stroke%3D%22none%22%20d%3D%22m12%203%202.6%205.8%206.2.6-4.7%204.2%201.4%206.1L12%2016.9%206.5%2019.7l1.4-6.1L3.2%209.4l6.2-.6L12%203z%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="telegram"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%204%203%2011.5l6%202M21%204%2015%2020l-6-6.5M21%204%209%2013.5%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="truck"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%222%22%20y%3D%227%22%2F%3E%3Cpath%20d%3D%22M14%2010h4l4%203v3h-8z%22%2F%3E%3Ccircle%20cx%3D%226.5%22%20cy%3D%2218%22%20r%3D%221.6%22%2F%3E%3Ccircle%20cx%3D%2217%22%20cy%3D%2218%22%20r%3D%221.6%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="users"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%228%22%20r%3D%223%22%2F%3E%3Cpath%20d%3D%22M3%2020c0-3.3%202.7-6%206-6s6%202.7%206%206%22%2F%3E%3Ccircle%20cx%3D%2217%22%20cy%3D%229%22%20r%3D%222.4%22%2F%3E%3Cpath%20d%3D%22M15.5%2014a5%205%200%200%201%205.5%205.6%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="vk"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%204c.2%208%204.3%2013%2011%2013h1v-4c2.5.3%204.4%202%205.3%204%22%2F%3E%3Cpath%20d%3D%22M4%204h3.4c.4%203%201.7%205.4%204.6%206.4V4H15%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="whatsapp"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%2018l-1.2%203L8%2019.7A9%209%200%201%200%204.5%2015.5L6%2018z%22%2F%3E%3Cpath%20d%3D%22M9%209.3c0%203.6%202.6%206%206%206.3.9.1%201.5-.9%201-1.6l-1.2-1.7-2%20.5c-.8-.6-1.5-1.3-2-2l.5-2-1.6-1.2c-.7-.4-1.7.1-1.7.7v1z%22%20fill%3D%22%23000%22%20stroke%3D%22none%22%20opacity%3D%22.001%22%2F%3E%3Cpath%20d%3D%22M9.4%208.6c.3%203.2%202.8%205.7%206%206%22%2F%3E%3C%2Fsvg%3E")}
i.icon[data-ic="wifi"]{--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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M2%208.8a16%2016%200%200%201%2020%200%22%2F%3E%3Cpath%20d%3D%22M5.5%2012.5a11%2011%200%200%201%2013%200%22%2F%3E%3Cpath%20d%3D%22M9%2016.2a6%206%200%200%201%206%200%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2219.5%22%20r%3D%221%22%20fill%3D%22%23000%22%20stroke%3D%22none%22%2F%3E%3C%2Fsvg%3E")}
