/* =====================================================================
   ART-GSM — Redesign 2026 (Style B) — ОФОРМЛЕНИЕ ЗАКАЗА (sale.order.ajax v2)
   Метод: Style B РЕСКИН (форма генерится в order_ajax.js 335КБ — переодеваем
   через CSS, логику заказа не трогаем). Скоуп страницы body[data-cur="/order/"].
   ===================================================================== */

/* --- 1. Легаси-хром страницы (как на корзине): пустые контейнеры/дубли --- */
body.ag-styleb[data-cur="/order/"] .topic,
body.ag-styleb[data-cur="/order/"] .breadcrumbs,
body.ag-styleb[data-cur="/order/"] .page-top,
body.ag-styleb[data-cur="/order/"] .basket-back{display:none !important;}
/* городской селектор (.bx-sls) — НЕ скрываем (нужен для выбора города), а оформляем как Style B-поле */
body.ag-styleb[data-cur="/order/"] .bx-soa-section-location{display:block;margin:0 0 var(--s-16);padding:0;}
body.ag-styleb #bx-soa-delivery .bx-soa-location-input-container{margin:0;padding:0;}
body.ag-styleb #bx-soa-delivery .bx-sls{max-width:440px;}
/* ТОЛЬКО косметика внешней коробки виджета выбора города (рамка/радиус/фон).
   НЕ трогаем display/height/padding/позиционирование внутренних элементов — иначе ломается
   клик-ввод и подсказки виджета bx-sls (ловушка: display:flex ломал ввод города). */
body.ag-styleb #bx-soa-delivery .bx-sls .dropdown-block.bx-ui-sls-input-block{
  border:1px solid var(--line-2) !important;border-radius:var(--r-sm) !important;background:var(--surface-2) !important;
}

/* «Оформить заказ»: контейнер кнопки .bx-soa-cart-total-button-container имел margin -29px (full-bleed Aspro)
   → кнопка вылезала за карточку. Сбрасываем → кнопка внутри карточки, по ширине контента (уже карточки). */
body.ag-styleb #bx-soa-total .bx-soa-cart-total-button-container{margin-left:0 !important;margin-right:0 !important;}
body.ag-styleb #bx-soa-total #bx-soa-orderSave,
body.ag-styleb #bx-soa-total .btn-order-save{margin-left:0 !important;margin-right:0 !important;width:100% !important;max-width:100% !important;box-sizing:border-box;}
body.ag-styleb[data-cur="/order/"] .container_inner{display:block !important;}
body.ag-styleb[data-cur="/order/"] .container_inner > .right_block{display:none !important;}
body.ag-styleb[data-cur="/order/"] .container_inner > .middle,
body.ag-styleb[data-cur="/order/"] .middle,
body.ag-styleb[data-cur="/order/"] .wrapper_inner,
body.ag-styleb[data-cur="/order/"] .middle > .container,
body.ag-styleb[data-cur="/order/"] .middle .maxwidth-theme{
  display:block !important;width:auto !important;max-width:none !important;
  margin:0 !important;padding:0 !important;float:none !important;border:0 !important;background:none !important;
}
body.ag-styleb[data-cur="/order/"] .ag-checkout{padding-top:var(--s-12);padding-bottom:var(--s-40);}
body.ag-styleb .ag-checkout .page-head{margin-bottom:var(--s-16);}

/* --- Верх страницы: подтягиваем крошки/заголовок/форму вверх (Артак 31.08.2026).
   Симметрично корзине (cart.css, секция 2b): было pt 12 + крошки 16/16 + .page-head 8/20
   + h1 mb10 → форма начиналась на 328px; стало ≈ 268px. --- */
body.ag-styleb[data-cur="/order/"] .ag-checkout{padding-top:var(--s-4);}
body.ag-styleb[data-cur="/order/"] .ag-checkout .crumbs{padding-top:var(--s-6);padding-bottom:var(--s-6);}
body.ag-styleb[data-cur="/order/"] .ag-checkout .page-head{padding-top:0;padding-bottom:0;margin-bottom:var(--s-16);}
body.ag-styleb[data-cur="/order/"] .ag-checkout .page-head h1{margin-bottom:var(--s-6);}
body.ag-styleb[data-cur="/order/"] .ag-checkout .page-head .ph-meta,
body.ag-styleb[data-cur="/order/"] .ag-checkout .page-head .ph-sub{margin-top:var(--s-4);margin-bottom:0;}

/* --- 2. Раскладка: форма слева + сводка справа --- */
body.ag-styleb #bx-soa-order-main.row{
  display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--s-28);align-items:start;
  margin:0;opacity:1 !important;
}
body.ag-styleb #bx-soa-order-main > .col-md-9,
body.ag-styleb #bx-soa-order-main > .bx-soa{width:auto;min-width:0;max-width:none;padding:0;float:none;
  grid-column:1 !important;grid-row:1 !important;}     /* форма — левая колонка (иначе автораскладка её ставит вправо) */
