/* ======================================================================
   TDPD — стили редизайна td-pd.ru. ОДИН файл на весь редизайн.
   Подключается сразу после custom.css, поэтому порядок каскада тот же,
   что был, когда всё это лежало хвостом внутри custom.css.

   Источник макетов — redesign-2026-09/*.dc.html.
   Правило: новые правки дописывать не хвостом, а В СВОЙ раздел ниже,
   иначе снова получим стопку блоков, перебивающих друг друга.
   ====================================================================== */

/* ===== TDPD: редизайн мобильного меню ===== */
#menu-mobile.m-panel-box{background:#fff}
#menu-mobile .menu-mobile-header{font-size:20px;font-weight:600;color:#20242c;padding:16px 18px;background:#fff}

/* убрать лишнюю служебную полосу "Список категорий" */
#menu-mobile .navbar-header{display:none!important}

/* блок "Информация" — без серой заливки */
#menu-mobile .custom-info-link{background:#fff!important}
#menu-mobile .custom-info-link .parent-title-toggle{color:#20242c}
/* выравнивание блока "Информация" и его пунктов по левому краю со списком категорий: контент категорий начинается на 25px (ul padding 10 + строка padding 15), а блок был на 15px — доводим padding-left до 25px */
#menu-mobile .custom-info-link{padding-left:25px!important}

/* список категорий */
#menu-mobile ul.menu{padding:6px 10px}
#menu-mobile ul.menu > li{border-bottom:1px solid #f1f1f1;margin:0}
#menu-mobile ul.menu > li:last-child{border-bottom:none}
#menu-mobile ul.menu > li.active{background:#eef2fe;border-radius:10px}

/* строка категории: под палец, иконка + текст + место под +/x */
#menu-mobile #menu-mobile-box ul.menu > li > a.dropdown-toggle{display:flex;align-items:center;gap:12px;padding:13px 8px;min-height:50px;box-sizing:border-box;font-size:15px;font-weight:500;color:#20242c!important}
#menu-mobile #menu-mobile-box ul.menu > li.active > a.dropdown-toggle{color:#2f55d4!important}
#menu-mobile #menu-mobile-box ul.menu > li > a.dropdown-toggle svg{width:22px;height:22px;flex:0 0 22px}
#menu-mobile #menu-mobile-box ul.menu > li > a.dropdown-toggle .ion-chevron-down{display:none}

/* +/x переключатель — вправо, приглушённо */
#menu-mobile .parent-title-toggle{color:#9aa0a6!important;right:6px}

/* подменю (раскрытая категория) */
#menu-mobile .dropdown-menu{box-shadow:none!important;border:none!important;padding:2px 0 10px}
#menu-mobile .megamenu-parent-title{font-size:14px;font-weight:600;color:#20242c!important;padding:8px 6px}
#menu-mobile .dropdown-menu ul li a{color:#5a5a5a!important;font-size:14px;padding:7px 6px}

/* поиск по категориям внутри меню */
#menu-mobile input[type="text"],#menu-mobile .search input{border:1px solid #e2e2e2!important;border-radius:10px!important;height:42px!important;padding:0 12px!important;background:#f7f8fa!important}

/* TDPD: вернуть иконки категорий — тема их прятала через display:none И уводила за левый край через margin-left:-40px */
#menu-mobile #menu-mobile-box ul.menu > li > a.dropdown-toggle svg{display:inline-block!important;margin:0!important}

/* TDPD: список категорий скроллится отдельно, чтобы поиск сверху и блок связи снизу были видны — не трогаем display/position самой панели, чтобы не сломать открытие/закрытие */
#menu-mobile-box{height:auto!important;max-height:calc(100vh - 300px)!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch}

/* TDPD: блок «Заказать звонок»/телефон прижат к низу панели, чтобы не уезжал под экран */
#menu-mobile .tdpd-mmenu-cta{position:absolute;left:0;right:0;bottom:0;padding:14px 18px 20px;background:#fff;border-top:1px solid #ededed;box-shadow:0 -4px 12px rgba(0,0,0,.06);z-index:5}

/* ===== TDPD: полировка полей поиска и блока связи в мобильном меню ===== */
/* оба поля поиска — верхний «Поиск по каталогу» (.tdpd-mmenu-search) и live-фильтр категорий «Поиск категорий» (.filterinput) — единый аккуратный стиль с иконкой-лупой слева */
#menu-mobile .tdpd-mmenu-search input,
#menu-mobile .filterinput{width:100%!important;box-sizing:border-box!important;height:46px!important;border:1px solid #e9eaee!important;border-radius:12px!important;margin:0!important;padding:0 14px 0 42px!important;font-size:15px!important;color:#20242c!important;background:#f4f5f7 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%239aa0a6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='20' y1='20' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat 14px center!important;background-size:18px 18px!important}
#menu-mobile .tdpd-mmenu-search input::placeholder,
#menu-mobile .filterinput::placeholder{color:#9aa0a6!important;opacity:1!important}
#menu-mobile .tdpd-mmenu-search input:focus,
#menu-mobile .filterinput:focus{border-color:#2f55d4!important;background-color:#fff!important;outline:none!important;box-shadow:0 0 0 3px rgba(47,85,212,.12)!important}
/* контейнер фильтра категорий: убрать серую подложку и правую «лупу»-псевдоэлемент темы */
#menu-mobile .style-for-form{background:transparent!important;padding:0 10px 6px!important;border-radius:0!important}
#menu-mobile .style-for-form::after{display:none!important}

/* блок связи снизу: телефон крупный по центру + иконка-гарнитура, город крупнее по центру + пин */
#menu-mobile .tdpd-mmenu-cta > div:nth-of-type(1){margin-top:12px!important}
#menu-mobile .tdpd-mmenu-cta > div:nth-of-type(1) a{font-size:19px!important;font-weight:700!important;color:#20242c!important}
#menu-mobile .tdpd-mmenu-cta > div:nth-of-type(1) a::before{content:"";display:inline-block;width:18px;height:18px;margin-right:8px;vertical-align:-3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%232f55d4' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 14v-2a9 9 0 0 1 18 0v2'/%3E%3Cpath d='M21 16a2 2 0 0 1-2 2h-2v-6h2a2 2 0 0 1 2 2z'/%3E%3Cpath d='M3 16a2 2 0 0 0 2 2h2v-6H5a2 2 0 0 0-2 2z'/%3E%3C/svg%3E") no-repeat center/contain}
#menu-mobile .tdpd-mmenu-cta > div:nth-of-type(1) span{font-size:13px!important;color:#9aa0a6!important}
#menu-mobile .tdpd-mmenu-cta > div:nth-of-type(2){font-size:14px!important;color:#8a9099!important;margin-top:6px!important}
#menu-mobile .tdpd-mmenu-cta > div:nth-of-type(2)::before{content:"";display:inline-block;width:14px;height:14px;margin-right:5px;vertical-align:-2px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238a9099' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E") no-repeat center/contain}
/* иконка-трубка на кнопке «Заказать звонок» */
#menu-mobile .tdpd-mmenu-cta > a::before{content:"";display:inline-block;width:17px;height:17px;margin-right:8px;vertical-align:-3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.81.36 1.6.68 2.34a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.74-1.24a2 2 0 0 1 2.11-.45c.74.32 1.53.55 2.34.68A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E") no-repeat center/contain}
/* список чуть короче, чтобы подросший блок связи не наезжал на категории */
#menu-mobile-box{max-height:calc(100vh - 315px)!important}


/* ===== TDPD: мобильная шапка-«островок» ===== */
@media(max-width:991px){
  /* единая подложка-островок под обе фикс-панели шапки (#top слева: бургер+поиск; header справа: лого+телефон+корзина) */
  .wrapper::before{content:"";position:fixed;top:6px;left:8px;right:8px;height:52px;background:#fff;border-radius:14px;box-shadow:0 6px 20px rgba(20,25,60,.16);z-index:120;pointer-events:none}
  /* поднять обе панели на островок и сделать их фон прозрачным, чтобы был виден островок-подложка */
  html body nav#top{top:6px!important;height:52px!important;background:transparent!important;padding-left:6px!important}
  html body header.scroll-fix{top:6px!important;height:52px!important;background:transparent!important;box-shadow:none!important}
  /* КОРЕНЬ ПРОБЛЕМЫ скругления: у темы есть собственный псевдоэлемент header.scroll-fix::before — белая полоса во всю ширину (left:0;right:0), border-radius:0, со своей тенью; он рисуется поверх островка (стекинг-контекст header z-121 > островок z-120) и даёт квадратные углы. Глушим его фон и тень, чтобы был виден скруглённый .wrapper::before */
  html body header.scroll-fix::before{background:transparent!important;box-shadow:none!important}
  /* внутренний контейнер правой панели тоже белый с квадратными углами — перекрывал правый угол островка; делаем прозрачным */
  html body header.scroll-fix .box-inner{background:transparent!important}
  /* контент внутренних страниц не должен уезжать под приподнятую шапку (низ островка = 58px) */
  .breadcrumbs{margin-top:66px!important}
}


/* ===== TDPD: карточки товаров в листинге категории (#res-products) =====
   Макет: карточки-«плитки» с рамкой, равной высоты; порядок «название → цена → постоянная кнопка В корзину».
   ВАЖНО: работает В ПАРЕ с правкой category.tpl — блок .box-cart перенесён из .image в конец .caption. */

/* сетка: равная высота карточек в ряду (Bootstrap-колонки → флекс). Исключаем .pagination-row */
:is(#res-products,.tdb-sale-row) > .row:not(.pagination-row){display:flex;flex-wrap:wrap;align-items:stretch}
:is(#res-products,.tdb-sale-row) > .row:not(.pagination-row) > .product-items{display:flex;float:none;margin-bottom:16px}

/* карточка-плитка */
:is(#res-products,.tdb-sale-row) .product-thumb{width:100%;height:100%;display:flex;flex-direction:column;margin:0;padding:12px;background:#fff;border:1px solid #e8eaed;border-radius:14px;transition:box-shadow .2s ease,border-color .2s ease}
:is(#res-products,.tdb-sale-row) .product-thumb:hover{position:static!important;transform:none!important;right:auto!important;left:auto!important;border-color:#c9d2f7;box-shadow:0 8px 24px rgba(20,25,60,.10)}
:is(#res-products,.tdb-sale-row) .product-thumb .product-item{display:flex;flex-direction:column;flex:1 1 auto;height:auto}

/* картинка в мягкой плитке */
:is(#res-products,.tdb-sale-row) .product-thumb .image{background:#f7f8fa;border-radius:10px;overflow:hidden}

/* убрать пустые звёзды-рейтинг, hover-иконки (избранное/сравнить/быстрый просмотр) и строку производителя */
:is(#res-products,.tdb-sale-row) .product-thumb .caption .rating{display:none!important}
:is(#res-products,.tdb-sale-row) .product-thumb .button-group{display:none!important}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .manufacture-product{display:none}

/* подпись: флекс-колонка; порядок ПРИНУДИТЕЛЬНО название(1) → цена(2) → кнопка(низ).
   Тема ставит .price{order:1}, из-за чего цена оказывалась над названием — перебиваем order. */
:is(#res-products,.tdb-sale-row) .product-thumb .caption{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;padding:12px 4px 2px;text-align:left}
:is(#res-products,.tdb-sale-row) .product-thumb .caption h4{order:1;clear:both;margin:0 0 8px;padding:0;min-height:36px}
:is(#res-products,.tdb-sale-row) .product-thumb .caption h4 a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;line-height:18px;font-weight:500;color:#20242c;letter-spacing:0;text-transform:none}
:is(#res-products,.tdb-sale-row) .product-thumb .caption h4 a:hover{color:#3f3ffa;text-decoration:none}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .price{order:2;margin:0 0 12px;font-size:18px;line-height:22px;font-weight:700;color:#20242c}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .price .price-new{font-size:18px;font-weight:700;color:#e5372b}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .price .price-old{margin-left:6px;font-size:13px;font-weight:400;color:#9aa0a6;text-decoration:line-through}

/* постоянная кнопка «В корзину» на всю ширину, прижата к низу карточки */
:is(#res-products,.tdb-sale-row) .product-thumb .box-cart{order:5;position:static!important;opacity:1!important;bottom:auto;margin:auto 0 0;padding:0;text-align:center}
:is(#res-products,.tdb-sale-row) .product-thumb .box-cart .button-cart{display:block;width:100%;height:auto;padding:11px 12px;line-height:1.2;font-size:14px;font-weight:600;color:#fff;background:#3f3ffa;border:0;border-radius:9px;box-shadow:none;text-transform:none}
:is(#res-products,.tdb-sale-row) .product-thumb .box-cart .button-cart:hover{background:#2f2fe0;color:#fff}
:is(#res-products,.tdb-sale-row) .product-thumb .box-cart .button-cart span{display:inline}


/* ===== TDPD: страница товара — первый экран, блок доверия, липкая панель =====
   Работает В ПАРЕ с product.tpl (блоки .tdpd-instock + .tdpd-trust) и main.js (панель #tdpd-sticky-buy). */

/* скрыть «Отзывы (0)»/пустые звёзды на первом экране (в B2B отзывов нет; отзывы остаются во вкладках ниже) */
#product-info-right > .rating{display:none!important}

/* заголовок компактнее, производитель приглушён */
#product-info-right h1{font-size:22px;line-height:1.3;font-weight:500;color:#20242c;margin:0 0 12px}
#product-info-right .manufacture-product{margin:0 0 4px}
#product-info-right .manufacture-product a{font-size:13px;color:#9aa0a6;text-transform:none}

/* крупная цена */
#product-info-right > .price{display:block;font-size:30px;line-height:1.1;font-weight:500;color:#20242c;margin:0 0 6px}
#product-info-right > .price .price-new{color:#e5372b}
#product-info-right > .price .price-old{margin-left:8px;font-size:18px;font-weight:400;color:#9aa0a6;text-decoration:line-through}

/* индикатор наличия */
.tdpd-instock{display:inline-flex;align-items:center;gap:6px;margin:0 0 14px;font-size:13px;font-weight:500;color:#2fa960}
.tdpd-instock svg{width:16px;height:16px}

/* артикул — приглушённо */
#product-info-right ul.list-unstyled{margin:0 0 14px;padding:0}
#product-info-right ul.list-unstyled li{font-size:13px;color:#8a9099}
#product-info-right ul.list-unstyled li span{color:#5a5f66}

/* зона покупки: степпер + «В корзину» в одну строку, «Купить в один клик» во всю ширину ниже; избранное/сравнение скрыты */
#product-info-right #product .form-group{display:grid;grid-template-columns:auto 1fr;gap:10px 12px;align-items:center}
#product-info-right #product .number{grid-column:1;margin:0}
#product-info-right #product #button-cart,
#product-info-right #product #button-feedback{grid-column:2}
#product-info-right #product #button-one-click{grid-column:1 / -1}
#product-info-right #product .btn-group{display:none}
#product-info-right .frame-change-count{display:flex;align-items:center;height:46px;margin:0;border:1px solid #e2e4e9;border-radius:9px;overflow:hidden;margin-top: 5px;}
#product-info-right .frame-change-count .btn-minus button,
#product-info-right .frame-change-count .btn-plus button{width:36px;height:44px;padding:0;border:0;background:transparent;color:#6a7078;font-size:16px}
#product-info-right .frame-change-count input.plus-minus{width:40px;height:44px;padding:0;border:0;background:transparent;text-align:center;font-size:15px}
#product-info-right #button-cart{width:100%;height:46px;margin:0;border-radius:9px;font-size:15px;font-weight:500;background:#3f3ffa!important;border-color:#3f3ffa!important;color:#fff}
#product-info-right #button-cart:hover{background:#2f2fe0!important;border-color:#2f2fe0!important}
#product-info-right #button-one-click{width:100%;height:44px;margin:0;border-radius:9px;font-size:14px;font-weight:500;background:#fff!important;color:#3f3ffa!important;border:1px solid #cdd0f7!important}
#product-info-right #button-one-click:hover{background:#f4f5ff!important;color:#2f2fe0!important}

/* блок доверия 2×2 */
.tdpd-trust{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 0}
.tdpd-trust-item{display:flex;gap:9px;align-items:flex-start;padding:10px 11px;background:#f7f8fa;border-radius:10px}
.tdpd-trust-item svg{width:20px;height:20px;flex:0 0 20px;margin-top:1px;color:#3f3ffa}
.tdpd-trust-item span{font-size:12.5px;line-height:1.35;color:#42474f}

/* поле количества — убрать чёрную рамку (общую рамку рисует внешний .frame-change-count) */
#product-info-right .frame-change-count input.plus-minus,
#product-info-right #input-quantity{border:0!important;box-shadow:none!important;outline:none!important;background:transparent}

/* артикул — убрать разделительную линию сверху и подтянуть отступ */
#product-info-right ul.list-unstyled{border-top:0!important;margin:6px 0 16px}

/* опции товара: заголовок «Доступные опции» + метка опции («Мебель») */
#product-info-right .options-header{margin:20px 0 12px;padding:0;border:0;font-size:16px;font-weight:500;color:#20242c;text-transform:none}
#product-info-right .form-group.option{margin:0 0 6px}
#product-info-right .form-group.option .control-label{display:block;margin:0 0 8px;font-size:14px;font-weight:500;color:#42474f}

/* опции: карточки-переключатели вместо голых радиокнопок; выбранная — синяя рамка + подсветка */
#product-info-right .radio.tdpd-product-radio{display:flex!important;align-items:center;justify-content:space-between;gap:10px;margin:0 0 8px!important;padding:0 14px!important;min-height:50px;border:1px solid #e2e4e9!important;border-radius:10px!important;background:#fff!important;font-size:13px;color:#6a7078;transition:border-color .15s,background .15s}
#product-info-right .radio.tdpd-product-radio:last-child{margin-bottom:0!important}
#product-info-right .radio.tdpd-product-radio:hover{border-color:#c9d2f7!important}
#product-info-right .radio.tdpd-product-radio:has(input:checked){border-color:#3f3ffa!important;background:#f4f5ff!important}
#product-info-right .radio.tdpd-product-radio label{display:flex;align-items:center;gap:11px;flex:1 1 auto;margin:0;padding:12px 0;cursor:pointer;font-size:14px;line-height:1.3;color:#20242c;font-weight:400;float:none}
#product-info-right .radio.tdpd-product-radio label.selected{font-weight:500}
#product-info-right .radio.tdpd-product-radio input[type=radio]{width:18px;height:18px;margin:0;flex:0 0 18px;accent-color:#3f3ffa;cursor:pointer}

/* липкая панель покупки (наполнение строит main.js): десктоп — сверху, мобильные — снизу */
#tdpd-sticky-buy{position:fixed;left:0;right:0;top:0;z-index:1000;display:flex;align-items:center;gap:14px;padding:8px 16px;background:#fff;border-bottom:1px solid #eceef1;box-shadow:0 4px 16px rgba(20,25,60,.08);transform:translateY(-100%);transition:transform .25s ease}
#tdpd-sticky-buy.visible{transform:translateY(0)}
#tdpd-sticky-buy .sb-thumb{flex:0 0 40px;width:40px;height:40px;border-radius:8px;object-fit:contain;background:#f7f8fa}
#tdpd-sticky-buy .sb-name{flex:1;min-width:0;font-size:14px;font-weight:500;color:#20242c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#tdpd-sticky-buy .sb-price{font-size:18px;font-weight:500;color:#20242c;white-space:nowrap}
#tdpd-sticky-buy .sb-btn{padding:10px 22px;border:0;border-radius:9px;background:#3f3ffa;color:#fff;font-size:14px;font-weight:500;white-space:nowrap;cursor:pointer}
#tdpd-sticky-buy .sb-btn:hover{background:#2f2fe0}
@media(max-width:768px){
  #tdpd-sticky-buy{top:auto;bottom:0;transform:translateY(100%);border-top:1px solid #eceef1;border-bottom:0;box-shadow:0 -4px 16px rgba(20,25,60,.10);padding:8px 12px}
  #tdpd-sticky-buy.visible{transform:translateY(0)}
  #tdpd-sticky-buy .sb-thumb,#tdpd-sticky-buy .sb-name{display:none}
  #tdpd-sticky-buy .sb-price{flex:1}
  #tdpd-sticky-buy .sb-btn{padding:12px 26px}
}


/* ===== TDPD: общий вид «успешно отправлено» для попапов =====
   Разметку даёт языковой файл (text_success_send / text_success_subscribe), сюда её кладёт AJAX через .html(). */
.tdpd-popup-done{display:flex;flex-direction:column;align-items:center;gap:9px;padding:26px 4px 10px;text-align:center}
.tdpd-popup-done svg{width:44px;height:44px;color:#2fa960}
.tdpd-popup-done strong{font-size:18px;font-weight:500;color:#20242c}
.tdpd-popup-done span{max-width:320px;font-size:13.5px;line-height:1.45;color:#6a7078}

/* аккуратный крестик закрытия у обоих переработанных попапов */
#callback-popup .mfp-close,
#subscribe-popup .mfp-close{top:4px;right:4px;width:38px;height:38px;padding:0!important;line-height:38px!important;font-size:26px;color:#9aa0a6;opacity:1}
#callback-popup .mfp-close:hover,
#subscribe-popup .mfp-close:hover{color:#20242c}

/* ===== TDPD: попап обратного звонка (#callback-popup) =====
   Работает В ПАРЕ с oct_popup_call_phone.tpl (подзаголовок .tdpd-cb-sub, textarea rows="2",
   с блока комментария снят класс required) и с language/ru-ru/.../oct_popup_call_phone.php. */

#callback-popup{max-width:420px;padding:26px 26px 24px;border-radius:16px;box-shadow:0 24px 60px rgba(20,25,60,.22)}

/* заголовок по левому краю, иконка — в синем кружке */
#callback-popup h2.popup-header{display:flex;align-items:center;gap:11px;margin:0 0 7px;font-size:20px;font-weight:500;line-height:1.25;color:#20242c;text-align:left}
#callback-popup h2.popup-header i.icon-call-in{flex:0 0 38px;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:11px;background:#f0f0ff;color:#3f3ffa;font-size:18px}
#callback-popup .tdpd-cb-sub{margin:0 0 16px;font-size:13px;line-height:1.4;color:#6a7078;text-align:left}

/* телефоны — кликабельные плитки; показываем и на десктопе (в теме они были только для мобильных) */
#callback-popup .tdpd-m-phones-popup{display:block!important;margin:0 0 16px}
#callback-popup .tdpd-m-phones-popup ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;text-align:left}
#callback-popup .tdpd-m-phones-popup ul li{flex:1 1 155px;display:flex;align-items:center;gap:8px;margin:0;padding:9px 12px;border:1px solid #e2e4e9;border-radius:10px;background:#fff;transition:border-color .15s,background .15s}
#callback-popup .tdpd-m-phones-popup ul li:hover{border-color:#c9d2f7;background:#f7f8ff}
#callback-popup .tdpd-m-phones-popup ul li i{position:static;top:auto;flex:0 0 auto;font-size:14px;color:#3f3ffa}
#callback-popup .tdpd-m-phones-popup ul li a.phoneclick{padding-left:0;font-size:14px;font-weight:500;line-height:1.2;color:#20242c!important;text-decoration:none;white-space:nowrap}

/* форма */
#callback-popup .popup-form-box,
#callback-popup .popup-center{text-align:left}
#callback-popup .form-group{margin:0 0 10px}
#callback-popup .popup-form-box input[type="text"],
#callback-popup .popup-form-box textarea{width:100%;height:48px;margin:0;padding:0 14px;border:1px solid #e2e4e9;border-radius:10px;background:#fff;background-image:none;filter:none;box-shadow:none;font-size:15px;color:#20242c}
/* min-height нужен обязательно: popup.css и stylesheet.min.css ставят textarea min-height:120px, он перебивает height */
#callback-popup .popup-form-box textarea{height:64px;min-height:64px;padding:12px 14px;line-height:1.4;resize:none}
#callback-popup .popup-form-box input[type="text"]:focus,
#callback-popup .popup-form-box textarea:focus{border-color:#3f3ffa!important;box-shadow:0 0 0 3px rgba(63,63,250,.12);outline:none}
#callback-popup .popup-form-box input::-webkit-input-placeholder,
#callback-popup .popup-form-box textarea::-webkit-input-placeholder{font-family:inherit;font-size:15px;color:#9aa0a6}
#callback-popup .popup-form-box input::-moz-placeholder,
#callback-popup .popup-form-box textarea::-moz-placeholder{font-family:inherit;font-size:15px;color:#9aa0a6;opacity:1}
#callback-popup .popup-form-box input:-ms-input-placeholder,
#callback-popup .popup-form-box textarea:-ms-input-placeholder{font-family:inherit;font-size:15px;color:#9aa0a6}
#callback-popup .popup-form-box input::placeholder,
#callback-popup .popup-form-box textarea::placeholder{font-family:inherit;font-size:15px;color:#9aa0a6}

/* ошибки валидации */
#callback-popup .error_style{border-color:#e5372b!important}
#callback-popup .text-danger{margin:6px 0 0;font-size:12.5px;line-height:1.35;color:#e5372b}
#callback-popup .custom-checkbox{margin-left:4px!important;accent-color:#3f3ffa}

/* кнопка отправки — во всю ширину */
#callback-popup #popup-send-button.btn-send-custom{display:block;width:100%;height:50px;margin:14px 0 0;padding:0;border:0;border-radius:10px;background:#3f3ffa!important;font-size:15px;font-weight:500;color:#fff}
#callback-popup #popup-send-button.btn-send-custom:hover{background:#2f2fe0!important}

/* ===== TDPD: попап подписки (#subscribe-popup) =====
   Работает В ПАРЕ с oct_popup_subscribe.tpl (примечание .tdpd-sub-note) и language/ru-ru/.../oct_popup_subscribe.php.
   Текст promo_text задаётся в админке (настройки модуля), не в файлах. */

#subscribe-popup{max-width:460px;padding:28px 26px 24px;border-radius:16px;box-shadow:0 24px 60px rgba(20,25,60,.22)}
#subscribe-popup h2.popup-header{margin:0 0 8px;font-size:21px;font-weight:500;line-height:1.3;color:#20242c;text-align:left}
#subscribe-popup .popup-center{text-align:left}
#subscribe-popup .popup-text{margin:0 0 16px;font-size:14px;line-height:1.45;color:#6a7078;text-align:left}
#subscribe-popup .popup-text p{margin:0}
#subscribe-popup .popup-text img{display:block;margin:12px 0 0;border-radius:10px}

/* поле + кнопка в одну строку, примечание — под ними */
#subscribe-popup .popup-form-box{margin:0;text-align:left}
#subscribe-popup #popup-subscribe-form{display:flex;flex-wrap:wrap;gap:10px}
#subscribe-popup .input-text{flex:1 1 190px;width:auto;height:48px;margin:0;padding:0 14px;border:1px solid #e2e4e9;border-radius:10px;background:#fff;background-image:none;filter:none;box-shadow:none;font-size:15px;color:#20242c}
#subscribe-popup .input-text:focus{border-color:#3f3ffa!important;box-shadow:0 0 0 3px rgba(63,63,250,.12);outline:none}
#subscribe-popup .input-text::-webkit-input-placeholder{font-family:inherit;font-size:15px;color:#9aa0a6}
#subscribe-popup .input-text::-moz-placeholder{font-family:inherit;font-size:15px;color:#9aa0a6;opacity:1}
#subscribe-popup .input-text::placeholder{font-family:inherit;font-size:15px;color:#9aa0a6}
#subscribe-popup #popup-subscribe-button{flex:0 0 auto;height:48px;margin:0;padding:0 22px;border:0;border-radius:10px;background:#3f3ffa!important;font-size:15px;font-weight:500;color:#fff}
#subscribe-popup #popup-subscribe-button:hover{background:#2f2fe0!important}
#subscribe-popup .tdpd-sub-note{flex:1 1 100%;margin:2px 0 0;font-size:12px;line-height:1.4;color:#9aa0a6}
#subscribe-popup .alert-danger{margin:0 0 12px;padding:10px 12px;border:1px solid #f5c6c2;border-radius:10px;background:#fdf3f2;font-size:13px;line-height:1.4;color:#b3271c}
#subscribe-popup .alert-danger .close{opacity:.5}

/* оба попапа на мобильных: почти во всю ширину, поля и кнопки в столбик */
@media only screen and (max-width:600px){
  #callback-popup,
  #subscribe-popup{max-width:none;width:calc(100vw - 24px);border-radius:14px}
  #callback-popup{padding:22px 18px 20px}
  #subscribe-popup{padding:24px 18px 20px}
  #callback-popup h2.popup-header{font-size:18px}
  #subscribe-popup h2.popup-header{font-size:19px}
  #callback-popup .tdpd-m-phones-popup ul li{flex:1 1 100%}
  #subscribe-popup .input-text,
  #subscribe-popup #popup-subscribe-button{flex:1 1 100%;width:100%}
}

/* ===== TDPD: попап «Купить в 1 клик» (#oneclick-popup) =====
   Правится втроём: этот CSS + language/ru-ru/.../oct_popup_purchase.php (плейсхолдеры без «Введите»,
   text_success_order → .tdpd-popup-done) + template/.../oct_popup_purchase.tpl (цена опции обёрнута
   в .tdpd-opt-price внутри label, убраны скобки и префикс «=»).
   Сами опции приходят в попап, только если option_id отмечен в настройках модуля (allowed_options). */

#oneclick-popup{max-width:760px;padding:26px;border-radius:16px;box-shadow:0 24px 60px rgba(20,25,60,.22)}
#oneclick-popup .mfp-close{top:4px;right:4px;width:38px;height:38px;padding:0!important;line-height:38px!important;font-size:26px;color:#9aa0a6;opacity:1}
#oneclick-popup .mfp-close:hover{color:#20242c}

/* две колонки флексом вместо float-сетки bootstrap */
#oneclick-popup #purchase-form{display:flex;flex-wrap:wrap;gap:22px;margin:0}
#oneclick-popup #purchase-form > .col-md-6,
#oneclick-popup .payment-info{flex:1 1 300px;width:auto;max-width:none;float:none;margin:0;padding:0}

/* КОРЕНЬ кривой вёрстки: тема даёт #oneclick-popup .popup-text{position:absolute;top:120px;margin-top:35px},
   поэтому название/цена/степпер вырваны из потока, левая колонка схлопывается до высоты картинки,
   а цена наезжает на кнопку заказа. Возвращаем содержимое в поток. */
#oneclick-popup .popup-text{position:static;margin:0;width:auto;text-align:left}

/* Имя / цена / степпер — три ребёнка .popup-text, шли стопкой на родных отступах темы и слипались.
   Сетка: имя на всю ширину, ниже цена слева и степпер справа в одном ряду по центру. */
#oneclick-popup .popup-text{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px}
#oneclick-popup .popup-text > .popup-h3{grid-column:1/-1}
#oneclick-popup .popup-text > .product-price{grid-column:1;margin:0}
/* width/margin/float — перебиваем чужое правило выше по файлу
   (#oneclick-popup .payment-quantity .number{width:80%;margin:auto;float:left} — давало 19px справа) */
#oneclick-popup .popup-text > .payment-quantity{grid-column:2;justify-self:end;width:auto}
#oneclick-popup .payment-quantity .number{width:auto;margin:0;float:none}

/* левая колонка — карточка товара.
   :not(.payment-info) обязателен: правая колонка формы тоже .col-md-6, без исключения она получала
   серый фон карточки и align-self:flex-start (из-за чего не тянулась на высоту и кнопка «Заказать» висела в воздухе). */
/* align-self:flex-start — чтобы карточка не растягивалась на высоту формы и не оставляла пустой серый низ */
#oneclick-popup #purchase-form > .col-md-6:not(.payment-info){align-self:flex-start;display:flex;flex-direction:column;gap:12px;padding:16px;background:#f7f8fa;border-radius:12px;text-align:left}
#oneclick-popup #purchase-form > .col-md-6 img.img-responsive{align-self:center;width:auto;max-width:100%;max-height:160px;border-radius:10px;background:#fff}
#oneclick-popup .popup-h3{margin:0;font-size:15px;font-weight:500;line-height:1.35;color:#20242c;text-transform:none}
#oneclick-popup .product-price{display:block;margin:0}
#oneclick-popup #main-price.oneclick-main-price{font-size:22px;font-weight:500;color:#20242c}
#oneclick-popup .tdpd-price-old{font-size:15px;font-weight:400;color:#9aa0a6}
#oneclick-popup .tdpd-price-new{margin-left:8px;font-size:22px;font-weight:500;color:#e5372b}
#oneclick-popup #you-save.price-tax{border-radius:7px;padding:3px 9px;font-size:12px;font-weight:500}

/* степпер количества — как на странице товара */
#oneclick-popup .payment-quantity{float:none;margin:0}
#oneclick-popup .payment-quantity .number .frame-change-count{display:inline-flex;align-items:center;width:auto;height:46px;margin:0;padding:0;border:1px solid #e2e4e9;border-radius:9px;background:#fff;overflow:hidden;vertical-align:middle;margin-top: 7px;}
#oneclick-popup .payment-quantity .btn-minus button,
#oneclick-popup .payment-quantity .btn-plus button{width:38px;height:44px;padding:0;border:0;background:transparent;color:#6a7078;line-height:44px}
#oneclick-popup .payment-quantity input.plus-minus{width:46px;height:44px;padding:0;border:0;background:#fff;background-image:none;filter:none;text-align:center;font-size:15px;color:#20242c}

/* Опции и кнопка вынесены правкой .tpl из колонок в отдельные строки на всю ширину попапа.
   ПОЧЕМУ: пока опции лежали в левой колонке, она вырастала до 650px против 350px у формы —
   между комментарием и кнопкой зияло 295px пустоты, и ни один вариант выравнивания её не убирал.
   Теперь колонки примерно равны по высоте, опциям достаётся вся ширина (длинные названия
   вроде «КОРПУС ЦВЕТНОЙ, ФАСАД ЦВЕТНОЙ» помещаются в строку вместе с ценой), а кнопка идёт
   последней — порядок чтения «товар → контакты → выбор опции → заказать» стал правильным. */
#oneclick-popup .tdpd-options-row{flex:1 1 100%;width:100%;text-align:left}
#oneclick-popup .popup-buttons-box{flex:1 1 100%;width:100%;margin:0}

/* опции товара — карточки-переключатели, как на странице товара */
#oneclick-popup .info-heading-2{margin:4px 0 10px;padding:0;border:0;font-size:15px;font-weight:500;color:#20242c;text-transform:none}
#oneclick-popup .form-group.product-info-li{margin:0 0 10px;text-align:left}
#oneclick-popup .form-group.product-info-li .control-label{display:block;margin:0 0 6px;font-size:13px;font-weight:500;color:#42474f}
/* у темы .options-box{margin-top:-10px} — список опций наезжал на подпись («* Мебель» упиралась в первую карточку) */
#oneclick-popup .options-box{margin-top:0}
#oneclick-popup .radio.tdpd-product-radio{display:block;margin:0 0 8px;padding:0;border:1px solid #e2e4e9;border-radius:10px;background:#fff;transition:border-color .15s,background .15s}
#oneclick-popup .radio.tdpd-product-radio:has(input:checked){border-color:#3f3ffa;background:#f4f5ff}
#oneclick-popup .radio.tdpd-product-radio:hover{border-color:#c8ccd4}
/* label = вся кликабельная площадь карточки; строка «радио — название — цена справа».
   Цена лежит ВНУТРИ label отдельным span'ом (правка в oct_popup_purchase.tpl): раньше это был
   голый текстовый узел рядом с label — CSS такой узел не адресует, и цена падала на свою строку. */
#oneclick-popup .radio.tdpd-product-radio label{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;width:100%;float:none;margin:0;padding:10px 12px;font-size:14px;line-height:1.3;font-weight:400;color:#20242c;cursor:pointer}
#oneclick-popup .radio.tdpd-product-radio input[type="radio"]{width:18px;height:18px;flex:0 0 18px;margin:0;accent-color:#3f3ffa;cursor:pointer}
#oneclick-popup .tdpd-opt-name{flex:1 1 auto;min-width:0}
/* после выноса опций на всю ширину места хватает — цена возвращается в строку, прижатая вправо */
#oneclick-popup .tdpd-opt-price{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:13px;font-weight:500;color:#6a7078;white-space:nowrap}
#oneclick-popup .radio.tdpd-product-radio:has(input:checked) .tdpd-opt-price{color:#3f3ffa}
#oneclick-popup select.form-control{height:46px;border:1px solid #e2e4e9;border-radius:10px;font-size:14px;color:#20242c}

/* правая колонка — форма. Не карточка: фон прозрачный, тянется на высоту левой колонки,
   слабину забирает поле комментария (flex:1), поэтому кнопка «Заказать» садится на низ без провала. */
#oneclick-popup .payment-info{display:flex;flex-direction:column;align-self:stretch;padding:0;background:transparent}
#oneclick-popup h2.popup-header{margin:0 0 14px;font-size:20px;font-weight:500;line-height:1.25;color:#20242c;text-align:left}
/* :not(.plus-minus) обязателен: поле количества в степпере — тоже input[type=text] внутри .popup-form-box,
   и у этого правила ровно та же специфичность, что у правила степпера выше (1 id + 2 класса + элемент;
   [type="text"] весит как класс). Побеждал порядок в файле — инпут количества растягивался на 100%,
   рамка степпера раздувалась со 152 до 190px. */
#oneclick-popup .popup-form-box input[type="text"]:not(.plus-minus),
#oneclick-popup .popup-form-box input[type="tel"],
#oneclick-popup .popup-form-box input[type="email"],
#oneclick-popup .popup-form-box textarea{display:block;width:100%;height:48px;margin:0 0 10px;padding:0 14px;border:1px solid #e2e4e9;border-radius:10px;background:#fff;background-image:none;filter:none;box-shadow:none;font-size:15px;color:#20242c}
/* min-height обязателен: popup.css и stylesheet.min.css ставят textarea min-height:120px, он перебивает height */
/* НЕ растягивать по высоте: на товаре с опциями левая колонка выше формы, и flex:1 раздувал
   комментарий до 240px — пустое поле такого размера читается как поломка вёрстки, а не как поле.
   Слабину вместо него забирает .popup-buttons-box{margin:auto 0 0} — кнопка садится на низ колонки. */
#oneclick-popup .popup-form-box textarea{flex:0 0 auto;height:90px;min-height:90px;padding:12px 14px;line-height:1.4;resize:none}
#oneclick-popup .popup-form-box input[type="text"]:not(.plus-minus):focus,
#oneclick-popup .popup-form-box input[type="tel"]:focus,
#oneclick-popup .popup-form-box input[type="email"]:focus,
#oneclick-popup .popup-form-box textarea:focus{border-color:#3f3ffa!important;box-shadow:0 0 0 3px rgba(63,63,250,.12);outline:none}
#oneclick-popup .popup-form-box input::-webkit-input-placeholder,
#oneclick-popup .popup-form-box textarea::-webkit-input-placeholder{font-family:inherit;font-size:15px;color:#9aa0a6}
#oneclick-popup .popup-form-box input::-moz-placeholder,
#oneclick-popup .popup-form-box textarea::-moz-placeholder{font-family:inherit;font-size:15px;color:#9aa0a6;opacity:1}
#oneclick-popup .popup-form-box input:-ms-input-placeholder,
#oneclick-popup .popup-form-box textarea:-ms-input-placeholder{font-family:inherit;font-size:15px;color:#9aa0a6}
#oneclick-popup .popup-form-box input::placeholder,
#oneclick-popup .popup-form-box textarea::placeholder{font-family:inherit;font-size:15px;color:#9aa0a6}

/* ошибки */
#oneclick-popup .error_style{border-color:#e5372b!important}
#oneclick-popup .text-danger{margin:-4px 0 8px;font-size:12.5px;line-height:1.35;color:#e5372b;text-align:left}
#oneclick-popup .alert{margin:0 0 14px;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.4}

/* кнопка «Заказать» прижата к низу колонки и во всю ширину (это <a>, потому line-height) */
#oneclick-popup .popup-buttons-box{margin:auto 0 0;padding-top:4px}
#oneclick-popup #popup-checkout-button.btn-send-custom{display:block;width:100%;height:50px;margin:0;padding:0;border:0;border-radius:10px;background:#3f3ffa!important;font-size:15px;font-weight:500;line-height:50px;color:#fff;cursor:pointer}
#oneclick-popup #popup-checkout-button.btn-send-custom:hover{background:#2f2fe0!important}

@media only screen and (max-width:600px){
  #oneclick-popup{max-width:none;width:calc(100vw - 24px);padding:20px 16px;border-radius:14px}
  #oneclick-popup #purchase-form{gap:16px}
  #oneclick-popup #purchase-form > .col-md-6,
  #oneclick-popup .payment-info{flex:1 1 100%}
  #oneclick-popup #purchase-form > .col-md-6 img.img-responsive{max-height:110px}
  #oneclick-popup h2.popup-header{font-size:18px}
  /* колонки в столбик — растягивать комментарий уже не нужно */
  #oneclick-popup .popup-form-box textarea{height:70px;min-height:70px}
  #oneclick-popup .tdpd-opt-price{font-size:12.5px}
}


/* ===== TDPD: страница оформления заказа (oct_fastorder) ===== */

/* body{overflow:hidden} выше по файлу делает body scroll-контейнером и убивает
   position:sticky. overflow-x:clip гасит горизонтальный скролл так же, но
   НЕ создаёт scroll-контейнер, поэтому overflow-y остаётся действительно visible. */
body.checkout-oct_fastorder,
body.tdpd-fo-page {
	overflow-x: clip;
	overflow-y: visible;
}

/* тема рисовала вертикальный «таймлайн» слева (border-left + padding-left:30px)
   под номера шагов, вынесенные за панель через left:-50px. Номера теперь внутри
   панелей — линия и отступ больше не нужны. */
.tdpd-checkout-content {
	border-left: 0;
	padding-left: 0;
	margin-left: 0;
}

.tdpd-checkout-content .row.checkout_form {
	margin-left: 0;
	margin-right: 0;
}
/* align-items НЕ flex-start: колонка должна растянуться на высоту main,
   иначе у sticky внутри неё нет хода и он никогда не срабатывает. */
.tdpd-fo-grid {
	display: flex;
	align-items: stretch;
	gap: 20px;
}
.tdpd-fo-main {
	flex: 1 1 auto;
	min-width: 0;
}
.tdpd-fo-main > * {
	float: none !important;
	width: auto !important;
	padding-left: 0;
	padding-right: 0;
}
.tdpd-fo-side {
	flex: 0 0 300px;
	width: 300px;
}
.tdpd-fo-side-inner {
	position: sticky;
	top: 20px;
	border: 1px solid #e8eaed;
	border-radius: 14px;
	background: #fff;
	padding: 16px;
}
.tdpd-fo-side-title {
	font-size: 16px;
	font-weight: 500;
	color: #20242c;
	margin-bottom: 12px;
}

/* панели-шаги */
/* stylesheet.min.css ставит .fastorder-panel-default{border-radius:0!important} — нужен !important */
.tdpd-checkout-content .fastorder-panel-default {
	border: 1px solid #e8eaed;
	border-radius: 14px !important;
	background: #fff;
	padding: 16px;
	margin-bottom: 14px;
	box-shadow: none;
}
/* тема вешает тяжёлую тень 0 2px 15px rgba(0,0,0,.35) на обёртку корзины */
.tdpd-checkout-content .checkout_form-first-div #cart-table .panel-collapse,
.tdpd-checkout-content #cart-table .panel-collapse {
	box-shadow: none;
	border-radius: 0;
}
.tdpd-checkout-content .fastorder-panel-default + .fastorder-panel-default {
	margin-bottom: 14px;
}
.tdpd-checkout-content .fastorder-panel-default .panel-heading,
.tdpd-checkout-content .fastorder-panel-default .panel-body {
	padding: 0;
	border: 0;
	background: none;
}
.tdpd-checkout-content .fastorder-panel-group {
	margin-bottom: 0;
}
.tdpd-checkout-content .tdpd-fastorder-header {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 17px;
	font-weight: 500;
	color: #20242c;
	margin: 0 0 14px;
	padding: 0;
}
/* тема уносит номер шага за панель: .tdpd-fastorder-header span{position:absolute;left:-50px} */
.tdpd-checkout-content .tdpd-fastorder-header > span {
	position: static;
	left: auto;
	top: auto;
	flex: none;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: #3f3ffa;
	color: #fff;
	font-size: 13px;
	font-weight: 500;
	display: flex;
	align-items: center;
	justify-content: center;
}

/* корзина: таблица -> карточки */
.tdpd-checkout-content .tdpd-bottom-cart-box .table-responsive {
	border: 0;
	overflow: visible;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table {
	margin: 0;
	border: 0;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table thead {
	display: none;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody {
	display: block;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	padding: 12px 0;
	border-top: 1px solid #eceef1;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr:first-child {
	border-top: 0;
	padding-top: 0;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td {
	display: block;
	border: 0 !important;
	padding: 0;
	background: none;
	vertical-align: middle;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.image-td {
	order: 1;
	flex: none;
	width: 64px;
	margin-right: 12px;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.image-td img {
	width: 64px;
	height: 64px;
	object-fit: contain;
	background: #f7f8fa;
	border: 0;
	border-radius: 10px;
	padding: 4px;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.text-left {
	order: 2;
	flex: 1 1 180px;
	min-width: 0;
	padding-right: 12px;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table .tdpd-bottom-cart-table-text {
	padding: 0 !important;
	font-size: 14px;
	line-height: 1.35;
	color: #20242c;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td small {
	display: inline-block;
	margin-top: 3px;
	font-size: 12px;
	color: #7a7f8a;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.text-center:has(.tdpd-fo-qty) {
	order: 4;
	flex: none;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.text-center:not(.image-td):not(:has(.tdpd-fo-qty)) {
	display: none;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.popup-table-price {
	order: 5;
	flex: none;
	width: 130px;
	text-align: right;
	white-space: nowrap;
	font-size: 13px;
	color: #7a7f8a;
	padding-left: 12px;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.popup-table-price:last-child {
	order: 6;
	width: 150px;
	font-size: 16px;
	font-weight: 500;
	color: #20242c;
}
.tdpd-checkout-content .tdpd-bottom-cart-box td.delete-td {
	order: 9;
	flex: none;
	width: 26px;
	text-align: right;
}
.tdpd-checkout-content .tdpd-bottom-cart-box td.delete-td button {
	margin-left: 0 !important;
	color: #b9bec7;
	font-size: 20px;
	line-height: 1;
}
.tdpd-checkout-content .tdpd-bottom-cart-box td.delete-td button:hover {
	color: #e05e64;
}

/* степпер количества */
.tdpd-fo-qty {
	display: inline-flex !important;
	align-items: center;
	width: auto !important;
	max-width: none !important;
	border: 1px solid #e2e4e9;
	border-radius: 10px;
	overflow: hidden;
	height: 40px;
}
.tdpd-fo-qty-btn {
	flex: none;
	width: 34px;
	height: 38px;
	border: 0;
	background: none;
	color: #4a5060;
	font-size: 17px;
	line-height: 1;
	padding: 0;
}
.tdpd-fo-qty-btn:hover {
	background: #f4f5f7;
	color: #3f3ffa;
}
.tdpd-checkout-content .tdpd-bottom-cart-box .table .tdpd-fo-qty .form-control {
	width: 38px !important;
	max-width: 38px !important;
	min-width: 0;
	height: 38px;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0;
	background: #fff;
	background-image: none;
	filter: none;
	box-shadow: none;
	text-align: center;
	font-size: 14px;
	color: #20242c;
}

/* итоги в правой колонке */
.tdpd-fo-main .tdpd-bottom-cart-total-cart {
	display: none;
}
#tdpd-fo-totals .total-text {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
	font-size: 14px;
	line-height: 1.4;
	color: #6b7280;
	margin: 0 0 8px;
	text-align: left;
}
#tdpd-fo-totals .total-text span {
	color: #20242c;
	font-family: inherit;
	white-space: nowrap;
}
#tdpd-fo-totals .total-text:last-child {
	border-top: 1px solid #e8eaed;
	padding-top: 10px;
	margin-top: 10px;
	margin-bottom: 0;
	font-size: 15px;
	font-weight: 500;
	color: #20242c;
}
#tdpd-fo-totals .total-text:last-child span {
	font-size: 21px;
	font-weight: 500;
	color: #3f3ffa;
}

/* кнопка заказа и подпись */
.tdpd-fo-side .tdpd-fastorder-payment {
	padding: 0 !important;
	margin-top: 14px;
}
.tdpd-fo-side #button-go {
	display: block;
	width: 100%;
	max-width: none;
	height: 50px;
	line-height: 50px;
	padding: 0;
	border: 0;
	border-radius: 10px;
	background: #3f3ffa;
	color: #fff;
	font-size: 15px;
	font-weight: 500;
	text-transform: none;
}
.tdpd-fo-side #button-go:hover {
	background: #3333d6;
}
.tdpd-fo-legal p {
	margin: 10px 0 0;
	font-size: 11px;
	line-height: 1.5;
	color: #9aa0ab;
}
.tdpd-fo-legal a {
	color: #9aa0ab;
	text-decoration: underline;
}
.tdpd-fo-trust {
	border-top: 1px solid #e8eaed;
	margin-top: 14px;
	padding-top: 12px;
}
.tdpd-fo-trust-item {
	display: flex;
	align-items: center;
	gap: 9px;
	font-size: 12px;
	line-height: 1.35;
	color: #4a5060;
	margin-bottom: 9px;
}
.tdpd-fo-trust-item:last-child {
	margin-bottom: 0;
}
.tdpd-fo-trust-item svg {
	flex: none;
}

/* поля формы */
.tdpd-fo-main .register_block .row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 14px;
	margin-left: 0;
	margin-right: 0;
}
.tdpd-fo-main .register_block .row > .form-group {
	float: none !important;
	width: auto !important;
	padding-left: 0;
	padding-right: 0;
	margin-bottom: 12px;
}
/* bootstrap даёт .row псевдоэлементы-clearfix (.row:before/:after{content:" "}).
   В grid-контейнере они становятся полноценными grid-элементами и занимают
   ячейки — из-за этого первое поле уезжало во вторую колонку, а слева зияла дыра. */
.tdpd-fo-main .register_block .row::before,
.tdpd-fo-main .register_block .row::after {
	display: none;
}
.tdpd-fo-main .register_block .row > .form-group:has(textarea) {
	grid-column: 1 / -1;
}
/* Адрес/Город и пароли лежат НЕ прямыми детьми .row, а во вложенных обёртках,
   поэтому у них оставался bootstrap-padding 15px и они не совпадали по левому
   краю с Именем/Телефоном. Гасим padding у всех .form-group блока, на любой глубине. */
.tdpd-fo-main .register_block .form-group {
	padding-left: 0;
	padding-right: 0;
}
/* вложенные обёртки (адрес+город, форма регистрации) — на всю ширину и со своей
   сеткой в две колонки, вровень с рядом Имя | Телефон */
.tdpd-fo-main .register_block .row > div:not(.form-group) {
	grid-column: 1 / -1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 14px;
}
.tdpd-fo-main .register_block .row > div:not(.form-group)::before,
.tdpd-fo-main .register_block .row > div:not(.form-group)::after {
	display: none;
}

/* чекбоксы: bootstrap вырывает их из потока, галка уезжала над текстом */
.tdpd-fo-main .register_block .form-group:has(> input[type="checkbox"]) {
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	gap: 10px;
}
.tdpd-fo-main .register_block .form-group > input[type="checkbox"] {
	position: relative !important;
	flex: none;
	margin: 0 !important;
	top: auto;
	left: auto;
}
.tdpd-fo-main .register_block .form-group:has(> input[type="checkbox"]) label {
	margin: 0;
	font-size: 13px;
	line-height: 1.4;
	color: #4a5060;
}
/* имя и телефон — первой строкой, остальное следом в порядке разметки */
.tdpd-fo-main .register_block .row > * {
	order: 4;
}
.tdpd-fo-main .register_block .row > .form-group:has(#input-payment-firstname) {
	order: 1;
}
.tdpd-fo-main .register_block .row > .form-group:has(#input-payment-telephone) {
	order: 2;
}
.tdpd-fo-main .register_block .row > .form-group:has(#input-payment-email) {
	order: 3;
}
.tdpd-checkout-content .form-group .control-label {
	display: block;
	font-size: 12px;
	font-weight: 400;
	color: #6b7280;
	margin-bottom: 5px;
	padding: 0;
}
.tdpd-checkout-content .form-group.required .control-label:after {
	content: ' *';
	color: #e05e64;
}
.tdpd-checkout-content .panel-body .form-control {
	height: 48px;
	border: 1px solid #e2e4e9;
	border-radius: 10px;
	background: #fff;
	background-image: none;
	filter: none;
	box-shadow: none;
	padding: 0 14px;
	font-size: 14px;
	color: #20242c;
}
.tdpd-checkout-content .panel-body textarea.form-control {
	height: 90px;
	min-height: 90px;
	padding: 12px 14px;
	line-height: 1.45;
}
.tdpd-checkout-content .panel-body .form-control:focus {
	border-color: #3f3ffa;
	box-shadow: none;
}

/* доставка и оплата — карточки-переключатели */
.tdpd-checkout-content .shipping-method p,
.tdpd-checkout-content .payment-method p {
	font-size: 13px;
	color: #6b7280;
	margin: 0 0 10px;
}
.tdpd-checkout-content .shipping-method .radio,
.tdpd-checkout-content .payment-method .radio {
	border: 1px solid #e2e4e9;
	border-radius: 10px;
	background: #fff;
	margin: 0 0 8px;
	padding: 0;
}
.tdpd-checkout-content .shipping-method .radio:has(input:checked),
.tdpd-checkout-content .payment-method .radio:has(input:checked) {
	border-color: #3f3ffa;
	background: #f4f5ff;
}
.tdpd-checkout-content .shipping-method .radio > label,
.tdpd-checkout-content .payment-method .radio > label {
	display: flex;
	align-items: center;
	width: 100%;
	margin: 0;
	padding: 12px 14px 12px 16px;
	font-size: 14px;
	line-height: 1.35;
	color: #20242c;
	cursor: pointer;
}
/* bootstrap задаёт .radio input{position:absolute;margin-left:-20px} — кружок вылезал
   за левый край карточки. Возвращаем инпут в поток флекса. */
.tdpd-checkout-content .shipping-method .radio > label > input,
.tdpd-checkout-content .payment-method .radio > label > input {
	position: relative !important;
	flex: none;
	margin: 0 12px 0 2px !important;
	top: auto;
	left: auto;
}

/* мобильная липкая панель */
#tdpd-fo-bar {
	display: none;
}

@media (max-width: 991px) {
	.tdpd-fo-grid {
		display: block;
	}
	.tdpd-fo-side {
		width: auto;
		margin-top: 14px;
	}
	.tdpd-fo-side-inner {
		position: static;
	}
}

@media (max-width: 767px) {
	.tdpd-fo-main .register_block .row {
		grid-template-columns: 1fr;
	}
	.tdpd-checkout-content .fastorder-panel-default,
	.tdpd-fo-side-inner {
		padding: 14px;
		border-radius: 12px;
	}
	.tdpd-checkout-content .tdpd-fastorder-header {
		font-size: 15px;
	}
	/* карточка товара: фото слева на две строки, справа название,
	   ниже степпер и сумма в одну строку */
	.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr {
		display: grid;
		grid-template-columns: 56px minmax(0, 1fr) 22px;
		column-gap: 10px;
		row-gap: 10px;
		align-items: start;
	}
	.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.image-td {
		grid-column: 1;
		grid-row: 1 / span 2;
		width: 56px;
		margin-right: 0;
	}
	.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.image-td img {
		width: 56px;
		height: 56px;
	}
	.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.text-left {
		grid-column: 2;
		grid-row: 1;
		padding-right: 0;
	}
	.tdpd-checkout-content .tdpd-bottom-cart-box td.delete-td {
		grid-column: 3;
		grid-row: 1;
		width: 22px;
	}
	.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.text-center:has(.tdpd-fo-qty) {
		grid-column: 2;
		grid-row: 2;
		justify-self: start;
		align-self: center;
		margin: 0;
	}
	.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.popup-table-price {
		display: none;
	}
	.tdpd-checkout-content .tdpd-bottom-cart-box .table tbody > tr > td.popup-table-price:last-child {
		display: block;
		grid-column: 2 / -1;
		grid-row: 2;
		justify-self: end;
		align-self: center;
		width: auto;
		margin: 0;
		padding-left: 0;
	}
	.tdpd-fo-page {
		padding-bottom: 74px;
	}
	.tdpd-fo-page #tdpd-bottom-cart-link {
		display: none !important;
	}
	#tdpd-fo-bar {
		display: flex;
		align-items: center;
		gap: 12px;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 130;
		background: #fff;
		border-top: 1px solid #e8eaed;
		box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.06);
		padding: 10px 12px;
	}
	.tdpd-fo-bar-sum {
		flex: none;
		line-height: 1.2;
	}
	.tdpd-fo-bar-sum span {
		display: block;
		font-size: 11px;
		color: #7a7f8a;
	}
	.tdpd-fo-bar-sum strong {
		display: block;
		font-size: 17px;
		font-weight: 500;
		color: #20242c;
		white-space: nowrap;
	}
	.tdpd-fo-bar-btn {
		flex: 1 1 auto;
		height: 46px;
		border: 0;
		border-radius: 10px;
		background: #3f3ffa;
		color: #fff;
		font-size: 14px;
		font-weight: 500;
	}
	.tdpd-fo-side .tdpd-fastorder-payment {
		margin-top: 12px;
	}
}

/* ===== TDPD: попап корзины ===== */
/* панель: шапка и подвал зафиксированы, скроллится только список позиций */
#cart-popup {
	max-width: 42rem;
	padding: 0;
	overflow: hidden;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-direction: column;
	flex-direction: column;
}
#cart-popup #popup-cart-inner {
	-webkit-flex: 1;
	flex: 1;
	min-height: 0;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-direction: column;
	flex-direction: column;
}
#cart-popup .mfp-close {
	top: 12px;
	right: 10px;
	color: #9aa0a6;
}

/* шапка */
#cart-popup .tdpd-carousel-header {
	-webkit-flex: none;
	flex: none;
	padding: 20px 24px 0;
	margin: 0;
	font-size: 20px;
	font-weight: 500;
	line-height: 1.3;
	color: #20242c;
	text-align: left;
	text-transform: none;
	border: 0;
}
#cart-popup .popup-text {
	-webkit-flex: none;
	flex: none;
	margin: 4px 0 0;
	padding: 0 24px 14px;
	border-bottom: 1px solid #ecedef;
	font-size: 13px;
	color: #8a9099;
}
#cart-popup .popup-text p {
	margin: 0;
	font-size: 13px;
}
#cart-popup .popup-text span,
#cart-popup .popup-text .gold {
	color: #8a9099;
	font-size: 13px;
}
#cart-popup .alert {
	margin: 12px 24px 0;
}

/* список позиций */
#cart-popup .popup-cart-box {
	-webkit-flex: 1;
	flex: 1;
	min-height: 0;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-direction: column;
	flex-direction: column;
}
#cart-popup .popup-cart-box > form {
	-webkit-flex: 1;
	flex: 1;
	min-height: 0;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-direction: column;
	flex-direction: column;
}
#cart-popup .tdpd-cart-box {
	-webkit-flex: 1;
	flex: 1;
	min-height: 0;
	max-height: none;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	padding: 0 24px;
}

/* одна позиция = одна строка */
#cart-popup .tdpd-cart-row {
	position: relative;
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: flex-start;
	align-items: flex-start;
	padding: 16px 0;
	border-bottom: 1px solid #ecedef;
}
#cart-popup .tdpd-cart-row:last-child {
	border-bottom: 0;
}
#cart-popup .tdpd-cart-thumb {
	-webkit-flex: none;
	flex: none;
	width: 64px;
	height: 64px;
	margin-right: 12px;
	background: #f7f8fa;
	border-radius: 10px;
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: center;
	justify-content: center;
	overflow: hidden;
}
/* обёртка <a> — сама флекс-элемент с auto-высотой, поэтому размер задаём ей, иначе max-height у img не к чему привязать */
#cart-popup .tdpd-cart-thumb a {
	display: block;
	width: 64px;
	height: 64px;
	line-height: 0;
}
#cart-popup .tdpd-cart-thumb img {
	width: 100%;
	height: 100%;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	border: 0;
	padding: 0;
	background: none;
}
#cart-popup .tdpd-cart-main {
	-webkit-flex: 1;
	flex: 1;
	min-width: 0;
	padding-right: 24px;
}
#cart-popup .popup-cart-box .tdpd-popup-cart-link {
	display: block;
	font-size: 14px;
	line-height: 1.35;
	color: #20242c !important;
}
#cart-popup .tdpd-cart-opt {
	margin-top: 3px;
	font-size: 12px;
	line-height: 1.3;
	color: #8a9099;
}
#cart-popup .tdpd-cart-line {
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: space-between;
	justify-content: space-between;
	margin-top: 10px;
}

/* степпер количества */
#cart-popup .tdpd-cart-step {
	display: -webkit-inline-flex;
	display: inline-flex;
	-webkit-align-items: center;
	align-items: center;
	height: 34px;
	border: 1px solid #e2e4e9;
	border-radius: 8px;
	overflow: hidden;
}
#cart-popup .tdpd-step-btn {
	width: 32px;
	height: 32px;
	padding: 0;
	border: 0;
	background: none;
	box-shadow: none;
	color: #6b7280;
	font-size: 16px;
	line-height: 32px;
	text-align: center;
}
#cart-popup .tdpd-step-btn:hover {
	background: #f4f5f7;
	color: #20242c;
}
#cart-popup .tdpd-cart-step input[type="text"].tdpd-cart-qty {
	width: 38px;
	height: 32px;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: #fff;
	background-image: none;
	filter: none;
	box-shadow: none;
	font-size: 14px;
	font-weight: 500;
	color: #20242c;
	text-align: center;
}
#cart-popup .tdpd-cart-sum {
	font-size: 15px;
	font-weight: 500;
	color: #20242c;
	white-space: nowrap;
}

/* удаление позиции */
#cart-popup .tdpd-cart-del {
	position: absolute;
	top: 12px;
	right: 0;
}
#cart-popup .tdpd-cart-del-btn {
	width: 24px;
	height: 24px;
	padding: 0;
	border: 0;
	background: none;
	box-shadow: none;
	color: #bfc4cb;
	font-size: 20px;
	line-height: 24px;
}
#cart-popup .tdpd-cart-del-btn:hover {
	color: #e05e64;
}

/* подвал: итог и кнопки */
#cart-popup .popup-total-cart {
	-webkit-flex: none;
	flex: none;
	margin: 0;
	padding: 16px 24px 20px;
	border-top: 1px solid #ecedef;
	background: #fff;
}
#cart-popup .popup-total-cart .total-text {
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: baseline;
	align-items: baseline;
	-webkit-justify-content: space-between;
	justify-content: space-between;
	margin-bottom: 12px;
	text-align: left;
}
#cart-popup .popup-total-cart .total_sub {
	float: none;
	font-size: 15px;
	font-weight: 400;
	color: #8a9099;
}
#cart-popup .popup-total-cart .gold {
	font-size: 22px;
	font-weight: 500;
	color: #20242c;
}
/* тема даёт .continue float:right — без сброса подвал схлопывается и строка доверия обтекает флоат */
#cart-popup .popup-buttons-box {
	overflow: hidden;
}
#cart-popup .popup-buttons-box .popup-button.tdpd-btn-blue {
	height: 50px;
	padding: 0 16px;
	border-radius: 9px;
	font-size: 15px;
	font-weight: 500;
	line-height: 50px;
	color: #fff;
	text-transform: none;
}
#cart-popup .popup-buttons-box .popup-button.continue {
	display: block;
	float: none;
	width: 100%;
	height: auto;
	margin: 12px 0 0;
	padding: 10px 0;
	border: 0;
	background: none;
	font-size: 14px;
	line-height: 20px;
	color: #6b7280;
	text-align: center;
	text-transform: none;
}
#cart-popup .popup-buttons-box .popup-button.continue:hover {
	color: #3f3ffa;
}
#cart-popup .popup-buttons-box .popup-button.continue .icon-arrow-right-circle {
	margin-left: 7px;
	vertical-align: middle;
}
#cart-popup .tdpd-cart-trust {
	clear: both;
	margin-top: 14px;
	font-size: 12px;
	line-height: 1.4;
	color: #9aa0a6;
	text-align: center;
}

/* пустая корзина */
#cart-popup .tdpd-cart-empty {
	-webkit-flex: 1;
	flex: 1;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-direction: column;
	flex-direction: column;
	-webkit-justify-content: center;
	justify-content: center;
	padding: 0 32px 40px;
	text-align: center;
}
#cart-popup .tdpd-cart-empty-icon {
	margin-bottom: 14px;
	font-size: 40px;
	color: #d4d7dd;
}
#cart-popup .tdpd-cart-empty-title {
	margin: 0 0 6px;
	font-size: 18px;
	font-weight: 500;
	color: #20242c;
}
#cart-popup .tdpd-cart-empty-note {
	margin: 0 0 22px;
	font-size: 14px;
	line-height: 1.45;
	color: #8a9099;
}

@media (max-width: 768px) {
	#cart-popup {
		width: 100%;
		max-width: 100%;
	}
	#cart-popup .tdpd-carousel-header {
		padding: 18px 18px 0;
		font-size: 18px;
	}
	#cart-popup .popup-text {
		padding: 0 18px 12px;
	}
	#cart-popup .tdpd-cart-box {
		padding: 0 18px;
	}
	#cart-popup .popup-total-cart {
		padding: 14px 18px 18px;
	}
	#cart-popup .tdpd-cart-thumb,
	#cart-popup .tdpd-cart-thumb a {
		width: 56px;
		height: 56px;
	}
}

/* ===== TDPD: попап выбора опции товара (#product-options-popup) =====
   Открывается по «В корзину» с карточки в листинге, если у товара есть опции.
   Разметка почти совпадает с «Купить в 1 клик», поэтому приёмы те же.
   Требует правки oct_popup_product_options.tpl: название и цена значения обёрнуты
   в .tdpd-opt-name/.tdpd-opt-price, префикс «=» («цена значения ЗАМЕНЯЕТ цену
   товара») в вывод не пускается. Раньше цена была голым текстовым узлом РЯДОМ
   с label — CSS его не адресует, и она падала на отдельную строку. */

#product-options-popup{max-width:560px;padding:26px;border-radius:16px;box-shadow:0 24px 60px rgba(20,25,60,.22);text-align:left}
#product-options-popup .mfp-close{top:4px;right:4px;width:38px;height:38px;padding:0!important;line-height:38px!important;font-size:26px;color:#9aa0a6;opacity:1}
#product-options-popup .mfp-close:hover{color:#20242c}

/* шапка и название товара — по левому краю; тема центрует .popup-h3 */
#product-options-popup h2.popup-header{margin:0 0 4px;font-size:20px;font-weight:500;line-height:1.25;color:#20242c;text-align:left}
#product-options-popup .popup-h3{margin:0;font-size:15px;font-weight:400;line-height:1.35;color:#6a7078;text-align:left;text-transform:none}
#product-options-popup #purchase-form{margin:0;text-align:left}

/* Шапка карточки: миниатюра слева, справа название и строка количества.
   Требует правки .tpl (обёртки .tdpd-po-head/.tdpd-po-thumb/.tdpd-po-meta вместо
   bootstrap-строки .row > .col-sm-12) и контроллера (модуль не отдавал $thumb). */
#product-options-popup .tdpd-po-head{display:flex;align-items:flex-start;gap:14px;margin:12px 0 0;padding:0 0 14px;border-bottom:1px solid #ecedef}
#product-options-popup .tdpd-po-thumb{flex:none;width:64px;height:64px;padding:4px;border:1px solid #eceef1;border-radius:10px;background:#f7f8fa}
#product-options-popup .tdpd-po-thumb img{display:block;width:100%;height:100%;object-fit:contain}
#product-options-popup .tdpd-po-meta{flex:1 1 auto;min-width:0}
#product-options-popup .tdpd-po-meta .popup-h3{margin:0 0 8px}

/* «Количество» — подпись и степпер СЛИТНО и прижаты влево, сразу под названием
   (раньше стояло space-between, и степпер болтался в стороне без привязки).
   Размеры один в один с .tdpd-fo-qty на странице оформления заказа.
   flex:none на обоих детях и width:100% на контейнере — чтобы раскладка не
   зависела от float/width, которые тема раздаёт .number и .frame-change-count
   (напр. #product-options-popup .number .frame-change-count{width:30%;margin:0 auto}). */
/* Селектор ОБЯЗАН содержать оба id: выше по файлу (custom.css:1956) лежит правило
   прошлого разработчика `#product-options-popup #purchase-form .payment-quantity
   {clear:both;width:30%;margin:0 auto}` — 2 id против 1 у меня, оно выигрывало,
   блок был шириной 30% и отцентрован. Именно из-за него степпер «плавал». */
#product-options-popup #purchase-form .payment-quantity{display:flex;align-items:center;justify-content:flex-start;gap:10px;clear:none;float:none;width:100%;margin:0;padding:0;text-align:left}
#product-options-popup .payment-quantity label{flex:none;display:block;margin:0;font-size:14px;font-weight:400;color:#42474f;text-align:left}
#product-options-popup .number{flex:none;float:none;width:auto;margin:0;padding:0;background:transparent;text-align:left}
#product-options-popup .number .frame-change-count{display:inline-flex;align-items:center;width:auto;height:40px;margin:0;padding:0;border:1px solid #e2e4e9;border-radius:10px;background:#fff;overflow:hidden}
#product-options-popup .payment-quantity .btn-minus button,
#product-options-popup .payment-quantity .btn-plus button{width:34px;height:38px;padding:0;border:0;background:transparent;color:#4a5060;line-height:38px}
#product-options-popup .payment-quantity .btn-minus button:hover,
#product-options-popup .payment-quantity .btn-plus button:hover{background:#f4f5f7;color:#3f3ffa}
#product-options-popup input.plus-minus{width:38px;height:38px;padding:0;border:0;background:#fff;background-image:none;filter:none;box-shadow:none;text-align:center;font-size:14px;color:#20242c}

/* опции — карточки-переключатели, как в «Купить в 1 клик» и на странице товара */
#product-options-popup .info-heading-2{margin:16px 0 10px;padding:0;border:0;font-size:15px;font-weight:500;color:#20242c;text-align:left;text-transform:none}
#product-options-popup .form-group.product-info-li{margin:0 0 10px;padding:0;text-align:left}
#product-options-popup .form-group.product-info-li .control-label{display:block;margin:0 0 6px;font-family:inherit;font-size:13px;font-weight:500;color:#42474f}
/* тема: .options-box{margin-top:-10px} — список наезжал на подпись опции */
#product-options-popup .options-box{margin-top:0}
/* тема: .options-box .radio{display:inline-block} — карточки вставали в строку */
#product-options-popup .options-box .radio.tdpd-product-radio{display:block;margin:0 0 8px;padding:0;border:1px solid #e2e4e9;border-radius:10px;background:#fff;transition:border-color .15s,background .15s}
#product-options-popup .options-box .radio.tdpd-product-radio:hover{border-color:#c8ccd4}
#product-options-popup .options-box .radio.tdpd-product-radio:has(input:checked){border-color:#3f3ffa;background:#f4f5ff}
#product-options-popup .options-box .radio.tdpd-product-radio label{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;width:100%;float:none;margin:0;padding:10px 12px;font-size:14px;font-weight:400;line-height:1.3;color:#20242c;cursor:pointer}
/* bootstrap .radio input{position:absolute;margin-left:-20px} вырывает кружок из флекса за левый край */
#product-options-popup .options-box .radio.tdpd-product-radio input[type="radio"]{position:relative!important;top:auto;left:auto;flex:0 0 18px;width:18px;height:18px;margin:0!important;accent-color:#3f3ffa;cursor:pointer}
#product-options-popup .tdpd-opt-name{flex:1 1 auto;min-width:0}
#product-options-popup .tdpd-opt-price{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:13px;font-weight:500;color:#6a7078;white-space:nowrap}
#product-options-popup .options-box .radio.tdpd-product-radio:has(input:checked) .tdpd-opt-price{color:#3f3ffa}

/* опции-чекбоксы — та же карточка */
#product-options-popup .options-box .checkbox{display:block;margin:0 0 8px;padding:0;border:1px solid #e2e4e9;border-radius:10px;background:#fff}
#product-options-popup .options-box .checkbox:has(input:checked){border-color:#3f3ffa;background:#f4f5ff}
#product-options-popup .options-box .checkbox > label{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;width:100%;float:none;margin:0;padding:10px 12px;font-size:14px;line-height:1.3;color:#20242c;cursor:pointer}
#product-options-popup .options-box .checkbox > label > input[type="checkbox"]{position:relative!important;top:auto;left:auto;flex:0 0 17px;width:17px;height:17px;margin:0!important;accent-color:#3f3ffa;cursor:pointer}

/* опции-поля. :not(.tdpd-quantity-text-input) — иначе правило цепляет
   инпуты количества в таблице расширенных опций (у них тоже .form-control). */
#product-options-popup select.form-control,
#product-options-popup input.form-control[type="text"]:not(.tdpd-quantity-text-input),
#product-options-popup textarea.form-control{width:100%;height:46px;padding:0 14px;border:1px solid #e2e4e9;border-radius:10px;background:#fff;background-image:none;filter:none;box-shadow:none;font-size:14px;color:#20242c}
#product-options-popup textarea.form-control{height:90px;min-height:90px;padding:12px 14px;line-height:1.45}
#product-options-popup select.form-control:focus,
#product-options-popup input.form-control[type="text"]:not(.tdpd-quantity-text-input):focus,
#product-options-popup textarea.form-control:focus{border-color:#3f3ffa;box-shadow:0 0 0 3px rgba(63,63,250,.12);outline:none}

/* сообщения */
#product-options-popup .alert{margin:0 0 14px;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.4;text-align:left}
#product-options-popup .text-danger{margin:4px 0 0;font-size:12.5px;line-height:1.35;color:#e5372b;text-align:left}

/* кнопки. Тема даёт .popup-button + .popup-button{float:right} — во флексе float лишний.
   Обе кнопки — <a>, поэтому вертикальное центрирование только через line-height. */
#product-options-popup .popup-buttons-box{display:flex;align-items:center;gap:14px;margin:18px 0 0;padding-top:16px;border-top:1px solid #ecedef}
#product-options-popup .popup-buttons-box .popup-button{display:block;max-width:none;margin:0;text-align:center;text-transform:none}
#product-options-popup .popup-buttons-box #popup-checkout-button{flex:1 1 auto;height:50px;padding:0 16px;border:0;border-radius:10px;background:#3f3ffa!important;font-size:15px;font-weight:500;line-height:50px;color:#fff}
#product-options-popup .popup-buttons-box #popup-checkout-button:hover{background:#2f2fe0!important}
#product-options-popup .popup-buttons-box #popup-checkout-button .icons{margin-right:8px}
#product-options-popup .popup-buttons-box .popup-button.continue{float:none;flex:0 0 auto;height:50px;padding:0;border:0;background:none;font-size:14px;line-height:50px;color:#6b7280}
#product-options-popup .popup-buttons-box .popup-button.continue:hover{color:#3f3ffa}
#product-options-popup .popup-buttons-box .popup-button.continue .icon-arrow-right-circle{margin-left:7px}

@media only screen and (max-width:600px){
  #product-options-popup{max-width:none;width:calc(100vw - 24px);padding:20px 16px;border-radius:14px}
  #product-options-popup h2.popup-header{font-size:18px}
  #product-options-popup .tdpd-opt-price{font-size:12.5px}
  /* кнопки в столбик: «Продолжить покупки» рядом с основной уже не помещается */
  #product-options-popup .popup-buttons-box{flex-wrap:wrap;gap:4px}
  #product-options-popup .popup-buttons-box .popup-button{flex:1 1 100%}
}


/* ===== TDPD: оформление заказа — доработки после первой приёмки ===== */

/* stylesheet.min.css:185 даёт div.required .control-label:before{content:'* ';color:red},
   а наш :after добавляет звёздочку справа — у обязательных полей выходило «* Пароль *». */
.tdpd-checkout-content div.required .control-label:before {
	content: none;
}

/* Блок 5 «Что бы вы хотели сделать дальше?» — единственный шаг, который в шаблоне
   лежит вне .fastorder-panel-default (просто .col-sm-12). Из-за этого он шёл без
   карточки, а его номер стоял на 16px левее номеров шагов 1–4. Выдаём ту же
   карточку стилями, без правки fastorder.tpl. */
.tdpd-checkout-content .tdpd-fastorder-next-choice {
	border: 1px solid #e8eaed;
	border-radius: 14px;
	background: #fff;
	padding: 16px;
	margin-bottom: 14px;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .tdpd-fastorder-header {
	margin-bottom: 8px;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice > p {
	margin: 0 0 12px;
	font-size: 13px;
	line-height: 1.45;
	color: #6b7280;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .panel-group {
	margin-bottom: 0;
}
/* аккордеоны купона/сертификата/баллов приходят модулями с голым .panel.panel-default.
   stylesheet.min.css:4394 даёт .fastorder-panel-group .panel-default{border-radius:0!important}
   — скругление здесь тоже приходится писать через !important. */
.tdpd-checkout-content .tdpd-fastorder-next-choice .panel-group .panel {
	margin: 0 0 8px;
	border: 1px solid #e8eaed;
	border-radius: 10px !important;
	background: #fff;
	box-shadow: none;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .panel-group .panel:last-child {
	margin-bottom: 0;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .panel-heading {
	padding: 0;
	border: 0;
	background: none;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .panel-title {
	margin: 0;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .panel-title > a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 13px 14px;
	font-size: 14px;
	font-weight: 400;
	color: #20242c;
	text-decoration: none;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .panel-title > a .fa {
	flex: none;
	font-size: 13px;
	color: #9aa0a6;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .panel-body {
	padding: 0 14px 14px;
	border: 0;
}
/* .input-group у bootstrap — display:table; переводим в флекс, чтобы поле и кнопка
   были одной высоты и со своими скруглениями (bootstrap обнуляет radius у крайних). */
.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group {
	display: flex;
	gap: 8px;
	width: 100%;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group .form-control {
	flex: 1 1 auto;
	width: auto;
	height: 46px;
	padding: 0 14px;
	border: 1px solid #e2e4e9;
	border-radius: 10px;
	background: #fff;
	background-image: none;
	filter: none;
	box-shadow: none;
	font-size: 14px;
	color: #20242c;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group .form-control:focus {
	border-color: #3f3ffa;
	box-shadow: none;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group-btn {
	flex: none;
	width: auto;
	font-size: inherit;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group-btn .tdpd-button {
	height: 46px;
	padding: 0 18px;
	border: 0;
	border-radius: 10px;
	background: #3f3ffa;
	color: #fff;
	font-size: 14px;
	font-weight: 500;
}
.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group-btn .tdpd-button:hover {
	background: #3333d6;
}

@media (max-width: 767px) {
	/* Вложенные обёртки формы клиента (адрес+город и .register-form с паролями)
	   получают grid-template-columns:1fr 1fr выше по файлу. Существующий
	   медиазапрос переводил в одну колонку только сам .row, поэтому на мобильном
	   пароль и подтверждение оставались рядом и не помещались по ширине. */
	.tdpd-fo-main .register_block .row > div:not(.form-group) {
		grid-template-columns: 1fr;
	}
	.tdpd-checkout-content .tdpd-fastorder-next-choice {
		padding: 14px;
		border-radius: 12px;
	}
	/* поле купона и кнопка — в столбик, в строку они не помещаются */
	.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group {
		flex-wrap: wrap;
	}
	.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group .form-control,
	.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group-btn {
		flex: 1 1 100%;
	}
	.tdpd-checkout-content .tdpd-fastorder-next-choice .input-group-btn .tdpd-button {
		width: 100%;
	}
}

@font-face{font-family:'Rubik';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/rubik-v31-cyrillic_latin_latin-ext-regular.woff2') format('woff2')}
@font-face{font-family:'Rubik';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/rubik-v31-cyrillic_latin_latin-ext-500.woff2') format('woff2')}
@font-face{font-family:'Rubik';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/rubik-v31-cyrillic_latin_latin-ext-300.woff2') format('woff2')}
@font-face{font-family:'Rubik';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/rubik-v31-cyrillic_latin_latin-ext-700.woff2') format('woff2')}


.product-info .custom-radio:before {
    top: 3px;
    left: 3px;
}
.product-info .custom-radio:after {
    top: 1px;
    left: 0px;
}

#product-options-popup .number .frame-change-count {
	margin-top: 7px;
}

/* ===== TDPD: блоки главной (модуль tdpd_block) ===== */
.tdb-band{font-family:"Rubik","Segoe UI",system-ui,-apple-system,Arial,sans-serif;color:#4a4640;font-size:16px;line-height:1.65}
.tdb-band *{box-sizing:border-box}
.tdb-band.tdb-warm,.tdb-band.tdb-cream,.tdb-band.tdb-white,.tdb-band.tdb-dark{width:100vw;position:relative;left:50%;transform:translateX(-50%);margin:0}
.tdb-band.tdb-warm{background:#F3EEE3;padding:56px 0;border-top:1px solid #e6dcc4}
.tdb-band.tdb-warm:last-child{border-bottom:1px solid #e6dcc4}
.tdb-band.tdb-cream{background:#F6EBD5;padding:56px 0;border-top:1px solid #e6dcc4;border-bottom:1px solid #e6dcc4}
.tdb-band.tdb-white{background:#fff;padding:56px 0;border-top:1px solid #e8e3d8;border-bottom:1px solid #e8e3d8}
.tdb-band.tdb-dark{background:#20242C;padding:56px 0;color:#b8bec9}
.tdb-band.tdb-plain{margin:36px 0}
/* тёмная лента: переворот цветов общих элементов */
.tdb-dark .tdb h2,.tdb-dark .tdb h3,.tdb-dark .tdb h4{color:#fff}
.tdb-dark .tdb-head p{color:#9aa2b1}
.tdb-dark .tdb-eyebrow{color:#8ea6f5}
.tdb-dark .tdb-seo{color:#9aa2b1}
.tdb-dark .tdb-seo b{color:#dde1e8}
/* промо на тёмной ленте: карточка растворяется в фоне, дважды тёмного не нужно */
.tdb-dark .tdb-promo-lead{background:transparent;box-shadow:none;padding:0;border-radius:0}
.tdb{max-width:1140px;margin:0 auto;padding:0 22px}
.tdb h2,.tdb h3,.tdb h4{color:#20242c;font-weight:500;letter-spacing:-.01em;margin:0}
.tdb p{margin:0}
.tdb img{max-width:100%;display:block}
.tdb a{color:#2f55d4;text-decoration:none}
.tdb-head{text-align:center;max-width:640px;margin:0 auto 32px;padding:0 12px}
.tdb-eyebrow{font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:#2f55d4}
.tdb-head h2{font-size:29px;line-height:1.2;margin:11px 0 0}
.tdb-head p{color:#7a756c;font-size:16px;margin:12px 0 0}

/* stats */
.tdb-stats{display:grid;grid-template-columns:repeat(4,1fr)}
.tdb-stat{position:relative;padding:28px 24px 26px;text-align:center;border-right:1px solid #e6dcc4;transition:background .25s}
.tdb-stat:last-child{border-right:0}
.tdb-stat:hover{background:rgba(255,255,255,.45)}
.tdb-stat-n{font-size:36px;font-weight:500;color:#20242c;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}
.tdb-stat-n b{color:#2f55d4;font-weight:500}
/* акцент — одна фирменная черта под числом, цифры остаются тёмными */
.tdb-stat-n::after{content:'';display:block;width:30px;height:3px;border-radius:2px;margin:13px auto 0;background:#2f55d4}
.tdb-stat-l{font-size:14px;color:#4a4640;margin-top:11px;line-height:1.4}

/* steps */
.tdb-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.tdb-step{position:relative;background:#fff;border:1px solid #e6dcc4;border-radius:14px;padding:24px 22px;box-shadow:0 6px 20px rgba(60,45,15,.07)}
.tdb-step-ico{width:46px;height:46px;border-radius:12px;background:#eaeefb;color:#2f55d4;display:grid;place-items:center;font-size:22px;margin-bottom:15px}
.tdb-step-num{position:absolute;top:20px;right:22px;font-size:13px;font-weight:500;color:#a8a29a}
.tdb-step h3{font-size:17px;margin-bottom:7px}
.tdb-step p{color:#7a756c;font-size:14.5px}

/* cards */
.tdb-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.tdb-card{background:#fff;border:1px solid #e6dcc4;border-radius:14px;padding:24px 22px;box-shadow:0 8px 28px rgba(60,45,15,.09)}
.tdb-card-ico{width:48px;height:48px;border-radius:12px;background:#F6EBD5;color:#2f55d4;display:grid;place-items:center;font-size:23px;margin-bottom:15px}
.tdb-card h3{font-size:17px;margin-bottom:7px}
.tdb-card p{color:#7a756c;font-size:14.5px}

/* faq */
.tdb-faq{max-width:820px;margin:0 auto}
.tdb-faq details{background:#fff;border:1px solid #e6dcc4;border-radius:14px;margin-bottom:12px;overflow:hidden;box-shadow:0 6px 20px rgba(60,45,15,.06)}
.tdb-faq summary{list-style:none;cursor:pointer;padding:19px 22px;display:flex;align-items:center;gap:13px;font-size:17px;font-weight:500;color:#20242c}
.tdb-faq summary::-webkit-details-marker{display:none}
.tdb-faq summary .tdb-q{color:#2f55d4;font-size:19px;font-weight:700}
/* маркер: рисуем двумя полосками, чтобы открытый вопрос давал МИНУС, а не крестик
   (поворот текстового «+» на 45° давал «×») */
.tdb-faq summary .tdb-mk{margin-left:auto;flex:none;position:relative;width:18px;height:18px;font-size:0;line-height:0;color:transparent}
.tdb-faq summary .tdb-mk::before,.tdb-faq summary .tdb-mk::after{content:'';position:absolute;left:50%;top:50%;width:16px;height:2px;margin:-1px 0 0 -8px;border-radius:2px;background:#2f55d4;transition:transform .18s,opacity .18s}
.tdb-faq summary .tdb-mk::after{transform:rotate(90deg)}
.tdb-faq details[open] summary .tdb-mk::after{transform:rotate(0deg);opacity:0}
.tdb-faq .tdb-ans{padding:0 22px 20px 51px;color:#7a756c;font-size:15.5px}

/* promo (44/223) */
.tdb-promo{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:stretch}
.tdb-promo-lead{background:#20242c;color:#fff;border-radius:16px;padding:34px 32px;display:flex;flex-direction:column;justify-content:center;box-shadow:0 12px 32px rgba(20,25,45,.20)}
.tdb-badges{display:flex;gap:9px;margin-bottom:16px;flex-wrap:wrap}
.tdb-badges span{font-size:13px;font-weight:500;color:#cdd6f7;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);padding:6px 13px;border-radius:8px}
.tdb-promo-lead h3{color:#fff;font-size:24px;line-height:1.22}
.tdb-promo-lead p{color:#c3c8d6;font-size:15.5px;margin-top:12px}
.tdb-promo-lead a{display:inline-flex;align-items:center;gap:8px;color:#fff;font-weight:500;font-size:15px;background:#2f55d4;padding:12px 20px;border-radius:9px;margin-top:22px;align-self:flex-start}
.tdb-promo-lead a:hover{background:#2646b0;color:#fff}
.tdb-promo-list{display:grid;grid-auto-rows:1fr;gap:16px}
/* карточки равной высоты: контент центрируем, иначе короткий текст «висит» вверху */
.tdb-li{background:#fff;border:1px solid #e6dcc4;border-radius:14px;padding:20px 22px;display:flex;gap:14px;align-items:center;box-shadow:0 6px 20px rgba(60,45,15,.07)}
.tdb-li i{flex:none;width:28px;height:28px;border-radius:50%;background:#e6f4ec;color:#1d8f4e;font-size:15px;font-style:normal;font-weight:700;line-height:1;margin:0;display:flex;align-items:center;justify-content:center}
.tdb-li>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.tdb-li b{display:block;color:#20242c;font-weight:500;font-size:16px;margin:0;line-height:1.4}
.tdb-li span{color:#7a756c;font-size:14.5px}
.tdb-li span:empty{display:none}

/* gallery (мозаика с плитками разного размера) */
.tdb-gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:210px;gap:14px;grid-auto-flow:dense}
.tdb-ph{position:relative;border-radius:14px;overflow:hidden;border:1px solid #e6dcc4;background:#fff}
.tdb-ph img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.tdb-ph:hover img{transform:scale(1.04)}
.tdb-ph.tdb-ph-wide{grid-column:span 2}
.tdb-ph.tdb-ph-tall{grid-row:span 2}
.tdb-ph-cap{position:absolute;left:0;right:0;bottom:0;padding:28px 14px 12px;color:#fff;background:linear-gradient(transparent,rgba(28,20,8,.82));font-size:13px}
.tdb-ph-cap b{display:block;font-weight:500;font-size:14px;line-height:1.3}
.tdb-ph-cap span{display:block;color:#e7e0d2;font-size:12.5px;margin-top:2px;line-height:1.3}

/* tender (заявка в тендерный отдел; рассчитан на ленту bg=dark) */
.tdb-tender{display:grid;grid-template-columns:1.05fr .95fr;gap:34px;align-items:start}
.tdb-t-lead h3{color:#fff;font-size:27px;line-height:1.22;margin:0}
/* .tdb p{margin:0} выше по файлу имеет ту же длину селектора — пишем через .tdb, иначе отступ не встанет */
.tdb p.tdb-t-sub{color:#c3c8d6;font-size:16px;margin:14px 0 0}
.tdb-t-sub a{color:#fff;font-weight:500;white-space:nowrap}
.tdb-t-phone{display:inline-block;margin-top:12px;font-size:15px;color:#9aa2b1}
.tdb-t-phone a{font-size:19px;margin-left:8px}
.tdb-t-list{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:12px}
.tdb-t-list li{display:flex;gap:12px;align-items:flex-start;margin:0}
.tdb-t-list i{flex:none;width:24px;height:24px;border-radius:50%;background:rgba(29,143,78,.20);color:#5fd39a;font-style:normal;font-weight:700;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center;margin-top:2px}
.tdb-t-list b{display:block;color:#fff;font-weight:500;font-size:16px;line-height:1.4}
.tdb-t-list em{display:block;color:#9aa2b1;font-style:normal;font-size:14px;line-height:1.45;margin-top:2px}
.tdb-t-card{background:#fff;border-radius:16px;padding:26px 26px 22px;box-shadow:0 18px 44px rgba(8,10,20,.34)}
.tdb-t-ttl{font-size:19px;font-weight:500;color:#20242c;line-height:1.3}
.tdb-t-dsc{font-size:13px;color:#7a756c;margin:6px 0 16px}
.tdb-t-form input[type="text"],.tdb-t-form input[type="tel"],.tdb-t-form input[type="email"],.tdb-t-form textarea{width:100%;border:1px solid #dcd7cc;border-radius:9px;font-size:14px;font-family:inherit;color:#20242c;background:#fff;background-image:none;filter:none;box-shadow:none;margin:0 0 10px;transition:border-color .15s,box-shadow .15s}
.tdb-t-form input[type="text"],.tdb-t-form input[type="tel"],.tdb-t-form input[type="email"]{height:44px;padding:0 14px}
.tdb-t-form textarea{height:68px;min-height:68px;padding:11px 14px;resize:none;display:block}
.tdb-t-form input:focus,.tdb-t-form textarea:focus{outline:none;border-color:#2f55d4;box-shadow:0 0 0 3px rgba(47,85,212,.13)}
.tdb-t-form input::-webkit-input-placeholder,.tdb-t-form textarea::-webkit-input-placeholder{color:#a8a29a;font-family:inherit;font-size:14px}
.tdb-t-form input::-moz-placeholder,.tdb-t-form textarea::-moz-placeholder{color:#a8a29a;font-family:inherit;font-size:14px;opacity:1}
.tdb-t-form input:-ms-input-placeholder,.tdb-t-form textarea:-ms-input-placeholder{color:#a8a29a;font-family:inherit;font-size:14px}
.tdb-t-form input::placeholder,.tdb-t-form textarea::placeholder{color:#a8a29a;font-family:inherit;font-size:14px}
.tdb-t-file{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 14px;cursor:pointer;font-weight:400}
.tdb-t-file input[type="file"]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;opacity:0;overflow:hidden}
.tdb-t-file-btn{display:inline-flex;align-items:center;border:1px dashed #c3bdb0;border-radius:9px;padding:9px 14px;font-size:13.5px;color:#4a4640;background:#faf8f4;transition:border-color .15s,color .15s}
.tdb-t-file-btn::before{content:'+';font-size:16px;line-height:1;margin-right:8px;color:#2f55d4}
.tdb-t-file:hover .tdb-t-file-btn{border-color:#2f55d4;color:#2f55d4}
.tdb-t-file-name{font-size:13px;color:#1d8f4e;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tdb-t-btn{width:100%;height:50px;background:#2f55d4;color:#fff;border:0;border-radius:9px;font-size:15px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s}
.tdb-t-btn:hover{background:#2646b0}
.tdb-t-btn:active{background:#20399a}
.tdb-t-btn:disabled{opacity:.6;cursor:default}
.tdb p.tdb-t-fine{font-size:11px;color:#9a948a;text-align:center;margin:11px 0 0;line-height:1.45}
.tdb-t-fine a{color:#7a756c;text-decoration:underline}
.tdb-t-ok{text-align:center;padding:24px 8px}
.tdb-t-ok-i{width:46px;height:46px;border-radius:50%;background:#e6f4ec;color:#1d8f4e;font-size:24px;display:flex;align-items:center;justify-content:center;margin:0 auto 12px}
.tdb-t-ok b{display:block;font-size:18px;font-weight:500;color:#20242c}
.tdb-t-ok span{display:block;font-size:14px;color:#7a756c;margin-top:8px;line-height:1.55}
/* светлая лента: блок задуман тёмным, но на песочном/белом фоне тоже должен читаться.
   Плашки и зелёные кружки в тёмной версии полупрозрачно-белые — на светлом они выцветают,
   поэтому здесь перекрашиваются в плотные цвета палитры. */
.tdb-band:not(.tdb-dark) .tdb-t-lead h3,.tdb-band:not(.tdb-dark) .tdb-t-list b{color:#20242c}
.tdb-band:not(.tdb-dark) .tdb p.tdb-t-sub{color:#413d37}
.tdb-band:not(.tdb-dark) .tdb-t-sub a{color:#2f55d4}
.tdb-band:not(.tdb-dark) .tdb-t-list em{color:#7a756c}
.tdb-band:not(.tdb-dark) .tdb-t-phone{color:#4a4640}
.tdb-band:not(.tdb-dark) .tdb-tender .tdb-badges span{color:#2f55d4;background:#eaeefb;border-color:#d5ddf8}
.tdb-band:not(.tdb-dark) .tdb-t-list i{background:#e6f4ec;color:#1d8f4e}
.tdb-band:not(.tdb-dark) .tdb-t-card{border:1px solid #e6dcc4;box-shadow:0 12px 32px rgba(60,45,15,.12)}

/* seo text */
.tdb-seo{max-width:74ch;margin:0 auto;color:#7a756c;font-size:14px;line-height:1.75}
.tdb-seo h3{font-size:20px;color:#20242c;margin-bottom:14px}
.tdb-seo p{margin-bottom:12px}
.tdb-seo b{color:#4a4640;font-weight:500}

@media (max-width:880px){
  .tdb-stats{grid-template-columns:repeat(2,1fr)}
  .tdb-stat:nth-child(2n){border-right:0}
  .tdb-steps,.tdb-cards{grid-template-columns:repeat(2,1fr)}
  .tdb-gallery{grid-template-columns:repeat(2,1fr)}
  .tdb-ph.tdb-ph-wide{grid-column:span 2}
  .tdb-ph.tdb-ph-tall{grid-row:auto}
  .tdb-promo{grid-template-columns:1fr}
  .tdb-tender{grid-template-columns:1fr;gap:26px}
  .tdb-t-lead h3{font-size:23px}
  .tdb-head h2{font-size:24px}
  .tdb-band.tdb-warm,.tdb-band.tdb-white,.tdb-band.tdb-dark{padding:40px 0}
}
@media (max-width:520px){
  .tdb-t-card{padding:20px 18px 18px}
}
@media (prefers-reduced-motion:reduce){.tdb-band *{transition:none!important}}
/* Отступ темы footer{margin-top:80px} гасится теперь в блоке «TDPD: футер» в конце файла, для всех страниц.
   Здесь раньше стояло `body.common-home footer{margin-top:0}` — оно весило больше (класс+2 элемента)
   и не давало футеру подтянуться на 1px, чтобы закрыть белую полоску. Не возвращать. */

/* ===== ТЕНДЕРНАЯ ПОСАДОЧНАЯ: раскладки hero / laws / registry + примечание ===== */

/* Число колонок по количеству элементов. Базовые правила выше дают 4 колонки;
   селектор из двух классов их перебивает, поэтому мобильные переопределения
   ниже написаны как `.tdb-band .tdb-*` — та же удельная сила, но позже в файле. */
.tdb-stats.tdb-n3{grid-template-columns:repeat(3,1fr)}
.tdb-stats.tdb-n5{grid-template-columns:repeat(5,1fr)}
.tdb-stats.tdb-n6{grid-template-columns:repeat(3,1fr)}
.tdb-cards.tdb-n2{grid-template-columns:repeat(2,1fr)}
.tdb-cards.tdb-n3,.tdb-cards.tdb-n5,.tdb-cards.tdb-n6,.tdb-cards.tdb-n9{grid-template-columns:repeat(3,1fr)}
.tdb-steps.tdb-n3{grid-template-columns:repeat(3,1fr)}
.tdb-steps.tdb-n5{grid-template-columns:repeat(5,1fr)}

/* --- первый экран --- */
.tdb-band.tdb-hero-band{padding:58px 0 62px}
.tdb-hero{display:grid;grid-template-columns:1.12fr .88fr;gap:44px;align-items:center}
.tdb-hero.tdb-hero-solo{grid-template-columns:1fr;max-width:780px}
.tdb h1{color:#fff;font-weight:500;font-size:40px;line-height:1.12;letter-spacing:-.015em;margin:13px 0 0}
.tdb-band:not(.tdb-dark) .tdb h1{color:#20242c}
.tdb p.tdb-hero-sub{color:#c3c8d6;font-size:17px;line-height:1.6;margin:18px 0 0;max-width:46ch}
.tdb-hero-sub b{color:#fff;font-weight:500}
.tdb-band:not(.tdb-dark) .tdb p.tdb-hero-sub{color:#4a4640}
.tdb-band:not(.tdb-dark) .tdb-hero-sub b{color:#20242c}
.tdb-hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
/* `.tdb a{color:#2f55d4}` выше по файлу весит класс+элемент — пишем кнопки так же, иначе цвет не встанет */
.tdb a.tdb-btn{display:inline-flex;align-items:center;justify-content:center;height:50px;padding:0 24px;border-radius:9px;background:#2f55d4;color:#fff;font-size:15px;font-weight:500;transition:background .15s,border-color .15s}
.tdb a.tdb-btn:hover{background:#2646b0;color:#fff}
.tdb a.tdb-btn:active{background:#20399a}
.tdb a.tdb-btn-ghost{background:transparent;border:1px solid rgba(255,255,255,.28);color:#fff}
.tdb a.tdb-btn-ghost:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.5);color:#fff}
.tdb-band:not(.tdb-dark) .tdb a.tdb-btn-ghost{border-color:#d5ddf8;color:#2f55d4}
.tdb-band:not(.tdb-dark) .tdb a.tdb-btn-ghost:hover{background:#eaeefb;border-color:#2f55d4;color:#2f55d4}
.tdb-chips{display:flex;gap:9px;flex-wrap:wrap;margin-top:26px}
.tdb-chip{display:inline-flex;align-items:center;gap:7px;font-size:14px;color:#dfe3ea;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);padding:8px 14px;border-radius:99px}
.tdb-chip i{font-style:normal;font-weight:500;color:#8ea6f5}
.tdb-band:not(.tdb-dark) .tdb-chip{color:#4a4640;background:#fff;border-color:#e6dcc4}
.tdb-band:not(.tdb-dark) .tdb-chip i{color:#2f55d4}
.tdb-hero-photo{position:relative}
.tdb-hero-frame{border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,.12);background:#171a21;box-shadow:0 26px 54px rgba(0,0,0,.42)}
.tdb-hero-frame img{width:100%;height:380px;object-fit:cover}
.tdb-band:not(.tdb-dark) .tdb-hero-frame{border-color:#e6dcc4;background:#fff;box-shadow:0 18px 44px rgba(60,45,15,.16)}
.tdb-hero-tag{position:absolute;left:14px;right:14px;bottom:14px;background:rgba(20,23,30,.84);border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:9px 13px;font-size:13px;color:#fff}
.tdb-hero-tag b{display:block;font-weight:500;line-height:1.35}
.tdb-hero-tag span{display:block;color:#a6adba;line-height:1.35;margin-top:1px}

/* --- карточки с бейджами (44-ФЗ / 223-ФЗ) --- */
.tdb-laws{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.tdb-laws.tdb-n3{grid-template-columns:repeat(3,1fr)}
.tdb-law{background:#fff;border:1px solid #e6dcc4;border-radius:14px;padding:27px 26px;box-shadow:0 8px 28px rgba(60,45,15,.09)}
.tdb-law-badge{display:inline-block;font-size:13px;font-weight:500;color:#2f55d4;background:#eaeefb;border:1px solid #d5ddf8;padding:5px 12px;border-radius:8px;letter-spacing:.02em}
.tdb-law h3{font-size:19px;margin:15px 0 8px}
.tdb-law p{color:#7a756c;font-size:15px}
.tdb-dark .tdb-law{background:#272c36;border-color:#343a45;box-shadow:none}
.tdb-dark .tdb-law p{color:#9aa2b1}
.tdb-dark .tdb-law-badge{color:#8ea6f5;background:rgba(142,166,245,.12);border-color:rgba(142,166,245,.3)}

/* --- реестр контрактов --- */
.tdb-verify{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:#5fd39a;background:rgba(29,143,78,.16);border:1px solid rgba(29,143,78,.42);padding:9px 16px;border-radius:99px;margin-top:16px}
.tdb-verify i{font-style:normal;font-weight:700}
.tdb .tdb-verify a{color:inherit}
.tdb-band:not(.tdb-dark) .tdb-verify{color:#1d8f4e;background:#e6f4ec;border-color:#bfe3ce}
.tdb-regs{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.tdb .tdb-reg{display:flex;align-items:center;gap:13px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:11px;padding:13px 16px;color:#fff;transition:border-color .15s,background .15s}
.tdb a.tdb-reg:hover{border-color:#2f55d4;background:rgba(47,85,212,.16);color:#fff}
.tdb-reg-i{flex:none;color:#5fd39a;font-size:15px;line-height:1}
.tdb-reg-b{display:flex;flex-direction:column;min-width:0}
.tdb-reg-k{font-family:ui-monospace,"Cascadia Code","Consolas","Courier New",monospace;font-size:15px;letter-spacing:.02em;font-variant-numeric:tabular-nums;line-height:1.3;word-break:break-all}
.tdb-reg-t{font-size:13px;color:#9aa2b1;line-height:1.35;margin-top:3px}
.tdb-band:not(.tdb-dark) .tdb .tdb-reg{background:#fff;border-color:#e6dcc4;color:#20242c;box-shadow:0 4px 14px rgba(60,45,15,.06)}
.tdb-band:not(.tdb-dark) .tdb-reg-i{color:#1d8f4e}
.tdb-band:not(.tdb-dark) .tdb-reg-t{color:#7a756c}

/* --- примечание под блоком (пунктирная плашка) --- */
.tdb-note{margin-top:24px;padding:17px 22px;border-radius:14px;border:1px dashed #d8d1c2;background:rgba(255,255,255,.55);color:#7a756c;font-size:15px;line-height:1.6}
.tdb-note b{color:#20242c;font-weight:500}
.tdb-dark .tdb-note{border-color:#3a4049;background:rgba(255,255,255,.04);color:#9aa2b1}
.tdb-dark .tdb-note b{color:#fff}

/* Страница-посадочная: на ней первый экран сам несёт h1, поэтому штатную «шапку»
   информационной страницы (хлебные крошки + h1 + описание) гасим.
   Цепляемся за наличие блока-хиро, чтобы не задеть остальные инфо-страницы.
   Для браузеров без :has() тот же эффект даёт запасной скрипт в footer.tpl. */
.container:has(.tdb-hero-band) > .col-sm-12.content-row,
.container > .col-sm-12.content-row.tdpd-lp-hide{display:none}

/* Мобильные правила перечисляют ИМЕННО новые счётные классы: блоки главной идут
   с tdb-n4, их раскладку эти правила не трогают — она остаётся прежней. */
@media (max-width:880px){
  .tdb-stats.tdb-n3,.tdb-stats.tdb-n5,.tdb-stats.tdb-n6{grid-template-columns:repeat(2,1fr)}
  .tdb-stats.tdb-n5 .tdb-stat:nth-child(5){grid-column:span 2;border-right:0}
  .tdb-cards.tdb-n3,.tdb-cards.tdb-n5,.tdb-cards.tdb-n6,.tdb-cards.tdb-n9{grid-template-columns:repeat(2,1fr)}
  .tdb-steps.tdb-n3,.tdb-steps.tdb-n5{grid-template-columns:repeat(2,1fr)}
  .tdb-laws,.tdb-laws.tdb-n3{grid-template-columns:1fr}
  .tdb-hero,.tdb-regs{grid-template-columns:1fr}
  .tdb-hero{gap:28px}
  .tdb h1{font-size:31px}
  .tdb-hero-frame img{height:280px}
  .tdb-band.tdb-hero-band{padding:40px 0 44px}
}
@media (max-width:600px){
  .tdb-cards.tdb-n3,.tdb-cards.tdb-n5,.tdb-cards.tdb-n6,.tdb-cards.tdb-n9{grid-template-columns:1fr}
  .tdb-steps.tdb-n3,.tdb-steps.tdb-n5{grid-template-columns:1fr}
  .tdb h1{font-size:26px}
  .tdb p.tdb-hero-sub{font-size:16px}
  .tdb-hero-cta{display:grid;grid-template-columns:1fr;gap:10px}
  .tdb-hero-frame img{height:220px}
  .tdb-reg-k{font-size:13.5px}
}
/* ===== /ТЕНДЕРНАЯ ПОСАДОЧНАЯ ===== */
/* ===== /TDPD блоки главной ===== */

/* ===== TDPD: футер ===== */
/* фон темы приходит из --footer-bg (custom.css:20) и правила footer{background-color:var(--footer-bg)} —
   перебиваем усиленным селектором, чтобы не трогать переменную, которую может читать что-то ещё */
/* margin-top:-1px — тема выводит после блоков ПУСТУЮ замыкающую строку .row > .col-sm-12
   высотой ровно 1px; сквозь неё виден белый фон страницы, и над тёмным футером это читается
   белой полосой. Подтягиваем футер на эту 1px, ничего не пряча (на других страницах перекрытие
   в 1px приходится на пустое место под контентом и не видно). */
html body footer{background:#20242C;margin-top:-1px;color:#B8BEC9;font-family:"Rubik","Segoe UI",system-ui,-apple-system,Arial,sans-serif}
html body footer *{box-sizing:border-box}
footer a{color:#DDE1E8;text-decoration:none;transition:color .15s}
footer a:hover,footer a:focus{color:#fff;text-decoration:none}
/* тема даёт .footer-links .inner{padding:7.7rem 0 3.6rem} и свой медиазапрос — custom.css ниже, берёт без !important */
.footer-links .inner{padding:56px 0 40px}

.tdpd-foot{display:grid;grid-template-columns:1.62fr 1fr 1fr 1.2fr;gap:38px;align-items:start}
.tdpd-fcol{min-width:0}
.tdpd-fh{font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:#8C93A0;margin:0 0 16px}
.tdpd-flist{list-style:none;margin:0;padding:0}
.tdpd-flist li{margin:0 0 10px;line-height:1.45}
.tdpd-flist a{font-size:14.5px}
.tdpd-flist .tdpd-fmore{color:#8ea6f5;font-weight:500}
.tdpd-flist .tdpd-ftender{color:#fff;font-weight:500}
.tdpd-flist .tdpd-ftender::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#2F55D4;margin-right:8px;vertical-align:2px}

.tdpd-flogo{display:inline-block;margin:0 0 16px}
.tdpd-flogo img{width:170px;max-width:100%;height:auto;display:block}
.tdpd-fdes{font-size:13.5px;line-height:1.6;color:#9AA2B1;margin:0 0 18px;max-width:38em}
.tdpd-freq{border-top:1px solid #2E3340;padding-top:14px}
/* ВАЖНО: stylesheet.min.css даёт `.footer-links span{font-size:2rem;color:#444;margin-bottom:2.7rem;display:block}`
   — он цепляет ЛЮБОЙ голый span в футере. Специфичность у нас та же (класс+элемент), выигрываем порядком,
   но перечислять надо ВСЕ его свойства: пропущенный margin-bottom разносил строки реквизитов на 27px. */
.tdpd-freq span{display:block;font-size:12.5px;line-height:1.55;color:#7F8695;margin:0 0 4px}
.tdpd-freq span:last-child{margin-bottom:0}
.tdpd-freq span:first-child{color:#B8BEC9}

.tdpd-fcol-sales .tdpd-fphone{display:block;font-size:20px;font-weight:500;color:#fff;line-height:1.25;margin-bottom:6px;white-space:nowrap}
.tdpd-fclock{font-size:13px;color:#8C93A0;margin:8px 0 16px}
/* то же правило `.footer-links span` — без явных font-size/color/margin часы работы вылезали
   двадцатым кеглем серым #444, как заголовок */
.tdpd-fclock span{display:block;font-size:13px;line-height:1.5;color:#8C93A0;margin:0}
.tdpd-fmails{margin-bottom:16px}
.tdpd-fmails a{display:block;font-size:15px;color:#DDE1E8;margin-top:10px}
.tdpd-fmails em{display:block;font-style:normal;font-size:12px;color:#7F8695;margin-top:2px}
.tdpd-fadr{font-size:13px;line-height:1.55;color:#8C93A0;margin-bottom:18px}
.tdpd-fcall{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 22px;background:#2F55D4;color:#fff;border-radius:9px;font-size:14.5px;font-weight:500}
.tdpd-fcall:hover{background:#2646B0;color:#fff}
.tdpd-fsoc{margin-top:18px}
.tdpd-fsoc a{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:#2A2F3A;color:#B8BEC9;font-size:18px;margin-right:8px}
.tdpd-fsoc a:hover{background:#2F55D4;color:#fff}

/* нижняя строка: тема даёт ДВА почти белых разделителя — `.footer-copyright .inner{border-top:1px solid #ebebeb}`
   и отдельно `.footer-copyright > .container{border-top:1px solid #ebebeb}` (stylesheet_tdpd.css).
   Второй легко пропустить: он на .container, а не на .inner. На тёмном футере это была белая полоса. */
.footer-copyright > .container{border-top:0}
.footer-copyright .inner{display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px;width:100%;padding:18px 0 22px;border-top:1px solid #2E3340}
.tdpd-fbot{display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px;width:100%}
.tdpd-fbot-l{display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px}
.tdpd-fbot-r{margin-left:auto}
.tdpd-fcopy{font-size:12.5px;color:#7F8695}
.tdpd-fbot-l a{font-size:12.5px;color:#8C93A0}
.tdpd-fbot-l a:hover{color:#fff}
.tdpd-flaw{display:inline-block;font-size:12.5px;color:#B8BEC9;background:#2A2F3A;border:1px solid #343A47;border-radius:8px;padding:7px 14px}

@media (max-width:991px){
  .footer-links .inner{padding:40px 0 28px}
  .tdpd-foot{grid-template-columns:1fr 1fr;gap:30px}
  .tdpd-fcol-about{grid-column:1/-1}
}
@media (max-width:560px){
  .tdpd-foot{grid-template-columns:1fr;gap:26px}
  .tdpd-fbot-r{margin-left:0}
  .tdpd-fcol-sales .tdpd-fphone{font-size:22px}
}
/* ===== /TDPD футер ===== */

/* ===== TDPD: шапка — чистка и акценты (2026-08-03). Только десктоп >=1200px, мобильная не трогается ===== */
@media (min-width: 1200px) {
    /* «Перезвонить мне» под телефоном — это действие, а не подпись */
    header .col-cart .header-phone .field-tip.show-phones {
        color: #2f55d4 !important;
    }
    header .col-cart .header-phone .field-tip.show-phones:hover {
        color: #20399a !important;
        text-decoration: underline;
    }

    /* «Тендерным отделам» — целевая страница, выделяем в служебной строке */
    .box-top a.btn-top[href*="tenders"] {
        color: #2f55d4 !important;
        font-weight: 600;
    }
}
/* ===== /TDPD шапка ===== */

/* ===== TDPD: посадочная «Мебель для детского сада» (14.08.2026) ===== */

/* --- 1. Разделы каталога: плитки подкатегорий сжаты в строку чипов ---------------
   Работает на ВСЕХ категориях (правка в product/category.tpl общая).
   Классы новые, поэтому легаси #subcats .subcat-box из stylesheet.css не мешает. */
.tdpd-subs-row{margin:0 0 20px}
.tdpd-subs-h{font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:13px;font-weight:500;color:#20242c;margin:0 0 10px}
.tdpd-subs-cb{position:absolute!important;width:1px;height:1px;opacity:0;pointer-events:none}
.tdpd-subs{display:flex;flex-wrap:wrap;gap:8px}
.tdpd-subs .tdpd-subchip{display:inline-block;margin:0;padding:8px 14px;border:1px solid #dde2ee;border-radius:9px;background:#fff;color:#20242c;font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.25;text-decoration:none;white-space:nowrap;transition:.15s}
.tdpd-subs .tdpd-subchip:hover{border-color:#2f55d4;color:#2f55d4;text-decoration:none}
.tdpd-subs .tdpd-subchip.is-extra{display:none}
.tdpd-subs-cb:checked ~ .tdpd-subs .tdpd-subchip.is-extra{display:inline-block}
.tdpd-subs .tdpd-subchip-more{cursor:pointer;border-style:dashed;color:#5c6675;-webkit-user-select:none;user-select:none}
.tdpd-subs .tdpd-subchip-more:hover{color:#2f55d4;border-color:#2f55d4}
.tdpd-subs .tdpd-subs-close{display:none}
.tdpd-subs-cb:checked ~ .tdpd-subs .tdpd-subs-open{display:none}
.tdpd-subs-cb:checked ~ .tdpd-subs .tdpd-subs-close{display:inline}
@media (max-width:767px){
  .tdpd-subs .tdpd-subchip{padding:7px 12px;font-size:12.5px;white-space:normal}
}

/* --- 2. Метка ростовой группы на карточке товара -------------------------------
   .caption у темы — флекс-колонка с order (h4:1, price:2, box-cart:5),
   поэтому метке нужен order:0, иначе она уедет вниз. */
:is(#res-products,.tdb-sale-row) .caption .tdpd-rost{order:0;align-self:flex-start;display:inline-block;margin:0 0 6px;padding:2px 8px;border-radius:5px;background:#e9f4ee;color:#12703c;font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:11px;font-weight:500;line-height:17px;letter-spacing:.01em;white-space:nowrap}

/* --- 3. Полоса фактов — новая раскладка модуля tdpd_block ----------------------
   Общая, не привязана к странице: пригодится на любой посадочной. */
.tdb-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:14px 0}
.tdb-facts.tdb-n2{grid-template-columns:repeat(2,1fr)}
.tdb-facts.tdb-n3{grid-template-columns:repeat(3,1fr)}
.tdb-facts.tdb-n5{grid-template-columns:repeat(5,1fr)}
.tdb-fact{padding:2px 20px;border-left:1px solid rgba(60,45,15,.16)}
.tdb-fact:first-child{border-left:0;padding-left:0}
.tdb-fact i{font-style:normal;font-size:15px;line-height:1;margin-right:6px}
.tdb-fact b{display:block;font-size:14px;font-weight:500;line-height:1.25;color:#20242c}
.tdb-fact span{display:block;margin-top:2px;font-size:12.5px;line-height:1.35;color:#7a756c}
.tdb-dark .tdb-fact{border-left-color:rgba(255,255,255,.14)}
.tdb-dark .tdb-fact b{color:#fff}
.tdb-dark .tdb-fact span{color:#9aa2b1}
@media (max-width:767px){
  .tdb-facts{grid-template-columns:repeat(2,1fr);gap:10px 0}
  .tdb-fact{padding:2px 12px}
  .tdb-facts .tdb-fact:nth-child(2n+1){border-left:0;padding-left:0}
}

/* --- 4. Хвостовой блок «не нашли позицию» — на ВСЕХ категориях ------------------
   body[class^="product-category-"] цепляет только листинги категорий:
   у главной класс common-home, у /tenders.html — information-information. */
body[class^="product-category-"] .tdb-warm .tdb-promo{gap:20px;align-items:center}
body[class^="product-category-"] .tdb-warm .tdb-promo-lead{padding:24px 26px}
body[class^="product-category-"] .tdb-warm .tdb-promo-lead h3{font-size:20px}
body[class^="product-category-"] .tdb-warm .tdb-promo-lead p{margin-top:8px;font-size:14.5px}
body[class^="product-category-"] .tdb-warm .tdb-promo-lead a{margin-top:16px}
body[class^="product-category-"] .tdb-warm .tdb-promo-list{gap:12px}
body[class^="product-category-"] .tdb-band.tdb-warm{padding:30px 0}

/* Фильтр слева: шаблон отдаёт #content классом col-sm-9, а карточки остаются
   col-lg-3 — четыре штуки в ряд по 207 px. Ставим три. */
body[class^="product-category-"] #content.col-sm-9 :is(#res-products,.tdb-sale-row) .product-items{width:33.3333%}
@media (max-width:991px){
  body[class^="product-category-"] #content.col-sm-9 :is(#res-products,.tdb-sale-row) .product-items{width:50%}
}

/* --- 5. Ленты первого экрана — ТОЛЬКО «Мебель для детского сада» ---------------
   233_242 — body-класс этой категории. На других категориях блоков 1, 2 и 4 нет,
   там остаются только фильтр и хвостовой блок. */
body.product-category-233_242 .tdb-band.tdb-white{padding:30px 0}
body.product-category-233_242 .tdb-head{margin-bottom:20px}
body.product-category-233_242 .tdb-head h2{font-size:23px}
body.product-category-233_242 .tdb-head p{font-size:15px;margin-top:8px}

/* 5.1 Блок 1 — хиро с формой расчёта (раскладка «Тендерная форма», фон «Белый»).
   Сжат по высоте: первый экран должен успевать показать и предложение, и начало каталога. */
body.product-category-233_242 .tdb-tender{gap:28px;align-items:start}
body.product-category-233_242 .tdb-t-lead h3{font-size:24px}
body.product-category-233_242 .tdb p.tdb-t-sub{margin-top:9px;font-size:14.5px}
body.product-category-233_242 .tdb-t-list{margin-top:14px;gap:8px}
body.product-category-233_242 .tdb-t-list li{margin:0}
body.product-category-233_242 .tdb-t-card{padding:18px 20px 16px}
body.product-category-233_242 .tdb-t-ttl{font-size:16px}
body.product-category-233_242 .tdb-t-dsc{margin-bottom:12px;font-size:13px}
body.product-category-233_242 .tdb-t-form input[type="text"],
body.product-category-233_242 .tdb-t-form input[type="tel"],
body.product-category-233_242 .tdb-t-form input[type="email"]{height:40px;margin-bottom:8px}
body.product-category-233_242 .tdb-t-form textarea{height:52px;min-height:52px;margin-bottom:8px}
body.product-category-233_242 .tdb-t-file{margin-bottom:10px}
body.product-category-233_242 .tdb-t-btn{height:46px}
body.product-category-233_242 .tdb-t-fine{margin-top:8px;font-size:11px;line-height:1.4}

/* 5.2 Блок 4 — «С чем пришли?»: карточки-сценарии с синей отбивкой слева */
body.product-category-233_242 .tdb-warm .tdb-cards{gap:16px}
body.product-category-233_242 .tdb-warm .tdb-card{padding:16px 18px;border-left:3px solid #2f55d4}
body.product-category-233_242 .tdb-warm .tdb-card h3{font-size:16px}
body.product-category-233_242 .tdb-warm .tdb-card p{margin-top:6px;font-size:13.5px;line-height:1.45}
body.product-category-233_242 .tdb-warm .tdb-card a{color:#2f55d4;font-weight:500;white-space:nowrap}
body.product-category-233_242 .tdb-warm .tdb-card a:hover{color:#2646b0;text-decoration:underline}

/* 5.3 Заголовок категории между лентами и каталогом — как подпись раздела */
body.product-category-233_242 h1.cat-header{margin:26px 0 14px;font-size:22px}

/* На мобильном ленты складываются в столбик и уводят товары далеко вниз (замер: первый
   товар 2279 px). Поэтому там режем повторы: список УТП в блоке 1 дублирует полосу фактов
   блока 2, подзаголовок блока 4 не нужен. После этого первый товар на 1943 px. */
@media (max-width:767px){
  body.product-category-233_242 .tdb-band.tdb-white{padding:24px 0}
  body[class^="product-category-"] .tdb-band.tdb-warm{padding:24px 0}
  body.product-category-233_242 .tdb-t-lead h3{font-size:20px}
  body.product-category-233_242 .tdb p.tdb-t-sub{font-size:13.5px}
  body.product-category-233_242 .tdb-tender .tdb-t-list{display:none}
  body.product-category-233_242 .tdb-warm .tdb-head{margin-bottom:14px}
  body.product-category-233_242 .tdb-warm .tdb-head p{display:none}
  body.product-category-233_242 .tdb-warm .tdb-cards{gap:10px}
  body.product-category-233_242 .tdb-warm .tdb-card{padding:12px 14px}
}

/* ===== /TDPD посадочная «Мебель для детского сада» ===== */


/* ===== TDPD: фильтр товаров (oct_product_filter) — верстка 15.08.2026 =====
   Почему всё оформление тут, а не в файлах модуля:
   1) собственный `octemplates/oct_product_filter/stylesheet.css` модуль подключает
      только при выключенной минификации (контроллер, стр. 250) — на сайте она включена,
      поэтому файл не грузится;
   2) `stylesheet_minify.css`, где лежала верстка фильтра и мобильной шторки,
      закомментирован в `header.tpl` (стр. 194);
   3) даже если их включить, они грузятся ДО `custom.css` и перебивались бы отсюда.
   Значит здесь и функциональная база (ползунок, свёртка блоков), и оформление. */

/* --- 1. Ползунок цены -----------------------------------------------------------
   Библиотечный `nouislider.css` на сайте не подключён (тот же контроллер, стр. 255),
   а без него у ползунка нет ни геометрии, ни позиционирования — на месте цены была
   пустая полоса. Ниже минимум из библиотеки плюс оформление. */
#tdpd-price-slider{position:relative;direction:ltr;height:4px;margin:6px 9px 20px;background:#e9eaee;border:0;border-radius:4px;box-shadow:none}
#tdpd-price-slider *{box-sizing:border-box;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}
#tdpd-price-slider .noUi-base{position:relative;z-index:1;width:100%;height:100%}
#tdpd-price-slider .noUi-origin{position:absolute;width:0;height:0}
#tdpd-price-slider .noUi-connect{position:absolute;top:0;right:0;bottom:0;left:0;background:#2f55d4;border-radius:4px;box-shadow:none}
#tdpd-price-slider .noUi-handle{position:relative;z-index:1;top:-7px;left:-9px;width:18px;height:18px;background:#fff;border:2px solid #2f55d4;border-radius:50%;box-shadow:0 1px 3px rgba(32,36,44,.2);cursor:pointer}
#tdpd-price-slider .noUi-handle::before,
#tdpd-price-slider .noUi-handle::after{display:none}
#tdpd-price-slider .noUi-active{box-shadow:0 0 0 4px rgba(47,85,212,.16)}
#tdpd-price-slider .noUi-state-tap .noUi-connect,
#tdpd-price-slider .noUi-state-tap .noUi-origin{transition:left .25s,right .25s}

/* --- 2. Карточка фильтра --------------------------------------------------------
   `#tdpd-ismobile` — это и есть коробка фильтра: на десктопе она лежит в
   `#filter-column`, на ширине ≤992 скрипт модуля переносит её в шторку
   `#filter-mobile`. Поэтому все правила цепляются к ней, а не к колонке. */
#tdpd-ismobile{margin-bottom:24px;background:#fff;border:1px solid #e9eaee;border-radius:14px;overflow:hidden}
#tdpd-ismobile .box-heading{position:relative;margin:0;padding:15px 18px;background:#fff;border:0;border-bottom:1px solid #eef0f4;font-size:16px;font-weight:500;line-height:1.2;color:#20242c;text-transform:none;letter-spacing:0}
#tdpd-ismobile .box-content,
#tdpd-ismobile .box-content.filtered{margin:0;padding:0;border:0;background:#fff}

/* Заголовок группы: «Цена», «Ростовая группа», «Производитель»… */
#tdpd-ismobile .item-title{margin:0}
#tdpd-ismobile a.list-group-item.item-name{position:relative;display:block;margin:0;padding:14px 46px 14px 18px;background:#fff;border:0;border-radius:0;cursor:pointer}
#tdpd-ismobile a.list-group-item.item-name .name{font-size:15px;font-weight:500;line-height:1.3;color:#20242c}
#tdpd-ismobile a.list-group-item.item-name:hover .name{color:#2f55d4}

/* Маркер «свернуть/развернуть». Иконку FontAwesome гасим: обработчик модуля
   переключает её классы с ошибкой (`toggleClass("fa-minus").addClass("fa-plus")` —
   плюс возвращается всегда). Рисуем ± сами от класса `.expanded`, который
   переключается верно. Две полоски, а не поворот глифа: повёрнутый плюс даёт ×. */
#tdpd-ismobile a.list-group-item .link{position:absolute;top:50%;right:17px;display:block;width:14px;height:14px;margin-top:-7px}
#tdpd-ismobile a.list-group-item .link i{display:none}
#tdpd-ismobile a.list-group-item .link::before,
#tdpd-ismobile a.list-group-item .link::after{content:"";position:absolute;background:#98a2b3;border-radius:2px;transition:opacity .18s,transform .18s}
#tdpd-ismobile a.list-group-item .link::before{top:6px;left:0;width:14px;height:2px}
#tdpd-ismobile a.list-group-item .link::after{top:0;left:6px;width:2px;height:14px}
#tdpd-ismobile .expanded > .item-title .link::after{opacity:0;transform:rotate(90deg)}
#tdpd-ismobile a.list-group-item.item-name:hover .link::before,
#tdpd-ismobile a.list-group-item.item-name:hover .link::after{background:#2f55d4}

/* Содержимое группы. `display:none/block` держит stylesheet.min.css, но правило
   там одно и без него свёртка сломается — дублируем, чтобы блок был самодостаточным. */
#tdpd-product-filter-data .item-content{display:none}
#tdpd-product-filter-data .expanded .item-content{display:block}
#tdpd-ismobile .list-group-item.item-content{margin:0;padding:0 18px 14px;border:0;background:#fff}

/* Разделители между группами */
#tdpd-ismobile .inner-box{border-top:1px solid #f0f1f5}
#tdpd-ismobile .inner-box:first-child{border-top:0}
#tdpd-ismobile .inner-box[data-type="option"] > div + div,
#tdpd-ismobile .inner-box[data-type="attribute"] > div + div,
#tdpd-ismobile .inner-box[data-type="standard"] > div + div{border-top:1px solid #f0f1f5}

/* --- 3. Строки значений ---------------------------------------------------------
   Родные чекбоксы прячем и рисуем свои на `label::before`. Bootstrap тащит
   `.checkbox input{position:absolute;margin-left:-20px}` и `label{font-weight:700}` —
   оба перебиты ниже. */
#tdpd-ismobile .item-content .checkbox,
#tdpd-ismobile .item-content .radio{position:relative;margin:0;padding:0}
#tdpd-ismobile .item-content .checkbox input[type="checkbox"],
#tdpd-ismobile .item-content .radio input[type="radio"]{position:absolute;left:0;top:12px;width:1px;height:1px;margin:0;opacity:0;pointer-events:none}
#tdpd-ismobile .item-content label{position:relative;display:block;margin:0;padding:8px 38px 8px 27px;font-size:13.5px;font-weight:400;line-height:1.35;color:#3a4152;cursor:pointer}
#tdpd-ismobile .item-content label::before{content:"";position:absolute;left:0;top:9px;width:18px;height:18px;background:#fff;border:1px solid #cfd4e0;border-radius:5px;transition:background-color .15s,border-color .15s}
#tdpd-ismobile .item-content label:hover{color:#2f55d4}
#tdpd-ismobile .item-content label:hover::before{border-color:#2f55d4}
#tdpd-ismobile .item-content input[type="checkbox"]:checked + label::before{background:#2f55d4 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") no-repeat center;background-size:12px 12px;border-color:#2f55d4}
#tdpd-ismobile .item-content input[type="checkbox"]:checked + label{color:#20242c;font-weight:500}
#tdpd-ismobile .item-content .radio label::before{border-radius:50%}
#tdpd-ismobile .item-content input[type="radio"]:checked + label::before{background:#fff;border:5px solid #2f55d4}
#tdpd-ismobile .item-content input:disabled + label{color:#a9afbd;cursor:not-allowed}
#tdpd-ismobile .item-content input:disabled + label::before{background:#f4f5f7;border-color:#e2e5ee}
#tdpd-ismobile .item-content input:disabled + label:hover{color:#a9afbd}

/* Счётчик товаров справа от значения */
#tdpd-ismobile .tdpd-filter-total-label{position:absolute;right:0;top:9px;float:none;min-width:24px;margin:0;padding:1px 6px;background:#f2f4f8;border-radius:8px;font-size:11.5px;font-weight:500;line-height:16px;color:#98a2b3;text-align:center}
#tdpd-ismobile .tdpd-filter-total-label.label-danger{background:#fdeaea;color:#d64545;cursor:pointer}
#tdpd-ismobile .tdpd-filter-total-label.label-danger:hover{background:#d64545;color:#fff}
#tdpd-ismobile .tdpd-filter-icon-unselect{font-size:9px;line-height:16px}

/* --- 4. Цена --------------------------------------------------------------------
   Поля темы идут с градиентным фоном и DX-фильтром — гасим, иначе рамка «плывёт».
   `.row` внутри переводим во flex, обязательно гасив clearfix-псевдоэлементы
   bootstrap: в flex/grid они становятся полноценными элементами и рвут сетку. */
#tdpd-ismobile .price-item .row{display:flex;gap:10px;margin:0}
#tdpd-ismobile .price-item .row::before,
#tdpd-ismobile .price-item .row::after{display:none}
#tdpd-ismobile .price-item .row > div{float:none;width:50%;padding:0}
#tdpd-ismobile input.tdpd-inp-pr-filter{width:100%;height:40px;padding:0 10px;background:#fff;background-image:none;filter:none;border:1px solid #e2e5ee;border-radius:10px;box-shadow:none;font-size:14px;line-height:38px;color:#20242c;text-align:center}
#tdpd-ismobile input.tdpd-inp-pr-filter:focus{border-color:#2f55d4;box-shadow:0 0 0 3px rgba(47,85,212,.12);outline:none}
#tdpd-ismobile .price-item .checkbox{margin-top:8px}

/* --- 5. Выбранные значения ------------------------------------------------------
   Блок стоит над формой и в свёртке не участвует, поэтому его строки оформляем
   чипсами, а не строками списка. Квадрат чекбокса здесь не нужен.
   ВАЖНО: селекторы с двумя id. Блок лежит внутри `.item-content`, и правила
   строк значений выше (`#tdpd-ismobile .item-content .checkbox`, один id + два
   класса) специфичнее, чем `#tdpd-selected-values .checkbox` — свой же скин
   съедал отступы чипсов. */
#tdpd-ismobile #tdpd-selected-values{background:#fbfcfe;border-bottom:1px solid #eef0f4}
#tdpd-ismobile #tdpd-selected-values a.list-group-item.item-name{padding:14px 18px 4px;cursor:default;background:transparent}
#tdpd-ismobile #tdpd-selected-values a.list-group-item.item-name .name{font-size:11.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#98a2b3}
#tdpd-ismobile #tdpd-selected-values a.list-group-item.item-name:hover .name{color:#98a2b3}
#tdpd-ismobile #tdpd-selected-values .list-group-item.item-content{display:block;padding:0 18px 4px;background:transparent}
#tdpd-ismobile #tdpd-selected-values .tdpd-selected-group-label{margin:8px 0 6px;font-size:12px;font-weight:500;color:#7a8194}
#tdpd-ismobile #tdpd-selected-values .checkbox{display:inline-flex;align-items:center;gap:4px;max-width:100%;margin:0 6px 6px 0;padding:5px 8px 5px 11px;background:#eef2ff;border-radius:999px}
#tdpd-ismobile #tdpd-selected-values .checkbox label,
#tdpd-ismobile #tdpd-selected-values .checkbox label.tdpd-selected-values-label{display:inline;padding:0;font-size:13px;font-weight:400;line-height:16px;color:#2f55d4;cursor:default}
#tdpd-ismobile #tdpd-selected-values .checkbox label::before{display:none}
#tdpd-ismobile #tdpd-selected-values .checkbox label:hover{color:#2f55d4}
#tdpd-ismobile #tdpd-selected-values .tdpd-filter-total-label,
#tdpd-ismobile #tdpd-selected-values .tdpd-filter-total-label.label-danger{position:static;min-width:0;width:16px;height:16px;padding:0;background:transparent;color:#8ba0e8;line-height:16px}
#tdpd-ismobile #tdpd-selected-values .tdpd-filter-total-label.label-danger:hover{background:transparent;color:#2f55d4}

/* Кнопка сброса. Тема красит её в синий через `.tdpd-btn-blue{background:#3f3ffa!important}`
   (custom.css:2057) и задаёт `#button-reset{width:90%;margin-bottom:15px!important}`,
   поэтому здесь ровно те же свойства с `!important` — иначе кнопка остаётся
   тяжёлым синим блоком во всю карточку. */
#tdpd-ismobile #button-reset{display:block;width:calc(100% - 36px)!important;height:40px;margin:4px 18px 14px!important;padding:0 14px;background:#fff!important;border:1px solid #d9dded;border-radius:10px;box-shadow:none;font-size:14px;font-weight:500;color:#4a5163!important}
#tdpd-ismobile #button-reset:hover{background:#f7f9ff!important;border-color:#2f55d4;color:#2f55d4!important}

/* --- 6. Мобильная шторка --------------------------------------------------------
   Разметку шторки (`#filter-mobile`) и кнопку `#filter-button` создаёт скрипт
   модуля, а стили к ним лежали в отключённом `stylesheet_minify.css`.

   ПОЧИНКА 16.08.2026 «шторка открывается не полностью».
   У темы есть своя схема шторки (`responsive.css`, @media max-width:992):
   ширина 240px, `margin-left:-240px`, открытие — `transform:translateX(100%)`.
   15.08 мы переопределили ширину (300px) и трансформы (`-100%` → `0`), но
   `margin-left:-240px` не погасили. Итог: открытая шторка стояла на -240px и
   наружу выходили ровно 60px из 300 — это и видно на скриншотах.
   Лечит одна строка `margin-left:0`; без неё любая ширина съедается на 240px. */
#filter-mobile{position:fixed;top:0;left:0;bottom:0;z-index:10000;width:300px;max-width:88vw;margin-left:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#fff;transform:translateX(-100%);transition:transform .28s ease;box-shadow:0 0 30px rgba(0,0,0,.18);overscroll-behavior:contain}
#filter-mobile:empty{display:none}
#filter-mobile.filter-show{transform:translateX(0)}
#filter-mobile #tdpd-ismobile{margin:0;border:0;border-radius:0;padding-bottom:74px}
#filter-mobile .box-heading{padding-right:48px}
#filter-close{display:none}
#filter-mobile #filter-close{position:absolute;top:11px;right:12px;display:block;width:28px;height:28px;font-size:24px;line-height:26px;color:#98a2b3;text-align:center;cursor:pointer}
#filter-mobile #filter-close:hover{color:#20242c}

/* Затенение под шторкой. Тема рисует его правилом
   `#filter-mobile.filter-show + .wrapper::before`, но на нашей странице
   следующий за шторкой элемент — `.load-container`, и правило не срабатывает.
   Поэтому своя подложка: она же закрывает шторку по тапу. */
#tdpd-filter-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9990;background:rgba(20,24,33,.45);opacity:0;visibility:hidden;transition:opacity .28s,visibility .28s}
#tdpd-filter-backdrop.show{opacity:1;visibility:visible}
html.tdpd-filter-lock{overflow:hidden}

/* Нижняя кнопка «Показать N товаров». `position:fixed` внутри шторки цепляется
   именно за шторку: у неё есть `transform`, а он создаёт содержащий блок для
   fixed-потомков. Поэтому кнопка стоит по низу панели и не уезжает при
   прокрутке списка значений. */
#tdpd-filter-apply{position:fixed;left:0;right:0;bottom:0;z-index:5;display:none;padding:10px 14px;padding-bottom:calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #eef0f4;box-shadow:0 -6px 18px rgba(20,24,33,.10)}
#filter-mobile.filter-show #tdpd-filter-apply{display:block}
#tdpd-filter-apply button{display:block;width:100%;height:46px;padding:0 14px;background:#2f55d4;border:0;border-radius:12px;font-size:15px;font-weight:500;line-height:46px;color:#fff}
#tdpd-filter-apply button:active{background:#2646b0}

/* Родной попап «Показать (N)» модуля (режимы how_filter 0 и 2) внутри шторки
   позиционируется абсолютом от кликнутой строки и вылезает за панель.
   Приводим его к той же нижней плашке. */
#filter-mobile .popover{position:fixed!important;top:auto!important;left:0!important;right:0!important;bottom:0!important;z-index:6;width:auto!important;max-width:none;margin:0!important;padding:10px 14px;background:#fff;border:0;border-top:1px solid #eef0f4;border-radius:0;box-shadow:0 -6px 18px rgba(20,24,33,.10)}
#filter-mobile .popover .arrow{display:none}
#filter-mobile .popover .popover-content{padding:0}
#filter-mobile .popover button{display:block;width:100%;height:46px;background:#2f55d4!important;border:0;border-radius:12px;font-size:15px;font-weight:500;color:#fff!important}

/* Кнопка «Фильтр». Живёт в одной строке с сортировкой (см. блок 6б),
   поэтому невысокая и без внешних отступов. Счётчик справа — число
   выбранных значений, чтобы на мобильном было видно, что фильтр включён. */
#filter-button{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;background:#2f55d4;border-radius:10px;font-size:14px;font-weight:500;line-height:38px;color:#fff;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}
#filter-button:hover,#filter-button:active{background:#2646b0}
#filter-button svg{flex:0 0 auto;display:block}
#filter-button .tdpd-fb-count{display:inline-block;min-width:19px;height:19px;padding:0 5px;background:#fff;border-radius:10px;font-size:12px;font-weight:600;line-height:19px;color:#2f55d4;text-align:center}
/* 993, а не 992: скрипт модуля считает мобильным всё, что `<= 992`, и на ровно
   992px правило `min-width:992` спрятало бы кнопку у ещё мобильной раскладки. */
@media (min-width:993px){
  #filter-button,#tdpd-filter-backdrop,#tdpd-filter-apply{display:none}
  /* два id — иначе правило показа плашки (`#filter-mobile.filter-show
     #tdpd-filter-apply`) специфичнее и перебило бы строку выше */
  #filter-mobile.filter-show #tdpd-filter-apply{display:none}
  /* на десктопе коробка фильтра лежит в `#filter-column`, а в шторке остаётся
     одна плашка — саму шторку прячем, иначе это пустая белая панель за
     левым краем экрана (`:empty` её больше не ловит) */
  #filter-mobile{display:none}
}

/* --- 6б. Панель «Фильтр + сортировка» на мобильном ------------------------------
   Кнопку модуль вешал в `.mobile-category-header` — пустой контейнер темы сразу
   под H1: синяя пилюля висела по центру отдельной строкой и отодвигала товары.
   Переносим её в `.sort-row` (скрипт модуля, см. `oct_product_filter.tpl`) и
   раскладываем строку во flex: [Фильтр] [сортировка]. Первый товар поднимается
   примерно на 80px.
   `.sort-row` — это bootstrap-овский `.row`, у него clearfix-псевдоэлементы:
   во flex они становятся полноценными элементами и рвут раскладку, поэтому
   гасятся явно. */
.mobile-category-header:empty{display:none}
@media (max-width:992px){
  .sort-row{display:flex!important;align-items:center;gap:10px;padding-top:0!important;margin-bottom:14px!important}
  .sort-row::before,.sort-row::after{display:none!important}
  .sort-row #filter-button{order:1;flex:0 0 auto;margin:0!important}
  .sort-row .right-sort-row{order:2;display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:1 1 auto;width:auto!important;min-width:0;margin:0!important;float:none!important}
  .sort-row .left-sort-row{order:3;flex:0 0 auto;width:auto!important}
  /* в правой части темы живут ДВА контрола: «Сортировать» и «Показывать».
     Тянется «Сортировать» (`flex:1 1 auto` + `width:100%` на самом select). */
  .sort-row .input-sort-div{display:flex!important;align-items:center;flex:1 1 auto;min-width:0;width:auto!important;margin:0!important;padding:0!important}
  .sort-row .input-sort-div .clearfix{display:none}
  .sort-row .input-sort-div > label,
  .sort-row .input-limit-div > label{width:auto;padding:0 6px 0 0;background:none;border:0;font-size:13px;color:#7a8194;white-space:nowrap}
  .sort-row #input-sort{width:100%!important;min-width:0}
  .sort-row #input-sort,
  .sort-row #input-limit{height:38px;padding:0 30px 0 12px;background:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2398a2b3' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;filter:none;border:1px solid #e2e5ee;border-radius:10px;box-shadow:none;font-size:13.5px;color:#3a4152;-webkit-appearance:none;appearance:none;text-overflow:ellipsis}
  .sort-row #input-sort:focus,
  .sort-row #input-limit:focus{border-color:#2f55d4;outline:none}
}
/* «Показывать» тема показывает только с 768px. Его контейнер трогаем именно
   здесь: если раздать `display:flex!important` во всём мобильном диапазоне,
   на телефоне мы включим скрытый темой контрол и он съест 10px отступа.
   `flex:0 0 auto` — чтобы контейнер не сжимался: select внутри имеет ширину
   от темы, не сжимается вместе с ним и наезжает на переключатель вида
   (замерено на 768px). */
@media (min-width:768px) and (max-width:992px){
  .sort-row .input-limit-div{display:flex!important;align-items:center;flex:0 0 auto;width:auto!important;margin:0!important;padding:0!important}
}
/* На телефоне «Показывать», подпись «Сортировать:» и переключатель вида тема
   скрывает сама — убираем и пустую левую ячейку, чтобы не съедала 10px
   на flex-отступ. */
@media (max-width:767px){
  .sort-row .left-sort-row{display:none}
}

/* --- 7. Липкая шапка на десктопе ------------------------------------------------
   Отдельный, ни с чем не связанный блок: если не понравится — удалить его целиком,
   остальное продолжит работать.
   Зачем: после фильтрации и после перехода по якорю («Отправить список →»,
   /#tdpd-tender) страница оказывается в середине документа, шапка уезжает вверх и
   выглядит как пропавшая. Липкая шапка убирает сам класс жалобы.
   Почему так написано:
   * `body{overflow:hidden}` (custom.css:51) делает body scroll-контейнером и
     полностью убивает `position:sticky` — проверено. Пара `overflow-x:clip` +
     `overflow-y:visible` гасит горизонтальный скролл, но контейнер НЕ создаёт;
     это единственная пара, при которой `visible` не форсится в `auto`.
   * `@supports` нужен именно поэтому: без поддержки `clip` (Safari < 16) браузер
     оставил бы `hidden` по X и `auto` по Y — body стал бы прокручиваемым и поехала
     бы вся страница. С `@supports` в таких браузерах просто не меняется ничего.
   * Только от 992px: на мобильном шапка темы и так `position:fixed`.
   Проверено на боевой странице: мегаменю раскрывается и не обрезается (у шапки
   `overflow:visible`, z-index 900 — попапы Magnific выше), горизонтальной
   прокрутки не появляется. */
@media (min-width:992px){
  @supports (overflow-x:clip){
    body{overflow-x:clip;overflow-y:visible}
    header{position:sticky;top:0;z-index:900;background:#fff;box-shadow:0 1px 0 rgba(32,36,44,.08)}
  }
}

/* Якоря не должны прятаться под липкой шапкой: браузер прокручивает так, чтобы
   верх блока совпал с верхом окна, и блок оказывается под шапкой. */
#tdpd-tender,
.tdb-band[id]{scroll-margin-top:104px}
@media (max-width:991px){
  #tdpd-tender,
  .tdb-band[id]{scroll-margin-top:60px}
}

/* ===== TDPD: карточки в каруселях «Рекомендуемые товары» и «Недавно просмотренные»
   (16.08.2026) ==================================================================
   Задача: те же плитки, что в листинге категории — блок «TDPD: карточки товаров
   в листинге категории (#res-products)» выше. Тот блок привязан к `#res-products`
   и на карусели не распространяется, поэтому здесь его копия с другой областью.

   Область — `.tdpd-carousel-box`: это общая обёртка обоих блоков. Важно, что
   «Рекомендуемые товары» приходят двумя разными путями (в зависимости от
   настройки `oct_rel_view`): либо сразу в разметке страницы (`#tdpd-related`),
   либо ajax-ом в `#autoreleted`. Разметка карточки в обоих случаях одна и та же,
   и обёртка `.tdpd-carousel-box` есть в обоих — поэтому селектор один.

   Работает В ПАРЕ с `product.tpl`: кнопка `.box-cart` в этой разметке лежит
   ВНУТРИ `.image` (в листинге категории её перенёс патч `category.tpl`), а
   средствами CSS вынуть её из картинки и прижать к низу карточки нельзя.
   Скрипт в product.tpl переносит её в конец `.caption`; правила ниже
   рассчитаны на то, что она уже там. */

/* Равная высота карточек в ряду.
   Это owl.carousel 1.x: `.owl-item` он раскладывает флоатами и проставляет им
   инлайновую ширину, а `.owl-wrapper` получает инлайновый `display:block` —
   поэтому здесь единственный `!important` в блоке, без него флекс не включится.
   Замерено на боевой странице: раскладка не ломается (элементы стоят на
   50/325/600/875 при ширине 275), листание работает как и раньше.
   ВНИМАНИЕ: `float` у `.owl-item` не трогать. Пробовал `float:none` — карусель
   схлопывается, все слайды встают друг на друга в одной точке. */
.tdpd-carousel-box .owl-wrapper{display:flex!important;align-items:stretch}
.tdpd-carousel-box .owl-item{display:flex}
.tdpd-carousel-box .owl-item > .item{display:flex;width:100%}
.tdpd-carousel-box .owl-item .product-layout{display:flex;width:100%;float:none}

/* карточка-плитка — значения один в один из блока листинга категории */
.tdpd-carousel-box .product-thumb{width:100%;height:100%;display:flex;flex-direction:column;margin:0;padding:12px;background:#fff;border:1px solid #e8eaed;border-radius:14px;transition:box-shadow .2s ease,border-color .2s ease}
.tdpd-carousel-box .product-thumb:hover{position:static!important;transform:none!important;right:auto!important;left:auto!important;border-color:#c9d2f7;box-shadow:0 8px 24px rgba(20,25,60,.10)}
.tdpd-carousel-box .product-thumb .product-item{display:flex;flex-direction:column;flex:1 1 auto;height:auto}
.tdpd-carousel-box .product-thumb .image{background:#f7f8fa;border-radius:10px;overflow:hidden}

/* лишнее убираем ровно так же, как в листинге: пустые звёзды, hover-иконки,
   строку производителя и обрезанное описание */
.tdpd-carousel-box .product-thumb .caption .rating{display:none!important}
.tdpd-carousel-box .product-thumb .button-group{display:none!important}
.tdpd-carousel-box .product-thumb .caption .manufacture-product{display:none}
.tdpd-carousel-box .product-thumb .caption .product-description{display:none!important}

/* подпись: название(1) → цена(2) → кнопка (прижата к низу).
   Тема ставит `.price{order:1}` — из-за этого цена и стояла над названием. */
.tdpd-carousel-box .product-thumb .caption{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;padding:12px 4px 2px;text-align:left}
.tdpd-carousel-box .product-thumb .caption h4{order:1;clear:both;margin:0 0 8px;padding:0;min-height:36px}
.tdpd-carousel-box .product-thumb .caption h4 a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;line-height:18px;font-weight:500;color:#20242c;letter-spacing:0;text-transform:none}
.tdpd-carousel-box .product-thumb .caption h4 a:hover{color:#3f3ffa;text-decoration:none}
.tdpd-carousel-box .product-thumb .caption .price{order:2;margin:0 0 12px;font-size:18px;line-height:22px;font-weight:700;color:#20242c}
.tdpd-carousel-box .product-thumb .caption .price .price-new{font-size:18px;font-weight:700;color:#e5372b}
.tdpd-carousel-box .product-thumb .caption .price .price-old{margin-left:6px;font-size:13px;font-weight:400;color:#9aa0a6;text-decoration:line-through}

/* постоянная кнопка «В корзину» на всю ширину — после переноса скриптом.
   Пока перенос не случился (или скрипт не отработал), кнопка остаётся в
   `.image` и ведёт себя как раньше: ничего не ломается. */
.tdpd-carousel-box .product-thumb .caption .box-cart{order:5;position:static!important;opacity:1!important;bottom:auto;margin:auto 0 0;padding:0;text-align:center}
.tdpd-carousel-box .product-thumb .caption .box-cart .button-cart{display:block;width:100%;height:auto;padding:11px 12px;line-height:1.2;font-size:14px;font-weight:600;color:#fff;background:#3f3ffa;border:0;border-radius:9px;box-shadow:none;text-transform:none}
.tdpd-carousel-box .product-thumb .caption .box-cart .button-cart:hover{background:#2f2fe0;color:#fff}
.tdpd-carousel-box .product-thumb .caption .box-cart .button-cart span{display:inline}

/* ===== TDPD: правки по замечаниям 17.08.2026 =====================================
   Четыре куска: фильтр (ширины подписей и «снять значение»), мобильная шторка
   фильтра (кнопка «Показать товары» переставала быть липкой), ссылка на товары
   со скидкой в шапке. Липкая панель покупки правится в main.js, ширина блока
   рекомендаций — в шаблоне модуля. */

/* --- 1. Фильтр: ширина подписей -------------------------------------------------
   `stylesheet.min.css` держит `.filtered label{width:190px}` (и 180px/150px в
   responsive.css). Из-за фиксированной ширины чипс «выбранного значения»
   растягивался на всю карточку — на скриншоте это «00» во всю ширину, — а в
   списке значений подпись не доходила до правого края строки.
   Замерено на бою до/после: чипс 225 → 158 (по содержимому), подпись значения
   190 → 225 (вся строка, счётчик стоит абсолютом справа и не задевается). */
#tdpd-ismobile .item-content label{width:auto}
#tdpd-ismobile #tdpd-selected-values .checkbox label,
#tdpd-ismobile #tdpd-selected-values .checkbox label.tdpd-selected-values-label{width:auto;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Подпись группы («Ростовая группа» над чипсами) приходит подчёркнутой от темы. */
#tdpd-ismobile #tdpd-selected-values .tdpd-selected-group-label{text-decoration:none}

/* --- 2. Фильтр: кнопка «снять значение» -----------------------------------------
   У выбранной строки модуль ПОДМЕНЯЕТ счётчик товаров на красную плашку с ×
   (`.label-danger` + `.fa-times`). Из-за красного фона выбранная строка читалась
   как ошибка, а плашка была шире счётчика — строки «прыгали».
   Делаем × того же размера, что счётчик, и спокойного цвета; красным он
   становится только под курсором, когда это действительно кнопка удаления. */
#tdpd-ismobile .inner-box .item-content .tdpd-filter-total-label.label-danger{width:24px;min-width:24px;height:20px;padding:0;background:#f2f4f8;color:#98a2b3}
#tdpd-ismobile .inner-box .item-content .tdpd-filter-total-label.label-danger:hover{background:#fdeaea;color:#d64545}
#tdpd-ismobile .inner-box .tdpd-filter-icon-unselect{font-size:10px;line-height:20px}

/* --- 3. Мобильная шторка: кнопка «Показать товары» -------------------------------
   Было `position:fixed` внутри `#filter-mobile`. У шторки есть `transform`
   (ей она открывается), а трансформированный предок становится содержащим
   блоком для fixed-потомков — и такой «fixed» прокручивается вместе с
   содержимым. Замерено на бою: при прокрутке списка на 600px кнопка уезжала
   с нижней кромки экрана (bottom 812) на bottom 212 — ровно то, что на скриншоте.
   `position:sticky` тоже не помог (проверено: элемент не прилипал).
   Рабочая схема — та же, что в попапе корзины: шторка сама не прокручивается,
   она флекс-колонка; прокручивается только карточка фильтра, а кнопка стоит
   отдельным элементом внизу. После правки замерено: кнопка держит 745..812
   при любой прокрутке списка. */
#filter-mobile{display:flex;flex-direction:column;overflow:hidden}
#filter-mobile #tdpd-ismobile{order:1;flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:0}
#tdpd-filter-apply{order:2;position:static;flex:0 0 auto;left:auto;right:auto;bottom:auto}

/* Заодно шапка фильтра с крестиком больше не уезжает вверх при прокрутке списка. */
#filter-mobile #tdpd-ismobile .box-heading{position:sticky;top:0;z-index:3;background:#fff}

/* --- 4. Ссылка «Скидки» в шапке ---------------------------------------------------
   Стоит между строкой поиска и телефоном. Тексты, адрес и показ настраиваются в
   Дизайн → Темы → tech-store → вкладка «Шапка», блок «Кнопка "Скидки"».
   Про геометрию: `.col-cart` (телефон + корзина) позиционирован абсолютом с
   `right:80px`, поэтому свободное окно между поиском и телефоном ПОСТОЯННОЕ —
   204px и на 1280, и на 1920. Отсюда потолок ширины: замерено 163px с бейджем
   и 112px без него, зазор до телефона 25 и 76px соответственно.
   Ниже 1200px шапка у темы своя (мобильная), туда ссылку не выводим. */
.tdpd-sale-link{display:none}
/* ПРАВКА 17.08 (вечер): порог 1200 → 1201 и запрет сжимать соседей.
   На ровно 1200px у темы включается компактная шапка: `.ts-search-box` там
   не 1087px, а 351 — поиск сам по себе ужат до 152px. Моя кнопка вставала в
   ту же флекс-строку и доедала остаток: замерено 1200px → поиск 68px,
   кнопка каталога 123px вместо 154/184. На 1201px шапка уже широкая и всё
   встаёт штатно (поиск 330, кнопка 673..836, зазоры 16 и 25).
   `flex-shrink:0` у поиска и кнопки каталога — страховка: даже если тема
   изменит ширины, моя кнопка будет сжиматься сама, а не давить соседей. */
@media (min-width:1201px){
  .ts-search-box .main-menu__button,
  .ts-search-box #search{flex-shrink:0}

  /* ПРАВКА 3 — вот почему кнопка «не влезала» даже с зазором.
     Синяя кнопка поиска ВЫЛЕЗАЕТ за свой контейнер на 40px. Причина —
     bootstrap-приём `.input-group-btn{width:1%}` (расчёт на table-cell),
     а `#search` у темы `display:flex`: обёртка кнопки схлопывается до 3px,
     а сама кнопка 45px рисуется поверх соседей. Замер: бокс `#search`
     360..690, а кнопка 685..730 — она и накрывала иконку «Скидок»
     (кнопка начиналась на 706, перекрытие 24px).
     Возвращаем обёртке нормальную ширину — кнопка встаёт внутрь бокса.
     После правки: поле 360..645, кнопка 644..689, зазор до «Скидок» 17px,
     до телефона 25px. */
  #search .input-group-btn:not(.dropdown){flex:0 0 45px;width:45px}
  .tdpd-sale-link{display:inline-flex;align-items:center;align-self:flex-start;flex:0 1 auto;min-width:0;gap:7px;height:45px;max-width:186px;margin-left:16px;padding:0 12px 0 6px;background:#fff1ec;border:1px solid #ffd9cb;border-radius:999px;text-decoration:none;white-space:nowrap;transition:background-color .18s,border-color .18s,box-shadow .18s}
  .tdpd-sale-link:hover{background:#ffe7de;border-color:#ffc3ad;box-shadow:0 4px 14px rgba(255,90,46,.18);text-decoration:none}
  .tdpd-sale-link .tdpd-sale-ico{flex:0 0 31px;display:inline-flex;align-items:center;justify-content:center;width:31px;height:31px;border-radius:50%;background:#ff5a2e;color:#fff}
  .tdpd-sale-link .tdpd-sale-ico svg{width:17px;height:17px}
  .tdpd-sale-link .tdpd-sale-text{display:inline-flex;align-items:center;gap:7px;min-width:0}
  .tdpd-sale-link .tdpd-sale-title{overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:600;line-height:1.2;color:#20242c}
  .tdpd-sale-link .tdpd-sale-badge{flex:0 0 auto;padding:2px 7px;background:#ff5a2e;border-radius:999px;font-size:11px;font-weight:600;line-height:14px;color:#fff}
}



/* ===== TDPD: правки вечера 17.08.2026 ============================================
   Отступы между карточками в витрине рекомендаций и отключение штатного блока
   «Рекомендуемые товары». */

/* --- Зазоры в карусели рекомендаций ---------------------------------------------
   Карточки стояли вплотную: в моей разметке `.product-thumb` занимал слайд
   целиком (замер: слайд 147..430 и карточка 147..430, зазор 0). У штатного
   блока «Недавно просмотренные» те же слайды, но карточка внутри уже с полями
   (162..415, зазор 30) — их даёт bootstrap-колонка, которой в моей разметке нет.
   Добираем ровно теми же 15px, чтобы блоки выглядели одинаково.
   После правки замерено: оба блока — первая карточка на 162, зазор 30,
   ширина карточки 253. */
.tdpd-reco-row .owl-item{padding:0 15px}

/* --- Штатный блок «Рекомендуемые товары» -----------------------------------------
   Выключение в админке его не убирает: тема тянет его сама — либо серверной
   разметкой `.tdpd-related-row`, либо ajax-ом в `#autoreleted` (запрос
   `product/product/getAutoRels` стоит прямо в product.tpl, вне настроек модуля).
   Прячем оба пути: витрину рекомендаций он дублирует.
   Это косметическое отключение — запрос всё ещё уходит. Чтобы убрать и его,
   нужна правка `product.tpl`, а живой версии этого файла у меня нет (скачать
   по HTTP нельзя). Пришлёте файл — вырежу и запрос. */
#autoreleted,
.tdpd-carousel-row.tdpd-related-row{display:none!important}

/* ===== TDPD: липкая панель покупки переехала вниз (17.08.2026, вечер) ============
   Две попытки поставить её под шапку не прижились: панель прыгала (при загрузке
   шапка стоит на 35..124, а прилипнув — на 0..89, разница 35px «на глаз») и всё
   равно налезала на шапку в момент, когда та уезжает. Решение проще: на десктопе
   панель теперь внизу экрана — так же, как на мобильном. С шапкой она больше не
   пересекается вообще, положение постоянное, прыгать нечему.
   Круглая кнопка-трубка в правом нижнем углу поднимается, пока панель видна
   (замер: панель 663..720, трубка 575..650 — не задевают). */
#tdpd-sticky-buy{top:auto;bottom:0;border-top:1px solid #eceef1;border-bottom:0;box-shadow:0 -4px 16px rgba(20,25,60,.10);transform:translateY(100%)}
#tdpd-sticky-buy.visible{transform:translateY(0)}
body.tdpd-buybar-on #uptocall-mini,
body.tdpd-buybar-on a.field-tip.current-link{bottom:80px;transition:bottom .2s ease}


/* ===================================================================== */
/* TDPD: редизайн 2026-09, этап 01 - согласие на обработку данных.        */
/* Штатная разметка попапов: сначала текст, потом чекбокс с инлайновым    */
/* width:auto;height:auto - цель около 13 px, пальцем не попасть, а без   */
/* галочки форма не уходит. Инлайновый стиль перебиваем !important,       */
/* строку раскладываем флексом и ставим чекбокс первым (order:-1).        */
/* Класс вешает скрипт в footer.tpl - он же делает кликабельной всю       */
/* строку, включая попапы, приехавшие аяксом.                            */
/* ===================================================================== */
input[type="checkbox"][name="terms"]{
  -webkit-appearance:checkbox; -moz-appearance:checkbox; appearance:checkbox;
  width:24px !important; height:24px !important;
  min-width:24px; min-height:24px; flex:0 0 24px;
  margin:0 !important; padding:0; cursor:pointer; accent-color:#2F55D4;
}
.tdpd-terms-row{
  display:flex; align-items:flex-start; gap:10px;
  text-align:left; line-height:1.45; padding:6px 0; cursor:pointer;
  -webkit-tap-highlight-color:rgba(47,85,212,.12);
}
.tdpd-terms-row input[type="checkbox"][name="terms"]{order:-1; margin-top:1px !important}
.tdpd-terms-row a{text-decoration:underline}


/* ===================================================================== */
/* TDPD: редизайн 2026-09, этап 02 — свотчи цвета краски и декора ЛДСП.   */
/* Размер и радиус взяты из макета карточки: 40x40, скруглeние 10.        */
/* Правило темы задаёт этим картинкам 22 px; перебиваем адресно, по классу */
/* optid-<id опции>, чтобы не задеть прочие опции с картинками.           */
/* ===================================================================== */
#product .options-box .optid-65,
#product .options-box .optid-66,
.optid-65, .optid-66{ margin:0 8px 8px 0; }

#product .options-box .optid-65 .img-thumbnail,
#product .options-box .optid-66 .img-thumbnail,
.optid-65 .img-thumbnail,
.optid-66 .img-thumbnail{
  width:40px !important; height:40px !important;
  padding:0; border-radius:10px; background:transparent;
  border:1px solid #DDE1E8; box-shadow:none;
  transition:border-color .15s ease, box-shadow .15s ease;
}
#product .options-box .optid-65:hover .img-thumbnail,
#product .options-box .optid-66:hover .img-thumbnail,
.optid-65:hover .img-thumbnail,
.optid-66:hover .img-thumbnail{ border-color:#B8BEC9; }

#product .options-box .optid-65.selected-img .img-thumbnail,
#product .options-box .optid-66.selected-img .img-thumbnail,
.optid-65.selected-img .img-thumbnail,
.optid-66.selected-img .img-thumbnail{
  border:2px solid #2F55D4;
  box-shadow:0 0 0 2px rgba(47,85,212,.15);
}


/* TDPD: редизайн 2026-09 — ссылка на политику в мелком тексте под кнопкой.
   У .tdb-t-fine такое правило уже есть, у хиро-формы (.tdpd-fine) не было:
   ссылка там ничем не отличалась от обычного текста и не читалась как ссылка. */
.tdpd-fine a{color:#7a756c; text-decoration:underline}
.tdpd-fine a:hover{color:#2F55D4}


/* TDPD: редизайн 2026-09 — уведомление о согласии под кнопкой в попапах.
   Обязательную галочку решили не включать: она отсекает отправки, а формы
   и без того конвертят слабо. Согласие оформляется действием, поэтому под
   кнопкой стоит пояснение со ссылкой на политику. Размеры и цвет — как у
   .tdpd-fine на главной и .tdb-t-fine в тендерных блоках. */
.tdpd-form-fine{
  font-size:11px; line-height:1.45; color:#9a948a;
  text-align:center; margin:10px 0 0; padding:0 4px;
}
.tdpd-form-fine a{color:#7a756c; text-decoration:underline}
.tdpd-form-fine a:hover{color:#2F55D4}


/* ===================================================================== */
/* TDPD: редизайн 2026-09, этап 03 — ростовая группа карточками.          */
/* Раскладку собирает скрипт в footer.tpl из штатных радиокнопок.         */
/* ===================================================================== */
.options-box.tdpd-rg-box{display:flex; flex-wrap:wrap; gap:10px}
.options-box.tdpd-rg-box .radio{margin:0; padding:0}
.options-box.tdpd-rg-box .radio input[type="radio"]{position:absolute; opacity:0; pointer-events:none}

label.tdpd-rg-card{
  display:flex; flex-direction:column; gap:2px;
  min-width:186px; padding:12px 14px; margin:0; cursor:pointer;
  border:1px solid #E8E3D8; border-radius:12px; background:#fff;
  font-weight:400; line-height:1.35;
  transition:border-color .15s ease, box-shadow .15s ease;
}
label.tdpd-rg-card:hover{border-color:#B8BEC9}
label.tdpd-rg-card.tdpd-rg-on{
  border:2px solid #2F55D4; padding:11px 13px;
  box-shadow:0 0 0 2px rgba(47,85,212,.13);
}
.tdpd-rg-num{font-size:15px; font-weight:600; color:#1A1D24}
.tdpd-rg-sub{font-size:12.5px; color:#7A756C}
.tdpd-rg-seat{font-size:12.5px; color:#7A756C}
.tdpd-rg-price{font-size:15px; font-weight:600; color:#1A1D24; margin-top:4px}

@media (max-width:600px){
  .options-box.tdpd-rg-box{gap:8px}
  label.tdpd-rg-card{min-width:calc(50% - 4px); flex:1 1 calc(50% - 4px); padding:10px 12px}
  label.tdpd-rg-card.tdpd-rg-on{padding:9px 11px}
}


/* ===================================================================== */
/* TDPD: редизайн 2026-09, этап 03 — оптовая шкала и заметки в карточке.  */
/* ===================================================================== */
#tdpd-card-extra{margin:14px 0 16px}
.tdpd-scale{border:1px solid #E8E3D8; border-radius:12px; padding:12px 14px; background:#FAF8F4}
.tdpd-scale-h{font-size:12px; letter-spacing:.02em; color:#7A756C; margin-bottom:8px}
.tdpd-scale-row{
  display:flex; align-items:baseline; justify-content:space-between; gap:12px;
  padding:5px 0; border-bottom:1px solid rgba(232,227,216,.8);
}
.tdpd-scale-row:last-child{border-bottom:0}
.tdpd-scale-row span{font-size:13px; color:#7A756C}
.tdpd-scale-row b{font-size:15px; font-weight:600; color:#1A1D24; white-space:nowrap}

.tdpd-note{
  display:flex; align-items:flex-start; gap:8px; margin-top:10px;
  font-size:12.5px; line-height:1.45; color:#7A756C;
}
.tdpd-note svg{flex:0 0 15px; margin-top:2px; color:#B8BEC9}
.tdpd-note-ship svg{color:#1E8E5A}


/* TDPD: редизайн 2026-09 — число позиций в чипе раздела.
   Считается заранее (tdpd_cat_counts.php), в базу за ним никто не ходит. */
.tdpd-subchip-n{
  display:inline-block; margin-left:6px; padding:0 5px;
  min-width:18px; border-radius:9px;
  background:rgba(47,85,212,.09); color:#2F55D4;
  font-size:11px; line-height:17px; font-weight:600; vertical-align:1px;
}
.tdpd-subchip:hover .tdpd-subchip-n{background:rgba(47,85,212,.16)}


/* TDPD: редизайн 2026-09 — число позиций у групп в меню каталога.
   Тот же предрасчитанный массив, что и у чипов разделов. */
.tdpd-mm-n{
  display:inline-block; margin-left:6px; padding:0 5px;
  min-width:17px; border-radius:9px;
  background:rgba(47,85,212,.09); color:#2F55D4;
  font-size:10.5px; line-height:16px; font-weight:600; vertical-align:1px;
}
a:hover > .tdpd-mm-n{background:rgba(47,85,212,.16)}


/* ======================================================================
   TDPD ЭТАП 08: мобильные экраны
   39% визитов приходят с телефона, конверсия канала за три года не
   сдвинулась: 0,126% -> 0,124%. Разметку не переписываем — добавляем
   нижнюю панель действий, укорачиваем первый экран главной и вешаем
   липкую кнопку покупки на карточку.
   Граница мобильного — 992px: ровно так считает скрипт фильтра темы,
   и десктопные правила темы написаны от 993px.
   ====================================================================== */

/* --- 08.1 Нижняя панель действий -------------------------------------
   В правом нижнем углу стояли две плавающие кнопки одна над другой:
   виджет звонка (#uptocall-mini, z-index 999) и чат Битрикса. Они
   закрывали цену на карточке и названия категорий в плитке. Панель даёт
   те же действия явно и в один ряд; чат поднимается над ней, виджет
   звонка на телефоне не нужен — его работу делает пункт «Позвонить». */
#tdpd-tabbar{display:none}
#tdpd-buybar{display:none}

@media (max-width:992px){
  /* Панель была прибита к нижнему краю сплошной белой полосой и делила
     экран пополам с контентом. Теперь это плавающий островок со стеклом:
     фон страницы просвечивает и панель не читается как второй низ экрана. */
  #tdpd-tabbar{
    display:flex;align-items:stretch;position:fixed;z-index:1001;
    left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));
    padding:4px;border-radius:24px;
    background:rgba(255,255,255,.62);
    -webkit-backdrop-filter:blur(18px) saturate(180%);
    backdrop-filter:blur(18px) saturate(180%);
    border:1px solid rgba(255,255,255,.6);
    box-shadow:0 1px 0 rgba(255,255,255,.75) inset,
               0 10px 30px rgba(32,36,44,.16),
               0 2px 8px rgba(32,36,44,.08);
  }
  /* Размытие поддерживают не все: без него полупрозрачный фон превращается
     в мутное пятно поверх текста — там островок просто белый. */
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    #tdpd-tabbar{background:rgba(255,255,255,.97)}
  }
  body.tdpd-drawer-open #tdpd-tabbar,
  body.tdpd-buybar-on #tdpd-tabbar{display:none}
  #tdpd-tabbar .tdpd-tab{
    flex:1 1 0;min-width:0;position:relative;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    padding:7px 2px 6px;border-radius:20px;text-decoration:none;color:#4a4640;
    font-size:10.5px;line-height:1.15;text-align:center;
    -webkit-tap-highlight-color:rgba(47,85,212,.12);
  }
  #tdpd-tabbar .tdpd-tab:hover,#tdpd-tabbar .tdpd-tab:focus{color:#2F55D4;text-decoration:none}
  #tdpd-tabbar .tdpd-tab:active{background:rgba(47,85,212,.10)}
  #tdpd-tabbar .tdpd-tab svg{
    width:22px;height:22px;margin-bottom:3px;
    stroke:#2F55D4;fill:none;stroke-width:1.7;
    stroke-linecap:round;stroke-linejoin:round;
  }
  #tdpd-tabbar .tdpd-tab-n{
    position:absolute;top:2px;left:50%;margin-left:5px;
    min-width:16px;height:16px;padding:0 4px;border-radius:8px;
    background:#2F55D4;color:#fff;
    font-size:10px;line-height:16px;font-weight:600;text-align:center;
  }
  #tdpd-tabbar .tdpd-tab-n[hidden]{display:none}
  /* Высота островка плюс его отступ от края. */
  body{padding-bottom:calc(84px + env(safe-area-inset-bottom))}

  /* плавающие кнопки убираются с текущих позиций */
  #uptocall-mini{display:none!important}
  .b24-widget-button-wrapper.b24-widget-button-position-bottom-right{
    bottom:96px!important;right:14px!important;
  }
  /* в открытой шторке меню чат ложился на кнопку «Заказать звонок» */
  body.tdpd-drawer-open .b24-widget-button-wrapper.b24-widget-button-position-bottom-right{
    display:none!important;
  }
  /* приветствие чата само раскрывалось поверх цены товара */
  .b24-widget-button-popup{display:none!important}
}

/* --- 08.2 Первый экран главной ---------------------------------------
   Хиро занимал 894px — почти полтора экрана телефона, и плитка разделов
   начиналась за его нижней кромкой. Форма расчёта уезжает скриптом под
   плитку, а её место занимают поиск и две кнопки. Заодно мобильная
   раскладка хиро (она была написана до 900px) растянута до 992px:
   в промежутке 901–992 шапка темы уже фиксированная, а отступа под неё
   у хиро не было. */
#tdpd-mob-hero{display:none}
#tdpd-mob-form{display:none}

@media (max-width:992px){
  .tdpd-hero{padding:22px 18px;margin-top:62px}
  /* Фон хиро на телефоне задаётся НИЖЕ по файлу, сразу после общего
     правила .tdpd-hero::after — здесь оно не работало: общее правило
     идёт позже с той же специфичностью и перебивало этот блок. */
  .tdpd-hero-grid{grid-template-columns:1fr;gap:18px}
  .tdpd-h{font-size:24px;line-height:1.22}
  .tdpd-sub{max-width:none;font-size:15px;line-height:1.55;margin-top:12px}
  .tdpd-badge{margin-bottom:14px}
  .tdpd-chips{gap:8px;margin-top:16px}
  .tdpd-chip{font-size:12px;padding:6px 11px}

  #tdpd-mob-hero{display:block;margin-top:18px}
  .tdpd-ms{
    display:flex;height:46px;overflow:hidden;
    background:#fff;border:1px solid #e6dcc4;border-radius:10px;
  }
  .tdpd-ms input{
    flex:1;min-width:0;height:100%;border:0;background:transparent;
    padding:0 14px;font-size:15px;font-family:inherit;color:#20242c;
    -webkit-appearance:none;appearance:none;
  }
  .tdpd-ms input:focus{outline:none}
  .tdpd-ms input::placeholder{color:#a8a29a}
  .tdpd-ms button{
    width:48px;flex:0 0 48px;border:0;background:#2F55D4;color:#fff;
    display:flex;align-items:center;justify-content:center;
  }
  .tdpd-ms svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
  .tdpd-ma{display:flex;gap:10px;margin-top:12px}
  .tdpd-ma a{
    flex:1 1 0;min-width:0;height:46px;padding:0 6px;
    display:flex;align-items:center;justify-content:center;text-align:center;
    border-radius:10px;font-size:14.5px;font-weight:500;text-decoration:none;
  }
  .tdpd-ma-1,.tdpd-ma-1:hover,.tdpd-ma-1:focus{background:#2F55D4;color:#fff;text-decoration:none}
  .tdpd-ma-2,.tdpd-ma-2:hover,.tdpd-ma-2:focus{
    background:rgba(255,255,255,.9);border:1px solid #e6dcc4;color:#20242c;text-decoration:none;
  }

  #tdpd-mob-form{display:block;margin:4px 0 26px}
  #tdpd-mob-form .tdpd-card{border:1px solid #EDE6D6;box-shadow:0 6px 22px rgba(60,45,15,.09)}
}

/* --- 08.3 Липкая кнопка покупки на карточке ---------------------------
   Кнопка «В корзину» на телефоне уезжает под опции и ростовую шкалу.
   Панель повторяет её и появляется только тогда, когда настоящая кнопка
   ушла с экрана: два одинаковых действия рядом не показываем.
   Количество пишется в штатный input и дёргает его onchange, поэтому
   пересчёт цены темой идёт как обычно. */
@media (max-width:992px){
  body.tdpd-buybar-on #tdpd-buybar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:1002;
    align-items:center;gap:9px;padding:9px 12px;
    background:#fff;border-top:1px solid #E8E3D8;
    box-shadow:0 -2px 14px rgba(40,32,12,.12);
    padding-bottom:calc(9px + env(safe-area-inset-bottom));
  }
  #tdpd-buybar .tdpd-bb-price{
    flex:0 0 auto;max-width:38%;
    font-size:15px;font-weight:600;color:#20242c;line-height:1.15;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  #tdpd-buybar .tdpd-bb-qty{
    flex:0 0 auto;display:flex;align-items:center;
    border:1px solid #DCD7CC;border-radius:9px;height:42px;overflow:hidden;
  }
  #tdpd-buybar .tdpd-bb-qty button{
    width:32px;height:100%;border:0;background:transparent;
    color:#4a4640;font-size:19px;line-height:1;padding:0;
  }
  #tdpd-buybar .tdpd-bb-qty button:active{background:rgba(47,85,212,.08)}
  #tdpd-buybar .tdpd-bb-qty span{
    min-width:26px;text-align:center;font-size:14px;font-weight:600;color:#20242c;
  }
  #tdpd-buybar .tdpd-bb-go{
    flex:1 1 auto;min-width:0;height:42px;padding:0 10px;
    border:0;border-radius:9px;background:#2F55D4;color:#fff;
    font-size:14.5px;font-weight:500;font-family:inherit;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  #tdpd-buybar .tdpd-bb-go:active{background:#20399a}
}


/* ======================================================================
   TDPD: каталог по макету — ширина страницы и карточка листинга
   ====================================================================== */

/* Ширина. Тема держит контейнер на 1200px (stylesheet_tdpd.css: .container
   width:120rem от 1200px), в макете артборд 1440 с полями по 60 — то есть
   1320 содержимого. Разжимаем в две ступени и только на широких экранах,
   чтобы не трогать ноутбучные 1366 и ниже, где 1200 стоит по делу. */
/* ОТМЕНЕНО 05.09.2026 по замечанию клиента: на экране 1520 контейнер 1440
   оставлял по 33px полей и читался как «во всю ширину». Возвращаемся к
   штатной сетке темы (1200px, как колонка bootstrap) — четыре карточки в
   ряд при этом сохраняются, они просто уже.
@media (min-width:1360px){ .container{width:1330px} }
@media (min-width:1520px){ .container{width:1440px} }
*/

/* Карточка листинга: плашка наличия, артикул, цена от партии.
   Порядок в .caption задан флексом темы (у .tdpd-rost стоит order:0),
   поэтому новым строкам порядок тоже назначаем явно. */
:is(#res-products,.tdb-sale-row) .caption .tdpd-stock,
.product-thumb .caption .tdpd-stock{
  order:0; align-self:flex-start;
  display:inline-block; margin:0 0 6px; padding:2px 8px;
  border-radius:5px; background:#eaeefb; color:#2F55D4;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:11px; font-weight:500; line-height:17px; white-space:nowrap;
}
:is(#res-products,.tdb-sale-row) .caption .tdpd-art,
.product-thumb .caption .tdpd-art{
  order:0; align-self:flex-start;
  display:block; margin:0 0 4px;
  color:#9a948a; font-size:11px; line-height:15px; letter-spacing:.01em;
}
:is(#res-products,.tdb-sale-row) .caption .tdpd-bulk,
.product-thumb .caption .tdpd-bulk{
  order:0; align-self:flex-start;
  margin:-4px 0 8px; color:#12703c; font-size:12px; line-height:16px;
}


/* ======================================================================
   TDPD: страница сметы (этап 09)
   Корзину на этом сайте открывают 35 раз за полгода при 136 отправках
   форм — люди не «покупают», а собирают список на согласование. Страница
   свёрстана как документ: артикулы, количества, суммы и действия
   «сохранить ссылку / КП / спецификация», а не как чек магазина.
   ====================================================================== */
.tdpd-smeta{padding:0 0 40px}
.tdpd-smeta *{box-sizing:border-box}
.tdpd-sm-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap;margin:0 0 22px}
.tdpd-smeta h1{margin:0 0 8px;font-size:28px;font-weight:600;color:#20242c}
.tdpd-sm-meta{margin:0;max-width:620px;color:#7a756c;font-size:13.5px;line-height:1.55}
.tdpd-sm-sum{flex:0 0 auto;text-align:right;background:#F3EEE3;border-radius:12px;padding:12px 18px;min-width:210px}
.tdpd-sm-sum span{display:block;color:#7a756c;font-size:12px}
.tdpd-sm-sum b{display:block;font-size:24px;font-weight:600;color:#20242c;line-height:1.25}
.tdpd-sm-sum em{display:block;font-style:normal;color:#7a756c;font-size:12px}

.tdpd-sm-table{border:1px solid #E8E3D8;border-radius:12px;overflow:hidden;background:#fff}
.tdpd-sm-tr{display:grid;grid-template-columns:1fr 120px 132px 130px 44px;align-items:center;
  gap:12px;padding:14px 16px;border-bottom:1px solid #EFEAE0}
.tdpd-sm-tr:last-child{border-bottom:0}
.tdpd-sm-th{background:#FAF6EC;color:#7a756c;font-size:12px;letter-spacing:.02em;padding:10px 16px}
.tdpd-sm-th .tdpd-sm-c-price,.tdpd-sm-th .tdpd-sm-c-sum{text-align:right}
.tdpd-sm-th .tdpd-sm-c-qty{text-align:center}
.tdpd-sm-c-name{display:flex;gap:14px;align-items:flex-start;min-width:0}
.tdpd-sm-img{width:64px;height:64px;object-fit:contain;flex:0 0 64px;border-radius:8px;background:#FAF6EC}
.tdpd-sm-nm{min-width:0}
.tdpd-sm-art{display:block;color:#9a948a;font-size:11.5px;margin-bottom:3px}
.tdpd-sm-nm a{color:#20242c;font-size:14.5px;line-height:1.35;text-decoration:none}
.tdpd-sm-nm a:hover{color:#2F55D4}
.tdpd-sm-free{display:block;color:#20242c;font-size:14.5px;line-height:1.35}
.tdpd-sm-opt{display:block;margin-top:5px}
.tdpd-sm-opt em{display:block;font-style:normal;color:#7a756c;font-size:12px;line-height:1.45}
.tdpd-sm-opt em b{color:#4a4640;font-weight:500}
.tdpd-sm-c-price{text-align:right;color:#4a4640;font-size:14px;white-space:nowrap}
.tdpd-sm-c-sum{text-align:right;font-size:15px;white-space:nowrap}
.tdpd-sm-c-sum b{font-weight:600;color:#20242c}
.tdpd-sm-lbl{display:none}
.tdpd-sm-c-qty{display:flex;justify-content:center}
.tdpd-sm-qty-ro{color:#4a4640;font-size:14px;white-space:nowrap}
.tdpd-sm-step{display:flex;align-items:center;height:38px;border:1px solid #DCD7CC;border-radius:9px;overflow:hidden}
.tdpd-sm-step button{width:32px;height:100%;border:0;background:transparent;color:#4a4640;font-size:17px;line-height:1;padding:0;cursor:pointer}
.tdpd-sm-step button:hover{background:rgba(47,85,212,.07);color:#2F55D4}
.tdpd-sm-step input{width:44px;height:100%;border:0;text-align:center;font:600 14px/1 inherit;color:#20242c;background:transparent}
.tdpd-sm-step input:focus{outline:none}
.tdpd-sm-c-act{text-align:right}
.tdpd-sm-del,.tdpd-sm-delfree{width:30px;height:30px;border:0;border-radius:8px;background:transparent;
  color:#a8a29a;font-size:20px;line-height:1;cursor:pointer}
.tdpd-sm-del:hover,.tdpd-sm-delfree:hover{background:#fbeaea;color:#c0392b}
.tdpd-sm-tr-free{background:#FAF6EC}

.tdpd-sm-empty{border:1px solid #E8E3D8;border-radius:12px;padding:40px 24px;text-align:center;background:#fff}
.tdpd-sm-empty b{display:block;font-size:18px;font-weight:600;color:#20242c;margin-bottom:8px}
.tdpd-sm-empty span{display:block;max-width:520px;margin:0 auto 20px;color:#7a756c;font-size:14px;line-height:1.6}

.tdpd-sm-add{margin:20px 0 0;border:1px dashed #DCD7CC;border-radius:12px;padding:18px 20px;background:#fff}
.tdpd-sm-add-h{font-size:15px;font-weight:600;color:#20242c}
.tdpd-sm-add-d{margin:4px 0 12px;color:#7a756c;font-size:13px;line-height:1.5}
.tdpd-sm-add-f{display:flex;gap:10px;flex-wrap:wrap}
.tdpd-sm-add-f input[type="text"]{flex:1 1 320px;min-width:0;height:44px;padding:0 14px;
  border:1px solid #DCD7CC;border-radius:9px;font:14px/1 inherit;color:#20242c}
.tdpd-sm-add-f input[type="number"]{width:88px;height:44px;padding:0 10px;
  border:1px solid #DCD7CC;border-radius:9px;font:14px/1 inherit;color:#20242c}
.tdpd-sm-add-f input:focus{outline:none;border-color:#2F55D4;box-shadow:0 0 0 3px rgba(47,85,212,.13)}
.tdpd-sm-add-f button{height:44px;padding:0 20px;border:0;border-radius:9px;background:#20242c;color:#fff;
  font:500 14px/1 inherit;cursor:pointer}
.tdpd-sm-add-f button:hover{background:#2F55D4}
.tdpd-sm-err{margin-top:8px;color:#c0392b;font-size:13px}

.tdpd-sm-actions{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0 0}
.tdpd-sm-btn{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 22px;
  border:0;border-radius:10px;background:#2F55D4;color:#fff;font:500 15px/1 inherit;
  text-decoration:none;cursor:pointer}
.tdpd-sm-btn:hover,.tdpd-sm-btn:focus{background:#2646b0;color:#fff;text-decoration:none}
.tdpd-sm-btn-2{background:#fff;border:1px solid #DCD7CC;color:#20242c}
.tdpd-sm-btn-2:hover,.tdpd-sm-btn-2:focus{background:#FAF6EC;border-color:#2F55D4;color:#20242c}

.tdpd-sm-save{margin:24px 0 0;border:1px solid #E8E3D8;border-radius:12px;padding:22px;background:#FAF6EC;max-width:640px}
.tdpd-sm-save-h{font-size:17px;font-weight:600;color:#20242c}
.tdpd-sm-save-d{margin:6px 0 16px;color:#7a756c;font-size:13px;line-height:1.55}
.tdpd-sm-save input,.tdpd-sm-save textarea{width:100%;border:1px solid #DCD7CC;border-radius:9px;
  font:14px/1.4 inherit;color:#20242c;margin-bottom:10px;background:#fff}
.tdpd-sm-save input{height:44px;padding:0 14px}
.tdpd-sm-save textarea{padding:11px 14px;resize:vertical}
.tdpd-sm-save input:focus,.tdpd-sm-save textarea:focus{outline:none;border-color:#2F55D4;box-shadow:0 0 0 3px rgba(47,85,212,.13)}
.tdpd-sm-save button{width:100%;height:48px;border:0;border-radius:10px;background:#2F55D4;color:#fff;
  font:500 15px/1 inherit;cursor:pointer}
.tdpd-sm-save button:hover{background:#2646b0}
.tdpd-sm-fine{margin:11px 0 0;color:#9a948a;font-size:11.5px;line-height:1.45;text-align:center}
.tdpd-sm-done b{display:block;font-size:17px;color:#1d8f4e;margin-bottom:4px}
.tdpd-sm-done > span{display:block;color:#4a4640;font-size:14px;margin-bottom:12px}
.tdpd-sm-link{display:flex;gap:8px}
.tdpd-sm-link input{flex:1;margin:0}
.tdpd-sm-link button{width:auto;flex:0 0 auto;padding:0 18px;height:44px}
.tdpd-sm-done em{display:block;margin-top:10px;font-style:normal;color:#7a756c;font-size:12.5px;line-height:1.5}

@media (max-width:992px){
  .tdpd-smeta h1{font-size:23px}
  .tdpd-sm-sum{min-width:0;flex:1 1 100%;text-align:left}
  .tdpd-sm-th{display:none}
  .tdpd-sm-tr{grid-template-columns:1fr auto;grid-template-areas:"name name" "price qty" "sum act";
    gap:10px 12px;padding:14px}
  .tdpd-sm-c-name{grid-area:name}
  .tdpd-sm-c-price{grid-area:price;text-align:left}
  .tdpd-sm-c-qty{grid-area:qty;justify-content:flex-end}
  .tdpd-sm-c-sum{grid-area:sum;text-align:left}
  .tdpd-sm-c-act{grid-area:act}
  .tdpd-sm-lbl{display:inline;color:#9a948a;font-size:12px;margin-right:6px}
  .tdpd-sm-actions .tdpd-sm-btn{flex:1 1 100%}
}


/* ---- Каталог: сортировка чипами и количество в карточке ----------------
   Выпадающий список сортировки прятал самое нужное («сначала дешевле») за
   двумя нажатиями и подписями вида «Цена, порядок (Меньше > Больше)».
   Список остаётся в разметке — его слушает модуль фильтра, — но на экране
   вместо него понятные чипы. */
#tdpd-sortchips{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-left:auto}
#tdpd-sortchips .tdpd-sortlbl{color:#7a756c;font-size:13px;margin-right:2px}
#tdpd-sortchips .tdpd-sortchip{
  height:34px;padding:0 14px;border:1px solid #DCD7CC;border-radius:9px;background:#fff;
  color:#4a4640;font:400 13px/1 "Rubik","Segoe UI",Arial,sans-serif;cursor:pointer;
}
#tdpd-sortchips .tdpd-sortchip:hover{border-color:#2F55D4;color:#2F55D4}
#tdpd-sortchips .tdpd-sortchip-on{background:#2F55D4;border-color:#2F55D4;color:#fff;font-weight:500}
body.tdpd-has-chips .input-sort-div{display:none!important}

/* Степпер в карточке листинга: закупают десятками, а кнопка клала одну штуку. */
.product-layout .box-cart{display:flex;align-items:center;gap:8px}
.product-layout .tdpd-qty{
  flex:0 0 auto;display:flex;align-items:center;height:38px;
  border:1px solid #DCD7CC;border-radius:9px;overflow:hidden;background:#fff;
}
.product-layout .tdpd-qty button{
  width:28px;height:100%;border:0;background:transparent;color:#4a4640;
  font-size:16px;line-height:1;padding:0;cursor:pointer;
}
.product-layout .tdpd-qty button:hover{background:rgba(47,85,212,.07);color:#2F55D4}
.product-layout .tdpd-qty input{
  width:36px;height:100%;border:0;text-align:center;background:transparent;
  font:600 13px/1 "Rubik","Segoe UI",Arial,sans-serif;color:#20242c;padding:0;
}
.product-layout .tdpd-qty input:focus{outline:none}
.product-layout .box-cart .button-cart{flex:1 1 auto;min-width:0}

@media (max-width:992px){
  /* На телефоне чипы вставали в четыре строки и растягивали блок сортировки
     на пол-экрана. Одна строка с горизонтальной прокруткой: видно первые два
     варианта, остальные доезжают пальцем. */
  #tdpd-sortchips{
    clear:both;margin-left:0;width:100%;margin-top:10px;
    flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
    padding-bottom:4px;scrollbar-width:none;
  }
  #tdpd-sortchips::-webkit-scrollbar{display:none}
  #tdpd-sortchips .tdpd-sortlbl,
  #tdpd-sortchips .tdpd-sortchip{flex:0 0 auto;white-space:nowrap}
  #tdpd-sortchips .tdpd-sortchip{height:32px;padding:0 11px;font-size:12.5px}
  .product-layout .tdpd-qty{height:34px}
  .product-layout .tdpd-qty button{width:23px}
  .product-layout .tdpd-qty input{width:26px}
  .product-layout .box-cart{gap:6px}
  .product-layout .box-cart .button-cart{padding-left:6px;padding-right:6px;font-size:12.5px}
}


/* ======================================================================
   TDPD: ШАПКА ПО МАКЕТУ (05.09.2026)
   Источник — redesign-2026-09/Main.dc.html, MenuDesktop.dc.html.

   Что меняется против темы:
   · утилитарная строка становится кремовой полосой 40px: слева регион
     и разделы, справа статус работы и личный кабинет. Раньше это была
     белая полоса из выпадающих списков с заглавными буквами
     (header4.css: text-transform:capitalize);
   · шапка выстраивается флексом. Тема держала .col-cart абсолютом
     (header4.css: .col-cart{position:absolute;right:1.5rem}), а
     .ts-search-box — с margin-left:30px;margin-top:22px, из-за чего
     между поиском и телефоном стояла постоянная дыра ~200px;
   · поиск получает рамку и подсказки «часто ищут» — он на этом сайте
     главный инструмент навигации;
   · корзина превращается в кнопку «Смета» (разметка — common/cart.tpl,
     подпись — наблюдатель в header.tpl).

   Порог 1201px взят от прежней правки шапки: ровно на 1200 у темы
   включается компактная раскладка, туда лезть незачем.
   ====================================================================== */

/* --- 1. Утилитарная строка ------------------------------------------- */
@media (min-width:992px){
  #top{background:#FAF6EC;border-bottom:1px solid #E8E3D8}
  #top .not-mobile-container .box-inner{display:flex;align-items:center;min-height:40px}
  #top .box-top{display:flex;align-items:center;gap:22px;float:none!important;margin:0;padding:0}
  #top .box-top-left{flex:1 1 auto;min-width:0;flex-wrap:wrap}
  #top .box-top-right{flex:0 0 auto;margin-left:auto;gap:20px}
  #top .box-top > li{margin:0!important;display:flex;align-items:center}
  #top .box-top-left > li.apppli:first-child{margin-right:6px!important}

  #top .box-top a.btn-top,
  #top .box-top .btn-group > .btn-link{
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:13px!important;line-height:20px!important;font-weight:400!important;
    text-transform:none!important;color:#7A756C!important;padding:10px 0!important;
  }
  #top .box-top a.btn-top:hover{color:#2F55D4!important;text-decoration:none}

  /* Регион: остаётся пин и название области (правка language.tpl). */
  #top #form-language .btn-group > .btn-link{color:#20242C!important}
  #top #form-language .lnr-map-marker{color:#2F55D4;margin-right:4px}
  #top #form-language .fa-angle-down{color:#B8BEC9;margin-left:4px}

  /* «Тендерным отделам» — целевая страница, выделена и в макете. */
  #top .box-top a.btn-top[href*="tenders"]{color:#2F55D4!important;font-weight:500!important}

  /* Статус работы вместо выпадающего списка часов. */
  #top .tdpd-worktime{display:flex!important;align-items:center;gap:7px;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:13px;line-height:20px;
    color:#7A756C;text-transform:none;padding:10px 0}
  #top .tdpd-worktime .tdpd-wt-dot{width:7px;height:7px;border-radius:50%;background:#1E8E5A;flex:0 0 7px}
  #top .tdpd-worktime.tdpd-worktime-off .tdpd-wt-dot{background:#B8BEC9}

  /* Личный кабинет — простая ссылка, без иконки и «галки». */
  #top .box-top-right .user-dropdown > a .icons,
  #top .box-top-right .user-dropdown > a .icon-right{display:none}
  #top .box-top-right .user-dropdown > a{color:#7A756C!important;text-transform:none!important;
    font-size:13px!important;line-height:20px!important;font-weight:400!important;padding:10px 0!important}
  #top .box-top-right .user-dropdown > a:hover{color:#2F55D4!important}
}

/* --- 2. Шапка: раскладка ---------------------------------------------- */
@media (min-width:993px){ /* TDPD 22.09.2026: было 1201 — на 993..1200 оставалась полуразобранная шапка темы */
  header .box-inner-inner{display:flex;align-items:center;gap:20px;min-height:96px;padding:12px 0}
  /* тема на 992..1200: .ts-search-box{width:30%} */
  header .ts-search-box{width:auto!important}
  #logo{float:none;padding:0;flex:0 0 auto;margin:0}
  #logo img{max-height:64px;width:auto}

  /* Поиск с подсказкой под ним — сеткой, иначе подсказка встаёт под
     кнопку каталога, а не под поле. */
  .ts-search-box{flex:1 1 auto;min-width:0;margin:0!important;
    display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;
    column-gap:16px;row-gap:7px}
  .ts-search-box .main-menu__button{grid-column:1;grid-row:1}
  .ts-search-box #search{grid-column:2;grid-row:1}
  .ts-search-box .tdpd-hint{grid-column:2;grid-row:2}

  .col-cart{position:static!important;right:auto!important;margin:0!important;
    flex:0 0 auto;display:flex;align-items:center;gap:20px}

  /* Адрес салона в шапке дублирует регион из верхней строки — по макету
     в шапке его нет, контакты остаются в футере и на /contact-us/. */
  .col-cart .header-phone.custom-location{display:none!important}
}

/* --- 3. Кнопка «Каталог товаров» --------------------------------------- */
@media (min-width:993px){ /* TDPD 22.09.2026: было 1201 — на 993..1200 оставалась полуразобранная шапка темы */
  .main-menu__button{height:52px!important;border-radius:12px!important;
    display:flex!important;align-items:center;gap:10px;padding:0 20px!important;
    background:#2F55D4!important;cursor:pointer;transition:background-color .15s}
  .main-menu__button:hover{background:#24409E!important;filter:none}
  .main-menu__button svg{margin:0!important;flex:0 0 auto}
  .main-menu__button span{height:auto!important;float:none!important;padding:0!important;
    margin:0!important;font-size:15px!important;font-weight:500!important;line-height:1!important;
    white-space:nowrap}
  .main-menu__button.show{background:#20242C!important}
}

/* --- 4. Поиск ---------------------------------------------------------- */
@media (min-width:993px){ /* TDPD 22.09.2026: было 1201 — на 993..1200 оставалась полуразобранная шапка темы */
  #search{display:flex!important;height:52px;margin:0;background:#fff;
    border:2px solid #2F55D4;border-radius:12px;overflow:hidden}
  #search > .input-group-btn.dropdown{display:none!important}
  #search input.input-lg{flex:1 1 auto!important;min-width:0;width:auto;height:100%;
    border:0!important;box-shadow:none!important;border-radius:0!important;
    padding:0 18px!important;background:#fff!important;background-image:none!important;
    filter:none!important;font-size:15px!important;color:#20242c!important}
  #search .input-group-btn:not(.dropdown){flex:0 0 56px!important;width:56px!important;height:100%}
  #search .btn-search{width:56px;height:100%;padding:0!important;border:0!important;
    border-radius:0!important;background:#2F55D4!important;color:#fff!important;
    display:flex;align-items:center;justify-content:center}
  #search .btn-search:hover{background:#24409E!important}
  /* TDPD 22.09.2026: bootstrap сдвигает кнопку margin-left:-1px — справа в рамке оставалась белая щель */
  #search .input-group-btn:not(.dropdown) > .btn-search{margin:0!important;width:100%!important}
  #search .btn-search .lnr-magnifier{font-size:20px;color:#fff}

  .tdpd-hint{display:flex;align-items:center;gap:12px;min-width:0;overflow:hidden;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;white-space:nowrap}
  .tdpd-hint .tdpd-hint-l{color:#8C93A0;font-size:12px;flex:0 0 auto}
  .tdpd-hint a{color:#2F55D4;font-size:12px;flex:0 0 auto;text-decoration:none}
  .tdpd-hint a:hover{color:#24409E;text-decoration:underline}
}
@media (max-width:1200px){ .tdpd-hint{display:none} }

/* --- 5. Телефон -------------------------------------------------------- */
@media (min-width:993px){ /* TDPD 22.09.2026: было 1201 — на 993..1200 оставалась полуразобранная шапка темы */
  .col-cart .header-phone{display:block;margin:0!important;text-align:right;line-height:1.2}
  /* Штатная «трубка» перед номером не нужна: номер и так читается как номер,
     а иконка съедает строку, которую макет отдал под действие. */
  .col-cart .header-phone .phone-wrap:before{display:none!important}
  .col-cart .header-phone .phone-wrap{font-size:19px!important;font-weight:600!important;
    color:#20242C!important;white-space:nowrap;line-height:1.2}
  .col-cart .header-phone .phone-wrap .fa-caret-down{color:#B8BEC9;font-size:13px;margin-left:5px}
  /* «Перезвонить мне» — не подпись, а действие: оставляем кнопкой-таблеткой,
     режим работы при этом уехал в верхнюю строку (см. .tdpd-worktime). */
  .col-cart .header-phone .field-tip.show-phones{
    display:inline-flex!important;align-items:center;gap:6px;margin-top:6px;
    height:26px;padding:0 11px;border-radius:999px;background:#EDF1FD;
    color:#2F55D4!important;font-size:12px;font-weight:500;line-height:26px;
    text-decoration:none;cursor:pointer;transition:background-color .15s}
  .col-cart .header-phone .field-tip.show-phones:hover{background:#DDE6FB;text-decoration:none}
  .col-cart .header-phone .field-tip.show-phones .icons{font-size:13px;margin:0}
}

/* --- 6. Корзина = «Смета» ---------------------------------------------- */
#cart.tdpd-smeta-head{background:transparent}
#cart .tdpd-smeta-a{display:flex;align-items:center;gap:10px;text-decoration:none}
#cart .tdpd-smeta-ico{flex:0 0 auto;display:flex;align-items:center;justify-content:center;color:#2F55D4}
#cart .tdpd-smeta-ico svg{width:22px;height:22px}
#cart #cart-total{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}
#cart .tdpd-smeta-t{font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;font-weight:600;color:#20242C}
#cart .tdpd-smeta-n{font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:11px;color:#7A756C;white-space:nowrap}
#cart .tdpd-smeta-b{display:none}
#cart.tdpd-smeta-full .tdpd-smeta-n{color:#2F55D4}

@media (min-width:1201px){
  #cart.tdpd-smeta-head{flex:0 0 auto;width:auto!important}
  #cart .tdpd-smeta-a{height:52px;padding:0 18px!important;border:1px solid #DDE1E8;
    border-radius:12px;background:#fff!important;width:auto!important;
    transition:border-color .15s,background-color .15s}
  #cart .tdpd-smeta-a:hover{border-color:#2F55D4;background:#F7F9FE!important}
  #cart.tdpd-smeta-full .tdpd-smeta-a{border-color:#2F55D4;background:#EDF1FD!important}
}

/* Мобильная шапка-«островок»: смета остаётся иконкой со счётчиком,
   подпись и сумма туда не влезают — их несёт нижняя панель #tdpd-tabbar. */
@media (max-width:1200px){
  #cart.tdpd-smeta-head{position:relative;width:auto!important}
  #cart .tdpd-smeta-a{height:auto;padding:0!important;border:0;background:transparent!important;
    width:auto!important;position:relative}
  #cart .tdpd-smeta-ico svg{width:23px;height:23px}
  #cart #cart-total{display:none}
  #cart .tdpd-smeta-b{position:absolute;top:-6px;right:-8px;display:none;
    min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:#E0531B;
    color:#fff;font:600 11px/17px "Rubik","Segoe UI",Arial,sans-serif;font-style:normal;
    text-align:center}
  #cart.tdpd-smeta-full .tdpd-smeta-b{display:block}
}

/* Штатная иконка корзины у .btn (::before с main_cart.svg) на кнопке сметы
   лишняя — свой знак документа уже стоит в разметке. */
#cart .tdpd-smeta-a:before,
#cart .tdpd-smeta-a:after{content:none!important;display:none!important}


/* ======================================================================
   TDPD: плитка комплектов на главной (tdpd_block, раскладка kits)
   Макет — redesign-2026-09/Main.dc.html, полоса «Готовые комплекты».
   Отличие от макета одно и намеренное: нет цены «от N ₽» и кнопки
   «В смету» — состава и цен у комплектов ещё нет (решение клиента
   05.09.2026: сначала продаём сборку, товары привязываем позже).
   Вместо цены — переход на посадочную комплекта.
   ====================================================================== */
.tdb-kits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.tdb-kits.tdb-n3{grid-template-columns:repeat(3,minmax(0,1fr))}
.tdb-kits.tdb-n6{grid-template-columns:repeat(3,minmax(0,1fr))}

.tdb-kit{display:flex;flex-direction:column;background:#fff;border:1px solid #E8E3D8;
  border-radius:16px;overflow:hidden;color:#20242c;text-decoration:none;
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.tdb-kit:hover{transform:translateY(-3px);border-color:#c3d0f4;
  box-shadow:0 14px 30px rgba(60,45,15,.13);color:#20242c;text-decoration:none}

.tdb-kit-ph{position:relative;display:flex;align-items:center;justify-content:center;
  height:170px;background:#F3EEE3;overflow:hidden}
.tdb-kit:nth-child(even) .tdb-kit-ph{background:#EDF1FD}
.tdb-kit-ph img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.tdb-kit:hover .tdb-kit-ph img{transform:scale(1.04)}
.tdb-kit-badge{position:absolute;top:12px;left:12px;display:inline-flex;align-items:center;
  height:26px;padding:0 10px;border-radius:999px;background:#20242c;color:#fff;
  font-style:normal;font-size:12px;line-height:26px}

.tdb-kit-b{display:flex;flex-direction:column;flex:1 1 auto;padding:18px}
.tdb-kit-t{font-size:16px;font-weight:500;line-height:1.3;color:#20242c}
.tdb-kit-d{margin-top:10px;font-size:13px;line-height:1.5;color:#7A756C}
.tdb-kit-go{margin-top:auto;padding-top:14px;font-size:14px;font-weight:500;color:#2F55D4}
.tdb-kit-go:after{content:" \2192"}

@media (max-width:1199px){ .tdb-kits,.tdb-kits.tdb-n6{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px} }
@media (max-width:640px){
  .tdb-kits,.tdb-kits.tdb-n3,.tdb-kits.tdb-n6{grid-template-columns:1fr;gap:12px}
  .tdb-kit-ph{height:150px}
  .tdb-kit-b{padding:14px}
}


/* ======================================================================
   TDPD: мегаменю — правый рельс и мелочи по макету (05.09.2026)
   Источник — redesign-2026-09/MenuDesktop.dc.html.
   ====================================================================== */

/* Кнопка «Каталог товаров»: у темы обе иконки (бургер и крестик) в открытом
   состоянии становятся position:absolute, и во флекс-строке подпись съезжала
   под крестик. Кладём обе иконки в одну ячейку сетки — переключение по
   visibility у темы продолжает работать, а место под иконку не пропадает. */
@media (min-width:993px){ /* TDPD 22.09.2026: было 1201 */
  .main-menu__button{display:grid!important;grid-template-columns:17px auto;
    align-items:center;gap:10px;justify-content:center}
  .main-menu__button svg{grid-area:1/1;position:static!important;margin:0!important}
  .main-menu__button span{grid-area:1/2}
}

@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  .tdpd-mm-category > .dropdown-inner{display:flex;align-items:flex-start;gap:28px}
  .tdpd-mm-category > .dropdown-inner > .col-sm-12,
  .tdpd-mm-category > .dropdown-inner > .col-sm-8{flex:1 1 auto;min-width:0;width:auto;float:none}
  .tdpd-mm-category > .dropdown-inner > .megamenu-html-inner{flex:0 0 260px;width:auto;float:none}

  .tdpd-mm-rail{flex:0 0 280px;align-self:stretch;border-left:1px solid #E8E3D8;
    padding:4px 0 4px 24px;font-family:'Rubik','Segoe UI',Arial,sans-serif}
  .tdpd-mm-rail-h{font-size:11px;letter-spacing:.12em;text-transform:uppercase;
    font-weight:600;color:#8C93A0}
  .tdpd-mm-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
  .tdpd-mm-tags a{display:inline-flex;align-items:center;height:34px;padding:0 12px;
    border:1px solid #E8E3D8;border-radius:999px;background:#fff;
    font-size:13px;line-height:1;color:#2E3340;text-decoration:none;white-space:nowrap}
  .tdpd-mm-tags a:hover{border-color:#2F55D4;color:#2F55D4;text-decoration:none}

  .tdpd-mm-kit{display:block;margin-top:24px;border:1px solid #E8E3D8;border-radius:14px;
    overflow:hidden;color:#20242c;text-decoration:none;background:#fff}
  .tdpd-mm-kit:hover{border-color:#2F55D4;color:#20242c;text-decoration:none}
  .tdpd-mm-kit-ph{display:block;height:96px;background:#F3EEE3;overflow:hidden}
  .tdpd-mm-kit-ph img{width:100%;height:100%;object-fit:cover;display:block}
  .tdpd-mm-kit-b{display:block;padding:14px}
  .tdpd-mm-kit-b b{display:block;font-size:14px;font-weight:500;line-height:1.35;color:#20242c}
  .tdpd-mm-kit-b span{display:block;margin-top:5px;font-size:12px;line-height:1.45;color:#7A756C}
  .tdpd-mm-kit-b em{display:flex;align-items:center;justify-content:center;height:42px;margin-top:11px;
    border-radius:10px;background:#2F55D4;color:#fff;font-style:normal;font-size:14px;font-weight:500}

  .tdpd-mm-rail-cta{margin-top:20px;padding-top:16px;border-top:1px solid #E8E3D8}
  .tdpd-mm-rail-cta span{display:block;font-size:13px;line-height:1.5;color:#7A756C}
  .tdpd-mm-rail-cta a{display:flex;align-items:center;justify-content:center;height:44px;margin-top:10px;
    border:1px solid #DDE1E8;border-radius:10px;color:#20242c;font-size:14px;text-decoration:none}
  .tdpd-mm-rail-cta a:hover{border-color:#2F55D4;color:#2F55D4;text-decoration:none}
}
/* На планшете и телефоне меню — своя шторка, рельс туда не помещается. */
@media (max-width:1200px){ .tdpd-mm-rail{display:none} }

/* Счётчик у корневых пунктов меню — тем же серым, что у подразделов,
   но чуть плотнее: строка узкая. */
.tdpd-mm-n-root{margin-left:7px;font-size:12px;font-weight:400;color:#8C93A0}


/* --- Мегаменю: группа раздела одной строкой ---------------------------
   Правый рельс забрал 280px, и у групп иконка (42px картинка раздела)
   стала уводить название на вторую строку — список читался как лесенка.
   Кладём иконку и название в одну строку сетки, а подразделы — под
   названием: ровно так, как в макете MenuDesktop.dc.html. */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  .tdpd-mm-rail{flex:0 0 264px}

  .tdpd-mm-category .megamenu-hassubchild{
    display:grid;grid-template-columns:34px minmax(0,1fr);
    column-gap:10px;align-items:center}
  .tdpd-mm-category .megamenu-parent-img{
    grid-column:1;grid-row:1;display:flex!important;align-items:center;justify-content:center;
    width:34px;height:34px;margin:0!important;padding:0!important;float:none!important}
  .tdpd-mm-category .megamenu-parent-img img{max-width:100%;max-height:100%;width:auto;height:auto}
  .tdpd-mm-category .megamenu-parent-title{
    grid-column:2;grid-row:1;margin:0!important;padding:0!important;
    font-size:15px;line-height:1.3}
  /* «Стрелка» раскрытия у групп не нужна: подразделы и так под названием. */
  .tdpd-mm-category .megamenu-hassubchild > .parent-title-toggle{display:none!important}
  .tdpd-mm-category .megamenu-ischild{
    grid-column:2;grid-row:2;margin:8px 0 0!important;padding:0!important}
}


/* ======================================================================
   TDPD: страница категории по макету (05.09.2026)
   Источник — redesign-2026-09/Katalog.dc.html.
   ====================================================================== */

/* --- Четыре карточки в ряд ---------------------------------------------
   Раньше стояло три: контейнер темы держался на 1200px и четвёртая
   карточка выходила по 207px. С 05.09 контейнер разжат до 1330/1440
   (см. блок «каталог по макету» выше), места хватает — возвращаем
   четыре, как в макете. Ниже 1360 остаются три, на планшете и
   телефоне — две. */
@media (min-width:1360px){
  body[class^="product-category-"] #content.col-sm-9 :is(#res-products,.tdb-sale-row) .product-items{width:25%}
}

/* --- Что в карточке листинга не нужно ----------------------------------
   Серия («Серия "ТД ПД"») повторяется у 95% товаров, звёзды пустые у
   всех — отзывов на сайте нет, а описание в две строки обрывается на
   середине слова. В макете этого нет: артикул, название, наличие, цена,
   партия, кнопка. На карточке товара серия и описание остаются. */
body[class^="product-category-"] :is(#res-products,.tdb-sale-row) .caption .manufacture-product,
body[class^="product-category-"] :is(#res-products,.tdb-sale-row) .caption .rating,
body[class^="product-category-"] :is(#res-products,.tdb-sale-row) .caption .product-description{display:none!important}

/* --- Ростовая группа плашкой на фотографии ------------------------------ */
:is(#res-products,.tdb-sale-row) .product-item .image{position:relative}
:is(#res-products,.tdb-sale-row) .product-item .image .tdpd-rost{
  position:absolute;top:10px;left:10px;z-index:2;
  display:inline-flex;align-items:center;height:24px;padding:0 9px;
  border:1px solid #E8E3D8;border-radius:7px;background:#fff;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:11px;font-weight:600;line-height:22px;color:#2F55D4;
  white-space:nowrap;max-width:calc(100% - 20px);overflow:hidden;text-overflow:ellipsis}

/* --- Заголовок раздела и объём ------------------------------------------ */
h1.cat-header{display:flex;align-items:baseline;flex-wrap:wrap;gap:14px}
h1.cat-header .tdpd-cat-n{
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:15px;font-weight:400;line-height:1.2;color:#7A756C;letter-spacing:0}
h1.cat-header .tdpd-cat-n:empty{display:none}

@media (max-width:767px){
  h1.cat-header{gap:8px}
  h1.cat-header .tdpd-cat-n{font-size:13px}
  :is(#res-products,.tdb-sale-row) .product-item .image .tdpd-rost{top:8px;left:8px;height:22px;font-size:10px;line-height:20px}
}


/* --- Порядок и вид строк в карточке листинга ---------------------------
   Макет: артикул → название → наличие → цена → цена от партии → кнопка.
   Раньше артикул и строка «от 25 шт» имели order:0 и вставали ВЫШЕ
   названия — цена от партии читалась раньше самой цены. */
:is(#res-products,.tdb-sale-row) .product-thumb .caption .tdpd-art{order:0}
:is(#res-products,.tdb-sale-row) .product-thumb .caption h4{order:1}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .tdpd-stock{order:2}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .price{order:3;margin:0 0 2px;
  font-size:20px;line-height:26px;font-weight:600;color:#20242c}
/* В макете новая цена — обычным тёмным, перечёркнутая старая — серым.
   Красная цена читается как распродажа; здесь это оптовая скидка. */
:is(#res-products,.tdb-sale-row) .product-thumb .caption .price .price-new{font-size:20px;font-weight:600;color:#20242c}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .price .price-old{margin-left:8px;font-size:13px;font-weight:400;color:#8C93A0}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .tdpd-bulk{order:4;margin:0 0 10px}
:is(#res-products,.tdb-sale-row) .product-thumb .box-cart{order:5}

/* Плашка скидки уехала вправо: слева теперь ростовая группа. */
:is(#res-products,.tdb-sale-row) .product-item .image .pro-label{left:auto!important;right:10px!important;z-index:2}

/* Кнопка «В смету» в ряд со степпером не должна переноситься:
   при четырёх карточках в ряду на строку остаётся ~120px. */
:is(#res-products,.tdb-sale-row) .product-thumb .box-cart .button-cart{
  font-size:13.5px;font-weight:500;padding:11px 8px;white-space:nowrap;border-radius:10px}
@media (min-width:1360px){
  .product-layout .tdpd-qty{height:42px}
  .product-layout .tdpd-qty button{width:26px}
  .product-layout .tdpd-qty input{width:30px}
  :is(#res-products,.tdb-sale-row) .product-thumb .box-cart .button-cart{height:42px;padding:0 8px;line-height:42px}
}


/* ======================================================================
   TDPD: карточка товара по макету (05.09.2026)
   Источник — redesign-2026-09/Tovar.dc.html.
   ====================================================================== */

/* --- Ростовая группа: три карточки в ряд --------------------------------
   Карточки уже были, но вставали по одной в строку: рядом с каждым
   <label> тема печатает ГОЛЫЙ текстовый узел «(1 899 ₽)» — обёртки у него
   нет, и он растягивал строку. CSS такой узел не адресует, поэтому гасим
   его размером шрифта у родителя и возвращаем размер внутри карточки.
   Правка .tpl тут не поможет: цену печатает шаблон опций темы, общий для
   попапа «Купить в 1 клик». */
.options-box.tdpd-rg-box{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.options-box.tdpd-rg-box .radio{font-size:0;line-height:0;display:block}
.options-box.tdpd-rg-box label.tdpd-rg-card{width:100%;min-width:0;line-height:1.35}
.options-box.tdpd-rg-box .tdpd-rg-num{font-size:15px;line-height:1.3}
.options-box.tdpd-rg-box .tdpd-rg-sub,
.options-box.tdpd-rg-box .tdpd-rg-seat{font-size:12.5px;line-height:1.35}
.options-box.tdpd-rg-box .tdpd-rg-price{font-size:15px;line-height:1.3}

@media (max-width:900px){
  .options-box.tdpd-rg-box{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
}

/* --- Оптовая шкала: три колонки, как в макете --------------------------
   Тремя строками она читалась как прайс-лист; в макете это три плитки,
   и активная ступень видна сразу. */
#tdpd-scale-rows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.tdpd-scale{background:#fff;padding:0;border:0}
.tdpd-scale-h{margin-bottom:10px}
.tdpd-scale-row{
  display:block;padding:10px 12px;border:1px solid #E8E3D8;border-radius:10px;background:#fff}
.tdpd-scale-row:last-child{border-bottom:1px solid #E8E3D8}
.tdpd-scale-row span{display:block;font-size:12px;color:#7A756C}
.tdpd-scale-row b{display:block;margin-top:2px;font-size:15px}
/* Ступень «от 25 шт» — рабочая для этого клиента: средний чек 94 000 ₽. */
/* Подсветку ступени ставит скрипт по текущему количеству — «средняя
   всегда синяя» показывало выгодную цену там, где её не будет. */
.tdpd-scale-row.is-on{border-color:#2F55D4;background:#EDF1FD}
.tdpd-scale-row.is-on span{color:#2F55D4}

@media (max-width:600px){
  #tdpd-scale-rows{grid-template-columns:1fr;gap:6px}
  .tdpd-scale-row{display:flex;align-items:baseline;justify-content:space-between}
  .tdpd-scale-row b{margin-top:0}
}

/* Строка опции у темы горизонтальная: подпись слева, варианты в узкой
   колонке справа (замер: 312px из 512). Трём карточкам ростовой группы
   там места нет — разворачиваем строку в столбец на всю ширину. */
#product-info-right #product .form-group.option{display:block}
#product-info-right #product .form-group.option > .control-label{display:block;float:none;width:auto;
  max-width:none;margin:0 0 10px;padding:0;text-align:left;
  font-size:15px;font-weight:500;color:#20242c}
#product-info-right #product .options-box.tdpd-rg-box{width:100%;margin:0;float:none}

/* Ширину карточки в сетке тема перебивает своим правилом на label
   (два id против трёх классов), поэтому здесь !important — не украшение. */
#product-info-right #product .options-box.tdpd-rg-box .radio{padding:0;margin:0}
#product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card{
  width:100%!important;min-width:0!important;max-width:none!important;box-sizing:border-box}
/* «Ростовая Группа» — тема капитализирует каждое слово. */
#product-info-right #product .form-group.option > .control-label{text-transform:none!important}

/* Тема делает .radio флекс-строкой с полями — голый текстовый узел
   «(1 899 ₽)» становился в ней вторым флекс-элементом и отжимал карточку
   до 80px из 128. Гасим строку целиком: display:block и font-size:0. */
#product-info-right #product .options-box.tdpd-rg-box .radio.tdpd-product-radio{
  display:block!important;padding:0!important;margin:0!important;
  font-size:0!important;line-height:0!important}

/* Тема дописывает к кнопке корзины подпись через #cart::after{content:"Корзина"}
   — она вылезала за контейнер справа от кнопки сметы. */
#cart.tdpd-smeta-head:after{content:none!important;display:none!important}

/* Утилитарная строка на контейнере 1200 не вмещала часы работы и переносила
   «Контакты» на вторую строку. Часы прячем на узких экранах — статус
   («Работаем сейчас») важнее, а расписание есть в футере и в контактах. */
@media (min-width:992px){
  #top .box-top{gap:18px}
  #top .box-top-left{flex-wrap:wrap;row-gap:0}
}
/* Контейнер темы 1200px: шесть разделов + регион слева и статус справа
   в одну строку помещаются только на очень широких экранах. Часы —
   первое, чем жертвуем: они есть в футере и в попапе звонка. */
@media (max-width:1600px){ #top .tdpd-wt-hours{display:none} }


/* ======================================================================
   TDPD: страница поиска (05.09.2026)
   Поиск — главный вход в каталог (3 980 разных запросов за год), а
   выглядел как служебная страница OpenCart. Приводим к виду каталога
   из макета Katalog.dc.html: чипы разделов, те же плитки, компактная
   строка запроса.
   ====================================================================== */

/* Строка настроек вместо панели «Критерии поиска» (07.09.2026).
   Панель занимала первый экран: поле, список разделов, две галочки и
   кнопка. Поле дублировало поиск в шапке, кнопка не нужна — настройки
   применяются по change. */
body.product-search .tdpd-srch-opts{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:0 0 20px}
body.product-search .tdpd-srch-opt-sel select[name="category_id"]{
  height:38px;padding:0 34px 0 12px;border:1px solid #DDE1E8;border-radius:10px;
  background:#fff;background-image:none;filter:none;box-shadow:none;
  font-size:13.5px;color:#20242c;max-width:280px}
body.product-search .tdpd-srch-opt-sel select[name="category_id"]:focus{
  outline:none;border-color:#2F55D4;box-shadow:0 0 0 3px rgba(47,85,212,.13)}
body.product-search .tdpd-srch-opt{
  display:inline-flex;align-items:center;gap:8px;margin:0;
  font-size:13.5px;font-weight:400;color:#7A756C;cursor:pointer}
body.product-search .tdpd-srch-opt input{margin:0;cursor:pointer}
body.product-search .tdpd-srch-opt:hover{color:#20242C}

/* Заголовки страницы */
body.product-search h1.cat-header{margin:0 0 14px}
body.product-search .tdpd-srch-cats{margin:0 0 16px}

/* Плитки: четыре в ряд, как в каталоге; на телефоне две, а не три. */
body.product-search :is(#res-products,.tdb-sale-row) .product-items{width:25%}
@media (max-width:1199px){ body.product-search :is(#res-products,.tdb-sale-row) .product-items{width:33.3333%} }
@media (max-width:767px){ body.product-search :is(#res-products,.tdb-sale-row) .product-items{width:50%} }

/* Описание в плитке обрывается на середине слова — в макете его нет. */
body.product-search :is(#res-products,.tdb-sale-row) .caption .product-description{display:none!important}
body.product-search :is(#res-products,.tdb-sale-row) .caption .tdpd-art{order:0}
body.product-search :is(#res-products,.tdb-sale-row) .caption h4{order:1}
body.product-search :is(#res-products,.tdb-sale-row) .caption .price{order:3}
body.product-search :is(#res-products,.tdb-sale-row) .caption .box-cart{order:5}

/* Переключатель «сетка/список» на поиске ни разу не пригодился —
   в макете его нет, а он забирает строку над списком. */
body.product-search .sort-row .appearance{display:none}


/* ======================================================================
   TDPD: МЕГАМЕНЮ ПО МАКЕТУ — раскладка и типографика (05.09.2026)
   Источник — redesign-2026-09/MenuDesktop.dc.html.

   Что было не так против макета:
   · левый рельс стоял с отступом 125px от края контейнера и занимал
     230px — панель начиналась с середины, слева зияла пустая полоса
     (тема: #menu .navbar-collapse{margin-left:125px});
   · панель была 850px из 1200 (тема: width:calc(100% - 350px)), из-за
     чего две колонки групп получались по 235px и всё переносилось;
   · счётчики были синими плашками, в макете это простые серые числа;
   · иконка группы стояла над названием, в макете — перед ним.
   ====================================================================== */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */

  /* --- рельс и панель: делим контейнер 240 + остальное --------------- */
  #menu .navbar-collapse{margin-left:0!important;width:252px!important;min-height:0!important}
  #menu .nav > li.active a.dropdown-toggle + .dropdown-menu,
  #menu .nav > li a.dropdown-toggle + .dropdown-menu.tdpd-mm-category{
    width:calc(100% - 252px)!important;margin-left:252px!important;
    left:0!important;right:auto!important;
    padding:20px 0!important;border-left:1px solid #E8E3D8;
    box-shadow:0 20px 44px rgba(32,36,44,.14)}

  /* --- ЛЕВЫЙ РЕЛЬС --------------------------------------------------- */
  #tdpd-menu-box #menu ul.menu{width:252px!important;padding:16px 12px 16px 12px!important}
  /* Надзаголовок рельса — в теме его нет, а в макете он объясняет,
     что это выбор учреждения, а не список товаров. */
  #tdpd-menu-box #menu ul.menu:before{
    content:"Что оснащаем";display:block;padding:0 12px 10px;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#8C93A0}

  #tdpd-menu-box #menu ul.menu > li{width:100%;margin:0 0 2px}
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle{
    display:flex!important;align-items:center;gap:12px;
    height:52px;padding:0 12px!important;border-radius:10px;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:15px;font-weight:400;line-height:1.25;color:#20242C!important;
    text-transform:none;white-space:normal}
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle svg{flex:0 0 22px;width:22px;height:22px}
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle > i.ion-chevron-down{display:none!important}
  #tdpd-menu-box #menu ul.menu > li:hover > a.dropdown-toggle{background:#F7F5F0}
  #tdpd-menu-box #menu ul.menu > li.active > a.dropdown-toggle{
    background:#EDF1FD;font-weight:500;color:#20242C!important}

  /* Счётчик прижат вправо и не спорит с названием. */
  #tdpd-menu-box #menu ul.menu > li > a .tdpd-mm-n-root{
    margin-left:auto;padding:0;background:none!important;
    font-size:12px;font-weight:400;color:#8C93A0}
  #tdpd-menu-box #menu ul.menu > li.active > a .tdpd-mm-n-root{color:#2F55D4}

  /* --- ЦЕНТР: строка поиска раздела и кнопка «Все N разделов» -------- */
  .tdpd-mm-category .quick-filter{margin:0 0 20px}
  .tdpd-mm-category .quick-filter .product-head{display:flex;align-items:center;gap:12px}
  .tdpd-mm-category .quick-filter .style-for-form{
    flex:1 1 auto;min-width:0;background:none!important;padding:0!important;margin:0!important}
  .tdpd-mm-category .quick-filter .style-for-form:after{display:none!important}
  .tdpd-mm-category .quick-filter .filterform{margin:0}
  .tdpd-mm-category .filterinput{
    width:100%!important;height:44px!important;box-sizing:border-box;
    margin:0!important;padding:0 14px 0 40px!important;
    border:1px solid #DDE1E8!important;border-radius:11px!important;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px!important;color:#20242c!important;
    background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 24 24' fill='none' stroke='%238C93A0' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='20' y1='20' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat 14px center!important;
    background-size:17px 17px!important}
  .tdpd-mm-category .filterinput:focus{
    outline:none!important;border-color:#2F55D4!important;box-shadow:0 0 0 3px rgba(47,85,212,.13)!important}
  .tdpd-mm-category .filterinput::placeholder{color:#8C93A0;opacity:1}
  .tdpd-mm-all{
    flex:0 0 auto;display:inline-flex;align-items:center;height:44px;padding:0 16px;
    border-radius:11px;background:#EDF1FD;color:#2F55D4!important;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;font-weight:500;
    white-space:nowrap;text-decoration:none}
  .tdpd-mm-all:hover{background:#DDE6FB;color:#24409E!important;text-decoration:none}

  /* --- ЦЕНТР: колонки групп ------------------------------------------ */
  .tdpd-mm-category > .dropdown-inner{gap:24px;padding:0 24px}
  /* Тема режет группы на куски по 8 штук и ставит куски колонками: первая
     колонка получалась 1600px высотой, а вторая и третья уезжали под неё.
     В макете группы идут по две в ряд подряд. Раскладываем сеткой по самим
     группам, а куски делаем прозрачными (display:contents) — разметку темы
     при этом не трогаем, живой фильтр разделов продолжает работать. */
  .tdpd-mm-category .col-sm-12,
  .tdpd-mm-category .col-sm-8{
    display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:32px;align-items:start}
  .tdpd-mm-category .col-sm-12 > script,
  .tdpd-mm-category .col-sm-8 > script{display:none}
  .tdpd-mm-category .col-sm-12 > .quick-filter,
  .tdpd-mm-category .col-sm-8 > .quick-filter{grid-column:1/-1}
  .tdpd-mm-category .col-sm-12 > .row.col-sm-6,
  .tdpd-mm-category .col-sm-8 > .row.col-sm-6{
    display:contents!important;float:none!important;width:auto!important;
    padding:0!important;margin:0!important}
  /* Панель не должна уезжать за нижний край экрана: своя прокрутка. */
  #menu .nav > li.active a.dropdown-toggle + .dropdown-menu{
    max-height:calc(100vh - 180px)!important;overflow-y:auto;overflow-x:hidden}

  .tdpd-mm-category .megamenu-hassubchild{margin:0 0 22px;padding:0}
  .tdpd-mm-category .megamenu-parent-title{
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:15px!important;font-weight:600!important;color:#20242C!important;
    text-transform:none;letter-spacing:0}
  .tdpd-mm-category .megamenu-parent-title:hover{color:#2F55D4!important}
  /* Счётчик у группы и подраздела — серое число, а не синяя плашка. */
  .tdpd-mm-category .tdpd-mm-n{
    margin-left:8px;padding:0!important;background:none!important;border-radius:0!important;
    font-size:12px;font-weight:400;color:#8C93A0!important}
  .tdpd-mm-category a:hover > .tdpd-mm-n{background:none!important;color:#8C93A0!important}

  .tdpd-mm-category .megamenu-ischild > li{margin:0;padding:0}
  .tdpd-mm-category .megamenu-ischild > li > a{
    display:block;padding:3px 0;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:14px;line-height:1.35;color:#2E3340!important;text-transform:none}
  .tdpd-mm-category .megamenu-ischild > li > a:hover{color:#2F55D4!important}
  .tdpd-mm-category .tdpd-mm-more > a.see-all{
    display:inline-block;margin-top:3px;padding:3px 0;
    font-size:13px;color:#2F55D4!important;cursor:pointer;text-transform:none;
    border:0;background:none}
  .tdpd-mm-category .tdpd-mm-more > a.see-all:hover{color:#24409E!important;text-decoration:underline}

  /* --- ПРАВЫЙ РЕЛЬС -------------------------------------------------- */
  .tdpd-mm-rail{flex:0 0 280px;padding:0 0 0 24px}
}

/* --- Выпадающий список региона ---------------------------------------
   Штатный список выглядел как системное меню bootstrap: квадратные углы,
   флаги-картинки, полосы во всю ширину. По макету это аккуратная
   карточка со скруглением и подсветкой текущего региона. */
@media (min-width:992px){
  #top #form-language .dropdown-menu{
    min-width:250px;margin-top:6px;padding:6px!important;
    border:1px solid #E8E3D8;border-radius:12px;background:#fff;
    box-shadow:0 14px 34px rgba(32,36,44,.14)}
  #top #form-language .dropdown-menu > li{margin:0}
  #top #form-language .dropdown-menu .language-select{
    display:flex!important;align-items:center;gap:10px;
    width:100%;height:40px;padding:0 12px!important;border-radius:9px;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:14px!important;line-height:40px!important;font-weight:400!important;
    color:#20242C!important;text-align:left;text-transform:none!important}
  #top #form-language .dropdown-menu .language-select:hover{background:#F7F5F0;color:#2F55D4!important}
}

/* display:contents оставляет псевдоэлементы куска на месте: клирфикс
   bootstrap (.row:before/:after) становился грид-ячейкой и сдвигал
   первую группу во вторую колонку. */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  .tdpd-mm-category .col-sm-12 > .row.col-sm-6:before,
  .tdpd-mm-category .col-sm-12 > .row.col-sm-6:after,
  .tdpd-mm-category .col-sm-8 > .row.col-sm-6:before,
  .tdpd-mm-category .col-sm-8 > .row.col-sm-6:after{content:none!important;display:none!important}
}

/* Плитка «Все разделы каталога» — акцентная, как в макете. */
.cw-card.cw-all{border-color:#2F55D4;background:#EDF1FD}
.cw-card.cw-all .cw-ph{background:#EDF1FD}
.cw-card.cw-all .cw-ph svg{width:52px;height:52px}
.cw-card.cw-all .cw-n{color:#2F55D4;font-weight:500}


/* ======================================================================
   TDPD: страница сметы — две колонки по макету (05.09.2026)
   Источник — redesign-2026-09/Smeta.dc.html.
   Было: одна колонка и пять кнопок в ряд одного веса — «Запросить счёт»
   стояло рядом с «Продолжить подбор». Стало: слева документ, справа
   колонка решений (итог → действие → документы → ссылка).
   ====================================================================== */
.tdpd-sm-eyebrow{
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:#2F55D4;margin:0 0 8px}

.tdpd-sm-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}
.tdpd-sm-main{min-width:0}
.tdpd-sm-side{display:flex;flex-direction:column;gap:16px;position:sticky;top:16px}

.tdpd-sm-card{border:1px solid #E8E3D8;border-radius:16px;background:#fff;padding:20px}
.tdpd-sm-card-h{font-size:16px;font-weight:600;color:#20242c;margin:0 0 14px}
.tdpd-sm-sumline{font-size:14px;color:#7a756c;padding-bottom:14px;border-bottom:1px solid #EFEAE0}
.tdpd-sm-totalrow{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-top:14px}
.tdpd-sm-totalrow span{font-size:16px;font-weight:500;color:#20242c}
.tdpd-sm-totalrow b{font-size:28px;font-weight:700;letter-spacing:-.02em;color:#20242c;white-space:nowrap}
.tdpd-sm-fine2{margin-top:6px;font-size:13px;color:#7a756c}
.tdpd-sm-card-total .tdpd-sm-btn{display:flex;width:100%;margin-top:16px}
.tdpd-sm-card-total .tdpd-sm-btn-2{margin-top:10px;height:46px}
.tdpd-sm-note2{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:13px;color:#7a756c}
.tdpd-sm-note2 svg{flex:0 0 16px;color:#B8BEC9}

.tdpd-sm-doc{display:flex;align-items:center;gap:12px;padding:12px 13px;margin-bottom:10px;
  border:1px solid #E8E3D8;border-radius:12px;color:#20242c;text-decoration:none}
.tdpd-sm-doc:last-child{margin-bottom:0}
.tdpd-sm-doc:hover{border-color:#2F55D4;color:#20242c;text-decoration:none}
.tdpd-sm-doc svg{flex:0 0 20px}
.tdpd-sm-doc b{display:block;font-size:14px;font-weight:500;line-height:1.3}
.tdpd-sm-doc em{display:block;margin-top:3px;font-style:normal;font-size:12px;line-height:1.4;color:#7a756c}
.tdpd-sm-doc-off{cursor:default;background:#FAF6EC}
.tdpd-sm-doc-off:hover{border-color:#E8E3D8}
.tdpd-sm-doc-off b{color:#7a756c}

.tdpd-sm-back{display:inline-block;padding:2px 0;font-size:14px;color:#2F55D4;text-decoration:none}
.tdpd-sm-back:hover{color:#24409E;text-decoration:underline}

/* Панели заявки и сохранения — под списком, во всю ширину левой колонки.
   grid-column:1 — страховка: если панель окажется прямым потомком
   .tdpd-sm-grid, она не должна улетать в колонку сайдбара. */
.tdpd-sm-save-modal{max-width:none;margin-top:20px;position:relative;grid-column:1;padding:20px 22px}
.tdpd-sm-save .tdpd-sm-x{position:absolute;top:10px;right:10px;width:32px;height:32px;padding:0;
  border:0;border-radius:8px;background:transparent;color:#9a948a;
  font:400 24px/1 inherit;cursor:pointer}
.tdpd-sm-save .tdpd-sm-x:hover{background:#F2EDE2;color:#20242c}
.tdpd-sm-save-modal .tdpd-sm-save-h{padding-right:36px}

/* Поля по два в ряд: пять строк в одну колонку читались как анкета. */
.tdpd-sm-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tdpd-sm-form input,.tdpd-sm-form textarea{margin-bottom:0}
.tdpd-sm-form .tdpd-sm-wide{grid-column:1 / -1}
.tdpd-sm-form .tdpd-sm-err{margin-top:0}
.tdpd-sm-form .tdpd-sm-err:empty{display:none}
.tdpd-sm-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:2px}
.tdpd-sm-foot button{width:auto;flex:0 0 auto;min-width:200px;padding:0 24px}
.tdpd-sm-foot .tdpd-sm-fine{flex:1 1 240px;margin:0;text-align:left}

@media (max-width:640px){
  .tdpd-sm-form{grid-template-columns:1fr}
  .tdpd-sm-foot button{flex:1 1 100%;width:100%;min-width:0}
  .tdpd-sm-foot .tdpd-sm-fine{flex:1 1 100%;text-align:center}
}

@media (max-width:1199px){
  .tdpd-sm-grid{grid-template-columns:minmax(0,1fr) 300px;gap:18px}
}
@media (max-width:991px){
  .tdpd-sm-grid{grid-template-columns:1fr}
  .tdpd-sm-side{position:static;order:2}
  .tdpd-sm-main{order:1}
}

/* TDPD 03.11.2026 — ростовая группа без предвыбора (модуль tdpdRgPick).
   До выбора у цены «от»; подсказка и короткая подсветка — когда «В смету»
   нажали, не выбрав группу. */
body.tdpd-rg-none #product .price .autocalc-product-price::before,
body.tdpd-rg-none #tdpd-buybar .tdpd-bb-price::before{content:'от ';font-weight:400}
.tdpd-rg-hint{margin:6px 0 10px;padding:10px 13px;border-radius:10px;
  background:#FFF4E5;border:1px solid #F5D3A3;color:#8A4B00;font-size:13.5px;line-height:1.4;
  animation:tdpdRgHintIn .25s ease}
@keyframes tdpdRgHintIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.tdpd-rg-need .tdpd-rg-card{animation:tdpdRgPulse 1.5s ease 1}
@keyframes tdpdRgPulse{0%,100%{box-shadow:none}25%,60%{box-shadow:0 0 0 3px rgba(232,140,30,.45)}}
@media (prefers-reduced-motion:reduce){.tdpd-rg-hint,.tdpd-rg-need .tdpd-rg-card{animation:none}}

/* TDPD 03.11.2026 — смета на телефоне.
   Было: позиции → «Впишите своими словами» (260px) → итог с кнопкой, то
   есть «Запросить счёт» стояла третьим экраном. Левая колонка растворяется
   (display:contents), и её блоки встают в общую сетку по порядку:
   позиции → форма заявки → итог и документы → «своими словами».
   Надпись «СМЕТА» над заголовком «Смета» — дубль, на телефоне снята. */
.tdpd-smbar{display:none}
@media (max-width:767px){
  .tdpd-sm-eyebrow{display:none}
  .tdpd-sm-main{display:contents}
  .tdpd-sm-table,.tdpd-sm-empty{order:1}
  .tdpd-sm-save-modal{order:2;margin-top:0}
  .tdpd-sm-side{order:3}
  .tdpd-sm-add{order:4;margin-top:0}

  /* Липкая кнопка: над островком #tdpd-tabbar (низ 10px, высота ~60px).
     Справа над островком живёт кнопка чата Битрикса (66px) — если она
     есть, кнопка сметы кончается левее неё. */
  .tdpd-smbar{
    position:fixed;z-index:1001;left:12px;right:12px;
    bottom:calc(80px + env(safe-area-inset-bottom));
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    height:52px;padding:0 18px;border:0;border-radius:14px;
    background:#2F55D4;color:#fff;
    box-shadow:0 10px 26px rgba(47,85,212,.32),0 2px 6px rgba(32,36,44,.08);
    font:500 15.5px/1 "Rubik","Segoe UI",Arial,sans-serif;
    opacity:1;transform:translateY(0);
    transition:opacity .25s ease,transform .25s ease;
  }
  .tdpd-smbar b{font-weight:600;white-space:nowrap}
  .tdpd-smbar:active{background:#20399A}
  .tdpd-smbar-hid{opacity:0;transform:translateY(12px);pointer-events:none}
  body:has(.b24-widget-button-wrapper) .tdpd-smbar{right:84px}
  body.tdpd-drawer-open .tdpd-smbar,
  body.tdpd-mm2-on .tdpd-smbar,
  body.tdpd-modal-on .tdpd-smbar{display:none}
  body.tdpd-smbar-on .tdpd-smeta{padding-bottom:76px}
  body.tdpd-smbar-on .tdpd-cc{bottom:calc(142px + env(safe-area-inset-bottom))}
}
@media (max-width:767px) and (prefers-reduced-motion:reduce){
  .tdpd-smbar{transition:none}
}

/* На телефоне плашка ростовой группы и плашка скидки стоят в одном ряду —
   ограничиваем ширину первой, чтобы процент не уходил под неё. */
@media (max-width:767px){
  :is(#res-products,.tdb-sale-row) .product-item .image .tdpd-rost{max-width:58%}
}

/* Тот же клирфикс bootstrap: .row:before/:after становились ячейками сетки
   и сдвигали поле запроса во вторую колонку. */
body.product-search .tdpd-srch > .row:before,
body.product-search .tdpd-srch > .row:after{content:none!important;display:none!important}


/* ======================================================================
   TDPD: РЕЛЬС МЕГАМЕНЮ И ВЫСОТА ПАНЕЛИ — доводка по замечаниям (05.09.2026)
   Источник — redesign-2026-09/MenuDesktop.dc.html.

   · Тема кладёт под каждый пункт рельса вторую ссылку .parent-title-toggle
     («стрелка» раскрытия). Она занимала свои 52px, и шаг строк был 108px
     при высоте строки 52px — рельс разъезжался, как на скриншоте клиента.
   · Строка наличия в базе называется «НАЛИЧИЕ» и приходит без иконки;
     в макете это строка с зелёной точкой, подписью и числом справа.
   · Строки «Готовые комплекты» в меню не было вовсе.
   ====================================================================== */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */

  /* --- 1. Лишняя вторая строка у пункта рельса ----------------------- */
  /* Класс dropdown-toggle висит и на этой ссылке тоже, поэтому правило
     «строка рельса — флекс» её задевало. Перечисляем все её классы, чтобы
     вес селектора был выше. */
  #tdpd-menu-box #menu ul.menu > li > a.parent-title-toggle.dropdown-toggle.megamenu-toggle-a,
  #tdpd-menu-box #menu ul.menu > li > a.parent-title-toggle{display:none!important}

  /* --- 2. Строка рельса ---------------------------------------------- */
  #tdpd-menu-box #menu ul.menu > li{margin:0 0 2px}
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle{
    display:flex!important;align-items:center;gap:12px;
    height:52px;padding:0 12px!important;border-radius:10px;
    white-space:nowrap;overflow:hidden}
  .tdpd-rail-t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;
    font-size:15px;line-height:1.25;color:#20242C}
  .tdpd-rail-t small{display:block;font-size:12px;line-height:1.25;color:#7A756C}
  #tdpd-menu-box #menu ul.menu > li.active > a.dropdown-toggle .tdpd-rail-t{font-weight:500}
  .tdpd-rail-ico{flex:0 0 22px;width:22px;height:22px;color:#7A756C}
  #tdpd-menu-box #menu ul.menu > li.active > a.dropdown-toggle .tdpd-rail-ico{color:#2F55D4}
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle:hover .tdpd-rail-ico{color:#2F55D4}

  /* Строка наличия: точка вместо иконки, подпись под названием. */
  .tdpd-rail-dot{flex:0 0 22px;display:flex;align-items:center;justify-content:center}
  .tdpd-rail-dot:before{content:"";width:9px;height:9px;border-radius:50%;background:#1E8E5A}
  /* Собственная панель у наличия бессмысленна: в ней один пункт — она сама. */
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-stock > .dropdown-menu{display:none!important}

  /* --- 3. Разделитель и «Готовые комплекты» -------------------------- */
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sep{
    height:1px;margin:12px 12px;padding:0;background:#E8E3D8;list-style:none}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static{width:100%;margin:0 0 2px;position:static}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a{
    display:flex!important;align-items:center;gap:12px;
    height:52px;padding:0 12px!important;border-radius:10px;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:15px;font-weight:400;line-height:1.25;color:#20242C!important;
    text-transform:none;text-decoration:none}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a:hover{background:#F7F5F0;text-decoration:none}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a:hover .tdpd-rail-ico{color:#2F55D4}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static .tdpd-mm-n-root{
    margin-left:auto;font-size:12px;color:#8C93A0}

  /* --- 4. Панель: восемь групп сразу, остальные по кнопке ------------- */
  .tdpd-mm-category .megamenu-hassubchild.tdpd-mm-g-hid{display:none}
  .dropdown-menu.tdpd-mm-gopen .megamenu-hassubchild.tdpd-mm-g-hid{display:grid}
  /* Колонки групп: сетка выравнивала строки по самой высокой группе в паре,
     и на четыре ряда набегало 990px вместо 700px — панель не помещалась на
     экран. Многоколоночный поток укладывает группы вплотную, а разрывать
     группу пополам запрещаем break-inside. */
  .tdpd-mm-category .col-sm-12,
  .tdpd-mm-category .col-sm-8{
    display:block!important;column-count:2;column-gap:32px}
  .tdpd-mm-category .col-sm-12 > .row.col-sm-6,
  .tdpd-mm-category .col-sm-8 > .row.col-sm-6{display:block!important}
  .tdpd-mm-category .col-sm-12 > .quick-filter,
  .tdpd-mm-category .col-sm-8 > .quick-filter,
  .tdpd-mm-gmore{column-span:all}
  .tdpd-mm-category .megamenu-hassubchild{
    break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;
    margin:0 0 18px}

  .tdpd-mm-gmore{margin:2px 0 4px}

  /* Плотность списка подразделов: с шагом 23px четыре строки в группе
     давали лишние 50px на колонку, и панель опять не помещалась. */
  .tdpd-mm-category .megamenu-ischild{margin-top:6px!important}
  .tdpd-mm-category .megamenu-ischild > li > a{padding:2px 0;line-height:1.3}

  /* Запас 180px под панель был взят с потолка: панель начинается на 65-й
     строке, а снизу ей нужно только поле. */
  #menu .nav > li.active a.dropdown-toggle + .dropdown-menu{
    max-height:calc(100vh - 120px)!important}
  .tdpd-mm-gmore-a{display:inline-flex;align-items:center;height:38px;padding:0 16px;
    border:1px solid #DDE1E8;border-radius:10px;background:#fff;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;
    color:#2F55D4!important;text-decoration:none}
  .tdpd-mm-gmore-a:hover{border-color:#2F55D4;background:#EDF1FD;text-decoration:none}

  /* Полоса прокрутки панели: если раздел всё-таки длиннее экрана, она должна
     быть видна — иначе меню читается как оборванное. */
  #menu .nav > li.active a.dropdown-toggle + .dropdown-menu{
    scrollbar-width:thin;scrollbar-color:#D6D2C8 transparent}
  #menu .nav > li.active a.dropdown-toggle + .dropdown-menu::-webkit-scrollbar{width:8px}
  #menu .nav > li.active a.dropdown-toggle + .dropdown-menu::-webkit-scrollbar-thumb{
    background:#D6D2C8;border-radius:8px;border:2px solid #fff}
}

/* --- 5. Кнопка сметы: тема ставит capitalize на всю шапку корзины ------
   Из-за неё подпись читалась «6 Позиций · 43 952 ₽». */
#cart.tdpd-smeta-head,
#cart .tdpd-smeta-a,
#cart .tdpd-smeta-t,
#cart .tdpd-smeta-n{text-transform:none!important}


/* ======================================================================
   TDPD: КАТЕГОРИЯ — ФИЛЬТР И ТОВАРЫ ДВУМЯ КОЛОНКАМИ (05.09.2026)
   Источник — redesign-2026-09/Katalog.dc.html.

   В теме фильтр — отдельная колонка .row во всю высоту страницы, и заголовок
   раздела с подразделами начинались не от края, а от границы фильтра.
   В макете заголовок и подразделы идут во всю ширину, а фильтр стоит слева
   уже под ними, рядом со списком. Узел фильтра переносит внутрь #content
   скрипт в footer.tpl (catLayout); здесь только раскладка.
   ====================================================================== */
@media (min-width:992px){
  body.tdpd-cat-2col #content{
    display:grid;grid-template-columns:288px minmax(0,1fr);
    column-gap:28px;align-items:start;
    width:100%!important;float:none!important;padding-left:0!important}
  body.tdpd-cat-2col #content > *{grid-column:1/-1;min-width:0}
  body.tdpd-cat-2col #content > #column-left{
    grid-column:1;width:auto!important;float:none!important;
    padding-left:0!important;padding-right:0!important;margin:0!important}
  body.tdpd-cat-2col #content > .tdpd-cat-main{grid-column:2;min-width:0}
  /* Колонка фильтра осталась в разметке пустой — она бы держала отступ. */
  body.tdpd-cat-2col > .container > .row > #column-left:empty,
  body.tdpd-cat-2col #column-left:empty{display:none}

  /* Карточка подбора по макету: рамка, кремовая шапка, скруглённые углы. */
  body.tdpd-cat-2col #column-left .tdpd-filter-box,
  body.tdpd-cat-2col #column-left #oct-product-filter{
    border:1px solid #E8E3D8;border-radius:16px;overflow:hidden;background:#fff}
}
@media (max-width:991px){
  body.tdpd-cat-2col #content > #column-left{margin-bottom:20px}
}

/* Чип сортировки: выбранный должен читаться выбранным, а не только при
   первой отрисовке страницы. */
.tdpd-sortchip[aria-pressed="true"],
.tdpd-sortchip-on{background:#2F55D4!important;border-color:#2F55D4!important;color:#fff!important}


/* ======================================================================
   TDPD: ХЛЕБНЫЕ КРОШКИ ПО МАКЕТУ (05.09.2026)
   Источник — Tovar.dc.html, Katalog.dc.html: «Главная / Мебель / Стулья».
   Тема рисовала серую плашку с длинным тире между пунктами.
   ====================================================================== */
.breadcrumb{background:none!important;padding:0!important;margin:0!important;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:13px;line-height:1.5;color:#8C93A0}
.breadcrumb > li{display:inline;white-space:normal}
.breadcrumb > li a,
.breadcrumb > li a span{color:#8C93A0!important;text-decoration:none}
.breadcrumb > li a:hover span{color:#2F55D4!important}
.breadcrumb > li:last-child span{color:#20242C}
.breadcrumb > li + li:before{content:"/"!important;padding:0 8px;color:#DDE1E8}
.breadcrumb > li i.fa-home{display:none}
.breadcrumb-box{padding:16px 0 0}

/* ======================================================================
   TDPD: КАРТОЧКА ТОВАРА ПО МАКЕТУ (доводка 05.09.2026)
   Источник — redesign-2026-09/Tovar.dc.html.
   ====================================================================== */
#product-info-right{display:flex;flex-direction:column;align-items:stretch}

/* Серия и артикул — одна серая строка над заголовком. */
.tdpd-pmeta{order:1;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin:0 0 10px}
.tdpd-pmeta .manufacture-product{margin:0!important;padding:0!important;
  font-size:13px;line-height:1.4;color:#8C93A0}
.tdpd-pmeta .manufacture-product a{color:#8C93A0!important;text-decoration:none}
.tdpd-pmeta .manufacture-product a:hover{color:#2F55D4!important}
.tdpd-pmeta .tdpd-part{position:relative;padding-left:12px;font-size:13px;color:#8C93A0}
.tdpd-pmeta .tdpd-part:before{content:"·";position:absolute;left:2px;color:#DDE1E8}

#product-info-right > h1{order:2;margin:0 0 14px;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:30px;font-weight:600;line-height:1.25;letter-spacing:-.01em;color:#20242C}

/* Наличие и условие доставки одной строкой. */
.tdpd-pstatus{order:3;display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 4px}
.tdpd-pstatus .tdpd-instock{display:inline-flex;align-items:center;gap:7px;margin:0;
  font-size:14px;color:#1E8E5A}
.tdpd-pstatus .tdpd-instock svg{width:15px;height:15px}
.tdpd-pstatus .tdpd-pdelivery{font-size:14px;color:#7A756C}

#product-info-right > ul.list-unstyled{order:4;margin:0;padding:0}
#product-info-right > #product{order:5;display:flex;flex-direction:column;margin-top:20px}

/* Звёзд в правой колонке макет не показывает: отзывов на этом сайте нет,
   пять пустых звёзд только шумят. Вкладка «Отзывы» ниже остаётся. */
#product-info-right > .rating{display:none}
#product-info-right > div[itemprop="description"]{display:none!important}

/* Порядок внутри карточки: сначала выбор исполнения, потом цена, потом
   гарантии. Так в макете — иначе цена относится непонятно к чему. */
#product .tdpd-optbox{order:1}
#product .tdpd-buybox{order:2}
#product .tdpd-trust{order:3}
#product .alert{order:4}

/* Блок выбора исполнения — карточкой с рамкой, как «Ростовая группа». */
#product .tdpd-optbox{border:1px solid #E8E3D8;border-radius:16px;overflow:hidden;
  padding:0 0 16px;margin:0 0 20px}
#product .tdpd-optbox:empty,#product .tdpd-optbox.tdpd-optbox-none{display:none}
#product .tdpd-optbox hr{display:none}
/* Заголовок карточки — кремовой полосой, как в макете. */
#product .tdpd-optbox .options-header{margin:0 0 16px;padding:14px 18px;
  background:#FAF6EC;border-bottom:1px solid #E8E3D8;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:15px;font-weight:500;color:#20242C;text-transform:none;letter-spacing:0}
#product .tdpd-optbox > *:not(.options-header){padding-left:18px;padding-right:18px}

/* Карточка покупки. */
#product .tdpd-buybox{border:1px solid #E8E3D8;border-radius:16px;padding:20px;background:#fff}
#product .tdpd-buybox > .price{margin:0 0 2px!important;padding:0!important;border:0!important}
#product .tdpd-buybox #tdpd-card-extra{margin:14px 0 16px}
#product .tdpd-buybox > .form-group{margin:0!important}

/* Плитки гарантий — сеткой 2×2 карточками, как документы в макете. */
#product .tdpd-trust{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;margin:16px 0 0}
#product .tdpd-trust .tdpd-trust-item{display:flex;align-items:center;gap:12px;
  padding:14px 16px;border:1px solid #E8E3D8;border-radius:12px;background:#FAF6EC;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;line-height:1.3;color:#20242C}
#product .tdpd-trust .tdpd-trust-item svg{flex:0 0 20px;width:20px;height:20px;color:#2F55D4}

@media (max-width:767px){
  #product-info-right > h1{font-size:23px}
  #product .tdpd-trust{grid-template-columns:1fr}
}


/* ======================================================================
   TDPD: ПРАВКИ ПО ЗАМЕЧАНИЯМ 05.09.2026, поздний вечер
   Сверено построчно с redesign-2026-09/MenuDesktop.dc.html и Main.dc.html.
   ====================================================================== */

/* --- 1. Иконки рельса не были видны ----------------------------------
   Тема уводит любую svg в пункте меню за левый край:
   stylesheet.min.css → #menu .nav > li > a > svg{margin-left:-40px}.
   Иконка честно рисовалась, но на 28px левее строки — под панелью. */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  #tdpd-menu-box #menu ul.menu > li > a > svg.tdpd-rail-ico,
  #tdpd-menu-box #menu ul.menu > li > a svg.tdpd-rail-ico,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a svg.tdpd-rail-ico{
    margin:0!important;width:22px!important;height:22px!important;
    flex:0 0 22px;position:static!important;float:none!important}
}

/* --- 2. Поиск в шапке по макету ---------------------------------------
   В макете это спокойное поле: рамка 1px #DDE1E8, скругление 12,
   синий квадрат кнопки 48px. У нас была рамка 2px ярко-синим и кнопка
   56px — поле читалось как большая синяя плашка. */
@media (min-width:1201px){
  #search{height:48px!important;border:1px solid #DDE1E8!important;border-radius:12px!important}
  #search:focus-within{border-color:#2F55D4!important;box-shadow:0 0 0 3px rgba(47,85,212,.12)}
  #search input.input-lg{font-size:15px!important;padding:0 16px!important}
  #search .input-group-btn:not(.dropdown){flex:0 0 48px!important;width:48px!important}
  #search .btn-search{width:48px!important}
  #search .btn-search .lnr-magnifier{font-size:18px}

  /* Кнопка каталога: тема обводит её сиреневой рамкой 2px, в макете
     обводки нет вовсе. Высоту равняем с полем поиска. */
  .main-menu__button{height:48px!important;border:0!important;box-shadow:none!important}
  .main-menu__button.show{background:#20242C!important}

  #cart .tdpd-smeta-a{height:48px}
}

/* --- 3. Панель меню не должна обрываться -------------------------------
   Групп 17, каждая с четырьмя подразделами — это 2000px при 780px экрана.
   Теперь показываем восемь групп по три подраздела (как в макете), панель
   помещается целиком, остальное — по кнопке «Показать ещё». */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  #menu .nav > li.active a.dropdown-toggle + .dropdown-menu{
    max-height:calc(100vh - 96px)!important}
  .tdpd-mm-category .megamenu-hassubchild{margin:0 0 16px}
}

/* --- 4. Иконка группы в панели --------------------------------------- */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  .tdpd-mm-category .megamenu-parent-img{
    width:34px;height:34px;color:#2F55D4}
  .tdpd-mm-gico{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
  .tdpd-mm-gico svg{width:20px;height:20px;margin:0!important}
  .tdpd-mm-category .megamenu-hassubchild:hover .megamenu-parent-img{color:#24409E}
}

/* --- 5. Страница категории: сверка с Katalog.dc.html -------------------
   · фильтр в макете — карточка с рамкой и кремовой шапкой «Подбор»,
     у нас была просто колонка без границ;
   · чипы подразделов в макете 44px и число рядом серым, у нас число
     стояло синей пилюлей на синем фоне выбранного чипа;
   · над крошками у темы серая полоса, в макете её нет. */
.content-row{background:none!important}
.breadcrumb-box{background:none!important;border:0!important}

@media (min-width:992px){
  body.tdpd-cat-2col #column-left #filter-column{
    border:1px solid #E8E3D8;border-radius:16px;overflow:hidden;background:#fff}
  body.tdpd-cat-2col #column-left #filter-column .box-heading{
    margin:0!important;padding:15px 18px!important;
    background:#FAF6EC;border-bottom:1px solid #E8E3D8;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:16px!important;font-weight:500!important;color:#20242C!important;
    text-transform:none!important;letter-spacing:0!important}
}

.tdpd-subchip{height:40px!important;padding:0 14px!important;border-radius:999px!important;
  display:inline-flex!important;align-items:center;gap:8px;
  border:1px solid #E8E3D8!important;background:#fff!important;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;color:#20242C!important;
  text-decoration:none}
.tdpd-subchip:hover{border-color:#2F55D4!important;color:#2F55D4!important;text-decoration:none}
.tdpd-subchip .tdpd-subchip-n{
  padding:0!important;margin:0!important;border-radius:0!important;
  background:none!important;font-size:13px;font-weight:400;color:#8C93A0!important}
.tdpd-subchip:hover .tdpd-subchip-n{color:#2F55D4!important}

/* Серая полоса под крошками (.breadcrumbs, #f4f4f4) в макете отсутствует:
   крошки идут по белому прямо под шапкой. */
.breadcrumbs{background:none!important;padding:0!important;border:0!important}
.breadcrumbs .container{padding-top:16px;padding-bottom:2px}

/* --- 6. Цена в карточке товара --------------------------------------
   В макете Tovar.dc.html это 34px жирным чёрным, старая цена — 18px
   серым с зачёркиванием. Тема давала 18px синим — цена терялась среди
   плиток оптовой шкалы. */
#product .tdpd-buybox > .price{
  display:flex;align-items:flex-end;flex-wrap:wrap;gap:6px 14px}
#product .tdpd-buybox > .price span,
#product .tdpd-buybox > .price #main-product-price,
#product .tdpd-buybox > .price .price-new{
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:34px!important;font-weight:700!important;line-height:1.1!important;
  letter-spacing:-.02em;color:#20242C!important}
#product .tdpd-buybox > .price .price-old{
  font-size:18px!important;font-weight:400!important;color:#8C93A0!important;
  text-decoration:line-through;padding-bottom:5px}

@media (max-width:767px){
  #product .tdpd-buybox > .price span,
  #product .tdpd-buybox > .price #main-product-price,
  #product .tdpd-buybox > .price .price-new{font-size:27px!important}
}


/* ======================================================================
   TDPD: МЕНЮ — замечания 05.09.2026, ночь
   ====================================================================== */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */

  /* --- 1. Кнопки и чипы внутри панели ---------------------------------
     Тема правилом с #menu в селекторе делает любую ссылку в выпадающем
     меню display:block с padding-bottom:4px — текст в кнопках стоял выше
     середины, а «Все N разделов» вообще перестала быть кнопкой.
     Поэтому те же правила, но с весом выше темы. */
  #tdpd-menu-box #menu .tdpd-mm-all{
    display:inline-flex!important;align-items:center!important;justify-content:center;
    height:44px!important;padding:0 16px!important;margin:0!important;
    border-radius:11px;background:#EDF1FD;color:#2F55D4!important;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;font-weight:500;
    line-height:1!important;white-space:nowrap;text-decoration:none;
    transition:background-color .15s,color .15s}
  #tdpd-menu-box #menu .tdpd-mm-all:hover{background:#DDE6FB;color:#24409E!important}

  #tdpd-menu-box #menu .tdpd-mm-tags a{
    display:inline-flex!important;align-items:center!important;
    height:34px!important;padding:0 12px!important;margin:0!important;
    border:1px solid #E8E3D8;border-radius:999px;background:#fff;
    font-size:13px;line-height:1!important;color:#2E3340!important;
    white-space:nowrap;text-decoration:none;transition:border-color .15s,color .15s}
  #tdpd-menu-box #menu .tdpd-mm-tags a:hover{border-color:#2F55D4;color:#2F55D4!important}

  #tdpd-menu-box #menu .tdpd-mm-rail-cta a{
    display:flex!important;align-items:center!important;justify-content:center;
    height:44px!important;padding:0 14px!important;margin:10px 0 0!important;
    border:1px solid #DDE1E8;border-radius:10px;color:#20242C!important;
    font-size:14px;line-height:1!important;text-decoration:none;
    transition:border-color .15s,color .15s}
  #tdpd-menu-box #menu .tdpd-mm-rail-cta a:hover{border-color:#2F55D4;color:#2F55D4!important}

  #tdpd-menu-box #menu .tdpd-mm-kit{transition:border-color .15s,box-shadow .15s}
  #tdpd-menu-box #menu .tdpd-mm-kit:hover{box-shadow:0 8px 20px rgba(32,36,44,.10)}
  #tdpd-menu-box #menu .tdpd-mm-kit-b em{
    display:flex!important;align-items:center!important;justify-content:center;
    height:44px;margin-top:12px;border-radius:10px;background:#2F55D4;color:#fff;
    font-style:normal;font-size:14px;font-weight:500;line-height:1;
    transition:background-color .15s}
  #tdpd-menu-box #menu .tdpd-mm-kit:hover .tdpd-mm-kit-b em{background:#24409E}

  #tdpd-menu-box #menu .tdpd-mm-gmore-a{
    display:inline-flex!important;align-items:center!important;
    height:38px!important;padding:0 16px!important;line-height:1!important;
    transition:background-color .15s,border-color .15s}

  /* --- 2. Плавные ховеры в рельсе ------------------------------------- */
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a{
    transition:background-color .15s ease,color .15s ease}
  #tdpd-menu-box #menu ul.menu > li > a .tdpd-rail-ico,
  #tdpd-menu-box #menu ul.menu > li > a .tdpd-rail-t,
  #tdpd-menu-box #menu ul.menu > li > a .tdpd-mm-n-root{
    transition:color .15s ease}
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle:hover .tdpd-rail-t,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a:hover .tdpd-rail-t{color:#2F55D4}

  /* --- 3. Рельс и панель — один блок ----------------------------------
     Высоту рельса под открытую панель подгоняет скрипт в oct_megamenu.tpl;
     здесь только общий фон, рамка и тень, чтобы это читалось как одна
     карточка, а не как два куска. */
  #tdpd-menu-box #menu.navbar{
    background:#FAFAF8!important;border-bottom:1px solid #E8E3D8;
    box-shadow:0 20px 44px rgba(32,36,44,.14);
    transition:min-height .12s ease}
  #tdpd-menu-box #menu .nav > li.active a.dropdown-toggle + .dropdown-menu,
  #tdpd-menu-box #menu .nav > li a.dropdown-toggle + .dropdown-menu.tdpd-mm-category{
    box-shadow:none!important;border-bottom:0!important}
  /* min-height:100% у панели давал бы петлю: рельс тянется под панель,
     панель — под рельс. Высоту двигаем только у рельса. */
}

/* --- 4. Кнопка «Показать ещё N разделов» ------------------------------
   Тема снова перебивала ссылку на display:block с подчёркиванием — кнопка
   растягивалась во всю колонку. Плюс во время поиска по разделам она не
   нужна: ищем сразу по всем группам. */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  #tdpd-menu-box #menu .tdpd-mm-gmore{margin:2px 0 4px}
  #tdpd-menu-box #menu .tdpd-mm-gmore-a{
    display:inline-flex!important;align-items:center!important;justify-content:center;
    width:auto!important;height:38px!important;padding:0 16px!important;margin:0!important;
    border:1px solid #DDE1E8!important;border-radius:10px!important;background:#fff!important;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px!important;
    line-height:1!important;color:#2F55D4!important;
    text-decoration:none!important;transition:background-color .15s,border-color .15s}
  #tdpd-menu-box #menu .tdpd-mm-gmore-a:hover{
    border-color:#2F55D4!important;background:#EDF1FD!important;text-decoration:none!important}

  .dropdown-menu.tdpd-mm-filtering .tdpd-mm-gmore{display:none}
  .dropdown-menu.tdpd-mm-filtering .megamenu-hassubchild.tdpd-mm-g-hid{display:grid}
  /* jQuery.show() штатного фильтра ставит inline display:block и ломает
     сетку «иконка + название» внутри группы. */
  .tdpd-mm-category .megamenu-hassubchild[style*="block"]{display:grid!important}
}


/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 06.09.2026 — разбор моих же регрессий
   ====================================================================== */

/* --- 1. Живой поиск в шапке перестал показываться ---------------------
   Подсказки рисуются ВНУТРИ #search (#livesearch_search_results), а я
   поставил полю overflow:hidden ради скруглённого угла у синей кнопки.
   Список честно строился на 1637px и целиком обрезался.
   Скругление делаем самим детям, а поле оставляем открытым. */
@media (min-width:1201px){
  #search{overflow:visible!important;position:relative}
  #search input.input-lg{border-radius:12px 0 0 12px!important}
  #search .input-group-btn:not(.dropdown) > .btn-search{border-radius:0 12px 12px 0!important}
  /* 24.09.2026: живой поиск дописывает этот список ПОСЛЕДНИМ ребёнком #search —
     кнопка переставала быть :last-child, её обёртка схлопывалась до 5px, а
     сама кнопка вылезала вправо на телефон. Поэтому кнопку ищем через
     :not(.dropdown), а не через :last-child. */
  #livesearch_search_results{
    position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:1000;
    max-height:min(70vh,560px);overflow-y:auto;
    border:1px solid #E8E3D8;border-radius:12px;background:#fff;
    box-shadow:0 14px 34px rgba(32,36,44,.16)}
}

/* --- 2. Верхняя строка: по бокам кремовая, в середине белая -----------
   Тема красит .box-inner в белый, и на широком экране полоса выглядела
   трёхцветной. */
#top .box-inner,
#top .not-mobile-container,
#top .container{background:transparent!important}

/* --- 3. Тень мегаменю лезла по бокам ----------------------------------
   Была равномерная тень 0 20px 44px вокруг блока шириной 1200 внутри
   страницы — она читалась как рамка по левому и правому краю.
   Оставляем только падающую вниз. */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  #tdpd-menu-box #menu.navbar{
    box-shadow:0 22px 28px -20px rgba(32,36,44,.28)!important}

  /* --- 4. Меню шире, раз в 1200 не помещается ------------------------ */
  #tdpd-menu-box{position:static}
}
@media (min-width:1330px){
  #tdpd-menu-box #menu.navbar{
    width:min(1440px, calc(100vw - 32px));
    margin-left:calc((1200px - min(1440px, calc(100vw - 32px))) / 2)}
}

/* --- 5. Плавность ховера в рельсе -------------------------------------
   Раньше перечисляли отдельные свойства и промахивались мимо тех, что
   реально меняются (фон задаётся сокращением background). */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a,
  #tdpd-menu-box #menu ul.menu > li > a .tdpd-rail-ico,
  #tdpd-menu-box #menu ul.menu > li > a .tdpd-rail-t,
  #tdpd-menu-box #menu ul.menu > li > a .tdpd-mm-n-root{
    transition:background-color .18s ease, color .18s ease!important}
  #tdpd-menu-box #menu ul.menu > li:hover > a.dropdown-toggle{background-color:#F1EFEA}
  #tdpd-menu-box #menu ul.menu > li:hover > a.dropdown-toggle .tdpd-rail-ico,
  #tdpd-menu-box #menu ul.menu > li:hover > a.dropdown-toggle .tdpd-rail-t{color:#2F55D4}
}

/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 06.09.2026, вечер — меню, шапка, главная, категория.
   Один блок на весь заход: восемь блоков подряд, перебивающих друг друга,
   мы уже проходили.
   ====================================================================== */

/* --- 1. Панель меню прыгала при переходе между разделами --------------
   Высоту рельса подгонял скрипт по высоте открытой панели, а панели
   разной длины: «Детский сад» 630px, «Канцтовары» 250px. Меню дёргалось
   на каждом наведении. Теперь высота панели постоянная: содержимое
   короче — остаётся воздух, длиннее — своя прокрутка. */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  #tdpd-menu-box #menu .nav > li a.dropdown-toggle + .dropdown-menu.tdpd-mm-category,
  #tdpd-menu-box #menu .nav > li.active a.dropdown-toggle + .dropdown-menu{
    box-sizing:border-box;
    height:min(632px, calc(100vh - 120px))!important;
    max-height:none!important;
    overflow-y:auto;overflow-x:hidden}

  /* --- 2. По краям меню был один фон, внутри другой ------------------
     Рельс сидел на #FAFAF8, панель — на белом, и стык читался как шов
     между двумя разными блоками. В макете вся панель белая, а рельс от
     панели отделяет только тонкая линия. */
  #tdpd-menu-box #menu.navbar{background:#fff!important}

  /* --- 3. Ховер строк «Что оснащаем» ---------------------------------
     Правило ховера стояло в одном месте с сокращением `background`, в
     другом — с `background-color`, и побеждало то, у которого перехода
     не было. Сводим в одно место: и подсветка, и цвет с переходом. */
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a{
    transition:background-color .18s ease, color .18s ease!important}
  #tdpd-menu-box #menu ul.menu > li > a.dropdown-toggle *,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a *{
    transition:color .18s ease!important}
  #tdpd-menu-box #menu ul.menu > li:hover > a.dropdown-toggle,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-static > a:hover{
    background:#F4F2ED!important}
  #tdpd-menu-box #menu ul.menu > li.active > a.dropdown-toggle{background:#EDF1FD!important}

  /* --- 4. Иконки рельса заливались целиком ---------------------------
     Клиент просил менять только цвет. Заливку запрещаем во всех
     состояниях, штрих делаем тоньше — на 22px он читался как пятно. */
  #tdpd-menu-box #menu ul.menu svg.tdpd-rail-ico,
  #tdpd-menu-box #menu ul.menu svg.tdpd-rail-ico *,
  .tdpd-mm-category .tdpd-mm-gico svg,
  .tdpd-mm-category .tdpd-mm-gico svg *{
    fill:none!important;stroke:currentColor!important;stroke-width:1.6!important}

  /* --- 5. Поиск раздела и «Все N разделов» стояли на разной высоте ----
     Тема держит на .style-for-form высоту 35px. Обёртка — флекс-элемент
     при align-items:center, её коробка вставала по центру строки 44px, а
     поле внутри вылезало вниз на 4.5px. Плюс в конце строки лежит пустой
     .clear, и flex-gap отодвигал кнопку от правого края на 12px. */
  .tdpd-mm-category .quick-filter .product-head{align-items:stretch}
  .tdpd-mm-category .quick-filter .style-for-form{
    height:auto!important;min-height:0!important;
    display:flex!important;align-items:center}
  .tdpd-mm-category .quick-filter .filterform{width:100%}
  .tdpd-mm-category .quick-filter .product-head > .clear{display:none!important}

  /* --- 6. Карточка комплекта в правом рельсе -------------------------
     Тема даёт любой ссылке в выпадающем меню padding:0 15px 4px. Из-за
     него картинка и кнопка стояли на 15px уже карточки — кнопка
     выглядела косой. Заодно снимаем подчёркивание с текста карточки. */
  #tdpd-menu-box #menu .tdpd-mm-kit{padding:0!important}
  #tdpd-menu-box #menu .tdpd-mm-kit,
  #tdpd-menu-box #menu .tdpd-mm-kit *,
  #tdpd-menu-box #menu .tdpd-mm-kit:hover,
  #tdpd-menu-box #menu .tdpd-mm-kit:hover *{text-decoration:none!important}
}

/* --- 7. Шапка: поиск во всю свободную ширину -------------------------
   Тема держит на #search width и max-width 330px, и поле занимало треть
   строки при пустом месте справа. */
@media (min-width:993px){ /* TDPD 22.09.2026: было 1201 */
  .ts-search-box #search{
    width:100%!important;max-width:none!important;flex:1 1 auto!important}

  /* Кнопка каталога стояла в первой строке сетки и равнялась по полю
     поиска, а не по блоку целиком: под полем есть вторая строка с
     частыми запросами, и кнопка казалась поднятой. */
  .ts-search-box .main-menu__button{grid-row:1 / 3;align-self:center}
}

/* --- 8. Верхняя полоса: белые плашки на ховере -----------------------
   Пункты полосы — это .btn.btn-link, и bootstrap подставляет им на
   ховере белый фон кнопки. На кремовой полосе это читалось как
   прямоугольные заплатки. */
#top .box-top a.btn-top:hover,
#top .box-top a.btn-top:focus,
#top .box-top a.btn-top:active,
#top .box-top .btn-link:hover,
#top .box-top .btn-link:focus,
#top .box-top .btn-link:active,
#top .box-top .btn-group.open > .btn-link{
  background:none!important;background-color:transparent!important;
  border-color:transparent!important;box-shadow:none!important}

/* --- 9. Главная: отступ перед кремовой лентой ------------------------
   Ленте вернули собственные поля (см. .tdb-cream выше), поэтому нижний
   отступ стены разделов больше не нужен — иначе перед лентой 112px. */
.cat-wall-row{margin-bottom:0!important}

/* --- 10. Категория: заголовок жирным по макету -----------------------
   Katalog.dc.html: 32px/600, у нас приезжал 36px/400. */
#content h1.cat-header{
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:32px!important;font-weight:600!important;
  line-height:1.2!important;letter-spacing:-.01em;color:#20242C!important}
@media (max-width:767px){ #content h1.cat-header{font-size:24px!important} }

/* --- 11. Категория: лишние чипы подразделов снова прячутся -----------
   Правило `.tdpd-subchip{display:inline-flex!important}` из более
   позднего блока перебивало `display:none` у скрытых чипов: на странице
   были раскрыты сразу все, а кнопка «Ещё N разделов» ничего не меняла —
   чекбокс переключался, а показывать было уже нечего. */
.tdpd-subs .tdpd-subchip.is-extra{display:none!important}
.tdpd-subs-cb:checked ~ .tdpd-subs .tdpd-subchip.is-extra{display:inline-flex!important}

/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 06.09.2026, вечер — часть 2 (меню)
   ====================================================================== */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */

  /* --- 1. Серая полоса по бокам панели -------------------------------
     Панель меню шире контейнера (1440 против 1200) и вылезает за него, а
     под ней лежит .menu-row с фоном #F5F5F5 от темы. Слева и справа от
     белой панели оставались серые поля — стык читался как чужой блок. */
  .menu-row{background:#fff!important}

  /* --- 2. Линия между рельсом и списком разделов ---------------------
     В макете (MenuDesktop.dc.html) рельс отделён от разделов границей
     border-right:1px #E8E3D8. У нас линия была объявлена на панели, но
     её сносило правило темы .dropdown-menu{border:0}. */
  #tdpd-menu-box #menu .nav > li a.dropdown-toggle + .dropdown-menu.tdpd-mm-category,
  #tdpd-menu-box #menu .nav > li.active a.dropdown-toggle + .dropdown-menu{
    border-left:1px solid #E8E3D8!important}

  /* --- 3. Подразделы стояли на 15px правее своего раздела ------------
     Тема даёт ссылкам внутри выпадающего меню padding-left:15px. В макете
     подраздел начинается ровно под названием раздела. */
  #tdpd-menu-box #menu .tdpd-mm-category .megamenu-ischild > li > a,
  #tdpd-menu-box #menu .tdpd-mm-category .tdpd-mm-more > a.see-all{
    padding-left:0!important;padding-right:0!important}
}

/* ======================================================================
   TDPD: СТРАНИЦА ТОВАРА 06.09.2026 — пункт 2 списка замечаний.
   Источник — redesign-2026-09/Tovar.dc.html.
   ====================================================================== */

/* --- 1. Ступени опта — кнопки ---------------------------------------- */
#tdpd-scale-rows .tdpd-scale-row{
  width:100%;text-align:left;font:inherit;color:inherit;
  -webkit-appearance:none;appearance:none;cursor:pointer;
  transition:border-color .15s ease, background-color .15s ease}
#tdpd-scale-rows .tdpd-scale-row:hover{border-color:#2F55D4}
#tdpd-scale-rows .tdpd-scale-row:focus-visible{outline:2px solid #2F55D4;outline-offset:2px}

/* --- 2. Свотчи цвета: четыре и «ещё N» -------------------------------- */
#product .options-box .radio-img.tdpd-sw-hid{display:none}
#product .options-box.tdpd-sw-open .radio-img.tdpd-sw-hid{display:inline-block}
.tdpd-sw-more{
  display:inline-flex;align-items:center;height:40px;padding:0 12px;
  margin:0 8px 8px 0;vertical-align:top;
  border:1px dashed #B8BEC9;border-radius:10px;background:none;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:13px;color:#7A756C;
  cursor:pointer;transition:border-color .15s ease, color .15s ease}
.tdpd-sw-more:hover{border-color:#2F55D4;color:#2F55D4}

/* --- 3. Названия опций ------------------------------------------------
   Были 15px — вровень с названиями вариантов, из-за чего блок читался как
   сплошной жирный текст. В макете подпись мельче выбора. */
#product .form-group > label.control-label,
#product .form-group > .col-sm-12 > label.control-label{
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:14px!important;font-weight:500!important;
  color:#20242C!important;margin-bottom:10px}

/* --- 4. Характеристики и рекомендации в две колонки ------------------- */
.tdpd-specrow{display:flex;gap:40px;align-items:flex-start;margin:40px 0 0}
.tdpd-specrow > .tdpd-spec-col{flex:0 1 640px;min-width:0}
.tdpd-specrow > .tdpd-with-col{flex:1 1 380px;min-width:0}
.tdpd-specrow h2{
  margin:0 0 16px;font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:22px;font-weight:600;line-height:1.25;color:#20242C;text-transform:none}
.tdpd-spec-table{border:1px solid #E8E3D8;border-radius:16px;overflow:hidden}
.tdpd-spec-r{display:flex;gap:16px;padding:13px 18px;border-bottom:1px solid #E8E3D8;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;line-height:1.45}
/* Зебра — как в макете: подсветка чётных строк, а не рамка у каждой. */
.tdpd-spec-r:nth-child(even){background:#FAF6EC}
.tdpd-spec-r:last-child{border-bottom:0}
.tdpd-spec-r > span{flex:0 0 230px;color:#7A756C}
.tdpd-spec-r > b{flex:1 1 auto;min-width:0;font-weight:400;color:#20242C}
.tdpd-spec-g{padding:13px 18px;border-bottom:1px solid #E8E3D8;background:#F3EEE3;
  font-size:14px;font-weight:600;color:#20242C}

/* Карточки рекомендаций переехали из карусели: там они вертикальные
   плитки, здесь — строки «картинка · название · цена · кнопка». */
.tdpd-with-list{display:flex;flex-direction:column;gap:12px}
.tdpd-with-list .product-layout{width:100%;margin:0;padding:0;float:none}
.tdpd-with-list .product-thumb,
.tdpd-with-list .product-item{width:100%;margin:0;padding:0;border:0;box-shadow:none}
.tdpd-with-list .product-item{
  display:flex;align-items:center;gap:14px;padding:12px;
  border:1px solid #E8E3D8;border-radius:14px;background:#fff;
  transition:border-color .15s ease}
.tdpd-with-list .product-item:hover{border-color:#2F55D4}
.tdpd-with-list .image{flex:0 0 64px;width:64px;height:64px;margin:0;padding:0;
  border-radius:10px;overflow:hidden;background:#F3EEE3}
.tdpd-with-list .image img{width:100%;height:100%;object-fit:contain;display:block}
.tdpd-with-list .caption{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;
  align-items:center;gap:4px 12px;padding:0;text-align:left}
.tdpd-with-list .caption h4{flex:1 1 100%;margin:0;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:14px;font-weight:500;line-height:1.35}
.tdpd-with-list .caption h4 a{color:#20242C!important;text-decoration:none}
.tdpd-with-list .caption h4 a:hover{color:#2F55D4!important}
.tdpd-with-list .caption .price{margin:0;font-size:14px;font-weight:600;color:#20242C}
.tdpd-with-list .box-cart{margin:0;padding:0;display:flex;align-items:center;gap:8px}
.tdpd-with-list .pro-label,
.tdpd-with-list .rating,
.tdpd-with-list .description{display:none}

@media (max-width:1199px){
  .tdpd-specrow{flex-direction:column;gap:32px}
  .tdpd-specrow > .tdpd-spec-col,
  .tdpd-specrow > .tdpd-with-col{flex:1 1 auto;width:100%}
}
@media (max-width:767px){
  .tdpd-specrow{margin-top:28px}
  .tdpd-specrow h2{font-size:19px}
  .tdpd-spec-r{flex-direction:column;gap:2px;padding:11px 14px}
  .tdpd-spec-r > span{flex:0 0 auto}
}

/* ======================================================================
   TDPD: МОБИЛЬНОЕ МЕНЮ 06.09.2026 — своя вёрстка вместо шторки темы.
   Источник — MobMenu.dc.html (корень) и MobMenuOpen.dc.html (раздел).
   ====================================================================== */
#tdpd-mmenu{display:none}

@media (max-width:1200px){
  /* Штатная шторка больше не используется: её открывал тот же
     #menu-mobile-toggle, и две панели дрались за экран. */
  #menu-mobile{display:none!important}

  #tdpd-mmenu{
    display:flex;flex-direction:column;
    position:fixed;inset:0;z-index:10050;
    background:#fff;color:#20242C;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    transform:translateX(-100%);visibility:hidden;
    transition:transform .22s ease, visibility .22s ease}
  body.tdpd-mm2-on #tdpd-mmenu{transform:none;visibility:visible}
  body.tdpd-mm2-on{overflow:hidden}
  #tdpd-mmenu *{box-sizing:border-box}

  .tdpd-mm2-head{
    flex:0 0 auto;display:flex;align-items:center;gap:10px;
    height:56px;padding:0 14px;border-bottom:1px solid #E8E3D8}
  .tdpd-mm2-title{flex:1 1 auto;min-width:0;font-size:18px;font-weight:600;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tdpd-mm2-back,
  .tdpd-mm2-close{
    flex:0 0 auto;display:flex;align-items:center;justify-content:center;
    width:40px;height:40px;padding:0;border:0;background:none;
    color:#20242C;cursor:pointer}
  .tdpd-mm2-close{margin-right:-8px}
  .tdpd-mm2-back{margin-left:-8px}
  /* display у кнопок перебивал атрибут hidden: стрелка «назад» висела и на
     корневом экране, где возвращаться некуда. */
  .tdpd-mm2-back[hidden]{display:none}

  /* Прокрутка только у середины: подвал со связью в макете не уезжает. */
  .tdpd-mm2-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;
    -webkit-overflow-scrolling:touch;padding:0 14px 16px}
  .tdpd-mm2-pane[hidden]{display:none}

  .tdpd-mm2-srch{display:flex;align-items:center;gap:10px;
    margin:12px 0 0;padding:0 14px;height:48px;
    border:1.5px solid #2F55D4;border-radius:12px;color:#8C93A0}
  .tdpd-mm2-srch input{flex:1 1 auto;min-width:0;height:100%;
    border:0;outline:0;background:none;padding:0;
    font-family:inherit;font-size:15px;color:#20242C}
  .tdpd-mm2-srch input::placeholder{color:#8C93A0;opacity:1}
  .tdpd-mm2-srch-sec{height:46px;border:1px solid #DDE1E8}
  .tdpd-mm2-srch-sec input{font-size:14px}

  .tdpd-mm2-lbl{margin:16px 0 10px;
    font-size:11px;font-weight:600;letter-spacing:.12em;
    text-transform:uppercase;color:#8C93A0}
  .tdpd-mm2-lblrow{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
  .tdpd-mm2-lblrow .tdpd-mm2-lbl{margin-bottom:0}
  .tdpd-mm2-lblrow a{font-size:13px;color:#2F55D4;text-decoration:none;white-space:nowrap}

  .tdpd-mm2-list{display:flex;flex-direction:column;gap:8px}
  .tdpd-mm2-r{display:flex;align-items:center;gap:12px;
    height:58px;padding:0 14px;
    border:1px solid #E8E3D8;border-radius:12px;
    color:#20242C!important;text-decoration:none!important}
  .tdpd-mm2-r:active{background:#F7F5F0}
  .tdpd-mm2-rt{flex:1 1 auto;min-width:0;font-size:15px;font-weight:500;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tdpd-mm2-rn{flex:0 0 auto;font-size:12px;color:#8C93A0}
  .tdpd-mm2-chev{flex:0 0 auto;color:#B8BEC9}
  .tdpd-mm2-ico{flex:0 0 22px;width:22px;height:22px;color:#2F55D4;
    fill:none!important;stroke:currentColor!important}

  .tdpd-mm2-quick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .tdpd-mm2-q{display:flex;align-items:center;gap:9px;
    min-height:52px;padding:8px 12px;border-radius:12px;background:#FAF6EC;
    color:#20242C!important;font-size:13px;line-height:1.25;
    text-decoration:none!important}
  .tdpd-mm2-q .tdpd-mm-gico{flex:0 0 19px;width:19px;height:19px;color:#2F55D4}
  .tdpd-mm2-q .tdpd-mm-gico svg{width:19px;height:19px}

  .tdpd-mm2-kits{display:flex;align-items:center;gap:12px;
    min-height:56px;margin-top:16px;padding:8px 14px;
    border:1px solid #2F55D4;border-radius:12px;background:#EDF1FD;
    color:#20242C!important;text-decoration:none!important}
  .tdpd-mm2-kt{flex:1 1 auto;min-width:0;font-size:14px;font-weight:500;line-height:1.25}
  .tdpd-mm2-kt small{display:block;font-size:12px;font-weight:400;color:#7A756C}
  .tdpd-mm2-kits .tdpd-mm2-chev{color:#2F55D4}

  .tdpd-mm2-stock{display:flex;align-items:center;gap:12px;
    height:52px;margin-top:8px;padding:0 14px;
    color:#20242C!important;text-decoration:none!important}
  .tdpd-mm2-dot{flex:0 0 21px;display:flex;align-items:center;justify-content:center}
  .tdpd-mm2-dot:before{content:"";width:9px;height:9px;border-radius:50%;background:#1E8E5A}
  .tdpd-mm2-st{flex:1 1 auto;min-width:0;font-size:14px}

  .tdpd-mm2-info{display:flex;flex-direction:column}
  .tdpd-mm2-info a{display:flex;align-items:center;height:46px;
    border-bottom:1px solid #F0EDE6;
    font-size:14px;color:#20242C!important;text-decoration:none!important}
  .tdpd-mm2-info a:last-child{border-bottom:0}

  /* --- экран раздела ------------------------------------------------- */
  .tdpd-mm2-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;margin-top:12px}
  .tdpd-mm2-tile{display:block;padding:14px 12px;
    border:1px solid #E8E3D8;border-radius:14px;
    color:#20242C!important;text-decoration:none!important}
  .tdpd-mm2-tile.is-extra{display:none}
  .tdpd-mm2-sec.is-open .tdpd-mm2-tile.is-extra,
  .tdpd-mm2-sec.is-filtering .tdpd-mm2-tile.is-extra{display:block}
  .tdpd-mm2-sec.is-filtering .tdpd-mm2-tile.is-off{display:none}
  .tdpd-mm2-sec.is-filtering .tdpd-mm2-more{display:none}
  .tdpd-mm2-tile .tdpd-mm-gico{display:block;width:26px;height:26px;color:#2F55D4}
  .tdpd-mm2-tile .tdpd-mm-gico svg{width:26px;height:26px}
  .tdpd-mm2-tile b{display:block;margin-top:10px;
    font-size:14px;font-weight:500;line-height:1.3}
  .tdpd-mm2-tile i{display:block;margin-top:4px;
    font-size:12px;font-style:normal;color:#7A756C}
  .tdpd-mm2-more{display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;height:48px;margin-top:10px;
    border:1px solid #DDE1E8;border-radius:12px;background:#fff;
    font-family:inherit;font-size:14px;color:#20242C;cursor:pointer}
  .tdpd-mm2-empty{padding:24px 4px;font-size:14px;line-height:1.5;color:#7A756C}

  /* --- подвал --------------------------------------------------------- */
  .tdpd-mm2-foot{flex:0 0 auto;padding:12px 14px 16px;
    background:#fff;border-top:1px solid #E8E3D8}
  .tdpd-mm2-call{display:flex;align-items:center;justify-content:center;gap:10px;
    height:52px;border-radius:12px;background:#2F55D4;
    color:#fff!important;font-size:15px;font-weight:500;
    text-decoration:none!important}
  .tdpd-mm2-call:active{background:#24409E}
  .tdpd-mm2-tel{display:flex;align-items:center;justify-content:center;gap:8px;
    margin-top:10px;font-size:17px;font-weight:600}
  .tdpd-mm2-tel a{color:#20242C!important;text-decoration:none!important}
  .tdpd-mm2-tel small{font-size:13px;font-weight:400;color:#7A756C}
  .tdpd-mm2-geo{margin-top:3px;text-align:center;font-size:12px;color:#8C93A0}
  .tdpd-mm2-geo:empty{display:none}

  /* Нижняя панель быстрых действий лежит выше шторки — на время меню её
     убираем тем же классом, что и для шторок темы. */
  body.tdpd-mm2-on #tdpd-tabbar{display:none}
}

/* ======================================================================
   TDPD: КАТЕГОРИЯ 06.09.2026 — пункт 3 списка замечаний.
   Источник — redesign-2026-09/Katalog.dc.html.
   ====================================================================== */

/* --- 1. Переключатели «Список» / «Сетка» ------------------------------
   В макете их нет: список товаров строкой на этом каталоге нечитаем —
   карточка без картинки не даёт понять, о чём позиция. */
#list-view,#grid-view{display:none!important}
.tdpd-product-view-text{display:none!important}

/* --- 2. Иконка в чипе подраздела -------------------------------------- */
.tdpd-subchip{padding-left:8px!important}
.tdpd-subchip-i{
  flex:0 0 28px;width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:#F3EEE3;color:#2F55D4}
.tdpd-subchip-i .tdpd-mm-gico{display:flex;width:16px;height:16px}
.tdpd-subchip-i .tdpd-mm-gico svg{width:16px;height:16px;fill:none;stroke:currentColor}
.tdpd-subchip:hover .tdpd-subchip-i{background:#EDF1FD}
/* У кнопки «Ещё N разделов» иконки нет — ей левый отступ не сужаем. */
.tdpd-subchip.tdpd-subchip-more{padding-left:14px!important}

/* --- 3. Отступы между карточками --------------------------------------
   Колонки темы шли без внутренних полей, и рамки карточек соприкасались.
   В макете сетка с зазором 20px. */
:is(#res-products,.tdb-sale-row) > .row:not(.pagination-row){margin-left:-10px;margin-right:-10px}
:is(#res-products,.tdb-sale-row) > .row:not(.pagination-row) > .product-items{
  padding-left:10px;padding-right:10px;margin-bottom:20px}

/* --- 4. Выбор нескольких карточек -------------------------------------
   Завхоз собирает смету из десятка позиций подряд: по одной кнопке на
   карточку это десять попапов. Галочка в углу картинки и одно действие
   над выбранными — как отмечены карточки в макете. */
:is(#res-products,.tdb-sale-row) .product-thumb .image{position:relative}
.tdpd-pick{
  position:absolute;top:8px;right:8px;z-index:3;
  width:24px;height:24px;padding:0;margin:0;
  border:2px solid #DDE1E8;border-radius:7px;background:#fff;
  cursor:pointer;-webkit-appearance:none;appearance:none;
  transition:border-color .15s ease, background-color .15s ease}
.tdpd-pick:hover{border-color:#2F55D4}
.tdpd-pick:checked{
  border-color:#2F55D4;background:#2F55D4 no-repeat center/14px 14px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l5 5L19 7'/%3E%3C/svg%3E")}
:is(#res-products,.tdb-sale-row) .product-items.is-picked .product-thumb{
  border-color:#2F55D4;box-shadow:0 0 0 1px #2F55D4 inset}

/* Панель действия появляется только когда что-то выбрано. */
#tdpd-pickbar{
  position:fixed;left:50%;transform:translateX(-50%) translateY(120%);
  bottom:20px;z-index:1002;
  display:flex;align-items:center;gap:14px;
  padding:10px 12px 10px 18px;border-radius:16px;
  background:#20242C;color:#fff;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;
  box-shadow:0 14px 34px rgba(32,36,44,.30);
  transition:transform .2s ease;visibility:hidden}
#tdpd-pickbar.is-on{transform:translateX(-50%);visibility:visible}
#tdpd-pickbar b{font-weight:500}
#tdpd-pickbar button{
  height:40px;padding:0 16px;border:0;border-radius:11px;
  font-family:inherit;font-size:14px;font-weight:500;cursor:pointer}
#tdpd-pickbar .tdpd-pick-add{background:#2F55D4;color:#fff}
#tdpd-pickbar .tdpd-pick-add:hover{background:#3E67E8}
#tdpd-pickbar .tdpd-pick-add[disabled]{opacity:.6;cursor:default}
#tdpd-pickbar .tdpd-pick-clear{background:none;color:#B8BEC9;padding:0 6px}
#tdpd-pickbar .tdpd-pick-clear:hover{color:#fff}

@media (max-width:992px){
  /* Островок быстрых действий стоит на том же месте — панель выше него. */
  #tdpd-pickbar{left:12px;right:12px;transform:translateY(160%);
    bottom:calc(84px + env(safe-area-inset-bottom));
    justify-content:space-between;padding:10px 10px 10px 14px}
  #tdpd-pickbar.is-on{transform:none}
}

/* ======================================================================
   TDPD: ВЫСОТА РЕЛЬСА 06.09.2026 — меню открывается сразу целиком.

   Рельс «Что оснащаем» тянулся под высоту панели скриптом, а тема держит
   на навбаре min-height:20px с !important — инлайновое значение из скрипта
   она перебивала. Пока скрипт не отработает, белый блок рельса кончался
   на 369px, а панель шла до 632: слева и снизу от рельса просвечивала
   страница, и это выглядело как тень и как «догрузка» нижней части.
   Теперь высота задана правилом того же веса и применяется в тот же кадр,
   в котором открывается меню (класс на body ставит обработчик кнопки).
   ====================================================================== */
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  body.tdpd-mm-open #tdpd-menu-box #menu.navbar{
    min-height:min(632px, calc(100vh - 120px))!important}
}

/* Фотография раздела в плитке мобильного меню и в чипе подраздела —
   как у групп в десктопном меню. Линейная иконка остаётся для разделов
   без картинки. */
.tdpd-mm2-tile .tdpd-mm2-ph,
.tdpd-subchip-i .tdpd-subchip-ph{display:block;overflow:hidden}
.tdpd-mm2-tile .tdpd-mm2-ph{width:34px;height:34px;border-radius:8px;background:#F3EEE3}
.tdpd-mm2-tile .tdpd-mm2-ph img{width:100%;height:100%;object-fit:contain;display:block}
.tdpd-subchip-i .tdpd-subchip-ph{width:28px;height:28px;border-radius:50%}
.tdpd-subchip-i .tdpd-subchip-ph img{width:100%;height:100%;object-fit:cover;display:block}
.tdpd-subchip-i:has(.tdpd-subchip-ph){background:none}


/* ======================================================================
   TDPD: ШАПКА ОДНОЙ КОМПОЗИЦИЕЙ (07.09.2026)

   Замечание клиента: «верхнюю полосу сольём в одной композиции с меню,
   ссылки будут как бы над строкой поиска» — образец wildberries.

   Было две плашки разного цвета: кремовая утилитарная полоса 40px во всю
   ширину и белая шапка 96px. Граница между ними читалась как конец шапки,
   а до хлебных крошек уходило 136px.

   Стало: один белый блок с единственной линией внизу. Порядок строк тот же
   (ссылки сверху, поиск снизу), но полоса больше не отделена цветом —
   поэтому обе строки читаются как одна шапка. Заодно сняты лишние высоты:
   утилитарная строка 40→32, основная 96→72, логотип 64→50,
   поле поиска и кнопки 52→46.

   Пороги те же, что у прежней правки шапки: 992 для полосы, 1201 для
   раскладки. Мобильная шапка-«островок» не затрагивается.
   ====================================================================== */

/* --- 1. Обе строки на одном фоне ---------------------------------------
   Кремовый фон и линия под полосой — это и есть шов, который клиент видел
   как «две шапки». Убираем оба, линию рисуем один раз под всей шапкой. */
@media (min-width:992px){
  #top{background:#fff!important;border-bottom:0!important}
  header .box > .box-inner{border-bottom:1px solid #E8E3D8}
  /* Тема вешает на .top-menu собственную верхнюю линию — вторая полоска
     сразу под нашей выглядела бы как та же двойная граница. */
  .top-menu{border-top:0!important}
}

/* --- 2. Утилитарная строка ниже и мельче -------------------------------- */
@media (min-width:992px){
  #top .not-mobile-container .box-inner{min-height:32px}
  #top .box-top{gap:20px}
  #top .box-top a.btn-top,
  #top .box-top .btn-group > .btn-link,
  #top .box-top-right .user-dropdown > a{
    font-size:12.5px!important;line-height:18px!important;padding:7px 0!important}
  #top .tdpd-worktime{font-size:12.5px;line-height:18px;padding:7px 0}
}

/* --- 3. Основная строка компактнее -------------------------------------
   Экономия идёт из высот, а не из отступов между элементами: расстояния
   между логотипом, кнопкой, поиском и сметой остаются прежними, иначе
   строка начинает выглядеть тесной. */
@media (min-width:1201px){
  header .box-inner-inner{min-height:72px;padding:8px 0;gap:18px}
  #logo img{max-height:50px}

  .ts-search-box{row-gap:5px}
  .main-menu__button{height:46px!important;border-radius:11px!important;padding:0 18px!important}
  .main-menu__button span{font-size:14.5px!important}

  #search{height:46px;border-radius:11px}
  #search input.input-lg{padding:0 16px!important;font-size:14.5px!important;
    border-radius:11px 0 0 11px!important}
  #search .input-group-btn:not(.dropdown){flex:0 0 50px!important;width:50px!important}
  #search .btn-search{width:50px;border-radius:0 11px 11px 0!important}
  #search .btn-search .lnr-magnifier{font-size:18px}

  .tdpd-hint .tdpd-hint-l,
  .tdpd-hint a{font-size:11.5px}

  .col-cart{gap:18px}
  .col-cart .header-phone .phone-wrap{font-size:18px!important}
  .col-cart .header-phone .field-tip.show-phones{height:24px;margin-top:4px;
    font-size:11.5px;line-height:24px;padding:0 10px}

  #cart .tdpd-smeta-a{height:46px;padding:0 16px!important;border-radius:11px}
  #cart .tdpd-smeta-t{font-size:13.5px}
  #cart .tdpd-smeta-n{font-size:10.5px}
}

/* --- 4. Липкая шапка при скролле ---------------------------------------
   Тема при прокрутке навешивает .scroll-fixed и сама режет высоты. Своя
   линия под шапкой там лишняя: у липкой версии есть тень. */
@media (min-width:992px){
  header.scroll-fixed .box > .box-inner{border-bottom:0}
}


/* ======================================================================
   TDPD: ПЕРВЫЙ ЭКРАН ГЛАВНОЙ ПО МАКЕТУ (07.09.2026)
   Источник — redesign-2026-09/Main.dc.html, блок «первый экран».

   Против прежней версии поменялись тексты, кнопки и состав формы;
   фон оставлен прежний (кремовая плашка + фотография справа) — клиент
   просил трогать только содержимое.

   Что нового против прежней раскладки:
   · два действия кнопками — «Открыть каталог» и «Готовые комплекты».
     Раньше под подзаголовком стояли четыре нейтральных чипа, ни один из
     них никуда не вёл, и с первого экрана уйти в каталог было нечем;
   · чипы заменены списком из четырёх фактов с подписями: в них те же
     44-ФЗ и доставка, но сказано, что именно это значит для заказчика;
   · в форме появились учреждение и вложение — менеджеру нужны оба,
     раньше спецификацию приходилось запрашивать вторым письмом.

   Стили жили инлайном в footer.tpl (в каждой странице сайта). Перенесены
   сюда — в шаблоне остался только скрипт отправки.
   ====================================================================== */

.tdpd-hero{position:relative;overflow:hidden;border-radius:16px;margin:0 0 32px;
  padding:40px 44px;background-color:#F6EBD5}
.tdpd-hero::after{content:'';position:absolute;top:0;right:0;bottom:0;width:56%;
  background:url('/image/catalog/!33434/hero-bg.jpg') no-repeat right center;
  background-size:cover;opacity:.50;z-index:0;pointer-events:none;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 30%);
  mask-image:linear-gradient(to right,transparent,#000 30%)}

/* Телефон и планшет: картинка уходит за правую кромку (её режет
   overflow:hidden у .tdpd-hero), маска гасит левые 62% — заголовок ложится
   на чистый бежевый, а не на ящики стеллажа. Правило стоит ЗДЕСЬ, а не в
   мобильном блоке выше: там его перебивало общее правило над ним. */
@media (max-width:992px){
  .tdpd-hero::after{left:auto;right:-26%;width:72%;opacity:.42;
    -webkit-mask-image:linear-gradient(to right,transparent,#000 62%);
    mask-image:linear-gradient(to right,transparent,#000 62%)}
}

.tdpd-hero *{box-sizing:border-box}

.tdpd-hero-grid{position:relative;z-index:1;display:grid;
  grid-template-columns:minmax(0,1fr) 430px;gap:40px;align-items:start}
.tdpd-hero-l{display:flex;flex-direction:column;align-items:flex-start;gap:22px}

/* Плашка производства: в макете белая с синей точкой, а не голубая. */
.tdpd-badge{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 14px;
  border-radius:999px;background:#fff;color:#2F55D4;font-size:13px;font-weight:500;
  margin:0}
.tdpd-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:#2F55D4}

.tdpd-h{font-size:42px;font-weight:700;line-height:1.1;letter-spacing:-.02em;
  color:#20242C;margin:0}
.tdpd-sub{font-size:17px;line-height:1.5;color:#2E3340;margin:0;max-width:560px}

/* --- Два действия ------------------------------------------------------- */
.tdpd-hero-cta{display:flex;flex-wrap:wrap;gap:12px}
.tdpd-cta{display:inline-flex;align-items:center;gap:10px;height:54px;
  border-radius:12px;font-size:16px;font-weight:500;text-decoration:none;
  transition:background-color .15s,border-color .15s}
.tdpd-cta svg{flex:0 0 auto}
.tdpd-cta-1{padding:0 26px;background:#2F55D4;color:#fff}
.tdpd-cta-1:hover,.tdpd-cta-1:focus{background:#2646B0;color:#fff;text-decoration:none}
.tdpd-cta-2{padding:0 22px;background:#fff;border:1px solid #DDE1E8;color:#20242C}
.tdpd-cta-2:hover,.tdpd-cta-2:focus{border-color:#2F55D4;color:#20242C;text-decoration:none}

/* --- Четыре факта ------------------------------------------------------- */
.tdpd-hero-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px 24px;margin:2px 0 0;padding:0;list-style:none;max-width:620px}
.tdpd-hero-facts li{display:flex;gap:10px;margin:0}
.tdpd-hero-facts li::before{content:"";flex:0 0 18px;height:18px;margin-top:3px;
  background:no-repeat center/18px 18px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231E8E5A' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E")}
.tdpd-hero-facts b{display:block;font-size:15px;font-weight:500;color:#20242C;line-height:1.35}
.tdpd-hero-facts span{display:block;font-size:13px;color:#7A756C;line-height:1.35;margin-top:2px}

/* --- Форма -------------------------------------------------------------- */
.tdpd-card{position:relative;z-index:1;background:#fff;border-radius:20px;
  padding:30px 30px 26px;box-shadow:0 18px 40px rgba(32,36,44,.10)}
.tdpd-card-h{font-size:23px;font-weight:600;line-height:1.25;color:#20242C}
.tdpd-card-d{font-size:14px;color:#7A756C;margin:8px 0 20px;line-height:1.45}
.tdpd-card input,.tdpd-card textarea{width:100%;border:1px solid #DDE1E8;border-radius:12px;
  font-size:15px;font-family:inherit;transition:border-color .15s,box-shadow .15s}
.tdpd-card input{height:50px;padding:0 16px;margin-bottom:12px}
.tdpd-card textarea{height:68px;padding:11px 16px;resize:none;margin-bottom:12px}
.tdpd-card input:focus,.tdpd-card textarea:focus{outline:none;border-color:#2F55D4;
  box-shadow:0 0 0 3px rgba(47,85,212,.13)}
.tdpd-card input::placeholder,.tdpd-card textarea::placeholder{color:#A8A29A}
/* Имя и телефон в одну строку — так форма короче на целое поле и целиком
   помещается рядом с текстом, без прокрутки первого экрана. */
.tdpd-card-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}

.tdpd-file{display:flex;align-items:center;gap:10px;min-height:50px;padding:0 16px;
  border:1px dashed #B8BEC9;border-radius:12px;color:#7A756C;font-size:14px;
  font-weight:400;cursor:pointer;margin:0 0 12px;transition:border-color .15s,color .15s}
.tdpd-file:hover{border-color:#2F55D4;color:#2F55D4}
.tdpd-file input[type=file]{position:absolute;width:1px;height:1px;opacity:0;
  overflow:hidden;clip:rect(0 0 0 0)}
.tdpd-file-i{flex:0 0 18px;height:18px;background:no-repeat center/18px 18px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F55D4' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E")}
.tdpd-file-btn{min-width:0}
.tdpd-file-ext{margin-left:auto;flex:0 0 auto;font-size:12px;color:#8C93A0}
/* Имя выбранного файла подменяет подпись, иначе строка не помещается. */
.tdpd-file-name{display:none}
.tdpd-file.is-set{border-style:solid;border-color:#2F55D4;color:#20242C}
.tdpd-file.is-set .tdpd-file-btn,
.tdpd-file.is-set .tdpd-file-ext{display:none}
.tdpd-file.is-set .tdpd-file-name{display:block;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;font-size:14px}

.tdpd-btn{width:100%;height:54px;background:#2F55D4;color:#fff;border:none;
  border-radius:12px;font-size:16px;font-weight:500;font-family:inherit;cursor:pointer;
  transition:background .15s}
.tdpd-hero .tdpd-btn:hover{background:#2646B0 !important}
.tdpd-hero .tdpd-btn:active{background:#20399A !important}
.tdpd-btn:disabled{opacity:.6}

.tdpd-card-foot{display:flex;align-items:center;gap:10px;margin-top:18px;padding-top:18px;
  border-top:1px solid #E8E3D8;font-size:13px;color:#7A756C;line-height:1.35}
.tdpd-card-foot::before{content:"";flex:0 0 18px;height:18px;background:no-repeat center/18px 18px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237A756C' stroke-width='1.8'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E")}
.tdpd-fine{font-size:11px;color:#9A948A;text-align:center;margin-top:10px;line-height:1.4}
.tdpd-ok{color:#1D8F4E;font-size:15px;text-align:center;padding:24px 6px;line-height:1.5}

/* Ноутбуки: карточка формы ужимается раньше, чем ломается сетка.
   Нижняя граница — 993px, а не «до 1199»: с 992 включается мобильная
   раскладка хиро (раздел 08.2), и без нижней границы это правило,
   стоящее ниже в файле, возвращало две колонки на ширине, где форма
   уже не помещается. */
@media (min-width:993px) and (max-width:1199px){
  .tdpd-hero{padding:32px 30px}
  .tdpd-hero-grid{grid-template-columns:minmax(0,1fr) 380px;gap:28px}
  .tdpd-h{font-size:34px}
}

/* Телефон и планшет — та же точка перелома, что у мобильного хиро. */
@media (max-width:992px){
  /* Одна колонка. Базовое правило сетки стоит в файле НИЖЕ мобильного
     блока 08.2 и той же силы — без повтора здесь оно перебивало его на
     любой ширине: текстовая колонка схлопывалась в 0px, а карточка
     формы держала свои 430px. */
  .tdpd-hero-grid{grid-template-columns:1fr;gap:22px}
  .tdpd-hero-l{gap:16px}
  .tdpd-hero-cta{width:100%}
  .tdpd-cta{flex:1 1 100%;justify-content:center;height:50px;font-size:15px}
  .tdpd-hero-facts{grid-template-columns:1fr;gap:12px;max-width:none}
  .tdpd-card{padding:22px 20px 20px}
  .tdpd-card-h{font-size:20px}
  .tdpd-card-2{grid-template-columns:1fr;gap:0}

  /* Плашка переносится на две строки: жёсткая высота обрезала текст. */
  .tdpd-badge{height:auto;min-height:30px;padding:6px 13px;font-size:12.5px;
    line-height:1.3;align-items:flex-start}
  .tdpd-badge::before{flex:0 0 6px;margin-top:5px}

  /* Мобильный блок оставляет поиск, но не вторую пару кнопок: «Открыть
     каталог» шло бы дважды подряд. */
  #tdpd-mob-hero .tdpd-ma{display:none}
  #tdpd-mob-hero{margin-top:14px}
}


/* ======================================================================
   TDPD: ШАПКА СТРАНИЦЫ КАТЕГОРИИ ПЛОТНЕЕ (07.09.2026)

   Замечание клиента: «убавь отступы между названием, хлебными крошками и
   подкатегориями». Замеры до правки на «Игровой мебели», 1440px:
   крошки → заголовок 50px, заголовок → чипы 35px, подпись над чипами
   ещё 30px, чипы → сортировка 20px. Первый товар начинался с 498px.

   Ужимаем только вертикаль шапки списка; сами чипы, их размер и
   раскладку карточек не трогаем.
   ====================================================================== */
@media (min-width:992px){
  /* Класс .content-row держит верхний отступ и на карточке товара, и на
     информационных страницах — поэтому сужаем адресно по классу body,
     который OpenCart ставит от маршрута. */
  body[class*="product-category"] .content-row,
  body[class*="product-search"] .content-row{margin-top:14px}

  body[class*="product-category"] h1.cat-header,
  body[class*="product-search"] h1.cat-header{margin-bottom:14px}

  body[class*="product-category"] .tdpd-subs-row,
  body[class*="product-search"] .tdpd-subs-row{margin-bottom:16px}
}

/* Подпись поля вложения не помещалась в строку карточки: тексту нужно
   258px, а между иконкой и «xlsx, doc, pdf» свободно 230. Ужимаем оба
   кегля и зазор; многоточие — страховка, чтобы подпись при любом шрифте
   обрезалась, а не наезжала на форматы. */
.tdpd-file{font-size:12.5px;gap:8px}
.tdpd-file-btn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.tdpd-file-ext{font-size:11px}


/* ======================================================================
   TDPD: ПЕРВЫЙ ЭКРАН ВО ВСЮ ШИРИНУ + МОБИЛЬНЫЙ ОСТРОВОК (07.09.2026)
   ====================================================================== */

/* --- 1. Полоса первого экрана во всю ширину окна ----------------------
   Макет: background во всю ширину, содержимое — в колонке страницы.
   Контейнер сайта 1200px с полями 15px, то есть содержимое 1170px:
   его и держим, полосу растягиваем полями до 100vw. */
body.common-home main{overflow-x:hidden;overflow-x:clip}
.tdpd-hero{
  margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);
  margin-bottom:40px;border-radius:0;padding:52px 0 58px}
.tdpd-hero-grid{max-width:1170px;margin:0 auto;padding:0 15px}

@media (min-width:993px) and (max-width:1199px){
  .tdpd-hero{padding:40px 0 46px}
  .tdpd-hero-grid{max-width:970px}
}

@media (max-width:992px){
  .tdpd-hero{padding:24px 0 28px;margin-bottom:26px}
  .tdpd-hero-grid{padding:0 16px}
}

/* --- 2. Мобильный островок: только логотип ----------------------------
   Действия все до одного повторяются в нижней панели, поэтому сверху
   остаётся знак и путь на главную. Островок из полосы во всю ширину
   становится таблеткой по центру — тем же стеклом, что нижняя панель. */
@media (max-width:991px){
  .wrapper::before{
    left:50%;right:auto;transform:translateX(-50%);
    width:172px;height:46px;top:8px;border-radius:23px;
    background:rgba(255,255,255,.62);
    -webkit-backdrop-filter:blur(18px) saturate(180%);
    backdrop-filter:blur(18px) saturate(180%);
    border:1px solid rgba(255,255,255,.6);
    box-shadow:0 1px 0 rgba(255,255,255,.75) inset,
               0 10px 30px rgba(32,36,44,.16),
               0 2px 8px rgba(32,36,44,.08)}
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    .wrapper::before{background:rgba(255,255,255,.97)}
  }

  /* Кнопки островка: прячем показ, но оставляем узлы — нижняя панель
     открывает шторки их же нажатием. */
  html body nav#top .mobile-container{visibility:hidden;pointer-events:none}
  html body header.scroll-fix .col-cart{display:none!important}
  html body nav#top{height:46px!important;top:8px!important}
  html body header.scroll-fix{height:46px!important;top:8px!important}

  /* Логотип по центру таблетки. Тема на телефоне делит шапку пополам:
     nav#top занимает левую половину, header.scroll-fix — правую
     (left:188, width:188 при экране 375). Центр правой половины с
     центром таблетки не совпадает, поэтому шапку сперва растягиваем
     на всю ширину. */
  /* Правую половину задаёт не left, а margin-left:50% из темы —
     без его обнуления шапка уезжала за правый край экрана. */
  html body header.scroll-fix{left:0!important;right:0!important;
    width:100%!important;margin-left:0!important;margin-right:0!important}
  html body header.scroll-fix .box,
  html body header.scroll-fix .box-inner,
  html body header.scroll-fix .container{width:100%!important;padding:0!important}
  html body header.scroll-fix .box-inner-inner{
    display:flex;align-items:center;justify-content:center;
    min-height:46px;padding:0}
  html body header.scroll-fix #logo{float:none;margin:0;padding:0;text-align:center}
  html body header.scroll-fix #logo img{max-height:32px;width:auto;margin:0 auto}

  /* Низ таблетки 54px — контент внутренних страниц начинается под ней. */
  .breadcrumbs{margin-top:62px!important}
  /* А первый экран главной идёт от самого верха: островок стеклянный,
     ему нужен фон под собой, иначе он висит над белой полосой в 62px. */
  .tdpd-hero{margin-top:0;padding-top:66px}
}


/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 07.09.2026, вечер
   Строка сортировки в листинге + карточка товара.
   ====================================================================== */

/* --- 1. Строка сортировки: чипы вправо, «Показывать» убрано ------------
   На десктопе .sort-row оставалась бутстраповским блоком: правая ячейка
   уходила во float, а чипы (обычный div в конце строки) ложились слева
   под неё. margin-left:auto у #tdpd-sortchips без флекса не работал.
   «Показывать N» убираем целиком: 60 позиций отдаётся по умолчанию, а
   контрол занимал ровно тот угол, куда переезжают чипы. Правило идёт
   ПОСЛЕ блока «@media (min-width:768px) and (max-width:992px)» из п.6б —
   вес тот же, решает порядок. */
@media (min-width:993px){
  .sort-row{display:flex!important;align-items:center;gap:12px;
    padding-top:0!important;margin-bottom:14px!important}
  .sort-row::before,.sort-row::after{display:none!important}
  .sort-row .left-sort-row,
  .sort-row .right-sort-row{float:none!important;width:auto!important;margin:0!important}
  .sort-row .right-sort-row{order:8}
  .sort-row #tdpd-sortchips{order:9;margin-left:auto;justify-content:flex-end}
}
.sort-row .input-limit-div{display:none!important}

/* --- 2. Красный ховер темы ---------------------------------------------
   theme.css: button:hover{color:#fff;background-color:#cc2121;border-color:#cc2121}.
   Кнопки редизайна задавали в ховере только рамку — фон оставался красным
   (плитка «от 25 шт» на скриншоте клиента). Гасим адресно по компонентам,
   а не общим button:hover: у темы на этом правиле стоят её собственные
   кнопки. */
#tdpd-scale-rows .tdpd-scale-row:hover{
  background-color:#F5F8FF!important;border-color:#2F55D4!important;color:#20242C!important}
#tdpd-scale-rows .tdpd-scale-row:hover span{color:#2F55D4!important}
#tdpd-scale-rows .tdpd-scale-row:hover b{color:#20242C!important}
#tdpd-scale-rows .tdpd-scale-row.is-on:hover{background-color:#EDF1FD!important}
.tdpd-sw-more:hover{
  background-color:transparent!important;border-color:#2F55D4!important;color:#2F55D4!important}
#tdpd-sortchips .tdpd-sortchip:hover{
  background-color:#fff!important;border-color:#2F55D4!important;color:#2F55D4!important}
#tdpd-sortchips .tdpd-sortchip-on:hover,
#tdpd-sortchips .tdpd-sortchip[aria-pressed="true"]:hover{
  background-color:#2F55D4!important;border-color:#2F55D4!important;color:#fff!important}
.tdpd-qty button:hover{
  background-color:#EDF1FD!important;border-color:transparent!important;color:#2F55D4!important}
.tdpd-pick-add:hover,.tdpd-pick-clear:hover{border-color:#2F55D4!important}

/* --- 3. Рекомендации: кнопка не всплывает поверх карточки ---------------
   Тема держит .box-cart в карточке листинга абсолютом с opacity:0 и
   проявляет его по ховеру поверх картинки. В строке «Подойдёт к этому
   товару» карточка горизонтальная, и кнопка ложилась поверх названия и
   цены. Возвращаем её в поток. */
.tdpd-with-list .product-item{position:relative}
.tdpd-with-list .box-cart,
.tdpd-with-list .product-item:hover .box-cart{
  position:static!important;opacity:1!important;visibility:visible!important;
  left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;
  width:auto!important;flex:0 0 auto;margin:0 0 0 auto!important;padding:0!important}
.tdpd-with-list .caption .price{margin:0}
/* Тема где-то ставит .caption flex-direction:column, и при flex-wrap:wrap
   карточка разъезжалась в две колонки: кнопка в одной, название с ценой в
   другой. Сетка не оставляет вариантов: название на всю ширину, под ним
   цена слева и кнопка справа. */
.tdpd-with-list .caption{
  display:grid!important;grid-template-columns:minmax(0,1fr) auto;
  align-items:center;gap:4px 12px;padding:0!important;text-align:left}
.tdpd-with-list .caption h4{grid-column:1/-1;grid-row:1}
.tdpd-with-list .caption .price{grid-column:1;grid-row:2;justify-self:start}
.tdpd-with-list .caption .box-cart{grid-column:2;grid-row:2;justify-self:end}
.tdpd-with-list .box-cart .button-cart{
  height:36px;min-width:0;padding:0 14px;border-radius:9px;
  font-size:13px;font-weight:500;line-height:36px;white-space:nowrap}
.tdpd-with-list .tdpd-qty{height:36px}

/* --- 4. Свотчи: ровный ряд и «ещё N» на той же линии --------------------
   .options-box у темы — блок с инлайн-блоками, а у вариантов ещё и
   margin-top:-5px от темы: образцы стояли на разной высоте, а дашед-кнопка
   «ещё 8» висела выше ряда. Класс tdpd-swbox ставит скрипт всем боксам,
   где есть картиночные варианты. */
#product .options-box.tdpd-swbox{
  display:flex!important;flex-wrap:wrap;align-items:center;gap:8px;margin-top:0}
#product .options-box.tdpd-swbox > .radio.radio-img{
  display:inline-flex!important;align-items:center;
  margin:0!important;padding:0!important;vertical-align:top}
#product .options-box.tdpd-swbox > .radio.radio-img > label{
  display:block!important;margin:0!important;padding:0!important;line-height:0}
#product .options-box.tdpd-swbox .tdpd-sw-more{margin:0!important;height:42px}
/* display:inline-flex!important выше перебивал .tdpd-sw-hid{display:none} из
   блока свотчей — под кнопкой «ещё 8» показывались все двенадцать образцов.
   Возвращаем скрытие явно, тем же весом. */
#product .options-box.tdpd-swbox > .radio.radio-img.tdpd-sw-hid{display:none!important}
#product .options-box.tdpd-swbox.tdpd-sw-open > .radio.radio-img.tdpd-sw-hid{display:inline-flex!important}

/* --- 5. Ростовая группа по макету --------------------------------------
   Было: карточка внутри ещё одной рамки (правило .radio.tdpd-product-radio
   из блока опций рисовало свою), текст по центру и весь одним серым
   #4F5F6F (.product-info-li span из темы перебивал .tdpd-rg-num). Радиокружок
   был спрятан, хотя в макете он есть.
   Ширина колонок — auto-fit: колонка карточки бывает и 420px, и 330px, а
   жёсткие repeat(3) на узкой давали 100px плитки. */
#product-info-right #product .options-box.tdpd-rg-box{
  display:grid!important;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px}
#product-info-right #product .options-box.tdpd-rg-box .radio.tdpd-product-radio{
  display:block!important;margin:0!important;padding:0!important;
  min-height:0!important;border:0!important;border-radius:0!important;
  background:none!important;font-size:0!important;line-height:0!important}
#product-info-right #product .options-box.tdpd-rg-box .radio input[type="radio"]{
  position:static!important;opacity:1!important;pointer-events:auto!important;
  width:16px!important;height:16px!important;margin:1px 0 0!important;
  flex:none!important;accent-color:#2F55D4;cursor:pointer}
#product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card{
  display:grid!important;grid-template-columns:16px minmax(0,1fr);
  column-gap:9px;row-gap:3px;align-items:start;
  width:100%!important;min-width:0!important;max-width:none!important;box-sizing:border-box;
  margin:0!important;padding:12px 14px!important;
  border:1px solid #E8E3D8!important;border-radius:12px;background:#fff;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-weight:400!important;
  text-align:left;cursor:pointer;box-shadow:none;
  transition:border-color .15s ease, background-color .15s ease}
#product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card > *{grid-column:2}
#product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card > input{
  grid-column:1;grid-row:1}
#product-info-right #product .options-box.tdpd-rg-box .tdpd-rg-num{
  font-size:14.5px!important;font-weight:600!important;line-height:1.25!important;
  color:#20242C!important}
#product-info-right #product .options-box.tdpd-rg-box .tdpd-rg-sub{
  font-size:12.5px!important;font-weight:400!important;line-height:1.35!important;
  color:#6E7788!important}
#product-info-right #product .options-box.tdpd-rg-box .tdpd-rg-seat{
  font-size:12.5px!important;font-weight:400!important;line-height:1.35!important;
  color:#9AA0AC!important}
#product-info-right #product .options-box.tdpd-rg-box .tdpd-rg-price{
  margin-top:3px;font-size:15px!important;font-weight:600!important;
  line-height:1.25!important;color:#20242C!important}
#product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card:hover{
  border-color:#B8C2DA!important}
#product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card.tdpd-rg-on{
  border-color:#2F55D4!important;background:#F5F7FF;
  box-shadow:inset 0 0 0 1px #2F55D4}

/* --- 6. Опции-список → выпадающий список -------------------------------
   Три варианта «Мебель» занимали 170px высоты над ценой. Радиокнопки
   остаются в разметке (их слушают oct_update_prices_opt и пересчёт
   картинок), список только прячется — выбор кладётся кликом по тому же
   input, поэтому все обработчики темы срабатывают как раньше. */
#product .options-box.tdpd-oselbox{margin-top:0}
#product .options-box.tdpd-oselbox > .radio{display:none!important}
.tdpd-osel{position:relative;width:100%;font-family:"Rubik","Segoe UI",Arial,sans-serif}
.tdpd-osel-btn{
  display:flex!important;align-items:center;gap:10px;width:100%;height:48px;
  margin:0;padding:0 14px;border:1px solid #E2E4E9!important;border-radius:12px;
  background:#fff!important;color:#20242C!important;
  font-size:14px;font-weight:400;text-align:left;cursor:pointer;
  transition:border-color .15s ease}
.tdpd-osel-btn:hover{
  background-color:#fff!important;border-color:#B8C2DA!important;color:#20242C!important}
.tdpd-osel.is-open > .tdpd-osel-btn{border-color:#2F55D4!important}
.tdpd-osel-cur{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tdpd-osel-price{flex:0 0 auto;font-weight:600;white-space:nowrap}
.tdpd-osel-caret{
  flex:0 0 auto;width:9px;height:9px;margin:-4px 2px 0 2px;
  border-right:2px solid #98A2B3;border-bottom:2px solid #98A2B3;
  transform:rotate(45deg);transition:transform .15s ease}
.tdpd-osel.is-open .tdpd-osel-caret{transform:rotate(-135deg);margin-top:3px}
.tdpd-osel-list{
  display:none;position:absolute;z-index:40;top:calc(100% + 6px);left:0;right:0;
  max-height:290px;overflow-y:auto;padding:6px;
  border:1px solid #E2E4E9;border-radius:12px;background:#fff;
  box-shadow:0 14px 30px rgba(20,24,34,.15)}
.tdpd-osel.is-open .tdpd-osel-list{display:block}
.tdpd-osel-i{
  display:flex!important;align-items:center;gap:10px;width:100%;
  margin:0;padding:9px 10px;border:0!important;border-radius:9px;
  background:none!important;color:#20242C!important;
  font-size:14px;font-weight:400;line-height:1.3;text-align:left;cursor:pointer}
.tdpd-osel-i + .tdpd-osel-i{margin-top:2px}
.tdpd-osel-i:hover{background-color:#F3F5FB!important;color:#20242C!important}
.tdpd-osel-i.is-on{background-color:#EDF1FD!important;color:#20242C!important;font-weight:500}
.tdpd-osel-i > span{flex:1 1 auto;min-width:0}
.tdpd-osel-i > b{flex:0 0 auto;margin-left:auto;font-weight:600;white-space:nowrap}
.tdpd-osel-i[disabled]{opacity:.4;cursor:not-allowed}

/* --- 7. Старая цена ----------------------------------------------------
   #product .tdpd-buybox > .price span{font-size:34px!important} ловил и
   .autocalc-product-price внутри .price-old: перечёркнутая цена печаталась
   тем же кеглем, что и основная, и вставала с ней в один ряд. */
#product .tdpd-buybox > .price .price-old,
#product .tdpd-buybox > .price .price-old span{
  font-size:18px!important;font-weight:400!important;line-height:1.1!important;
  letter-spacing:0!important;color:#8C93A0!important;text-decoration:line-through!important}

/* --- 8. Липкая галерея на десктопе -------------------------------------
   Правая колонка карточки — 1270px, левая с галереей — 540px: две трети
   пути вниз слева пустое поле. Прилипание считается внутри .row, ниже её
   низа галерея уезжает как обычно. Верхний отступ — 90px липкой шапки
   плюс воздух. */
@media (min-width:992px){
  /* Колонки карточки — бутстраповские float'ы, а на плавающем элементе
     position:sticky в Chromium не срабатывает (проверено на боевой:
     float:none — прилипает, float:left — нет). Разворачиваем строку во
     flex: ширины у колонок свои (58/42%), раскладка та же, float гасим.
     id в селекторе не ради веса: product.tpl печатает инлайновый <style>
     с `#fixed__affix{top:20px}` — остаток отключённого affix'а темы, по
     классу его не перебить, и галерея прилипала под шапку. */
  .product-info > .row{display:flex;align-items:flex-start;flex-wrap:nowrap}
  .product-info > .row > .left-info,
  .product-info > .row > #product-info-right{float:none!important}
  .product-info > .row > .left-info,
  .product-info > .row > #fixed__affix.left-info{
    position:sticky;top:104px;z-index:1;align-self:flex-start}
}


/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 07.09.2026, вечер — часть 2
   ====================================================================== */

/* --- 1. «Собирают вместе с этим» по макету ------------------------------
   В макете это строка «фото · название · цена · контурная кнопка», без
   степпера: количество набирают уже в смете. Кнопка была залита синим на
   всю ширину и перетягивала внимание с самого товара. */
.tdpd-with-col > h2{margin-bottom:4px}
.tdpd-with-sub{margin:0 0 16px;font-size:13px;line-height:1.45;color:#8A8578}
.tdpd-with-list .product-item{gap:14px;padding:12px 14px;border-radius:14px}
.tdpd-with-list .image{flex:0 0 56px;width:56px;height:56px;border-radius:12px;background:#F7F1E4}
.tdpd-with-list .caption{grid-template-columns:minmax(0,1fr) auto;gap:2px 14px}
.tdpd-with-list .caption h4{grid-column:1;grid-row:1;align-self:end;font-weight:600}
.tdpd-with-list .caption .price{
  grid-column:1;grid-row:2;align-self:start;
  font-size:13px!important;font-weight:400!important;color:#8A8578!important}
.tdpd-with-list .caption .box-cart{grid-column:2;grid-row:1 / span 2;align-self:center}
/* Степпер в макете нет — количество правится в смете. */
.tdpd-with-list .tdpd-qty{display:none!important}
.tdpd-with-list .box-cart .button-cart{
  height:38px;padding:0 18px;border-radius:10px;line-height:36px;
  background:#fff!important;color:#2F55D4!important;border:1px solid #C7D2F7!important;
  font-size:13.5px;font-weight:500;box-shadow:none!important;
  transition:background-color .15s ease, color .15s ease, border-color .15s ease}
.tdpd-with-list .box-cart .button-cart:hover{
  background:#2F55D4!important;color:#fff!important;border-color:#2F55D4!important}

/* --- 2. Описание и отзывы под характеристиками -------------------------- */
.tdpd-specrow .tdpd-block{margin-top:34px}
.tdpd-specrow .tdpd-block > h2{
  margin:0 0 14px;font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:22px;font-weight:600;line-height:1.25;color:#20242C;text-transform:none}
.tdpd-block-body{font-size:14px;line-height:1.65;color:#3B4252}
.tdpd-block-body > p:first-child{margin-top:0}
.tdpd-block-body p{margin:0 0 10px}
.tdpd-block-body ul,.tdpd-block-body ol{margin:0 0 10px;padding-left:20px}
.tdpd-block-body img{max-width:100%;height:auto}
.tdpd-block-body table{max-width:100%}
/* Форма отзыва внутри — узкая колонка, растягиваем поля по месту. */
.tdpd-rev .tdpd-block-body .form-control{max-width:100%}
.tdpd-rev .tdpd-block-body h3,
.tdpd-rev .tdpd-block-body legend{font-size:16px;font-weight:600;color:#20242C}
/* Внутри перенесённых панелей свои заголовки («Написать отзыв») — правило
   .tdpd-specrow h2 раздувало их до 22px наравне с «Характеристиками». */
.tdpd-block-body h2,.tdpd-block-body h3{
  font-size:16px!important;font-weight:600!important;line-height:1.3!important;
  margin:20px 0 10px!important;color:#20242C!important}
.tdpd-block-body > h2:first-child,.tdpd-block-body > h3:first-child{margin-top:0!important}

/* --- 3. Плашка «Добавлено в смету» под кнопкой шапки --------------------
   Вместо панели на пол-экрана. Висит на #cart, поэтому едет вместе с
   липкой шапкой и не требует пересчёта координат при прокрутке. */
#cart{position:relative}
.tdpd-added{
  position:absolute;z-index:1200;top:calc(100% + 10px);right:0;
  display:flex;align-items:center;gap:10px;
  min-width:260px;padding:11px 14px;
  border:1px solid #D8E0F6;border-radius:12px;background:#fff;
  box-shadow:0 14px 30px rgba(20,24,34,.16);
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:13.5px;color:#20242C;
  opacity:0;visibility:hidden;transform:translateY(-6px);pointer-events:none;
  transition:opacity .18s ease, transform .18s ease, visibility .18s}
.tdpd-added.is-on{opacity:1;visibility:visible;transform:none;pointer-events:auto}
.tdpd-added-ok{
  flex:0 0 20px;display:flex;align-items:center;justify-content:center;
  width:20px;height:20px;border-radius:50%;background:#1F9D55;color:#fff;
  font-size:11px;line-height:1}
.tdpd-added-t{flex:1 1 auto;white-space:nowrap}
.tdpd-added-a{
  flex:0 0 auto;color:#2F55D4!important;font-weight:500;text-decoration:none;white-space:nowrap}
.tdpd-added-a:hover{text-decoration:underline}
@media (max-width:767px){
  .tdpd-added{position:fixed;top:auto;bottom:78px;left:12px;right:12px;min-width:0}
}

/* --- 4. Кнопка на время показывает «Добавлено» -------------------------- */
.tdpd-btn-added,
.tdpd-btn-added:hover{
  background:#1F9D55!important;border-color:#1F9D55!important;color:#fff!important}


/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 07.09.2026, вечер — часть 3
   Мобильная шапка и липкая колонка сметы.
   ====================================================================== */

/* --- 1. Смета: «Итого» не уезжает под шапку ----------------------------
   Колонка прилипала на 16px от верха окна, а шапка на десктопе липкая и
   высотой 90px — сумма и кнопка «Запросить счёт» оказывались под ней. */
@media (min-width:992px){
  .tdpd-sm-side{top:104px}
}

/* --- 1б. Мобильная строка сортировки: чипы отдельной строкой -----------
   .sort-row на телефоне — flex с nowrap: чипы (width:100% из блока 6б)
   сжимались до 221px и уезжали под кнопку «Фильтр». Разрешаем перенос и
   отправляем чипы во вторую строку целиком. */
@media (max-width:992px){
  .sort-row{flex-wrap:wrap!important}
  .sort-row #filter-button{order:1}
  .sort-row .right-sort-row{order:2}
  .sort-row .left-sort-row{order:3}
  #tdpd-sortchips{order:9;flex:1 0 100%;min-width:100%}
}

/* --- 2. Мобильная шапка: каталог, логотип, звонок ----------------------
   Островок из одного логотипа: все действия ушли в нижнюю панель, и
   верх экрана читался как пустая плашка. Возвращаем в таблетку главное —
   вход в каталог и звонок. Название компании отдельно не пишем: оно
   нарисовано на самом логотипе.
   Кнопки строит tdpdMobileHead в tdpd.js: «Каталог» нажимает тот же
   #menu-mobile-toggle, что и нижняя панель, поэтому открывается наша
   шторка, а не штатная. */
@media (max-width:991px){
  /* Таблетка во всю ширину минус поля. Ширину/центрирование из блока
     «мобильный островок» перебиваем целиком: там transform:translateX. */
  .wrapper::before{
    left:10px;right:10px;width:auto;transform:none;
    height:52px;top:8px;border-radius:26px}

  html body nav#top{height:52px!important;top:8px!important}
  html body header.scroll-fix{height:52px!important;top:8px!important}

  html body header.scroll-fix .box-inner-inner{
    display:flex;align-items:center;justify-content:space-between;gap:8px;
    min-height:52px;padding:0 8px 0 10px}

  /* Логотип из центра таблетки — по месту между кнопками. */
  html body header.scroll-fix #logo{
    flex:1 1 auto;order:2;min-width:0;margin:0;text-align:center}
  html body header.scroll-fix #logo img{max-height:34px;width:auto;margin:0 auto}

  .tdpd-mh-cat{
    order:1;flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;
    height:38px;padding:0 14px;margin:0;border:0;border-radius:19px;
    background:#2F55D4;color:#fff;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:13.5px;font-weight:500;line-height:1;white-space:nowrap;
    text-decoration:none;cursor:pointer}
  .tdpd-mh-cat:hover,.tdpd-mh-cat:focus,.tdpd-mh-cat:active{
    background:#2647B8!important;border-color:#2647B8!important;color:#fff!important;
    text-decoration:none}
  .tdpd-mh-cat svg{flex:0 0 auto}

  .tdpd-mh-tel{
    order:3;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
    width:38px;height:38px;margin:0;border:0;border-radius:50%;
    background:#EDF1FD;color:#2F55D4!important;text-decoration:none}
  .tdpd-mh-tel:hover,.tdpd-mh-tel:focus{
    background:#DCE4FB!important;color:#2F55D4!important;text-decoration:none}

  /* Экран 360px и уже: подпись у кнопки каталога прячется, остаётся знак. */
  @media (max-width:359px){
    .tdpd-mh-cat{padding:0 11px}
    .tdpd-mh-cat span{display:none}
  }

  /* Низ таблетки — 60px, контент начинается под ней. */
  .breadcrumbs{margin-top:68px!important}
  .tdpd-hero{margin-top:0;padding-top:72px}
}


/* ======================================================================
   TDPD: ГЛАВНАЯ: ОТСТУПЫ И КАРТИНКИ КОМПЛЕКТОВ (07.09.2026, вечер)
   ====================================================================== */

/* --- 1. Воздух перед кремовой лентой -----------------------------------
   Нижний отступ стены разделов был занулён, чтобы не копить 112px, но
   получилось хуже: карточки каталога упирались в цветную полосу без
   единого пикселя — смена фона резала их по нижней кромке. 40px хватает,
   чтобы полоса читалась как следующая секция, а не как обрез. */
.cat-wall-row{margin-bottom:40px!important}

/* --- 2. Две ленты одного цвета подряд не удваивают поля -----------------
   «Оснащение под ключ» и блок цифр — обе .tdb-cream, между ними
   набегало 56+56 и ещё разделительная линия по одинаковому фону: на
   экране это выглядело как пустой кусок страницы. Стык схлопываем. */
.tdb-cream + .tdb-cream,
.tdb-warm + .tdb-warm,
.tdb-white + .tdb-white,
.tdb-dark + .tdb-dark{border-top:0!important;padding-top:0!important}

/* --- 3. Картинки комплектов целиком ------------------------------------
   object-fit:cover резал мебель по верхней и нижней кромке: на плитке
   оставалась середина шкафа без ножек и без верха.
   Пять фото из шести — каталожные вырезки на белом 320x320 и 550x550,
   поэтому плашка становится белой: при contain белый фон снимка сливается
   с ней и получается витрина, а не квадрат чужого цвета посреди кремовой
   заливки. Чередование кремовый/голубой по этой же причине снято.
   Высота 200px — при ней квадратный снимок рисуется 176px и не мельчает. */
.tdb-kit-ph{height:200px;background:#fff!important;border-bottom:1px solid #F0EADC}
.tdb-kit:nth-child(even) .tdb-kit-ph{background:#fff!important}
.tdb-kit-ph img{object-fit:contain;padding:12px}
@media (max-width:991px){
  .tdb-kit-ph{height:168px}
}


/* ======================================================================
   TDPD: ЛЕНТА «БЮДЖЕТНЫЙ ГОД» ПЕРЕД ФУТЕРОМ (07.09.2026)
   Источник — Main.dc.html, тёмная лента над футером. Разметка в
   common/footer.tpl, поэтому лента есть на всех страницах.
   ====================================================================== */
.tdpd-fy{background:#20242C;color:#fff;padding:56px 0}
.tdpd-fy .container{max-width:1200px}
.tdpd-fy-in{display:flex;gap:56px;align-items:center}
.tdpd-fy-l{flex:0 0 420px;width:420px;min-width:0}
.tdpd-fy-eye{
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#8C93A0}
.tdpd-fy-h{
  margin:12px 0 0;font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:29px;font-weight:500;line-height:1.25;color:#fff;text-transform:none}
.tdpd-fy-p{margin:14px 0 0;font-size:15px;line-height:1.6;color:#B8BEC9}
.tdpd-fy-btn{
  display:inline-flex;align-items:center;height:52px;margin-top:24px;padding:0 26px;
  border-radius:12px;background:#fff;color:#20242C!important;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:16px;font-weight:500;
  text-decoration:none;transition:background-color .15s ease}
.tdpd-fy-btn:hover,.tdpd-fy-btn:focus{
  background:#EDF1FD!important;color:#20242C!important;text-decoration:none}
.tdpd-fy-r{
  flex:1 1 auto;min-width:0;display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.tdpd-fy-step{border:1px solid #2E3340;border-radius:16px;padding:22px;min-width:0}
.tdpd-fy-step i{
  display:flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:10px;background:#2F55D4;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:15px;font-weight:600;font-style:normal;color:#fff}
.tdpd-fy-step b{
  display:block;margin-top:16px;font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:16px;font-weight:500;line-height:1.3;color:#fff}
.tdpd-fy-step span{
  display:block;margin-top:8px;font-size:13px;line-height:1.5;color:#8C93A0}

/* Ниже 1200px четыре шага в одну строку становятся по 150px и текст
   рассыпается по три слова в строку — переходим на две колонки. */
@media (max-width:1199px){
  .tdpd-fy-in{flex-direction:column;align-items:stretch;gap:32px}
  .tdpd-fy-l{flex:1 1 auto;width:auto}
  .tdpd-fy-h br{display:none}
  .tdpd-fy-r{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:600px){
  .tdpd-fy{padding:40px 0}
  .tdpd-fy-h{font-size:24px}
  .tdpd-fy-r{grid-template-columns:1fr;gap:12px}
  .tdpd-fy-step{padding:16px 18px}
  .tdpd-fy-step b{margin-top:12px}
  .tdpd-fy-btn{width:100%;justify-content:center}
}
/* На телефоне под футером висит нижняя панель — лента не должна
   упираться в неё вплотную. */
@media (max-width:767px){
  .tdpd-fy{padding-bottom:32px}
}


/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 08.09.2026
   Мобильная шапка, карточка товара, фильтр по макету, скидки, смета,
   отзывы, страницы «Контакты» и «Как оформить заказ».
   ====================================================================== */

/* --- 1. Мобильная шапка: воздух по краям таблетки ----------------------
   Таблетка `.wrapper::before` идёт от 10px до ширины−10px, а внутренние
   поля строки были 10/8 — кнопка «Каталог» вставала ровно на кромку
   таблетки, а кружок звонка вылезал за неё на пару пикселей. 20px с обеих
   сторон дают те же 10px воздуха внутри таблетки, что и в макете. */
@media (max-width:991px){
  html body header.scroll-fix .box-inner-inner{padding:0 20px!important}

  /* --- 2. Кнопка «Каталог» не ловила нажатия -------------------------
     Штатная мобильная полоса темы `nav#top` (свои иконки меню и поиска)
     лежит поверх шапки: position:fixed, z-index 1040 против 121 у самой
     шапки, ширина 113px — ровно поверх нашей кнопки. Видно её не было
     (иконочный шрифт не отрисовывается), поэтому кнопка выглядела просто
     неработающей. Убрать полосу нельзя: внутри неё живут #menu-mobile-toggle
     и #search-mobile-toggle, которые мы жмём программно из нижней панели и
     из шапки, а .click() срабатывает и на невидимом узле. Поэтому не
     прячем, а делаем прозрачной для нажатий. */
  /* ПРАВКА 09.09.2026. Было `opacity:0` на всей полосе — и вместе с ней
     гасли шторки, которые лежат ВНУТРИ неё: #menu-mobile, #info-mobile и
     #msrch это дети nav#top. Поиск из нижней панели открывался по-честному
     (display:block, fixed, 375×812, z-index 10000, фокус в поле), но не
     рисовался, а html.noscroll из темы замораживал прокрутку — со стороны
     «кнопка не работает и страница зависла». Гасим полосу иконок, а не
     родителя; нажатия внутри шторок возвращаем. */
  html body nav#top{background:transparent!important;pointer-events:none!important}
  html body nav#top > .mobile-container{opacity:0!important}
  html body nav#top *{pointer-events:none!important}
  html body nav#top .m-panel-box,
  html body nav#top .m-panel-box *{pointer-events:auto!important}

  /* --- 3. Хлебные крошки не режутся о левый край ---------------------
     responsive.css темы (стр. 856) сдвигает первый пункт на −17px: это
     компенсация иконки домика, которую наш скрипт заменяет словом
     «Главная». В итоге у слова срезало первую букву.
     Заодно снимаем `word-break:break-all` оттуда же — он рвал названия
     разделов посреди слова. */
  .breadcrumb > li:first-child{margin-left:0!important}
  .breadcrumb > li{word-break:normal!important;overflow-wrap:anywhere}
}

/* --- 4. Карточка товара: лишний радиокружок в углу плитки --------------
   У темы `.custom-radio` рисует свой переключатель двумя абсолютно
   позиционированными псевдоэлементами (::after — кольцо, ::before — точка).
   В плитках ростовой группы и в свёрнутых опциях сам input показан как
   есть (accent-color), а псевдоэлементы позиционируются от плитки и
   вылезают в её левый верхний угол — тот самый «лишний кружок». */
#product .options-box .custom-radio::before,
#product .options-box .custom-radio::after,
#product .options-box .custom-checkbox::before,
#product .options-box .custom-checkbox::after{display:none!important;content:none!important}

/* --- 5. Выпадающий список опций не должен резаться ---------------------
   `overflow:hidden` на карточке опций стояло ради скруглённых углов
   кремовой шапки — из-за него список вариантов обрезался по нижней кромке
   блока, видно было две строки из восьми. Углы шапке задаём отдельно,
   а карточке разрешаем выпускать список наружу. У правой колонки товара
   тема держит `overflow:auto` (клиринг флоатов) — на десктопе колонки уже
   переведены во flex, флоатов там нет, поэтому тоже отпускаем. */
#product .tdpd-optbox{overflow:visible}
#product .tdpd-optbox .options-header{border-radius:15px 15px 0 0}
#product-info-right.product-info-details{overflow:visible}
.tdpd-osel-list{max-height:340px}

/* --- 6. Фильтр товаров по макету (Katalog.dc.html) --------------------
   Было: холодная серая гамма (#e9eaee, #f0f1f5), шапка белая, маркер
   свёртки «плюс-минус», счётчик значений серой пилюлей, поля цены под
   ползунком. В макете фильтр — карточка тёплой гаммы каталога: кремовая
   шапка, разделители #E8E3D8, шеврон, счётчик простым серым текстом,
   поля цены НАД ползунком. */
#tdpd-ismobile{border:1px solid #E8E3D8;border-radius:16px}
#tdpd-ismobile .box-heading{
  padding:16px 18px;background:#FAF6EC;border-bottom:1px solid #E8E3D8;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:16px;font-weight:500}
#tdpd-ismobile .inner-box{border-top:1px solid #E8E3D8}
#tdpd-ismobile .inner-box[data-type="option"] > div + div,
#tdpd-ismobile .inner-box[data-type="attribute"] > div + div,
#tdpd-ismobile .inner-box[data-type="standard"] > div + div{border-top:1px solid #E8E3D8}
#tdpd-ismobile a.list-group-item.item-name{padding:16px 44px 14px 18px}
#tdpd-ismobile a.list-group-item.item-name .name{
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;font-weight:500}
#tdpd-ismobile .list-group-item.item-content{padding:0 18px 16px}

/* Маркер свёртки — шеврон, как в макете. Рисуем одним псевдоэлементом:
   уголок из двух границ, поворот на 45° вниз и на −135° вверх. */
#tdpd-ismobile a.list-group-item .link{width:16px;height:16px;margin-top:-8px;right:18px}
#tdpd-ismobile a.list-group-item .link::before{
  content:"";position:absolute;top:3px;left:3px;width:8px;height:8px;
  background:none;border:0;border-right:2px solid #8C93A0;border-bottom:2px solid #8C93A0;
  border-radius:1px;transform:rotate(45deg);transition:transform .18s}
#tdpd-ismobile a.list-group-item .link::after{display:none}
#tdpd-ismobile .expanded > .item-title .link::before{top:6px;transform:rotate(-135deg)}
#tdpd-ismobile a.list-group-item.item-name:hover .link::before{border-color:#2F55D4}

/* Строки значений: квадрат 18px со скруглением 5px и рамкой 2px. */
#tdpd-ismobile .item-content label{padding:9px 42px 9px 28px;font-size:13.5px;color:#3B4252}
#tdpd-ismobile .item-content label::before{
  top:10px;width:18px;height:18px;border:2px solid #DDE1E8;border-radius:5px;background:#fff}
#tdpd-ismobile .item-content input[type="checkbox"]:checked + label::before{
  border-color:#2F55D4;background:#2F55D4 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") no-repeat center;
  background-size:11px 11px}
#tdpd-ismobile .item-content input[type="radio"]:checked + label::before{border:5px solid #2F55D4}

/* Счётчик — простой серый текст справа, без пилюли. */
#tdpd-ismobile .tdpd-filter-total-label{
  top:11px;right:2px;min-width:0;padding:0;background:transparent;
  font-size:12px;font-weight:400;color:#8C93A0}
#tdpd-ismobile .item-content input:checked + label + .tdpd-filter-total-label{color:#2F55D4}
#tdpd-ismobile .tdpd-filter-total-label.label-danger{
  min-width:20px;padding:1px 5px;background:#FBEAEA;color:#C0392B}

/* Цена: поля над ползунком, как в макете. */
#tdpd-ismobile .price-item{display:flex;flex-direction:column}
#tdpd-ismobile .price-item > .row{order:1;margin-top:2px}
#tdpd-ismobile .price-item > #tdpd-price-slider{order:2;margin:20px 9px 4px}
#tdpd-ismobile .price-item > .checkbox{order:3;margin-top:10px}
#tdpd-ismobile input.tdpd-inp-pr-filter{
  height:42px;padding:0 12px;border:1px solid #DDE1E8;border-radius:10px;
  line-height:40px;text-align:left}
#tdpd-ismobile #tdpd-price-slider{background:#E8E3D8}

/* Выбранные значения — кремовой шапкой, а не голубой. */
#tdpd-ismobile #tdpd-selected-values{background:#FAF6EC;border-bottom:1px solid #E8E3D8}
#tdpd-ismobile #tdpd-selected-values .checkbox{background:#EDF1FD}
#tdpd-ismobile #button-reset{border-color:#DDE1E8}

/* --- 6а. Фильтр лаконичнее (25.09.2026) ---------------------------------
   · Рамка на `#filter-column` (блок 4304) рисовалась и тогда, когда колонка
     пуста: коробка фильтра лежит рядом с ней, а не внутри, — над фильтром
     висела линия в 2px. Рамка есть у самой коробки, колонке она не нужна.
   · Выбранное — чипами над списком (`#tdpd-fchips`), в шапке фильтра
     ссылка «Сбросить»; блок «Выбранные значения» из колонки убран.
   · Красный «×» у отмеченной строки лишний — галочка снимается сама. */
@media (min-width:992px){
  body.tdpd-cat-2col #column-left #filter-column{border:0;border-radius:0;overflow:visible;background:none}
}
#tdpd-ismobile .box-heading{display:flex;align-items:center;gap:12px}
#tdpd-ismobile .tdpd-f-title{flex:1 1 auto;min-width:0}
#tdpd-ismobile .tdpd-f-reset{flex:none;padding:0;border:0;background:none;font:inherit;font-size:13px;font-weight:400;color:#2F55D4;cursor:pointer}
#tdpd-ismobile .tdpd-f-reset:hover{color:#24409E;text-decoration:underline}
#tdpd-ismobile .tdpd-f-reset[hidden]{display:none}
#filter-mobile #tdpd-ismobile .tdpd-f-reset{margin-right:34px}
#tdpd-ismobile .inner-box .item-content .tdpd-filter-total-label.label-danger{display:none}
#tdpd-ismobile .price-item > .checkbox:has(> input:disabled){display:none}
#tdpd-ismobile .item-content label .tdpd-rost{margin-left:6px;font-size:12px;font-weight:400;color:#8C93A0;white-space:nowrap}

/* свёрнутый блок прячем правилом сильнее, чем `.price-item{display:flex}` */
#tdpd-product-filter-data :not(.expanded) > .item-content{display:none}
#tdpd-ismobile a.list-group-item.item-name:hover .link::before{background:none}
/* `#tdpd-fchips` в селекторах — иначе `button:hover` темы красит текст в белый */
#tdpd-fchips .tdpd-fchip:hover,#tdpd-fchips .tdpd-fchip:focus{background:#DCE4FB;color:#24409E;border:0;outline:0}
#tdpd-fchips .tdpd-fchips-reset:hover,#tdpd-fchips .tdpd-fchips-reset:focus{background:none;color:#20242C;border:0}
#tdpd-ismobile .tdpd-f-reset:hover,#tdpd-ismobile .tdpd-f-reset:focus{background:none;border:0}
#tdpd-fchips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 16px}
#tdpd-fchips:empty{display:none}
.tdpd-fchip{display:inline-flex;align-items:center;gap:8px;max-width:100%;height:34px;padding:0 12px 0 14px;
  border:0;border-radius:999px;background:#EDF1FD;font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:13px;line-height:1;color:#2F55D4;cursor:pointer;transition:background-color .15s}
.tdpd-fchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tdpd-fchip svg{flex:none;opacity:.65}
.tdpd-fchip:hover{background:#DCE4FB}
.tdpd-fchip:hover svg{opacity:1}
.tdpd-fchips-reset{height:34px;padding:0 6px;border:0;background:none;font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:13px;color:#8C93A0;cursor:pointer}
.tdpd-fchips-reset:hover{color:#20242C;text-decoration:underline}

/* --- 7. Листинг: скидка должна быть видна ------------------------------
   Замечание клиента: «на карточке плохо видно товары со скидкой». Плашка
   темы `.pro-label.sale` была мелкой и в холодной гамме — на фото она
   терялась. В макете (Tovar.dc.html) это оранжевый прямоугольник
   #E0531B, 13px/600. Заодно перечёркнутая цена становится читаемой:
   раньше она шла тем же серым 13px, что и подпись артикула. */
/* Селектор намеренно без предков: плашка живёт в `.image` и в листинге, и
   в каруселях, и в блоке «Собирают вместе с этим», куда карточки переносит
   скрипт, — при заходе через #res-products половина мест оставалась синей. */
.pro-label.sale,
.pro-label.special{
  display:inline-flex!important;align-items:center;height:26px;padding:0 10px;
  border:0!important;border-radius:8px!important;
  background:#E0531B!important;color:#fff!important;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:13px!important;font-weight:600!important;line-height:26px;
  letter-spacing:0;text-transform:none;box-shadow:0 2px 8px rgba(224,83,27,.28)}
:is(#res-products,.tdb-sale-row) .product-thumb .caption .price .price-old,
.tdpd-carousel-box .product-thumb .caption .price .price-old{
  font-size:14px;color:#8C93A0;text-decoration:line-through}
/* Строка «Товары со скидкой» в фильтре — тем же цветом, чтобы связь с
   плашкой на карточке читалась. */
#tdpd-ismobile #special-only:checked + label{color:#E0531B}
#tdpd-ismobile #special-only:checked + label::before{
  background-color:#E0531B;border-color:#E0531B}

/* --- 8. Смета: кремовый фон страницы, как в макете Smeta.dc.html ------
   В макете лист сметы лежит на кремовом #FAF6EC, а сами блоки белые —
   так видно, что это документ, а не продолжение каталога. На бою вся
   страница была белой и карточки сливались с фоном. */
body.checkout-tdpd_smeta{background:#FAF6EC}
body.checkout-tdpd_smeta .wrapper{background:transparent}
body.checkout-tdpd_smeta .tdpd-smeta{padding-bottom:56px}
body.checkout-tdpd_smeta .tdpd-sm-table,
body.checkout-tdpd_smeta .tdpd-sm-empty,
body.checkout-tdpd_smeta .tdpd-sm-add{background:#fff}
body.checkout-tdpd_smeta .tdpd-sm-sum{background:#fff;border:1px solid #E8E3D8}
body.checkout-tdpd_smeta .tdpd-sm-save{background:#fff}
body.checkout-tdpd_smeta .tdpd-sm-tr-free{background:#FCFAF4}

/* --- 9. Отзывы: короткая строка вместо формы на пол-экрана -------------
   Разметку переставляет tdpdProductPage (функция reviews): всё, что было
   под «Написать отзыв», уезжает в .tdpd-rev-form и раскрывается кнопкой. */
.tdpd-rev .tdpd-block-body{font-size:14px}
.tdpd-rev-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.tdpd-rev-note{color:#7A756C;font-size:14px}
.tdpd-rev-toggle{
  height:40px;padding:0 18px;border:1px solid #DDE1E8;border-radius:10px;background:#fff;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;font-weight:500;color:#20242C;
  cursor:pointer;transition:border-color .15s ease,color .15s ease}
.tdpd-rev-toggle:hover{border-color:#2F55D4;color:#2F55D4}
.tdpd-rev .tdpd-rev-form{display:none}
.tdpd-rev.tdpd-rev-open .tdpd-rev-form{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;
  margin:18px 0 0;padding:18px;border:1px solid #E8E3D8;border-radius:14px;background:#FCFAF4}
.tdpd-rev .tdpd-rev-form > *{
  grid-column:1 / -1;float:none!important;width:auto!important;
  margin:0!important;padding:0!important}
.tdpd-rev .tdpd-rev-form > .col-sm-6{grid-column:span 1}
.tdpd-rev .tdpd-rev-form .form-group{margin:0}
.tdpd-rev .tdpd-rev-form .control-label{
  display:block;margin:0 0 6px;padding:0;width:auto;float:none;
  font-size:12.5px;font-weight:500;color:#7A756C;text-align:left}
.tdpd-rev .tdpd-rev-form .form-control{
  width:100%;border:1px solid #DDE1E8;border-radius:10px;background:#fff;
  box-shadow:none;font-size:14px;color:#20242C}
.tdpd-rev .tdpd-rev-form input.form-control{height:44px;padding:0 12px}
.tdpd-rev .tdpd-rev-form textarea.form-control{min-height:76px;padding:10px 12px;resize:vertical}
.tdpd-rev .tdpd-rev-form .form-control:focus{
  border-color:#2F55D4;box-shadow:0 0 0 3px rgba(47,85,212,.13);outline:none}
.tdpd-rev .tdpd-rev-form .help-block{margin:6px 0 0;font-size:12px;color:#9A948A}
.tdpd-rev .tdpd-rev-form .form-group.required > label.col-sm-1{
  display:block;width:auto;float:none;padding:0;margin:0 0 6px;
  font-size:12.5px;font-weight:500;color:#7A756C;text-align:left}
.tdpd-rev .tdpd-rev-form .col-sm-11{width:auto;float:none;padding:0}
.tdpd-rev .tdpd-rev-form .buttons{margin:0}
.tdpd-rev .tdpd-rev-form .buttons .pull-left{float:none}
.tdpd-rev .tdpd-rev-form #button-review{
  height:46px;padding:0 24px;border:0;border-radius:10px;background:#2F55D4;color:#fff;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:15px;font-weight:500;cursor:pointer}
.tdpd-rev .tdpd-rev-form #button-review:hover{background:#2646B0}
@media (max-width:767px){
  .tdpd-rev.tdpd-rev-open .tdpd-rev-form{grid-template-columns:1fr}
  .tdpd-rev .tdpd-rev-form > .col-sm-6{grid-column:1 / -1}
}

/* --- 10. Поиск: заголовок над чипами разделов --------------------------
   Чипы теперь с иконками (та же разметка, что на странице категории),
   строка стала выше — заголовку нужен воздух, а самой ленте — отбивка
   от строки настроек поиска. */
.tdpd-srch-cats{margin:6px 0 22px}
.tdpd-srch-cats .tdpd-subs-h{
  font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:#8C93A0;margin:0 0 12px}

/* ======================================================================
   TDPD: КОНТЕНТНЫЕ СТРАНИЦЫ (08.09.2026)
   Общий набор классов для «Контактов» и «Как оформить заказ». Держим их
   вместе: обе страницы собраны из одних и тех же блоков — лид, карточки,
   шаги, вопросы-ответы, реквизиты, призыв.
   ====================================================================== */
.tdpd-pg{font-family:"Rubik","Segoe UI",Arial,sans-serif;color:#20242C;padding-bottom:48px}
.tdpd-pg *{box-sizing:border-box}
.tdpd-pg-lead{
  max-width:760px;margin:0 0 32px;font-size:16px;line-height:1.65;color:#4A4640}
.tdpd-pg-sec{margin:0 0 36px}
.tdpd-pg-h{
  margin:0 0 16px;font-size:22px;font-weight:600;line-height:1.3;color:#20242C}
.tdpd-pg-sub{margin:-8px 0 18px;font-size:14px;line-height:1.6;color:#7A756C;max-width:760px}
.tdpd-pg p{margin:0 0 12px;font-size:15px;line-height:1.7;color:#3B4252}
.tdpd-pg a{color:#2F55D4}

/* Карточки: контакты, документы, что угодно в ряд по три. */
.tdpd-pg-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.tdpd-pg-cards.is-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.tdpd-pg-card{
  display:flex;flex-direction:column;gap:6px;min-width:0;
  padding:20px;border:1px solid #E8E3D8;border-radius:16px;background:#fff}
.tdpd-pg-card-i{
  display:flex;align-items:center;justify-content:center;width:38px;height:38px;
  margin-bottom:6px;border-radius:11px;background:#EDF1FD;color:#2F55D4}
.tdpd-pg-card-i svg{width:20px;height:20px}
.tdpd-pg-card b{font-size:15px;font-weight:600;line-height:1.3;color:#20242C}
.tdpd-pg-card span{font-size:14px;line-height:1.55;color:#7A756C;word-break:break-word}
.tdpd-pg-card a{font-size:15px;line-height:1.5;color:#2F55D4;text-decoration:none;word-break:break-word}
.tdpd-pg-card a:hover{text-decoration:underline}
.tdpd-pg-card-big a{font-size:20px;font-weight:600;color:#20242C}

/* Шаги — нумерованная лента. */
.tdpd-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.tdpd-step{
  min-width:0;padding:22px;border:1px solid #E8E3D8;border-radius:16px;background:#fff}
.tdpd-step i{
  display:flex;align-items:center;justify-content:center;width:34px;height:34px;
  border-radius:10px;background:#2F55D4;font-size:15px;font-weight:600;font-style:normal;color:#fff}
.tdpd-step b{
  display:block;margin:14px 0 0;font-size:16px;font-weight:600;line-height:1.3;color:#20242C}
.tdpd-step span{display:block;margin-top:8px;font-size:14px;line-height:1.6;color:#7A756C}
.tdpd-step em{
  display:block;margin-top:10px;font-style:normal;font-size:13px;line-height:1.5;color:#2F55D4}

/* Вопросы-ответы. */
.tdpd-faq{border:1px solid #E8E3D8;border-radius:16px;overflow:hidden;background:#fff}
.tdpd-faq details{border-bottom:1px solid #E8E3D8}
.tdpd-faq details:last-child{border-bottom:0}
.tdpd-faq summary{
  position:relative;list-style:none;cursor:pointer;padding:16px 46px 16px 20px;
  font-size:15px;font-weight:500;line-height:1.4;color:#20242C}
.tdpd-faq summary::-webkit-details-marker{display:none}
.tdpd-faq summary::after{
  content:"";position:absolute;top:22px;right:22px;width:8px;height:8px;
  border-right:2px solid #8C93A0;border-bottom:2px solid #8C93A0;
  transform:rotate(45deg);transition:transform .18s}
.tdpd-faq details[open] summary::after{top:26px;transform:rotate(-135deg)}
.tdpd-faq summary:hover{color:#2F55D4}
.tdpd-faq-a{padding:0 20px 18px;font-size:14.5px;line-height:1.7;color:#4A4640}
.tdpd-faq-a p{margin:0 0 10px;font-size:14.5px}
.tdpd-faq-a p:last-child{margin:0}

/* Реквизиты — таблица в две колонки. */
.tdpd-req{border:1px solid #E8E3D8;border-radius:16px;overflow:hidden;background:#fff}
.tdpd-req-r{
  display:grid;grid-template-columns:260px minmax(0,1fr);gap:16px;
  padding:13px 20px;border-bottom:1px solid #F0EADC;font-size:14.5px;line-height:1.5}
.tdpd-req-r:last-child{border-bottom:0}
.tdpd-req-r span{color:#7A756C}
.tdpd-req-r b{font-weight:500;color:#20242C}

/* Призыв в конце страницы. */
.tdpd-pg-cta{
  display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
  padding:28px 32px;border-radius:18px;background:#FAF6EC;border:1px solid #E8E3D8}
.tdpd-pg-cta-t b{display:block;font-size:20px;font-weight:600;line-height:1.3;color:#20242C}
.tdpd-pg-cta-t span{display:block;margin-top:6px;font-size:14.5px;line-height:1.6;color:#7A756C}
.tdpd-pg-cta-a{display:flex;gap:10px;flex-wrap:wrap}
.tdpd-pg-btn{
  display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 24px;
  border:0;border-radius:12px;background:#2F55D4;color:#fff!important;
  font-size:15px;font-weight:500;text-decoration:none!important;white-space:nowrap;cursor:pointer}
.tdpd-pg-btn:hover{background:#2646B0}
.tdpd-pg-btn-2{background:#fff;border:1px solid #DDE1E8;color:#20242C!important}
.tdpd-pg-btn-2:hover{background:#fff;border-color:#2F55D4;color:#2F55D4!important}

/* Карта на «Контактах». */
.tdpd-pg-map{border:1px solid #E8E3D8;border-radius:16px;overflow:hidden;background:#FAF6EC}
.tdpd-pg-map iframe{display:block;width:100%;height:380px;border:0}

@media (max-width:991px){
  .tdpd-pg-cards,.tdpd-pg-cards.is-2,.tdpd-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tdpd-pg-h{font-size:20px}
  .tdpd-req-r{grid-template-columns:1fr;gap:2px}
  .tdpd-pg-map iframe{height:300px}
}
@media (max-width:600px){
  .tdpd-pg-cards,.tdpd-pg-cards.is-2,.tdpd-steps{grid-template-columns:1fr}
  .tdpd-pg-cta{padding:22px}
  .tdpd-pg-cta-a .tdpd-pg-btn{flex:1 1 100%}
}

/* --- 7б. Скидка на самой карточке товара -------------------------------
   Правило 7 выше цепляется к листингу (#res-products) и каруселям, а в
   галерее карточки плашка оставалась мелкой и холодной. В макете
   (Tovar.dc.html) она там же оранжевая #E0531B, только крупнее листинговой:
   28px против 26px. */
.left-info .pro-label.sale,
#fixed__affix .pro-label.sale,
.product-info > .row > .left-info .pro-label.sale{
  display:inline-flex!important;align-items:center;height:28px;padding:0 12px;
  border:0!important;border-radius:8px!important;
  background:#E0531B!important;color:#fff!important;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:13px!important;font-weight:600!important;line-height:28px;
  letter-spacing:0;text-transform:none;box-shadow:0 2px 10px rgba(224,83,27,.3)}

/* --- 6б. Галочка в фильтре: гасим «птичку» темы ------------------------
   Вот из-за чего выбранное значение выглядело синим ромбиком (замечание
   клиента по скриншоту фильтра). В custom.css лежит правило

     .filtered input[type="checkbox"]:checked + label::before{
       width:12px; height:5px; border-style:none none solid solid;
       transform:rotate(-45deg); margin-left:3px; background:none }

   — тема рисует галочку двумя границами повёрнутого прямоугольника. Мой
   квадрат 18×18 со знаком внутри она разворачивала на 45°, и получался
   ромб. Специфичности хватало перебить размеры и цвет, но не те свойства,
   которых в моём правиле просто нет: transform, margin-left, border-style.
   Перечисляем их явно. */
#tdpd-ismobile .box-content.filtered .item-content input[type="checkbox"]:checked + label::before,
#tdpd-ismobile .box-content.filtered .item-content input[type="radio"]:checked + label::before{
  width:18px;height:18px;margin-left:0;border-radius:5px;
  border-style:solid;transform:none}
#tdpd-ismobile .box-content.filtered .item-content input[type="checkbox"]:checked + label::before{
  border-width:2px;border-color:#2F55D4;
  background:#2F55D4 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") no-repeat center;
  background-size:11px 11px}
#tdpd-ismobile .box-content.filtered .item-content input[type="radio"]:checked + label::before{
  border-radius:50%;border-width:5px;border-color:#2F55D4;background:#fff}
#tdpd-ismobile .box-content.filtered .item-content #special-only:checked + label::before{
  background-color:#E0531B;border-color:#E0531B}


/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 09.09.2026 — часть 1
   Шапка на широком экране, логотип на телефоне, скидка.
   ====================================================================== */

/* --- 1. Утилитарная строка шапки не должна переноситься -----------------
   Клиент прислал скриншот широкого экрана: «Контакты» стоят второй
   строкой, а статус работы висит справа отдельным рядом.

   Считано по бою: контейнер темы шире 1200px не растёт, под содержимое
   остаётся 1170px. Слева регион и шесть ссылок — 796px при gap:20px,
   справа статус с часами и «Личный кабинет» — 378px. Итого 1174 против
   1170: не хватало ЧЕТЫРЁХ пикселей.

   Отсюда же понятно, почему прежняя страховка (часы прятались при
   `max-width:1600px`) не сработала: она смотрит на ширину ОКНА, а
   ширина контейнера от окна не зависит — на 1601px окно стало шире,
   контейнер остался прежним, и часы вернулись ровно туда, где места нет.

   Лечим шириной, а не переносом: gap 20 → 16 и снятый лишний отступ
   у региона дают 796 → 766 слева и 378 → 374 справа. 1140 при 1170 —
   запас 30px. Перенос при этом НЕ запрещаем: `nowrap` при длинном
   названии региона наложил бы ссылки друг на друга, а обрезка
   (`overflow:hidden`) съела бы выпадающий список выбора региона. */
@media (min-width:992px){
  #top .box-top{gap:16px}
  #top .box-top-right{gap:16px}
  #top .box-top > li{flex:0 0 auto;white-space:nowrap}
  #top .box-top-left > li.apppli:first-child{margin-right:0!important}

  /* Часы возвращаем на любой ширине от 1200: теперь они помещаются.
     Правило `@media (max-width:1600px){...display:none}` из блока
     07.09.2026 перебиваем этим — оно выше по файлу, вес одинаковый. */
  #top .tdpd-wt-hours{display:inline}

  /* Ступени, которые включает tdpdTopFit, если строка всё-таки не
     влезла (например, «Ханты-Мансийский автономный округ» вместо
     «Нижегородская область» — это плюс 90px). Порядок: сперва часы,
     потом отступы, в последнюю очередь — весь статус. */
  #top .box-inner.tdpd-fit-1 .tdpd-wt-hours{display:none}
  #top .box-inner.tdpd-fit-2 .box-top,
  #top .box-inner.tdpd-fit-2 .box-top-right{gap:12px}
  #top .box-inner.tdpd-fit-3 .tdpd-worktime{display:none!important}

  /* Кнопки мобильного островка на десктопе не нужны. Их строит
     tdpdMobileHead, стили у них только в `max-width:991px`, и после
     смены размера окна они оставались в разметке голыми элементами:
     84px слева и 17px справа отъедались у строки логотип-поиск-смета.
     Скрипт их теперь убирает, это — страховка. */
  .tdpd-mh-cat,.tdpd-mh-tel{display:none!important}
}

/* --- 2. Логотип по центру мобильной таблетки ---------------------------
   Кнопка «Каталог» (104px) шире кнопки звонка (38px), поэтому логотип,
   стоявший обычным флекс-элементом между ними, смещался влево на 14px
   от середины таблетки. Ставим его абсолютом по центру строки: таблетка
   (`.wrapper::before`, left:10 right:10) симметрична, значит середина
   строки и есть середина таблетки.

   Пересечения с кнопками нет: на 375px логотип занимает 161–214,
   «Каталог» кончается на 124, звонок начинается с 317. На 320px подпись
   у «Каталога» прячется (блок 07.09.2026), кнопка ужимается до 37px. */
@media (max-width:991px){
  html body header.scroll-fix .box-inner-inner{position:relative}
  html body header.scroll-fix #logo{
    position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
    flex:0 0 auto;width:auto;max-width:calc(100% - 200px);
    margin:0;padding:0;text-align:center;z-index:2}
  html body header.scroll-fix #logo img{margin:0 auto}
}

/* --- 3. «Собирают вместе с этим»: плашка скидки на 56px картинке -------
   Плашку в этом списке гасило правило `.tdpd-with-list .pro-label
   {display:none}`, но блок 7 от 08.09.2026 («скидка должна быть видна»)
   намеренно задал `.pro-label.sale{display:inline-flex!important}` без
   предков — и с `!important` он победил. В строке списка картинка 56px,
   а плашка 26px высотой и ~52px шириной: она вылезала за фото на текст.
   Скидку в этом списке и так видно по перечёркнутой цене. */
.tdpd-with-list .pro-label,
.tdpd-with-list .pro-label.sale,
.tdpd-with-list .pro-label.special{display:none!important}

/* --- 4. Цена со скидкой заметным цветом --------------------------------
   Замечание клиента: со скидкой и без неё цена печаталась одинаковым
   тёмным. Красим новую цену в оранжевый плашки #E0531B — тогда карточка,
   плашка «-21%» и цена читаются одним сигналом. Старую цену оставляем
   серой перечёркнутой. */
.price .price-new,
.product-item .price .price-new,
.tdpd-with-list .caption .price .price-new,
#product .tdpd-buybox .price .price-new{color:#E0531B!important}
.tdpd-with-list .caption .price .price-old,
.price .price-old{color:#A9A396!important;text-decoration:line-through}


/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 09.09.2026 — часть 2
   Карточка, липкие панели, окно выбора исполнения, листинг на телефоне.
   ====================================================================== */

/* --- 1. Карточка товара: страница уезжала за экран ----------------------
   Замечание клиента: «при выборе опции страница уезжает за экран, то же
   при выборе цвета и группой цены». Опции ни при чём — блок стоял так
   с самого начала, просто до опций доскроливают чаще всего.

   Причина: у правой колонки карточки в шаблоне инлайном
   `#product-info-right{float:right}`. На десктопе ширину ей задаёт
   `.col-sm-5` (41.66%), и float безобиден. Ниже 768px у `.col-sm-5`
   ширины нет — а плавающий блок без ширины ужимается ПО СОДЕРЖИМОМУ,
   то есть растёт до самого широкого потомка. Замерено на бою: колонка
   408px при экране 375px и левым краем на −33px. Правый край карточек
   опций уезжал за экран, а `body{overflow:hidden}` его просто обрезал —
   горизонтальной прокрутки нет, поэтому и «за экран».

   Гасим float ниже 992px и возвращаем колонке ширину строки. Проверено
   на бою временным стилем: колонка 375px, ни одного элемента шире
   экрана не остаётся. */
@media (max-width:991px){
  #product-info-right,
  .product-info-details.col-sm-5,
  .product-info > .row > .product-info-details{
    float:none!important;width:100%!important;max-width:100%!important;min-width:0}
  /* Поля были 1.5rem против 15px у остальной страницы — блоки опций
     стояли уступом к хлебным крошкам и заголовку. */
  .product-info-details{padding-left:15px!important;padding-right:15px!important}
}

/* --- 2. Липкая панель покупки не закрывает нижний островок --------------
   Было `body.tdpd-buybar-on #tdpd-tabbar{display:none}`: как только
   настоящая кнопка «В смету» уходила с экрана, островок с «Каталог /
   Поиск / Смета / Позвонить» пропадал совсем. Клиент читает это как
   «прилипшая корзина закрыла меню».

   Теперь панель садится НАД островком отдельной плашкой того же вида:
   островок 56px + 10px от низа, значит панели остаётся 76px. Прежнее
   правило перебиваем адресно и с оговорками — при открытой шторке меню
   островок по-прежнему прячется. */
@media (max-width:992px){
  body.tdpd-buybar-on:not(.tdpd-drawer-open):not(.tdpd-mm2-on):not(.tdpd-modal-on) #tdpd-tabbar{
    display:flex}
  body.tdpd-buybar-on #tdpd-buybar{
    left:12px;right:12px;
    bottom:calc(76px + env(safe-area-inset-bottom));
    padding:8px 10px;padding-bottom:8px;
    border:1px solid rgba(232,227,216,.9);border-top:1px solid rgba(232,227,216,.9);
    border-radius:20px;
    box-shadow:0 10px 30px rgba(32,36,44,.16),0 2px 8px rgba(32,36,44,.08)}
}

/* --- 3. «Собирают вместе с этим»: кнопка без подписи --------------------
   На телефоне тема прячет подпись у кнопки карточки
   (`.button-cart span{display:none}`) и рисует вместо неё знак корзины
   через `::before`. В нашем списке `content` у псевдоэлемента пустой —
   получался белый прямоугольник 38×38 без единого знака. Клиент так и
   написал: «на элементах не видно кнопки». Возвращаем подпись. */
@media (max-width:991px){
  .tdpd-with-list .box-cart .button-cart{
    width:auto!important;min-width:96px;padding:0 14px!important}
  .tdpd-with-list .box-cart .button-cart span{
    display:inline-block!important;font-size:13px;line-height:inherit}
}

/* --- 4. Пока открыто модальное окно — на экране только оно --------------
   На скриншоте клиента поверх окна «Выберите исполнение» висели: кружок
   чата Битрикса (z-index 10150 против 9998 у окна) и липкая панель
   покупки внизу. Класс `tdpd-modal-on` вешает tdpdModalGuard, когда в
   разметке появляется `.mfp-wrap` (magnific popup). */
body.tdpd-modal-on #tdpd-buybar,
body.tdpd-modal-on #tdpd-tabbar,
body.tdpd-modal-on #tdpd-sticky-buy,
body.tdpd-modal-on #uptocall-mini,
body.tdpd-modal-on .b24-widget-button-wrapper,
body.tdpd-modal-on .b24-widget-button-shadow,
body.tdpd-modal-on .b24-widget-button-position-bottom-right{display:none!important}

/* --- 5. Окно выбора исполнения ------------------------------------------
   Само окно уже собрано по макету (блок «попап выбора опции» выше).
   Чего не хватало: на телефоне оно было ровно во весь экран, кнопки
   «В смету» и «Продолжить подбор» стояли на границе видимого и
   перекрывались панелью снизу. Даём окну свою прокрутку и прижимаем
   кнопки к его низу, а не к низу экрана.
   Отдельной обёртки под прокрутку в шаблоне нет, и заводить её ради
   этого не стоит: прокручиваем само окно, а строку кнопок держим
   липкой у его нижнего края (`position:sticky`). */
#product-options-popup{
  max-height:calc(100vh - 40px);overflow-y:auto;-webkit-overflow-scrolling:touch}
#product-options-popup .popup-buttons-box{
  position:sticky;bottom:-1px;z-index:2;
  display:flex;align-items:center;gap:12px;
  margin:0;padding-top:14px;padding-bottom:2px;
  background:#fff;border-top:1px solid #ecedef}
/* «Продолжить подбор» была серой строчкой на кремовом и читалась как
   подпись, а не как действие. Делаем её второй кнопкой. */
#product-options-popup .popup-buttons-box .popup-button.continue{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:46px;padding:0 16px;margin:0;
  border:1px solid #DDE1E8;border-radius:11px;background:#fff;
  font-size:14px;font-weight:400;color:#4a5060!important;white-space:nowrap}
#product-options-popup .popup-buttons-box .popup-button.continue:hover{
  border-color:#2F55D4;color:#2F55D4!important;text-decoration:none}
#product-options-popup .popup-buttons-box #popup-checkout-button{
  flex:1 1 auto;justify-content:center;margin:0}
/* Значения опций в базе набраны капслоком («ЛДСП БУК»); в окне это
   выглядит криком. Регистр не трогаем — это данные, — но и своего
   `uppercase` не добавляем. */
#product-options-popup .options-box label{text-transform:none}

@media (max-width:767px){
  /* На телефоне окно — нижний лист: так до кнопок дотягивается большой
     палец, и не нужно целиться в крестик наверху. */
  #product-options-popup{
    max-width:100%;width:100%;margin:0;padding:20px 16px 16px;
    max-height:88vh;border-radius:18px 18px 0 0}
  .mfp-container:has(#product-options-popup){padding:0;align-items:flex-end}
  #product-options-popup .popup-buttons-box{
    flex-wrap:nowrap;padding-bottom:calc(2px + env(safe-area-inset-bottom))}
  #product-options-popup .popup-buttons-box .popup-button.continue{
    flex:0 0 auto;padding:0 12px;font-size:13px}
}

/* --- 6. Листинг на телефоне: «Фильтр» и сортировка одной строкой --------
   Было три строки: кнопка «Фильтр», пустая строка штатной сортировки и
   лента чипов с горизонтальной прокруткой — 105px до первого товара.
   Чипы хороши на десктопе, где видно все четыре разом; на 375px из них
   видно полтора. Ставим рядом с «Фильтром» обычный список: одна строка
   38px, вариант читается целиком, выбор — родным барабаном телефона.
   Список строит tdpdSortChips из того же набора, что и чипы, и пишет
   выбор в штатный #input-sort — событие change слушает модуль фильтра. */
.tdpd-sortsel{display:none}
@media (max-width:992px){
  .sort-row{flex-wrap:nowrap!important;gap:8px}
  .sort-row #tdpd-sortchips{display:none!important}
  .sort-row .right-sort-row{display:none!important}
  .sort-row .tdpd-sortsel{
    display:block;order:2;flex:1 1 auto;min-width:0;width:100%;
    height:38px;padding:0 30px 0 12px;
    border:1px solid #E2E5EE;border-radius:10px;background:#fff;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2398a2b3' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 11px center;
    font-family:inherit;font-size:13.5px;color:#3A4152;
    -webkit-appearance:none;appearance:none;text-overflow:ellipsis;
    box-shadow:none;filter:none}
  .sort-row .tdpd-sortsel:focus{border-color:#2F55D4;outline:none}
  .sort-row #filter-button{order:1}
}

/* --- 7. Поиск раздела в мобильном меню: найденные вложенные -------------
   Плитки в шторке — только второй уровень (17 разделов у «Детского
   сада»), а на десктопе в меню видно и третий: у того же «Детского
   сада» это ещё 143 раздела. Клиент искал «оде» (Одеяла) и получал
   «ничего не нашлось». Разметку не добавляем: полное меню и так лежит
   в DOM под `#menu li.tdpd-rail-<раздел>`, просто спрятано на телефоне.
   Найденное показываем отдельным списком под плитками. */
.tdpd-mm2-subs{display:none}
.tdpd-mm2-sec.is-filtering .tdpd-mm2-subs:not(:empty){display:block;margin-top:6px}
.tdpd-mm2-subs .tdpd-mm2-sublbl{
  display:block;margin:14px 0 8px;
  font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:#A9A396}
.tdpd-mm2-subs a{
  display:block;padding:11px 12px;margin-bottom:6px;
  border:1px solid #EFEBE1;border-radius:12px;background:#fff;
  color:#20242C!important;text-decoration:none}
.tdpd-mm2-subs a:active{background:#F7F1E4}
.tdpd-mm2-subs a b{display:block;font-size:14.5px;font-weight:500;line-height:1.3}
.tdpd-mm2-subs a small{display:block;margin-top:2px;font-size:12px;color:#A9A396}
.tdpd-mm2-subs a i{font-style:normal;color:#A9A396;font-size:12px}


/* ======================================================================
   TDPD: ИНФОРМАЦИОННЫЕ СТРАНИЦЫ (09.09.2026)
   «О компании», «Доставка», «Оплата». Разметка — в базе, классы
   `tdpd-inf-*`; здесь только вид.

   Прежние страницы были свёрстаны прямо в визуальном редакторе: картинка
   на 400px с обтеканием, текст сплошными абзацами. На телефоне картинка
   занимала первый экран, а на десктопе строка тянулась на все 1170px.
   ====================================================================== */

.info-content .tdpd-inf{
  max-width:860px;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:15.5px;line-height:1.62;color:#3A3833}

.info-content .tdpd-inf p{margin:0 0 14px}
.info-content .tdpd-inf a{color:#2F55D4}
.info-content .tdpd-inf h2{
  margin:34px 0 14px;font-size:22px;font-weight:600;line-height:1.25;color:#20242C}
.info-content .tdpd-inf > *:first-child{margin-top:0}

/* Лид — крупнее основного текста: это ответ на вопрос «куда я попал». */
.tdpd-inf-lead{font-size:17.5px;line-height:1.55;color:#20242C}

/* --- Карточки цифр ------------------------------------------------------
   Четыре в ряд на десктопе, две на планшете, две на телефоне: в одну
   колонку они превращались в лишние пол-экрана прокрутки. */
.tdpd-inf-facts{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;
  margin:22px 0 6px}
.tdpd-inf-facts-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.tdpd-inf-fact{
  padding:16px 16px 14px;border:1px solid #E8E3D8;border-radius:14px;background:#FAF6EC}
.tdpd-inf-fact b{
  display:block;margin-bottom:4px;
  font-size:20px;font-weight:600;line-height:1.2;color:#2F55D4}
.tdpd-inf-fact span{display:block;font-size:13.5px;line-height:1.4;color:#7A756C}

/* --- Карточки направлений ----------------------------------------------- */
.tdpd-inf-grid{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0 0 8px}
.tdpd-inf-card{
  display:block;padding:16px 18px;border:1px solid #EFEBE1;border-radius:14px;
  background:#fff;color:#3A3833!important;text-decoration:none!important;
  transition:border-color .15s,box-shadow .15s}
.tdpd-inf-card:hover{border-color:#2F55D4;box-shadow:0 6px 20px rgba(47,85,212,.10)}
.tdpd-inf-card b{
  display:block;margin-bottom:5px;font-size:16px;font-weight:600;color:#20242C}
.tdpd-inf-card span{display:block;font-size:14px;line-height:1.5;color:#7A756C}

/* --- Шаги ----------------------------------------------------------------
   Номер рисуем сами: у штатного списка он мелкий и висит на полях. */
.tdpd-inf-steps{margin:0 0 8px;padding:0;list-style:none;counter-reset:tdpdinf}
.tdpd-inf-steps > li{
  position:relative;margin:0 0 12px;padding:14px 18px 14px 58px;
  border:1px solid #EFEBE1;border-radius:14px;background:#fff;
  counter-increment:tdpdinf}
.tdpd-inf-steps > li::before{
  content:counter(tdpdinf);
  position:absolute;left:16px;top:14px;
  display:flex;align-items:center;justify-content:center;
  width:28px;height:28px;border-radius:50%;
  background:#EDF1FD;color:#2F55D4;font-size:14px;font-weight:600;line-height:1}
.tdpd-inf-steps > li b{
  display:block;margin-bottom:3px;font-size:16px;font-weight:600;color:#20242C}
.tdpd-inf-steps > li span{display:block;font-size:14.5px;line-height:1.5;color:#7A756C}

/* --- Простой список с выделенным началом строки ------------------------- */
.tdpd-inf-list{margin:0 0 8px;padding:0;list-style:none}
.tdpd-inf-list > li{
  position:relative;margin:0 0 10px;padding-left:26px;font-size:15.5px;line-height:1.6}
.tdpd-inf-list > li::before{
  content:"";position:absolute;left:4px;top:9px;
  width:8px;height:8px;border-radius:50%;background:#2F55D4}
.tdpd-inf-list > li b{color:#20242C}

/* --- Таблицы условий ----------------------------------------------------
   `.tdpd-inf-tablewrap` даёт таблице свою горизонтальную прокрутку: три
   колонки условий на 375px иначе распирают страницу. */
.tdpd-inf-tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 8px}
.tdpd-inf-table{
  width:100%;margin:0 0 8px;border-collapse:separate;border-spacing:0;
  border:1px solid #E8E3D8;border-radius:14px;overflow:hidden;
  font-size:14.5px;line-height:1.5}
.tdpd-inf-table th,
.tdpd-inf-table td{padding:12px 16px;text-align:left;vertical-align:top;
  border-bottom:1px solid #EFEBE1}
.tdpd-inf-table tr:last-child th,
.tdpd-inf-table tr:last-child td{border-bottom:0}
.tdpd-inf-table th{
  width:210px;background:#FAF6EC;color:#7A756C;font-weight:400}
.tdpd-inf-table td{color:#3A3833}
.tdpd-inf-table-cols{min-width:560px}
.tdpd-inf-table-cols tr:first-child th{
  width:auto;color:#20242C;font-weight:600}
.tdpd-inf-table-cols td{background:#fff}
.tdpd-inf-free{
  display:inline-block;padding:2px 10px;border-radius:8px;
  background:#E6F4EC;color:#1E8E5A;font-weight:500}

/* --- Вопрос-ответ на <details> ------------------------------------------
   Без единой строки скрипта: раскрытие умеет сам браузер, а поиск по
   странице (Ctrl+F) в современных браузерах открывает нужный ответ. */
.tdpd-inf-faq{margin:0 0 8px}
.tdpd-inf-faq details{
  margin:0 0 10px;border:1px solid #EFEBE1;border-radius:14px;background:#fff;
  overflow:hidden}
.tdpd-inf-faq summary{
  padding:14px 44px 14px 18px;position:relative;cursor:pointer;list-style:none;
  font-size:16px;font-weight:500;color:#20242C}
.tdpd-inf-faq summary::-webkit-details-marker{display:none}
.tdpd-inf-faq summary::after{
  content:"";position:absolute;right:18px;top:20px;
  width:9px;height:9px;border-right:2px solid #A9A396;border-bottom:2px solid #A9A396;
  transform:rotate(45deg);transition:transform .15s}
.tdpd-inf-faq details[open] summary::after{transform:rotate(-135deg);top:23px}
.tdpd-inf-faq details[open] summary{color:#2F55D4}
.tdpd-inf-faq details > p{margin:0;padding:0 18px 16px;
  font-size:15px;line-height:1.6;color:#7A756C}

/* --- Призыв -------------------------------------------------------------- */
.tdpd-inf-cta{
  margin:32px 0 8px;padding:22px 24px;border-radius:18px;background:#FAF6EC;
  border:1px solid #E8E3D8}
.tdpd-inf-cta b{
  display:block;margin-bottom:6px;font-size:20px;font-weight:600;color:#20242C}
.tdpd-inf-cta p{margin:0 0 14px;font-size:15px;color:#7A756C}
.tdpd-inf-cta-row{display:flex;flex-wrap:wrap;gap:10px;margin:0!important}
.tdpd-inf-btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:48px;padding:0 22px;border-radius:12px;
  background:#2F55D4;color:#fff!important;text-decoration:none!important;
  font-size:15px;font-weight:500;white-space:nowrap}
.tdpd-inf-btn:hover{background:#2647B8;color:#fff!important}
.tdpd-inf-btn-2{
  background:#fff;color:#20242C!important;border:1px solid #DDE1E8;font-weight:600}
.tdpd-inf-btn-2:hover{background:#fff;color:#2F55D4!important;border-color:#2F55D4}

.tdpd-inf-req{margin-top:34px}
.tdpd-inf-note{font-size:14px;color:#8A8578}

/* --- Телефон ------------------------------------------------------------- */
@media (max-width:767px){
  .info-content .tdpd-inf{font-size:15px}
  .info-content .tdpd-inf h2{margin:26px 0 12px;font-size:19px}
  .tdpd-inf-lead{font-size:16px}
  .tdpd-inf-facts,
  .tdpd-inf-facts-3{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .tdpd-inf-fact{padding:13px 13px 12px}
  .tdpd-inf-fact b{font-size:17px}
  .tdpd-inf-grid{grid-template-columns:minmax(0,1fr)}
  .tdpd-inf-steps > li{padding:13px 15px 13px 52px}
  .tdpd-inf-steps > li::before{left:13px;top:13px;width:26px;height:26px}
  /* Первая колонка таблицы реквизитов на 210px оставляла значению 90px. */
  .tdpd-inf-table th{width:auto}
  .tdpd-inf-table th,
  .tdpd-inf-table td{padding:10px 13px}
  .tdpd-inf-cta{padding:18px 16px;border-radius:16px}
  .tdpd-inf-cta b{font-size:18px}
  .tdpd-inf-cta-row{flex-direction:column}
  .tdpd-inf-btn{width:100%}
}


/* Строка «по такому-то запросу ничего не нашлось» на странице поиска
   (правка B8 от 09.09.2026). Стоит под заголовком, тоном тише него:
   это пояснение, а не заголовок. */
.tdpd-srch-from{
  margin:-6px 0 14px;padding:10px 14px;
  border:1px solid #E8E3D8;border-radius:12px;background:#FAF6EC;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  font-size:14.5px;line-height:1.5;color:#7A756C}
.tdpd-srch-from b{color:#20242C;font-weight:500}

/* Пустая выдача (25.09.2026): запрос одной кнопкой в смету. */
.tdpd-srch-empty > b{display:block;font-size:18px;font-weight:600;color:#20242C;margin-bottom:6px}
.tdpd-se-act{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 12px}
#content .tdpd-se-add{height:46px;max-width:100%;padding:0 20px;border:0;border-radius:12px;background:#2F55D4;color:#fff;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:15px;font-weight:500;line-height:1.2;cursor:pointer;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#content .tdpd-se-add:hover,#content .tdpd-se-add:focus{background:#24409E;color:#fff;border:0}
#content .tdpd-se-add.is-done,#content .tdpd-se-add.is-done:hover{background:#1E8E5A;cursor:default}
.tdpd-se-list{display:inline-flex;align-items:center;height:46px;padding:0 18px;border:1px solid #DDE1E8;border-radius:12px;
  color:#20242C;font-size:15px}
.tdpd-se-list:hover{border-color:#2F55D4;color:#2F55D4}
.tdpd-se-ok{color:#1E8E5A;font-weight:500}
.tdpd-se-err{color:#C0392B}
.tdpd-srch-empty .tdpd-sq-hint{margin-top:14px}
@media (max-width:767px){ #content .tdpd-se-add,.tdpd-se-list{width:100%;justify-content:center} }


/* ======================================================================
   TDPD: ЗАМЕЧАНИЯ 09.09.2026 — часть 3
   ====================================================================== */

/* --- Плашка скидки не наезжает на ростовую группу ----------------------
   Замечание клиента про «уезжающий бейдж». На десктопе карточка 270px и
   обе метки помещаются, а на телефоне картинка 137px: метка «рост. гр.
   00–4» занимает 8–87, плашка «-21%» начинается с 75 — двенадцать
   пикселей внахлёст, цифра садится на текст.

   Обрезать ростовую группу нельзя (это то, по чему выбирают), поэтому
   разводим метки по вертикали: скидка уходит вниз картинки, где пусто.
   Селектор через `~`: в разметке плашка идёт ПЕРЕД меткой роста, и
   обратный порядок в CSS выразить нечем. */
@media (max-width:767px){
  :is(#res-products,.tdb-sale-row) .product-item .image .pro-label.sale,
  :is(#res-products,.tdb-sale-row) .product-item .image .pro-label.special,
  .product-item .image .pro-label.sale ~ .tdpd-rost{max-width:none}
  .product-item .image .pro-label.sale,
  .product-item .image .pro-label.special{
    top:auto!important;bottom:8px!important;right:8px!important;
    height:24px;padding:0 9px;font-size:12.5px!important;line-height:24px}
}


/* --- Мобильный поиск: подсказки в шторке -------------------------------
   Поле темы лежит в #tdpd-mobile-search с padding:15px, а наш блок —
   сосед снаружи, поэтому те же 15px задаём ему сами: иначе заголовки
   стоят по левому краю экрана, а поле — с отступом. */
.tdpd-ms2{padding:2px 15px 28px}
.tdpd-ms2[hidden]{display:none}
.tdpd-ms2-h{margin:20px 0 10px;font-size:13px;font-weight:600;color:#7a756c}

.tdpd-ms2-tags{display:flex;flex-wrap:wrap;gap:8px}
.tdpd-ms2-tags a{display:inline-flex;align-items:center;height:36px;padding:0 14px;
  border:1px solid #E8E3D8;border-radius:999px;background:#fff;
  color:#20242c;font-size:14px;text-decoration:none}
.tdpd-ms2-tags a:hover,.tdpd-ms2-tags a:focus,.tdpd-ms2-tags a:active{
  border-color:#2F55D4;color:#20242c;text-decoration:none}

.tdpd-ms2-cats{display:flex;flex-direction:column;gap:8px}
.tdpd-ms2-cats a{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:13px 14px;border:1px solid #E8E3D8;border-radius:12px;background:#fff;
  color:#20242c;font-size:15px;font-weight:500;text-decoration:none}
.tdpd-ms2-cats a:hover,.tdpd-ms2-cats a:focus,.tdpd-ms2-cats a:active{
  border-color:#2F55D4;color:#20242c;text-decoration:none}
.tdpd-ms2-cats a::after{content:"";flex:0 0 auto;width:8px;height:8px;
  border-right:2px solid #B8BEC9;border-bottom:2px solid #B8BEC9;
  transform:rotate(-45deg)}

.tdpd-ms2-all{display:flex;align-items:center;justify-content:center;height:46px;
  margin-top:14px;border-radius:12px;background:#2F55D4;color:#fff;
  font-size:15px;font-weight:500;text-decoration:none}
.tdpd-ms2-all:hover,.tdpd-ms2-all:focus{background:#2646b0;color:#fff;text-decoration:none}


/* ======================================================================
   TDPD 14.09.2026 — по итогам недельного разбора рекламы
   ====================================================================== */

/* --- 1. Пустая белая полоса под футером --------------------------------
   Под тёмным футером висело 135px белой прокрутки. Источник — легаси-правило
   темы в stylesheet.min.css:
     main::before{content:"";position:absolute;height:100%;top:135px;
                  background:black;z-index:-1;visibility:hidden;opacity:0}
   Это затемнение под мегаменю. Оно никогда не включается — ни одного
   правила, снимающего visibility, в таблицах нет (проверено обходом
   document.styleSheets: main::before встречается ровно один раз), — но
   прямоугольник высотой во всю страницу, сдвинутый на 135px вниз, ровно
   столько же пустой прокрутки и добавляет. Гасим псевдоэлемент. */
main::before{display:none!important}

/* --- 2. Плавающие кнопки в правом нижнем углу --------------------------
   Кружок «заказать звонок» (#uptocall-mini: bottom 70, высота 74, то есть
   70..144 от низа) налезал на кнопку чата Битрикса (bottom 50, высота 66,
   то есть 50..116). Раскладываем столбиком: чат внизу, над ним звонок,
   над ним «вверх». */
@media (min-width:993px){
  #uptocall-mini,
  a.field-tip.current-link{bottom:130px!important;right:22px!important}
  #back-top{bottom:218px!important;right:22px!important}
  /* Прежнее правило (блок 08.3) поднимало кружок на 80px под старую нижнюю
     панель покупки. Новая плашка стоит по центру экрана и угол не занимает. */
  body.tdpd-buybar-on #uptocall-mini,
  body.tdpd-buybar-on a.field-tip.current-link{bottom:130px!important}
}

/* --- 3. Липкая покупка: одна плашка на всех экранах --------------------
   На десктопе показывалась панель темы #tdpd-sticky-buy (catalog/view/theme/
   default/js/main.js): белая полоса во всю ширину окна, подпись «В корзину»
   вместо принятого на сайте «В смету», а в цену попадал весь текст блока
   .price вместе с названием продавца — «ТД «Планета Детства» 3 029 ₽».
   На телефоне в это же время работала своя плашка #tdpd-buybar: другая
   форма, счётчик, правильная подпись. Два разных компонента для одного
   действия. Оставляем #tdpd-buybar и на десктопе, легаси гасим (сборку
   в js/main.js тоже отключил, правило ниже — страховка на случай кэша). */
#tdpd-sticky-buy{display:none!important}

@media (min-width:993px){
  body.tdpd-buybar-on #tdpd-buybar{
    display:flex;position:fixed;z-index:1002;
    left:50%;transform:translateX(-50%);bottom:24px;
    width:min(860px,calc(100vw - 260px));
    align-items:center;gap:14px;padding:10px 12px 10px 14px;
    background:rgba(255,255,255,.94);
    -webkit-backdrop-filter:blur(18px) saturate(180%);
    backdrop-filter:blur(18px) saturate(180%);
    border:1px solid rgba(232,227,216,.9);border-radius:20px;
    box-shadow:0 10px 30px rgba(32,36,44,.16),0 2px 8px rgba(32,36,44,.08);
  }
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    body.tdpd-buybar-on #tdpd-buybar{background:rgba(255,255,255,.98)}
  }
  #tdpd-buybar .tdpd-bb-thumb{
    flex:0 0 44px;width:44px;height:44px;border-radius:12px;
    object-fit:contain;background:#F7F5F0}
  #tdpd-buybar .tdpd-bb-name{
    flex:1 1 auto;min-width:0;font-size:14px;font-weight:500;color:#20242c;
    line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;
    -webkit-box-orient:vertical;overflow:hidden}
  #tdpd-buybar .tdpd-bb-price{
    flex:0 0 auto;font-size:17px;font-weight:600;color:#20242c;white-space:nowrap}
  #tdpd-buybar .tdpd-bb-qty{
    flex:0 0 auto;display:flex;align-items:center;background:#fff;
    border:1px solid #DCD7CC;border-radius:12px;height:44px;overflow:hidden}
  #tdpd-buybar .tdpd-bb-qty button{
    width:34px;height:100%;border:0;background:transparent;color:#4a4640;
    font-size:19px;line-height:1;padding:0;cursor:pointer}
  #tdpd-buybar .tdpd-bb-qty button:hover{background:rgba(47,85,212,.08)}
  #tdpd-buybar .tdpd-bb-qty span{
    min-width:28px;text-align:center;font-size:14px;font-weight:600;color:#20242c}
  #tdpd-buybar .tdpd-bb-go{
    flex:0 0 auto;height:44px;padding:0 26px;border:0;border-radius:12px;
    background:#2F55D4;color:#fff;font-size:15px;font-weight:500;
    font-family:inherit;white-space:nowrap;cursor:pointer}
  #tdpd-buybar .tdpd-bb-go:hover{background:#2647b5}
}
/* На телефоне миниатюра и название не помещаются — плашка остаётся прежней. */
@media (max-width:992px){
  #tdpd-buybar .tdpd-bb-thumb,
  #tdpd-buybar .tdpd-bb-name{display:none}
}

/* --- 4. «Расчёт по вашему списку» на разделах без посадочной -----------
   У раздела мебели ДОУ заявку собирает хиро-форма, у остальных разделов
   призыва не было ни одного: за неделю 07-11.09 с рекламы 8 605 ₽ расхода,
   ноль заявок и ноль корзин, единственная живая конверсия — клик по
   телефону. Блок ставит скрипт после списка товаров и только там, где
   хиро-лент на странице нет. */
.tdpd-catcta{
  margin:28px 0 8px;padding:22px 24px;border-radius:20px;
  background:#F7F5F0;border:1px solid #E8E3D8;
  display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.tdpd-catcta-t{flex:1 1 340px;min-width:0}
.tdpd-catcta-t b{
  display:block;font-size:19px;font-weight:600;color:#20242c;line-height:1.3}
.tdpd-catcta-t span{
  display:block;margin-top:6px;font-size:14px;color:#6b665e;line-height:1.45}
.tdpd-catcta-a{display:flex;gap:10px;flex-wrap:wrap}
.tdpd-catcta-a a,
.tdpd-catcta-a button{
  height:46px;padding:0 22px;border:0;border-radius:12px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:inherit;font-size:15px;font-weight:500;text-decoration:none;
  white-space:nowrap}
.tdpd-catcta-go{background:#2F55D4;color:#fff}
.tdpd-catcta-go:hover,.tdpd-catcta-go:focus{background:#2647b5;color:#fff;text-decoration:none}
.tdpd-catcta-call{background:#fff;color:#20242c;border:1px solid #DCD7CC!important}
.tdpd-catcta-call:hover,.tdpd-catcta-call:focus{background:#F2EFE9;color:#20242c;text-decoration:none}
@media (max-width:767px){
  .tdpd-catcta{padding:18px;gap:14px;margin:22px 0 8px}
  .tdpd-catcta-t b{font-size:17px}
  .tdpd-catcta-a{width:100%}
  .tdpd-catcta-a a,.tdpd-catcta-a button{flex:1 1 0;min-width:0;padding:0 12px}
}

/* --- 5. Ленты посадочной уезжают под список (телефон) ------------------
   Замер на 375px: до первой карточки товара было 2024px — две с половиной
   высоты экрана, из них 1463px занимали хиро с формой и две ленты доверия.
   Отказы мобильной рекламы на разделах ДОУ 51,5% против 36,4% на десктопе
   (16.08-13.09). Ленты БЕЗ формы скрипт переносит под список; хиро с формой
   остаётся на месте — её клиент принял 15.08. */
@media (max-width:767px){
  .content-row > .tdb-band.tdpd-band-moved{margin-top:24px}
}


/* ======================================================================
   TDPD 14.09.2026: скидки — точка входа на /specials/.

   Два места: строка рельса мегаменю (≥1201px) и строка мобильной
   шторки (≤1200px). Пилюля в шапке была третьим, но не прижилась —
   в header.tpl её разметка снова спит за `$tdpd_sale_on = false`.

   Фоны строки рельса — с !important: правило ховера .tdpd-rail-static
   выше по файлу тоже с !important.
   ====================================================================== */

@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */

  /* Пилюля в шапке отсюда убрана в тот же вечер: клиент посмотрел —
     под кнопкой каталога не вписывается. Вместе с ней ушёл и мой
     `grid-row:1` у .main-menu__button: правило 06.09 `grid-row:1 / 3`
     снова единственное, кнопка стоит как стояла. */

  /* --- Строка рельса -------------------------------------------------
     Соседние строки нейтральные; этой нужен акцент, иначе она теряется
     между «Готовыми комплектами» и «В наличии». Рост и сетка те же 52px,
     меняем только цвет. */
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sale > a{background:#FFF4F0!important}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sale > a:hover{background:#FFE7DE!important}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sale > a .tdpd-rail-ico,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sale > a:hover .tdpd-rail-ico{color:#E04A1E}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sale > a .tdpd-rail-t,
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sale > a:hover .tdpd-rail-t{
    color:#20242C!important;font-weight:500}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sale > a .tdpd-rail-t small{color:#A8724F}
  #tdpd-menu-box #menu ul.menu > li.tdpd-rail-sale > a .tdpd-rail-pct{
    flex:0 0 auto;margin-left:auto;padding:2px 8px;
    background:#FF5A2E;border-radius:999px;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;
    font-size:11px;font-weight:600;line-height:15px;color:#fff;white-space:nowrap}
}

@media (max-width:1200px){
  /* --- Строка мобильной шторки --------------------------------------
     Раскладка как у соседней «Готовые комплекты» (.tdpd-mm2-kits): та же
     высота, те же отступы и рамка, цвет — акцентный. */
  .tdpd-mm2-sale{display:flex;align-items:center;gap:12px;
    min-height:56px;margin-top:8px;padding:8px 14px;
    border:1px solid #FFD9CB;border-radius:12px;background:#FFF4F0;
    color:#20242C!important;text-decoration:none!important}
  .tdpd-mm2-sale .tdpd-mm2-ico{color:#E04A1E}
  .tdpd-mm2-sale .tdpd-mm2-kt small{color:#A8724F}
  .tdpd-mm2-pct{flex:0 0 auto;padding:3px 9px;
    background:#FF5A2E;border-radius:999px;
    font-size:11px;font-weight:600;line-height:15px;color:#fff;white-space:nowrap}
}


/* ======================================================================
   TDPD 18.09.2026 — плашка про cookie (модуль tdpdCookieNote в tdpd.js).

   Разметку печатает скрипт, здесь только вид. Класс один на все экраны,
   различия — в двух медиаблоках ниже, рядом с базовыми правилами.

   Место выбрано по тому, что уже занято снизу:
   · справа внизу на десктопе живут виджет звонка (#uptocall-mini, 999)
     и чат Битрикса (10150) — поэтому плашка стоит СЛЕВА;
   · на телефоне низ занимает островок #tdpd-tabbar (1001, отступ 10px
     от края, высота ~62px) и липкая панель покупки #tdpd-buybar (1002) —
     поэтому плашка поднята на 80px и лежит выше них по z-index.
   ====================================================================== */

.tdpd-cc{
  position:fixed;z-index:1003;
  left:20px;bottom:20px;width:376px;max-width:calc(100vw - 40px);
  display:flex;align-items:flex-start;gap:12px;
  padding:16px 18px;
  background:#fff;border:1px solid #E8E3D8;border-radius:16px;
  box-shadow:0 12px 34px rgba(40,32,12,.16),0 2px 8px rgba(32,36,44,.06);
  font-family:"Rubik","Segoe UI",Arial,sans-serif;
  /* Появление: скрипт снимает .tdpd-cc-hid через кадр после вставки,
     чтобы браузер успел применить начальное состояние и показал переход. */
  opacity:1;transform:translateY(0);
  transition:opacity .28s ease,transform .28s ease;
}
.tdpd-cc-hid{opacity:0;transform:translateY(14px);pointer-events:none}

/* Иконка. Кружок песочного цвета — тот же, что у карточек на главной
   (#FAF6EC), чтобы плашка читалась своей, а не чужим баннером. */
.tdpd-cc-ico{
  flex:0 0 auto;width:36px;height:36px;margin-top:1px;
  display:flex;align-items:center;justify-content:center;
  background:#FAF6EC;border-radius:50%;
}
.tdpd-cc-ico svg{width:20px;height:20px;stroke:#A8724F;fill:none;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

.tdpd-cc-b{flex:1 1 auto;min-width:0}
.tdpd-cc-t{
  margin:0 0 10px;font-size:13px;line-height:1.5;color:#4a4640;
}
.tdpd-cc-t a{color:#2F55D4;text-decoration:none;border-bottom:1px solid rgba(47,85,212,.3)}
.tdpd-cc-t a:hover{color:#24409E;border-bottom-color:rgba(36,64,158,.5)}
.tdpd-cc-short{display:none}
@media (max-width:992px){ .tdpd-cc-short{display:inline} }

.tdpd-cc-ok{
  height:36px;padding:0 20px;
  border:0;border-radius:10px;background:#2F55D4;color:#fff;
  font-family:inherit;font-size:13.5px;font-weight:500;line-height:36px;
  cursor:pointer;
}
.tdpd-cc-ok:hover{background:#2646B0}
.tdpd-cc-ok:active{background:#20399A}

/* Пока открыта шторка меню или любое модальное окно, плашку не показываем:
   там она ложится поверх кнопок (та же причина, по которой прячется
   #tdpd-tabbar). */
body.tdpd-drawer-open .tdpd-cc,
body.tdpd-modal-on .tdpd-cc{display:none}

@media (max-width:992px){
  .tdpd-cc{
    left:12px;right:12px;width:auto;max-width:none;
    bottom:calc(80px + env(safe-area-inset-bottom));
    padding:14px 15px;gap:11px;border-radius:14px;
  }
  /* TDPD 03.11.2026: было 145px в высоту и до нажатия «Хорошо» лежало
     поверх «Отправить заявку». Теперь одна строка ~48px: короткий текст
     и кнопка рядом, иконки нет. Пока человек печатает в поле, плашки нет. */
  .tdpd-cc{align-items:center;padding:8px 8px 8px 14px;gap:10px}
  .tdpd-cc-ico{display:none}
  .tdpd-cc-b{display:flex;align-items:center;gap:10px}
  .tdpd-cc-t{flex:1 1 auto;margin:0;font-size:12.5px;line-height:1.35}
  .tdpd-cc-t .tdpd-cc-long{display:none}
  .tdpd-cc-ok{flex:0 0 auto;height:32px;line-height:32px;padding:0 16px;font-size:13px}
  body.tdpd-typing .tdpd-cc{display:none}

  /* Кнопка чата Битрикса поднята над островком (bottom:96px) и приходится
     ровно на правый край плашки, а её z-index 10150 не перебить. Пока
     плашка на экране — прячем кнопку, как это уже делает открытая шторка
     меню строкой выше по файлу. */
  body.tdpd-cc-on .b24-widget-button-wrapper.b24-widget-button-position-bottom-right{
    display:none!important;
  }
}


@media (prefers-reduced-motion:reduce){
  .tdpd-cc{transition:none}
}

/* ======================================================================
   19.09.2026. ЛИЧНЫЙ КАБИНЕТ И ВХОД ЧЕРЕЗ СОЦСЕТИ
   Свои классы tdpd-auth-* (вход), tdpd-soc-* (кнопки соцсетей),
   tdpd-lk-* (кабинет). Разметка темы в этих разделах заменена целиком,
   поэтому с легаси-правилами .account-content пересечений нет.
   ====================================================================== */

/* --- Вход и регистрация ------------------------------------------------- */

.tdpd-auth{max-width:1100px;margin:0 auto;padding:0 0 48px}

.tdpd-auth-grid{
  display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:24px;align-items:start;
}
.tdpd-auth-one{grid-template-columns:minmax(0,560px);justify-content:center}

.tdpd-auth-card{
  background:#fff;border:1px solid #DDE1E8;border-radius:14px;padding:32px 32px 28px;
}
.tdpd-auth-h{
  margin:0 0 20px;font-size:26px;line-height:1.2;font-weight:700;color:#20242C;
}
.tdpd-auth-hello{margin:0 0 6px;font-size:16px;font-weight:600;color:#20242C}
.tdpd-auth-lead{margin:0 0 20px;font-size:15px;line-height:1.5;color:#7A756C}

.tdpd-auth-note{
  border-radius:10px;padding:12px 16px;margin:0 0 18px;font-size:14px;line-height:1.45;
}
.tdpd-auth-ok{background:#EDF6ED;color:#26603A;border:1px solid #CDE4D3}
.tdpd-auth-err{background:#FDEEE9;color:#9E2F12;border:1px solid #F5CDBF}

/* Поля */
.tdpd-auth-f{margin:0 0 16px}
.tdpd-auth-f label{
  display:block;margin:0 0 6px;font-size:13px;font-weight:600;color:#20242C;
}
.tdpd-auth-opt{font-weight:400;color:#8C93A0}
.tdpd-auth-f input{
  display:block;width:100%;height:48px;padding:0 16px;
  border:1px solid #DDE1E8;border-radius:10px;background:#fff;
  font-size:15px;color:#20242C;box-shadow:none;transition:border-color .15s;
}
.tdpd-auth-f input:focus{border-color:#2F55D4;outline:none}
.tdpd-auth-f input::placeholder{color:#B8BEC9}

.tdpd-auth-go{
  display:block;width:100%;height:50px;border:0;border-radius:10px;
  background:#2F55D4;color:#fff;font-size:16px;font-weight:600;cursor:pointer;
  transition:background .15s;
}
.tdpd-auth-go:hover{background:#24409E}

.tdpd-auth-forgot{
  display:inline-block;margin:14px 0 0;font-size:14px;color:#7A756C;
  border-bottom:1px dashed #B8BEC9;text-decoration:none;
}
.tdpd-auth-forgot:hover{color:#2F55D4;border-bottom-color:#2F55D4;text-decoration:none}

.tdpd-auth-agree{
  display:flex;gap:10px;align-items:flex-start;margin:0 0 20px;
  font-size:13px;line-height:1.45;color:#7A756C;font-weight:400;cursor:pointer;
}
.tdpd-auth-agree input{margin:2px 0 0;flex:0 0 auto}
.tdpd-auth-agree a{color:#2F55D4}

/* Правая колонка «впервые у нас» */
.tdpd-auth-side{
  background:#FAF6EC;border:1px solid #E6DCC4;border-radius:14px;padding:28px 26px;
}
.tdpd-auth-side-h{font-size:19px;font-weight:700;color:#20242C;margin:0 0 8px}
.tdpd-auth-side-p{font-size:14px;line-height:1.5;color:#7A756C;margin:0 0 18px}
.tdpd-auth-plus{list-style:none;margin:0 0 22px;padding:0}
.tdpd-auth-plus li{
  position:relative;padding:0 0 0 26px;margin:0 0 12px;
  font-size:14px;line-height:1.45;color:#4A4640;
}
.tdpd-auth-plus li:before{
  content:"";position:absolute;left:0;top:5px;width:16px;height:16px;border-radius:50%;
  background:#2F55D4 url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 8.4l2.6 2.6L12 5.6' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat;
}
.tdpd-auth-plus b{color:#20242C;font-weight:600}
.tdpd-auth-reg{
  display:block;height:48px;line-height:46px;border:1px solid #2F55D4;border-radius:10px;
  background:#fff;color:#2F55D4;font-size:15px;font-weight:600;text-align:center;text-decoration:none;
}
.tdpd-auth-reg:hover{background:#2F55D4;color:#fff;text-decoration:none}

/* --- Кнопки соцсетей ---------------------------------------------------- */

.tdpd-soc{margin:0 0 24px}
.tdpd-soc-lbl{
  font-size:13px;font-weight:600;color:#20242C;margin:0 0 10px;
}
.tdpd-soc-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.tdpd-soc-row:only-child{margin-bottom:0}

.tdpd-soc-b{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  min-height:76px;padding:10px 4px;border:1px solid #DDE1E8;border-radius:12px;
  background:#fff;color:#7A756C;text-decoration:none;text-align:center;
  transition:border-color .15s,box-shadow .15s,transform .15s;
}
.tdpd-soc-b:hover{
  text-decoration:none;border-color:#B8BEC9;box-shadow:0 4px 14px rgba(32,36,44,.09);transform:translateY(-1px);
}
.tdpd-soc-b span{font-size:11px;line-height:1.2;font-weight:600;color:#7A756C}
.tdpd-soc-i{display:block;width:30px;height:30px;border-radius:50%;padding:3px;fill:#fff}

/* Фирменные цвета кружков */
.tdpd-soc-vkid    .tdpd-soc-i{background:#0077FF}
.tdpd-soc-ok_ru   .tdpd-soc-i{background:#EE8208}
.tdpd-soc-mail_ru .tdpd-soc-i{background:#005FF9}
.tdpd-soc-yandex  .tdpd-soc-i{background:#FC3F1D}

.tdpd-soc-vkid:hover   {border-color:#0077FF}
.tdpd-soc-ok_ru:hover  {border-color:#EE8208}
.tdpd-soc-mail_ru:hover{border-color:#005FF9}
.tdpd-soc-yandex:hover {border-color:#FC3F1D}

/* Разделитель «или по почте» */
.tdpd-soc-or{
  display:flex;align-items:center;gap:12px;margin:20px 0 0;
  font-size:13px;color:#8C93A0;
}
.tdpd-soc-or:before,.tdpd-soc-or:after{content:"";flex:1 1 auto;height:1px;background:#E2E4E9}

.tdpd-soc-reg{max-width:560px;margin:0 auto 26px}

@media (max-width:991px){
  .tdpd-auth-grid{grid-template-columns:minmax(0,1fr)}
  .tdpd-auth-one{grid-template-columns:minmax(0,1fr)}
}

@media (max-width:600px){
  .tdpd-auth{padding-bottom:32px}
  .tdpd-auth-card{padding:22px 18px 20px;border-radius:12px}
  .tdpd-auth-side{padding:22px 18px;border-radius:12px}
  .tdpd-auth-h{font-size:22px}
  /* Четыре кнопки в ряд на телефоне превращаются в нечитаемые марки —
     ставим по две. */
  .tdpd-soc-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tdpd-soc-b{min-height:66px}
  .tdpd-soc-b span{font-size:12px}
}

/* --- 01.10.2026: выход, регистрация, пароль, окно входа -----------------
   Одна карточка по центру (.tdpd-auth-solo) — выход, «кабинет создан»,
   восстановление и новый пароль. Регистрация — та же сетка, что вход.
   Окно входа из шапки — #auth-popup.tdpd-ap (oct_popup_login.tpl). */

/* кнопки соцсетей: сколько провайдеров — столько равных колонок
   (было 4 колонки под 3 кнопки — справа оставалась дыра) */
.tdpd-soc-row{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}

.tdpd-auth-solo{max-width:480px;margin:8px auto 0}
.tdpd-auth-solo .tdpd-auth-card{padding:36px 36px 30px;text-align:center}
.tdpd-auth-solo .tdpd-auth-h{margin:0 0 10px}
.tdpd-auth-solo .tdpd-auth-lead{margin:0 auto 24px;max-width:360px}
.tdpd-auth-solo form,.tdpd-auth-solo .tdpd-auth-note{text-align:left}

.tdpd-auth-ico{
  display:flex;align-items:center;justify-content:center;width:60px;height:60px;
  margin:0 auto 18px;border-radius:50%;background:#EEF2FD;color:#2F55D4;
  animation:tdpdAuthPop .45s cubic-bezier(.2,.9,.3,1.3) both;
}
.tdpd-auth-ico svg{width:28px;height:28px}
.tdpd-auth-ico.is-ok{background:#EDF6ED;color:#2F8F4E}
@keyframes tdpdAuthPop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}

/* кнопки: основная (уже есть .tdpd-auth-go) + спокойная вторая */
.tdpd-auth-acts{display:flex;flex-direction:column;gap:10px}
a.tdpd-auth-go{line-height:50px;text-align:center;text-decoration:none}
a.tdpd-auth-go:hover,a.tdpd-auth-go:focus{color:#fff;text-decoration:none}
.tdpd-auth-ghost{
  display:block;height:50px;line-height:48px;border:1px solid #DDE1E8;border-radius:10px;
  background:#fff;color:#20242C;font-size:15px;font-weight:600;text-align:center;text-decoration:none;
  transition:border-color .15s,background .15s;
}
.tdpd-auth-ghost:hover,.tdpd-auth-ghost:focus{border-color:#B8BEC9;background:#F7F8FA;color:#20242C;text-decoration:none}
.tdpd-auth-go[disabled]{opacity:.7;cursor:default}

.tdpd-auth-note a{color:inherit;font-weight:600;text-decoration:underline}

/* нижняя строка «Уже есть кабинет? Войти» */
.tdpd-auth-alt{
  margin:22px 0 0;padding:18px 0 0;border-top:1px solid #EEF0F3;
  font-size:14px;color:#7A756C;text-align:center;
}
.tdpd-auth-alt a{color:#2F55D4;font-weight:600;text-decoration:none}
.tdpd-auth-alt a:hover{text-decoration:underline}

/* мелкий текст согласия под кнопкой */
.tdpd-auth-fine{margin:12px 0 0;font-size:12.5px;line-height:1.45;color:#8C93A0;text-align:center}
.tdpd-auth-fine a{color:#7A756C;text-decoration:underline}

/* ошибки у поля */
.tdpd-auth-f input.is-bad{border-color:#E5735A}
.tdpd-auth-ferr{margin:6px 0 0;font-size:13px;line-height:1.35;color:#B3261E}
.tdpd-auth-hint{margin:6px 0 0;font-size:12.5px;line-height:1.35;color:#8C93A0}

/* пароль с «глазом» */
.tdpd-auth-pw{position:relative}
.tdpd-auth-f .tdpd-auth-pw input{padding-right:52px}
.tdpd-pw-eye{
  position:absolute;top:4px;right:4px;width:40px;height:40px;padding:0;border:0;border-radius:8px;
  background:none;color:#8C93A0;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:color .15s,background .15s;
}
.tdpd-pw-eye:hover{color:#20242C;background:#F2F4F7}
.tdpd-pw-eye svg{width:20px;height:20px}
.tdpd-pw-eye .tdpd-eye-off{display:none}
.tdpd-pw-eye.is-on .tdpd-eye-on{display:none}
.tdpd-pw-eye.is-on .tdpd-eye-off{display:block}

/* два поля в строку (телефон + почта) */
.tdpd-auth-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 14px}

/* регистрация: карточка формы сразу под заголовком, без «одёжки» .tdpd-reg */
.tdpd-auth .tdpd-auth-card .tdpd-auth-lead{margin-top:-12px}

/* --- окно входа из шапки -------------------------------------------- */
#auth-popup.tdpd-ap{
  position:relative;width:auto;max-width:420px;margin:20px auto;padding:30px 30px 24px;
  border-radius:16px!important;background:#fff;box-shadow:0 24px 60px rgba(20,25,60,.22);text-align:left;
}
#auth-popup.tdpd-ap .mfp-close{top:6px;right:6px;width:38px;height:38px;padding:0!important;line-height:38px!important;font-size:26px;color:#9aa0a6;opacity:1}
#auth-popup.tdpd-ap .mfp-close:hover{color:#20242c}
.tdpd-ap-h{margin:0 0 4px;font-size:22px;line-height:1.25;font-weight:700;color:#20242C}
.tdpd-ap-sub{margin:0 0 20px;font-size:14px;line-height:1.45;color:#7A756C}
.tdpd-ap .tdpd-soc{margin:0 0 18px}
.tdpd-ap .tdpd-soc-b{min-height:66px}
.tdpd-ap .tdpd-soc-or{margin-top:16px}
.tdpd-ap .tdpd-auth-f{margin:0 0 12px}
.tdpd-ap .tdpd-auth-f input{
  height:48px;margin:0;border:1px solid #DDE1E8;border-radius:10px;background:#fff;background-image:none;filter:none;
  box-shadow:none;font-size:15px;color:#20242C;
}
.tdpd-ap .tdpd-auth-f input:focus{border-color:#2F55D4;box-shadow:0 0 0 3px rgba(47,85,212,.12);outline:none}
.tdpd-ap .tdpd-auth-f input::-webkit-input-placeholder{font-family:inherit;font-size:15px;color:#B8BEC9}
.tdpd-ap .tdpd-auth-f input::-moz-placeholder{font-family:inherit;font-size:15px;color:#B8BEC9;opacity:1}
.tdpd-ap .tdpd-auth-f input:-ms-input-placeholder{font-family:inherit;font-size:15px;color:#B8BEC9}
.tdpd-ap .tdpd-auth-f input::placeholder{font-family:inherit;font-size:15px;color:#B8BEC9}
/* stylesheet_tdpd.css: .mfp-wrap button{background:transparent} (0,1,1) — кнопка становилась белой на белом */
.tdpd-ap button.tdpd-auth-go{background:#2F55D4}
.tdpd-ap button.tdpd-auth-go:hover{background:#24409E}
.tdpd-ap-row{display:flex;justify-content:flex-end;margin:-2px 0 14px}
.tdpd-ap-row .tdpd-auth-forgot{margin:0;font-size:13.5px}
.tdpd-ap .tdpd-auth-note{margin:0 0 14px;animation:tdpdApShake .35s}
.tdpd-ap .tdpd-auth-alt{margin-top:18px;padding-top:16px}
@keyframes tdpdApShake{0%,100%{transform:none}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}

/* кнопка «Входим…» — крутилка вместо текста не нужна, хватает подписи */
.tdpd-auth-go.is-busy{opacity:.75;cursor:progress}

@media (prefers-reduced-motion:reduce){
  .tdpd-auth-ico,.tdpd-ap .tdpd-auth-note{animation:none}
}

@media (max-width:600px){
  .tdpd-auth-solo{margin-top:0}
  .tdpd-auth-solo .tdpd-auth-card{padding:28px 20px 22px}
  .tdpd-auth-2{grid-template-columns:minmax(0,1fr)}
  #auth-popup.tdpd-ap{margin:12px;padding:26px 18px 20px}
  .tdpd-ap-h{font-size:20px}
  /* три плитки соцсетей в ряд на узком экране — подпись мельче, но целиком */
  .tdpd-soc-row{gap:8px}
  .tdpd-soc-b{padding:10px 2px}
  .tdpd-soc-b span{font-size:10.5px;letter-spacing:-.1px}
}

/* --- Личный кабинет ------------------------------------------------------ */

.tdpd-lk{max-width:1100px;margin:0 auto;padding:0 0 48px}

.tdpd-lk-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 22px;
}
.tdpd-lk-h{margin:0 0 4px;font-size:28px;line-height:1.2;font-weight:700;color:#20242C}
.tdpd-lk-sub{margin:0;font-size:14px;line-height:1.5;color:#7A756C;max-width:620px}
.tdpd-lk-out{
  flex:0 0 auto;height:38px;line-height:36px;padding:0 16px;border:1px solid #DDE1E8;
  border-radius:9px;background:#fff;color:#7A756C;font-size:14px;text-decoration:none;
}
.tdpd-lk-out:hover{border-color:#B8BEC9;color:#20242C;text-decoration:none}

/* Три числа */
.tdpd-lk-nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 20px}
.tdpd-lk-num{
  display:block;padding:18px 20px;border:1px solid #DDE1E8;border-radius:12px;background:#fff;
  text-decoration:none;transition:border-color .15s,box-shadow .15s;
}
.tdpd-lk-num:hover{border-color:#2F55D4;box-shadow:0 4px 14px rgba(47,85,212,.1);text-decoration:none}
.tdpd-lk-num-n{display:block;font-size:30px;line-height:1.1;font-weight:700;color:#2F55D4}
.tdpd-lk-num-t{display:block;margin-top:4px;font-size:14px;color:#7A756C}

/* Последняя смета */
.tdpd-lk-last{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:22px 26px;margin:0 0 24px;border-radius:14px;
  background:#FAF6EC;border:1px solid #E6DCC4;
}
.tdpd-lk-last-empty{background:#fff;border-color:#DDE1E8}
.tdpd-lk-eyebrow{
  font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#7A756C;margin:0 0 6px;
}
.tdpd-lk-last-code{font-size:20px;font-weight:700;color:#20242C}
.tdpd-lk-last-meta{margin-top:4px;font-size:14px;line-height:1.5;color:#7A756C;max-width:560px}
.tdpd-lk-last-r{flex:0 0 auto;text-align:right}
.tdpd-lk-last-sum{font-size:24px;font-weight:700;color:#20242C;margin:0 0 10px;white-space:nowrap}

.tdpd-lk-btn{
  display:inline-block;height:44px;line-height:44px;padding:0 24px;border:0;border-radius:10px;
  background:#2F55D4;color:#fff;font-size:15px;font-weight:600;text-decoration:none;white-space:nowrap;
}
.tdpd-lk-btn:hover{background:#24409E;color:#fff;text-decoration:none}
.tdpd-lk-btn-sm{height:38px;line-height:38px;padding:0 18px;font-size:14px}

/* Плитки разделов */
.tdpd-lk-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 22px}
.tdpd-lk-tile{
  display:block;padding:20px;border:1px solid #DDE1E8;border-radius:12px;background:#fff;
  text-decoration:none;transition:border-color .15s,box-shadow .15s;
}
.tdpd-lk-tile:hover{border-color:#2F55D4;box-shadow:0 4px 14px rgba(47,85,212,.1);text-decoration:none}
.tdpd-lk-tile svg{display:block;width:26px;height:26px;margin:0 0 12px;color:#2F55D4}
.tdpd-lk-tile b{display:block;font-size:16px;font-weight:600;color:#20242C;margin:0 0 4px}
.tdpd-lk-tile span{display:block;font-size:13px;line-height:1.45;color:#8C93A0}

/* Полоска последнего заказа */
.tdpd-lk-strip{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:14px 20px;margin:0 0 22px;border:1px solid #DDE1E8;border-radius:10px;
  font-size:14px;color:#7A756C;background:#fff;
}
.tdpd-lk-strip a{color:#2F55D4;white-space:nowrap}

/* Помощь */
.tdpd-lk-help{
  padding:22px 26px;border-radius:12px;background:#EDF1FD;border:1px solid #D6DFF8;
}
.tdpd-lk-help-t{font-size:16px;font-weight:600;color:#20242C;margin:0 0 4px}
.tdpd-lk-help-p{font-size:14px;line-height:1.5;color:#7A756C;margin:0 0 10px;max-width:620px}
.tdpd-lk-help-tel{font-size:20px;font-weight:700;color:#2F55D4;text-decoration:none}
.tdpd-lk-help-tel:hover{color:#24409E;text-decoration:none}

/* Список смет и заказов */
.tdpd-lk-list{display:flex;flex-direction:column;gap:12px;margin:0 0 22px}
.tdpd-lk-row{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:18px 22px;border:1px solid #DDE1E8;border-radius:12px;background:#fff;
}
.tdpd-lk-row-main{min-width:0}
.tdpd-lk-row-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 6px}
.tdpd-lk-row-code{font-size:17px;font-weight:700;color:#20242C;text-decoration:none}
.tdpd-lk-row-code:hover{color:#2F55D4;text-decoration:none}
.tdpd-lk-tag{
  display:inline-block;height:22px;line-height:22px;padding:0 10px;border-radius:11px;
  background:#F0F2F6;color:#7A756C;font-size:12px;font-weight:600;
}
.tdpd-lk-tag-req{background:#FDEEE9;color:#9E2F12}
.tdpd-lk-row-names{
  font-size:14px;line-height:1.45;color:#4A4640;margin:0 0 4px;
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
}
.tdpd-lk-row-meta{font-size:13px;color:#8C93A0}
.tdpd-lk-row-side{flex:0 0 auto;text-align:right}
.tdpd-lk-row-sum{font-size:19px;font-weight:700;color:#20242C;margin:0 0 10px;white-space:nowrap}
.tdpd-lk-row-acts{display:flex;align-items:center;gap:14px;justify-content:flex-end}
.tdpd-lk-link{font-size:13px;color:#7A756C;border-bottom:1px dashed #B8BEC9;text-decoration:none}
.tdpd-lk-link:hover{color:#2F55D4;border-bottom-color:#2F55D4;text-decoration:none}

.tdpd-lk-empty{
  padding:42px 30px;text-align:center;border:1px dashed #DDE1E8;border-radius:14px;background:#fff;
}
.tdpd-lk-empty-h{font-size:19px;font-weight:700;color:#20242C;margin:0 0 8px}
.tdpd-lk-empty p{font-size:14px;line-height:1.55;color:#7A756C;max-width:520px;margin:0 auto 18px}

.tdpd-lk-pag{margin:0 0 22px}
.tdpd-lk-pag .pagination{margin:0}

@media (max-width:991px){
  .tdpd-lk-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:767px){
  .tdpd-lk{padding-bottom:32px}
  .tdpd-lk-h{font-size:23px}
  .tdpd-lk-head{flex-wrap:wrap}
  .tdpd-lk-nums{gap:8px}
  .tdpd-lk-num{padding:14px}
  .tdpd-lk-num-n{font-size:24px}
  .tdpd-lk-num-t{font-size:13px}
  /* Смета и её сумма в столбик: на 375px сумма рядом с названием не влезает
     и выталкивает кнопки за экран. */
  .tdpd-lk-last,.tdpd-lk-row{flex-direction:column;align-items:stretch;padding:18px}
  .tdpd-lk-last-r,.tdpd-lk-row-side{text-align:left;margin-top:14px}
  .tdpd-lk-row-acts{justify-content:flex-start}
  .tdpd-lk-btn{display:block;text-align:center}
  .tdpd-lk-btn-sm{display:inline-block}
  .tdpd-lk-help{padding:18px}
}

@media (max-width:480px){
  .tdpd-lk-tiles{grid-template-columns:minmax(0,1fr)}
  .tdpd-lk-tile{padding:16px}
  .tdpd-lk-tile svg{margin-bottom:8px}
}

/* --- Профиль: форма и колонка быстрого входа ---------------------------- */

.tdpd-lk-cols{
  display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start;
}
.tdpd-lk-side{
  background:#FAF6EC;border:1px solid #E6DCC4;border-radius:14px;padding:24px 22px;
}
.tdpd-lk-side-h{font-size:17px;font-weight:700;color:#20242C;margin:0 0 6px}
.tdpd-lk-side-p{font-size:13px;line-height:1.5;color:#7A756C;margin:0 0 16px}

.tdpd-lk-soc{display:flex;flex-direction:column;gap:12px}
.tdpd-lk-soc-i{display:flex;align-items:center;gap:10px}
/* Кружок значка тут без рамки и подписи кнопки — только сама иконка */
.tdpd-lk-soc-ico{
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  min-height:0;padding:0;border:0;background:none;box-shadow:none;transform:none;
}
.tdpd-lk-soc-ico:hover{box-shadow:none;transform:none;border:0}
.tdpd-lk-soc-n{flex:1 1 auto;font-size:14px;color:#20242C}

.tdpd-auth-fe{margin-top:6px;font-size:13px;color:#9E2F12}

@media (max-width:991px){
  .tdpd-lk-cols{grid-template-columns:minmax(0,1fr)}
}

/* Строка с картинкой (избранное) */
.tdpd-lk-prow{gap:16px}
.tdpd-lk-prow-img{flex:0 0 auto;display:block;width:84px;height:84px;border-radius:10px;overflow:hidden;background:#F5F6F8}
.tdpd-lk-prow-img img{display:block;width:100%;height:100%;object-fit:contain}
.tdpd-lk-old{font-size:14px;font-weight:400;color:#8C93A0;margin-left:6px}
.tdpd-lk-add{margin:0 0 22px}

@media (max-width:767px){
  /* Карточка товара: картинка слева от текста, а не отдельной строкой */
  .tdpd-lk-prow{flex-direction:row;flex-wrap:wrap;align-items:flex-start}
  .tdpd-lk-prow-img{width:64px;height:64px}
  .tdpd-lk-prow .tdpd-lk-row-main{flex:1 1 0;min-width:0}
  .tdpd-lk-prow .tdpd-lk-row-side{flex:1 1 100%}
}

/* --- Регистрация: разметка темы, приведённая к виду кабинета ------------
   Шаблон register.tpl не переписан намеренно: в нём живут скрытые поля с
   заглушками, зоны, капча и сортировка дополнительных полей скриптом. Мы
   его только одеваем — класс .tdpd-reg на #content.
   ----------------------------------------------------------------------- */

.tdpd-reg{max-width:1100px;margin:0 auto;padding:0 0 48px}

.tdpd-reg-head{margin:0 0 22px}
.tdpd-reg-already{margin:10px 0 0;font-size:14px;color:#7A756C}
.tdpd-reg-already a{color:#2F55D4}

.tdpd-reg form{
  background:#fff;border:1px solid #DDE1E8;border-radius:14px;padding:28px 26px 22px;
}
.tdpd-reg fieldset{border:0;margin:0 0 6px;padding:0}
.tdpd-reg legend{
  border:0;margin:0 0 16px;padding:0;
  font-size:17px;font-weight:700;color:#20242C;
}
.tdpd-reg .form-group{margin:0 0 16px}
.tdpd-reg .form-group > label.control-label,
.tdpd-reg .form-group > .col-sm-12 > label.control-label{
  display:block;float:none;width:auto;margin:0 0 6px;padding:0;text-align:left;
  font-size:13px;font-weight:600;color:#20242C;
}
.tdpd-reg .form-group > .col-sm-12{padding-left:0;padding-right:0;width:100%}

.tdpd-reg .form-control{
  display:block;width:100%;height:48px;padding:0 16px;
  border:1px solid #DDE1E8;border-radius:10px;background:#fff;
  font-size:15px;color:#20242C;box-shadow:none;
}
.tdpd-reg select.form-control{padding-right:34px}
.tdpd-reg .form-control:focus{border-color:#2F55D4;box-shadow:none}
.tdpd-reg .form-control::placeholder{color:#B8BEC9}
.tdpd-reg textarea.form-control{height:auto;padding:12px 16px}

.tdpd-reg .text-danger{margin-top:6px;font-size:13px;color:#9E2F12}

.tdpd-reg .radio,
.tdpd-reg .checkbox{margin:0 0 8px}
.tdpd-reg .radio label,
.tdpd-reg .checkbox label,
.tdpd-reg .radio-inline{font-size:14px;color:#4A4640;font-weight:400}

/* Кнопка и согласие: в теме они прижаты вправо и разъезжаются на телефоне */
.tdpd-reg .buttons{margin-top:18px}
.tdpd-reg .buttons .pull-right{float:none!important;display:block}
.tdpd-reg .buttons label.control-label{
  display:inline;font-size:13px;line-height:1.45;color:#7A756C;font-weight:400;
}
.tdpd-reg .buttons a{color:#2F55D4}
.tdpd-reg .buttons input[type="submit"]{
  display:block;width:100%;max-width:320px;height:50px;margin:16px 0 0!important;
  border:0;border-radius:10px;background:#2F55D4;color:#fff;font-size:16px;font-weight:600;
}
.tdpd-reg .buttons input[type="submit"]:hover{background:#24409E}

.tdpd-reg .return-captcha-box{margin:0 0 6px;padding:0}
.tdpd-reg .return-captcha-box.col-sm-offset-3{margin-left:0}

@media (min-width:768px){
  /* Две колонки темы (данные слева, пароль и подписка справа) */
  .tdpd-reg form > .col-sm-6{padding-left:0;padding-right:26px}
  .tdpd-reg form > .col-sm-6 + .col-sm-6{padding-left:26px;padding-right:0;border-left:1px solid #EFF1F5}
}

@media (max-width:767px){
  .tdpd-reg{padding-bottom:32px}
  .tdpd-reg form{padding:20px 18px 18px;border-radius:12px}
  .tdpd-reg form > .col-sm-6{padding-left:0;padding-right:0}
  .tdpd-reg .buttons input[type="submit"]{max-width:none}
}

/* Легаси-правила темы для #content h1 и legend перебивают классы — поэтому
   здесь специфичность поднята до id, иначе заголовок остаётся капсом, а
   подписи разделов — по центру. */
#content.tdpd-reg h1.tdpd-lk-h{
  font-size:28px;line-height:1.2;font-weight:700;color:#20242C;text-transform:none;
  margin:0 0 4px;padding:0;
}
#content.tdpd-reg fieldset legend{
  font-size:17px;font-weight:700;color:#20242C;text-align:left;text-transform:none;
  border:0;margin:0 0 16px;padding:0;
}

/* --- Состав заказа ------------------------------------------------------- */

.tdpd-ord{max-width:1100px;margin:0 auto;padding:0 0 48px}
.tdpd-ord-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 22px;
}
#content.tdpd-ord h1.tdpd-lk-h{
  font-size:26px;line-height:1.2;font-weight:700;color:#20242C;text-transform:none;margin:0;padding:0;
}
.tdpd-ord .table-div{
  border:1px solid #DDE1E8;border-radius:12px;overflow:hidden;background:#fff;margin:0 0 14px;
}
.tdpd-ord .table{margin:0;border:0}
.tdpd-ord .table > tbody > tr > td,
.tdpd-ord .table > thead > tr > td{border-color:#EFF1F5;padding:12px 16px;font-size:14px;vertical-align:middle}
.tdpd-ord .wishlist-tr td{background:#F7F8FA;font-weight:600;color:#20242C}
.tdpd-ord .buttons{margin-top:18px}
.tdpd-ord .buttons .tdpd-button{border-radius:10px}

@media (max-width:767px){
  .tdpd-ord{padding-bottom:32px}
  .tdpd-ord-head{flex-wrap:wrap}
  .tdpd-ord .table > tbody > tr > td{padding:10px 12px;font-size:13px}
}

/* TDPD 21.09.2026: «Цена по запросу» вместо 0 ₽ (tdpd_card.tpl, product.tpl, tdpdPriceReq) */
.price.tdpd-price-req{font-size:16px!important;line-height:1.3!important;font-weight:600!important;color:#20242c}
#product-info-right .price.tdpd-price-req{font-size:22px!important}
.tdpd-sm-c-price.tdpd-price-req,.tdpd-sm-rowsum.tdpd-price-req{font-size:13px;color:#6b7280;font-weight:500}


/* ===== TDPD 22.09.2026: пустой поиск (/search/ без запроса) =====================
   Было: «Нет товаров, соответствующих критериям поиска» под строкой настроек —
   как будто искали и не нашли. Теперь приглашение: поле, частые запросы,
   входы в разделы и заявка по списку. */
.tdpd-sq{max-width:880px;margin:4px 0 48px;font-family:"Rubik","Segoe UI",Arial,sans-serif}
.tdpd-sq-form{position:relative;display:flex;align-items:stretch;height:60px;
  border:2px solid #2F55D4;border-radius:14px;background:#fff;overflow:hidden;
  box-shadow:0 6px 20px rgba(47,85,212,.10)}
.tdpd-sq-ico{position:absolute;left:20px;top:50%;transform:translateY(-50%);color:#8C93A0;pointer-events:none}
.tdpd-sq-form input{flex:1 1 auto;min-width:0;height:auto;border:0;outline:0;background:transparent;box-shadow:none;
  padding:0 16px 0 54px;font-size:17px;color:#20242C;-webkit-appearance:none;appearance:none}
.tdpd-sq-form input::placeholder{color:#8C93A0}
.tdpd-sq-form button{flex:0 0 auto;border:0;padding:0 30px;background:#2F55D4;color:#fff;
  font-size:16px;font-weight:500;cursor:pointer;transition:background-color .15s}
.tdpd-sq-form button:hover{background:#24409E}
.tdpd-sq-hint{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 0}
.tdpd-sq-hint span{font-size:13px;color:#8C93A0;margin-right:4px}
.tdpd-sq-hint a{display:inline-flex;align-items:center;height:32px;padding:0 13px;border:1px solid #E8E3D8;
  border-radius:999px;background:#fff;font-size:13px;color:#2E3340;text-decoration:none;transition:border-color .15s,color .15s}
.tdpd-sq-hint a:hover{border-color:#2F55D4;color:#2F55D4;text-decoration:none}
.tdpd-sq-h{margin:36px 0 14px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#8C93A0}
.tdpd-sq-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.tdpd-sq-card{display:flex;align-items:center;gap:14px;min-height:68px;padding:12px 16px;
  border:1px solid #E8E3D8;border-radius:14px;background:#fff;color:#20242C;text-decoration:none;
  transition:border-color .15s,box-shadow .15s}
.tdpd-sq-card:hover{border-color:#2F55D4;box-shadow:0 6px 18px rgba(20,25,60,.08);color:#20242C;text-decoration:none}
.tdpd-sq-card-i{flex:0 0 40px;display:flex;align-items:center;justify-content:center;width:40px;height:40px;
  border-radius:10px;background:#FAF6EC;color:#2F55D4}
.tdpd-sq-card-i svg{width:22px;height:22px}
.tdpd-sq-card-t{flex:1 1 auto;min-width:0;font-size:15px;font-weight:500}
.tdpd-sq-card-a{flex:0 0 auto;color:#B8BEC9;transition:color .15s,transform .15s}
.tdpd-sq-card:hover .tdpd-sq-card-a{color:#2F55D4;transform:translateX(2px)}
.tdpd-sq-cta{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:28px;
  padding:20px 22px;border-radius:14px;background:#FAF6EC;border:1px solid #E8E3D8}
.tdpd-sq-cta b{display:block;font-size:16px;font-weight:600;color:#20242C}
.tdpd-sq-cta span{display:block;margin-top:4px;font-size:13px;line-height:1.5;color:#7A756C}
.tdpd-sq-btn{flex:0 0 auto;display:inline-flex;align-items:center;height:46px;padding:0 20px;border-radius:12px;
  background:#2F55D4;color:#fff!important;font-size:14px;font-weight:500;text-decoration:none!important;white-space:nowrap;transition:background-color .15s}
.tdpd-sq-btn:hover{background:#24409E}
@media (max-width:767px){
  .tdpd-sq-form{height:52px}
  .tdpd-sq-form input{font-size:16px;padding-left:46px}
  .tdpd-sq-ico{left:16px}
  .tdpd-sq-form button{padding:0 18px}
  .tdpd-sq-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .tdpd-sq-card{min-height:58px;padding:10px 12px;gap:10px}
  .tdpd-sq-card-a{display:none}
  .tdpd-sq-cta{flex-direction:column;align-items:stretch}
  .tdpd-sq-btn{justify-content:center}
}


/* ===== TDPD 22.09.2026: мегаменю — рамка, тень, затемнение ======================
   Было: при открытии .menu-row становился белой полосой на всю ширину экрана
   (так прятали серые поля темы, правка 06.09), панель 1440px сливалась с ней и
   с белой страницей, а урезанная тень «0 22px 28px -20px» торчала только снизу
   грязной полосой. Теперь полоса прозрачная, у панели своя рамка и объёмная
   тень, а страницу под меню затемняет подложка. Подложка — на body, ниже шапки
   (у header z-index:900), поэтому само меню и шапка остаются светлыми. */
/* Затемнение — отдельный элемент #tdpd-mm-dim (его вставляет tdpd.js), а не
   body::after: псевдоэлемент Chrome перерисовывал не целиком — под меню
   страница оставалась светлой. Свой слой (will-change) рисуется всегда. */
#tdpd-mm-dim{display:none}
@media (min-width:993px){
  #tdpd-mm-dim{display:block;position:fixed;inset:0;z-index:899;
    background:rgba(20,24,36,.5);cursor:pointer;
    opacity:0;visibility:hidden;will-change:opacity;
    transition:opacity .18s ease-out,visibility 0s linear .18s}
  body.tdpd-mm-open #tdpd-mm-dim{opacity:1;visibility:visible;
    transition:opacity .18s ease-out,visibility 0s}
  /* Верхнюю полосу (регион, меню сайта, часы) не затемняем — она вне header. */
  body.tdpd-mm-open #top{position:relative;z-index:900}
  /* Левая колонка корневых разделов: слева было 0, подсветка «Детский сад»
     упиралась прямо в рамку панели. Отступ 12px, как справа; сама колонка
     240 → 252px (правило выше, #menu .navbar-collapse), чтобы «Готовые
     комплекты» не переносились. */
}
@media (min-width:993px){ /* TDPD 22.09.2026: меню было от 1201, на 993..1200 — компакт ниже */
  body.tdpd-mm-open .menu-row{background:transparent!important}
  #tdpd-menu-box #menu.navbar{
    border:1px solid #E8E3D8!important;border-top:0!important;
    border-radius:0 0 18px 18px!important;
    box-shadow:0 30px 60px -18px rgba(16,22,48,.38),0 2px 6px rgba(16,22,48,.06)!important}
  #tdpd-menu-box #menu.navbar > .navbar-collapse{border-bottom-left-radius:17px}
  #tdpd-menu-box #menu .tdpd-mm-category{border-bottom-right-radius:17px}
}


/* ===== TDPD 22.09.2026: компактное мегаменю, 993..1200px =========================
   Раньше на этой ширине открывалось старое меню темы и разваливалось («В
   наличииесть на складе», съехавшие иконки, серый фон). Теперь блоки нового
   меню работают от 993px; рельс «Часто ищут» здесь скрыт (не помещается),
   разделы идут в две колонки. Панель встаёт с полями по 16px — иначе она шла
   от края до края окна и рамка со скруглением были не видны. */
@media (min-width:993px) and (max-width:1200px){
  #tdpd-menu-box #menu.navbar{width:auto!important;margin:0 16px!important}
  .tdpd-mm-category > .dropdown-inner{gap:20px}
}


/* ===== TDPD 22.09.2026: мобильное меню — плавные переходы =========================
   Было: шторка выезжала, а экраны внутри («Каталог» → раздел → назад) менялись
   мгновенно, заголовок и «назад» — тоже рывком. Классы ставит tdpd.js
   (tdpdMobileMenu): fwd — вглубь, bwd — назад, in — первый показ. --tdpd-i —
   номер пункта для лесенки. */
@media (max-width:1200px){
  #tdpd-mmenu{transition:transform .34s cubic-bezier(.22,.8,.24,1), visibility .34s}
  .tdpd-mm2-scroll{overflow-x:hidden}

  .tdpd-mm2-pane.tdpd-mm2-fwd{animation:tdpdMm2Fwd .30s cubic-bezier(.22,.8,.24,1) backwards}
  .tdpd-mm2-pane.tdpd-mm2-bwd{animation:tdpdMm2Bwd .30s cubic-bezier(.22,.8,.24,1) backwards}

  .tdpd-mm2-pane.tdpd-mm2-fwd .tdpd-mm2-st,
  .tdpd-mm2-pane.tdpd-mm2-bwd .tdpd-mm2-st,
  .tdpd-mm2-pane.tdpd-mm2-in  .tdpd-mm2-st,
  .tdpd-mm2-tile.tdpd-mm2-rise{
    animation:tdpdMm2Item .34s cubic-bezier(.22,.8,.24,1) backwards;
    animation-delay:calc(var(--tdpd-i, 0) * 28ms + 40ms)}

  .tdpd-mm2-title.tdpd-mm2-tin{animation:tdpdMm2Title .26s ease-out backwards}
  .tdpd-mm2-back.tdpd-mm2-pop{animation:tdpdMm2Pop .26s cubic-bezier(.22,.8,.24,1) backwards}

  /* Нажатие — лёгкое утапливание, чтобы тап ощущался. */
  .tdpd-mm2-r,.tdpd-mm2-tile{transition:transform .12s ease, background-color .12s ease}
  .tdpd-mm2-r:active,.tdpd-mm2-tile:active{transform:scale(.98)}
}
@keyframes tdpdMm2Fwd{from{transform:translateX(28%);opacity:0}to{transform:none;opacity:1}}
@keyframes tdpdMm2Bwd{from{transform:translateX(-18%);opacity:0}to{transform:none;opacity:1}}
@keyframes tdpdMm2Item{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
@keyframes tdpdMm2Title{from{transform:translateY(6px);opacity:0}to{transform:none;opacity:1}}
@keyframes tdpdMm2Pop{from{transform:translateX(8px) scale(.9);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){
  #tdpd-mmenu{transition:none}
  #tdpd-mmenu *{animation:none!important}
}


/* ===== TDPD 22.09.2026: добавление в смету — полёт и отклик (десктоп) ============
   Фото товара летит в «Смету» (элемент .tdpd-fly, движение — Web Animations
   в tdpd.js, модуль tdpdAddedToast), смета пружинит, кольцо расходится,
   кнопка «Добавлено» появляется с лёгким щелчком. */
.tdpd-fly{position:fixed;z-index:10060;pointer-events:none;display:block;
  border-radius:14px;background:#fff center/contain no-repeat;object-fit:contain;
  box-shadow:0 12px 32px rgba(20,25,60,.28),0 0 0 1px rgba(20,25,60,.06);
  will-change:transform,opacity}
span.tdpd-fly{background:#2F55D4;border-radius:50%}
@media (min-width:993px){
  #cart .tdpd-smeta-a{position:relative}
  #cart.tdpd-smeta-bump .tdpd-smeta-a{animation:tdpdSmetaBump .55s cubic-bezier(.3,.7,.4,1)}
  #cart.tdpd-smeta-bump .tdpd-smeta-a::after{content:"";position:absolute;inset:-1px;border-radius:inherit;
    border:2px solid #2F55D4;pointer-events:none;animation:tdpdSmetaRing .7s ease-out forwards}
  #cart.tdpd-smeta-bump .tdpd-smeta-ico{animation:tdpdSmetaIco .55s cubic-bezier(.3,.7,.4,1)}
  #cart.tdpd-smeta-bump .tdpd-smeta-n{animation:tdpdSmetaNum .9s ease-out}
  .tdpd-btn-added{animation:tdpdBtnOk .32s cubic-bezier(.3,.7,.4,1)}
}
@keyframes tdpdSmetaBump{0%{transform:scale(1)}35%{transform:scale(1.08)}65%{transform:scale(.97)}100%{transform:scale(1)}}
@keyframes tdpdSmetaRing{from{transform:scale(1);opacity:.7}to{transform:scale(1.28,1.5);opacity:0}}
@keyframes tdpdSmetaIco{0%{transform:none}40%{transform:translateY(-3px) rotate(-8deg)}100%{transform:none}}
@keyframes tdpdSmetaNum{0%{color:#2F55D4}100%{color:inherit}}
@keyframes tdpdBtnOk{0%{transform:scale(.92)}60%{transform:scale(1.04)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){
  #cart.tdpd-smeta-bump .tdpd-smeta-a,#cart.tdpd-smeta-bump .tdpd-smeta-a::after,
  #cart.tdpd-smeta-bump .tdpd-smeta-ico,.tdpd-btn-added{animation:none}
}


/* ===== TDPD 22.09.2026: главная — «Товары со скидкой» (tdpd_block, раскладка sale) =====
   Лента общих карточек (product/tdpd_card.tpl) со стрелками; на телефоне — свайп. */
.tdb-sale-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:0 0 22px}
.tdb-sale-hl{min-width:0}
.tdb-sale-hl h2{font-size:29px;line-height:1.2;margin:11px 0 0}
.tdb-sale-hl p{color:#7a756c;font-size:16px;margin:10px 0 0}
.tdb-sale-nav{flex:0 0 auto;display:flex;align-items:center;gap:8px}
.tdb-sale-arr{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;padding:0;
  border:1px solid #E8E3D8;border-radius:50%;background:#fff;color:#20242C;cursor:pointer;
  transition:border-color .15s,color .15s,opacity .15s,background-color .15s}
/* Тема красит любую button:hover/:focus в красный — перебиваем на всех состояниях. */
.tdb-sale-arr,.tdb-sale-arr:focus,.tdb-sale-arr:active,.tdb-sale-arr:disabled,.tdb-sale-arr:disabled:hover{
  background:#fff!important;background-image:none!important;border-color:#E8E3D8!important;color:#20242C!important;
  box-shadow:none!important;outline:none;text-shadow:none!important}
.tdb-sale-arr:hover:not(:disabled){background:#EDF1FD!important;border-color:#2F55D4!important;color:#2F55D4!important}
.tdb-sale-arr:active:not(:disabled){background:#DDE6FB!important;transform:scale(.95)}
.tdb-sale-arr:focus-visible{box-shadow:0 0 0 3px rgba(47,85,212,.25)!important}
.tdb-sale-arr svg{stroke:currentColor;fill:none}
.tdb-sale-arr{transition:border-color .15s,color .15s,opacity .15s,background-color .15s,transform .1s}
.tdb-sale-arr:disabled{opacity:.35;cursor:default}
.tdb-sale-fit .tdb-sale-arr{display:none}
.tdb-sale-all{display:inline-flex;align-items:center;height:42px;margin-left:6px;padding:0 18px;border-radius:999px;
  background:#EDF1FD;color:#2F55D4!important;font-size:14px;font-weight:500;text-decoration:none!important;
  white-space:nowrap;transition:background-color .15s}
.tdb-sale-all:hover{background:#DDE6FB}
.tdb-sale-row{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 48px) / 4);gap:16px;
  overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;
  padding:4px 2px 14px;margin:0 -2px}
.tdb-sale-row::-webkit-scrollbar{display:none}
.tdb-sale-row > .tdb-sale-item{scroll-snap-align:start;width:auto!important;max-width:none!important;
  float:none!important;padding:0!important;margin:0!important;min-width:0}
.tdb-sale-row > .tdb-sale-item .product-thumb{height:100%;margin:0}
@media (max-width:1200px){ .tdb-sale-row{grid-auto-columns:calc((100% - 32px) / 3)} }
@media (max-width:767px){
  .tdb-sale-head{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:16px}
  .tdb-sale-hl h2{font-size:24px}
  .tdb-sale-arr{display:none}
  .tdb-sale-all{margin-left:0;height:38px;padding:0 16px}
  .tdb-sale-row{grid-auto-columns:64%;gap:12px;scroll-padding-left:0}
}

/* Полёт в смету на телефоне: отклик нижней панели и иконки в шапке-островке. */
@media (max-width:992px){
  #tdpd-tab-cart.tdpd-smeta-bump svg,
  #cart.tdpd-smeta-bump .tdpd-smeta-ico{animation:tdpdSmetaIco .55s cubic-bezier(.3,.7,.4,1)}
  #tdpd-tab-cart.tdpd-smeta-bump{animation:tdpdSmetaBump .55s cubic-bezier(.3,.7,.4,1)}
  #tdpd-tab-cart.tdpd-smeta-bump .tdpd-tab-n,
  #cart.tdpd-smeta-bump .tdpd-smeta-b{animation:tdpdBadgePop .5s cubic-bezier(.3,.7,.4,1)}
  .tdpd-btn-added{animation:tdpdBtnOk .32s cubic-bezier(.3,.7,.4,1)}
}
@keyframes tdpdBadgePop{0%{transform:scale(1)}40%{transform:scale(1.45)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){
  #tdpd-tab-cart.tdpd-smeta-bump,#tdpd-tab-cart.tdpd-smeta-bump svg,#tdpd-tab-cart.tdpd-smeta-bump .tdpd-tab-n{animation:none}
}


/* ======================================================================
   TDPD: ШАПКА ПО МАКЕТУ 25.09.2026 (холст «Шапка td-pd.ru — было и стало»)
   ====================================================================== */

/* --- 1. Телефон: островок = строка «Каталог · логотип · смета» + поиск --
   Островок рисует .wrapper::before (блок «2. Мобильная шапка» выше),
   строка поиска — фиксированная кнопка .tdpd-mh-q под ним, открывает
   штатную шторку #msrch. Высота островка 52 → 104px, поэтому контент
   (крошки, первый экран главной) опускается на те же 52px. */
.tdpd-mh-q,.tdpd-mh-smeta{display:none}
@media (max-width:991px){
  body.tdpd-mh-q-on .wrapper::before{height:104px}
  .tdpd-mh-q{
    display:flex;align-items:center;gap:9px;position:fixed;z-index:122;
    left:18px;right:18px;top:62px;height:42px;padding:0 16px;margin:0;
    border:0;border-radius:21px;background:#F2F3F7;color:#8C93A0;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:15px;line-height:1;
    text-align:left;cursor:text;-webkit-tap-highlight-color:rgba(47,85,212,.12)}
  .tdpd-mh-q:hover,.tdpd-mh-q:focus,.tdpd-mh-q:active{background:#E9EBF1;color:#6B7280;border:0;outline:0}
  .tdpd-mh-q svg{flex:0 0 auto;color:#8C93A0}
  body.tdpd-drawer-open .tdpd-mh-q,body.tdpd-mm2-on .tdpd-mh-q,body.tdpd-modal-on .tdpd-mh-q{display:none}
  body.tdpd-mh-q-on .breadcrumbs{margin-top:120px!important}
  body.tdpd-mh-q-on .tdpd-hero{margin-top:0;padding-top:124px}

  .tdpd-mh-smeta{
    order:3;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;position:relative;
    width:38px;height:38px;margin:0;border:0;border-radius:50%;
    background:#EDF1FD;color:#2F55D4!important;text-decoration:none}
  .tdpd-mh-smeta:hover,.tdpd-mh-smeta:focus{background:#DCE4FB!important;text-decoration:none}
  .tdpd-mh-smeta svg{width:20px;height:20px;stroke:#2F55D4;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .tdpd-mh-smeta .tdpd-tab-n{
    position:absolute;top:-3px;right:-4px;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;
    border-radius:9px;background:#E0531B;color:#fff;
    font-size:11px;line-height:18px;font-weight:600;text-align:center;font-style:normal}
  .tdpd-mh-smeta .tdpd-tab-n[hidden]{display:none}

  /* Нижняя панель: «Позвонить» — выделенная кнопка. */
  #tdpd-tabbar .tdpd-tab-call{background:#2F55D4;color:#fff;margin-left:2px}
  #tdpd-tabbar .tdpd-tab-call svg{stroke:#fff}
  #tdpd-tabbar .tdpd-tab-call:hover,#tdpd-tabbar .tdpd-tab-call:focus{color:#fff;background:#24409E}
  #tdpd-tabbar .tdpd-tab-call:active{background:#24409E}
}
@media (min-width:992px){ .tdpd-mh-q,.tdpd-mh-smeta{display:none!important} }

/* --- 2. Окно «Расчёт по списку» (#tdpd-lr, модуль tdpdListReq) -----------
   z-index 10300: выше чата Битрикса (10150) и плашки cookie — на время окна
   они не должны лежать поверх формы. */
html.tdpd-lr-lock,html.tdpd-lr-lock body{overflow:hidden}
#tdpd-lr[hidden]{display:none}
#tdpd-lr{position:fixed;inset:0;z-index:10300;display:flex;align-items:center;justify-content:center;padding:24px;
  font-family:"Rubik","Segoe UI",Arial,sans-serif;color:#20242C}
#tdpd-lr .tdpd-lr-ov{position:absolute;inset:0;background:rgba(32,36,44,.5)}
#tdpd-lr .tdpd-lr-dlg{position:relative;width:940px;max-width:100%;max-height:calc(100vh - 48px);overflow:auto;
  display:grid;grid-template-columns:minmax(0,1fr) 290px;background:#fff;border-radius:20px;
  box-shadow:0 24px 64px rgba(32,36,44,.28)}
#tdpd-lr .tdpd-lr-f,#tdpd-lr .tdpd-lr-ok{padding:30px 34px;display:flex;flex-direction:column;gap:12px}
#tdpd-lr .tdpd-lr-f[hidden],#tdpd-lr .tdpd-lr-ok[hidden]{display:none}
#tdpd-lr .tdpd-lr-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
#tdpd-lr h2{margin:0;font-size:25px;font-weight:600;line-height:1.2;color:#20242C;text-transform:none;letter-spacing:0}
#tdpd-lr .tdpd-lr-x{flex:0 0 auto;width:40px;height:40px;padding:0;border:0;border-radius:20px;background:#F4F5F8;
  color:#3B4252;display:flex;align-items:center;justify-content:center;cursor:pointer}
#tdpd-lr .tdpd-lr-x:hover,#tdpd-lr .tdpd-lr-x:focus{background:#E9EBF1;color:#20242C;border:0}
#tdpd-lr .tdpd-lr-sub{margin:-4px 0 4px;font-size:14px;line-height:1.45;color:#6B6660}
#tdpd-lr .tdpd-lr-files{display:flex;gap:10px}
#tdpd-lr .tdpd-lr-files input[type="file"]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
#tdpd-lr .tdpd-lr-cam{display:none}
#tdpd-lr .tdpd-lr-file{flex:1 1 auto;display:flex;align-items:center;gap:14px;margin:0;padding:16px 18px;
  border:1.5px dashed #9DB0EC;border-radius:14px;background:#F6F8FE;cursor:pointer;font-weight:400}
#tdpd-lr .tdpd-lr-file:hover{border-color:#2F55D4;background:#EDF1FD}
#tdpd-lr .tdpd-lr-file-i{flex:0 0 auto;width:44px;height:44px;border-radius:12px;background:#fff;color:#2F55D4;
  display:flex;align-items:center;justify-content:center}
#tdpd-lr .tdpd-lr-file-t{display:flex;flex-direction:column;gap:3px}
#tdpd-lr .tdpd-lr-file-t b{font-size:15px;font-weight:500;color:#2F55D4}
#tdpd-lr .tdpd-lr-file-t em{font-size:12px;font-style:normal;color:#7A756C}
#tdpd-lr .tdpd-lr-picked{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:10px;background:#E9F6EF;
  color:#1E6B45;font-size:13px}
#tdpd-lr .tdpd-lr-picked[hidden]{display:none}
#tdpd-lr .tdpd-lr-picked span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#tdpd-lr .tdpd-lr-unpick{padding:0;border:0;background:none;color:#1E6B45;font:inherit;font-size:13px;text-decoration:underline;cursor:pointer}
#tdpd-lr .tdpd-lr-unpick:hover,#tdpd-lr .tdpd-lr-unpick:focus{background:none;color:#14502F;border:0}
#tdpd-lr .tdpd-lr-lbl{margin:2px 0 -4px;font-size:13px;font-weight:400;color:#6B6660}
#tdpd-lr textarea{width:100%;min-height:96px;padding:12px 14px;border:1px solid #DDE1E8;border-radius:12px;
  font:inherit;font-size:14px;line-height:1.5;color:#20242C;resize:vertical;box-sizing:border-box}
#tdpd-lr .tdpd-lr-att{display:flex;align-items:center;gap:10px;margin:0;padding:11px 14px;border-radius:12px;background:#FAF6EC;
  font-size:14px;font-weight:400;cursor:pointer}
#tdpd-lr .tdpd-lr-att[hidden]{display:none}
#tdpd-lr .tdpd-lr-att input{width:18px;height:18px;margin:0;accent-color:#2F55D4;flex:0 0 auto}
#tdpd-lr .tdpd-lr-att em{font-style:normal;color:#7A756C}
#tdpd-lr .tdpd-lr-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#tdpd-lr .tdpd-lr-grid input,#tdpd-lr textarea{-webkit-appearance:none;appearance:none}
#tdpd-lr .tdpd-lr-grid input{height:46px;padding:0 14px;border:1px solid #DDE1E8;border-radius:12px;
  font:inherit;font-size:14px;color:#20242C;box-sizing:border-box;width:100%}
#tdpd-lr .tdpd-lr-grid input:focus,#tdpd-lr textarea:focus{border-color:#2F55D4;outline:0;box-shadow:0 0 0 3px rgba(47,85,212,.15)}
#tdpd-lr .tdpd-lr-err{padding:10px 12px;border-radius:10px;background:#FDECEC;color:#B42318;font-size:13.5px;line-height:1.4}
#tdpd-lr .tdpd-lr-err[hidden]{display:none}
#tdpd-lr .tdpd-lr-go{height:52px;border:0;border-radius:12px;background:#2F55D4;color:#fff;
  font:inherit;font-size:16px;font-weight:500;cursor:pointer}
#tdpd-lr .tdpd-lr-go:hover,#tdpd-lr .tdpd-lr-go:focus{background:#24409E;color:#fff;border:0}
#tdpd-lr .tdpd-lr-go:disabled{background:#8FA3E6;cursor:wait}
#tdpd-lr .tdpd-lr-fine{margin:0;font-size:12px;color:#7A756C}
#tdpd-lr .tdpd-lr-fine a{color:#2F55D4}
#tdpd-lr .tdpd-lr-side{grid-column:2;grid-row:1 / span 2;padding:30px 26px;background:#FAF6EC;border-left:1px solid #E8E3D8;
  display:flex;flex-direction:column;gap:14px;font-size:14px;line-height:1.45}
#tdpd-lr .tdpd-lr-side > b{font-size:15px;font-weight:600}
#tdpd-lr .tdpd-lr-side ol{margin:0;padding:0;list-style:none;counter-reset:lr;display:flex;flex-direction:column;gap:14px}
#tdpd-lr .tdpd-lr-side li{position:relative;padding-left:38px;counter-increment:lr}
#tdpd-lr .tdpd-lr-side li::before{content:counter(lr);position:absolute;left:0;top:-2px;width:26px;height:26px;border-radius:13px;
  background:#2F55D4;color:#fff;font-size:13px;font-weight:600;line-height:26px;text-align:center}
#tdpd-lr .tdpd-lr-call{margin-top:auto;padding-top:14px;border-top:1px solid #E8E3D8;display:flex;flex-direction:column;gap:3px}
#tdpd-lr .tdpd-lr-call span,#tdpd-lr .tdpd-lr-call em{font-size:12.5px;font-style:normal;color:#7A756C}
#tdpd-lr .tdpd-lr-call a{font-size:20px;font-weight:600;color:#20242C;text-decoration:none}
#tdpd-lr .tdpd-lr-ok{align-items:flex-start;justify-content:center;min-height:420px}
#tdpd-lr .tdpd-lr-ok-i{width:56px;height:56px;border-radius:28px;background:#1E8E5A;display:flex;align-items:center;justify-content:center}
#tdpd-lr .tdpd-lr-ok > b{font-size:24px;font-weight:600}
#tdpd-lr .tdpd-lr-ok-n{font-size:15px;color:#7A756C}
#tdpd-lr .tdpd-lr-ok p{margin:0;font-size:15px;line-height:1.5;max-width:460px}
#tdpd-lr .tdpd-lr-ok-link{display:inline-flex;align-items:center;height:46px;padding:0 20px;border-radius:12px;background:#2F55D4;color:#fff;
  font-size:15px;font-weight:500;text-decoration:none}
#tdpd-lr .tdpd-lr-ok-link:hover{background:#24409E;color:#fff}
#tdpd-lr .tdpd-lr-ok-x{padding:0;border:0;background:none;color:#6B6660;font:inherit;font-size:14px;cursor:pointer;text-decoration:underline}
#tdpd-lr .tdpd-lr-ok-x:hover,#tdpd-lr .tdpd-lr-ok-x:focus{background:none;color:#20242C;border:0}

/* Телефон: окно — шторка снизу, «Сфотографировать» — главная кнопка,
   правая колонка уходит (звонок — в нижней панели). */
@media (max-width:767px){
  #tdpd-lr{padding:0;align-items:flex-end}
  #tdpd-lr .tdpd-lr-dlg{display:block;width:100%;max-height:calc(100vh - 40px);border-radius:22px 22px 0 0}
  #tdpd-lr .tdpd-lr-side{display:none}
  #tdpd-lr .tdpd-lr-f,#tdpd-lr .tdpd-lr-ok{padding:18px 16px calc(18px + env(safe-area-inset-bottom))}
  #tdpd-lr h2{font-size:20px}
  #tdpd-lr .tdpd-lr-sub{font-size:13.5px}
  #tdpd-lr .tdpd-lr-files{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  #tdpd-lr .tdpd-lr-cam{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;margin:0;height:78px;
    border-radius:14px;background:#2F55D4;color:#fff;font-size:14px;font-weight:500;cursor:pointer}
  #tdpd-lr .tdpd-lr-file{flex-direction:column;justify-content:center;gap:6px;height:78px;padding:0 8px}
  #tdpd-lr .tdpd-lr-file-i{width:auto;height:auto;background:none}
  #tdpd-lr .tdpd-lr-file-t em{display:none}
  #tdpd-lr .tdpd-lr-file-t b{font-size:14px}
  #tdpd-lr .tdpd-lr-grid{grid-template-columns:minmax(0,1fr)}
  #tdpd-lr .tdpd-lr-grid input,#tdpd-lr textarea{font-size:16px}
  #tdpd-lr .tdpd-lr-ok{min-height:320px}
}

/* --- 3. Компьютер: «Расчёт по списку», подписи телефона, мини-смета ---- */
.tdpd-hdr-list{display:none}
@media (min-width:992px){
  header .col-cart .tdpd-hdr-list{
    display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;height:46px;padding:0 14px;
    border:1.5px solid #2F55D4;border-radius:12px;background:#fff;color:#2F55D4;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;font-size:14px;font-weight:500;line-height:1;
    white-space:nowrap;text-decoration:none}
  header .col-cart .tdpd-hdr-list:hover,header .col-cart .tdpd-hdr-list:focus{background:#EDF1FD;color:#24409E;text-decoration:none}
  header .col-cart .tdpd-hdr-list svg{flex:0 0 auto}

  header .header-phone .tdpd-ph-sub{display:block;margin-top:3px;font-size:12px;line-height:1.3;color:#7A756C;white-space:nowrap}
  header .header-phone .tdpd-ph-cb{color:#2F55D4;border-bottom:1px dashed #9DB0EC;cursor:pointer;text-decoration:none}
  header .header-phone .tdpd-ph-cb:hover{color:#24409E;border-bottom-color:#24409E}
  header .header-phone .tdpd-ph-mail{display:block;margin-top:2px;font-size:12px;line-height:1.3;color:#7A756C;text-decoration:none}
  header .header-phone .tdpd-ph-mail:hover{color:#2F55D4}
  /* Тема (header4.css, stylesheet.min.css) даёт каждой ссылке в блоке телефона
     display:block, 16px/500 и значок трубки в ::before — снимаем с наших. */
  header .header-phone .phones-dropdown a.tdpd-ph-cb{display:inline;font-size:12px;font-weight:400;line-height:1.3}
  header .header-phone .phones-dropdown a.tdpd-ph-mail{font-size:12px;font-weight:400;line-height:1.3;color:#7A756C}
  header .header-phone .phones-dropdown a.tdpd-ph-mail:hover{color:#2F55D4}
  header .header-phone a.tdpd-ph-cb::before,header .header-phone a.tdpd-ph-mail::before{content:none;display:none}

  /* Мини-смета: панель под кнопкой сметы. */
  #cart .tdpd-ms{position:absolute;right:0;top:calc(100% + 10px);z-index:1200;width:420px;box-sizing:border-box;
    padding:18px;background:#fff;border:1px solid #E8E3D8;border-radius:16px;box-shadow:0 18px 48px rgba(32,36,44,.16);
    display:flex;flex-direction:column;gap:12px;text-align:left;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;color:#20242C;cursor:default}
  #cart .tdpd-ms-load{padding:18px 0;text-align:center;font-size:14px;color:#7A756C}
  #cart .tdpd-ms-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
  #cart .tdpd-ms-h span{font-size:15px;font-weight:600}
  #cart .tdpd-ms-h a{font-size:13px;color:#2F55D4;text-decoration:none;white-space:nowrap}
  #cart .tdpd-ms-list{display:flex;flex-direction:column;gap:10px;max-height:300px;overflow:auto}
  #cart .tdpd-ms-row{display:flex;align-items:center;gap:12px;color:#20242C;text-decoration:none}
  #cart a.tdpd-ms-row:hover .tdpd-ms-nm{color:#2F55D4}
  #cart .tdpd-ms-row img,#cart .tdpd-ms-noimg{flex:0 0 auto;width:44px;height:44px;border-radius:10px;object-fit:contain;background:#F3EEE3}
  #cart .tdpd-ms-free .tdpd-ms-noimg{background:#FAF6EC;border:1px dashed #D9CFBC;box-sizing:border-box}
  #cart .tdpd-ms-nm{flex:1 1 auto;min-width:0;font-size:13px;line-height:1.3}
  /* обрезаем только название — строка «N шт. × цена» видна всегда */
  #cart .tdpd-ms-t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  #cart .tdpd-ms-nm em{display:block;font-style:normal;color:#8C93A0;margin-top:2px}
  #cart .tdpd-ms-row b{flex:0 0 auto;font-size:14px;font-weight:600;white-space:nowrap}
  #cart .tdpd-ms-more{font-size:13px;color:#7A756C;padding-left:56px}
  #cart .tdpd-ms-sum{display:flex;align-items:baseline;justify-content:space-between;padding-top:12px;border-top:1px solid #E8E3D8}
  #cart .tdpd-ms-sum span{font-size:14px;color:#7A756C}
  #cart .tdpd-ms-sum b{font-size:22px;font-weight:600}
  #cart .tdpd-ms-go{display:flex;align-items:center;justify-content:center;height:48px;border-radius:12px;background:#2F55D4;
    color:#fff;font-size:16px;font-weight:500;text-decoration:none}
  #cart .tdpd-ms-go:hover,#cart .tdpd-ms-go:focus{background:#24409E;color:#fff;text-decoration:none}
  #cart .tdpd-ms-two{display:flex;gap:10px}
  #cart .tdpd-ms-two a{flex:1 1 0;display:flex;align-items:center;justify-content:center;height:42px;border:1px solid #DDE1E8;
    border-radius:12px;color:#20242C;font-size:14px;text-decoration:none}
  #cart .tdpd-ms-two a:hover{border-color:#2F55D4;color:#2F55D4}
  #cart .tdpd-ms-fine{font-size:12px;color:#7A756C;text-align:center}
}
/* 993–1199: компактная шапка — от кнопки остаётся знак. */
@media (min-width:992px) and (max-width:1199px){
  header .col-cart .tdpd-hdr-list{width:46px;padding:0;justify-content:center}
  header .col-cart .tdpd-hdr-list span{display:none}
  header .header-phone .tdpd-ph-mail{display:none}
}

/* ======================================================================
   TDPD: ШАПКА — ПРАВКИ 26.09.2026 (замечания клиента по живой шапке)
   ====================================================================== */

/* --- 4. Компьютер: ровная строка и больше места поиску -----------------
   Было: «Часто ищут» — вторая строка сетки, и поле поиска стояло выше
   кнопок на 12px; у сметы — margin-bottom:10px от .btn-block bootstrap
   (на 5px выше «Расчёта по списку»); у «Каталога» — margin-left:30px темы.
   Теперь вторая строка сетки нулевой высоты: подсказка висит под полем и
   не участвует в выравнивании, всё в строке центрируется по одной линии.
   «Каталог товаров» → «Каталог» (header.tpl) — +50px полю. */
@media (min-width:993px){
  header .ts-search-box{grid-template-rows:auto 0;row-gap:0!important;column-gap:14px}
  header .ts-search-box .main-menu__button{margin-left:0!important;grid-row:1!important}
  /* не поместившаяся подсказка переносится на вторую строку и прячется целиком —
     а не обрезается на полуслове («шкаф в разде…») */
  header .ts-search-box .tdpd-hint{align-self:start;margin-top:7px;flex-wrap:wrap;height:20px;overflow:hidden;white-space:nowrap}
  header .col-cart #cart{margin:0!important}
  header .col-cart{gap:14px!important}
}
@media (min-width:1201px){
  header .box-inner-inner{gap:24px!important;min-height:84px!important;padding:10px 0 22px!important}
  header .col-cart .header-phone{margin-right:6px!important}
}

/* --- 5. Выбор региона (language.tpl) ------------------------------------ */
@keyframes tdpdDdIn{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}
@media (min-width:992px){
  #top #form-language .tdpd-reg-btn{display:inline-flex!important;align-items:center;gap:6px;color:#20242C!important;font-weight:500!important}
  #top #form-language .tdpd-reg-btn:hover,#top #form-language .tdpd-reg-btn:focus{background:none!important;color:#2F55D4!important;outline:0}
  #top #form-language .tdpd-reg-pin{display:inline-flex;color:#2F55D4}
  #top #form-language .tdpd-reg-chev{color:#B8BEC9;transition:transform .2s ease,color .2s ease}
  #top #form-language .open .tdpd-reg-chev{transform:rotate(180deg);color:#2F55D4}

  #top #form-language .dropdown-menu.tdpd-reg-menu{
    width:340px;min-width:0;margin-top:4px;padding:0!important;overflow:hidden;
    border:1px solid #E8E3D8;border-radius:16px;background:#fff;
    box-shadow:0 20px 48px rgba(32,36,44,.16);font-family:"Rubik","Segoe UI",Arial,sans-serif;
    transform-origin:top left}
  #top #form-language .open > .tdpd-reg-menu{animation:tdpdDdIn .2s cubic-bezier(.2,.8,.2,1)}
  #top #form-language .tdpd-reg-hd{padding:16px 18px 12px;background:#FAF6EC;border-bottom:1px solid #EFE9DC}
  #top #form-language .tdpd-reg-hd b{display:block;font-size:15px;font-weight:600;color:#20242C}
  #top #form-language .tdpd-reg-hd span{display:block;margin-top:3px;font-size:12.5px;line-height:1.4;color:#7A756C;white-space:normal}
  #top #form-language .tdpd-reg-menu ul{list-style:none;margin:0;padding:8px}
  #top #form-language .tdpd-reg-menu li{margin:0}
  #top #form-language .tdpd-reg-menu .language-select.tdpd-reg-it{
    display:flex!important;align-items:center;gap:12px;width:100%;height:auto;min-height:54px;
    padding:8px 10px!important;border:0;border-radius:12px;background:none;
    font-family:inherit;line-height:1.25!important;text-align:left;text-transform:none!important;white-space:normal;
    color:#20242C!important;transition:background-color .15s}
  #top #form-language .tdpd-reg-menu .tdpd-reg-it:hover,
  #top #form-language .tdpd-reg-menu .tdpd-reg-it:focus{background:#F4F6FC!important;color:#20242C!important;outline:0}
  #top #form-language .tdpd-reg-menu .tdpd-reg-it img{display:none}
  #top #form-language .tdpd-reg-ic{flex:0 0 36px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;
    border-radius:10px;background:#F3F1EC;color:#8C93A0;transition:background-color .15s,color .15s}
  #top #form-language .tdpd-reg-it:hover .tdpd-reg-ic{color:#2F55D4}
  #top #form-language .tdpd-reg-tx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
  #top #form-language .tdpd-reg-tx b{font-size:14px!important;font-weight:500!important}
  #top #form-language .tdpd-reg-tx em{font-style:normal;font-size:12px;color:#8C93A0}
  #top #form-language .tdpd-reg-on .tdpd-reg-ic{background:#2F55D4;color:#fff}
  #top #form-language .tdpd-reg-it:hover.tdpd-reg-on .tdpd-reg-ic{color:#fff}
  #top #form-language .tdpd-reg-on .tdpd-reg-tx b{color:#2F55D4}
  #top #form-language .tdpd-reg-ok{flex:0 0 auto;color:#2F55D4}
  #top #form-language .tdpd-reg-ft{display:flex;align-items:center;justify-content:space-between;gap:8px;
    padding:12px 18px;border-top:1px solid #EFE9DC;font-size:12.5px;color:#7A756C!important;text-decoration:none}
  #top #form-language .tdpd-reg-ft:hover{color:#2F55D4!important;background:#FAFBFE}
}

/* --- 6. Меню «Мои сметы и заказы» (header.tpl, .tdpd-acc) --------------- */
@media (min-width:992px){
  #top .user-dropdown{position:relative}
  #top .dropdown-menu.user-dropdown-menu.tdpd-acc{
    left:auto;right:0;width:320px;min-width:0;margin-top:4px;padding:8px!important;
    border:1px solid #E8E3D8;border-radius:16px;background:#fff;
    box-shadow:0 20px 48px rgba(32,36,44,.16);font-family:"Rubik","Segoe UI",Arial,sans-serif;
    transform-origin:top right}
  /* мостик над панелью: меню открывается наведением, между ссылкой и
     карточкой не должно быть «дыры», где оно схлопывается */
  #top .tdpd-acc::before{content:"";position:absolute;left:0;right:0;top:-10px;height:10px}
  #top .open > .tdpd-acc{animation:tdpdDdIn .2s cubic-bezier(.2,.8,.2,1)}
  #top .tdpd-acc-hd{display:flex;gap:12px;align-items:flex-start;padding:10px 10px 14px}
  #top .tdpd-acc-av{flex:0 0 40px;display:flex;align-items:center;justify-content:center;width:40px;height:40px;
    border-radius:12px;background:#EDF1FD;color:#2F55D4}
  #top .tdpd-acc-hd b{display:block;font-size:15px;font-weight:600;line-height:1.3;color:#20242C}
  #top .tdpd-acc-hd span{display:block;margin-top:3px;font-size:12.5px;line-height:1.45;color:#7A756C;white-space:normal}
  #top .tdpd-acc a{text-decoration:none!important;text-transform:none!important;font-family:inherit}
  #top .tdpd-acc a.tdpd-acc-go,#top .tdpd-acc a.tdpd-acc-reg{display:flex;align-items:center;justify-content:center;height:44px;
    margin:0 2px;border-radius:12px;font-size:14.5px!important;font-weight:500!important;line-height:1!important;cursor:pointer;
    transition:background-color .15s,border-color .15s,color .15s}
  #top .tdpd-acc a.tdpd-acc-go{background:#2F55D4;color:#fff!important}
  #top .tdpd-acc a.tdpd-acc-go:hover{background:#24409E;color:#fff!important}
  #top .tdpd-acc a.tdpd-acc-reg{margin-top:8px;border:1px solid #DDE1E8;background:#fff;color:#20242C!important}
  #top .tdpd-acc a.tdpd-acc-reg:hover{border-color:#2F55D4;color:#2F55D4!important}
  #top .tdpd-acc a.tdpd-acc-guest{display:flex;align-items:center;gap:10px;margin:10px 2px 0;padding:12px 12px;
    border-radius:12px;background:#FAF6EC;font-size:13px!important;line-height:1.3!important;color:#6B6660!important}
  #top .tdpd-acc a.tdpd-acc-guest span{flex:1 1 auto}
  #top .tdpd-acc a.tdpd-acc-guest svg{flex:0 0 auto;color:#B0A48C}
  #top .tdpd-acc a.tdpd-acc-guest:hover{color:#2F55D4!important}
  #top .tdpd-acc a.tdpd-acc-guest:hover svg{color:#2F55D4}
  #top .tdpd-acc-nav{display:flex;flex-direction:column;padding:4px 0;border-top:1px solid #EFE9DC}
  #top .tdpd-acc-nav a,#top .tdpd-acc a.tdpd-acc-out{display:flex;align-items:center;gap:12px;height:42px;padding:0 10px;
    border-radius:10px;font-size:14px!important;font-weight:400!important;line-height:1!important;color:#20242C!important;
    transition:background-color .15s,color .15s}
  #top .tdpd-acc-nav a svg,#top .tdpd-acc a.tdpd-acc-out svg{flex:0 0 auto;color:#8C93A0;transition:color .15s}
  #top .tdpd-acc-nav a:hover{background:#F4F6FC;color:#2F55D4!important}
  #top .tdpd-acc-nav a:hover svg{color:#2F55D4}
  #top .tdpd-acc a.tdpd-acc-out{border-top:1px solid #EFE9DC;border-radius:0 0 10px 10px;color:#7A756C!important}
  #top .tdpd-acc a.tdpd-acc-out:hover{background:#FDF3F2;color:#B42318!important}
  #top .tdpd-acc a.tdpd-acc-out:hover svg{color:#B42318}
  /* 01.10.2026: вход прямо в карточке (tdpd.js, tdpdAccLogin). Форма — та же, что
     в окне входа (.tdpd-ap); здесь с неё снято всё «оконное». */
  #top .dropdown-menu.user-dropdown-menu.tdpd-acc.tdpd-acc-login{width:360px}
  #top .tdpd-acc-p[hidden]{display:none}
  #top .tdpd-acc-in{animation:tdpdAccIn .28s cubic-bezier(.2,.8,.2,1) both}
  @keyframes tdpdAccIn{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
  #top .tdpd-acc-p1.tdpd-acc-in{animation-name:tdpdAccBack}
  @keyframes tdpdAccBack{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
  #top .tdpd-acc-back{display:inline-flex;align-items:center;gap:4px;height:30px;margin:2px 0 2px 2px;padding:0 10px 0 6px;
    border:0;border-radius:8px;background:none;font-size:13px;font-weight:500;color:#7A756C;cursor:pointer;transition:background .15s,color .15s}
  #top .tdpd-acc-back:hover{background:#F4F6FC;color:#2F55D4}
  #top .tdpd-acc-load{padding:34px 10px;text-align:center;font-size:13px;line-height:1.45;color:#8C93A0;white-space:normal}
  #top .tdpd-acc .tdpd-ap{position:static;width:auto;max-width:none;margin:0;padding:4px 8px 6px;
    border-radius:0!important;background:none;box-shadow:none;text-align:left;white-space:normal;
    opacity:1;visibility:visible;transform:none;transition:none}   /* .mfp-with-anim прячет всё, что не в открытом окне */
  #top .tdpd-acc .tdpd-ap-h{font-size:18px}
  #top .tdpd-acc .tdpd-ap-sub{margin:0 0 14px;font-size:13px}
  #top .tdpd-acc .tdpd-soc{margin:0 0 12px}
  #top .tdpd-acc .tdpd-soc-row{gap:8px}
  #top .tdpd-acc a.tdpd-soc-b{min-height:62px;padding:8px 2px}
  #top .tdpd-acc .tdpd-soc-b span{font-size:11px;font-weight:600}
  #top .tdpd-acc .tdpd-soc-or{margin-top:12px;font-size:12.5px}
  #top .tdpd-acc .tdpd-auth-f{margin:0 0 10px}
  #top .tdpd-acc .tdpd-auth-f input{height:44px;font-size:14.5px}
  #top .tdpd-acc .tdpd-pw-eye{top:2px}
  #top .tdpd-acc .tdpd-ap-row{margin:-2px 0 12px}
  #top .tdpd-acc a.tdpd-auth-forgot{font-size:13px!important;color:#7A756C!important}
  #top .tdpd-acc button.tdpd-auth-go{height:46px;font-size:15px;background:#2F55D4}
  #top .tdpd-acc button.tdpd-auth-go:hover{background:#24409E}
  #top .tdpd-acc .tdpd-auth-alt{margin-top:14px;padding-top:12px;font-size:13px}
  #top .tdpd-acc .tdpd-auth-alt a{color:#2F55D4!important;font-weight:600!important}
  #top .tdpd-acc .tdpd-auth-note{margin:0 0 10px;padding:10px 12px;font-size:13px}
}

/* --- 7. Окно «Расчёт по списку»: плавное появление ---------------------- */
#tdpd-lr .tdpd-lr-ov{opacity:0;transition:opacity .24s ease}
#tdpd-lr .tdpd-lr-dlg{opacity:0;transform:translateY(22px) scale(.97);
  transition:opacity .22s ease,transform .34s cubic-bezier(.2,.8,.2,1)}
#tdpd-lr.tdpd-lr-in .tdpd-lr-ov{opacity:1}
#tdpd-lr.tdpd-lr-in .tdpd-lr-dlg{opacity:1;transform:none}
@media (max-width:767px){
  #tdpd-lr .tdpd-lr-dlg{opacity:1;transform:translateY(100%);transition:transform .36s cubic-bezier(.2,.8,.2,1)}
  #tdpd-lr.tdpd-lr-in .tdpd-lr-dlg{transform:none}
}

/* --- 8. Мини-смета: появление и уход ------------------------------------ */
@keyframes tdpdMsIn{from{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:none}}
@keyframes tdpdMsOut{to{opacity:0;transform:translateY(-6px) scale(.98)}}
@keyframes tdpdMsRow{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (min-width:992px){
  #cart .tdpd-ms{transform-origin:top right;animation:tdpdMsIn .24s cubic-bezier(.2,.8,.2,1)}
  #cart .tdpd-ms.tdpd-ms-out{animation:tdpdMsOut .16s ease forwards}
  #cart .tdpd-ms-ready > *{animation:tdpdMsRow .3s cubic-bezier(.2,.8,.2,1) backwards}
  #cart .tdpd-ms-ready > :nth-child(2){animation-delay:.03s}
  #cart .tdpd-ms-ready > :nth-child(3){animation-delay:.06s}
  #cart .tdpd-ms-ready > :nth-child(n+4){animation-delay:.09s}
}

/* --- 9. Телефон: смета в островке — со словом и суммой ------------------
   Была круглая кнопка со значком: клиент — «по иконке мало что понятно».
   Теперь как на компьютере: «Смета» и под ней сумма (или «пусто»).
   Ширина — как у «Каталога» слева, логотип остаётся по центру. */
@media (max-width:991px){
  .tdpd-mh-smeta{width:auto;min-width:104px;height:38px;padding:0 12px 0 10px;gap:7px;border-radius:19px;justify-content:flex-start}
  .tdpd-mh-smeta svg{width:18px;height:18px}
  .tdpd-mh-st{display:flex;flex-direction:column;align-items:flex-start;min-width:0;line-height:1}
  .tdpd-mh-st b{font-size:13px;font-weight:600;color:#2F55D4;letter-spacing:0}
  .tdpd-mh-st em{margin-top:2px;font-style:normal;font-size:10.5px;font-weight:400;color:#5B6B9E;white-space:nowrap;max-width:84px;overflow:hidden;text-overflow:ellipsis}
  .tdpd-mh-smeta .tdpd-tab-n{top:-5px;right:-3px}
}
@media (max-width:349px){
  .tdpd-mh-smeta{min-width:0;padding:0 11px}
  .tdpd-mh-st em{display:none}
}

/* --- 10. Телефон: шторка поиска (#tdpd-msq, модуль tdpdMobSearch) -------
   Раскрывается из строки поиска островка: начальная маска clip-path — её
   рамка (переменные ставит скрипт), поле едет вверх на своё место. */
#tdpd-msq{display:none}
@keyframes tdpdMsqPulse{to{opacity:.35}}
@media (max-width:991px){
  html.tdpd-msq-lock,html.tdpd-msq-lock body{overflow:hidden}
  #tdpd-msq{
    --tdpd-msq-t:62px;--tdpd-msq-l:18px;--tdpd-msq-r:18px;--tdpd-msq-b:calc(100% - 104px);--tdpd-msq-y:52px;
    display:flex;flex-direction:column;position:fixed;inset:0;z-index:10250;background:#fff;
    font-family:"Rubik","Segoe UI",Arial,sans-serif;color:#20242C;
    visibility:hidden;pointer-events:none;
    -webkit-clip-path:inset(var(--tdpd-msq-t) var(--tdpd-msq-r) var(--tdpd-msq-b) var(--tdpd-msq-l) round 21px);
    clip-path:inset(var(--tdpd-msq-t) var(--tdpd-msq-r) var(--tdpd-msq-b) var(--tdpd-msq-l) round 21px);
    transition:clip-path .34s cubic-bezier(.3,.8,.2,1),-webkit-clip-path .34s cubic-bezier(.3,.8,.2,1),visibility 0s linear .34s}
  #tdpd-msq.tdpd-msq-on,#tdpd-msq.tdpd-msq-off{visibility:visible}
  #tdpd-msq.tdpd-msq-on{pointer-events:auto;
    -webkit-clip-path:inset(0 0 0 0 round 0);clip-path:inset(0 0 0 0 round 0);
    transition:clip-path .4s cubic-bezier(.2,.85,.2,1),-webkit-clip-path .4s cubic-bezier(.2,.85,.2,1),visibility 0s}
  #tdpd-msq.tdpd-msq-off{transition:clip-path .3s cubic-bezier(.4,0,.2,1),-webkit-clip-path .3s cubic-bezier(.4,0,.2,1),visibility 0s linear .3s}

  #tdpd-msq .tdpd-msq-bar{flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:10px 8px 10px 16px;
    background:#fff;transform:translateY(var(--tdpd-msq-y));transition:transform .3s cubic-bezier(.4,0,.2,1)}
  #tdpd-msq.tdpd-msq-on .tdpd-msq-bar{transform:none;transition:transform .4s cubic-bezier(.2,.85,.2,1)}
  #tdpd-msq .tdpd-msq-f{position:relative;flex:1 1 auto;min-width:0;display:flex;align-items:center;height:44px;margin:0;
    border-radius:22px;background:#F2F3F7;box-shadow:inset 0 0 0 1.5px transparent;transition:box-shadow .2s,background-color .2s}
  #tdpd-msq .tdpd-msq-f:focus-within{background:#fff;box-shadow:inset 0 0 0 1.5px #2F55D4,0 0 0 4px rgba(47,85,212,.12)}
  #tdpd-msq .tdpd-msq-ico{position:absolute;left:15px;top:50%;margin-top:-9px;color:#8C93A0;pointer-events:none}
  #tdpd-msq.tdpd-msq-busy .tdpd-msq-ico{color:#2F55D4;animation:tdpdMsqPulse .8s ease-in-out infinite alternate}
  #tdpd-msq .tdpd-msq-f input{flex:1 1 auto;min-width:0;height:44px;margin:0;padding:0 40px 0 42px;border:0;outline:0;
    background:transparent;box-shadow:none;border-radius:22px;font:inherit;font-size:16px;color:#20242C;
    -webkit-appearance:none;appearance:none}
  #tdpd-msq .tdpd-msq-f input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}
  #tdpd-msq .tdpd-msq-f input::placeholder{color:#8C93A0}
  #tdpd-msq .tdpd-msq-clr{position:absolute;right:6px;top:50%;margin-top:-16px;width:32px;height:32px;padding:0;border:0;border-radius:16px;
    display:flex;align-items:center;justify-content:center;background:#E3E6EE!important;color:#5B6270!important;cursor:pointer}
  #tdpd-msq .tdpd-msq-clr[hidden]{display:none}
  #tdpd-msq .tdpd-msq-x{flex:0 0 auto;height:44px;padding:0 10px;border:0;background:none!important;color:#2F55D4!important;
    font:inherit;font-size:15px;font-weight:500;cursor:pointer;opacity:0;transition:opacity .15s}
  #tdpd-msq.tdpd-msq-on .tdpd-msq-x{opacity:1;transition:opacity .25s ease .15s}

  #tdpd-msq .tdpd-msq-body{flex:1 1 auto;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
    padding:0 16px calc(24px + env(safe-area-inset-bottom))}
  #tdpd-msq .tdpd-msq-idle[hidden],#tdpd-msq .tdpd-msq-res[hidden]{display:none}
  /* лесенка появления блоков */
  #tdpd-msq .tdpd-msq-idle > *{opacity:0;transform:translateY(10px)}
  #tdpd-msq.tdpd-msq-on .tdpd-msq-idle > *{opacity:1;transform:none;
    transition:opacity .3s ease,transform .4s cubic-bezier(.2,.85,.2,1);transition-delay:calc(.12s + var(--tdpd-i,0) * .035s)}
  #tdpd-msq .tdpd-sq-h{margin:22px 0 10px}
  #tdpd-msq .tdpd-msq-idle > .tdpd-sq-h:first-child{margin-top:12px}
  #tdpd-msq .tdpd-sq-hint{margin:0}
  #tdpd-msq .tdpd-sq-hint a{height:36px;padding:0 14px;font-size:14px}
  #tdpd-msq .tdpd-msq-hr{display:flex;align-items:center;justify-content:space-between;margin:12px 0 10px}
  #tdpd-msq .tdpd-msq-hr .tdpd-sq-h{margin:0}
  #tdpd-msq .tdpd-msq-rm{padding:0;border:0;background:none!important;color:#8C93A0!important;font:inherit;font-size:12.5px;cursor:pointer}
  #tdpd-msq .tdpd-msq-rec a{background:#F7F8FB;border-color:#EEF0F4}
  #tdpd-msq .tdpd-sq-grid{gap:10px}
  #tdpd-msq .tdpd-sq-cta{margin-top:22px}

  #tdpd-msq .tdpd-msq-res > .tdpd-sq-h{margin-top:12px}
  #tdpd-msq .tdpd-msq-list{display:flex;flex-direction:column}
  #tdpd-msq .tdpd-msq-it{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid #F0EDE6;
    color:#20242C;text-decoration:none;animation:tdpdMsRow .28s cubic-bezier(.2,.8,.2,1) backwards;
    animation-delay:calc(var(--tdpd-i,0) * .025s)}
  #tdpd-msq .tdpd-msq-it:active{background:#F7F8FB}
  #tdpd-msq .tdpd-msq-it img,#tdpd-msq .tdpd-msq-noimg{flex:0 0 52px;width:52px;height:52px;border-radius:10px;object-fit:contain;background:#FAF6EC}
  #tdpd-msq .tdpd-msq-nm{flex:1 1 auto;min-width:0;font-size:14px;line-height:1.3;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  #tdpd-msq .tdpd-msq-pr{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;font-size:14px;font-weight:600;white-space:nowrap}
  #tdpd-msq .tdpd-msq-pr s{font-size:12px;font-weight:400;color:#8C93A0}
  #tdpd-msq .tdpd-msq-req{font-weight:400;font-size:12.5px;color:#7A756C}
  #tdpd-msq .tdpd-msq-none{display:flex;flex-direction:column;gap:4px;margin:18px 0 6px;padding:16px;border-radius:14px;background:#FAF6EC}
  #tdpd-msq .tdpd-msq-none b{font-size:15px;font-weight:600}
  #tdpd-msq .tdpd-msq-none span{font-size:13px;line-height:1.45;color:#7A756C}
  #tdpd-msq .tdpd-msq-all{display:flex;align-items:center;justify-content:center;gap:6px;height:48px;margin-top:14px;
    border-radius:12px;background:#EDF1FD;color:#2F55D4;font-size:14.5px;font-weight:500;text-decoration:none}
  #tdpd-msq .tdpd-msq-all:active{background:#DCE4FB}
}
@media (prefers-reduced-motion:reduce){
  #tdpd-msq,#tdpd-msq .tdpd-msq-bar,#tdpd-msq .tdpd-msq-idle > *,#tdpd-lr .tdpd-lr-dlg,#tdpd-lr .tdpd-lr-ov{transition:none!important}
  #cart .tdpd-ms,#cart .tdpd-ms-ready > *,#tdpd-msq .tdpd-msq-it,#top .open > .tdpd-acc,#top #form-language .open > .tdpd-reg-menu{animation:none!important}
}

/* --- 11. Мобильное меню: крестик и «назад» без красной заливки ----------
   Тема держит button:hover{background:#cc2121;color:#fff} — на телефоне
   «ховер» залипает после нажатия, и крестик становился красным квадратом. */
#tdpd-mmenu .tdpd-mm2-close,#tdpd-mmenu .tdpd-mm2-back{border-radius:12px;transition:background-color .15s,color .15s}
#tdpd-mmenu .tdpd-mm2-close:hover,#tdpd-mmenu .tdpd-mm2-close:focus,
#tdpd-mmenu .tdpd-mm2-back:hover,#tdpd-mmenu .tdpd-mm2-back:focus{background:#F2F3F7!important;color:#20242C!important;border:0;outline:0}
#tdpd-mmenu .tdpd-mm2-close:active,#tdpd-mmenu .tdpd-mm2-back:active{background:#E6E8EE!important;color:#20242C!important}

/* --- 12. Смета: подсветка формы, к которой привёл клик (tdpd_smeta.tpl, openPanel) --- */
@keyframes tdpdSmFlash{0%{box-shadow:0 0 0 0 rgba(47,85,212,0)}18%{box-shadow:0 0 0 5px rgba(47,85,212,.35)}100%{box-shadow:0 0 0 16px rgba(47,85,212,0)}}
.tdpd-sm-save.tdpd-sm-flash{animation:tdpdSmFlash 1.8s cubic-bezier(.2,.8,.2,1)}

/* --- 13. Правки 26.09 (вечер) --------------------------------------------
   Скругления: тема обнуляет border-radius выпадающих меню с !important —
   карточки региона и кабинета выходили с прямыми углами. Квадрат-значок в
   меню кабинета тема делала display:block — значок уезжал в левый угол. */
@media (min-width:992px){
  #top #form-language .dropdown-menu.tdpd-reg-menu,
  #top .dropdown-menu.user-dropdown-menu.tdpd-acc{border-radius:16px!important}
  #top .tdpd-acc .tdpd-acc-av{display:flex!important;align-items:center;justify-content:center}
  #top .tdpd-acc .tdpd-acc-av svg{display:block;margin:0}
  #top .tdpd-acc .tdpd-acc-hd > div{flex:1 1 auto;min-width:0}
}

/* Попапы темы (magnific popup: «Оставить заявку», вход, «купить в один клик»,
   выбор исполнения) — плавное появление и уход. Тема открывает их с
   removalDelay:200, поэтому при закрытии есть класс .mfp-removing.
   Содержимое приходит аяксом ПОСЛЕ .mfp-ready — поэтому появление
   ключевыми кадрами на самом содержимом, а не переходом. */
@keyframes tdpdMfpIn{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:none}}
@keyframes tdpdMfpBg{from{opacity:0}}
.mfp-bg.mfp-ready{animation:tdpdMfpBg .25s ease}
.mfp-bg.mfp-removing{opacity:0!important;transition:opacity .2s ease}
.mfp-wrap .mfp-content > *{animation:tdpdMfpIn .34s cubic-bezier(.2,.8,.2,1) backwards}
.mfp-wrap.mfp-removing .mfp-content{opacity:0;transform:translateY(12px) scale(.98);transition:opacity .18s ease,transform .2s ease}
@media (max-width:767px){
  @keyframes tdpdMfpUp{from{transform:translateY(100%)}to{transform:none}}
  .mfp-container:has(#product-options-popup) .mfp-content > *{animation-name:tdpdMfpUp}
}
@media (prefers-reduced-motion:reduce){
  .mfp-bg.mfp-ready,.mfp-wrap .mfp-content > *{animation:none!important}
  .mfp-bg.mfp-removing,.mfp-wrap.mfp-removing .mfp-content{transition:none!important}
}

/* ======================================================================
   TDPD 03.11.2026 — карточка товара на телефоне (неделя 2 по разбору октября).
   В октябре мобильная карточка теряла 45 % входов против 28 % на ПК. До
   правки на первом экране было три строки крошек, квадратное фото 335px с
   белыми полями, а название уходило под панель покупки; карточки ростовых
   групп занимали 590px. Теперь: одна строка «← родительский раздел», фото
   262px, название и наличие на первом экране, группы — 441px.
   Всё в пределах 767px и только на карточке товара (body.product-product-*).
   ====================================================================== */
@media (max-width:767px){
  /* крошки: только ссылка на раздел на ступень выше */
  body[class*="product-product"] .breadcrumb > li{display:none!important}
  body[class*="product-product"] .breadcrumb > li:nth-last-child(2){
    display:block!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  body[class*="product-product"] .breadcrumb > li:nth-last-child(2):before{
    content:"\2190"!important;padding:0 6px 0 0!important;color:#8C93A0}

  /* фото: слайд ниже, картинка вписана по высоте */
  body[class*="product-product"] .left-info .thumbnails .slick-slide{
    height:262px!important;display:flex!important;align-items:center;justify-content:center}
  body[class*="product-product"] .left-info .thumbnails .slick-slide img{
    max-height:252px!important;width:auto!important;max-width:100%!important;margin:0 auto}
  /* одна точка у единственного фото налезала на строку «Артикул» */
  body[class*="product-product"] .left-info .slick-dots li:only-child{display:none}

  /* ростовые группы: плотнее, по-прежнему две в ряд */
  #product-info-right #product .options-box.tdpd-rg-box{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  #product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card{
    column-gap:7px;row-gap:1px;padding:9px 10px!important}
  #product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card > .tdpd-rg-sub,
  #product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card > .tdpd-rg-seat{
    font-size:12px!important;line-height:1.3!important}
  #product-info-right #product .options-box.tdpd-rg-box label.tdpd-rg-card > .tdpd-rg-price{
    margin-top:2px!important;font-size:14px!important}
}

/* TDPD 03.11.2026 — приветствие чата Битрикс24 («Здравствуйте! Готова помочь…»,
   312×94) само всплывало над правой колонкой карточки — поверх опций и цены.
   На карточке товара и в смете его не показываем; сама кнопка чата остаётся.
   z-index виджета не перебиваем (он ставит его сам) — только прячем окно. */
body[class*="product-product"] .b24-widget-button-popup,
body.checkout-tdpd_smeta .b24-widget-button-popup{display:none!important}
