/* К-247 — правки по приёмке «глазами партнёра» (17.09.2026, поток UI). Подключается в app.html последним.
   Общие для modern и classic-семейства (classic, folder, minimal, crm); без инлайновых style, без цветных полос слева. */

/* 1. Заказы, ждущие подтверждения, карточками на узком экране (public/app/order-decisions.js awaitingCards;
   views/seller.js, views/manager.js, classic-crm.js sellerOrders). Кнопки — res-btn / kres-btn (44 px), промежутки 8 px. */
.od-cards { display: grid; gap: 8px; margin: 0 0 12px; min-width: 0; }
.od-cards__h { margin: 0; font-size: 14px; font-weight: 500; line-height: 1.3; }
.od-card {
  display: grid; gap: 8px; min-width: 0; padding: 12px;
  background: var(--surface, #FFFFFF); border-radius: 12px; box-shadow: inset 0 0 0 1px var(--line-strong, rgba(35, 34, 31, 0.28));
}
.od-cards--classic .od-card { background: #FFFFFF; border: 1px solid var(--k-line, #8A8782); border-radius: 4px; box-shadow: none; }
.od-card p { margin: 0; }
.od-card__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 12px; }
.od-card__no { font-size: 15px; font-weight: 700; }
.od-card__sum { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.od-card__who, .od-card__terms { overflow-wrap: anywhere; text-wrap: pretty; }
.od-card .od-acts > * { flex: 1 1 100%; }
.od-card__lines { display: grid; gap: 8px; min-width: 0; }
.od-line { display: grid; gap: 6px; min-width: 0; padding-top: 10px; border-top: 1px solid var(--line, rgba(35, 34, 31, 0.14)); }
.od-cards--classic .od-line { border-top-color: var(--k-line-soft, #DCDAD5); }
.od-line__t { font-weight: 500; overflow-wrap: anywhere; }
.od-line__st .od-note { min-width: 0; max-width: none; }
.od-line__q { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.od-line--dead { opacity: .62; }
/* после поворота телефона до перерисовки карточки не дублируют широкую таблицу */
@media (min-width: 761px) { .od-cards { display: none; } }

/* 2. Оплата при оформлении (public/app/pay-default.js; views/buyer.js корзина, classic.js корзина и «Принять КП»):
   подсказка о нехватке баланса под полем «Оплата заказа», видна до нажатия «Оформить заказ». */
.cart-pay-hint, .kcart-pay-hint { margin: 0; line-height: 1.45; color: #8A1C1C; text-wrap: pretty; }
.cart-pay-hint[hidden], .kcart-pay-hint[hidden] { display: none; }
.cart-split-note { font-size: 12px; }

/* 3. Тач-цели не меньше 44 × 44 на телефоне и на сенсорном экране (приёмка партнёра: на 400 px было больше тысячи мелких
   целей — iconbtn 34 px, btn--sm 32 px, чипы документов 23 px, select 26–40 px, kbtn 38 px, «х» 32 px, строки КП 30 px,
   пункты рельсы minimal 38 и 30 px). Высоту и ширину добирает паддинг, шрифт прежний; на десктопе с мышью плотность
   прежняя. :is(#app, body) поднимает специфичность над частными правилами витрины, биржи и видов. */
@media (max-width: 600px), (pointer: coarse) {
  /* современный вид */
  :is(#app, body) .iconbtn { width: 44px; height: 44px; flex: 0 0 auto; }
  :is(#app, body) .btn { min-height: 44px; }
  :is(#app, body) :is(a.chip, button.chip) { min-height: 44px; padding-inline: 12px; }
  :is(#app, body) :is(select, input[type="file"]) { min-height: 44px; }
  /* классическое семейство: classic, folder, minimal, crm */
  :is(#app, body) .kbtn { min-height: 44px; min-width: 44px; }
  :is(#app, body) a.kbtn { display: inline-flex; align-items: center; justify-content: center; }
  :is(#app, body) .kcartbtn { min-width: 44px; min-height: 44px; }
  :is(#app, body) :is(.krow, .kexchange-request-row, .kexchange-wholesale, .kexchange-offer-link, .kexchange-count) { min-height: 44px; }
  /* сортировка в шапке таблицы, раскрывающиеся блоки, радиокнопки и галочки с подписью */
  :is(#app, body) th button { min-height: 44px; min-width: 44px; }
  :is(#app, body) summary { min-height: 44px; padding-block: 12px; box-sizing: border-box; }
  :is(#app, body) label:has(> input:is([type="radio"], [type="checkbox"])) { min-height: 44px; }
  /* раскладка — с нулевой специфичностью: у подписей со своим display (галочка строки корзины .kcart-sel) он сохраняется */
  :where(#app label:has(> input:is([type="radio"], [type="checkbox"]))) { display: flex; align-items: center; gap: 8px; }
  /* строка корзины classic: галочка и «Убрать из корзины» рядом — промежуток 8 px вместо пробела */
  :is(#app, body) .kcart-sel + [data-crm] { margin-left: 5px; }
  /* minimal: пункты рельсы через 8 px; длинная навигация прокручивается и не уходит под плашку баланса */
  .krail__in { gap: 8px; max-height: calc(100vh - 140px); overflow-y: auto; overscroll-behavior: contain; }
  .krail__i, .krail__i--svc { min-height: 44px; }
}

/* 4. Иконки вместо глифов «х», «×», «…», «□», «_», «↑», «+» в классическом семействе (classic.js, classic-crm.js, uat.js):
   кнопка-иконка квадратная, svg по центру; иконка перед подписью кнопки — через 6 px. */
.kicon-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 30px; padding-inline: 6px; vertical-align: middle; }
.kicon-btn .ic, .kpanel__win button .ic, .kexchange-delete-line .ic { vertical-align: middle; }
.kpanel__win button { display: inline-flex; align-items: center; justify-content: center; }
.kexchange-delete-line { display: inline-flex; align-items: center; justify-content: center; }
.kbtn > .ic:first-child:not(:only-child) { margin-right: 2px; }
th[aria-sort] button .ic { vertical-align: -2px; }

/* 5. Окна биржи и «Подключение программы» на телефоне (перепроверка итогового отчёта 23.09.2026, правило 8): между целями
   не меньше 8 px, поля не ниже 44 px. Проба на 400 px во всех 5 видах нашла промежутки 4–7 px в ленте, обработке заявки и
   «КП в работе» продавца (строка КП, фильтры, кнопки карточки, чат), в списке заявок и КП покупателя (поиск, кнопки заявки и
   КП, продавцы чата), поля поиска 26 px, «корзина» в строках КП 22 px; в modern — поля КП, вылезавшие на соседнее поле
   (ширина по умолчанию 175 px в колонке 160 px), поля 40 px, строки списков через 6 px, кнопки КП в таблице вплотную.
   Кнопки окна в шапке панели — classic.css (.kpanel__win). */
.kchat__btns { display: grid; align-content: start; gap: 8px; }
@media (max-width: 600px) {
  /* классическое семейство: classic, folder, minimal, crm */
  :is(#app, body) .kline { gap: 8px; margin-bottom: 8px; }
  :is(#app, body) :is(.kfilters, .kcard__acts, .kexchange-detail-actions, .kexchange-find, .kexchange-offer-find, .kexchange-expanded-actions) { gap: 8px; }
  /* корзина в строке КП и в строке позиции КП (таблицы с прокруткой): было 66 × 22 и 46 × 22 */
  :is(#app, body) .kexchange-cart { min-width: 44px; min-height: 44px; height: auto; }
  /* строки позиций раскрытого КП: вложенная таблица берёт у .kexchange-offer-table отступ ячеек 3 px — корзины соседних строк шли через 7 px */
  :is(#app, body) td:has(> .kexchange-cart) { padding-block: 4px; }
  :is(#app, body) :is(.krow, .kexchange-request-row) { margin-bottom: 8px; }
  :is(#app, body) .kchat__send { gap: 8px; }
  :is(#app, body) .kchat__label { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
  :is(#app, body) :is(.kexchange-find, .kexchange-offer-find) input { height: auto; min-height: 44px; }
  :is(#app, body) .kexchange-count { min-width: 44px; }
  /* П11 (29.09): счётчик сообщений в строке заявки — 44 px, колонка под него тоже (была 32 px: счётчик наезжал на «КП (N)»);
     гос. номер — не уже 68 px, как на компьютере (buyer-revisions.css): уже он рвался по букве */
  :is(#app, body) .kexchange-request-row { grid-template-columns: 30px minmax(0, 1fr) 44px 53px minmax(68px, .53fr); }
  /* современный вид: окно раздела */
  :is(#app, body) #window input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="range"]):not([type="color"]) { min-height: 44px; }
  :is(#app, body) :is(.offerline, .filters, .rows, .chat__tabs) { gap: 8px; }
  :is(#app, body) .offerline > * { min-width: 0; }
  :is(#app, body) .offerline :is(input, select) { width: 100%; min-width: 0; }
  :is(#app, body) .grid2 + .rows { margin-top: 8px; }
  /* кнопки-иконки подряд в ячейке таблицы («Всё КП в корзину» и «Отклонить» стояли вплотную) */
  :is(#app, body) td > .iconbtn + .iconbtn { margin-left: 8px; }
  :is(#app, body) td:has(> .iconbtn + .iconbtn) { white-space: nowrap; }
}

/* 6. Проверка 26.09.2026, интерфейс (правило 8, L21): витрина и кабинет классического семейства на телефоне.
   Здесь, а не в classic.css: базовые правила витрины и вкладок кабинета — в skins.css, он подключается позже classic.css. */
@media (max-width: 600px) {
  /* «сбросить» фильтры витрины: было 51 × 16 px */
  :is(#app, body) .kshopf__reset { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 8px; }
  :is(#app, body) .kshopf__reset[hidden] { display: none; }
  /* галочки брендов и городов витрины, вкладки кабинета — через 8 px (были 4 px и вплотную) */
  :is(#app, body) :is(.kshopf__brands, .kacct-tabs) { gap: 8px; }
  :is(#app, body) [data-shop-cities] { display: grid; gap: 8px; }
  /* кнопки подряд в ячейке таблицы («в КП» и «в корзину клиента» стояли через пробел, 3 px), поля реквизитов — через 8 px (были 6 px),
     строки позиций новой заявки modern — через 8 px */
  :is(#app, body) td > .kbtn + .kbtn { margin-left: 8px; }
  /* кнопки в соседних строках таблиц УАТ («в архив», «править», раскрытие показателей) шли через 5 px: ячейка с отступом 2 px */
  :is(#app, body) td:has(> .kbtn) { padding-block: 4px; }
  :is(#app, body) .kform { gap: 8px; }
  /* П11 (29.09): блок города, полосы «Заявки в работе» и «История заявок» (44 px) и «Прямая заявка в оптовый отдел» — через 8 px */
  :is(#app, body) .kexchange-sidebar { gap: 8px; }
  :is(#app, body) .linerow { gap: 8px; margin-bottom: 8px; }
}