body.ag-styleb #bx-soa-order-main > #bx-soa-total,
body.ag-styleb #bx-soa-order-main > .col-sm-3{width:auto;padding:0;float:none;
  grid-column:2 !important;grid-row:1 !important;}     /* сводка — правая колонка */

/* --- 3. Секции → карточки .co-block --- */
body.ag-styleb #bx-soa-order-main .bx-soa-section{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);
  box-shadow:var(--shadow-sm);padding:var(--s-20) var(--s-24);margin:0 0 var(--s-16);
}
body.ag-styleb .bx-soa-section-title-container{
  margin:0 0 var(--s-16);padding:0;border:0;display:flex;align-items:center;
  justify-content:space-between;gap:var(--s-12);flex-wrap:wrap;
}
body.ag-styleb .bx-soa-section-title{font-size:17px;font-weight:700;letter-spacing:-.01em;margin:0;color:var(--ink);line-height:1.3;}
body.ag-styleb .bx-soa-section-title-count{display:none;}
body.ag-styleb .bx-soa-person-type{display:flex;gap:var(--s-8);}

/* «Изменить» / «Продолжить» / change-info → нейтральные Style B-кнопки */
body.ag-styleb .change-info.btn,
body.ag-styleb .bx-soa-editstep{
  background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-sm);
  color:var(--ink-2);font-weight:600;font-size:13px;padding:8px 16px;cursor:pointer;height:auto;
}
body.ag-styleb .change-info.btn:hover{border-color:var(--accent);color:var(--accent);}
body.ag-styleb .change_city.colored,
body.ag-styleb .city_destination{font-size:13px;font-weight:500;}

/* --- 4. Поля формы --- */
/* Поля — в столбик на всю ширину (надёжно ровно). 2-колоночный грид Aspro ломал auto-flow
   (раскладывал колонки в обратном порядке из-за своих стилей) → отказались, стек проще и всегда ровный. */
body.ag-styleb #bx-soa-properties .row.row-props,
body.ag-styleb #bx-soa-properties .bx-soa-customer .row{display:block;margin:0;padding:0;}
body.ag-styleb .bx-soa-customer-field,
body.ag-styleb #bx-soa-properties .form-group{display:block;width:100%;margin:0 0 var(--s-14);padding:0;float:none;}
body.ag-styleb #bx-soa-properties .required-fields-note{margin:var(--s-6) 0 0;padding:0;color:var(--ink-3);font-size:12.5px;}
body.ag-styleb .bx-soa-custom-label,
body.ag-styleb #bx-soa-properties label:not(.checkbox-label){
  font-size:13px;font-weight:600;color:var(--ink-2);margin:0 0 6px;display:block;
}
body.ag-styleb .bx-authform-starrequired{color:#ef4444;}
body.ag-styleb .soa-property-container input[type=text],
body.ag-styleb .soa-property-container input[type=tel],
body.ag-styleb .soa-property-container input[type=email],
body.ag-styleb .soa-property-container input[type=number],
body.ag-styleb #bx-soa-properties input.form-control,
body.ag-styleb #bx-soa-properties select,
body.ag-styleb #bx-soa-properties textarea{
  width:100%;height:46px;border:1px solid var(--line-2);border-radius:var(--r-sm);
  background:var(--surface-2);padding:0 14px;font:inherit;font-size:14px;color:var(--ink);box-shadow:none;
}
body.ag-styleb #bx-soa-properties textarea{height:auto;min-height:84px;padding:12px 14px;line-height:1.4;}
body.ag-styleb #bx-soa-properties input:focus,
body.ag-styleb #bx-soa-properties select:focus,
body.ag-styleb #bx-soa-properties textarea:focus{outline:none;border-color:var(--accent);background:var(--surface);}
body.ag-styleb .form-group.error input,
body.ag-styleb .has-error input{border-color:#ef4444 !important;}

/* --- 5. Доставка / оплата → карточки-опции .opt-card --- */
body.ag-styleb .bx-soa-pp{margin:0;display:flex;flex-direction:column;gap:var(--s-12);}
body.ag-styleb .bx-soa-pp-item-container{padding:0;}
/* отступ между карточками доставки/оплаты (раньше липли друг к другу ~2px) */
body.ag-styleb .bx-soa-pp-company{
  width:100%;margin:0 0 var(--s-12);padding:0;float:none;
}
body.ag-styleb .bx-soa-pp-company:last-child{margin-bottom:0;}
/* кнопка внутри карточки доставки («Выбрать пункт самовывоза») — радиус как у остальных, без капса */
body.ag-styleb .bx-soa-pp-company .btn{border-radius:var(--r-md);text-transform:none;}
body.ag-styleb .bx-soa-pp-company-inner{
  border:1.5px solid var(--line-2) !important;border-radius:var(--r-card) !important;
  background:var(--surface);padding:var(--s-14) var(--s-16);cursor:pointer;transition:border-color .15s,background .15s;
  display:flex;align-items:center;gap:var(--s-12);box-shadow:none;
}
body.ag-styleb .bx-soa-pp-company-inner:hover{border-color:var(--accent) !important;}
body.ag-styleb .bx-soa-pp-company.bx-selected .bx-soa-pp-company-inner{
  border-color:var(--accent) !important;background:color-mix(in srgb,var(--accent) 6%,var(--surface));
}
body.ag-styleb .bx-soa-pp-company-smalltitle,
body.ag-styleb .bx-soa-pp-company .bx-soa-pp-company-graf-container{font-weight:600;font-size:14px;color:var(--ink);}
body.ag-styleb .bx-soa-pp-company .price,
body.ag-styleb .bx-soa-pp-company .bx-soa-pp-price{font-family:var(--mono);font-weight:700;color:var(--ink);margin-left:auto;}
body.ag-styleb .bx-soa-pp-company .bx-soa-pp-list-termin,
body.ag-styleb .bx-soa-pp-company .bx-soa-pp-company-description{font-size:12.5px;color:var(--ink-3);font-weight:400;}

/* --- 6. Сайдбар «Итого» → .order-summary --- */
/* НЕ ставим position тут — Aspro order_ajax.js сам делает блок fixed на скролле (ghost = плейсхолдер).
   Мой sticky + скрытый ghost конфликтовали → кнопка наезжала на согласие. Оставляем только вид. */
body.ag-styleb #bx-soa-total .bx-soa-cart-total{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:var(--s-20);
}
body.ag-styleb .bx-soa-cart-total .change_basket{font-size:17px;font-weight:700;color:var(--ink);margin-bottom:var(--s-14);display:flex;justify-content:space-between;align-items:baseline;}
body.ag-styleb .bx-soa-cart-total .change_link{font-size:12.5px;font-weight:600;color:var(--accent);}
body.ag-styleb .bx-soa-cart-total-line{display:flex;align-items:center;justify-content:space-between;gap:var(--s-12);font-size:14px;color:var(--ink-2);padding:5px 0;border:0;}
body.ag-styleb .bx-soa-cart-total-line .bx-soa-cart-d{font-family:var(--mono);font-weight:600;color:var(--ink);}
body.ag-styleb .bx-soa-cart-total-line-totals{border-top:1px solid var(--line);margin-top:var(--s-10);padding-top:var(--s-14);}
body.ag-styleb .bx-soa-cart-total-line-totals .bx-soa-cart-t{font-size:15px;font-weight:700;color:var(--ink);}
body.ag-styleb .bx-soa-cart-total-line-totals .bx-soa-cart-d{font-size:24px;font-weight:700;letter-spacing:-.02em;}

