/* ===================================================================
   adaptive.css — независимый адаптивный слой (грузится ПОСЛЕ vs2026.css)
   Не трогает существующие стили; только чинит мобильную/планшетную вёрстку.
   Точки: <=1024 планшет, <=900 мобильное меню, <=600 узкий телефон.
   =================================================================== */

/* ---------- 0. Анти-переполнение (все размеры) ---------- */
/* только ограничение ширины; height НЕ трогаем, чтобы не перебить точечные размеры логотипа и т.п. */
img,svg,video,canvas,iframe,embed,object{max-width:100%;}

/* Залипание шапки: overflow-x:hidden у корневого блока создаёт scroll-контейнер и ЛОМАЕТ position:sticky.
   Меняем на overflow-x:clip — клипает горизонт так же, но НЕ создаёт scroll-контейнер → sticky работает. */
.max-w-full.overflow-x-hidden{overflow-x:clip !important;}
.stickhdr{position:sticky !important;top:0 !important;z-index:1000 !important;}
/* длинные неразрывные строки не распирают контейнер */
.ftr a,.ftr p,.drop__menu a,.prow__d,.p26desc,.crumbs,.breadcrumbs{overflow-wrap:break-word;word-break:break-word;}

/* бургер, шторка и перенесённый адрес по умолчанию скрыты (десктоп) */
.vsburger{display:none;}
.vsdrawer,.vsdrawer-ov{display:none;}
.top__addr{display:none;}   /* виден только на мобильном (<=900), см. ниже */

/* Чат Jivosite (#jvLabelWrap, z-index 2147483647 — максимум) перекрывает открытые модалки/шторку;
   поднять модалку выше нельзя, поэтому прячем лаунчер чата, пока открыт оверлей. Возвращается при закрытии. */
/* ⚠️ разметка виджета менялась: раньше лаунчер был #jvLabelWrap, сейчас #jivo-iframe-container —
   перечисляем оба + сам <jdiv>, иначе чат снова начнёт перекрывать шторку и модалки */
body:has(.vspm-ov.open) #jvLabelWrap,      body:has(.vsdrawer.open) #jvLabelWrap,
body:has(.vscart-ov.open) #jvLabelWrap,    body:has(.modal.open) #jvLabelWrap,
body:has(.vspm-ov.open) #jivo-iframe-container,   body:has(.vsdrawer.open) #jivo-iframe-container,
body:has(.vscart-ov.open) #jivo-iframe-container, body:has(.modal.open) #jivo-iframe-container,
body:has(.vspm-ov.open) jdiv,   body:has(.vsdrawer.open) jdiv,
body:has(.vscart-ov.open) jdiv, body:has(.modal.open) jdiv,
body:has(.vslb.open) #jvLabelWrap, body:has(.vslb.open) #jivo-iframe-container, body:has(.vslb.open) jdiv{
  opacity:0 !important;pointer-events:none !important;visibility:hidden !important;}

/* ---------- 1. Мобильное меню (шторка) ---------- */
.vsburger{
  flex-direction:column;justify-content:center;gap:5px;
  width:44px;height:44px;flex:0 0 auto;
  border:1.5px solid rgba(255,255,255,.28);border-radius:12px;
  background:transparent;cursor:pointer;padding:0 11px;
}
.vsburger span{display:block;height:2.5px;width:100%;background:#e8edf2;border-radius:2px;transition:.2s;}
.vsburger.open span:nth-child(1){transform:translateY(7.5px) rotate(45deg);}
.vsburger.open span:nth-child(2){opacity:0;}
.vsburger.open span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg);}

