/* Maxi-Plast, вариант А — дополнения к maxi-a.css для данных и штатной разметки DIAFAN.CMS (CMS-интеграция, этап 1).
   Тексты страниц и описаний (редактор CMS), таблицы из текста, путь (show_breadcrumb), постраничная навигация,
   товар без фото, пункт меню родительского раздела, контакты и блоки, которых нет в статическом макете. */

/* Внутренние страницы: карточки каталога на сером фоне, тексты — на белом */
.page-info{background:var(--paper)}
.inner-content .cms-page>h1{margin:0 0 28px;font-size:40px;line-height:1.2}
.inner-clauses:empty{display:none}

/* Путь DIAFAN (.breadcrumb) в стиле макета (.breadcrumbs) */
.breadcrumb{font-size:13px;color:var(--muted);margin:28px 0;line-height:1.6}
.breadcrumb a{color:inherit}
.breadcrumb a:hover{color:var(--accent)}
.product-page .breadcrumb{margin:28px 0}

/* Текст из редактора CMS: абзацы, списки, заголовки, изображения, ссылки */
.cms-text{overflow-wrap:break-word}
.cms-page>p,.cms-page>ul,.cms-page>ol,.cms-page>div>p,.about-cms-text p,.category-text p,.product-intro .cms-text p,.product-extra p{margin:0 0 16px;max-width:72ch;font-size:16px;line-height:1.75}
.product-intro .cms-text p{font-size:15px;color:#4d535b;line-height:1.7;max-width:none}
.cms-page ul,.cms-page ol,.category-text ul,.product-extra ul,.product-intro .cms-text ul{padding-left:22px;line-height:1.7;margin:0 0 16px}
.cms-page h2,.category-text h2,.product-extra h2{font-size:24px;margin:32px 0 10px}
.cms-page h3,.category-text h3,.product-extra h3{font-size:19px;margin:24px 0 8px}
.cms-text img{max-width:100%;height:auto;border-radius:8px}
.cms-text img[style*="float: left"],.cms-text img[style*="float:left"]{margin:0 16px 12px 0}
.cms-text img[style*="float: right"],.cms-text img[style*="float:right"]{margin:0 0 12px 16px}
.cms-text a:not(.button):not(.text-link):not(.all-link){color:var(--accent);text-decoration:underline;text-underline-offset:2px}
/* карточки и навигация каталога внутри show_body — оформление макета, не ссылки текста */
.cms-text .product-card a:not(.button):not(.text-link):not(.all-link),.cms-text .paginator a:not(.button):not(.text-link):not(.all-link),.cms-text .catalog-first-page .section-heading h2 a:not(.button):not(.text-link):not(.all-link),.cms-text .catalog-children a:not(.button):not(.text-link):not(.all-link){color:inherit;text-decoration:none}
.cms-text .product-card h3 a:not(.button):hover{color:var(--accent)}
.cms-text iframe,.product-video iframe,.product-video video{max-width:100%}
.cms-text span[style*="font-size"]{font-size:inherit!important}
.cms-text span[style*="font-family"]{font-family:inherit!important}
.category-text{margin-top:40px}

/* Таблицы из текста CMS (прайс-лист, таблица цен товара): прокрутка внутри контейнера, подсказка — maxi-a.js */
.cms-table table{border:0!important;width:100%;min-width:560px}
.cms-table td,.cms-table th{border:0!important;border-bottom:1px solid var(--line)!important;padding:14px 16px;height:auto!important}
.cms-table th{font-weight:500;color:var(--muted);vertical-align:bottom}
.cms-table th span{display:block;font-size:12.5px;font-weight:400}
.cms-table td{color:var(--ink)}
.cms-table tr:first-child th,.cms-table tr:first-child td{border-top:0}
.cms-table colgroup col{width:auto!important}
.variants .cms-table td:not(:first-child){font-size:16px;white-space:nowrap;text-align:right}
.variants .cms-table th:not(:first-child){text-align:right}
.variants .cms-table td:first-child{white-space:nowrap}
.table-hint,.cms-page>p.table-hint,.cms-text p.table-hint{margin:0;padding:0 0 12px;font-size:12px;line-height:1.5;max-width:none;color:var(--muted)}
.cms-table tr{height:auto!important}

/* Постраничная навигация DIAFAN */
.paginator{display:flex;flex-wrap:wrap;gap:8px;margin:28px 0 0;font-size:15px}
.paginator a,.paginator span{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 12px;border-radius:8px;border:1px solid var(--card-line);background:var(--white)}
.paginator a:hover{border-color:var(--accent);color:var(--accent)}
.paginator .active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}