/* промокод в сводке */
body.ag-styleb .bx-soa-coupon,
body.ag-styleb .bx-soa-cart-total .coupon{margin:var(--s-14) 0;}
body.ag-styleb .bx-soa-cart-total input[type=text]{width:100%;height:44px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface-2);padding:0 12px;font:inherit;font-size:13px;}

/* кнопка оформления */
body.ag-styleb #bx-soa-total .checkout-button,
body.ag-styleb #bx-soa-total .btn-default,
body.ag-styleb #bx-soa-total a.btn-lg,
body.ag-styleb .bx-soa-cart-total .btn{
  display:flex !important;align-items:center;justify-content:center;gap:8px;width:100%;
  height:52px;background:var(--accent);color:#fff;border:0;border-radius:var(--r-md);
  font-weight:700;font-size:15px;cursor:pointer;margin-top:var(--s-14);box-shadow:none;text-transform:none;
}
body.ag-styleb #bx-soa-total .checkout-button:hover,
body.ag-styleb .bx-soa-cart-total .btn:hover{background:var(--accent-600,#1d4ed8);color:#fff;}

/* «Продолжить» под формой покупателя — тот же радиус, что у «Оформить заказ» (не pill), без капса */
body.ag-styleb .bx-soa-editstep-btn,
body.ag-styleb #bx-soa-properties .btn-default{
  background:var(--accent);color:#fff;border:0;border-radius:var(--r-md);height:46px;padding:0 24px;font-weight:700;cursor:pointer;text-transform:none;
}
body.ag-styleb #bx-soa-order-main .change-info.btn{border-radius:var(--r-md);text-transform:none;}

/* тоглы согласия (Я согласен / оферта) — отступ от кнопки, чтобы не наезжали */
body.ag-styleb #bx-soa-total .checkbox,
body.ag-styleb #bx-soa-total .license{font-size:12.5px;color:var(--ink-3);margin-top:var(--s-14);clear:both;line-height:1.4;}
body.ag-styleb #bx-soa-total .license + .license,
body.ag-styleb #bx-soa-total .checkbox + .checkbox{margin-top:var(--s-8);}
/* кнопка оформления — гарантированный отступ снизу до согласия */
body.ag-styleb #bx-soa-total .btn-order-save,
body.ag-styleb #bx-soa-total .btn-default{margin-bottom:var(--s-8);}

/* ag flow-06: блок согласий (оферта + перс.данные) реально рендерится как
   .bx-soa-cart-conditions с .label_block и приклеивается JS-ом СИБЛИНГОМ к .bx-soa-cart-total
   внутри .bx-soa-total-wrapper — т.е. на сером фоне вне карточки. Присоединяем к низу карточки. */
body.ag-styleb #bx-soa-total .bx-soa-total-wrapper:has(.bx-soa-cart-conditions) .bx-soa-cart-total{
  border-radius:var(--r-lg) var(--r-lg) 0 0;
}
body.ag-styleb #bx-soa-total .bx-soa-cart-conditions{
  background:var(--surface);
  border:1px solid var(--line);border-top:0;
  border-radius:0 0 var(--r-lg) var(--r-lg);
  box-shadow:var(--shadow-md);
  margin-top:-1px;
  padding:var(--s-16) var(--s-20) var(--s-20);   /* ВНИМАНИЕ: --s-18 в шкале НЕТ; из-за него значение было невалидным и padding падал в 0 */
}
body.ag-styleb #bx-soa-total .bx-soa-cart-conditions .label_block{font-size:12.5px;color:var(--ink-3);line-height:1.4;margin:0;}
body.ag-styleb #bx-soa-total .bx-soa-cart-conditions .label_block + .label_block{margin-top:var(--s-8);}
/* строки согласий: ровный ритм, тумблер не липнет к краю карточки (Артак 31.08.2026) */
body.ag-styleb #bx-soa-total .bx-soa-cart-conditions label.license,
body.ag-styleb #bx-soa-total .bx-soa-cart-conditions label.offer_pub{margin:0;padding-left:50px;min-height:20px;}
body.ag-styleb #bx-soa-total .bx-soa-cart-conditions .label_block + .label_block{margin-top:var(--s-12);}

