/*
 * RU: Дополнительные стили раздела БИ4 «Карточка» и «Как видят клиенты» нового кабинета /biz/app/. Общие компоненты (card, btn, tbl, tabs, pill…) уже в
 *     /css/biztools.css; здесь — только то, чего там нет. Правила — внутри body.bt-page и на токенах сайта (--k-*), без
 *     литералов цвета (храповик check:theme). Файл свой у каждой фазы, чтобы параллельные потоки не правили один файл.
 * EN: Extra styles of the BI4 "Card" and "Preview" section of the new /biz/app/ cabinet. Shared components (card, btn, tbl, tabs, pill…) are
 *     already in /css/biztools.css; only what is missing goes here. Rules sit inside body.bt-page and use site tokens
 *     (--k-*), no colour literals (the check:theme ratchet). Each phase has its own file so parallel tracks never edit one.
 */

/* RU: Поле, куда привела ссылка «?field=…» из обзора: рамка фокуса держится, пока владелец не перейдёт дальше, — иначе
       после прокрутки трудно понять, что именно просили заполнить.
   EN: The field a "?field=…" link from the overview led to: the focus ring stays until the owner moves on — otherwise after
       scrolling it is hard to see what exactly was asked. */
body.bt-page .is-focus { outline: 3px solid var(--k-focus); outline-offset: 3px; border-radius: var(--k-r-2); }

/* RU: Пары полей времени не переносятся посередине: «09:00 — 18:00» читается одним значением.
   EN: Time field pairs do not wrap in the middle: "09:00 — 18:00" reads as one value. */
body.bt-page .h-times { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
body.bt-page .hours-tbl tr.is-bad th, body.bt-page .hours-tbl tr.is-bad td { background: var(--k-danger-soft); }
body.bt-page .hours-tbl td { vertical-align: middle; }

/* RU: Ошибка правки ячейки прайса — рамка поля, текст ошибки уходит тостом. EN: A price cell edit error — the field border, the error text goes to a toast. */
body.bt-page .inp.is-bad { border-color: var(--k-danger); box-shadow: 0 0 0 2px var(--k-danger-soft); }
body.bt-page .pr-tbl .inp.is-price { width: 110px; }
body.bt-page .pr-tbl td { vertical-align: middle; }
body.bt-page .pr-tbl [data-price-text] { display: block; margin-top: 2px; }

/* RU: Скрытое с витрины фото и скрытая публикация приглушены, но остаются кликабельными — их можно вернуть.
   EN: A photo or a post hidden from the storefront is dimmed but stays clickable — it can be restored. */
body.bt-page .ph-item.is-off .ph-img, body.bt-page tr.is-off td { opacity: 0.55; }
body.bt-page .ph-badge.is-r { left: auto; right: 8px; }
body.bt-page .ph-img .pad { display: grid; place-items: center; height: 100%; text-align: center; }
body.bt-page .ph-item[draggable="true"] { cursor: grab; }
body.bt-page .fld.is-inline { display: inline-flex; align-items: center; gap: var(--k-s-2); }

/* RU: Отчёт загрузки прайса — вложенная карточка внутри карточки прайса. EN: The price upload report — a nested card inside the price card. */
body.bt-page .imp-box { background: var(--k-surface-2); border: 1px dashed var(--k-border-strong); }

/* RU: Очередь правок посетителей: текст слева, кнопки справа, на телефоне — под текстом.
   EN: The visitor edit queue: text on the left, buttons on the right, on a phone — under the text. */
body.bt-page .edits { display: grid; gap: var(--k-s-2); }
body.bt-page .edit-item { display: flex; gap: var(--k-s-3); align-items: flex-start; padding: var(--k-s-3); border: 1px solid var(--k-border); border-radius: var(--k-r-3); }
body.bt-page .edit-item p { margin: 4px 0 0; }

/* RU: Образец кнопки действия — не шире мини-карточки, как на телефоне. EN: The action button sample — no wider than the mini card, as on a phone. */
body.bt-page .pv-acts.is-demo { max-width: 340px; grid-template-columns: repeat(3, 1fr); }

/* RU: «Как видят клиенты»: колонка рядом с телефоном и раскладка «компьютер» — карточка слева, публикации и цены справа.
   EN: "What customers see": the column next to the phone and the "desktop" layout — the card on the left, posts and prices on
       the right. */
body.bt-page .pv-side-col { display: grid; gap: var(--k-s-4); align-content: start; }
body.bt-page .pv-desk { display: grid; grid-template-columns: minmax(0, 3fr) minmax(260px, 2fr); gap: var(--k-s-5); align-items: start; }
body.bt-page .pv-desk-main .pv-cover { height: 240px; }
body.bt-page .pv-desk-side { display: grid; gap: var(--k-s-4); }
body.bt-page .pv-notes .plain li { margin: 4px 0; }

/* RU: 1100 px — ширина окна, при которой рядом с меню кабинета (248 px) обе колонки ещё читаются. EN: 1100 px is the window width at which both columns still read next to the cabinet menu (248 px). */
@media (max-width: 1100px) {
  body.bt-page .pv-desk { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
  body.bt-page .edit-item { flex-direction: column; }
}

/* RU: Недоступная кнопка «Сохранить» (точка не сдвинута, в часах ошибка) должна выглядеть недоступной — общий стиль кнопки
       этого не делает, а зелёная кнопка без реакции читается как поломка. Только на экране «Карточка».
   EN: A disabled "Save" button (the point not moved, an hours error) must look disabled — the shared button style does not do
       that, and a green button with no response reads as a bug. On the "Card" screen only. */
body.bt-page .sc-card .btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* RU: Колонка редактора — сетка с одной колонкой auto: без minmax(0, 1fr) широкая таблица часов или прайса растягивала
       карточку за край телефона (838 px при экране 375, проверено 26.09 на 9185). Таблицы сами прокручиваются в .tbl-wrap,
       а шапка карточки с кнопками переносится на новую строку.
   EN: The editor column is a one-column auto grid: without minmax(0, 1fr) a wide hours or price table stretched the card past
       the phone edge (838 px on a 375 screen, checked 26.09 on 9185). Tables scroll inside .tbl-wrap, and the card header with
       buttons wraps onto a new line. */
body.bt-page .sc-card .ed-main { grid-template-columns: minmax(0, 1fr); }
body.bt-page .sc-card .ed-main > * { min-width: 0; }
body.bt-page .sc-card .card-h { flex-wrap: wrap; }
