.mainmenu-preview {display: none !important;}

li.mainmenu-item.sidebar-button > a:hover {
    background: var(--bs-primary) !important;
    transition: all .1s ease-in-out;
}

/* .main-menu-container {
    left: 0;
    position: fixed;
    right: 0;
    z-index: 1030;
    margin-bottom: 100px;
    }

.flyout-container  {
    margin-top: 70px;
    position: fixed;
    }
  */

  #btn-back-to-top {
    position: fixed;
    bottom: 20px;
    left: 20px;
    opacity: 0.5;
    display: none;
    z-index: 9999;

  }
    
.suggestions__item:hover {
    background-color: rgb(107, 196, 141) !important;
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
}

.count_column {
    background-color: none;
}

#Relation-relationCommentsManageFormUser-user, #Form-relationCommentsManageForm-field-Comment-user-group {
    display: none; 
}

#Form-relationCommentsManageForm-field-Comment-user-group {
    padding-bottom: 0px;
}

.form-group-preview > #Relation-relationCommentsManageFormUser-user {
    display: block;
}

.form-group-preview#Form-relationCommentsManageForm-field-Comment-user-group {
    display: block;
}

.control-tabs .ph {
    margin-right: 3px !important;
}

#listSaverSave {
    border-bottom-right-radius: 5px;
    border-top-right-radius: 5px;
}

.form-group-preview .form-control {
    background-color: #F7F8F9;
}

.title-value p {font-size: 18px;}

/* === Карточка предпросмотра: ограничиваем ширину текстовых столбцов scoreboard ===
   Заголовки (узел/абонент/договор/наряд) выводят наименования в
   .scoreboard-item.title-value (inline-block). Без ограничения ширины длинная
   строка растягивала столбец, и статусы справа (.float-end) «перепрыгивали»
   между раскладкой «в ряд» и «стопкой» в зависимости от длины наименования.
   Фиксируем max-width столбца и разрешаем перенос — раскладка перестаёт
   зависеть от длины строки. Скоуп на .form-preview, чтобы не трогать scoreboard
   списков и дашборда. См. controllers/{units,consumers,contracts,orders}/_preview_header.php. */
.form-preview .scoreboard .scoreboard-item.title-value {
    max-width: 360px;
    white-space: normal;
    vertical-align: top;
}
.form-preview .scoreboard .scoreboard-item.title-value p {
    overflow-wrap: break-word;
    line-height: 1.25;
}

/* Октябрьский select.variants.css задаёт .select2-selection--single line-height: 1.6
   при padding 8/8 и height 37px → выбранное значение визуально сидит ниже середины.
   Центрируем содержимое .__rendered флексом, не трогая .__clear (он остаётся float'ом
   на своём дефолтном месте). */
.select2-container--default .select2-selection--single .select2-selection__rendered {
    display: flex;
    align-items: center;
    height: 100%;
    line-height: 1.2;
}

.scoreboard-item > .list-selectable {
    background: var(--oc-toolbar-bg);
border: 1px solid var(--oc-toolbar-border);
border-radius: 6px;
display: inline-block;
height: 28px;
line-height: 26px;
margin-bottom: -10px;
margin-top: -10px;
padding: 0 8px;
white-space: nowrap;
}

[data-bs-theme="dark"] {
    .form-group-preview .form-control {
        background-color: var(--oc-form-control-disabled-bg);
    }    
}

#budget-ballon-filter {
    padding-bottom: 6px;
    padding-left:  3px;
}


#budget-ballon-filter > ul >li {
    color: rgb(114, 128, 157) !important;
}

#budget-ballon-filter > ul >li.active {
    color: #fff !important;
}

.scoreboard-item-row {
    margin-right: 20px !important;
}

.modal {
    z-index: 701;
}


/* Делаем индикатор чуть больше и красивее, как в вашем примере */
.status-indicator {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-right: 7px;
    vertical-align: middle;
}

/* Приглушение для прочитанных строк */
tr.safe td {
    opacity: 0.5;
}


.list-switch.is-unread {
background-color: var(--bs-primary);
color: #fff;
}

.list-switch.is-read {
--bs-bg-opacity: .5;
background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
color: #fff;
}

#Form-field-Comment-_refresh_trigger-group {
    padding: 0;
}

/* Переиспользуемый стиль ссылки-перехода в ячейке списка (на карточку связанной
   записи): пунктирное серое подчёркивание при наведении — чтобы было видно, что
   это отдельная ссылка внутри кликабельной строки. Применяется и через партиалы
   (комментарии), и через механизм `linkTo:` в columns.yaml (см. Plugin::boot,
   backend.list.overrideColumnValue). */
.gasavt-celllink {
    text-decoration: none;
    border-bottom: 1px dotted transparent;
}
.gasavt-celllink:hover {
    text-decoration: none;
    border-bottom-color: #9ca3af;
}

/* Отступ над кнопками в попапах форм: ядро задаёт .modal-footer { padding-top: 0 }
   без border-top, из-за чего в коротких формах (напр. preview комментария) кнопка
   «Закрыть» прижата к контенту. Скоуп — только футер form-попапа (.form-buttons
   живёт в нём, см. behaviors/formcontroller/partials/_mode_popup.php). */
.modal-footer .form-buttons {
    margin-top: 0.85rem;
}

/* === Список нарядов: статус + колонка действия === */

/* Черновики — мягкий fade, чтобы отличались от опубликованных. */
tr.draft td {
    opacity: 0.78;
}