/* --- Выравнивание карточки «Ваш заказ» по секции «Покупатель» (Артак 31.08.2026).
   1) Убираем внутренние пустоты сводки: до строк «Доставка/Оплата» было по 17px сверху,
      до кнопки — 13+20+14=47px. 2) Остаток (если левая секция всё же выше — например
      «Юридическое лицо» с доп. полями) распределяет JS: min-height на .bx-soa-total-wrapper
      + margin-top:auto у контейнера кнопки, т.е. кнопка прижимается к низу карточки. --- */
/* Сводка не тянется под высоту формы (у «Юридического лица» полей вдвое больше) — вместо этого
   едет за экраном. Aspro вешает .sticky_top с position:sticky и top:-2px, но липкости не было:
   grid-item #bx-soa-total имел высоту по контенту (align-items:start у #bx-soa-order-main), и
   прилипать было некуда. Растягиваем сам grid-item на всю строку, а карточку липнем под шапку
   (она sticky, высота 172px). */
body.ag-styleb #bx-soa-order-main > #bx-soa-total,
body.ag-styleb #bx-soa-order-main > .col-sm-3{align-self:stretch;}
/* top перебиваем !important: Aspro-скрипт sticky_top пишет инлайн top:-2px, из-за него карточка
   уезжала под шапку. 188px = высота липкой шапки (172) + 16. */
body.ag-styleb #bx-soa-total .bx-soa-total-wrapper{
  position:sticky !important;
  /* 188 = липкая шапка (172) + 16. На низком окне берём меньшее значение, чтобы низ карточки
     с кнопкой «Оформить заказ» оставался виден (верх при этом частично уходит под шапку). */
  top:min(188px, calc(100vh - 580px)) !important;
}
/* body с overflow-x:hidden делает страницу scroll-контейнером и в части версий WebKit гасит
   sticky у потомков; clip обрезает так же, но scroll-контейнер не создаёт (Safari 16+). */
body.ag-styleb[data-cur="/order/"]{overflow-x:hidden;overflow-x:clip;}

body.ag-styleb #bx-soa-total .bx-soa-coupon{margin-bottom:var(--s-10);}
body.ag-styleb #bx-soa-total .total-scroll-info{margin-top:var(--s-10);}
body.ag-styleb #bx-soa-total .bx-soa-cart-total-line-totals{margin-bottom:var(--s-10);}
body.ag-styleb #bx-soa-total .bx-soa-cart-total-button-container{padding-top:var(--s-14);}
body.ag-styleb #bx-soa-total .bx-soa-cart-total-button-container > .btn{margin-top:7px;}

/* --- Секция «Покупатель»: кнопка «Продолжить» выше, надпись об обязательных полях под ней,
   хвост карточки без пустоты (Артак 31.08.2026). Перенос самой надписи в .bx-soa-more делает
   app.js — Aspro (order_actions.js) вешает её последним элементом .row внутри полей. --- */
body.ag-styleb[data-cur="/order/"] #bx-soa-properties .bx-soa-section-content{padding-bottom:0;}
body.ag-styleb[data-cur="/order/"] #bx-soa-properties .bx-soa-more{padding-top:var(--s-12);padding-bottom:0;}
body.ag-styleb[data-cur="/order/"] #bx-soa-properties .required-fields-note__container{margin-top:var(--s-12);}
body.ag-styleb[data-cur="/order/"] #bx-soa-properties .bx-soa-more .required-fields-note__container{margin-top:var(--s-10);padding-left:0;padding-right:0;}  /* bootstrap-колонка даёт padding 15px — надпись съезжала вправо от кнопки */
body.ag-styleb[data-cur="/order/"] #bx-soa-properties .required-fields-note{margin:0;}
body.ag-styleb[data-cur="/order/"] #bx-soa-properties.bx-soa-section{padding-bottom:var(--s-20);}

