/* «Тарифы и цены» — баги тестирования 23-09, карточки #71011841 (пп. 1–7, 16) и
   #71011842 (пп. 14, 15, 17). Файл подключается после app.css и после
   bugs_1909_price.css; все правила ограничены страницей `.admin-pricing-page`,
   чтобы не менять чужие экраны. Светлая плашка стоимости (#71579908) отсюда
   снята волной W5 (#71720631): её облик — канон `.price-panel` в components.css. */

/* пп. 3, 6, 7: стрелки числовых полей накладывались на единицу измерения и на
   само значение. Приём тот же, что у панели фильтров выплат (app.css): спиннеры
   не несут полезной нагрузки — значение вводится с клавиатуры. */
.admin-pricing-page input[type="number"] {
  appearance: textfield;
  -moz-appearance: textfield;
}

.admin-pricing-page input[type="number"]::-webkit-inner-spin-button,
.admin-pricing-page input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* п. 16: поясняющие тексты блоков были зажаты 640px и в широкой карточке
   обрывались на середине строки. */
.admin-pricing-page .page-sub {
  max-width: none;
}

/* ── Табличная компоновка блоков (#71011842, пп. 14, 15, 17) ────────────────
   Разрозненные карточки с полями заменены таблицами платформы: значения и
   единицы читаются столбцом, а не вразнобой. Новых цветов нет — только токены. */

/* Числовая колонка: узкая, по правому краю, поле живёт внутри клетки. */
.admin-pricing-page .pt-table__num {
  width: 180px;
  text-align: right;
  white-space: nowrap;
}

/* Таблицы страницы прокручиваются в своей рамке: на 390px страница не едет
   вбок, как и у списков с `.table-scroll` внутри `[data-list-page-content]`. */
.admin-pricing-page .table-scroll {
  max-width: 100%;
  overflow-x: auto;
}

.admin-pricing-page .pt-table__num .bp-field {
  display: inline-flex;
  justify-content: flex-end;
}

/* Поле цены с единицей в клетке не сжимается: без прежнего .bp-field у
   .input-unit не было минимальной ширины — на 390 поле схлопывалось до 14 px
   (ревью лендинга/тарифов, b118). Таблица прокручивается своей обёрткой. */
.admin-pricing-page .pt-table__num .input-unit { min-width: 132px; }

/* Телефон (≤600 px): столбец значения 180 px + поле 132 px не помещались в
   карточку — единица («лет», «±%») и заголовок «Значение» уходили за правый
   край области прокрутки (DEV-30, ревью P2-1). Столбец сжимается по
   содержимому, поле параметров машин (единицы короткие: «лет», «±%», «мес.»)
   — до 112 px: число в 6 знаков и единица видны целиком; у цен с длинной
   единицей («₽/поз.») поле остаётся 132 px;
   поля клеток таблиц страницы — 10 px вместо 16 (замер 390: 308 → 284 px
   при ширине области 293). */
@media (max-width: 600px) {
  .admin-pricing-page .table :is(th, td) { padding-inline: 10px; }
  .admin-pricing-page .pt-table__num { width: auto; }
  .admin-pricing-page #eq-params-card .pt-table__num .input-unit { min-width: 112px; }
}

/* Поле с единицей (`.input-unit`) в клетке — своя сетка «число | единица». */
.admin-pricing-page .pt-table__num .bp-field.input-unit {
  display: inline-grid;
}

/* Строка-подзаголовок внутри таблицы оборудования: это группа параметров, а не
   данные, поэтому фон взят как у шапки таблицы. */
.admin-pricing-page .pt-table__section td {
  background: var(--n50);
  font-size: var(--fs-label);
  font-weight: 700;
  text-transform: uppercase;
  color: var(--n500);
}

/* Выпадающий список режима категории — компонент кита `FormControls`
   (`.vsel`); своей ширины страница не задаёт, растяжение держит клетка. */

/* Сворачиваемые разделы базовой стоимости — нативный `details` внутри одной
   карточки блока (DEV-108): своей рамки, фона и радиуса у раздела нет, вид
   несёт кит; отступ между разделами — раскладка страницы (`.mt-md`). */

/* Правила цены под темой (`:root:not([data-theme="dark"])` / `:root[data-theme="dark"]`)
   сняты (W5/W11, #71720631): облик — канон `.price-panel` в components.css. */
/* Сворачиваемая карточка прайса (решение интегратора 08-10, #71011842 п.17):
   `section.card > details > summary.dash-panel__head`. Шапка кита — flex, а
   у summary не в `display: list-item` штатный маркер пропадает — рисуем
   шеврон рамкой справа (без глифа), закрытая карточка без нижнего отступа. */
