/* ============================================================
   Golden Eye — правки поверх темы
   Файл: /var/www/app/public/css/panel-tweaks.css

   Подключается после panel-theme.css. Здесь то, что относится
   к плотности и поведению, а не к цвету: меню, ширина контента,
   прокрутка таблиц, размеры в карточках.

   Откат: удалить файл.
   ============================================================ */

/* ── Меню: полоса, выезжающая при наведении ────────────── */

/* Тема красит полосу и шапку одним тоном — здесь только полоса,
   шапка остаётся как была. */
.fi-sidebar { background-color: #FFFFFF; }

@media (min-width: 1024px) {

    .fi-sidebar {
        position: fixed !important;
        top: 0; bottom: 0; left: 0;
        width: 4.5rem !important;
        max-width: 4.5rem !important;
        overflow-x: hidden;
        overflow-y: auto;
        transition: width .18s ease, max-width .18s ease, box-shadow .18s ease;
        z-index: 40;
    }

    .fi-sidebar:hover {
        width: 17rem !important;
        max-width: 17rem !important;
        box-shadow: 6px 0 24px rgb(20 17 15 / 0.14);
        z-index: 60;
    }

    /* в свёрнутом виде остаются только иконки */
    .fi-sidebar .fi-sidebar-item-btn > *:not(.fi-sidebar-item-icon),
    .fi-sidebar .fi-sidebar-item-label,
    .fi-sidebar .fi-sidebar-item-badge-ctn,
    .fi-sidebar .fi-sidebar-group-label { display: none !important; }

    .fi-sidebar:hover .fi-sidebar-item-btn > * { display: revert !important; }
    .fi-sidebar:hover .fi-sidebar-item-label { display: block !important; }
    .fi-sidebar:hover .fi-sidebar-item-badge-ctn { display: inline-flex !important; }
    .fi-sidebar:hover .fi-sidebar-group-label { display: block !important; }

    .fi-sidebar .fi-sidebar-item-icon {
        flex: 0 0 auto;
        width: 1.35rem !important;
        height: 1.35rem !important;
        opacity: 1 !important;
    }

    /* тринадцать разделов должны помещаться без прокрутки */
    .fi-sidebar .fi-sidebar-item-btn {
        padding-top: .3rem !important;
        padding-bottom: .3rem !important;
        padding-left: 1.05rem !important;
        min-height: 0 !important;
        overflow: hidden;
    }

    .fi-sidebar-nav { gap: .1rem !important; }
    .fi-sidebar-header { padding-top: .5rem !important; padding-bottom: .5rem !important; }

    /* логотип в свёрнутом виде — только значок */
    .fi-sidebar .fi-logo { font-size: 0; gap: 0; }
    .fi-sidebar:hover .fi-logo { font-size: 19px; gap: 14px; }
    .fi-sidebar .fi-logo .ge-portal { display: none; }
    .fi-sidebar:hover .fi-logo .ge-portal { display: inline-block; }

    /* контент занимает всё, кроме полосы */
    .fi-main-ctn, .fi-topbar { margin-left: 4.5rem !important; }
    .fi-main, .fi-page .fi-main { max-width: 100% !important; }
}

/* ── Прокрутка таблиц ──────────────────────────────────── */

.fi-ta-ctn, .fi-ta-content { overflow-x: auto !important; }
.fi-ta-table { min-width: max-content; }

/* Ячейка, которую просили переносить, не должна раздвигать таблицу.
   min-width: max-content выше считает ширину по НЕРАЗРЫВНОМУ содержимому и
   переноса не замечает: длинные описания настроек растянули «Настройки» на
   3438 px, и колонку «Значение» стало не достать — ни посмотреть, ни
   поменять. Правило про max-content оставлено ради широких таблиц из
   бандла, но ячейку с переносом ограничиваем: иначе ->wrap() ничего не
   значит. */
.fi-ta-table .fi-ta-text.fi-wrapped { max-width: 46rem; }

/* На телефоне 46rem — это всё ещё втрое шире экрана. Там описание сжимаем
   сильнее: лучше высокая ячейка, чем таблица, которую надо возить вбок. */
@media (max-width: 767px) {
  .fi-ta-table .fi-ta-text.fi-wrapped { max-width: 13rem; }
}

.fi-sidebar::-webkit-scrollbar { width: 4px; }
.fi-sidebar::-webkit-scrollbar-thumb { background: #e5e7eb; border-radius: 2px; }

/* ── Действия в строке: столбиком ──────────────────────── */

.fi-ta-actions {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: .2rem !important;
}

.fi-ta-actions .fi-btn,
.fi-ta-actions .fi-link {
    justify-content: flex-start !important;
    font-size: .74rem !important;
    padding: .1rem .4rem !important;
    white-space: nowrap;
}

.fi-ta-actions-cell { width: 1%; white-space: nowrap; }

/* ── Наименование лота: пять строк ─────────────────────── */

.lot-name-clamp,
.lot-name-clamp > * {
    display: -webkit-box !important;
    -webkit-line-clamp: 5 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    white-space: normal !important;
    font-size: .82rem !important;
    line-height: 1.35 !important;
}

/* ── Шапка страницы ────────────────────────────────────── */

.fi-header { padding-top: .4rem !important; padding-bottom: .6rem !important; }
/* Кегль заголовка задан темой: 34px, это главный акцент шкалы.
   Здесь он больше не переопределяется — прежние 1.25rem были
   ужаты ради плотности и спорили с переданным дизайном. */
.fi-header-heading:empty { display: none !important; }
.fi-resource-edit-record-page .fi-header { padding: 0 !important; min-height: 0 !important; }
.fi-resource-edit-record-page .fi-header-heading { display: none !important; }

.fi-breadcrumbs { margin-bottom: .35rem !important; font-size: .72rem !important; }
.fi-breadcrumbs-item-label {
    display: inline-block;
    max-width: 320px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}

/* ── Карточка лота ─────────────────────────────────────── */

.fi-fo-placeholder > .fi-fo-field-wrp-label { display: none !important; }
.fi-fo-placeholder { margin: 0 !important; }
.fi-fo-placeholder * { word-break: break-word; overflow-wrap: anywhere; }

/* ============================================================
   Подразделы карточки: горизонтально над содержимым
   ============================================================ */

/* Filament ставит подразделы колонкой слева. Для карточки лота
   это неудобно: вкладок пять, а содержимое широкое. */

.fi-resource-record-sub-nav,
.fi-page-sub-navigation {
    flex-direction: row !important;
    flex-wrap: wrap;
    gap: .25rem !important;
    width: 100% !important;
    max-width: 100% !important;
    margin-bottom: .9rem;
    padding: 0 0 .5rem 0 !important;
    border-bottom: 1px solid #e5e7eb;
    border-right: none !important;
}

/* контейнер страницы: подразделы сверху, а не сбоку */
.fi-page:has(.fi-resource-record-sub-nav),
.fi-page:has(.fi-page-sub-navigation) {
    display: block !important;
}

.fi-resource-record-sub-nav-ctn,
.fi-page-sub-navigation-ctn {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    flex: none !important;
}

/* пункт: текст рядом с иконкой */
.fi-resource-record-sub-nav .fi-sidebar-item-btn,
.fi-page-sub-navigation .fi-sidebar-item-btn {
    display: inline-flex !important;
    align-items: center;
    gap: .4rem;
    width: auto !important;
    padding: .38rem .7rem !important;
    border-radius: 6px 6px 0 0;
    font-size: .9rem;
    white-space: nowrap;
    color: #6E7176;
    background: transparent;
}

.fi-resource-record-sub-nav .fi-sidebar-item-btn:hover,
.fi-page-sub-navigation .fi-sidebar-item-btn:hover {
    background: #f3f4f6;
    color: #17181A;
}

/* подписи в подразделах видны всегда: это не свёрнутая полоса */
.fi-resource-record-sub-nav .fi-sidebar-item-label,
.fi-page-sub-navigation .fi-sidebar-item-label {
    display: inline !important;
    opacity: 1 !important;
    font-size: .9rem;
}

.fi-resource-record-sub-nav .fi-sidebar-item-icon,
.fi-page-sub-navigation .fi-sidebar-item-icon {
    width: 1.05rem !important;
    height: 1.05rem !important;
}

/* активный подраздел */
.fi-resource-record-sub-nav .fi-sidebar-item.fi-active .fi-sidebar-item-btn,
.fi-page-sub-navigation .fi-sidebar-item.fi-active .fi-sidebar-item-btn,
.fi-resource-record-sub-nav .fi-sidebar-item-btn[aria-current="page"],
.fi-page-sub-navigation .fi-sidebar-item-btn[aria-current="page"] {
    background: #f3f4f6;
    color: #24282D;
    font-weight: 600;
    box-shadow: inset 0 -2px 0 #3A3F46;
}

/* полоса активного пункта бокового меню сюда не относится */
.fi-resource-record-sub-nav .fi-sidebar-item-btn::before,
.fi-page-sub-navigation .fi-sidebar-item-btn::before {
    display: none !important;
}

/* содержимое под вкладками */
.fi-resource-record-sub-nav ~ *,
.fi-page-sub-navigation ~ * {
    width: 100%;
    max-width: 100%;
}

/* ссылки на вошедшие разделы в шапке списка */
.fi-header-actions .fi-btn.fi-color-gray {
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
    color: #3A3F46;
    font-weight: 400;
}

.fi-header-actions .fi-btn.fi-color-gray:hover {
    background: #ffffff;
    border-color: #d1d5db;
}

/* ============================================================
   Меню разделов в шапке
   ============================================================ */

/* Ссылки на соседние разделы выглядят как вкладки, а не кнопки:
   это навигация, а не действие. */

.fi-header-actions {
    flex-wrap: wrap;
    gap: .2rem;
}

.fi-header-actions .fi-btn.ge-nav,
.fi-header-actions .fi-btn.ge-nav-active {
    background: transparent;
    border: 1px solid transparent;
    border-radius: 6px;
    padding: .34rem .6rem;
    font-size: .88rem;
    font-weight: 400;
    box-shadow: none;
}

.fi-header-actions .fi-btn.ge-nav { color: #6E7176; }

.fi-header-actions .fi-btn.ge-nav:hover {
    background: #f3f4f6;
    color: #17181A;
}

.fi-header-actions .fi-btn.ge-nav-active {
    background: #e5e7eb;
    border-color: #e5e7eb;
    color: #24282D;
    font-weight: 600;
}

.fi-header-actions .fi-btn.ge-nav .fi-icon,
.fi-header-actions .fi-btn.ge-nav-active .fi-icon {
    width: 1rem;
    height: 1rem;
    opacity: .8;
}

/* Первое действие после меню — с отступом, если полоса сжалась и auto-отступ не сработал */
.fi-header-actions .fi-btn.ge-nav-last + .fi-btn:not(.ge-nav):not(.ge-nav-active) {
    margin-left: .5rem;
}

/* Шапка: заголовок сверху, под ним одна полоса — переходы по разделу у левого
   края, действия на этой странице у правого (владелец 06.10.2026: «кнопки с
   переходами — в левом крае топ-меню, действия — в правом»). Последний пункт
   меню несёт ge-nav-last и отодвигает действия вправо; без меню действия
   занимают правый край сами. */
.fi-header {
    flex-wrap: wrap;
    align-items: flex-start;
}

.fi-header-actions {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-top: .4rem;
    padding-top: .4rem;
    border-top: 1px solid #f3f4f6;
    justify-content: flex-end;
}

.fi-header-actions .fi-btn.ge-nav-last {
    margin-right: auto;
}

/* ============================================================
   Карточка кандидата: раскладка блоков
   ============================================================

   Блоки помечены в разметке, порядок и колонки задаются здесь.
   Правка внутри блока раскладку не ломает: она не зависит
   от содержимого.
   ============================================================ */
/* ── Паспорт кандидата (ge-card) ────────────────────────────────────────
   Генератор отдаёт .ge-card / .ge-block / .ge-h без стилей на этих классах,
   поэтому вид блоков задаётся здесь. Блок — отдельная карточка, заголовок
   сидит на подложке во всю ширину, чтобы блоки не сливались в один текст. */

.ge-card {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 1.1rem 1.6rem;
  align-items: start;
}

.ge-card > .ge-block {
  background: #ffffff;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 0 20px 16px;
  overflow: hidden;
}

.ge-card > .ge-block > .ge-h {
  margin: 0 -20px 14px;
  padding: 11px 20px;
  background: #f3f4f6;
  border-bottom: 1px solid #e5e7eb;
  font-family: 'IBM Plex Mono', ui-monospace, monospace;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: #17181A;
}

/* Строка «метка / значение»: разделитель, чтобы длинные блоки читались */
.ge-card > .ge-block > div:not(.ge-h) {
  border-bottom: 1px solid #e5e7eb;
}

.ge-card > .ge-block > div:not(.ge-h):last-child {
  border-bottom: 0;
}

/* Вердикт и вывод — акцентные блоки, они читаются первыми */
.ge-card > .ge-block[data-b="score"],
.ge-card > .ge-block[data-b="conclusion"],
.ge-card > .ge-block[data-b="verdict"] {
  border-color: #d1d5db;
}

.ge-card > .ge-block[data-b="score"] > .ge-h,
.ge-card > .ge-block[data-b="conclusion"] > .ge-h,
.ge-card > .ge-block[data-b="verdict"] > .ge-h {
  background: #e5e7eb;
  border-bottom-color: #d1d5db;
}

.ge-card b { font-weight: 600; }

/* ── Инфопанель: заголовок и строки отчёта ведут в раздел ───────────────
   Ссылка выглядит как строка, чтобы отчёт не пестрел подчёркиваниями;
   что это ссылка, видно при наведении. */
.ge-card > .ge-block > .ge-h a { color: inherit; text-decoration: none; }
.ge-card > .ge-block > .ge-h a:hover {
  color: #8A5A2B;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.ge-card a.ge-go { color: inherit; text-decoration: none; }
.ge-card a.ge-go.ge-row:hover { background: #f9fafb; border-radius: 4px; }
.ge-card a.ge-go.ge-tile:hover { border-color: #8A5A2B !important; background: #f3f4f6 !important; }

/* ── Порядок блоков ─────────────────────────────────────────────────────
   «Брать или нет»: сначала ответ, потом цифры, потом доказательства.
   Блок с нераспознанной меткой уходит вниз, а не наверх, — при order:0
   он оказывался первым. */

.ge-card > .ge-block { order: 50; min-width: 0; grid-column: span 12; }

/* Ответ */
.ge-card > [data-b="verdict"]    { order:  1;  grid-column: span 12; }
.ge-card > [data-b="score"]      { order:  2;  grid-column: span 6; }
.ge-card > [data-b="conclusion"] { order:  3;  grid-column: span 6; }
/* Карточка купленного лота: «Досье» (дела по документам, должники) рядом с «Выводом» */
.ge-card > [data-b="dossier"]    { order:  3;  grid-column: span 6; }

/* Что за лот и сколько осталось времени */
.ge-card > [data-b="lot"]        { order:  4;  grid-column: span 7; }
.ge-card > [data-b="dates"]      { order:  5;  grid-column: span 5; }

.ge-card > [data-b="description"] { order: 6; grid-column: span 12; }

/* На чём основано требование */
.ge-card > [data-b="claims"]     { order:  6;  grid-column: span 6; }
.ge-card > [data-b="basis"]      { order:  7;  grid-column: span 6; }

/* Стороны входа: почём, во что обойдётся, как быстро дешевеет */
.ge-card > [data-b="prices"]     { order:  8;  grid-column: span 4; }
.ge-card > [data-b="cost"]       { order:  9;  grid-column: span 4; }
.ge-card > [data-b="speed"]      { order: 10;  grid-column: span 4; }

/* Доказательства */
.ge-card > [data-b="schedule"]   { order: 11;  grid-column: span 12; }
.ge-card > [data-b="breakeven"]  { order: 12;  grid-column: span 6; }
.ge-card > [data-b="scenarios"]  { order: 13;  grid-column: span 6; }
.ge-card > [data-b="history"]    { order: 14;  grid-column: span 6; }
.ge-card > [data-b="fns"]        { order: 15;  grid-column: span 6; }

/* Кому писать и чем подтверждено */
.ge-card > [data-b="case"]       { order: 16;  grid-column: span 6; }
.ge-card > [data-b="docs"]       { order: 17;  grid-column: span 6; }
.ge-card > [data-b="meaning"]    { order: 17;  grid-column: span 6; }
.ge-card > [data-b="deposit"]    { order: 18;  grid-column: span 6; }
.ge-card > [data-b="package"]    { order: 19;  grid-column: span 6; }

.ge-card > [data-b="other"]      { order: 60;  grid-column: span 12; }

/* ── Узкие экраны ───────────────────────────────────────────────────────
   Три карточки цифр складываются в две, потом всё в одну колонку. */

@media (max-width: 1500px) {
  .ge-card > [data-b="prices"],
  .ge-card > [data-b="cost"],
  .ge-card > [data-b="speed"],
  .ge-card > [data-b="lot"],
  .ge-card > [data-b="dates"] { grid-column: span 6; }
}

@media (max-width: 1100px) {
  .ge-card > .ge-block { grid-column: span 12 !important; }
}

/* ── Карточка купленного лота ───────────────────────────────────────────
   Оформление блоков общее с паспортом кандидата, а ширины свои: метки
   частью совпадают, но здесь «требования» — главная таблица во всю
   ширину, а не соседка основания. Сначала вывод: страница отвечает,
   чем кончилась сделка, остальное — как к этому пришли. */

.ge-card-lot > [data-b="conclusion"] { order: 1; grid-column: span 12; }
.ge-card-lot > [data-b="lot"]        { order: 2; grid-column: span 6; }
.ge-card-lot > [data-b="econ"]       { order: 3; grid-column: span 6; }
.ge-card-lot > [data-b="claims"]     { order: 4; grid-column: span 12; }
.ge-card-lot > [data-b="split"]      { order: 5; grid-column: span 12; }
.ge-card-lot > [data-b="progress"]   { order: 6; grid-column: span 12; }
.ge-card-lot > [data-b="dossier"]    { order: 7; grid-column: span 6; }
.ge-card-lot > [data-b="debtor"]     { order: 8; grid-column: span 6; }
.ge-lot-debtor { overflow-wrap: anywhere; }
.ge-lot-debtor + .ge-lot-debtor { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #e5e7eb; }
@media (max-width: 600px) {
  .ge-lot-debtor > div { flex-direction: column; gap: .15rem !important; }
  .ge-lot-debtor > div > div { flex-basis: auto !important; }
}


@media (max-width: 1100px) {
  .ge-card-lot > .ge-block { grid-column: span 12 !important; }
}

/* Таблицы внутри блока не должны распирать карточку.
   Заголовок исключён: он выходит за паддинг нарочно. */
.ge-card table { width: 100%; max-width: 100%; }
.ge-card > .ge-block > *:not(.ge-h) { max-width: 100%; }

/* ── Карточка: типографика блоков ──────────────────────── */
/* Генератор больше не красит эти места сам: отступ ячейки,
   выравнивание и шрифт заданы здесь, чтобы тема могла их
   переопределить. Инлайновый стиль темой не перебивается. */

.ge-h {
    font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: #17181A;
    margin: 0 0 .5rem;
    padding-bottom: .35rem;
    border-bottom: 1px solid #e5e7eb;
}

.ge-t {
    width: 100%;
    border-collapse: collapse;
    font-size: .85rem;
    margin-top: .3rem;
}

/* Заголовок колонки не читают — по нему скользят, и мелкие
   прописные с разрядкой для этого годятся лучше строчных. */
.ge-t th {
    font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #6B7280;
}

.ge-c  { padding: 6px 10px; }
.ge-c5 { padding: 5px 10px; }
.ge-c7 { padding: 7px 10px; }

/* Числа: столбик сравнивается взглядом только при одинаковой
   ширине знака и выравнивании вправо. */
.ge-r {
    text-align: right;
    font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    letter-spacing: -.02em;
    white-space: nowrap;
}

/* Широкая таблица уезжает вбок, а не сжимается: семь колонок
   в колонке сетки наезжают заголовками друг на друга. */
.ge-scroll {
    overflow-x: auto;
    max-width: 100%;
}

.ge-scroll table { width: auto; min-width: 100%; }

/* ── Задачи лота ────────────────────────────────────────── */
.ge-tasks { display: flex; flex-direction: column; gap: 14px; }
.ge-tasks-empty { background: #fff; border: 1px solid #ddd9d3; border-radius: 8px; padding: 18px; color: #6E7176; }
.ge-tasks-group { background: #fff; border: 1px solid #ddd9d3; border-radius: 8px; padding: 12px 14px; }
.ge-tasks-group.is-overdue { border-color: #D1D5DB; background: #ffffff; }
.ge-tasks-group h3 { font-weight: 600; font-size: 14px; margin: 0 0 8px; display: inline-flex; gap: 8px; align-items: center; }
.ge-tasks-group h3 span { font-size: 11px; background: #eee9e6; border-radius: 6px; padding: 1px 7px; color: #6E7176; }
.ge-tasks-group.is-overdue h3 { color: #B04A3A; } .ge-tasks-group.is-overdue h3 span { background: #ffffff; color: #8C2F26; }
.ge-tasks-group.is-done summary { cursor: pointer; list-style: none; } .ge-tasks-group.is-done summary::-webkit-details-marker { display: none; }
.ge-tasks-group.is-done summary h3::before { content: '▸ '; color: #6B7280; } .ge-tasks-group.is-done[open] summary h3::before { content: '▾ '; }
.ge-task { display: flex; gap: 12px; align-items: flex-start; padding: 9px 0; border-top: 1px solid #ece7e3; }
.ge-tasks-group h3 + .ge-task, .ge-tasks-group summary + .ge-task { border-top: 0; }
.ge-task-icon { color: #6E7176; margin-top: 2px; flex: none; } .ge-task.is-deadline .ge-task-icon { color: #B04A3A; }
.ge-task-body { flex: 1; min-width: 0; }
.ge-task-title { font-size: 14px; font-weight: 500; } .ge-task-title a { color: #17181A; } .ge-task-title a:hover { text-decoration: underline; }
.ge-task-badge { display: inline-block; margin-left: 6px; font-size: 10.5px; padding: 1px 6px; border-radius: 5px; background: #fdf1d6; color: #7a5a12; vertical-align: middle; }
.ge-task-badge.is-urgent { background: #ffffff; color: #8C2F26; }
.ge-task-meta { font-size: 12.5px; color: #6E7176; display: flex; flex-wrap: wrap; gap: 4px; } .ge-task-meta .is-bad { color: #B04A3A; font-weight: 500; }
.ge-task-note { font-size: 12.5px; color: #3A3F46; margin-top: 3px; white-space: pre-wrap; }
.ge-task-result { font-size: 12.5px; color: #16794C; margin-top: 3px; white-space: pre-wrap; }
.ge-task-actions { flex: none; }

/* ── Пробелы и план работ лота, календарь взыскания (02.10.2026) ──────────
   План работ: шаги с номером и состоянием над задачами лота. Календарь:
   сетка месяца рисуется сервером, на узком экране — список дней с записями. */
.ge-plan summary { cursor: pointer; list-style: none; } .ge-plan summary::-webkit-details-marker { display: none; }
.ge-plan summary h3::before { content: '▸ '; color: #6B7280; } .ge-plan[open] summary h3::before { content: '▾ '; }
.ge-plan-note { font-size: 12.5px; color: #6E7176; margin: 0 0 8px; }
.ge-plan-h { font-size: 11.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: #6E7176; margin: 10px 0 2px; }
.ge-plan-step { display: flex; gap: 12px; align-items: flex-start; padding: 8px 0; border-top: 1px solid #ece7e3; }
.ge-plan-num { flex: none; width: 22px; height: 22px; border-radius: 11px; background: #eee9e6; color: #6E7176; font-size: 11.5px; font-weight: 600; display: flex; align-items: center; justify-content: center; margin-top: 1px; }
.ge-plan-step.is-open .ge-plan-num { background: #e3edf5; color: #2c4a63; }
.ge-plan-step.is-done .ge-plan-num { background: #E4EFE8; color: #16794C; }
.ge-plan-step.is-done .ge-task-title { color: #6B7280; }
.ge-plan-done { color: #16794C; font-weight: 600; }

.ge-cal-nav { font-size: 12.5px; color: #8A5A2B; text-decoration: underline; padding: 2px 4px; }
.ge-cal-claim { display: grid; grid-template-columns: minmax(10rem, 1.4fr) minmax(7rem, .9fr) minmax(8rem, .9fr) minmax(10rem, 1.4fr) minmax(8rem, .8fr); gap: .4rem 1rem; align-items: baseline; padding: .32rem 0; border-bottom: 1px solid #e5e7eb; font-size: .88rem; }
.ge-cal-claim-name { color: #17181A; font-weight: 500; } .ge-cal-claim-name:hover { text-decoration: underline; }
.ge-cal-claim small { display: block; font-size: .76rem; }

.ge-cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.ge-cal-dow { font-size: 11px; color: #6E7176; text-transform: uppercase; letter-spacing: .04em; padding: 2px 6px; }
.ge-cal-day { background: #fff; border: 1px solid #ddd9d3; border-radius: 8px; min-height: 92px; padding: 6px; min-width: 0; }
.ge-cal-day.is-out { background: #F7F4F1; }
.ge-cal-day.is-out .ge-cal-num { color: #9CA3AF; }
.ge-cal-day.is-today { border-color: #8A5A2B; box-shadow: inset 0 0 0 1px #8A5A2B; }
.ge-cal-num { font-size: 12px; color: #6E7176; margin-bottom: 4px; display: flex; justify-content: space-between; }
.ge-cal-downame { display: none; color: #6B7280; }
.ge-cal-day.is-today .ge-cal-num { color: #8A5A2B; font-weight: 600; }
.ge-cal-item { display: block; font-size: 11.5px; line-height: 1.25; padding: 3px 6px; border-radius: 6px; margin-top: 3px; color: #17181A; text-decoration: none; border-left: 3px solid #6B7280; background: #F5F2EF; overflow: hidden; }
.ge-cal-item:hover { background: #ECE7E2; }
.ge-cal-item small { display: block; color: #6E7176; font-size: 10.5px; }
.ge-cal-item.k-hearing, .ge-cal-legend i.k-hearing { border-left-color: #5B4B8A; background: #EFEBF7; }
.ge-cal-item.k-event, .ge-cal-legend i.k-event { border-left-color: #B04A3A; background: #ffffff; }
.ge-cal-item.k-deadline, .ge-cal-legend i.k-deadline { border-left-color: #B04A3A; background: #ffffff; }
.ge-cal-item.k-task, .ge-cal-legend i.k-task { border-left-color: #3A3F46; background: #F1F1F2; }
.ge-cal-item.k-next, .ge-cal-legend i.k-next { border-left-color: #16794C; background: #E9F3EC; }
.ge-cal-item.k-norm, .ge-cal-legend i.k-norm { border-left-color: #8A5A2B; background: #F6EEE2; }
.ge-cal-item.is-done, .ge-cal-legend i.is-done { opacity: .5; text-decoration: line-through; }
.ge-cal-item.is-late { outline: 1px solid #D1D5DB; }
.ge-cal-overdue { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: 4px; }
.ge-cal-overdue .ge-cal-item { margin-top: 0; } .ge-cal-overdue b { color: #B04A3A; font-weight: 600; margin-right: 4px; }
.ge-cal-legend { display: flex; flex-wrap: wrap; gap: 10px; font-size: 12px; color: #6E7176; margin-top: 8px; }
.ge-cal-legend i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; border-left: 3px solid #6B7280; background: #F5F2EF; margin-right: 4px; vertical-align: -2px; }
@media (max-width: 760px) {
  .ge-cal { grid-template-columns: 1fr; }
  .ge-cal-dow { display: none; }
  .ge-cal-day.is-out, .ge-cal-day.is-empty { display: none; }
  .ge-cal-day { min-height: 0; }
  .ge-cal-downame { display: inline; }
  .ge-cal-claim { grid-template-columns: 1fr; gap: .15rem; }
}

/* ── Задачи в шапке панели ─────────────────────────────── */
.ge-topbar-tasks { position: relative; display: flex; align-items: center; margin-right: 4px; }
.ge-tt-btn { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 9px; border: 0; background: transparent; color: #6E7176; cursor: pointer; }
.ge-tt-btn:hover { background: #ECE7E3; color: #17181A; } .ge-tt-btn.is-red { color: #B04A3A; }
.ge-tt-badge { position: absolute; top: 3px; right: 2px; min-width: 17px; height: 17px; padding: 0 5px; border-radius: 999px; background: #3A3F46; color: #fff; font-size: 10.5px; font-weight: 600; line-height: 17px; text-align: center; }
.ge-tt-badge.is-red { background: #B04A3A; }
.ge-tt-panel { position: absolute; top: 44px; right: 0; width: 380px; max-width: 92vw; background: #fff; border: 1px solid #ddd9d3; border-radius: 12px; box-shadow: 0 12px 32px -12px rgba(23,24,26,.25); padding: 8px 0; z-index: 60; }
.ge-tt-group { padding: 6px 0; } .ge-tt-group + .ge-tt-group { border-top: 1px solid #ECE7E3; }
.ge-tt-title { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: 10px; letter-spacing: .07em; color: #6B7280; padding: 4px 14px; }
.ge-tt-group.is-overdue .ge-tt-title { color: #B04A3A; }
.ge-tt-row { display: flex; justify-content: space-between; gap: 10px; padding: 6px 14px; font-size: 13px; color: #17181A; }
.ge-tt-row:hover { background: #F5F1EE; } .ge-tt-row.is-deadline { color: #B04A3A; }
.ge-tt-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ge-tt-when { flex: none; color: #6B7280; font-size: 12px; }
.ge-tt-empty { padding: 10px 14px; font-size: 13px; color: #6B7280; }
.ge-tt-all { display: block; padding: 8px 14px 4px; font-size: 13px; color: #3A3F46; border-top: 1px solid #ECE7E3; margin-top: 4px; }

/* ── Документация по коду ────────────────────────────────── */
.ge-docs-wrap { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 18px; align-items: start; }
@media (max-width: 900px) { .ge-docs-wrap { grid-template-columns: 1fr; } }
.ge-docs-nav { position: sticky; top: 80px; background: #fff; border: 1px solid #ddd9d3; border-radius: 10px; padding: 10px; display: flex; flex-direction: column; gap: 3px; }
.ge-docs-nav-title { font-weight: 600; font-size: 13px; padding: 4px 8px 8px; } .ge-docs-nav-title span { font-family: 'IBM Plex Mono', monospace; font-size: 11px; color: #6B7280; margin-left: 6px; }
.ge-docs-nav a { display: flex; flex-direction: column; padding: 7px 9px; border-radius: 7px; color: #17181A; }
.ge-docs-nav a b { font-size: 13px; font-weight: 500; } .ge-docs-nav a span { font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; color: #6B7280; }
.ge-docs-nav a:hover { background: #F5F1EE; } .ge-docs-nav a.is-on { background: #3A3F46; color: #fff; } .ge-docs-nav a.is-on span { color: #d7d3cf; }
.ge-docs-nav-hint { font-size: 11.5px; color: #6B7280; padding: 8px 8px 2px; }
.ge-docs { background: #fff; border: 1px solid #ddd9d3; border-radius: 10px; padding: 22px 28px 30px; font-size: 14.5px; line-height: 1.6; color: #17181A; max-width: 960px; }
.ge-docs h1 { font-size: 24px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 14px; } .ge-docs h2 { font-size: 17px; font-weight: 600; margin: 24px 0 8px; padding-top: 10px; border-top: 1px solid #ECE7E3; }
.ge-docs h3 { font-size: 15px; font-weight: 600; margin: 16px 0 6px; } .ge-docs p { margin: 0 0 10px; } .ge-docs ul, .ge-docs ol { margin: 0 0 10px 22px; } .ge-docs li { margin: 2px 0; }
.ge-docs code { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: 12.5px; background: #F5F1EE; border-radius: 4px; padding: 1px 5px; }
.ge-docs pre { background: #F5F1EE; border-radius: 8px; padding: 12px 14px; overflow-x: auto; margin: 0 0 12px; } .ge-docs pre code { background: none; padding: 0; }
.ge-docs table { border-collapse: collapse; width: 100%; margin: 0 0 14px; font-size: 13.5px; } .ge-docs th, .ge-docs td { border: 1px solid #ECE7E3; padding: 6px 9px; text-align: left; vertical-align: top; } .ge-docs th { background: #FAF7F5; font-weight: 600; }
.ge-docs a { color: #2a78d6; } .ge-docs a:hover { text-decoration: underline; } .ge-docs strong { font-weight: 600; }

/* ── Подсказка не остаётся поверх окна ───────────────────────────────────
   Подсказка кнопки «!» рисуется через tippy с z-index 9999 — выше и окна
   (40), и уведомлений (50). Когда окно открывается, мышь оказывается под
   накладкой, mouseleave не приходит, и подсказка «Сообщить о баге или
   пожелании» повисает в правом верхнем углу — ровно там, где появляется
   «Обращение принято».

   Из-за этого люди решали, что отправка пропала. Проверено 19.09.2026 в
   браузере: в базе 21 обращение, номера подряд без пропусков, а в журнале
   ровно два «уведомление не ушло» — это не потерянные отправки, а не
   доставленные уведомления в Telegram. Пропала не запись, пропало
   подтверждение.
   ===================================================================== */
body:has(.fi-modal-open) [data-tippy-root] { display: none !important; }

/* ── Счётчик отборов не показывает ноль ──────────────────────────────────
   Шаблон Filament зовёт ->badge($activeFiltersCount) без условия, а ноль —
   значение не пустое, и у воронки висит «0» на каждом списке без отбора.
   Ноль рядом со значком читается как «что-то включено».

   Прятать счётчик совсем нельзя — при активном отборе он полезен. Поэтому
   опираемся на признак: когда отбор есть, Filament рисует блок «Активные
   фильтры» (.fi-ta-filter-indicators). Нет блока — нет и счёта.
   ===================================================================== */
.fi-ta:not(:has(.fi-ta-filter-indicators)) .fi-ta-filters-dropdown .fi-icon-btn-badge-ctn {
  display: none;
}

/* ── Кнопки шапки переносятся, а не уезжают за край ──────────────────────
   В полосе подразделов десять кнопок. На окне 979 px она шире экрана,
   прокрутки вбок у страницы нет, и правые кнопки недоступны совсем:
   «Ревизор» кончается на 1039 px, «Создать» на 1128. Хуже всего на
   правке портфеля — там за краем оказывается не навигация, а действия,
   и «Перевести в «распределение»» нечем нажать.

   Причина в самом контейнере: у .fi-header-actions-ctn стоит
   flex-shrink: 0 — он отказывается ужиматься и выдавливает кнопки
   наружу. Разрешаем ужиматься и переносить: перенос лучше боковой
   прокрутки, потому что кнопку видно, а не надо догадываться,
   что справа что-то есть.
   ===================================================================== */
.fi-header-actions-ctn {
  flex-wrap: wrap;
  row-gap: .5rem;
  flex-shrink: 1;
  min-width: 0;
}

.fi-header-actions-ctn > .fi-ac {
  flex-wrap: wrap;
  row-gap: .5rem;
}

/* ── Настройки: название и значение видны разом ──────────────────────────
   Колонка «Настройка» занимала 748 px, «Значение» ещё 565, и чтобы
   увидеть «выключено» или «300 000», таблицу приходилось увозить вправо,
   теряя название. Порог был около 1470 px по окну — половина экрана
   в него не попадает.

   Название переносится по словам в пределах своей ширины, значение
   стоит колонкой постоянной ширины: там короткие слова и числа,
   растягивать её не на что.

   Предел стоит на блоке текста внутри ячейки, а не на самой ячейке:
   max-width у td браузер в таблице с авторазметкой не учитывает
   (обращение 99, замер 26.09.2026 — ячейка 1197 px при max-width 448).
   Блок с пределом ограничивает и текст, и вклад колонки в ширину
   таблицы. Сама колонка при этом шире текста: таблица width: 100 %
   раздаёт остаток экрана колонкам — это не переполнение, за край
   контейнера таблица не выходит (scrollWidth = clientWidth).
   ===================================================================== */
.fi-resource-app-settings .fi-ta-cell-label .fi-ta-text.fi-wrapped {
  max-width: 28rem;
  overflow-wrap: anywhere;
}

.fi-resource-app-settings .fi-ta-header-cell-value,
.fi-resource-app-settings .fi-ta-cell-value {
  width: 12rem;
}

/* Значение не растягивает таблицу: JSON в одну строку давал 11 848 px (обращение 137) */
.fi-resource-app-settings .fi-ta-cell-value .fi-badge {
  max-width: 24rem;
  white-space: normal;
  overflow-wrap: anywhere;
}


/* ── Справка и помощь: главы, текст, чат ─────────────────────────────
   Три колонки: список глав (как в документации), текст главы и чат.
   Чат липнет к верху и прокручивает только ленту, чтобы поле вопроса
   было под рукой на любой длине главы. Уже 1200 px — в один столбец. */
.ge-help-wrap { display: grid; grid-template-columns: 230px minmax(0, 1fr) 380px; gap: 18px; align-items: start; }
.ge-help-chat { position: sticky; top: 80px; background: #fff; border: 1px solid #ddd9d3; border-radius: 10px; padding: 12px; display: flex; flex-direction: column; gap: 10px; max-height: calc(100vh - 100px); }
.ge-help-chat-title { font-weight: 600; font-size: 13px; padding: 2px 4px; }
.ge-help-chat .cr-chat-feed { flex: 1 1 auto; min-height: 220px; max-height: 56vh; overflow-y: auto; }
.ge-help-chat textarea { width: 100%; border: 1px solid #ddd9d3; border-radius: 8px; padding: 8px 10px; font: inherit; font-size: 13.5px; resize: vertical; }
.ge-help-send { display: flex; justify-content: flex-end; gap: 8px; margin-top: 6px; }
@media (max-width: 1200px) {
  .ge-help-wrap { grid-template-columns: 1fr; }
  .ge-help-chat { position: static; max-height: none; }
}

/* Белая область контента; розовая навигация остаётся в panel-theme.css. */
.fi-main [style*="background:#EDE6E6" i],
.fi-main [style*="background: #EDE6E6" i],
.fi-main [style*="background-color:#EDE6E6" i],
.fi-main [style*="background-color: #EDE6E6" i],
.fi-main [style*="background:#E5DBDB" i],
.fi-main [style*="background: #E5DBDB" i],
.fi-main [style*="background-color:#E5DBDB" i],
.fi-main [style*="background-color: #E5DBDB" i],
.fi-main [style*="background:#E1D5D6" i],
.fi-main [style*="background: #E1D5D6" i],
.fi-main [style*="background-color:#E1D5D6" i],
.fi-main [style*="background-color: #E1D5D6" i],
.fi-main [style*="background:#F5EFEF" i],
.fi-main [style*="background: #F5EFEF" i],
.fi-main [style*="background-color:#F5EFEF" i],
.fi-main [style*="background-color: #F5EFEF" i],
.fi-main [style*="background:#F0E8E8" i],
.fi-main [style*="background: #F0E8E8" i],
.fi-main [style*="background-color:#F0E8E8" i],
.fi-main [style*="background-color: #F0E8E8" i],
.fi-main [style*="background:#F7F2F2" i],
.fi-main [style*="background: #F7F2F2" i],
.fi-main [style*="background-color:#F7F2F2" i],
.fi-main [style*="background-color: #F7F2F2" i],
.fi-main [style*="background:#FAF6F6" i],
.fi-main [style*="background: #FAF6F6" i],
.fi-main [style*="background-color:#FAF6F6" i],
.fi-main [style*="background-color: #FAF6F6" i],
.fi-main [style*="background:#F6DEDB" i],
.fi-main [style*="background: #F6DEDB" i],
.fi-main [style*="background-color:#F6DEDB" i],
.fi-main [style*="background-color: #F6DEDB" i],
.fi-main [style*="background:#F8EEEC" i],
.fi-main [style*="background: #F8EEEC" i],
.fi-main [style*="background-color:#F8EEEC" i],
.fi-main [style*="background-color: #F8EEEC" i],
.fi-main [style*="background:#FBE3DF" i],
.fi-main [style*="background: #FBE3DF" i],
.fi-main [style*="background-color:#FBE3DF" i],
.fi-main [style*="background-color: #FBE3DF" i]{background-color:#fff!important}

/* Реестры купленного лота: общий дизайн контентных блоков. */
.ge-registries { font-size: .9rem; line-height: 1.6; }
.ge-registries > .ge-block { grid-column: span 12; }
/* Каждый источник свёрнут при открытии страницы; переключение нативное. */
.ge-registries > .ge-reg-source:not([open]) { padding-bottom: 0; }
.ge-registries > .ge-reg-source:not([open]) > summary.ge-h { margin-bottom: 0; border-bottom: 0; }
.ge-registries > .ge-reg-source > summary.ge-h { display: block; cursor: pointer; list-style: none; }
.ge-reg-source > summary::-webkit-details-marker { display: none; }
.ge-reg-source > summary::before { content: '▸'; display: inline-block; margin-right: .65rem; }
.ge-reg-source[open] > summary::before { content: '▾'; }
.ge-reg-source > summary:focus-visible { outline: 2px solid #8A5A2B; outline-offset: -3px; }

.ge-reg-meta { display: flex; flex-wrap: wrap; gap: 1rem 2rem; padding-bottom: .8rem; }
.ge-reg-meta > div { flex: 1 1 190px; min-width: 0; }
.ge-reg-label, .ge-reg-muted { display: block; color: #6E7176; font-size: .8rem; }
.ge-reg-label { margin-bottom: .25rem; }
.ge-reg-badge { display: inline-block; margin: .2rem 0 .2rem .4rem; padding: .1rem .5rem; border-radius: 6px; background: #f3f4f6; font-size: .78rem; }
.ge-reg-badge[data-state="completed"] { background: #eaf5ee; color: #16794C; }
.ge-reg-badge[data-state="failed"], .ge-reg-badge[data-state="partial"], .ge-reg-badge[data-state="stopped"] { background: #F6F0E8; color: #8A5A2B; }
.ge-reg-stats { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; padding: .65rem 0; margin-bottom: .65rem; }
.ge-reg-stats b { font-family: 'IBM Plex Mono', monospace; margin-left: .3rem; }
.ge-reg-notes { color: #8A5A2B; background: #F6F0E8; border-radius: 8px; padding: .6rem .8rem .6rem 1.8rem; margin-bottom: .7rem; list-style: disc; overflow-wrap: anywhere; }
.ge-reg-result { border-bottom: 1px solid #e5e7eb; }
.ge-reg-result:last-child { border-bottom: 0; }
.ge-reg-result > summary { cursor: pointer; padding: .6rem 0; overflow-wrap: anywhere; }
.ge-reg-result > summary:hover { color: #8A5A2B; }
.ge-reg-result > summary:focus-visible, .ge-reg-link:focus-visible { outline: 2px solid #8A5A2B; outline-offset: 3px; border-radius: 3px; }
.ge-reg-date { display: inline-block; margin-left: .8rem; color: #6E7176; font-size: .78rem; }
.ge-reg-body { padding: .25rem 0 .75rem; overflow-wrap: anywhere; }
.ge-reg-body p { margin: .3rem 0; }
.ge-reg-record { border-top: 1px solid #e5e7eb; padding: .75rem 0; }
.ge-reg-link { text-decoration: underline; text-underline-offset: 3px; }
.ge-reg-link:hover { color: #8A5A2B; }
.ge-reg-empty { color: #6E7176; padding: .6rem 0; }
.ge-reg-change { white-space: pre-wrap; overflow-wrap: anywhere; }
@media (max-width: 640px) {
  .ge-reg-date { display: block; margin: .2rem 0 0 1rem; }
  .ge-reg-meta { gap: .7rem; }
}

/* Требования: таблица должников слева, сохранённые расчёты справа. */
.ge-lot-claims-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,1fr);gap:24px;align-items:start}
.ge-lot-claims-table{min-width:0}
.ge-lot-accruals{min-width:0;border-left:1px solid #e5e7eb;padding-left:20px;font-size:.86rem}
.ge-lot-accruals h3{font-size:1rem;font-weight:650;margin:0 0 12px}
.ge-lot-accruals dl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;margin:12px 0}
.ge-lot-accruals dt{color:#6E7176}.ge-lot-accruals dd{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ge-lot-accruals p{margin:6px 0}.ge-lot-accruals a{text-decoration:underline}
.ge-lot-accrual-item+.ge-lot-accrual-item{border-top:1px solid #e5e7eb;margin-top:16px;padding-top:16px}
.ge-lot-accrual-note{font-size:.78rem;color:#6E7176}
@media(max-width:1100px){.ge-lot-claims-layout{grid-template-columns:minmax(0,1fr)}.ge-lot-accruals{border-left:0;border-top:1px solid #e5e7eb;padding:16px 0 0}}
