/* pbn-enhance.css — дополнения к style.css макета urist812.ru (Городской центр правовой защиты) под токен-движок
   BablO$. Статичная часть — этот файл (bin/pbn/data/urist812/pbn-enhance.css, пишется вместе со схемой
   bin/pbn/urist812_1_schema.php). Сид страниц bin/pbn/urist812_2_pages.php копирует его в
   public/sites/urist812-ru/assets/css/pbn-enhance.css и дописывает в конец маски иконок по ключам.
   Только переменные и классы макета; руками в public/ не править — перезапишется. */

/* Иконки в строках MIGX и pdoResources. Значения экранируются, SVG туда не положить: в строке — ключ icon() макета
   (атрибут data-ic, класс только макетный .ic), форма — маской из того же SVG, цвет — currentColor обёртки
   (.intro-dir__ico, .practice__ico, .route__ttl, .catgroup__ttl). Маски сид страниц дописывает правилами
   i.ic[data-ic="shield"]{--ic:url("data:image/svg+xml,…")}. */
i.ic[data-ic]{display:inline-block;flex:0 0 auto;vertical-align:top;background-color:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}
/* у макета цвет этих иконок задан правилом на svg — повторяем его для иконки-маски */
.route__ttl i.ic,.catgroup__ttl i.ic{color:var(--plum)}

/* Условные блоки макета (if в его PHP): пустое значение — блока нет */
.phero__inner .eyebrow:empty,.phero__sub:empty{display:none}
.lead:empty,p.muted:empty{display:none}
.artmeta__i:has(> span:empty){display:none}
/* группа каталога без строк (направление не выделено в каталоге отдельной группой) */
.catgroup:has(> .zlist:empty){display:none}
/* слот живого текста в шаблонах страниц макета: пустое поле «Текст» — блока нет */
.prose:empty{display:none}
/* «В этой рубрике пока нет материалов» — только при пустой ленте: сетка карточек стоит перед сообщением */
.artgrid ~ .casefeed__empty{display:none}

