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

/* Иконки в строках MIGX (шаги стоимости, доп. услуги, форматы поездок, соцсети топбара и подвала): значения MIGX
   экранируются, SVG туда нельзя. В строке — ключ icon() макета в data-ic, форма — маской из того же SVG (маски дописывает
   сид страниц), цвет — currentColor обёртки (.step-card__icon и .service-card__icon — зелёный макета, .format-tile__icon —
   белый, ссылки соцсетей — приглушённый с белым при наведении). Размер — инлайн, как width/height у icon($name, $size);
   display:block — как у svg по сбросу макета (img, picture, svg {display:block}). Пустой ключ — иконки нет */
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}
i[data-ic=""]{display:none}

/* Условные блоки макета (if (!empty(...)) в PHP): пустое значение — блока нет.
   page-header.php: лид только при $pageHeaderLede; плашка «Новинка», тема статьи, надзаголовок журнала — при значении */
.lede:empty,
.section__eyebrow:empty,
.tour-card__badge:empty,
.tag-pill:empty{display:none}

/* Пустые наборы строк и списков ресурсов: секции нет. Вызов списка стоит вплотную к тегам сетки — пустой набор даёт
   настоящий :empty. Сетка туров региона, вида и подборки не прячется: вместо неё абзац «туров не нашлось» (data-empty-note,
   текст katalog.php), он виден только при пустой сетке */
.section:has(> .container > .carousel:empty),
.section:has(> .container > .tag-cloud:empty),
.section:has(> .container > .grid-2:empty),
.section:has(> .container > .grid-3:empty),
.section:has(> .container > .grid-4:empty):not(:has([data-empty-note])),
.section:has(> .container > .steps:empty),
.section:has(> .container > .stat-highlight:empty),
.section:has(> .container > .team-grid:empty),
.section:has(> .container > .review-list:empty),
.section:has(> .container > .regions-list:empty),
.section:has(> .container:empty){display:none}
.grid-4:not(:empty) + [data-empty-note]{display:none}

/* Таблицы цен katalog.php по дереву: у региона без подборок таблица пуста — её нет; у группы без единой строки нет и
   блока .price-region; секция без строк цен (регион/вид тура без подборок) не выводится. Фильтр ?country=&type= скрывает
   строки атрибутом hidden — это [hidden] макета, правила ниже его не касаются */
.price-table-wrap:has(tbody:empty){display:none}
.price-region:not(:has(tbody:not(:empty))){display:none}
.section:has(.price-table-wrap):not(:has(tbody:not(:empty))){display:none}

/* o-kompanii.php: чётный блок — achievement--reverse (фото слева). В строке MIGX модификатора нет, строку помечает
   [[+even]] движка — правило макета повторено по атрибуту, с тем же сбросом на планшете */
.achievement[data-even="1"] .achievement__media{order:2}
@media (max-width: 1024px){.achievement[data-even="1"] .achievement__media{order:0}}

/* statya.php: врезка, карточка автора, плашка-факт журнала — только при значении; лид-анонс — else-ветка макета (тела
   статьи нет): при частях статьи или «Тексте» его нет */
.pull-quote:has(p:empty){display:none}
.author-card:has(.author-card__name:empty){display:none}
.stat-tile:has(.stat-tile__value:empty){display:none}
.sidebar-block:has(.sidebar-block__list:empty){display:none}
.article-body:has(> .content-block, > [data-prose]:not(:empty)) > .lede{display:none}

/* «Текст» страницы (поле «Текст»: тексты живого сайта, генерация). Блока статьи у макета нет: текст — колонкой
   .article-body statya.php своей секцией (пустой текст — секции нет) или блоком внутри колонки (статья, программа тура).
   Сброс макета снимает маркеры и отступы списков — возвращаем; таблицы — как .price-table katalog.php, ссылки и цитаты —
   цветами макета */
