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

/* Иконки в строках MIGX (факты главной, «Факты о нас», «Оформление заказа», «Парк спецтехники»): значения MIGX
   экранируются, SVG туда нельзя. В строке — ключ icon() макета: <i data-ic="<ключ>" style="width;height">; форма — маской
   из того же SVG, цвет — currentColor. У макета svg получает цвет правилами .fact-strip__item svg / .cols-3__item h3 svg —
   для <i> те же правила повторены здесь */
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}
.fact-strip__item > i[data-ic],.cols-3__item h3 > i[data-ic]{color:var(--color-terracotta)}

/* Звёзды отзыва: макет рисует icon('star') циклом for ($i < rating); циклов в движке нет — чанк строки рисует пять
   звёзд, лишние прячет атрибут data-rating="<оценка>" */
.review-card__rating[data-rating="0"] > svg,
.review-card__rating[data-rating="1"] > svg:nth-child(n+2),
.review-card__rating[data-rating="2"] > svg:nth-child(n+3),
.review-card__rating[data-rating="3"] > svg:nth-child(n+4),
.review-card__rating[data-rating="4"] > svg:nth-child(n+5){display:none}

/* Условные блоки макета (if/empty() в PHP): пустое значение — блока нет. Токен в разметке стоит вплотную к тегам,
   иначе пробелы делают блок непустым */
.lead:empty,.decor-banner__lead:empty,.page-banner__lead:empty,.content-narrow > p:empty,
.article-card__meta:empty,.article-card__excerpt:empty,.product-card__desc:empty{display:none}
/* карточка вида блоков: «Где применяется:» без пунктов и строка цены без цены (у позиций каталога бывают пустыми) */
.grid--2 > div > ul:empty,.grid--2 > div > p:has(+ ul:empty),.grid--2 > div > p:has(> strong:empty){display:none}
/* секции без строк: характеристики без строк, «Текст» страницы пуст, объекты и отзывы гео-страницы без строк, рубрика
   без статей (ленту блога не задевает: пустая сетка результатов поиска там не единственная в контейнере) */
.section:has(.data-table > tbody:empty),.section:has(> .container > .article-body:only-child:empty),
.section:has(> .container > .grid--2:empty),.reviews-grid:has(> .container > .grid:empty),
.section:has(> .container > .grid--3:only-child:empty){display:none}
/* «Показать ещё» на главной, когда сверх первых трёх строк ничего нет */
#objects-more:has(> .grid:empty) + .btn-row,#reviews-more:has(> .grid:empty) + .btn-row{display:none}

/* Анонс в карточках: макет режет его excerpt() до 90–120 символов по границе слова, движок обрезать не умеет —
   те же 2–3 строки делает line-clamp */
.article-card__excerpt{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* Листание лент движка (кнопки с инлайн-стилями) — видом вкладок .faq-tab макета; ряд занимает всю ширину сетки */
.grid > .pdo-pagenav{grid-column:1 / -1}
.pdo-pagenav{flex-wrap:wrap!important;gap:10px!important;margin:12px 0 0!important}
.pdo-pagenav .pdo-pagebtn{padding:10px 18px!important;border:1px solid var(--color-charcoal)!important;border-radius:var(--radius)!important;background:transparent!important;color:var(--color-charcoal)!important;font-family:var(--font-sans);font-size:.85rem;font-weight:700;line-height:1;cursor:pointer;transition:background var(--transition),color var(--transition)}
.pdo-pagenav .pdo-pagebtn:hover,.pdo-pagenav .pdo-pagebtn.active{background:var(--color-charcoal)!important;color:var(--color-on-dark)!important}
.pdo-pagenav .pdo-pagebtn[disabled]{opacity:.35;cursor:default}
.pdo-pagenav .pdo-pagebtn[disabled]:hover{background:transparent!important;color:var(--color-charcoal)!important}

/* Ответ формы движка ([[+msg]] первым в форме заявки) — в тоне плашки .calc-note макета */
.contact-form .bf-msg{margin:0 0 18px;padding:16px 20px;background:var(--color-sage);border-left:4px solid var(--color-olive);font-size:var(--fs-small)}
.contact-form .bf-msg.bf-err{background:var(--color-cream-alt);border-left-color:var(--color-terracotta)}

/* Тексты с прежнего сайта и генерация воркфлоу («Текст» в .article-body): сброс макета снимает подчёркивание ссылок и
   маркеры нумерованных списков; картинки, видео, таблицы и цитаты — в тоне .article-body / .data-table макета */
.article-body > :first-child{margin-top:0}
.article-body a{color:var(--color-terracotta);text-decoration:underline}
.article-body a:hover{color:var(--color-terracotta-2)}
.article-body ol{list-style:decimal;margin:1em 0;padding-left:1.4em;display:flex;flex-direction:column;gap:10px}
.article-body img{max-width:100%;height:auto;margin:1em 0}
.article-body iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0;margin:1em 0}
.article-body table:not(.data-table){width:100%;margin:1em 0;font-size:.92rem}
.article-body table:not(.data-table) td,.article-body table:not(.data-table) th{padding:10px 14px;border:1px solid var(--color-border);text-align:left;vertical-align:top}
.article-body blockquote{margin:1.4em 0;padding:16px 22px;background:var(--color-cream-soft);border-left:4px solid var(--color-terracotta)}

