/* pbn-enhance.css — дополнения к style.css макета sps-auto.ru («СПС-Авто») под токен-движок BablO$.
   Статичная часть — этот файл (bin/pbn/data/sps-auto/pbn-enhance.css, пишется вместе со схемой
   bin/pbn/sps-auto_1_schema.php). Сид страниц bin/pbn/sps-auto_2_pages.php копирует его в
   public/sites/sps-auto-ru/assets/css/pbn-enhance.css и дописывает в конец маски иконок по ключам
   (i[data-ic="<ключ>"]{--ic:url("data:…")}); руками в public/ не править — перезапишется.
   Правило файла: только переменные и классы макета; своих классов нет — кроме тех, что рисует сам
   движок (.bf-msg/.bf-ok/.bf-err ответа формы, .pdo-pagenav/.pdo-pagebtn/.active листания). */

/* Иконки в строках pdoResources и MIGX (категории в дропдауне, карте сайта и карточках услуг,
   преимущества главной и вкладки «О компании»): значения экранируются, SVG туда не положить.
   В строке — ключ icon() макета: <i data-ic="<ключ>"> без класса (у svg макета класса нет), форма —
   маской из того же SVG, размер — style как width/height у svg. display:block и flex:none — как
   svg{display:block} сброса макета и .sidebar-related a svg{flex:0 0 auto}; цвет — currentColor
   обёртки (.advantage__icon, .service-card__label), как stroke="currentColor" у svg макета. */
i[data-ic]{display:block;flex:none;background-color:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}
/* где макет красит именно svg, а не контейнер (.dropdown__title svg, .sitemap-group__title svg) */
.dropdown__title i[data-ic],.sitemap-group__title i[data-ic]{color:var(--c-coral)}

/* Полоса фильтров услуг вынесена из <header> (число ссылок в шапке должно совпадать на всех
   страницах): внутри шапки её border-top отделял пилюли от навбара, снаружи он удваивал бы
   border-bottom самой шапки — линия сверху уже есть, дорисовываем только нижнюю. */
.pills{border-top:0;border-bottom:1px solid var(--c-line)}

/* Условные блоки макета (if ($pageLead), if (!empty($item['list'])), if ($gallery1) …): условий в
   движке нет, токен стоит вплотную к тегам — пустое значение даёт пустой элемент, и его не видно. */
.hero__text:empty,.hero__eyebrow:empty,.service-card__text:empty,.service-card__label:empty,.lead:empty,
.eyebrow:empty,.footer__lead:empty,.field__note:empty,.numbered-item__list:empty,.about-intro__list:empty,
.page-hero__inner p:empty,.stat-tile__label:empty,.gallery-item__label:empty{display:none}

/* Пустые наборы строк и «Текст» страницы: движок не рисует ни строк, ни обёртки, но сама секция и
   её отступы остались бы. Пустой «Текст» — законное значение (услуга без текста ждёт генерации).
   В разметке токен стоит вплотную к тегам — иначе перенос строки внутри отменил бы :empty. */
.text-body:empty{display:none}
section:has(> .container > .text-body:empty){display:none}
.article-photos:not(:has(img)){display:none}
.services-grid:not(:has(.service-card)){display:none}
.gallery-grid:not(:has(.gallery-item)){display:none}
.stats-grid:not(:has(.stat-tile)){display:none}
.price-table-wrap:not(:has(td)){display:none}
.requisites:not(:has(dt)){display:none}
/* «Похожие услуги» в сайдбаре: у категории с единственной услугой соседей нет (if ($related) макета) */
.sidebar-card:has(.sidebar-related):not(:has(.sidebar-related li)){display:none}

/* Листание соседних услуг и статей: @prev/@next у крайней страницы пусты (у макета список
   закольцован). Нет ни одной ссылки — блока нет; одна «следующая» — во второй колонке,
   как <span></span>-распорка макета. */
.pagination-nav:not(:has(a)){display:none}
@media (min-width:640px){.pagination-nav__item--next:only-child{grid-column:2}}

/* Тексты из админки (живые страницы, генерация воркфлоу) в .text-body: у макета сброшены маркеры
   списков (ul,ol{list-style:none}) и ссылки (a{color:inherit;text-decoration:none}) — в прозе они
   нужны; таблицы живых прайсов оформляем в стиле .price-table макета. */
.text-body ul{list-style:none;padding:0;margin:0 0 1.1em}
.text-body ul li{position:relative;padding-left:20px;margin-bottom:8px}
.text-body ul li::before{content:"";position:absolute;left:4px;top:.65em;width:6px;height:6px;border-radius:50%;background:var(--c-coral)}
.text-body ol{list-style:decimal;padding-left:1.3em;margin:0 0 1.1em}
.text-body ol li{margin-bottom:8px}
.text-body h2,.text-body h3{margin-top:1.2em}
.text-body :is(p,li,td) a{color:var(--c-coral-dark);text-decoration:underline;text-underline-offset:2px}
.text-body :is(p,li,td) a:hover{color:var(--c-coral)}
.text-body img{border-radius:var(--radius-m);margin:0 0 1.1em}
.text-body iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0;border-radius:var(--radius-m);margin:0 0 1.1em}
.text-body blockquote{margin:0 0 1.1em;padding:16px 20px;background:var(--c-cream);border-radius:var(--radius-m)}
.text-body table:not(.price-table){display:block;overflow-x:auto;border:1px solid var(--c-line);border-radius:var(--radius-m);margin:24px 0}
.text-body table:not(.price-table) :is(th,td){text-align:left;padding:14px 18px;font-family:var(--f-ui);font-size:14px;border-bottom:1px solid var(--c-line)}
.text-body table:not(.price-table) thead th{background:var(--c-ink-90);color:var(--c-white);font-weight:700;text-transform:uppercase;font-size:12px;letter-spacing:.03em}
.text-body table:not(.price-table) tbody tr:last-child td{border-bottom:0}
/* блоки макета внутри .text-body (колонка услуги и статьи) — возвращаем их собственные правила */
.toc ol{list-style:none;padding-left:0}
.toc ol li{margin-bottom:8px}
.article-photos img{margin:0}

