.errors {
  color: var(--rbi-error);
}

/* формы и списки, кроме больших таблиц, — одной ширины по центру; край не прыгает */
.page-narrow {
  max-width: 860px;
  margin: 0 auto;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

/* «Разбор»: семь столбцов с длинными названиями в 860 не помещаются */
.page-review {
  max-width: 1100px;
}

.field-control {
  flex: 1;
  min-width: 0;
}

.field-control > .form-control,
.field-control > .form-select {
  width: 100%;
}

.field-error:empty {
  display: none;
}

.page-wide {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

/* белый блок на светлом фоне: форма, инструкция; у таблиц свой контур */
.block,
form.ref-form {
  background: #fff;
  border: 1px solid var(--border-block);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
}

form.ref-form {
  padding: 1rem 1.25rem;
}

.banner {
  margin: .5rem 0;
}

/* «Сохранено» поверх страницы: таблица не прыгает, когда он появляется и гаснет */
#banner {
  position: relative;
}

[data-saved] {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1080;
  /* тот же полупрозрачный оттенок alert-info, но на белом: таблица не просвечивает */
  background: linear-gradient(var(--rbi-slate-07), var(--rbi-slate-07)), #fff;
}

/* цвета шапки — .rbi-topbar в rbi-theme.css */
.topbar {
  padding: .6rem 0;
  font-size: 15px;
}

.topbar .navbar-brand {
  color: #fff;
}

.topbar-logo {
  height: 44px;
  width: auto;
}

.topbar-title {
  font-size: .9rem;
  line-height: 1.3;
  margin-left: 1rem;
  padding-left: 1rem;
  border-left: 1px solid rgba(255, 255, 255, .35);
}

.topbar .nav-link {
  padding-left: .9rem !important;
  padding-right: .9rem !important;
}

/* шеврон вместо треугольника Bootstrap; разворачивается у открытого меню */
.topbar .dropdown-toggle::after {
  border: 0;
  width: .42em;
  height: .42em;
  margin-left: .5em;
  vertical-align: .2em;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg);
  transition: transform var(--dur-fast) var(--ease);
}

.topbar .dropdown-toggle.show::after {
  transform: translateY(.2em) rotate(-135deg);
}

/* цифры одной ширины: суммы в столбце выравниваются по разрядам */
.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* «Цены», «Запросы цены»: первая ячейка строки целиком — кнопка раскрытия */
.prices .card-toggle-cell,
.request-group .card-toggle-cell {
  width: 44px;
  position: relative;
  padding: 0 !important;
}

.card-toggle {
  position: absolute;
  inset: 0;
  width: 100%;
  border: 0;
  background: transparent;
  color: var(--rbi-slate);
}

.card-toggle:hover {
  background: var(--rbi-slate-07);
}

.card-toggle:focus-visible {
  outline: 2px solid var(--rbi-slate);
  outline-offset: -2px;
}

/* шеврон вправо; у открытой карточки — вниз */
.card-toggle::after {
  content: "";
  display: inline-block;
  width: .5em;
  height: .5em;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: transform var(--dur-fast) var(--ease);
}

.card-toggle[aria-expanded="true"]::after {
  transform: rotate(45deg);
}

@media (prefers-reduced-motion: reduce) {
  .card-toggle::after {
    transition: none;
  }
}

/* наименование — единственный путь на страницу позиции */
.prices .item-name > a {
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* открытые запросы цены в карточке: действия сразу за текстом, отступ ≈ ширина кнопки */
.requests-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem 6rem;
}

.requests-actions {
  display: flex;
  align-items: center;
  gap: .5rem;
}

.login {
  max-width: 480px;
}

/* разделы «Инструкции» — внутри того же белого блока */
.help-sidebar {
  width: 240px;
  flex-shrink: 0;
  padding: 1rem .75rem;
  border-right: 1px solid var(--border-inner);
}

/* деактивированная запись справочника: остаётся в списке, но серая */
/* Bootstrap красит ячейки через свои переменные, color у строки не доходит до td */
.row-inactive {
  --bs-table-color-state: var(--bs-secondary-color);
  --bs-table-bg-state: var(--bs-tertiary-bg);
}

/* устаревшая строка без оттенка: жирная дата и метка «устарела» */
.prices tr.norow {
  --bs-table-bg-state: var(--rbi-surface-secondary);
}

.badge.state {
  background: var(--rbi-badge);
  color: var(--rbi-ink);
  font-weight: 600;
}

/* раскрытая карточка — светло-серый уровень, вложенные таблицы белые */
.prices tr.card-row > td {
  --bs-table-bg-state: var(--rbi-expanded);
}