/* Ответ формы движка на месте p.form__status макета — те же размер и цвета (успех / ошибка поля) */
.bf-msg{margin-top:12px;font-size:14px;line-height:1.55;color:var(--ok)}
.bf-msg.bf-err{color:#C0392B}
.field--dark .bf-msg{color:#BFE6CE}
.field--dark .bf-msg.bf-err{color:#FFC9C2}

/* Пагинация движка (кнопки с инлайн-стилями) — в стиле .pager макета */
.pdo-pagenav{display:flex!important;align-items:center!important;gap:6px!important;flex-wrap:wrap!important;margin:36px 0 0!important;padding-top:24px;border-top:1px solid var(--line)}
.pdo-pagenav .pdo-pagebtn{min-width:38px;height:38px;padding:0 10px!important;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:15px;color:var(--accent-700)!important;background:transparent!important;border:0!important;border-radius:var(--radius)!important;cursor:pointer}
.pdo-pagenav .pdo-pagebtn:hover{background:var(--bg-zebra)!important;color:var(--accent)!important}
.pdo-pagenav .pdo-pagebtn.active{background:var(--bg-alt)!important;color:var(--ink)!important;font-weight:600}
.pdo-pagenav .pdo-pagebtn[disabled]{opacity:.4;cursor:default}
.pdo-pagenav span{color:var(--ink-600)}

/* Тексты, перенесённые с прежнего сайта (WordPress): картинки, видео, таблицы — в духе .prose и .ptable макета */
.prose img{max-width:100%;height:auto}
.prose iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0}
.prose table{font-size:15px}
.prose th,.prose td{padding:12px 16px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;line-height:1.5}
.prose thead th{background:var(--plum-100);color:var(--plum);font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.prose tbody tr:nth-child(even){background:var(--bg-zebra)}

/* Выпадающее меню «Услуги» открывается по :hover пункта, а панель стоит на 14px ниже него (.submenu
   top:calc(100% + 14px)): по пути к панели курсор покидал пункт, :hover снимался — меню закрывалось. Невидимый
   мостик на всю высоту зазора — часть панели, а значит и пункта: путь от пункта к любой строке панели не выходит из
   hover-зоны. Мостик шириной с панель; у закрытой панели он скрыт вместе с ней (visibility) и курсор не ловит. */
.mainnav__item.has-sub > .submenu::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:14px}
/* Путь по диагонали к правым концам строк панели (панель шире пункта и уходит далеко вправо) выходит из пункта через
   его правый край и до ~86 px (замер при 1024–1920 px) идёт над соседним «Цены», мимо мостика: расширить мостик вверх
   нельзя — он перекрыл бы соседние пункты. Поэтому закрытие — с задержкой 0,3 с (открытие — сразу, как в макете):
   панель ловит курсор, пока visibility не погаснет (0,3 + 0,18 с), — медленный наискосок дойдёт, меню не мигает.
   Клавиатура (is-open из main.js) — по тем же правилам. */
.mainnav__item.has-sub .submenu{transition:opacity var(--t) .3s,transform var(--t) .3s,visibility 0s linear .48s}
.mainnav__item.has-sub:hover .submenu,.mainnav__item.has-sub.is-open .submenu{transition:opacity var(--t),transform var(--t),visibility 0s}

/* Окно «Заказать звонок» (чанк ch_modal_call, показ — pbn-enhance.js). Модальных окон в макете нет: коробка — его
   тёмная форма записи (.darkform: фон, водяной знак, поля .field--dark, белая кнопка), здесь — затемнение, размеры,
   крестик. Затемнение — тон подложки мобильного меню макета (.offcanvas__backdrop). Коробка встаёт по центру через
   margin:auto, а не align-items: на низком экране (телефон боком) верх окна не уходит за край — окно прокручивается. */
.pbn-modal{position:fixed;inset:0;z-index:100;display:flex;padding:16px;overflow-y:auto;overscroll-behavior:contain;background:rgba(33,37,41,.5)}
.pbn-modal[hidden]{display:none}
.pbn-modal__box{width:100%;max-width:480px;margin:auto;padding:44px 24px 28px;box-shadow:var(--shadow-pop)}
@media (min-width:600px){.pbn-modal__box{padding:48px 40px 36px}}
/* водяной знак .wm позиционирован и без этого лёг бы поверх полей (у секций макета то же — .section > .container) */
.pbn-modal__box > :not(.wm){position:relative;z-index:1}
.pbn-modal__box > .pbn-modal__close{position:absolute;top:8px;right:8px;z-index:2}
.pbn-modal__box .darkform__eyebrow{padding-right:40px}
.pbn-modal__box .darkform__title:focus:not(:focus-visible){outline:none}
.pbn-modal__form{display:grid;gap:20px;margin-top:24px}
.pbn-modal__alt{margin-top:24px;padding-top:18px;border-top:1px solid rgba(255,255,255,.16);font-size:14px;line-height:1.6;color:rgba(255,255,255,.72)}
.pbn-modal__alt a{color:#fff;font-weight:600;white-space:nowrap}
.pbn-modal__alt a:hover{color:#fff;text-decoration:underline}
.pbn-modal__alt span{display:block}

/* ── синяя палитра вместо фиолетовой: перекрываем переменные и редкие rgba из style.css ── */
:root{
  --plum:#24466F;
  --plum-900:#193451;
  --plum-100:#E5EDF7;
  --veil:rgba(36,70,111,.62);
  --veil-soft:rgba(36,70,111,.45);
  --veil-hover:rgba(36,70,111,.30);
}
.darkform .btn--primary .btn__ico{background:rgba(36,70,111,.14)}
.pacc__item > summary:hover{background:#DFE9F5}
.qslide__author{border-top-color:rgba(36,70,111,.2)}
.artcard__media::after{background:rgba(36,70,111,.18)}
.svc-lead__media::after{background:rgba(36,70,111,.25)}

/* ── маски иконок по ключам (дописывает сид страниц) ── */
/* сгенерировано bin/pbn/urist812_2_pages.php: файл перезаписывается целиком, статичную часть правьте в
   bin/pbn/data/urist812/pbn-enhance.css */
i.ic[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.6%22%20stroke-linecap%3D%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M4%2016v-3l2-5h12l2%205v3M4%2016h16M6.5%2016v2H4v-2M20%2016v2h-2.5v-2%22%2F%3E%3Cpath%20d%3D%22M7%2013h3M14%2013h3%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="column"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M3%2021h18M4%206h16M5%203h14M8%206v15M12%206v15M16%206v15%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="doc"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M6%202h8l5%205v15H6z%22%2F%3E%3Cpath%20d%3D%22M14%202v5h5M9%2012h7M9%2016h7%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="family"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%227%22%20r%3D%223.2%22%2F%3E%3Cpath%20d%3D%22M4%2020c0-4%203.6-6.5%208-6.5S20%2016%2020%2020%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="home"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M3%2011%2012%204l9%207M5.5%209.5V20h13V9.5%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="key"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Ccircle%20cx%3D%228%22%20cy%3D%228%22%20r%3D%224.5%22%2F%3E%3Cpath%20d%3D%22M11.2%2011.2%2020%2020M17%2017l2-2M14.5%2014.5l2-2%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="land"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M3%2020h18M3%2020l4-9h10l4%209M9%2011V5h6v6%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="metro"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M3%2018h18M4%2018%207%207l5%206%205-6%203%2011%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="parking"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%2F%3E%3Cpath%20d%3D%22M9%2017V7h3.5a2.8%202.8%200%200%201%200%205.6H9%22%2F%3E%3C%2Fsvg%3E")}
i.ic[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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M12%203%204%206v6c0%204.6%203.4%208%208%209%204.6-1%208-4.4%208-9V6l-8-3Z%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="stamp"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Cpath%20d%3D%22M5%2021h14M6%2018h12v-2H6zM9%2016V9a3%203%200%200%201%206%200v7%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="wallet"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Crect%20x%3D%223%22%20y%3D%226%22%2F%3E%3Cpath%20d%3D%22M3%2010h18M16%2014.5h2%22%2F%3E%3C%2Fsvg%3E")}
i.ic[data-ic="work"]{--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%22square%22%20stroke-linejoin%3D%22miter%22%3E%3Crect%20x%3D%223%22%20y%3D%227%22%2F%3E%3Cpath%20d%3D%22M9%207V4h6v3M3%2012h18%22%2F%3E%3C%2Fsvg%3E")}