.vsdrawer-ov{position:fixed;inset:0;background:rgba(8,15,25,.55);z-index:99990;opacity:0;visibility:hidden;transition:.25s;}
.vsdrawer-ov.open{opacity:1;visibility:visible;}
.vsdrawer{
  position:fixed;top:0;right:0;height:100%;width:min(87vw,368px);
  background:#fff;z-index:99991;transform:translateX(100%);
  transition:transform .28s ease;display:flex;flex-direction:column;
  box-shadow:-14px 0 44px -22px rgba(0,0,0,.55);
}
.vsdrawer.open{transform:none;}
.vsdrawer__hd{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid #eef1f4;font-family:'Exo 2',sans-serif;font-weight:800;font-size:18px;color:#12202c;flex:0 0 auto;}
.vsdrawer__x{border:0;background:none;font-size:24px;line-height:1;cursor:pointer;color:#5a6672;padding:0 4px;}
.vsdrawer__body{overflow-y:auto;padding:8px 0 40px;-webkit-overflow-scrolling:touch;flex:1 1 auto;}
.vsdrawer__body a{color:#1a2733;text-decoration:none;display:block;}
.vsdrawer__search{padding:12px 18px 6px;}
.vsdrawer__search form{display:flex;gap:6px;}
.vsdrawer__search input{flex:1;min-width:0;padding:11px 13px;border:1.5px solid #dfe4ea;border-radius:11px;font-size:15px;}
.vsdrawer__search button{padding:11px 15px;background:#ff7f00;color:#fff;border:0;border-radius:11px;font-weight:700;cursor:pointer;white-space:nowrap;}
.vsacc{border-bottom:1px solid #f2f4f6;}
.vsacc__t{width:100%;text-align:left;background:none;border:0;padding:14px 18px;font-size:15.5px;font-weight:700;color:#12202c;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;}
.vsacc__t:after{content:'▾';color:#9aa6b1;transition:.2s;font-size:13px;}
.vsacc.open .vsacc__t:after{transform:rotate(180deg);}
.vsacc__c{display:none;padding:2px 18px 12px;}
.vsacc.open .vsacc__c{display:block;}
.vsacc__c a{padding:9px 0 9px 13px;font-size:14px;border-left:2px solid #eef1f4;color:#33414d;}
.vsacc__c a:hover{color:#ff7f00;}
.vsacc__c a b{font-weight:600;}
.vsdrawer__links{padding:4px 0;border-top:1px solid #f2f4f6;}
.vsdrawer__links a{padding:13px 18px;font-size:15px;font-weight:600;border-bottom:1px solid #f7f8fa;}
.vsdrawer__cta{padding:14px 18px;}
.vsdrawer__cta a{display:block;text-align:center;background:#ff7f00;color:#fff;font-weight:700;padding:13px;border-radius:12px;font-size:15px;}
.vsdrawer__tel{padding:16px 18px;background:#f7f9fb;}
.vsdrawer__tel a{font-family:'Exo 2',sans-serif;font-size:21px;font-weight:800;color:#12202c;}
.vsdrawer__tel span{font-size:12px;color:#7a8894;display:block;margin-top:2px;}
.vsdrawer__soc{display:flex;gap:12px;padding:14px 18px 4px;}
.vsdrawer__soc a{width:38px;height:38px;}
.vsdrawer__soc img{width:100%;height:100%;object-fit:contain;}

/* ---------- 2. Шапка на планшете/мобильном (<=900) ---------- */
@media(max-width:900px){
  /* верхняя плашка: убрать десктоп-навигацию (уходит в шторку), оставить город + адрес */
  .top .drop,.top__links,.top__badges{display:none !important;}
  .top .wrap{padding:7px 14px;justify-content:flex-start;gap:3px 12px;flex-wrap:wrap;align-items:center;}
  .top__city{font-size:13px;}
  /* адрес, перенесённый JS-ом из основного ряда наверх */
  .top__addr{display:inline-flex;flex-wrap:wrap;gap:2px 12px;font-size:12px;color:var(--mut,#9fb0bd);line-height:1.35;}
  .top__addr a{color:inherit;}
  .top__addr a.m{color:#ff9a3d;font-weight:600;}

  /* основной ряд: логотип + телефон + корзина + бургер, поиск и кнопка — своими строками */
  .hd .wrap{display:flex !important;flex-wrap:wrap !important;gap:9px 10px !important;padding:9px 14px !important;align-items:center;}
  .hd .wrap>*{min-width:0;}                     /* КЛЮЧ: разрешаем детям сжиматься, иначе распирают документ */
  .hd__logo{order:1;flex:0 0 auto;max-width:52vw;}
  .hd__logo img{height:34px !important;width:auto !important;max-height:34px;}
  .hd__addr{display:none !important;}            /* адрес уехал в верхнюю плашку */
  .hd__tel{order:2;margin-left:auto;text-align:right;flex:0 1 auto;}
  .hd__tel b{font-size:15.5px;white-space:nowrap;}
  .hd__tel span{font-size:10.5px;}
  .hd__cart{order:3;flex:0 0 auto;}
  .vsburger{display:inline-flex;order:4;}
  .hd__search{order:5;flex:1 1 100% !important;max-width:100% !important;display:flex;}
  .hd__search input{flex:1 1 auto;min-width:0;}
  .hd__btn.js-vs-price{order:6;flex:1 1 100%;text-align:center;}

  /* всплывающие меню города/корзины не должны вылезать за экран */
  .drop__menu,.vsask,.vspm{max-width:calc(100vw - 24px);}
  /* таблицы характеристик — горизонтальный скролл внутри блока (только на мобильном) */
  .p26desc table,.tab-content table,.article table,.content table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
  /* компактная липкая шапка при прокрутке: прячем плашку/поиск/кнопку, остаётся логотип+телефон+корзина+бургер */
  body.vs-scrolled .top,
  body.vs-scrolled .hd__search,
  body.vs-scrolled .hd__btn.js-vs-price{display:none !important;}
  /* в компактном режиме шапка выходит из потока, её место держит распорка (adaptive.js) —
     иначе схлопывание поднимает весь список товаров и он «проскальзывает» под пальцем */
  body.vs-scrolled .stickhdr{position:fixed !important;top:0;left:0;right:0;background:#fff;}
  .vs-hdr-spacer{height:0;flex:none;}
  .hd .wrap{transition:padding .15s ease;}

  /* сетки: дети не распирают контейнер + треки minmax(0,1fr) вместо auto */
  .ftr__grid>*,.plist>*,.p7grid>*,.prow,.prow__b,.prow__d,.sub-photo>*,.scard{min-width:0;}
  .plist{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .sub-photo{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}
  .scard__im img,.scard img{width:100%;height:auto;}
  .ftr__grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}

/* ---------- 3. Узкий телефон (<=600) ---------- */
@media(max-width:600px){
  .wrap,.wrap2{padding-left:14px;padding-right:14px;}
  /* подвал в одну колонку */
  .ftr__grid{grid-template-columns:1fr !important;gap:22px;}
  .ftr__bottom,.ftr__legal{flex-direction:column;gap:8px;align-items:flex-start;text-align:left;}
  /* листинг: одна колонка карточек, чтобы не были крошечными */
  .plist{grid-template-columns:1fr !important;}
  /* подкатегории: 2 колонки */
  .sub-photo{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  /* заголовки не переполняют */
  h1,.title-h2{font-size:24px;line-height:1.2;word-break:break-word;}
}

/* ---------- 3b. Компактная шапка на телефоне (<=560) ---------- */
@media(max-width:560px){
  /* ряд 1: логотип слева, корзина+бургер справа; телефон/поиск/кнопка — своими строками */
  .hd__logo{order:1;}
  .hd__cart{order:2;margin-left:auto;}
  .vsburger{order:3;margin-left:0;}
  .hd__tel{order:4;margin-left:0 !important;flex:1 1 100%;text-align:left;}
  .hd__tel b{font-size:16px;}
  .hd__search{order:5;}
  .hd__btn.js-vs-price{order:6;}
}

/* ---------- 4. Совсем узко (<=380) ---------- */
@media(max-width:380px){
  .hd__tel b{font-size:14px;}
  .hd__logo img{height:30px;}
}

/* ===================================================================
   ПАКЕТ 2026-07-31 (m6): таблицы в контенте, формы-конфигураторы,
   размеры шрифтов под iOS, тач-цели, нижнее уведомление, плитки
   =================================================================== */

/* --- 5. Таблицы в контенте: горизонтальный скролл вместо обрезки --- */
/* JS оборачивает широкие таблицы в .vs-tblwrap; здесь только оформление */
.vs-tblwrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
@media(max-width:900px){
  .vs-tblwrap{position:relative;margin:0 0 14px;border-radius:10px;}
  .vs-tblwrap table{margin:0 !important;min-width:520px;}
  .vs-tblwrap:after{content:'';position:absolute;top:0;right:0;bottom:0;width:22px;pointer-events:none;
    background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.92));border-radius:0 10px 10px 0;}
  .vs-tblwrap.vs-tblend:after{opacity:0;}
  /* контентные обёртки не должны распираться содержимым */
  /* !important: у SEO-блоков (.vsx) и статей (.vart) свой инлайн <style> в контенте — он идёт после нашего файла */
  .vsx,.vart,.p26desc,.tab-content,.item-page,.vsn-article__body,.article,.content{max-width:100% !important;min-width:0 !important;}
  .vsx>*,.vart>*{max-width:100% !important;}
  .vs-tblwrap{max-width:100% !important;width:100%;}
}

/* --- 6. Формы и конфигураторы --- */
@media(max-width:900px){
  /* iOS зумит страницу при фокусе, если шрифт поля < 16px */
  input[type=text],input[type=tel],input[type=email],input[type=number],input[type=search],
  input:not([type]),select,textarea{font-size:16px !important;}
  select{padding-right:34px !important;background-position:right 12px center;text-overflow:ellipsis;}
  /* чекбоксы опций: подпись в 2 строки больше не наезжает на соседнюю */
  .cfg label.chk,.ppkopts label,.chk{display:flex !important;align-items:flex-start;gap:9px;
    line-height:1.35 !important;padding:7px 0;min-height:auto !important;font-size:13px;}
  .cfg label.chk input,.ppkopts label input,.chk input{flex:0 0 auto;margin:1px 0 0;width:18px;height:18px;}
  .ppkopts{display:block;}
  /* поля конфигуратора на всю ширину, кнопка — крупная тач-цель */
  .cfg .r2,.cfg .r3{grid-template-columns:1fr !important;}
  .cfg .go,.cfg button.go{width:100%;min-height:50px;font-size:15.5px;}
  .cfg .hfile2{min-height:48px;}
  .vs-filelist__item{font-size:13px;padding:9px 11px;}
  .vs-filelist__rm{min-width:30px;min-height:30px;}
}

/* --- 7. Читаемость мелкого текста --- */
@media(max-width:900px){
  .hd__tel span,.top__addr,.prow__badge{font-size:11.5px !important;}
  small,.agree,small.agree,.vs-choice__hint{font-size:12px !important;line-height:1.45;}
  .dpf__lbl{font-size:11.5px !important;}
}

/* --- 8. Тач-цели не меньше ~44px --- */
@media(max-width:900px){
  .vsdrawer__x{width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:26px;margin-right:-8px;}
  .vsdrawer__body a,.vsacc__c a{min-height:40px;display:flex;align-items:center;}
  .top__addr a{display:inline-block;padding:3px 0;}
  .vsn-article__back,.obj-link{display:inline-block;padding:6px 0;}
  .hd__cart{min-width:46px;justify-content:center;}
  .heroDots i{width:12px;height:12px;}
  .heroDots{gap:10px;padding:6px 0;}
}

/* --- 9. Плавающие элементы внизу: cookie + уведомление + чат Jivo лежали друг на друге.
       Раскладываем стопкой: чат (правый нижний угол) → уведомление → cookie. --- */
@media(max-width:900px){
  /* на всю ширину, но ВЫШЕ лаунчера чата — иначе он закрывает крестик закрытия */
  #vsRecon{left:10px !important;right:10px !important;bottom:96px !important;
    padding:10px 36px 10px 13px !important;font-size:12.5px !important;line-height:1.4 !important;border-radius:12px !important;}
  #vsRecon button,#vsRecon .x,#vsRecon [onclick]{min-width:34px;min-height:34px;}
  #coockie-modal{bottom:112px !important;}
}
@media(max-width:560px){
  #vsRecon{font-size:12px !important;padding:9px 34px 9px 12px !important;}
}

/* --- 10. Плитки подкатегорий: ровная сетка, картинки одной высоты --- */
@media(max-width:900px){
  .sub-photo{align-items:stretch;gap:12px;}
  .sub-photo .scard,.scard{display:flex;flex-direction:column;height:100%;}
  .scard__im,.scard .im{aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;overflow:hidden;}
  .scard__im img,.scard img{width:100%;height:100%;object-fit:contain;}
}

/* --- 11. Мелочи --- */
@media(max-width:900px){
  /* якорные переходы не должны прятать заголовок под липкой шапкой */
  :target,h1,h2,.psec{scroll-margin-top:120px;}
  /* длинные ссылки/коды в описаниях */
  .p26desc a,.vart a,.vsx a{overflow-wrap:anywhere;}
  /* списки в описаниях: текст не заезжает под маркер */
  .p26desc ul,.vart ul,.vsx ul{padding-left:20px;}
  .p26desc li,.vart li,.vsx li{padding-left:2px;}
}

/* --- 12. Пакет 2: блок подбора привода, счётчики, ссылки в шапке --- */
@media(max-width:900px){
  /* «Подбор привода» на категории электроприводов: строка не сжималась и выпирала за экран */
  .vssel,.vssel__row{max-width:100%;min-width:0;}
  .vssel__row{flex-wrap:wrap !important;gap:8px;}
  .vssel__row>*,.vssel label,.vssel select,.vssel input{flex:1 1 100% !important;min-width:0 !important;max-width:100% !important;width:100% !important;box-sizing:border-box;}
  /* счётчики товаров в плитках подкатегорий */
  .scard span,.sub-photo span,.scard__n{font-size:11.5px !important;}
  /* адрес и почта в верхней плашке — нормальная зона нажатия */
  .top__addr a,.hd__mail,.top__addr a.m{display:inline-block;padding:5px 0;min-height:32px;line-height:22px;}
}

/* --- 13. Панель фильтра каталога (#brzFilter): строка «счётчик + сортировка + сброс»
       была nowrap (627px) и распирала блок на телефоне --- */
@media(max-width:900px){
  #brzFilter{max-width:100% !important;min-width:0;overflow:hidden;}
  #brzFilter .bf-head{flex-wrap:wrap !important;gap:8px;}
  #brzFilter .bf-title{flex:1 1 100%;min-width:0;}
  #brzFilter .bf-right{flex:1 1 100% !important;width:100%;max-width:100%;min-width:0;
    flex-wrap:wrap !important;justify-content:flex-start;gap:8px;}
  #brzFilter .bf-right>*{min-width:0;max-width:100%;}
  #brzFilter .bf-sort,#brzFilter select{flex:1 1 auto;min-width:0;max-width:100%;}
  #brzFilter .bf-g{flex-wrap:wrap !important;}
  #brzFilter .bf-l{flex:1 1 100%;min-width:0;}
  #brzFilter .bf-chips{max-width:100%;min-width:0;}
  #brzFilter .bf-chips button,#brzFilter .bf-chips label{min-height:34px;}
}

/* --- 14. Мелочи шторки: строка поиска целиком помещается --- */
@media(max-width:900px){
  .vsdrawer__search input{padding:11px 10px;}
  .vsdrawer__search button{padding:11px 13px;font-size:14px;}
}

/* --- 15. Список опций конфигуратора.
       В базовом CSS у .chk стоит margin-bottom:-6px — при подписи в две строки соседние
       пункты наезжали друг на друга (шаг 21px при высоте бокса 27px). --- */
.cfg .ppkopts label,.cfg label.chk,.ppkopts label.chk{
  align-items:flex-start;line-height:1.35;padding:4px 0;margin-bottom:2px !important;}
.cfg .ppkopts label input,.cfg label.chk input{margin-top:1px;flex:0 0 auto;}

/* --- 16. Таблица характеристик товара: на телефоне «параметр | значение» не помещается
       в две колонки, поэтому разворачиваем её в карточки. --- */
@media(max-width:700px){
  .vs-spec table{min-width:0 !important;display:block;}
  .vs-spec tbody,.vs-spec tr,.vs-spec th,.vs-spec td{display:block;width:auto !important;}
  .vs-spec tr{border:1px solid #e2e9f0;border-radius:10px;margin:0 0 8px;overflow:hidden;background:#fff;}
  .vs-spec th{border:0 !important;background:#f2f8fd !important;font-size:12.5px;padding:8px 12px 6px;
    color:#14456f;font-weight:700;text-transform:uppercase;letter-spacing:.02em;}
  .vs-spec td{border:0 !important;padding:8px 12px 10px;font-size:14px;line-height:1.45;}
  .vs-spec h3{font-size:16px;}
}

/* --- 17. Описание товара: в vs2026.css у .psec .txt стоит max-width:920px (для читаемости текста),
       из-за чего широкие таблицы характеристик обрывались и справа зияла пустота.
       Текст оставляем узким, таблицы/схемы разрешаем во всю ширину. --- */
.prod26 .psec .txt,.product-page .psec .txt{max-width:100% !important;}
.prod26 .psec .txt>p,.prod26 .psec .txt>ul,.prod26 .psec .txt>ol,
.prod26 .psec .txt>h2,.prod26 .psec .txt>h3,.prod26 .psec .txt>h4,
.product-page .psec .txt>p,.product-page .psec .txt>ul,.product-page .psec .txt>ol{max-width:920px;}
.prod26 .psec .txt table,.prod26 .psec .txt .tablewrapper,
.product-page .psec .txt table,.product-page .psec .txt .tablewrapper{width:100%;max-width:100%;}
.prod26 .psec .txt .tablewrapper{overflow-x:auto;}
/* пустые абзацы/блоки в импортированных описаниях не должны давать вертикальных дыр */
.psec .txt p:empty,.psec .txt div:empty,.psec .txt h2:empty,.psec .txt h3:empty{display:none;}

/* --- 18. Компактный блок «Подбор и заказ»: правая колонка была заметно длиннее фото,
       из-за чего под картинкой оставалась пустая полоса. --- */
.cfg h3{margin-bottom:6px !important;}
.cfg label{margin-top:8px;}
.cfg .drv-specs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:8px 0;}
.cfg .drv-spec{padding:7px 10px !important;font-size:12.5px !important;margin:0 !important;}
.cfg input[type=text],.cfg input[type=number],.cfg select{padding:9px 11px !important;}
.cfg .chips2{gap:5px;margin:4px 0 2px;}
.cfg .chips2 button{padding:6px 12px !important;font-size:12.5px !important;}
.cfg .hfile2{padding:9px 12px !important;}
.cfg .r3{margin:8px 0 6px !important;}
.cfg small{font-size:11.5px !important;line-height:1.35 !important;display:block;margin-top:6px;}
.cfg .p26quick{margin-top:8px !important;gap:6px !important;}
.cfg .go{margin-top:8px !important;}
/* на телефоне колонки идут друг под другом — там компактность не нужна так сильно */
@media(max-width:900px){
  .cfg .drv-specs{grid-template-columns:1fr;}
  .cfg .chips2 button{padding:9px 14px !important;font-size:13.5px !important;}
}

/* --- 19. В разделе электроприводов было три блока подбора подряд: новый фасетный #brzFilter,
       старый подборщик .vssel и старый фильтр .vsflt (оба строит vs2026.js).
       Оставляем только актуальный — старые скрываем (сам vs2026.js не трогаем, его правят параллельно). --- */
.vsflt,.vssel,#vsfltCnt{display:none !important;}

/* --- 20. Количество и кнопка заказа — в одну строку (экономит высоту правой колонки) --- */
.cfg .r3.cfg__buy,.cfg .cfg__buy{display:grid !important;grid-template-columns:112px 1fr !important;gap:10px;align-items:end;margin:10px 0 0 !important;}
.cfg .cfg__buy .go{margin:0 !important;height:100%;min-height:46px;}
.cfg .cfg__price{margin-bottom:2px;}
.cfg .cfg__price small,.cfg .cfg__price span.hint{font-size:11.5px;line-height:1.3;}
@media(max-width:560px){
  /* на узком экране кнопка не должна ломаться на две строки */
  .cfg .r3.cfg__buy,.cfg .cfg__buy{grid-template-columns:84px 1fr !important;gap:8px;}
  .cfg .cfg__buy .go{font-size:14px !important;padding:12px 8px !important;white-space:nowrap;
    height:auto !important;min-height:48px;line-height:1.2;}
}

/* --- 21. Левая колонка карточки была короче правой — под фото зияла пустота.
       Добавлен компактный блок условий (XSL, .p7trust) + характеристики привода в три колонки. --- */
.cfg .drv-specs{grid-template-columns:repeat(3,minmax(0,1fr));}
.p7trust{display:grid;gap:8px;margin:12px 0 0;}
.p7trust span{display:block;background:#f7fafc;border:1px solid #e6ecf1;border-radius:10px;padding:9px 12px;font-size:12.5px;color:#5b636c;line-height:1.35;}
.p7trust b{display:block;color:#14456f;font-size:13px;font-weight:700;margin-bottom:1px;}
@media(max-width:900px){
  .cfg .drv-specs{grid-template-columns:1fr;}
  .p7trust{grid-template-columns:1fr;margin-top:10px;}
}

/* --- 22. Просмотр чертежей и схем: раньше клик по картинке в описании уводил в новую вкладку.
       Теперь открывается наложение поверх страницы (без перехода), с листанием и закрытием по Esc. --- */
.vslb{position:fixed;inset:0;z-index:100000;background:rgba(9,17,26,.9);display:none;align-items:center;justify-content:center;padding:32px 16px;}
.vslb.open{display:flex;}
.vslb__img{max-width:min(96vw,1400px);max-height:88vh;object-fit:contain;border-radius:10px;background:#fff;
  box-shadow:0 30px 80px -30px rgba(0,0,0,.8);cursor:zoom-out;transition:transform .15s ease;}
.vslb__img.zoom{cursor:grab;max-width:none;max-height:none;}
.vslb__x{position:absolute;top:14px;right:16px;width:46px;height:46px;border:0;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;font-size:26px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.vslb__x:hover{background:rgba(255,255,255,.26);}
.vslb__nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border:0;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;font-size:30px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.vslb__nav:hover{background:rgba(255,255,255,.26);}
.vslb__nav--prev{left:14px;} .vslb__nav--next{right:14px;}
.vslb__cnt{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);color:#e8eef4;font-size:13px;
  background:rgba(0,0,0,.4);border-radius:100px;padding:5px 14px;}
.vslb__hint{position:absolute;top:18px;left:50%;transform:translateX(-50%);color:#cfdae4;font-size:12.5px;opacity:.85;}
/* курсор-лупа на кликабельных схемах */
.psec .txt a[target="_blank"]>img,.psec .txt img.vslb-able{cursor:zoom-in;}
@media(max-width:700px){
  .vslb{padding:14px 8px;}
  .vslb__nav{width:44px;height:44px;font-size:26px;}
  .vslb__hint{display:none;}
}

/* при открытом просмотре схем прячем нижние плашки — иначе они лежат поверх затемнения */
body:has(.vslb.open) #vsRecon,body:has(.vslb.open) #coockie-modal{opacity:0 !important;pointer-events:none !important;visibility:hidden !important;}
/* стрелки листания заметнее на тёмном фоне */
.vslb__nav{background:rgba(255,255,255,.2);backdrop-filter:blur(2px);}
.vslb__x{background:rgba(255,255,255,.2);}

/* ===================================================================
   ПАКЕТ m8 (26.08.2026) — по письму Яндекс.Вебмастера
   «сайт признан недостаточно адаптированным под мобильные устройства».
   Два подтверждённых замерами критерия: (1) текст мельче 12px,
   (2) кликабельные элементы ниже 24px. Переполнения по ширине нет.
   =================================================================== */
@media(max-width:900px){

  /* 1. ЧИТАЕМОСТЬ. В пакете m6 мелкий текст был поднят лишь до 11.5px —
        это всё ещё ниже порога, который Яндекс считает читаемым. Поднимаем до 12.5px. */
  .hd__tel span,.top__addr,.prow__badge,.dpf__lbl,
  .scard span,.sub-photo span,.scard__n,
  .cfg small,.cfg .cfg__price small,.cfg .cfg__price span.hint,
  .vslb__hint,.vsdrawer__tel span{font-size:12.5px !important;}
  small,.agree,small.agree,.vs-choice__hint{font-size:12.5px !important;line-height:1.5;}

  /* описание товара в плитке листинга было 11px */
  .prow__d,.prow__d *{font-size:13px !important;line-height:1.45 !important;}
  .prow__buy,.prow__buy *{font-size:13px !important;}

  /* подвал: ссылки городов и нижняя строка */
  .ftr__geolinks,.ftr__geolinks a,.ftr__bottom,.ftr__bottom a,
  .ftr__legal,.ftr__legal a{font-size:13px !important;line-height:1.5 !important;}

  /* 2. ТАЧ-ЦЕЛИ. Норма — не меньше 24px по короткой стороне; берём запас до 32-36px.
        Правим только вертикальный ритм (padding/min-height), сетку не трогаем. */
  .ftr__geolinks a{display:inline-flex;align-items:center;min-height:32px;padding:4px 2px;}
  .ftr__grid a,.ftr__col a,.ftr__nav a{display:flex;align-items:center;min-height:34px;padding:3px 0;}
  .ftr__bottom a,.ftr__legal a{display:inline-flex;align-items:center;min-height:30px;padding:3px 0;}
  .dealer__row a{display:inline-flex;align-items:center;min-height:32px;padding:5px 4px;}

  /* хлебные крошки, город в шапке, «Подробнее…», телефон в подвале */
  .vs-breadcrumbs a,.crumbs a,.breadcrumbs a{display:inline-flex;align-items:center;min-height:30px;padding:2px 0;}
  .top__city{display:inline-flex !important;align-items:center;min-height:30px;padding:2px 4px;}
  a[href^="tel:"]{display:inline-flex;align-items:center;min-height:30px;}
  .ftr a[href^="tel:"],.ftr a[href^="mailto:"]{min-height:32px;}

  /* 3. Таблица характеристик НЕ нужна в плитке листинга: описание там обрезано
        до двух строк, а таблица давала сотни узлов текста по 11px в каждой карточке. */
  .prow .av-spec,.prow__d table,.prow__d .vs-tblwrap{display:none !important;}
}

/* ===================================================================
   ФИКС ПРОКРУТКИ МЕНЮ-ШТОРКИ (26.08.2026, баг с телефона от владельца)
   Симптом: при раскрытом аккордеоне «Бренды» список обрывается на VKT
   и не листается вниз.
   Причина: .vsdrawer__body — flex-элемент, а у flex-элемента min-height
   по умолчанию AUTO, поэтому он не сжимается до высоты экрана, а вырастает
   по содержимому (1489px при экране 844px). overflow-y:auto при этом
   бесполезен — скроллить внутри нечего, а низ уезжает за край шторки.
   Тот же класс бага, что и min-width:0 в шапке, только по вертикали.
   ВТОРАЯ, ГЛАВНАЯ причина: adaptive.js ставит шторке ИНЛАЙНОВЫЙ display:block
   (строка «ov.style.display = drawer.style.display = 'block'»), чтобы перебить
   базовое .vsdrawer{display:none}. Инлайн-стиль сильнее обычного правила, поэтому
   display:flex из файла не применялся вовсе — колоночной раскладки не было,
   flex:1 1 auto у .vsdrawer__body игнорировался, и блок рос по содержимому.
   Возвращаем флекс через !important (важность CSS !important выше инлайна). */
.vsdrawer.open{display:flex !important;flex-direction:column !important;}
.vsdrawer__body{min-height:0 !important;overscroll-behavior:contain;}
.vsdrawer{max-height:100%;overflow:hidden;}
/* dvh корректнее на мобильных: адресная строка меняет высоту вьюпорта */
@supports (height:100dvh){ .vsdrawer{height:100dvh;} }

/* --- m8, добор: главная и контентные списки ------------------------ */
@media(max-width:900px){
  /* блок категорий на главной (cat-block) и плитки — свой инлайн-CSS, нужен !important */
  .cb__o,.cb__o span,.cb__o b,.cb__o em,.cb__t,.cb__t i,
  .ptile__t,.news time,.new time{font-size:12.5px !important;line-height:1.45 !important;}
  .top__addr,.top__addr a,.hd__tel span,.vspm__agree{font-size:12.5px !important;}

  /* заголовок товара в плитке листинга — кликабелен, но был высотой 16px */
  .prow__t,.prow__t a{display:inline-flex;align-items:center;min-height:26px;}
  /* списки ссылок в SEO-блоках и статьях (.avseo, .vsx, .vart, описание товара) */
  .avseo li>a,.vsx li>a,.vart li>a,.p26desc li>a,.psec .txt li>a{
    display:inline-flex;align-items:center;min-height:28px;padding:2px 0;}
}

/* --- m8, финальный добор ------------------------------------------- */
@media(max-width:900px){
  .bcard,.bcard span,.bcard small{font-size:12.5px !important;line-height:1.4 !important;}
  .posm,.pbadge,.tagx,.cfg .r3,.dl,.dl dt,.dl dd{font-size:12.5px !important;}
  .morelink,a.morelink{display:inline-flex;align-items:center;min-height:28px;}
  .del,a.del,button.del{min-width:28px;min-height:28px;display:inline-flex;align-items:center;justify-content:center;}
  .shp__fig a,.shp__fig>a{display:inline-flex;align-items:center;min-height:26px;}
  p>a{min-height:24px;}
}

/* ===================================================================
   ПАКЕТ m9 (29.08.2026) — по жалобам клиентов «с телефона не могу
   отправить заявку». Замеры показали две причины:
   (1) нижние плашки («сайт обновляется», cookie) и лаунчер чата лежат
       поверх страницы и перехватывают тап по кнопкам и вариантам заказа;
   (2) остаточные пороги Яндекса: текст <12px и кликабельные <24px.
   =================================================================== */
@media(max-width:900px){

  /* --- 1. Текст мельче 12px --- */
  .crt-badge,.crt-card__pdf,.vsp-badge,.fac-badge,.vb__k,.cb__kick,.tdf2__t{font-size:12px !important;}
  .cfg label,.p7grid label,.tdp__s b,.tdp__spec b{font-size:12px !important;}

  /* --- 2. Кликабельные мельче 24px --- */
  /* сами кружки/галочки в формах: были 12x12 — попасть пальцем трудно */
  #ordForm input[type=radio],#ordForm input[type=checkbox],
  form input[type=radio],form input[type=checkbox]{width:24px !important;height:24px !important;flex:0 0 auto;}
  /* ссылки внутри абзацев SEO-текста стояли вплотную — разводим по вертикали */
  .vseo p,.vseo li{line-height:1.75 !important;}
  .vseo a{padding:3px 0;display:inline-block;}
  .coockie-modal-body a{min-height:24px;display:inline-flex;align-items:center;}

  /* --- 3. Cookie-баннер: компактно и с явной кнопкой «Принять» --- */
  #coockie-modal{width:auto !important;left:10px !important;right:10px !important;}
  .coockie-modal-header{padding:9px 12px !important;}
  .coockie-modal-header h3{font-size:14px !important;line-height:1.3 !important;}
  .coockie-modal-body{padding:8px 12px 11px !important;display:flex;align-items:center;
    justify-content:space-between;gap:12px;}
  .close-coockie-modal{min-width:34px;min-height:34px;display:flex;align-items:center;justify-content:center;}
  .vs-cook-ok{border:0;border-radius:9px;background:#0170b9;color:#fff;font:600 13px/1 inherit;
    padding:10px 18px;min-height:34px;cursor:pointer;white-space:nowrap;}

  /* --- 4. Плашки не лезут на страницы оформления заказа --- */
  body.vs-order #vsRecon,body.vs-order #coockie-modal{display:none !important;}
}

/* --- m9b: остаток кликабельных ниже 24px (замер 29.08.2026) ---
   ⚠ поле-ловушку для ботов (input[name=phone]) НЕ трогаем: она должна
   оставаться незаметной, иначе клиенты её заполнят и заявки потеряются. */
@media(max-width:900px){
  .vsn-cats a{min-height:24px;display:inline-flex;align-items:center;padding:3px 0;}
  .vs-info__v a{min-height:24px;display:inline-flex;align-items:center;}
  .tdp__fig a{min-height:24px;display:block;}
  .cfg label,.p7grid label{min-height:24px;display:flex;align-items:center;}
  .agreement label,label.vs-litso__opt{min-height:24px;}
  .hd__search button,.vsburger{font-size:12px !important;}
}

/* ===================================================================
   ПАКЕТ m10 (31.08.2026) — остатки по мобильной пригодности.
   Яндекс держит NOT_MOBILE_FRIENDLY с 26.08; замеры на iPhone показали
   три причины: подписи фильтра 10px, ссылки в тексте и таблицах 16–18px,
   таблица характеристик шире экрана.
   =================================================================== */
@media(max-width:900px){
  /* подписи и счётчики фильтра были 10–10.5px */
  .vpf__lbl,.vpf__o,.vpf__o b{font-size:12px !important;line-height:1.4 !important;}

  /* ссылки внутри текста, списков и таблиц — добираем высоту до 24px */
  .vseo p a,.vseo li a,.psec a,.txt a,.tdp a,.p26desc a,
  .nrg-seo p a,.nrg-seo li a,section[class*="seo"] p a,section[class*="seo"] li a{
    padding:3px 0;display:inline-block;min-height:24px;}
  .nrg-seo li,.nrg-seo p{line-height:1.75 !important;}
  td a,th a{min-height:24px;display:inline-flex;align-items:center;}

  /* широкие таблицы в описаниях прокручиваем внутри себя, а не всей страницей */
  table.nrg-tbl,.psec table,.txt table,.vseo table,.tdp table,.nrg-seo table{
    display:block;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
  table.nrg-tbl tbody,table.nrg-tbl thead{display:table;width:max-content;min-width:100%;}
}

/* ===== m11 (02.09.2026): снимаем замечание Яндекса «не оптимизирован для мобильных» ===== */
@media(max-width:900px){
  /* 1. Подписи характеристик в описаниях товаров были 11px — ниже читаемого минимума.
        Селекторы .rsp__s/.tdp__s/.vzk__s/.vkp__s пришли из описаний разных разделов
        (12 230 товаров и 133 категории), правим стилем, а не переписыванием описаний. */
  .rsp__s b, .tdp__s b, .vzk__s b, .vkp__s b, .vup__t b,
  [class$="__s"] b, [class*="__s "] b, [class$="__t"] b{ font-size:12.5px !important; }
  .rsp__s, .tdp__s, .vzk__s, .vkp__s, .vup__t{ font-size:13px !important; }

  /* 2. «Показать все города» в подвале: высота была 15px, нужно не меньше 24 */
  .ftr__geomore{ padding:6px 2px; min-height:24px; display:inline-flex !important; align-items:center; }

  /* 3. Ссылки внутри текста: даём высоту нажатия, не разъезжая вёрстку */
  .txt a, .psec a, .vseo a, .nrg-seo a, article a, .vup a,
  .about-prose a, .about-seo a, .vsn-cta a, section p a,
  .vsx-note a, .tls-nav a, .container p a{
    min-height:24px; display:inline-block; padding:2px 0; }
}

@media(max-width:640px){
  /* 4. Блок «почему мы» на главной: две колонки не помещались в 390px и торчали за экран */
  .whys{ grid-template-columns:1fr !important; }
  .why{ border-right:none !important; }
  .why:nth-child(n){ border-right:none !important; }
}


/* --- пакет m12 (02.09.2026): тач-цели ниже 28px — замечание Яндекса «не оптимизирован для мобильных».
       Поднимаем высоту ссылок в списках товаров, в поиске и в блоках перелинковки. --- */
@media(max-width:900px){
  .prow__t, .vs-art__i, .vs-search-card__title, .vs-search-card__more,
  .obj-link, .vs-cats__i, .vs-sim__n{
    display:inline-block; min-height:28px; line-height:1.5; padding:3px 0;
  }
  .vs-search-card__more, .obj-link{ padding:5px 2px; min-height:30px; }
  .prow__t{ padding:4px 0; }
  .zc__hint, .zc__hint *{ font-size:12.5px !important; }
  /* «Подробнее...» и подобные короткие ссылки в описаниях */
  a.more, a[href$="#more"], .psec a.more{ display:inline-block; min-height:28px; padding:4px 0; }
}


/* --- пакет m13 (02.09.2026): добиваем тач-цели. Предыдущие правила перебивались более
       конкретными селекторами и flex-раскладкой, поэтому здесь min-height задан жёстко. --- */
@media(max-width:900px){
  .prow__t, .vs-art__i, .vs-cats__i, .vs-search-card__title, .vs-search-card__more,
  .obj-link, .vsn-cats a, .psec a.more, p > a.more,
  td a[href^="/product/"], td a[href^="/category/"]{
    min-height:30px !important;
    padding-top:4px !important;
    padding-bottom:4px !important;
    line-height:1.45 !important;
  }
  /* для flex-ссылок высота набирается только с выравниванием по центру */
  .vs-cats__i, .vsn-cats a, .vs-search-card__more, td a[href^="/product/"]{
    display:inline-flex !important;
    align-items:center !important;
  }
  .vs-art__i, .vs-cats__l a{ display:block !important; }
  /* мелкие ссылки в маркированных списках (BIM-модели и подобные) */
  li > a{ display:inline-block; min-height:28px; padding:4px 0; line-height:1.5; }
}


/* m13b: ссылка «Подробнее...» в описаниях — последняя тач-цель ниже нормы */
@media(max-width:900px){
  p a, .psec p a, .txt p a{ min-height:30px !important; padding-top:4px !important; padding-bottom:4px !important; }
  p a{ display:inline-flex !important; align-items:center !important; }
}


/* m13c: телефон и почта в блоке контактов — по ним звонят с телефона, цель должна быть крупной */
@media(max-width:900px){
  .vs-info__v a, a[href^="tel:"], a[href^="mailto:"]{
    min-height:32px !important; padding-top:5px !important; padding-bottom:5px !important;
    display:inline-flex !important; align-items:center !important;
  }
}

/* ===== 04.09.2026 (m14): мобильные правки — обрезанный hero, компактная шапка, cookie-плашка и чат ===== */
@media (max-width:860px){
  /* hero главной: слайдер был 374px при экране 360 — текст уходил за край */
  .hero .wrap{grid-template-columns:minmax(0,1fr)}
  .heroSlider,.heroSlide{min-width:0;width:100%;max-width:100%}
  /* шапка: адрес, почта и часы работы на телефоне не показываем (были 41% экрана) */
  .stickhdr .top__addr,.stickhdr .top a.m{display:none}
  .stickhdr .hd__tel > *:not(b){display:none}
  .stickhdr .hd__tel{min-height:0;height:auto;padding:2px 0}
  .stickhdr .hd__btn.js-vs-price{padding-top:9px;padding-bottom:9px;margin-top:6px}
  .stickhdr .hd__search{margin-top:8px}
  /* cookie-плашка компактнее, чат — над ней, а не поверх кнопок товаров */
  #coockie-modal{padding:6px 10px !important}
  #coockie-modal .coockie-modal-header{padding:2px 0 !important;font-size:13px !important}
  #coockie-modal .coockie-modal-body{padding:4px 0 !important}
  #coockie-modal .coockie-modal-body a,#coockie-modal .coockie-modal-body button{padding:6px 14px !important;font-size:14px !important}
  /* плашка — тонкая полоса внизу слева, чат — внизу справа, друг друга не перекрывают */
  #coockie-modal{bottom:8px !important;left:8px !important;right:104px !important;width:auto !important}
  #coockie-modal .coockie-modal-body{flex-wrap:wrap;gap:4px 10px}
  jdiv[class*="wrap"]{bottom:12px !important;right:8px !important}
}