/* Товар без фото в CMS: нейтральная рамка вместо изображения */
.card-image-empty{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:16/9;background:var(--surface);color:var(--accent);border-radius:8px}
.card-image-empty .icon{width:40px;height:40px;stroke-width:1.4}

/* Пункт меню раздела, в котором открыт товар */
.catalog-sidebar nav a.is-parent-active{background:var(--accent-soft);color:var(--accent);font-weight:600}
.info-nav a.is-parent-active{border-bottom-color:var(--nav-active);color:#fff}

/* Подвал: копирайт из блока CMS */
.footer-copy{font-size:13px;line-height:1.6;color:#aab6c0;margin-top:14px}
.footer-brand .footer-copy p{display:block;margin:0;font-size:13px;color:#aab6c0}

/* Главная: блок о компании с текстом страницы из CMS (без фото макета — фото заказчик ставит в тексте) */
.about-grid-cms{grid-template-columns:minmax(0,1fr)}
.about-cms-text{margin:14px 0 18px}
.about-cms-text p:empty{display:none}

/* Товар: дополнительный текст, видео, похожие товары */
.product-extra{margin-top:40px}
.product-video{margin-top:32px}
.product-video:empty{display:none}
.block_rel:empty{display:none}
.rel-collection{margin-top:56px}
.rel-collection .section-heading{margin-bottom:20px}
.main-photo img{margin:auto}

/* Пара широких карточек без характеристик в CMS: пустой блок характеристик держит строку сетки, кнопка не растягивается */
@media(min-width:1101px){
  .is-pair>.product-card .card-specs:empty{display:block}
  .is-pair>.product-card .card-button{align-self:end}
}

/* Значки Telegram и MAX — появляются, только если ссылки есть в блоке CMS «Телефон» */
.social-tg .icon,.social-max .icon{stroke-width:1.6}

/* Существующий баннер bs id=1 (старая разметка модуля): не шире колонки */
.bs_block img{max-width:100%;height:auto}

@media (max-width:760px){
  .inner-content .cms-page>h1{font-size:27px;margin-bottom:20px}
  .breadcrumb{font-size:12px;margin:14px 0}
  .cms-page>p,.cms-page>div>p,.about-cms-text p,.category-text p,.product-extra p{font-size:15px}
  .cms-table table{min-width:520px}
  .cms-table td,.cms-table th{padding:12px 10px;font-size:13px}
  .variants .cms-table td:not(:first-child){font-size:15px}
  .variants .cms-table tr>:first-child{position:sticky;left:0;z-index:1;background:var(--white)}
  .rel-collection{margin-top:36px}
}

/* ===== Этап 2 (08.10.2026): исправления по аудиту cms_integration_phase1_audit.md ===== */

/* F03: штатный css/default.css подключается до темы (show_css). Его правила .shop{width:95%;border-bottom},
   .shop td{padding:0!important}, .shop_list{margin/padding/border}, .paginator{text-align:center;margin:20px}
   адресно нейтрализуются только для разметки варианта А; сам файл не меняется и остаётся для других функций DIAFAN. */
.product-page .shop.shop_id{width:auto;margin:0;padding:0;border-bottom:0}
.product-page .shop .cms-table td,.product-page .shop .cms-table th{padding:14px 16px!important}
.cms-page .shop_list{margin:0;padding:0;border-bottom:0}
.cms-page .paginator{text-align:left;margin:28px 0 0}
.cms-page .paginator a,.cms-page .paginator span{margin:0}

/* F02: таблицы прайса и текстов CMS. Суммы — по правому краю без переноса (кроме записи «сумма / сумма»),
   на телефоне таблица занимает ширину колонки и сужается до минимальной ширины содержимого: первые суммы видны
   в начальном положении, остальные столбцы — внутренней прокруткой. Значения, строки и объединения ячеек CMS не меняются. */
.cms-table td.num,.cms-table th.num{text-align:right;white-space:nowrap}
.cms-table thead th,.cms-table tr:first-child th{vertical-align:bottom}
@media (max-width:760px){
  .page-info .cms-table table{min-width:0;width:100%}
  .page-info .cms-table th{white-space:normal}
  .page-info .cms-table tr>:first-child{white-space:normal}
  .page-info .cms-table td,.page-info .cms-table th{padding:10px 8px!important;font-size:13px}
  .page-info .cms-table td.multi{white-space:normal;min-width:5.5em}
  .product-page .shop .cms-table td,.product-page .shop .cms-table th{padding:12px 10px!important}
}
/* прайс-лист (страница CMS id=24): четыре существующие таблицы по порядку */
.page-site-24 .cms-table-1 th[rowspan],.page-site-24 .cms-table-2 th[rowspan]{width:1%}
.page-site-24 .cms-table-3 tr>:first-child,.page-site-24 .cms-table-4 tr>:first-child{min-width:7em}
@media (max-width:760px){
  .page-site-24 .cms-table-3 tr>:first-child,.page-site-24 .cms-table-4 tr>:first-child{min-width:0}
}

/* F05: товар без фото — одна колонка, без пустой половины и без чужого изображения */
.product-hero.no-photo{grid-template-columns:minmax(0,1fr)}
.product-hero.no-photo .product-summary{grid-column:1;max-width:760px}

/* F04: увеличение фото и «Примеры наших работ» (H1 как в исходном шаблоне, размер — как у H2 раздела) */
.main-photo-link{display:flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:zoom-in}
.main-photo-link img{max-height:100%}
.works-block{margin-top:56px}
.works-block .works-title{font-size:30px;line-height:1.25;margin:0 0 20px}
.works-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.works-item{display:block;aspect-ratio:1/1;overflow:hidden;border-radius:8px;background:var(--surface);cursor:zoom-in}
.works-item img{width:100%;height:100%;object-fit:cover}
.lightbox{position:fixed;inset:0;z-index:1000;background:rgba(10,16,22,.92);display:flex;align-items:center;justify-content:center;touch-action:pan-y pinch-zoom;overscroll-behavior:contain;-webkit-user-select:none;user-select:none}
.lightbox *{touch-action:pan-y pinch-zoom}
.lightbox-img{-webkit-user-drag:none;-webkit-touch-callout:none}
.lightbox[hidden]{display:none}
.lightbox-stage{position:absolute;inset:56px 64px 64px;display:flex;align-items:center;justify-content:center}
.lightbox-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}
.lightbox-close,.lightbox-arrow{position:absolute;border:0;background:rgba(255,255,255,.12);color:#fff;border-radius:50%;width:48px;height:48px;font-size:30px;line-height:1;display:flex;align-items:center;justify-content:center}
.lightbox-close:hover,.lightbox-arrow:hover{background:rgba(255,255,255,.24)}
.lightbox-close{top:8px;right:8px}
.lightbox-prev{left:8px;top:50%;transform:translateY(-50%)}
.lightbox-next{right:8px;top:50%;transform:translateY(-50%)}
.lightbox-count{position:absolute;top:20px;left:20px;color:#dfe6ed;font-size:14px}
.lightbox-caption{position:absolute;bottom:18px;left:16px;right:16px;text-align:center;color:#dfe6ed;font-size:14px}
html.lightbox-open{overflow:hidden}
@media (max-width:760px){
  .works-block{margin-top:36px}
  .works-block .works-title{font-size:23px}
  .works-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .lightbox-stage{inset:56px 8px 56px}
  .lightbox-arrow{top:auto;bottom:8px;transform:none}
}

/* I06: значок ВКонтакте */
.social-vk .icon{stroke-width:1.6}

/* I05: страницы ошибок 404/403/503 в общем оформлении */
.error-content{padding:28px 0 16px}
.error-code{font-size:15px;font-weight:600;color:var(--accent);margin:0 0 8px}
.error-content h1{margin:0 0 16px;font-size:36px}
.error-text{max-width:60ch;font-size:16px;line-height:1.7;color:#3d434b;margin:0 0 20px}
.error-search{margin:0 0 20px;max-width:480px}
.error-search input[type="text"]{min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;font:inherit}
.error-actions{display:flex;flex-wrap:wrap;gap:12px}
@media (max-width:760px){.error-content h1{font-size:27px}}

/* I05: каталог /shop/ — разделы CMS с товарами */
.catalog-first-page .catalog-section+.catalog-section{margin-top:44px}
.catalog-first-page .section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;margin-bottom:16px}
.catalog-first-page .section-heading h2{font-size:26px;margin:0}
.catalog-first-page .section-heading h2 a:hover{color:var(--accent)}
.cms-text .catalog-first-page .section-heading a:not(.button){color:inherit;text-decoration:none}
.cms-text .catalog-first-page .all-link{color:var(--accent)!important;font-weight:600;display:inline-flex;align-items:center;gap:6px}
.catalog-section-intro{display:flex;gap:16px;align-items:flex-start;margin:0 0 16px}
.catalog-section-img{width:160px;height:auto;border-radius:8px;flex:none}
.catalog-children{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.catalog-children a{display:inline-flex;min-height:40px;align-items:center;padding:0 14px;border:1px solid var(--card-line);border-radius:999px;background:var(--white)}
.cms-text .catalog-children a{color:inherit;text-decoration:none}
@media (max-width:760px){.catalog-first-page .section-heading h2{font-size:21px}.catalog-section-img{width:96px}}

/* Путь на странице товара (телефон): текущий элемент дублирует H1 сразу под ним — скрывается, чтобы цена оставалась
   на первом экране с запасом (ТЗ 4.2); на ПК путь полный. */
@media (max-width:760px){.product-page .breadcrumb>span:last-child:not(:has(a)){display:none}}
/* Разделитель перед скрытым текущим элементом тоже скрывается, путь не заканчивается «/» (обзор stage, О5).
   Разделитель обёрнут в .breadcrumb-sep атрибутом separator в shop_id.php; текущий элемент товара — последний span без ссылки.
   @supports: без :has текущий элемент не скрывается, и разделитель перед ним остаётся. */
@supports selector(:has(a)){@media (max-width:760px){.product-page .breadcrumb>span:nth-last-child(2) .breadcrumb-sep{display:none}}}
/* Описание товара на телефоне не шире колонки: .product-hero здесь flex с align-items:start, и длинное слово
   текста CMS без пробелов растягивало блок за край экрана (обзор stage, Д1). Текст не меняется, слово переносится. */
@media (max-width:760px){.product-intro{min-width:0;max-width:100%}.product-intro .cms-text{overflow-wrap:anywhere}}
/* Таблица вариантов с объединёнными ячейками (телефон): первая ячейка строки там не всегда первый столбец,
   а длинная неразрывная подпись делала закреплённый столбец шире экрана и закрывала суммы (обзор stage, Т1).
   Такая таблица прокручивается целиком, подпись первого столбца переносится. Простые таблицы не меняются. */
@media (max-width:760px){.variants .cms-table:has([rowspan],[colspan]) tr>:first-child{position:static}.variants .cms-table:has([rowspan],[colspan]) td:first-child{white-space:normal}}
/* Подвал на телефоне (пожелание заказчика 17.10.2026, D24): копирайт из блока CMS id=3 — последним блоком, после контактов,
   соцссылок и меню; заголовок «Контакты» контактного блока скрыт визуально, для экранного диктора он остаётся.
   display:contents делает логотип и копирайт отдельными ячейками сетки подвала. Без поддержки остаётся прежний порядок. На ПК без изменений. */
@media (max-width:760px){.footer-brand{display:contents}.footer-brand>a{grid-column:1/-1;order:0;justify-self:start}.footer-brand>.footer-copy{grid-column:1/-1;order:4;margin-top:0;padding-top:16px;border-top:1px solid #ffffff26}.footer-contacts>h2{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}}
/* Описание товара не шире своей колонки на любой ширине: на 761–1100 px длинное слово текста CMS без пробелов
   растягивало сетку .product-summary вместе с заголовком и ценой за край экрана (попутная находка 17.10, «Грядка ДПК»).
   До 760 px то же уже делает правило Д1 выше. Текст CMS не меняется, переносится только не помещающееся слово. */
.product-intro{min-width:0}.product-intro .cms-text{overflow-wrap:anywhere}
