/* Покупатель: макеты № 10–11 из правок 11.09. */
.kbuyer-cart.kpanel__body { max-height: none; overflow: visible; }
.kbuyer-cart .kcart-checkout {
  display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr);
  align-items: start; gap: 30px; margin: 24px 0 12px;
}
.kcart-return-terms { border: 1px solid #aaa; border-radius: 10px; padding: 10px 12px; font-size: 11px; line-height: 1.45; color: #252525; background: #fff; }
.kcart-checkout__form { min-width: 0; gap: 8px; }
.kcart-checkout__form .kfield { grid-template-columns: 40% minmax(0, 1fr); }
.kcart-checkout__form .ktotals { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
/* Кнопка — отдельной строкой. Раньше перенос делал margin-right: 100% у строки рублиКов,
   и во флексе с прижатием вправо она выталкивалась влево — на текст «Условия возврата». */
.kcart-checkout__form .ktotals::after { content: ""; flex-basis: 100%; order: 1; }
.kcart-checkout__form #kCheckout { flex: 0 0 auto; order: 2; margin-left: auto; border-radius: 24px; padding: 10px 26px; font-size: 15px; }
.kcart-checkout__form .ktotals .kgrey { background: transparent; border: 0; padding: 3px; white-space: nowrap; }

/* №17 (13.09): до «принимаю» кнопки оформления неактивны и это видно: бледные, без сдвига и заливки при наведении */
.kbuyer-cart .kbtn:disabled, .kbuyer-cart .kbtn:disabled:hover { opacity: .45; cursor: not-allowed; transform: none; }
.kbuyer-cart .kbtn--dark:disabled:hover { background: var(--k-dark); }
.kbuyer-cart .kbtn--sm:disabled:hover { background: #fff; }
.kcart-terms-hint { margin: 6px 0 0; text-align: right; }
/* Б4 (06.10, шаг Г2.4): подсказка под «Способом доставки» корзины — способ взят из заявки (ui.js cartMethodNote) */
.kcart-method-hint { margin: 0; line-height: 1.45; text-wrap: pretty; }
.cart-terms-hint { font-size: 12px; text-align: center; }

/* №26 (13.09): корзина одной таблицей с колонкой «Продавец»; ширины колонок общие для всех строк */
.kcart-actions { grid-template-columns: auto auto auto 1fr; margin: 8px 0; }
.kcart-table { table-layout: fixed; min-width: 1100px; }
.kcart-table th { white-space: normal; }
.kcart-table td { overflow-wrap: anywhere; vertical-align: middle; }
.kcart-table td .kmini { margin-top: 2px; line-height: 1.25; }
.kcart-table tr.kcart-table__group td { border-top: 2px solid var(--k-line); }
.kcart-table input:not([type="checkbox"]) { width: 100%; min-width: 0; min-height: 28px; padding: 3px 5px; border: 1px solid #9a9a9a; border-radius: 4px; background: #fff; }
.kcart-table .kcart-table__qty { max-width: 60px; text-align: right; }
/* № | Продавец | Производитель | Артикул | Наименование | Кол-во | Склад | Срок | Цена | Сумма | Условия | Гос. номер | Комментарии | выбор */
.kcart-table col:nth-child(1) { width: 3%; }
.kcart-table col:nth-child(2) { width: 10%; }
.kcart-table col:nth-child(3) { width: 7.5%; }
.kcart-table col:nth-child(4) { width: 7.5%; }
.kcart-table col:nth-child(5) { width: 12%; }
.kcart-table col:nth-child(6) { width: 5%; }
.kcart-table col:nth-child(7) { width: 9.5%; }
.kcart-table col:nth-child(8) { width: 6.5%; }
.kcart-table col:nth-child(9) { width: 6.5%; }
.kcart-table col:nth-child(10) { width: 6.5%; }
.kcart-table col:nth-child(11) { width: 6%; }
.kcart-table col:nth-child(12) { width: 6.5%; }
.kcart-table col:nth-child(13) { width: 8%; }
.kcart-table col:nth-child(14) { width: 5.5%; }

/* современный вид — та же таблица (13 колонок данных + кнопка «убрать») */
.cart-table { table-layout: fixed; min-width: 1100px; }
.cart-table th { white-space: normal; }
.cart-table td { overflow-wrap: anywhere; }
.cart-table td:last-child { padding-inline: 4px; }
.cart-table input { width: 100%; min-width: 0; }
.cart-table__note { font-size: 11px; line-height: 1.3; }
.cart-table tr.cart-table__group td { border-top: 2px solid var(--line-strong); }
/* «Комментарии» при 1280–1440 обрезался (6% ≈ 79px): колонка 8%, взято у «Продавца» и «Склада» */
.cart-table col:nth-child(1) { width: 3.5%; }
.cart-table col:nth-child(2) { width: 10%; }
.cart-table col:nth-child(3) { width: 8%; }
.cart-table col:nth-child(4) { width: 8%; }
.cart-table col:nth-child(5) { width: 10%; }
.cart-table col:nth-child(6) { width: 6.5%; }
.cart-table col:nth-child(7) { width: 7.5%; }
.cart-table col:nth-child(8) { width: 7%; }
.cart-table col:nth-child(9) { width: 7%; }
.cart-table col:nth-child(10) { width: 7%; }
.cart-table col:nth-child(11) { width: 6%; }
.cart-table col:nth-child(12) { width: 7.5%; }
.cart-table col:nth-child(13) { width: 8%; }
.cart-table col:nth-child(14) { width: 4%; }

/* окно «Принять КП»: условия возврата — отдельный прокручиваемый блок с рамкой, не наезжают на подпись под ним */
/* обзор Г2, п. 2: предупреждение в окне «Принять» по заявке с экспресс-доставкой — заказ уйдёт с доставкой по маршруту */
.kaccept-note { margin: 8px 0; padding: 8px 10px; border-radius: 8px; background: var(--returned, #F6DCCB); color: #7A3311; font-size: 12.5px; line-height: 1.45; text-wrap: pretty; }
.kaccept-terms { max-height: 140px; overflow-y: auto; overscroll-behavior: contain; margin: 8px 0; padding: 8px 10px; border: 1px solid #c4c4c4; border-radius: 8px; line-height: 1.45; }

.kbuyer-exchange-panel { border: 0; box-shadow: none; background: transparent; overflow: visible; }
.kbuyer-exchange-panel > .kpanel__head { display: none; }
/* П11 (29.09, слайд 29-12): левая колонка левее — у тела панели нет боковых полей, поле от края окна даёт #kwork (8 px на
   странице биржи, skins.css) */
.kbuyer-exchange.kpanel__body { max-height: none; overflow: visible; padding: 12px 0; }
/* №14 (13.09): биржа во всю ширину окна, без центрирующего max-width.
   П15 (29.09, слайд 29-16): правая панель шире и правее — левая колонка 300–340 px (26 % ширины биржи: в CRM с колонкой меню
   и в minimal с рельсой она уже, и правая часть не теряет ширину), всё остальное — правой панели */
.kexchange-grid { display: grid; grid-template-columns: clamp(300px, 26%, 340px) minmax(0, 1fr); gap: 16px; align-items: start; }
/* П14 (29.09): один радиус углов у панелей раздела — блок города, «Заявки в работе», «История заявок», правая панель,
   карточка заявки, диалог (В10: 12 px). Строки списков и ячейки таблиц — свои мелкие радиусы */
.kbuyer-exchange { --k-exr: 12px; }
/* колонка — контейнер: блок города раскладывается по её ширине, а не по ширине окна (CRM с колонкой меню, minimal с рельсой) */
.kexchange-sidebar { min-width: 0; display: flex; flex-direction: column; gap: 12px; container: exside / inline-size; }
/* П11 (слайд 29-12): блок города — тёмная плашка в одну строку: слева город — белая плашка-список (стрелка — icon('down')),
   справа «всего / он-лайн». Список берёт всё место, которое оставляют счётчики: в колонке от 330 px название города целиком,
   в более узкой (CRM с колонкой меню — 300 px, minimal на телефоне — 320 px) длинное название — с многоточием, полное — в списке
   и в подписи для чтения с экрана; счётчики уходят под город только в колонке уже 300 px (обзор круга 1Б: в колонке 300–340 px
   блок был в два ряда, а на телефоне — в один) */
.kexchange-region { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 10px 12px; border-radius: var(--k-exr); background: var(--k-dark); color: #fff; }
.kexchange-city { position: relative; display: block; min-width: 0; }
.kexchange-city select { appearance: none; width: 100%; min-width: 0; min-height: 40px; padding: 5px 26px 5px 10px; border: 0; border-radius: 8px; background: #fff; color: #222; font-size: 13px; text-overflow: ellipsis; cursor: pointer; }
.kexchange-city select:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.kexchange-city .ic { position: absolute; top: 50%; right: 8px; margin-top: -8px; color: #444; pointer-events: none; }
.kexchange-region dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 3px 8px; margin: 0; font-size: 11.5px; }
.kexchange-region dd { margin: 0; text-align: right; white-space: nowrap; }
@container exside (max-width: 299px) {
  .kexchange-region { grid-template-columns: minmax(0, 1fr); }
}
/* П11, П12: «Заявки в работе» и «История заявок» — панели, раскрывающиеся по тёмной полосе-заголовку во всю ширину
   (summary); свёрнутая секция — одна полоса. Маркер браузера скрыт, признак раскрытия — icon('down'), у открытой повёрнут */
.kexchange-fold { min-width: 0; border: 1px solid #bdbdbd; border-radius: var(--k-exr); background: #fff; }
.kexchange-fold:not([open]) { border-color: var(--k-dark); }
.kexchange-fold__head { position: relative; display: flex; align-items: center; justify-content: center; min-height: 44px; padding: 10px 44px; border-radius: calc(var(--k-exr) - 1px); background: var(--k-dark); color: #fff; font-size: 13px; line-height: 1.35; text-align: center; list-style: none; cursor: pointer; }
.kexchange-fold[open] > .kexchange-fold__head { border-radius: calc(var(--k-exr) - 1px) calc(var(--k-exr) - 1px) 0 0; }
.kexchange-fold__head::-webkit-details-marker { display: none; }
.kexchange-fold__head .ic { position: absolute; top: 50%; right: 14px; margin-top: -9px; transition: transform .2s var(--e); }
.kexchange-fold[open] > .kexchange-fold__head .ic { transform: rotate(180deg); }
.kexchange-fold__head:hover { background: #2b2b2b; }
.kexchange-fold__head:focus-visible { outline: 2px solid var(--k-dark); outline-offset: 2px; }
.kexchange-fold__body { min-width: 0; padding: 8px 6px 6px; }
.kexchange-requests { display: flex; flex-direction: column; min-height: 360px; }
.kexchange-find { grid-template-columns: 112px minmax(0, 1fr) 65px; gap: 6px; margin-bottom: 10px; }
.kexchange-find input, .kexchange-find select, .kexchange-hist input, .kexchange-hist select, .kexchange-offer-find input, .kexchange-offer-find select { min-width: 0; height: 26px; padding: 3px 5px; font-size: 11px; }
/* Б29 (06.10, шаг Г2.6): фильтры «Истории заявок» (classic.js exchangePanel, [data-hist-filters]) — период во всю ширину колонки,
   под ним даты «Своего периода» (.kperiod, скрыты, пока выбран готовый период), ниже «По заявкам / По позициям» и «Гос. номер»
   пополам. Плотность — как у поиска «Заявок в работе»; на телефоне поля 44 px через 8 px (ниже и partner-revisions.css, раздел 5) */
.kexchange-hist { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin-bottom: 10px; }
.kexchange-hist > :nth-child(-n + 2) { grid-column: 1 / -1; }
.kexchange-hist .kperiod__f { flex: 1 1 0; }
.kexchange-hist .kperiod .kperiod__f > input { width: 100%; }
.kexchange-hist .kperiod__f > span, .kexchange-hist .kperiod__err { font-size: 11px; }
.kexchange-find .kbtn, .kexchange-offer-find .kbtn, .kexchange-new .kbtn, .kexchange-form-buttons .kbtn { min-height: 25px; padding: 3px 9px; border: 1px solid #aaa; border-radius: 4px; background: #888; color: #fff; font-size: 11px; font-weight: 400; }
.kexchange-request-row, .kexchange-item-row { display: grid; align-items: stretch; gap: 3px; width: 100%; min-width: 0; padding: 3px; margin: 0 0 4px; border: 1px solid #d0d0d0; border-radius: 5px; text-align: left; background: #f4f4f4; color: #333; font-size: 10px; line-height: 1.35; cursor: pointer; }
/* первая колонка — порядковый номер заявки: 30 px и без переноса, иначе номер из двух-трёх цифр рвался по цифре (проверка 26.09, L25) */
/* последняя колонка — гос. номер: не уже 68 px, иначе в колонке 300–340 px (П15) номер рвался по букве («A247KB17 / 8») */
.kexchange-request-row { grid-template-columns: 30px minmax(0, 1fr) 32px 53px minmax(68px, .53fr); }
.kexchange-request-row > span:first-child { padding-inline: 2px; white-space: nowrap; overflow-wrap: normal; }
.kexchange-request-row > span, .kexchange-item-row > span { display: flex; align-items: center; justify-content: center; min-width: 0; padding: 3px 4px; border: 1px solid #bbb; border-radius: 4px; background: #fff; overflow-wrap: anywhere; }
.kexchange-request-row > span:nth-child(2) { justify-content: flex-start; }
.kexchange-request-row > .kexchange-count { gap: 2px; padding: 3px 1px; white-space: nowrap; }
.kexchange-request-row .kexchange-count svg { flex-shrink: 0; }
.kexchange-request-row em { color: #b82b2b; font-style: normal; }
/* заявка «Все варианты»: пометка ярлычком в углу ячейки номера — не занимает ширину строки и не переносит дату */
.kexchange-request-row > span:nth-child(2) { position: relative; }
.kexchange-request-row .kexchange-all { position: absolute; top: -1px; right: -1px; padding: 0 3px; border: 1px solid #bbb; border-radius: 0 4px 0 4px; background: #eee; font-size: 8px; font-weight: 400; line-height: 1.25; color: #555; white-space: nowrap; pointer-events: none; }
@media (max-width: 1099px) {
  .kexchange-request-row > span:nth-child(2):has(> .kexchange-all) { flex-direction: column; align-items: flex-start; justify-content: center; }
  .kexchange-request-row .kexchange-all { position: static; margin-top: 2px; border-radius: 3px; }
}
/* заявка «из программы» (M.13 п.5): чип — отдельной строкой под номером и мелким шрифтом, как ярлык «все». В одной строке
   с номером чип (nowrap, ~120 px) забирал ширину ячейки, и номер с датой переносились по букве — строка росла до 70–286 px */
.kexchange-request-row > span:nth-child(2):has(> .chip--api) { flex-direction: column; align-items: flex-start; justify-content: center; gap: 2px; }
.kexchange-request-row .chip--api { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; padding: 0 5px; font-size: 8px; letter-spacing: 0.04em; line-height: 1.4; }
/* Б29: статус закрытой заявки — пометкой под номером (гос. номер занял последнюю колонку, как у «Заявок в работе») */
.kexchange-request-row > span:nth-child(2):has(> .kexchange-st) { flex-direction: column; align-items: flex-start; justify-content: center; gap: 1px; }
.kexchange-request-row .kexchange-st { font-size: 9px; line-height: 1.3; color: #666; }
.kexchange-request-row.is-on, .kexchange-item-row.is-on, .kexchange-request-row:hover, .kexchange-item-row:hover { background: #fffdb1; border-color: #d9ce78; }
.kexchange-request-row.is-on > span, .kexchange-item-row.is-on > span { background: #fffec3; }
.kexchange-item-row { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) 24px; gap: 3px; padding: 0; border: 0; background: transparent; }
.kexchange-item-row > span:first-child { justify-content: flex-start; }
.kexchange-list-head { cursor: default; }
.kexchange-list-head > span { justify-content: center !important; background: #bfbfbf; border-color: #bfbfbf; }
.kexchange-list-head > span:last-child { white-space: nowrap; padding: 3px 1px; }
.kexchange-new { margin-top: auto; padding-top: 18px; text-align: right; }
.kexchange-new .kbtn { width: 58%; }
.kexchange-wholesale { align-self: flex-start; padding: 4px 0; border: 0; background: none; color: #666; font-size: 11px; cursor: pointer; text-align: left; }
.kexchange-main { min-width: 0; padding: 10px; border: 1px solid #bdbdbd; border-radius: var(--k-exr); background: #fff; }
.kexchange-offer-find { grid-template-columns: 145px minmax(0, 1fr) minmax(110px, 32%) 76px; gap: 7px; margin-bottom: 24px; }
/* П13 (29.09, слайд 29-14): карточка заявки уже — 200–260 px (30 % правой панели), таблице КП и диалогу — остальное */
.kexchange-content { display: grid; grid-template-columns: clamp(200px, 30%, 260px) minmax(0, 1fr); gap: 10px; min-height: 464px; }
.kexchange-content--items { grid-template-columns: minmax(0, 1fr); }
.kexchange-detail { min-width: 0; padding: 8px; border: 1px solid #bcbcbc; border-radius: var(--k-exr); background: #f2f2f2; font-size: 11px; line-height: 1.4; overflow-wrap: anywhere; }
.kexchange-detail p { margin: 15px 0; }
.kexchange-detail ol { padding-left: 16px; margin: 15px 0; }
.kexchange-detail-actions { display: flex; justify-content: flex-end; align-items: center; gap: 4px; min-height: 24px; }
.kexchange-detail-actions .kbtn { display: inline-flex; align-items: center; justify-content: center; min-height: 24px; padding: 3px 5px; border: 1px solid #bcbcbc; border-radius: 4px; background: #fff; color: #444; font-size: 10px; font-weight: 400; }
.kexchange-detail-extra { margin-top: 24px; color: #666; font-size: 10px; }
/* П8, П13 (29.09, слайды 29-09, 29-14): «Дополнительные параметры» формы заявки и «Параметры заявки» карточки раскрыты по
   умолчанию (classic.js, store.view.reqOptsClosed / reqParamsClosed). Заголовок — вся строка; признак раскрытия — icon('down')
   перед подписью: у раскрытого блока смотрит вниз, у свёрнутого — вправо. Маркер браузера скрыт */
:is(.kexchange-options, .kexchange-detail-extra) > summary { display: flex; align-items: center; gap: 6px; min-height: 28px; list-style: none; cursor: pointer; }
:is(.kexchange-options, .kexchange-detail-extra) > summary::-webkit-details-marker { display: none; }
:is(.kexchange-options, .kexchange-detail-extra) > summary .ic { flex-shrink: 0; transform: rotate(-90deg); transition: transform .2s var(--e); }
:is(.kexchange-options, .kexchange-detail-extra)[open] > summary .ic { transform: none; }
:is(.kexchange-options, .kexchange-detail-extra) > summary:hover { color: #222; }
.kexchange-offers { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.kexchange-offers > #kReqChat { margin-top: auto; }
.kexchange-offer-table { border-collapse: separate; border-spacing: 3px; table-layout: auto; font-size: 10px; }
.kexchange-offer-table th, .kexchange-offer-table td { padding: 3px 4px; border: 1px solid #bbb; border-radius: 4px; font-size: inherit; line-height: 1.4; }
.kbuyer-exchange .kexchange-offer-table th { position: static; background: #bfbfbf; color: #333; white-space: normal; }
.kexchange-offer-table td { background: #fff; }
.kexchange-offer-table th button { padding: 0; border: 0; background: transparent; color: inherit; font: inherit; white-space: nowrap; cursor: pointer; }
.kexchange-offer-table .kmoney { font-size: inherit; }
.kexchange-offer-link { width: 100%; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; text-align: left; }
.kexchange-offer-link:hover { text-decoration: underline; }
.kexchange-cart { display: inline-flex; align-items: center; justify-content: center; width: 100%; min-width: 28px; height: 22px; padding: 0; border: 0; background: transparent; color: #253638; cursor: pointer; }
.kexchange-cart:hover { color: #007aaa; }
.kexchange-count { position: relative; min-width: 18px; border: 0; background: transparent; color: #666; font: inherit; cursor: pointer; }
.kexchange-count.is-new { color: #c42a25; font-weight: 700; }
.kexchange-offer-table .kexchange-offer-detail > td { padding: 8px; background: #f5f5f5; }
.kexchange-expanded { min-width: 0; }
.kexchange-expanded .ktable { min-width: 540px; }
.kexchange-expanded-actions { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; padding-top: 8px; }
.kexchange-item-offers th:first-child { width: 27%; }
.kexchange-item-offers td:first-child { min-width: 125px; }
.kexchange-item-offers td:nth-child(9) { min-width: 108px; }
.kexchange-empty { min-height: 464px; display: flex; flex-direction: column; justify-content: space-between; }
.kbuyer-exchange .kchat { margin: 0; border-color: #bcbcbc; border-radius: var(--k-exr); overflow: hidden; background: #f2f2f2; }
.kbuyer-exchange .kchat__label { display: flex; justify-content: flex-end; align-items: center; flex-wrap: wrap; gap: 4px; min-height: 26px; padding: 4px 10px; border: 0; background: transparent; color: #777; text-align: right; font-size: 11px; }
.kbuyer-exchange .kchat__label .kbtn { padding: 2px 4px; font-size: 10px; }
.kbuyer-exchange .kchat__log { min-height: 55px; max-height: 150px; font-size: 11px; }
.kbuyer-exchange .kchat__send { border: 0; }
.kbuyer-exchange .kchat__send textarea { min-height: 38px; font-size: 12px; }
.kbuyer-exchange .kchat__send .kbtn { min-height: 24px; padding: 3px 6px; font-size: 11px; }
.kbuyer-exchange .kchat__rule { font-size: 10px; line-height: 1.3; }
.kexchange-chat-empty { min-height: 145px; }
.kexchange-chat-empty .kempty { padding: 20px; font-size: 11px; }

#kInlineRequest { flex: 1; display: flex; }
.kexchange-request-form { display: flex; flex: 1; min-width: 0; flex-direction: column; gap: 4px; }
.kexchange-request-form .kfield { grid-template-columns: 40% minmax(0, 1fr); gap: 6px; }
.kexchange-request-form .kfield > span { display: flex; align-items: center; justify-content: center; min-height: 24px; padding: 3px; border-radius: 4px; background: #bfbfbf; color: #333; font-size: 11px; text-align: center; }
.kexchange-request-form .kfield input, .kexchange-request-form .kfield select { height: 25px; min-height: 25px; padding: 2px 5px; border: 1px solid #bbb; font-size: 11px; }
/* Б2 (06.10): «Машина из автопарка» — первая строка формы. Автопарк пуст — вместо списка строка «В автопарке нет машин» и
   кнопка «Добавить машину в автопарк» (classic.js [data-rq-nofleet]); кнопка — как «Закрыть» формы, на телефоне 44 px */
.kexchange-nofleet { align-items: stretch; }
.kexchange-nofleet__body { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-width: 0; color: #555; font-size: 11px; line-height: 1.3; }
.kexchange-nofleet .kbtn { min-height: 25px; padding: 3px 9px; border: 1px solid #aaa; border-radius: 4px; background: #fff; color: #444; font-size: 11px; font-weight: 400; white-space: normal; text-align: center; }
.kexchange-request-items { margin-top: 10px; border: 1px solid #bcbcbc; border-radius: 4px; padding: 4px; background: #f2f2f2; }
.kexchange-request-item { display: grid; grid-template-columns: 17px minmax(0, 1.7fr) minmax(37px, .55fr) minmax(0, 1fr) 17px; gap: 3px; align-items: stretch; margin-bottom: 4px; }
.kexchange-request-item > span { font-size: 10px; text-align: center; padding: 3px 0; }
.kexchange-request-item input { min-width: 0; width: 100%; height: 25px; padding: 2px 3px; border: 1px solid #bbb; border-radius: 3px; background: #fff; font-size: 11px; }
.kexchange-request-item input[type=number] { padding-right: 0; }
.kexchange-delete-line { padding: 0; border: 0; background: transparent; color: #555; cursor: pointer; }
.kexchange-add-line { width: 100%; padding: 3px; border: 0; background: transparent; color: #222; text-align: left; font-size: 11px; cursor: pointer; }
.kexchange-options { margin: 8px 0; font-size: 11px; color: #666; }
.kexchange-options > summary { margin-bottom: 8px; }
.kexchange-request-submit { margin-top: auto; padding-top: 20px; }
.kexchange-form-buttons { display: grid; grid-template-columns: 40% minmax(0, 1fr); gap: 6px; margin-top: 5px; }
.kexchange-form-buttons #kRqCancel { background: #fff; color: #666; }
/* Б4, Б5 (06.10; раньше П6, 29.09): блок получения формы заявки под «Дополнительными параметрами» (classic.js [data-rq-receive],
   ui.js bindRequestReceive). «Способ получения» — список, под экспрессом подсказка. «Адрес доставки» — строка с основным
   адресом и кнопкой «Изменить адрес» (#kRqMainRow); по кнопке — блок своего адреса (#kRqOtherWrap): поле с подсказками адресов
   компании, подсказка, галочка «Сохранить в адресах компании» и «Вернуть основной адрес». Самовывоз — строка «Пункт самовывоза»
   (#kRqPointRow). Лишнее скрыто атрибутом hidden. Подсказки, галочка и «Вернуть основной адрес» — под полем, в колонке полей;
   кнопки — как «Закрыть» формы; на телефоне строки и кнопки не ниже 44 px (ниже, @media 600px) */
.kexchange-receive { display: grid; gap: 4px; }
.kexchange-receive .ex-hint { margin-left: calc(40% + 6px); }
/* обзор Г2, п. 1: строка «Заявка будет открыта до …» под блоком получения — в колонке полей, как подсказки блока */
.kexchange-until { margin: 6px 0 0 calc(40% + 6px); }
.kexchange-addr { align-items: stretch; }
.kexchange-addr__body { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-width: 0; color: #333; font-size: 11px; line-height: 1.3; }
.kexchange-addr__text { flex: 1 1 110px; min-width: 0; overflow-wrap: anywhere; }
.kexchange-addr .kbtn, .kexchange-addr-back { min-height: 25px; padding: 3px 9px; border: 1px solid #aaa; border-radius: 4px; background: #fff; color: #444; font-size: 11px; font-weight: 400; white-space: normal; text-align: center; }
.kexchange-other-addr { display: grid; gap: 6px; }
.kexchange-addr-save { display: flex; align-items: center; gap: 8px; min-height: 25px; margin-left: calc(40% + 6px); color: #444; font-size: 11px; line-height: 1.3; cursor: pointer; }
.kexchange-addr-save input { flex: 0 0 auto; width: 16px; height: 16px; margin: 0; }
.kexchange-addr-back { justify-self: start; margin-left: calc(40% + 6px); }
:is(.kexchange-addr, .kexchange-other-addr)[hidden] { display: none; }

@media (max-width: 1250px) {
  /* П13, П15: на узком компьютере колонка 280–320 px, карточка заявки 180–220 px */
  .kexchange-grid { grid-template-columns: clamp(280px, 28%, 320px) minmax(0, 1fr); gap: 14px; }
  .kexchange-content { grid-template-columns: clamp(180px, 30%, 220px) minmax(0, 1fr); }
  .kexchange-content--items { grid-template-columns: minmax(0, 1fr); }
  .kexchange-offer-table { min-width: 470px; }
  .kexchange-item-offers { min-width: 670px; }
  .kexchange-offer-find { grid-template-columns: 120px minmax(0, 1fr) minmax(80px, 30%) 60px; }
}
@media (max-width: 900px) {
  /* одна колонка во всю ширину рабочей области (П15: правая панель шире; прежний предел 720 px оставлял справа пустую полосу) */
  .kexchange-grid { grid-template-columns: minmax(0, 1fr); }
  .kexchange-requests { min-height: 240px; }
  .kexchange-content { min-height: 400px; }
  .kbuyer-cart .kcart-checkout { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .kcart-return-terms { font-size: 12px; }
}
@media (max-width: 560px) {
  /* оформление корзины в одну колонку: подпись над полем, всё видно и нажимается */
  .kcart-checkout__form .kfield { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .kcart-checkout__form select { width: 100%; min-width: 0; min-height: 44px; }
  .kcart-checkout__form .ktotals .kgrey { white-space: normal; }
  .kcart-checkout__form #kCheckout { width: 100%; min-height: 44px; margin-left: 0; }
  .kbuyer-cart .kline { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; }
  .kbuyer-cart .kline .kbtn { min-height: 44px; }
  .kbuyer-cart .kline .kmini { grid-column: 1 / -1; }
  .kexchange-content { grid-template-columns: minmax(0, 1fr); }
  .kexchange-detail { padding: 10px; }
  .kexchange-detail-extra { margin-top: 10px; }
  .kexchange-offer-find { grid-template-columns: 115px minmax(0, 1fr) 58px; }
  .kexchange-offer-find > span { display: none; }
  .kexchange-offer-find input { width: 100%; }
  .kexchange-main { padding: 7px; }
  .kexchange-offer-table { min-width: 470px; }
  .kexchange-find { grid-template-columns: 102px minmax(0, 1fr) 58px; }
}
/* Телефон: зоны нажатия ≥44px в форме заявки и в корзине. На десктопе плотность прежняя. */
@media (max-width: 600px) {
  /* классика: форма заявки на биржу */
  .kexchange-request-form .kfield > span { min-height: 44px; }
  .kexchange-request-form .kfield input, .kexchange-request-form .kfield select { height: 44px; min-height: 44px; font-size: 14px; }
  /* Б2: автопарк пуст — текст и кнопка столбиком во всю ширину поля, кнопка 44 px */
  .kexchange-nofleet__body { gap: 8px; font-size: 14px; }
  .kexchange-nofleet .kbtn { width: 100%; min-height: 44px; font-size: 14px; }
  .kexchange-request-item { grid-template-columns: 17px minmax(0, 1.7fr) minmax(48px, .55fr) minmax(0, 1fr) 44px; }
  .kexchange-request-item input { height: 44px; font-size: 14px; }
  .kexchange-delete-line { min-width: 44px; min-height: 44px; font-size: 18px; }
  .kexchange-add-line { min-height: 44px; font-size: 13px; }
  .kexchange-options summary { display: flex; align-items: center; min-height: 44px; }
  /* П8 (29.09): «Дополнительные параметры» раскрыты по умолчанию — поля, строки позиций и кнопки формы через 8 px (были 3–6 px) */
  .kexchange-request-form { gap: 8px; }
  .kexchange-request-item { gap: 8px; margin-bottom: 8px; }
  .kexchange-form-buttons { gap: 8px; margin-top: 8px; }
  /* Б4, Б5: блок получения на телефоне — в одну колонку, подпись над полем (как оформление корзины): пункт «Экспресс-доставка
     (+1 000 ₽)» и адрес не обрезаются в узкой колонке полей. Строки через 8 px; подсказки, галочка и кнопки — во всю ширину
     формы, кнопки и галочка 44 px */
  .kexchange-receive, .kexchange-other-addr { gap: 8px; }
  .kexchange-receive .kfield { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .kexchange-receive .kfield > span { min-height: 28px; }
  .kexchange-receive .ex-hint, .kexchange-addr-save, .kexchange-addr-back { margin-left: 0; }
  .kexchange-until { margin: 8px 0 0; font-size: 13px; }
  .kexchange-addr__body { gap: 8px; font-size: 14px; }
  .kexchange-addr .kbtn, .kexchange-addr-back { width: 100%; min-height: 44px; font-size: 14px; }
  .kexchange-addr-save { min-height: 44px; font-size: 14px; }
  /* Б29: фильтры «Истории заявок» — поля 44 px (общие правила телефона), шрифт крупнее; строки позиций режима «По позициям»
     (в истории и в «Заявках в работе») — 44 px через 8 px, как строки заявок */
  .kexchange-hist select, .kexchange-hist .kperiod .kperiod__f > input, .kexchange-hist .kperiod__f > span { font-size: 13px; }
  .kexchange-hist .kperiod__err { font-size: 12px; }
  .kexchange-item-row:not(.kexchange-list-head) { min-height: 44px; margin-bottom: 8px; }
  /* классика: корзина. Чекбокс в label-зоне 44px, рядом кнопка «х» 44px — последней колонке нужно место */
  .kcart-table { min-width: 1240px; }
  .kcart-table col:nth-child(5) { width: 9%; }
  .kcart-table col:nth-child(14) { width: 8.5%; }
  .kcart-table input:not([type="checkbox"]) { min-height: 44px; }
  .kcart-sel { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; vertical-align: middle; cursor: pointer; }
  .kcart-sel input { width: 20px; height: 20px; margin: 0; }
  .kcart-table [data-crm] { min-width: 44px; }
  /* современный вид: корзина и оформление */
  .cart-table { min-width: 1150px; }
  .cart-table col:nth-child(5) { width: 9%; }
  .cart-table col:nth-child(14) { width: 5%; }
  .cart-table input, .split--cart .form input, .split--cart .form select, #ckGo, #cartClear { min-height: 44px; }
  .cart-table .iconbtn { width: 44px; height: 44px; }
}

/* П16 (29.09, слайд 29-17): состав КП у покупателя — без «Артикула», с колонками «Состояние, комментарии» (до правок 06.10 —
   «Состояние, гарантия, комментарии»: гарантия стала своей колонкой, Б15.5, classic.css .kwarr) и «Фото»
   (classic.js offerRow; порядок колонок — KP_LINE_HEADS в ui.js). «Фото» — ссылка-иконка 44 × 44
   во всех видах и на любом экране; текст состояния и заголовок колонки переносятся по словам, колонка 120–280 px. Таблица
   шире прежней (две колонки вместо одной) и на узком экране прокручивается в своей обёртке, а не всей страницей */
.kp-photo { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 8px; color: inherit; }
.kp-photo:hover { background: rgba(0, 0, 0, .07); }
.kp-cond { min-width: 120px; max-width: 280px; white-space: normal; overflow-wrap: anywhere; }
.kexchange-expanded .kexchange-kp-lines { min-width: 600px; }
/* ячейки classic-семейства — с отступом 3 px и промежутком 3 px: фото соседних строк шли через 7 px; с 4 px — через 9 px */
.kexchange-offer-table td:has(> .kp-photo) { padding-block: 4px; }
/* modern: ячейки состава КП уже по бокам (5 px вместо 10 px) — с двумя новыми колонками таблица не шире прежней с «Артикулом»;
   цели соседних колонок — через 10 px */
.kp-lines :is(th, td) { padding-inline: 5px; }

/* Б8, Б29 (06.10, шаги Г2.5 и Г2.6): выбор периода (ui.js periodFieldsHtml) — список и блок дат «Своего периода»: поля «с» и
   «по» с подписью слева, под ними подсказка, если «по» раньше «с» (поле «по» — с красной обводкой .ex-invalid). Блок есть в
   разметке всегда и скрыт атрибутом hidden, пока выбран готовый период. В «Заказах» блок стоит в строке фильтров (classic.css
   .kline--ord), в «Истории заявок» — во всю ширину колонки. На телефоне поля делят строку пополам и не ниже 44 px */
.kperiod { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-width: 0; }
.kperiod[hidden] { display: none; }
.kperiod__f { display: flex; align-items: center; gap: 4px; min-width: 0; }
.kperiod__f > span { flex: 0 0 auto; color: #555; font-size: 12px; }
.kperiod .kperiod__f > input { flex: 1 1 auto; width: 132px; min-width: 0; }
.kperiod__err { flex: 1 0 100%; margin: 0; color: #8A1C1C; font-size: 12px; line-height: 1.4; }
.kperiod__err[hidden] { display: none; }
@media (max-width: 600px) {
  .kperiod { gap: 8px; }
  .kperiod__f { flex: 1 1 0; gap: 6px; }
  .kperiod__f > span { font-size: 14px; }
  .kperiod .kperiod__f > input { width: 100%; min-height: 44px; font-size: 14px; }
  .kperiod__err { font-size: 13px; }
}

/* «Кабинет» покупателя, «Профиль» — блок «Документы» (правки 06.10, Б11; шаг Г3б.1; classic.js companyPanel): колонки счёта по
   желанию клиента. Флажок с подписью — одна цель: на телефоне строка не ниже 44 px, между строками и до кнопки — 8 px */
.kdocprefs { display: grid; gap: 8px; max-width: 720px; margin: 8px 0 12px; }
.kdocprefs__lead { margin: 0; }
.kdocprefs__opt { display: flex; align-items: center; gap: 8px; min-height: 28px; font-size: 12.5px; line-height: 1.35; cursor: pointer; }
.kdocprefs__opt input { flex: 0 0 auto; width: 18px; height: 18px; margin: 0; }
.kdocprefs__opt input:disabled + span { color: #777; }
.kdocprefs__opt:has(input:disabled) { cursor: default; }
@media (max-width: 600px) {
  .kdocprefs__opt { min-height: 44px; font-size: 14px; }
}
/* «Документы на e-mail» в том же блоке (правки 06.10, Б14; шаг Г3в.3): строка «куда приходят письма», поле адреса с кнопкой
   «Отправить код на адрес», поле кода с кнопкой «Подтвердить адрес», флажок автоотправки, формат вложения с кнопкой
   «Сохранить настройки писем». Поле с подписью над ним и кнопка — в одну строку по нижнему краю, на телефоне — друг под
   другом на всю ширину, высотой не меньше 44 px, через 8 px */
.kdocmail { margin-top: 4px; padding-top: 12px; border-top: 1px solid #d6d6d6; }
.kdocmail__to { margin: 0; font-size: 12.5px; line-height: 1.4; overflow-wrap: anywhere; }
.kdocmail__row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px; }
.kdocmail__f { display: grid; gap: 4px; flex: 1 1 240px; min-width: 0; max-width: 360px; font-size: 12.5px; }
.kdocmail__f > input, .kdocmail__f > select { width: 100%; min-height: 28px; border: 1px solid #9a9a9a; border-radius: 4px; padding: 3px 6px; background: #fff; font: inherit; }
.kdocmail__f > input:disabled, .kdocmail__f > select:disabled { background: #f1f1f1; color: #777; }
.kdocmail__row > .kbtn { flex: 0 0 auto; }
@media (max-width: 600px) {
  .kdocmail__to { font-size: 14px; }
  .kdocmail__f { flex: 1 1 100%; max-width: none; font-size: 14px; }
  .kdocmail__f > input, .kdocmail__f > select { min-height: 44px; font-size: 16px; }
  .kdocmail__row > .kbtn { flex: 1 1 100%; min-height: 44px; }
}