.admin-pricing-page summary.dash-panel__head { cursor: pointer; list-style: none; border-radius: var(--r1); }
.admin-pricing-page summary.dash-panel__head::-webkit-details-marker { display: none; }
.admin-pricing-page summary.dash-panel__head:focus-visible { outline: none; box-shadow: var(--ring); }
.admin-pricing-page summary.dash-panel__head::after {
  content: ""; flex: 0 0 auto; width: 8px; height: 8px; margin-right: 4px;
  border-right: 2px solid var(--text-muted); border-bottom: 2px solid var(--text-muted);
  transform: rotate(45deg); transition: transform .15s ease;
}
.admin-pricing-page details:not([open]) > summary.dash-panel__head { margin-bottom: 0; }
.admin-pricing-page details:not([open]) > summary.dash-panel__head::after { transform: rotate(-45deg); }
/* Ошибка поля с единицей: рамку и кольцо фокуса несёт обёртка
   (`.input-unit:has(> .input-error)`, кит), а кольцо ошибки самого поля
   (`[aria-invalid]:focus`) внутри обёртки рисовалось второй рамкой.
   Временно: дефект кита (#71720978 D), после правки components.css снять. */
.admin-pricing-page .input-unit > .input-error:is(:focus, :focus-visible) { box-shadow: none; outline: none; }

/* ── Секция «Машины и оборудование» (DEV-77 W4, Р-26/Р-28/Р-31) ───────────
   Настройки машин собраны одной карточкой-секцией с вложенными блоками
   (`section.card.card-p` у каждого — свои «Сохранить»/«Сбросить»). Заголовок
   секции — ступенью крупнее заголовков её блоков (`h2` над `h3`), иначе
   вложенность читается только по отступу. */
.admin-pricing-page .pricing-machinery > .dash-panel__head > .dash-panel__title {
  font-size: var(--fs-h3);
}

/* Оглавление плоское (`UI.mountSettingsToc`), блоки секции — отступом под её
   пунктом: из списка видно, что «Параметры расчёта» — это параметры машин. */
.admin-pricing-page .settings-toc :is(
  [data-toc-target="pricing-equipment"],
  [data-toc-target="eq-subcategory-modes-card"],
  [data-toc-target="eq-params-card"],
  [data-toc-target="eq-income-texts-card"]) {
  padding-left: calc(var(--space-3) + var(--space-4));
}

/* Телефон: вложенный блок в карточке-секции терял по 24 px с каждой стороны
   дважды. Поля секции уже — у самой секции действий нет, а отступы липкой
   шапки вложенного блока рассчитаны на его собственный `.card-p`. */
@media (max-width: 600px) {
  .admin-pricing-page .pricing-machinery { padding-inline: var(--space-3); }
}

/* «Доступность подкатегорий»: у каждой категории своя таблица, и при
   автоматической раскладке выпадающие разной ширины от таблицы к таблице
   (Р-28). Колонки фиксированы: режим — 340 px, переключатель парка —
   180 px; выпадающий во всю клетку. На телефоне таблица прокручивается
   своей областью (`data-scroll-region`). */
.admin-pricing-page .scm-table { table-layout: fixed; min-width: 680px; }
.admin-pricing-page .scm-table .scm-table__mode { width: 340px; }
.admin-pricing-page .scm-table .scm-table__mass { width: 180px; }
.admin-pricing-page .scm-table .vsel { width: 100%; max-width: none; }
@media (max-width: 600px) {
  .admin-pricing-page .scm-table { min-width: 500px; }
  .admin-pricing-page .scm-table .scm-table__mode { width: 230px; }
  .admin-pricing-page .scm-table .scm-table__mass { width: 120px; }
}
/* Переключатель парка — цель не меньше 24×24 (WCAG 2.5.8). */
.admin-pricing-page .scm-mass-switch { min-height: 24px; padding-block: 1px; }

/* Отметка изменённого значения (Р-27): бейдж кита и умолчание рядом, под
   подписью параметра. */
.admin-pricing-page .eq-setting-status {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2);
  margin-top: var(--space-1);
}
.admin-pricing-page .eq-setting-status .fmsg-hint { margin: 0; }
.admin-pricing-page .field-label .badge { vertical-align: middle; }

/* Тексты отказа растут по содержимому (Р-31): длинный текст не уходит во
   внутреннюю прокрутку без имени. Где `field-sizing` нет, высоту ставит
   `admin_eq_income_texts.js::fitHeight`. */
.admin-pricing-page .eq-income-text {
  field-sizing: content;
  min-height: 6.5em;
  overflow-y: hidden;
  resize: none;
}