/* Колонка действия: кнопка перехода workflow. */
td.list-cell-action {
    white-space: nowrap;
    text-align: right;
}
td.list-cell-action button.disabled,
td.list-cell-action button[disabled] {
    opacity: 0.55;
    cursor: not-allowed;
}

/* === Дашборд-индикатор «Действующие оплаты»: кастомный статус иконки ===
   Ядро (modules/dashboard) знает цвета только для status-{info,important,success,
   warning,disabled}; disabled — серый. PaymentsDataSource отдаёт icon_status
   'info-soft' → Vue клеит класс .status-info-soft (без whitelist'а). Красим его
   в спокойный пастельно-голубой. Глиф иконки белый, поэтому фон взят достаточно
   насыщенным (контраст с белым ~2.4 — лучше, чем у дефолтного серого #BDC3C7).
   Селектор повторяет ядровый (_widget-indicator.css) для совпадения специфичности. */
.oc-dashboard .dashboard-report-widget .dashboard-report-widget-indicator .indicator-icon.status-info-soft {
    background-color: #5DADE2;
}

/* Копирование значения ячейки списка в буфер (колонки с cssClass: copyable).
   Иконка инъектится сервером (Plugin::boot, backend.list.overrideColumnValue),
   клик обрабатывает assets/js/copyable.js. Селектор-потомок покрывает оба случая:
   иконку внутри <a> (первый clickable-столбец) и прямо в <td>. */
td.copyable {
    position: relative;
    padding-right: 30px; /* резерв под иконку, чтобы не легла на длинный текст */
}
td.copyable .gasavt-copy-btn {
    position: absolute;
    right: 5px;
    top: 4px; /* верхний правый угол ячейки */
    opacity: 0;
    pointer-events: none; /* в покое не перехватывает клики по ячейке */
    cursor: pointer;
    font-size: 16px; /* чуть крупнее текста ячейки */
    line-height: 1;
    padding: 3px;
    border-radius: 4px;
    border: 1px solid rgba(0, 0, 0, .12); /* лёгкий полупрозрачный контур */
    color: var(--bs-table-color, #34495e);
    /* Непрозрачный фон под цвет строки → длинный текст не просвечивает сквозь иконку.
       Иконка видна только при hover строки, поэтому берём hover-фон строки
       (--bs-table-hover-bg); для активной/выбранной строки — её фон (--oc-table-active-bg). */
    background: var(--bs-table-hover-bg, #f5f5f5);
    transition: opacity .12s ease, color .12s ease;
}
td.copyable:hover .gasavt-copy-btn {
    opacity: 1;
    pointer-events: auto;
}
tr.active td.copyable:hover .gasavt-copy-btn,
tr.selected td.copyable:hover .gasavt-copy-btn {
    background: var(--oc-table-active-bg, #fff5cb);
}
td.copyable .gasavt-copy-btn:hover {
    color: var(--bs-primary, #5a5cd2);
}
td.copyable .gasavt-copy-btn:focus-visible {
    outline: 2px solid var(--bs-primary, #5a5cd2);
}
.gasavt-copy-btn.gasavt-copy-done {
    color: #2e7d32 !important;
}

/* Видимая приставка серийного номера корректора (FG-, FT-, …). Структуру (.input-group
   + .input-group-text) строит assets/js/main.js по полю с data-serial-prefix; рамки/радиусы
   даёт нативный Bootstrap .input-group. Цвета — строго тема-зависимые переменные Bootstrap
   (работают и в light, и в dark): --bs-tertiary-bg тёмно-серый в тёмной теме / светло-серый
   в светлой. НЕ хардкодить светлый фон — иначе в тёмной теме приставка выпадает белой пилюлей. */
.ga-serial-prefix > .input-group-text {
    font-weight: 600;
    color: var(--bs-secondary-color);
    background-color: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
}
/* Пустой чеклист (все опции отфильтрованы — например «Приборы» в наряде, пока не
   выбран объект) ядро рисует высокой пустой рамкой с приглушённым <p> вверху. В
   ряду с обычными полями это выглядит как поломка, поэтому приводим к виду
   плейсхолдера select2 у соседних дропдаунов: та же высота (37px), те же отступы
   и более светлый, тема-зависимый тон подсказки.
   :has() — только для геометрии: там, где он не поддерживается, поле просто
   останется прежней высоты, текст подсказки при этом виден в обоих случаях. */
.field-checkboxlist > .field-checkboxlist-inner:has(> p.text-muted) {
    display: flex;
    align-items: center;
    min-height: 37px; /* высота .select2-selection соседних дропдаунов */
    /* !important: ядровый отступ списка (15px сверху / 2px снизу под чекбоксы)
       объявлен внутри @media-группы и обычной специфичностью не перебивается. */
    padding: 7px 13px 8px !important;
}
.field-checkboxlist-inner > p.text-muted {
    margin: 0;
    color: var(--bs-tertiary-color, #ccc);
}

/* Callout с phosphor-иконкой вместо ядровой octo (класс ga-callout-ph).
   Ядро рисует иконку через `.callout > .header:before` (octo-icon, 22px) и
   прячет вложенные `<i>` — здесь наоборот: гасим ::before и показываем свой
   значок на том же месте, чтобы отступы заголовка (margin-left: 32px) сошлись.
   Цвет берём из той же переменной, что и ядровая иконка варианта. */
.callout.ga-callout-ph > .header:before {
    content: none;
}
.callout.ga-callout-ph > .header > i.ph {
    display: block;
    float: left;
    position: relative;
    left: -3px;
    font-size: 22px;
    line-height: 1;
}
.callout.ga-callout-ph.callout-danger > .header > i.ph {
    color: var(--oc-callout-danger-icon);
}