/* --- 7. Прочее / уведомления --- */
body.ag-styleb #bx-soa-main-notifications .alert{border-radius:var(--r-sm);font-size:13px;}
body.ag-styleb .bx-soa-section .alert-danger:empty{display:none;}

/* --- 8. Адаптив --- */
@media (max-width:900px){
  /* запас снизу, чтобы фикс. таб-бар не перекрывал низ сводки/согласие */
  body.ag-styleb[data-cur="/order/"] .ag-checkout{padding-bottom:96px;}
  body.ag-styleb #bx-soa-order-main.row{grid-template-columns:1fr;}
  /* на мобиле одна колонка — сбрасываем десктоп-пины (иначе grid-column:2/grid-row:1 кладёт
     сводку в ту же ячейку, что и форму → наезд). Стекаем по порядку: форма, затем сводка. */
  body.ag-styleb #bx-soa-order-main > .bx-soa,
  body.ag-styleb #bx-soa-order-main > .col-md-9{grid-column:1 !important;grid-row:auto !important;}
  body.ag-styleb #bx-soa-order-main > #bx-soa-total,
  body.ag-styleb #bx-soa-order-main > .col-sm-3{grid-column:1 !important;grid-row:auto !important;}
  body.ag-styleb #bx-soa-total .bx-soa-cart-total{position:static;}
  body.ag-styleb #bx-soa-total .bx-soa-total-wrapper{position:static !important;top:auto !important;}
  body.ag-styleb .bx-soa-customer-field.col-sm-6{flex:1 1 100%;}
}