/* Маски иконок строк MIGX i[data-ic="<ключ>"] по icon() макета — дописывает bin/pbn/blok-stroi_2_pages.php при каждом прогоне.
   Файл перезаписывается целиком: статичную часть правьте в bin/pbn/data/blok-stroi/pbn-enhance.css */
i[data-ic="percent"]{--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%22M5%2019%2019%205%22%2F%3E%3Ccircle%20cx%3D%227%22%20cy%3D%227%22%20r%3D%222.2%22%2F%3E%3Ccircle%20cx%3D%2217%22%20cy%3D%2217%22%20r%3D%222.2%22%2F%3E%3C%2Fsvg%3E")}
i[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%3Cpath%20d%3D%22M3%207h11v8H3z%22%2F%3E%3Cpath%20d%3D%22M14%2010h4l3%203v2h-7z%22%2F%3E%3Ccircle%20cx%3D%227%22%20cy%3D%2217.5%22%20r%3D%221.6%22%2F%3E%3Ccircle%20cx%3D%2217.5%22%20cy%3D%2217.5%22%20r%3D%221.6%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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203l7%203v6c0%204.5-3%207.5-7%209-4-1.5-7-4.5-7-9V6Z%22%2F%3E%3Cpath%20d%3D%22M9%2012l2%202%204-4%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="check-circle"]{--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%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M7.5%2012.5%2010.5%2015.5%2016.5%209%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="certificate"]{--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.5%22%2F%3E%3Cpath%20d%3D%22M9%2013.5%207.5%2021l4.5-2.5%204.5%202.5-1.5-7.5%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.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%2020V9l5%203.5V9l5%203.5V9l5%203v8Z%22%2F%3E%3Cpath%20d%3D%22M3%2020h18%22%2F%3E%3Cpath%20d%3D%22M8%2020v-3.5%22%2F%3E%3Cpath%20d%3D%22M14%2020v-3.5%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="box"]{--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%208l9-5%209%205-9%205-9-5Z%22%2F%3E%3Cpath%20d%3D%22M3%208v9l9%205%209-5V8%22%2F%3E%3Cpath%20d%3D%22M12%2013v9%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="document"]{--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%203h9l3%203v15H6z%22%2F%3E%3Cpath%20d%3D%22M15%203v3h3%22%2F%3E%3Cpath%20d%3D%22M9%2012h6M9%2015h6M9%209h2%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="ruler"]{--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%2015%2015%204l5%205L9%2020z%22%2F%3E%3Cpath%20d%3D%22M12%207l2%202%22%2F%3E%3Cpath%20d%3D%22M9%2010l2%202%22%2F%3E%3Cpath%20d%3D%22M6%2013l2%202%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="coin"]{--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%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M9.5%2014.5c0%201%20.9%201.7%202%201.7s2-.6%202-1.5c0-2.3-4.5-1.2-4.5-3.4%200-.9.9-1.6%202-1.6s2%20.5%202%201.5%22%2F%3E%3Cpath%20d%3D%22M12%208v1M12%2015v1%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="forklift"]{--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%2020V9%22%2F%3E%3Cpath%20d%3D%22M3%209l4-3%22%2F%3E%3Cpath%20d%3D%22M9%2020h4v-6H9z%22%2F%3E%3Ccircle%20cx%3D%226.5%22%20cy%3D%2220%22%20r%3D%221.4%22%2F%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2220%22%20r%3D%221.4%22%2F%3E%3Cpath%20d%3D%22M13%2014h5.5L21%209%22%2F%3E%3C%2Fsvg%3E")}
