/* pbn-enhance.css — дополнения к style.css макета amersoft.ru («Amersoft», блог о сайтостроении) под токен-движок BablO$.
   Статичная часть — этот файл (bin/pbn/data/amersoft/pbn-enhance.css, пишется вместе со схемой
   bin/pbn/amersoft_1_schema.php). Сид страниц bin/pbn/amersoft_2_pages.php копирует его в
   public/sites/amersoft-ru/assets/a/c31f64301475.css и дописывает в конец маски иконок по ключам
   (i.icon-<ключ>{--ic:url("data:…")}). Правило файла: только переменные и классы разметки макета (плюс классы,
   которые рисует сам движок: .pdo-pagenav/.pdo-pagebtn); руками в public/ не править — перезапишется. */

/* Иконки в строках MIGX («Бесплатно / Без регистрации / Обновляется» раздела программ): значения MIGX экранируются,
   SVG туда не положить — в строке ключ icon() макета, элемент <i class="icon icon-<ключ>"> (те же классы, что у
   <svg class="icon icon-%s"> макета). Как svg макета (img,svg{display:block}): блочный, цвет — currentColor обёртки */
i.icon{display:block;flex-shrink:0;background-color:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}
/* .why-free-row__item svg макета (цвет акцента, отступ до заголовка) — то же для <i> */
.why-free-row__item i.icon{color:var(--color-accent);margin-bottom:14px}

/* Условные блоки макета (if ($x) в его PHP): пустое значение — блока нет. Токен стоит вплотную к тегам, иначе
   пробелы не дали бы сработать :empty */
.caps-label:empty,.lede:empty,.page-hero__lede:empty,.error-block__lede:empty{display:none}
/* строка реквизитов подвала пуста, пока владелец не дал настоящие (демо-реквизиты макета не публикуем, plan.md §7) */
.site-footer__legal:empty{display:none}
/* pull-quote.php макета не выводит врезку без текста */
.pull-quote:has(> p:empty){display:none}
/* «Текст» страницы программы пуст (его допишет воркфлоу генерации) — секции нет, как нет её у tools.php макета */
.section:has(> .container > .article-layout > .article-body:empty){display:none}

/* Лента (article-card-grid.php): материалов нет — вместо ленты строка $gridEmpty. Ленту рисует обёртка
   pdoResources/MIGX только при наличии строк; строка «пусто» стоит после неё и гасится соседним селектором */
.article-row-list ~ .text-link--muted{display:none}

/* Пагинация лент — листание движка (&paginate) вместо ?page= макета: кнопки .pdo-pagebtn движка оформлены как
   ссылки .pagination макета (pagination.php) — те же размеры, радиус и цвет текущей страницы. У панели и кнопок
   движка инлайн-стили, поэтому !important */
.pdo-pagenav{justify-content:center;gap:6px!important;margin:56px 0 0!important}
.pdo-pagenav .pdo-pagebtn{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 8px!important;border:0!important;border-radius:var(--radius-sm)!important;background:transparent!important;color:var(--color-text)!important;font-family:var(--font-body);font-size:.9rem;font-weight:600;cursor:pointer;transition:background-color var(--transition-fast)}
.pdo-pagenav .pdo-pagebtn:hover{background:var(--color-pill)!important}
.pdo-pagenav .pdo-pagebtn.active{background:var(--color-accent)!important;color:var(--color-accent-text)!important}
.pdo-pagenav .pdo-pagebtn[disabled]{opacity:.3;pointer-events:none}

/* Страница поиска (у макета её нет — собрана из category.php): поле запроса над выдачей — в рамке, как
   .error-block .site-search__form макета (404.php) */
.category-layout .site-search__form{border:1px solid var(--color-hairline);border-radius:var(--radius-sm);padding-inline:16px;margin-bottom:32px}
.category-layout .site-search__form input{padding-block:10px}

/* Тексты с прежнего сайта (Joomla-разметка без классов макета) в .article-body — в стиле материалов макета:
   нумерованные списки — как ul макета, таблицы и видео — по ширине колонки, цитата без класса — линией акцента */
.article-body ol{margin:0 0 1.4em;padding-left:1.4em;list-style:decimal}
.article-body ol li{margin-bottom:.5em}
.article-body h4{margin-top:1.4em;margin-bottom:.5em}
.article-body img{height:auto}
.article-body figure{margin:1.6em 0}
.article-body figure figcaption{margin-top:8px;font-size:.9rem;color:var(--color-muted)}
.article-body iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0;margin-bottom:1.4em}
.article-body table{width:100%;border-collapse:collapse;margin-bottom:1.4em;font-size:.95rem}
.article-body th,.article-body td{text-align:left;vertical-align:top;padding:10px 12px 10px 0;border-bottom:1px solid var(--color-hairline)}
.article-body th{font-weight:600}
.article-body blockquote:not(.pull-quote){margin:1.6em 0;padding-left:20px;border-left:3px solid var(--color-accent)}
.article-body p a:not([class]),.article-body li a:not([class]),.article-body td a:not([class]){text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.article-body p a:not([class]):hover,.article-body li a:not([class]):hover,.article-body td a:not([class]):hover{color:var(--color-accent)}

/* ── маски иконок по ключам (дописывает сид страниц) ── */
i.icon-lock-open{--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.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%225%22%20y%3D%2211%22%20rx%3D%221.5%22%2F%3E%3Cpath%20d%3D%22M8%2011V7.5a4%204%200%200%201%207.5-2%22%2F%3E%3C%2Fsvg%3E")}
i.icon-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.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203.5%2019%206.5v5.3c0%204.6-3%207.9-7%209-4-1.1-7-4.4-7-9V6.5Z%22%2F%3E%3Cpolyline%20points%3D%229%2012%2011.2%2014.2%2015.5%209.8%22%2F%3E%3C%2Fsvg%3E")}
i.icon-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.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4.5%2012a7.5%207.5%200%200%201%2012.6-5.5L19%208.3%22%2F%3E%3Cpolyline%20points%3D%2219%204%2019%208.3%2014.7%208.3%22%2F%3E%3Cpath%20d%3D%22M19.5%2012a7.5%207.5%200%200%201-12.6%205.5L5%2015.7%22%2F%3E%3Cpolyline%20points%3D%225%2020%205%2015.7%209.3%2015.7%22%2F%3E%3C%2Fsvg%3E")}