.section:has(> .container > .article-body[data-prose]:empty){display:none}
.section:has(> .container > .article-body:only-child > [data-prose]:only-child:empty){display:none}
.article-body > [data-prose]:empty{display:none}
[data-prose] > :first-child{margin-top:0}
[data-prose] + .pull-quote,[data-prose] + h2{margin-top:32px}
[data-prose] h2{margin-top:32px}
[data-prose] h3,[data-prose] h4{margin-top:24px}
[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] blockquote{margin:0 0 1em;padding:4px 0 4px 20px;border-left:4px solid var(--color-primary)}
[data-prose] img{height:auto;border-radius:var(--radius);margin:0 0 1em}
[data-prose] iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0;border-radius:var(--radius);margin:0 0 1em}
[data-prose] table{width:100%;border-collapse:collapse;margin:0 0 1.6em;font-size:.9375rem}
[data-prose] th,[data-prose] td{text-align:left;padding:12px 18px;border-top:1px solid var(--color-border);vertical-align:top}
[data-prose] th{background:var(--color-dark);color:#fff;font-family:var(--font-heading);font-weight:600}
[data-prose] tbody tr:nth-child(even){background:var(--color-bg-alt)}
@media (max-width: 640px){[data-prose] table{display:block;overflow-x:auto}}

/* Ответ формы движка ([[+msg]]): заявка — на белой карточке .tour-finder тоном .field__label зелёным макета; подписка — на
   тёмной плашке .newsletter тоном .newsletter__consent; ошибка — тёплым акцентом макета (--color-accent-warm) */
.bf-msg{margin:0 0 12px;font-size:.875rem;font-weight:700;color:var(--color-primary)}
.newsletter .bf-msg{margin:0;font-size:.75rem;color:var(--color-dark-text)}
.bf-msg.bf-err{color:var(--color-accent-warm)}

/* Маски иконок i[data-ic="<ключ>"] по icon() макета — дописывает bin/pbn/classic-tour_2_pages.php при каждом прогоне.
   Файл перезаписывается целиком: статичную часть правьте в bin/pbn/data/classic-tour/pbn-enhance.css */
i[data-ic="backpack"]{--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%208V6a4%204%200%200%201%208%200v2%22%2F%3E%3Cpath%20d%3D%22M6%209h12a2%202%200%200%201%202%202v8a2%202%200%200%201-2%202H6a2%202%200%200%201-2-2v-8a2%202%200%200%201%202-2z%22%2F%3E%3Cpath%20d%3D%22M9%2013h6%22%2F%3E%3Cpath%20d%3D%22M9%209v3%22%2F%3E%3Cpath%20d%3D%22M15%209v3%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="briefcase"]{--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%228%22%20width%3D%2218%22%20height%3D%2212%22%20rx%3D%221.5%22%2F%3E%3Cpath%20d%3D%22M8%208V6a2%202%200%200%201%202-2h4a2%202%200%200%201%202%202v2%22%2F%3E%3Cline%20x1%3D%223%22%20y1%3D%2213%22%20x2%3D%2221%22%20y2%3D%2213%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="camera"]{--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%208h3l1.5-2h7L17%208h3a1%201%200%200%201%201%201v9a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V9a1%201%200%200%201%201-1z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2213.5%22%20r%3D%223.5%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="compass"]{--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%3Cpolygon%20points%3D%2215%209%2013%2013%209%2015%2011%2011%2015%209%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="dzen"]{--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%202.5c-1%204-4.3%207-8%207.7%203.7.7%207%203.7%208%207.7%201-4%204.3-7%208-7.7-3.7-.7-7-3.7-8-7.7z%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="passport"]{--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%226%22%20y%3D%223%22%20width%3D%2212%22%20height%3D%2218%22%20rx%3D%221.5%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%229%22%20r%3D%222.3%22%2F%3E%3Cpath%20d%3D%22M9.3%2014.5c.5-1.6%204.9-1.6%205.4%200%22%2F%3E%3Cline%20x1%3D%229%22%20y1%3D%2218%22%20x2%3D%2215%22%20y2%3D%2218%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="plane"]{--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%22M13.5%203.5%2011%206l1%205-4.5%201L5%209.5%203.5%2011l3%202%201%203.5%201.6-1.5L11%2018l1.7-2.5%205.3%201-1-4.5%202.5-2.2L17%209l-3.5-5.5z%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="route"]{--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%225%22%20cy%3D%226%22%20r%3D%222%22%2F%3E%3Ccircle%20cx%3D%2219%22%20cy%3D%2218%22%20r%3D%222%22%2F%3E%3Cpath%20d%3D%22M5%208v3a4%204%200%200%200%204%204h6a4%204%200%200%201%204%203%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%203%205%206v6c0%204.5%203%207.5%207%209%204-1.5%207-4.5%207-9V6l-7-3z%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="ship"]{--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%2015h16l-2%205H6l-2-5z%22%2F%3E%3Cpath%20d%3D%22M6%2015V6h8l3%209%22%2F%3E%3Cline%20x1%3D%2210%22%20y1%3D%223%22%20x2%3D%2210%22%20y2%3D%226%22%2F%3E%3C%2Fsvg%3E")}
i[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.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.5%22%2F%3E%3Cpath%20d%3D%22M6.5%2012.2%2017%208l-1.7%209.3-4-3-2%202-.3-3z%22%2F%3E%3C%2Fsvg%3E")}
i[data-ic="tent"]{--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%2020%2012%204l9%2016%22%2F%3E%3Cpath%20d%3D%22M12%204v16%22%2F%3E%3Cpath%20d%3D%22M7.5%2020%2012%2012l4.5%208%22%2F%3E%3C%2Fsvg%3E")}
i[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.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%222.5%22%20y%3D%222.5%22%20width%3D%2219%22%20height%3D%2219%22%20rx%3D%225%22%2F%3E%3Cpath%20d%3D%22M12.8%2016.6c-4.3%200-6.8-3-6.9-7.9h2.3c.1%203.5%201.6%205%203%205.3V8.7h2.2v3.1c1.3-.1%202.7-1.5%203.2-3.1h2.1c-.4%202-1.8%203.4-2.8%204%201%20.5%202.6%201.8%203.2%204h-2.4c-.5-1.5-1.7-2.7-3.3-2.9v2.9h-.6z%22%20fill%3D%22%23000%22%20stroke%3D%22none%22%2F%3E%3C%2Fsvg%3E")}
i[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.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%226%22%20width%3D%2218%22%20height%3D%2213%22%20rx%3D%221.5%22%2F%3E%3Cpath%20d%3D%22M3%2010h18%22%2F%3E%3Ccircle%20cx%3D%2216.5%22%20cy%3D%2214%22%20r%3D%221%22%2F%3E%3C%2Fsvg%3E")}

.countries-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.country-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.country-card img{width:100%;height:120px;object-fit:cover;border-radius:8px}.country-card__name{font-weight:600}@media (max-width:900px){.countries-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.countries-grid{grid-template-columns:1fr}}



/* Модальное окно заявки */
.modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(16,18,16,.55)}
.modal.is-open{display:flex}
.modal__dialog{position:relative;width:min(520px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:14px;padding:30px 30px 26px;box-shadow:0 24px 70px rgba(0,0,0,.25)}
.modal__dialog>[data-modal-close]{position:absolute;top:10px;right:12px;width:34px;height:34px;border:0;background:transparent;color:#555;font-size:26px;line-height:1;cursor:pointer}
.modal__dialog h2{margin:0 0 20px;font-size:26px}
.modal .field{margin-bottom:14px}
.modal .field__label{display:block;margin-bottom:6px;font-size:14px;font-weight:600}
.modal input,.modal textarea{width:100%;border:1px solid #d8d3ca;border-radius:8px;padding:12px 14px;font:inherit;background:#fff}
.modal .btn--block{width:100%}
.modal .text-muted{color:#777}