/* «Запросы цены»: группы-таблицы с общими ширинами столбцов */
.request-group {
  table-layout: fixed;
}

/* на телефоне ширины столбцов не держим — иначе таблица шире экрана */
@media (max-width: 576px) {
  .request-group {
    table-layout: auto;
  }
}

.request-group .col-toggle {
  width: 44px;
}

.request-group .col-count {
  width: 6.5rem;
}

.request-group .col-days {
  width: 11rem;
}

.request-group .col-actions {
  width: 18.5rem;
}

/* позиционированная ячейка кнопки закрывает левый край контура таблицы — рисуем его сами */
.request-group .card-toggle-cell {
  box-shadow: inset 1px 0 var(--border-block);
}

.request-group a.request-item {
  color: var(--rbi-ink);
  text-decoration: none;
}

.request-group a.request-item:hover,
.request-group a.request-item:focus-visible {
  text-decoration: underline;
}

.request-count {
  display: inline-block;
  min-width: 1.6rem;
  padding: .05rem .45rem;
  border-radius: 999px;
  background: var(--rbi-taupe-soft);
  color: var(--rbi-taupe-text);
  font-size: .85rem;
  font-weight: 600;
  text-align: center;
}

/* заявители — на белом, без серой полосы (решено 14.10.2026): одна тонкая линия над списком */
.table.request-group > tbody.requests-row > tr {
  border-width: 0;
}

.table.request-group > tbody.requests-row > tr:first-child {
  border-top: 1px solid var(--border-inner);
}

.table.request-group > tbody.requests-row > tr > td {
  background: var(--rbi-white);
  color: var(--rbi-text-secondary);
  font-size: .9rem;
  padding: .25rem .75rem;
  border-bottom-width: 0;
}

.table.request-group > tbody.requests-row > tr:first-child > td {
  padding-top: .6rem;
}

.table.request-group > tbody.requests-row > tr:last-child > td {
  padding-bottom: .7rem;
}

.table.request-group > tbody.requests-row > tr > td:first-child {
  box-shadow: inset 1px 0 var(--border-block);
}

/* деактивированная позиция серая, даже если цена устарела или её нет */
.prices tr.row-inactive {
  --bs-table-bg-state: var(--bs-tertiary-bg);
}

.row-inactive a:not(.btn) {
  color: var(--bs-secondary-color);
}

.page-number {
  width: 5rem;
}

.row-actions {
  width: 1%;
  white-space: nowrap;
}

/* карточка позиции: выбранная цена и подсказки */
tr.chosen {
  --bs-table-bg-state: var(--rbi-selected);
}

[data-chosen] {
  cursor: help;
}

/* подробный расчёт — строки из chain_long через \n */
.hint-popover {
  pointer-events: none; /* не перекрывает соседнюю строку */
  --bs-popover-max-width: 32rem;
  --bs-popover-body-padding-x: 10px;
  --bs-popover-body-padding-y: 8px;
}

.hint-popover .popover-body {
  white-space: pre-line;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}

/* «Разбор»: отличающиеся значения внутри группы */
.cell-diff {
  --bs-table-bg-state: var(--rbi-expanded);
}

/* «Цены»: фильтры на белой панели — не сливаются с серой шапкой таблицы */
.filters-panel {
  background: var(--rbi-white);
  border: 1px solid var(--border-block);
  border-radius: var(--radius-md);
  padding: 12px 16px;
}

/* подсказка в поле темнее корпоративной: 4.5:1 на белом */
.form-control::placeholder {
  color: var(--rbi-muted);
}

.search-input {
  padding-left: 1.9rem;
  background: no-repeat .6rem center / 14px
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23667782' stroke-width='1.6' stroke-linecap='round'%3E%3Ccircle cx='7' cy='7' r='4.75'/%3E%3Cpath d='m10.5 10.5 3.5 3.5'/%3E%3C/svg%3E");
}

.section-filter {
  max-width: 280px;
}

/* цена и раздел в одну строку: строки «Цен» не растут в высоту */
.prices td.num {
  white-space: nowrap;
}

.prices .section-cell {
  max-width: 220px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* запрос htmx идёт: таблица и стрелка карточки бледнеют */
#items-table.htmx-request,
.card-toggle.htmx-request {
  opacity: .6;
}

/* подсказка позиций: под полем во всю его ширину, длинные названия переносятся */
.name-search {
  position: relative;
}

.suggestions {
  position: absolute;
  z-index: 1000;
  left: 0;
  right: 0;
  max-height: 24rem;
  overflow-y: auto;
  box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);
}

.suggestions:empty {
  display: none;
}