/* ===== Полировка чекаута 2026-07-02 (Dostavista UX) ===== */
/* P1-1: Manrope вместо Aspro Montserrat (без *, чтобы не задеть икон-шрифты) */
body.ag-styleb #bx-soa-order-main,
body.ag-styleb #bx-soa-order-main .btn,
body.ag-styleb #bx-soa-order-main input,
body.ag-styleb #bx-soa-order-main select,
body.ag-styleb #bx-soa-order-main textarea,
body.ag-styleb #bx-soa-order-main label,
body.ag-styleb .bx-soa-section-title,
body.ag-styleb #bx-soa-total .bx-soa-cart-total,
body.ag-styleb #bx-soa-total .btn {
	font-family: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif !important;
}
/* P1-2: убрать точечные лидеры в сводке */
body.ag-styleb #bx-soa-total .bx-soa-cart-total-line:before { display: none !important; }
body.ag-styleb #bx-soa-total .bx-soa-cart-total-line > span { background: transparent !important; }
/* P1-3: «Итого» — вниз сводки */
body.ag-styleb #bx-soa-total .bx-soa-cart-total { display: flex; flex-direction: column; }
body.ag-styleb #bx-soa-total .bx-soa-cart-total > * { order: 5; }
body.ag-styleb #bx-soa-total .bx-soa-cart-total-line-total,
body.ag-styleb #bx-soa-total .bx-soa-cart-total-line-totals {
	order: 8;
	border-top: 1px solid var(--line, #e8e8ef);
	padding-top: 12px;
	margin-top: 8px;
}
body.ag-styleb #bx-soa-total [class*="button"] { order: 9; }
/* P1-4/5: кнопки — канон Style B, не пилюли, не капс */
body.ag-styleb #bx-soa-order-main .btn,
body.ag-styleb #bx-soa-total .btn { border-radius: var(--r-md, 14px) !important; text-transform: none; }
body.ag-styleb #bx-soa-delivery .btn-default,
body.ag-styleb #bx-soa-paysystem .btn-default {
	background: var(--accent, #2563eb);
	color: #fff;
	border: 0;
	height: 46px;
	padding: 0 24px;
	font-weight: 700;
	line-height: 46px;
}
/* P1-6: цена доставки — вправо, жирная, чёрная */
body.ag-styleb .bx-soa-pp-company-inner .bx-soa-pp-delivery-cost {
	margin-left: auto;
	color: var(--ink, #16161d);
	font-weight: 700;
	font-size: 15px;
	white-space: nowrap;
}
/* P1-7: радио аккуратно слева */
body.ag-styleb .bx-soa-pp-company-graf-container { display: flex; align-items: center; gap: 10px; }
body.ag-styleb .bx-soa-pp-company-checkbox {
	appearance: auto;
	accent-color: var(--accent, #2563eb);
	width: 18px; height: 18px;
	margin: 0; flex: none;
}
/* P2-8/9: textarea адреса и комментария + лейблы */
body.ag-styleb #bx-soa-order-main textarea.form-control,
body.ag-styleb #bx-soa-delivery textarea {
	border: 1px solid var(--line-2, #dfe3ee);
	border-radius: var(--r-sm, 10px);
	background: var(--surface-2, #f7f8fc);
	padding: 12px 14px;
	min-height: 84px;
	font-size: 14px;
	color: var(--ink, #16161d);
	box-shadow: none;
}
body.ag-styleb #bx-soa-order-main textarea.form-control:focus,
body.ag-styleb #bx-soa-delivery textarea:focus {
	border-color: var(--accent, #2563eb);
	background: #fff;
	outline: none;
}
body.ag-styleb #bx-soa-order-main .bx-soa-customer-label {
	font-size: 13px; font-weight: 600; color: var(--ink-2, #4b4b57);
	margin: 0 0 6px; display: block;
}
/* P2-11: заголовок «Выберите адрес доставки» */
body.ag-styleb #bx-soa-delivery .bx-soa-title-subblock {
	font-size: 15px; font-weight: 700; color: var(--ink, #16161d); margin: 14px 0 10px;
}
/* P2-12: «в Москва» / «Другой город» в заголовке */
body.ag-styleb .bx-soa-section-title .city_destination { font-size: 13px; font-weight: 500; color: var(--ink-3, #8a8a97); }
body.ag-styleb .bx-soa-section-title .change_city {
	border-bottom: 0; margin-left: 12px; font-size: 13px; font-weight: 600;
	color: var(--accent, #2563eb); cursor: pointer;
}
body.ag-styleb .bx-soa-section-title .change_city:hover { text-decoration: underline; }
/* P3-15: промокод в сводке */
body.ag-styleb .bx-soa-cart-total input[type="text"] { height: 46px; border-radius: var(--r-sm, 10px); }
/* Кнопка Dostavista в плашке */
body.ag-styleb .ag-dv-btn-lair a.ag-dv-select-addr {
	display: inline-block; height: 42px; line-height: 42px; padding: 0 20px;
	background: var(--accent, #2563eb); color: #fff; border: 0;
	border-radius: var(--r-md, 14px); font-weight: 700; font-size: 13.5px;
}


/* подсказка оптовику про способ оплаты (20.08.2026) */
body.ag-styleb .ag-opt-paynote{
  margin:0 0 var(--s-14);padding:10px 14px;border-radius:var(--r-md);
  background:rgba(0,51,112,.05);border:1px solid rgba(0,51,112,.14);
  color:var(--ink-2);font-size:13px;line-height:1.45;
}
@media (max-width:640px){body.ag-styleb .ag-opt-paynote{font-size:12.5px;padding:9px 12px;}}

body.ag-styleb .ag-opt-paycalc{display:flex;flex-direction:column;gap:3px;margin-top:8px;
  padding-top:8px;border-top:1px solid rgba(0,51,112,.14);font-size:12.5px;line-height:1.45;}
body.ag-styleb .ag-opt-paycalc b{font-weight:600;color:var(--ink,#101a2b);font-variant-numeric:tabular-nums;}
body.ag-styleb .ag-opt-paycalc .c2{color:var(--ink-2,#42526b);}

/* =====================================================================
   СПОСОБ ДОСТАВКИ — плитки со логотипами служб (Артак 31.08.2026, вариант «C»)
   Было: строки Aspro с разъезжающимися ценами (x=297/633/783/834), радио-точками
   в случайных местах, жирным синим описанием самовывоза и крупной синей кнопкой
   «Выбрать пункт выдачи» внутри строки.
   Стало: сетка 2×N, самовывоз широкой карточкой сверху, у каждой службы её логотип,
   цена и срок в одной линии. Классы .ag-dlv--* и data-ag-kind проставляет app.js.
   ===================================================================== */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;
  float:none;width:auto;padding:0;margin:0;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item{
  width:auto;float:none;margin:0;padding:0;
}
/* самовывоз из магазина — во всю ширину, первым */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--shop{grid-column:1 / -1;order:-1;}

/* --- сама плитка --- */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item > .bx-soa-pp-company-inner{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-rows:auto 1fr auto;
  grid-template-areas:"head kind" "desc desc" "price extra";
  gap:10px 12px;
  height:100%;min-height:138px;
  border:1.5px solid var(--line);border-radius:var(--r-md);background:var(--surface);
  padding:16px 18px;margin:0;cursor:pointer;transition:border-color .15s, background .15s, box-shadow .15s;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--shop > .bx-soa-pp-company-inner{min-height:0;}
/* Всё, чему не назначена своя область (виджет выбора ПВЗ у СДЭК, блоки модуля Dostavista
   с адресом и расчётом), кладём отдельной строкой на всю ширину — иначе auto-placement
   роняет их в свободные ячейки и они наезжают на цену. */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item > .bx-soa-pp-company-inner > *{
  grid-column:1 / -1;min-width:0;
}
/* ВАЖНО: правила ниже, назначающие области (head/desc/price/extra), должны идти с тем же
   префиксом — иначе селектор выше перебивает их по специфичности и, например, шапка
   растягивается на обе колонки, наезжая на бейдж вида доставки. */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-item:hover > .bx-soa-pp-company-inner{border-color:#c7d2fe;}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-item.bx-selected > .bx-soa-pp-company-inner{
  border-color:var(--accent);background:#f7f9ff;box-shadow:0 0 0 3px rgba(37,99,235,.09);
}

/* --- шапка плитки: логотип службы или название --- */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item > .bx-soa-pp-company-inner > .bx-soa-pp-company-graf-container{
  grid-area:head;display:flex;align-items:center;gap:10px;min-height:26px;margin:0;padding:0;border:0;
  min-width:0;   /* без этого длинное название распирает колонку и бейдж вида наезжает на текст */
}
/* радио прячем визуально, но оставляем в потоке событий — на нём висит выбор Aspro.
   ВАЖНО: кружок радио Aspro рисует псевдоэлементами label — их тоже гасим, иначе они
   дерутся за ::before с логотипом и вылезают за плитку. */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-checkbox{
  position:absolute;width:1px;height:1px;opacity:0;margin:0;pointer-events:none;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-label::before,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-label::after{
  display:none !important;content:none !important;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-label{
  display:flex;align-items:center;gap:8px;margin:0;padding:0 !important;cursor:pointer;min-height:0;
  min-width:0;overflow-wrap:anywhere;
  font:800 15px/1.25 Manrope,-apple-system,sans-serif;color:var(--ink-1);letter-spacing:-.01em;
}
/* логотип службы — отдельный элемент, его вставляет app.js */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv-logo{
  display:block;flex:none;background-repeat:no-repeat;background-position:left center;background-size:contain;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--cdek .ag-dlv-logo{
  background-image:url(../assets/delivery/cdek.svg);width:78px;height:22px;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--yandex .ag-dlv-logo{
  background-image:url(../assets/delivery/yandex_delivery.svg);width:100px;height:20px;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--dostavista .ag-dlv-logo{
  background-image:url(../assets/delivery/dostavista.svg);width:112px;height:15px;
}
/* у брендовых служб логотип заменяет текстовое название */
/* текст названия — сжимаемый flex-item, иначе на узком экране распирает шапку и бейдж наезжает */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-label > span{min-width:0;overflow-wrap:anywhere;}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--logo .bx-soa-pp-company-label > span{display:none;}
/* «?»-подсказка не нужна: её текст мы выводим описанием под названием */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-label .hint{display:none;}
/* самовывоз: иконка магазина + название */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--shop .ag-dlv-logo{
  width:36px;height:36px;border-radius:10px;background-color:var(--blue-soft);background-position:center;background-size:22px 22px;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='%232563eb' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l1.5-5h15L21 9'/%3E%3Cpath d='M4 9v10a1 1 0 001 1h14a1 1 0 001-1V9'/%3E%3Cpath d='M3 9h18'/%3E%3Cpath d='M9 20v-6h6v6'/%3E%3C/svg%3E");
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--shop .bx-soa-pp-company-label{font-size:16px;}

/* --- бейдж вида доставки (Пункт выдачи / Курьером / Сегодня) --- */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inner[data-ag-kind]::after{
  content:attr(data-ag-kind);grid-area:kind;justify-self:end;align-self:center;
  font:700 11px/1 var(--font, Manrope, sans-serif);letter-spacing:.04em;text-transform:uppercase;
  color:var(--ink-3);background:#f1f4f9;border-radius:6px;padding:6px 9px;white-space:nowrap;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-selected .bx-soa-pp-company-inner[data-ag-kind]::after{
  color:var(--accent);background:#e6edff;
}

/* --- описание --- */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item > .bx-soa-pp-company-inner > .bx-soa-pp-company-description{
  grid-area:desc;display:block;margin:0;padding:0;float:none;
  font:500 13px/1.45 var(--font, Manrope, sans-serif);color:var(--ink-3);
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-description b,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-description font{
  font-weight:500 !important;color:inherit !important;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-description.hidden{display:block;}
/* inject — контейнер, куда СДЭК кладёт свою кнопку «Выбрать пункт самовывоза».
   Прячем его только если внутри нет ничего кликабельного (у остальных служб он пустой). */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject{
  display:block;margin:0;padding:0;float:none;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject:not(:has(a, button, input, select)){display:none;}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .bx-soa-pp-desc-container,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .bx-soa-pp-company,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .bx-soa-pp-company-block,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .sdek_pvzLair{
  display:block;width:auto;margin:0;padding:0;float:none;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .bx-soa-pp-company-desc:empty{display:none;}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject br{display:none;}

/* --- цена и срок --- */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item > .bx-soa-pp-company-inner > .bx-soa-pp-delivery-cost{
  grid-area:price;align-self:end;margin:0;padding:0;float:none;
  font:800 18px/1.2 var(--font, Manrope, sans-serif);letter-spacing:-.01em;color:var(--ink-1);
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item > .bx-soa-pp-company-inner > .bx-soa-pp-delivery-period{
  grid-area:extra;justify-self:end;align-self:end;margin:0;padding:0;float:none;
  font:500 13px/1.2 var(--font, Manrope, sans-serif);color:var(--ink-3);white-space:nowrap;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-list-termin{display:none;}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-list-description{display:block;font:inherit;color:inherit;margin:0;padding:0;}
/* «бесплатно» — зелёным (префикс тот же, иначе правило области price перебьёт цвет) */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .ag-dlv--free > .bx-soa-pp-company-inner > .bx-soa-pp-delivery-cost{color:#0aa04b;}
/* служба без цены (считается после оформления) */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dlv--noprice .bx-soa-pp-company-inner::before{
  content:"по расчёту";grid-area:price;align-self:end;
  font:700 15px/1.2 var(--font, Manrope, sans-serif);color:var(--ink-3);
}

/* --- кнопки внутри плитки: «Выбрать пункт выдачи» (Яндекс), «Выбрать пункт самовывоза»
   (СДЭК), «Указать адрес доставки» (Dostavista). Всегда отдельной строкой под ценой —
   рядом с ценой текст упирался в рамку кнопки. --- */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-delivery-calculate{
  grid-column:1 / -1;justify-self:start;margin:2px 0 0;padding:0;float:none;width:auto;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-delivery-calculate .twpx_btn_wrapper{margin:0;padding:0;}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-delivery-calculate .btn,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .btn,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .SDEK_selectPVZ,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dv-btn-lair .btn,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dv-btn-lair > a{
  display:inline-flex;align-items:center;justify-content:center;
  height:40px;padding:0 20px !important;border-radius:10px;   /* !important: у .btn Aspro свой padding 8px 0 */
  background:#fff !important;border:1.5px solid var(--accent) !important;color:var(--accent) !important;
  font:700 13px/1 Manrope,-apple-system,sans-serif;letter-spacing:0;text-decoration:none;
  box-shadow:none;white-space:nowrap;min-width:0;width:auto;margin:0;
}
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-delivery-calculate .btn:hover,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .btn:hover,
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dv-btn-lair > a:hover{
  background:var(--blue-soft) !important;
}
/* Кнопку выбора ПВЗ показываем только у выбранной службы — у СДЭК Bitrix так и делает
   (вставляет её в inject при выборе), у Яндекса модуль рисует её всегда. Приводим к одному. */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-item:not(.bx-selected) .bx-soa-pp-delivery-calculate{display:none;}

/* блок кнопки модуля Dostavista */
body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dv-btn-lair{
  grid-column:1 / -1;justify-self:start;margin:2px 0 0;padding:0;width:auto;
}

/* --- мобильный: одна колонка --- */
@media (max-width:760px){
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container{grid-template-columns:1fr;}
  /* кнопка выбора ПВЗ рядом с ценой на узком экране не помещается — отдельной строкой */
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item > .bx-soa-pp-company-inner{
    gap:8px 12px;
  }
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-delivery-calculate,
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dv-btn-lair,
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject{justify-self:stretch;margin-top:2px;}
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-delivery-calculate .btn,
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-company-inject .btn,
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .ag-dv-btn-lair > a{display:flex;width:100%;}
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-delivery-period{justify-self:end;}
  body.ag-styleb[data-cur="/order/"] #bx-soa-delivery .bx-soa-pp-item-container > .bx-soa-pp-company-item > .bx-soa-pp-company-inner{
    min-height:0;padding:14px 16px;
  }
}

/* AG-PICKUP-LIST 20261023 begin
   Самовывоз при оформлении: список пунктов (Т37, Митино) не зависит от Яндекс.Карты.
   Причина: на компьютере (от 768 px) компонент кладёт список position:absolute внутрь блока .pickup-wrapper
   (overflow:hidden), и высоту блоку даёт только #pickUpMap. Её высоту ставит JS (resizeMapContainers) лишь
   после загрузки Яндекс.Карт. Карта не поднялась (блокировщик, сеть, ключ) — блок 0–2 px, список в разметке
   есть, но не виден и не нажимается. Здесь: если карты нет — список в потоке, во всю ширину.
   Если карта есть — вёрстка прежняя, правило не срабатывает. Телефон (до 767 px) не затронут. */
@media (min-width:768px){
  /* браузеры без :has() (Firefox до 121, Safari до 15.4): запас высоты, чтобы список был виден и нажимался */
  @supports not selector(:has(*)){
    body.ag-styleb[data-cur="/order/"] .pickup-wrapper:not(.pickup-wrapper--no-map){
      min-height:340px;
    }
  }
}
@supports selector(:has(*)){
  @media (min-width:768px){
    /* карты нет совсем: контейнер пуст и JS не успел поставить ему высоту (это он делает до создания карты,
       так что при нормальной загрузке правило не срабатывает и размер контейнера карты не меняется) */
    body.ag-styleb[data-cur="/order/"] .pickup-wrapper:not(.pickup-wrapper--no-map):has(> #pickUpMap:empty:not([style*="height"])){
      flex-wrap:wrap;
    }
    body.ag-styleb[data-cur="/order/"] .pickup-wrapper:not(.pickup-wrapper--no-map):has(> #pickUpMap:empty:not([style*="height"])) > .bx-soa-pickup-list-outer-wrap{
      position:static;
      order:-2;
      width:100%;
      max-width:none;
      max-height:500px;
      border-right:0;
    }
  }
}
/* AG-PICKUP-LIST 20261023 end */