/* Ответ формы движка ([[+msg]]): плашкой в стиле .promo-card--blue макета, ошибка — на коралловом
   фоне подсветки строк таблицы цен. Скрытое состояние держит [hidden]{display:none!important}
   из style.css. В сетке .form-grid ответ занимает всю ширину, над полями. */
.bf-msg{padding:14px 18px;border-radius:var(--radius-s);background:var(--c-blue);color:var(--c-ink);font-family:var(--f-ui);font-size:14px;margin-bottom:16px}
.bf-msg.bf-err{background:var(--c-coral-tint)}
.form-grid .bf-msg{grid-column:1/-1}

/* Листание лент (&paginate движка): кнопки — в стиле .btn--ghost макета, активная — коралловая.
   Кнопки движок рисует с инлайн-стилями, поэтому !important. */
.pdo-pagenav{display:flex!important;justify-content:center!important;gap:8px!important;flex-wrap:wrap;margin:40px 0 0!important}
.pdo-pagenav .pdo-pagebtn{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 12px!important;border:1.5px solid var(--c-line)!important;border-radius:var(--radius-s)!important;background:transparent!important;color:var(--c-ink)!important;font-family:var(--f-ui);font-weight:700;font-size:14px;line-height:1;cursor:pointer}
.pdo-pagenav .pdo-pagebtn:hover{border-color:var(--c-coral)!important;background:var(--c-coral-tint)!important}
.pdo-pagenav .pdo-pagebtn.active{background:var(--c-coral)!important;border-color:var(--c-coral)!important;color:var(--c-white)!important}
.pdo-pagenav .pdo-pagebtn[disabled]{opacity:.4;cursor:default;background:transparent!important;border-color:var(--c-line)!important}

/* Маски иконок: <i data-ic="<ключ>"> в строках MIGX и pdoResources (генерирует сид страниц) */
i[data-ic="body"]{--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%22M3%2015l1.5-5A2%202%200%200%201%206.4%208.5h11.2A2%202%200%200%201%2019.5%2010L21%2015%22%2F%3E%3Cpath%20d%3D%22M3%2015h18v3a1%201%200%200%201-1%201h-1.5a1%201%200%200%201-1-1v-1h-9v1a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1Z%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="calendar"]{--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%223%22%20y%3D%225%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3%2010h18M8%203v4M16%203v4%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="car"]{--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%2016V11l2-4h12l2%204v5%22%2F%3E%3Cpath%20d%3D%22M4%2016h16v2a1%201%200%200%201-1%201h-1a1%201%200%200%201-1-1v-1H7v1a1%201%200%200%201-1%201H5a1%201%200%200%201-1-1Z%22%2F%3E%3Ccircle%20cx%3D%227.5%22%20cy%3D%2216%22%20r%3D%221.3%22%2F%3E%3Ccircle%20cx%3D%2216.5%22%20cy%3D%2216%22%20r%3D%221.3%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.8%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%22M12%207v5l3%203%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="diagnostics"]{--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%223%22%20y%3D%224%22%20rx%3D%221%22%2F%3E%3Cpath%20d%3D%22M6%2018h8M10%2014v4M8%208l2%202%202-3%201.5%202H17%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="engine"]{--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%223%22%20y%3D%229%22%20rx%3D%221%22%2F%3E%3Cpath%20d%3D%22M15%2011h3l3%202v3h-6M6%209V6h5v3M9%2016v3M12%2016v3%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="exhaust"]{--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%22M3%209h9l3%203h6%22%2F%3E%3Cellipse%20cx%3D%2219.5%22%20cy%3D%2212%22%20rx%3D%221.5%22%20ry%3D%223%22%2F%3E%3Cpath%20d%3D%22M3%209v6h7l2-3-2-3Z%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.8%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[data-ic="suspension"]{--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%22M8%203v18M16%203v18%22%2F%3E%3Cpath%20d%3D%22M8%206h8M8%2010h8M8%2014h8M8%2018h8%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="tag"]{--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%22M3%2012V5a2%202%200%200%201%202-2h7l9%209-9%209-9-9Z%22%2F%3E%3Ccircle%20cx%3D%228%22%20cy%3D%228%22%20r%3D%221.5%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="tires"]{--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%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223%22%2F%3E%3Cpath%20d%3D%22M12%204v2M12%2018v2M4%2012h2M18%2012h2%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="wrench"]{--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%22M14.7%206.3a4%204%200%200%200-5.4%205l-6%206%202.4%202.4%206-6a4%204%200%200%200%205-5.4l-2.7%202.7-2.4-2.4Z%22%2F%3E%3C%2Fsvg%3E")}
