/*
 * Справочник контрагентов — общий для всей системы (окно выбора и страница «Контрагенты»).
 * Все правила внутри .cpr: справочник может оказаться на экране дважды (страница
 * и окно выбора поверх неё), поэтому корень — класс, а не id. Bootstrap-классы
 * внутри не используются, у системных .btn есть !important — свои кнопки без .btn.
 * Цвета и плотность — те же, что у модуля оплат (payments.css).
 */

.cpr {
    --cp-font: 13px;
    --cp-font-sm: 12px;
    --cp-font-xs: 11px;

    --cp-text: #1f2328;
    --cp-muted: #5f6b7a;
    --cp-faint: #98a2b3;
    --cp-border: #e3e6eb;
    --cp-border-strong: #cfd5dd;
    --cp-bg: #f5f6f8;
    --cp-surface: #fff;
    --cp-hover: #f4f7fc;
    --cp-sel: #e7f0fe;

    --cp-primary: #1767d6;
    --cp-primary-hover: #1257b8;
    --cp-primary-soft: #e9f1fd;
    --cp-ok: #1a7f37;
    --cp-ok-soft: #e6f4ea;
    --cp-warn: #9a5b00;
    --cp-warn-soft: #fff3d6;
    --cp-bad: #c42b1c;
    --cp-bad-soft: #fdecea;
    --cp-neutral: #475467;
    --cp-neutral-soft: #f0f2f5;

    --cp-ctl-h: 30px;
    --cp-radius: 6px;
    --cp-gap: 8px;
    --cp-pad-x: 16px;
    --cp-row-h: 36px;
    --cp-side-w: 248px;

    position: relative;
    display: flex;
    flex-direction: column;
    height: 600px; /* точная высота ставится скриптом по месту */
    min-width: 0;
    overflow: hidden;
    background: var(--cp-surface);
    color: var(--cp-text);
    font-size: var(--cp-font);
    line-height: normal;
    text-align: left;
}

@media (max-width: 1599px) {
    .cpr {
        --cp-ctl-h: 28px;
        --cp-gap: 6px;
        --cp-pad-x: 12px;
        --cp-row-h: 34px;
        --cp-side-w: 220px;
    }
}

.cpr, .cpr *, .cpr *::before, .cpr *::after { box-sizing: border-box; }
.cpr button, .cpr input, .cpr select, .cpr textarea {
    font-family: inherit;
    font-size: var(--cp-font);
    line-height: normal;
    color: inherit;
    margin: 0;
}
.cpr button { cursor: pointer; }
.cpr [hidden] { display: none !important; }
.cpr svg { display: block; flex: 0 0 auto; vertical-align: middle; }
.cpr p { margin: 0; }
.cpr ul { margin: 0; padding: 0; list-style: none; }

/* ---------- кнопки и общие элементы ---------- */

.cpr .cpr-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: var(--cp-ctl-h);
    padding: 0 12px;
    border: 1px solid var(--cp-border-strong);
    border-radius: var(--cp-radius);
    background: var(--cp-surface);
    color: var(--cp-text);
    font-weight: 500;
    white-space: nowrap;
}
.cpr .cpr-btn:hover { background: var(--cp-hover); }
.cpr .cpr-btn:disabled { opacity: .5; cursor: default; background: var(--cp-surface); }
.cpr .cpr-btn--primary { border-color: var(--cp-primary); background: var(--cp-primary); color: #fff; }
.cpr .cpr-btn--primary:hover { border-color: var(--cp-primary-hover); background: var(--cp-primary-hover); }
.cpr .cpr-btn--primary:disabled { background: var(--cp-primary); }
.cpr .cpr-btn--danger { border-color: var(--cp-bad); background: var(--cp-bad); color: #fff; }
.cpr .cpr-btn--danger:hover { background: #a82315; }
.cpr .cpr-btn--ghost { border-color: transparent; background: transparent; color: var(--cp-neutral); }
.cpr .cpr-btn--ghost:hover { background: var(--cp-neutral-soft); }

.cpr .cpr-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    padding: 0;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: var(--cp-muted);
}
.cpr .cpr-icon:hover { background: var(--cp-neutral-soft); color: var(--cp-text); }

.cpr .cpr-link {
    padding: 0;
    border: 0;
    background: none;
    color: var(--cp-primary);
    font-weight: 500;
}
.cpr .cpr-link:hover { text-decoration: underline; }

.cpr :focus-visible { outline: 2px solid rgba(23, 103, 214, .45); outline-offset: 1px; }

.cpr .cpr-tag {
    display: inline-flex;
    align-items: center;
    height: 20px;
    padding: 0 7px;
    border-radius: 10px;
    background: var(--cp-neutral-soft);
    color: var(--cp-neutral);
    font-size: var(--cp-font-xs);
    font-weight: 600;
    white-space: nowrap;
}
.cpr .cpr-tag--prov { background: #eef4ff; color: #2b59a8; }
.cpr .cpr-tag--cust { background: #eaf6ee; color: #1f6b3a; }
.cpr .cpr-tag--by { height: 17px; padding: 0 5px; background: #fdf0e3; color: #8a4b0f; font-size: 10px; }
.cpr .cpr-tag--warn { background: var(--cp-warn-soft); color: var(--cp-warn); }
.cpr .cpr-nogroup { color: var(--cp-warn); font-style: italic; }

.cpr mark { padding: 0 1px; border-radius: 2px; background: #ffe58a; color: inherit; }

/* ---------- верхняя полоса ---------- */

.cpr .cpr-top {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--cp-gap) 10px;
    padding: 10px var(--cp-pad-x);
    border-bottom: 1px solid var(--cp-border);
    background: var(--cp-surface);
}
.cpr .cpr-title { margin-right: 6px; font-size: 18px; font-weight: 700; white-space: nowrap; }

.cpr .cpr-search {
    position: relative;
    display: flex;
    align-items: center;
    flex: 1 1 380px;
    max-width: 560px;
    min-width: 240px;
    height: calc(var(--cp-ctl-h) + 4px);
    margin: 0;
    padding: 0 8px 0 10px;
    border: 1px solid var(--cp-border-strong);
    border-radius: var(--cp-radius);
    background: var(--cp-surface);
    color: var(--cp-faint);
    font-weight: 400;
    cursor: text;
}
.cpr .cpr-search:focus-within { border-color: var(--cp-primary); box-shadow: 0 0 0 3px rgba(23, 103, 214, .12); }
.cpr .cpr-search input {
    flex: 1 1 auto;
    min-width: 0;
    height: 100%;
    padding: 0 8px;
    border: 0;
    outline: 0;
    background: transparent;
    color: var(--cp-text);
    box-shadow: none;
}
.cpr .cpr-search input::placeholder { color: var(--cp-faint); }
.cpr .cpr-search input::-webkit-search-cancel-button { display: none; }
.cpr .cpr-search kbd {
    padding: 1px 6px;
    border: 1px solid var(--cp-border);
    border-radius: 4px;
    background: var(--cp-bg);
    color: var(--cp-muted);
    font-family: inherit;
    font-size: 11px;
    font-weight: 600;
    line-height: 16px;
    box-shadow: none;
}
.cpr .cpr-search:focus-within kbd { display: none; }

.cpr .cpr-seg {
    display: inline-flex;
    gap: 2px;
    padding: 2px;
    border-radius: var(--cp-radius);
    background: var(--cp-neutral-soft);
}
.cpr .cpr-seg button {
    height: calc(var(--cp-ctl-h) - 4px);
    padding: 0 10px;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--cp-neutral);
    font-weight: 500;
    white-space: nowrap;
}
.cpr .cpr-seg button.is-on { background: var(--cp-surface); color: var(--cp-text); box-shadow: 0 1px 2px rgba(16, 24, 40, .14); }

.cpr .cpr-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: var(--cp-ctl-h);
    padding: 0 10px;
    border: 1px dashed #e0b45c;
    border-radius: var(--cp-radius);
    background: var(--cp-surface);
    color: var(--cp-warn);
    font-weight: 500;
    white-space: nowrap;
}
.cpr .cpr-chip b { padding: 0 6px; border-radius: 8px; background: var(--cp-warn-soft); font-weight: 700; }
.cpr .cpr-chip.is-on { border-style: solid; background: var(--cp-warn-soft); }
.cpr .cpr-sp { flex: 1 1 0; }

/* ---------- тело: группы + таблица ---------- */

.cpr .cpr-body {
    position: relative;
    flex: 1 1 auto;
    display: grid;
    grid-template-columns: var(--cp-side-w) minmax(0, 1fr);
    min-height: 0;
}

.cpr .cpr-side {
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-right: 1px solid var(--cp-border);
    background: #fafbfc;
}
.cpr .cpr-side__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 8px 6px var(--cp-pad-x);
    color: var(--cp-muted);
    font-size: var(--cp-font-xs);
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.cpr .cpr-tree { flex: 1 1 auto; overflow: auto; padding: 0 6px 12px; }
.cpr .cpr-node__row {
    position: relative;
    display: flex;
    align-items: center;
    gap: 4px;
    height: 30px;
    padding-right: 4px;
    border-radius: 5px;
    color: var(--cp-text);
    cursor: pointer;
    user-select: none;
}
.cpr .cpr-node__row:hover { background: var(--cp-neutral-soft); }
.cpr .cpr-node__row.is-on { background: var(--cp-primary-soft); color: var(--cp-primary); font-weight: 600; }
.cpr .cpr-node__row.is-empty .cpr-node__name,
.cpr .cpr-node__row.is-empty .cpr-node__cnt { color: var(--cp-faint); }
.cpr .cpr-node__caret {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    padding: 0;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--cp-faint);
    transition: transform .12s;
}
.cpr .cpr-node__caret:hover { background: rgba(16, 24, 40, .06); color: var(--cp-text); }
.cpr .cpr-node.is-open > .cpr-node__row .cpr-node__caret { transform: rotate(90deg); }
.cpr .cpr-node__caret--none { visibility: hidden; }
.cpr .cpr-node__ico { flex: 0 0 auto; color: #9aa7b8; }
.cpr .cpr-node__caret, .cpr .cpr-node__more { flex: 0 0 auto; }
.cpr .cpr-node__row.is-on .cpr-node__ico { color: var(--cp-primary); }
.cpr .cpr-node__name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cpr .cpr-node__cnt { color: var(--cp-faint); font-size: var(--cp-font-xs); font-variant-numeric: tabular-nums; }
.cpr .cpr-node__row.is-on .cpr-node__cnt { color: var(--cp-primary); }
.cpr .cpr-node__more { display: none; width: 22px; height: 22px; }
.cpr .cpr-node__row:hover .cpr-node__more,
.cpr .cpr-node__row.is-menu .cpr-node__more { display: inline-flex; }
.cpr .cpr-node__row:hover .cpr-node__cnt,
.cpr .cpr-node__row.is-menu .cpr-node__cnt { display: none; }
.cpr .cpr-node__kids { display: none; }
/* «Без группы» — отбор, а не папка: пунктирный значок, меню действий нет, число видно всегда */
.cpr .cpr-node--none > .cpr-node__row { color: var(--cp-warn); }
.cpr .cpr-node--none > .cpr-node__row .cpr-node__ico { color: #c9a25a; }
.cpr .cpr-node--none > .cpr-node__row:hover .cpr-node__cnt { display: inline; }
.cpr .cpr-node--none > .cpr-node__row.is-on { background: var(--cp-warn-soft); color: var(--cp-warn); }
.cpr .cpr-node--none > .cpr-node__row.is-on .cpr-node__ico,
.cpr .cpr-node--none > .cpr-node__row.is-on .cpr-node__cnt { color: var(--cp-warn); }
.cpr .cpr-node.is-open > .cpr-node__kids { display: block; }
.cpr .cpr-node__input {
    flex: 1 1 auto;
    min-width: 0;
    height: 24px;
    padding: 0 6px;
    border: 1px solid var(--cp-primary);
    border-radius: 4px;
    outline: 0;
    background: #fff;
    font-weight: 400;
    color: var(--cp-text);
}

.cpr .cpr-main { display: flex; flex-direction: column; min-width: 0; min-height: 0; }

.cpr .cpr-info {
    flex: 0 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
    min-height: 40px;
    padding: 6px var(--cp-pad-x);
    border-bottom: 1px solid var(--cp-border);
    color: var(--cp-muted);
}
.cpr .cpr-crumbs { display: flex; align-items: center; gap: 4px; color: var(--cp-text); font-weight: 600; }
.cpr .cpr-crumbs span.is-up { color: var(--cp-muted); font-weight: 400; }
.cpr .cpr-crumbs svg { color: var(--cp-faint); }
.cpr .cpr-info__cnt { color: var(--cp-muted); font-variant-numeric: tabular-nums; }
.cpr .cpr-fchip {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    height: 22px;
    padding: 0 2px 0 8px;
    border-radius: 11px;
    background: var(--cp-primary-soft);
    color: var(--cp-primary);
    font-size: var(--cp-font-sm);
    font-weight: 500;
}
.cpr .cpr-fchip button { width: 18px; height: 18px; color: inherit; }
.cpr .cpr-fchip button:hover { background: rgba(23, 103, 214, .12); color: inherit; }
.cpr .cpr-note { padding: 2px 8px; border-radius: 4px; background: var(--cp-warn-soft); color: var(--cp-warn); }

.cpr .cpr-bulk { display: flex; align-items: center; gap: 8px; color: var(--cp-text); font-weight: 600; }

.cpr .cpr-scroll { position: relative; flex: 1 1 auto; min-height: 0; overflow: auto; }

/* ---------- таблица ---------- */

.cpr .cpr-tbl {
    width: 100%;
    margin: 0;
    border: 0;
    border-collapse: separate;
    border-spacing: 0;
    table-layout: fixed;
    background: var(--cp-surface);
    color: var(--cp-text);
}
.cpr .cpr-tbl th,
.cpr .cpr-tbl td {
    padding: 0 10px;
    border: 0;
    border-bottom: 1px solid #eef0f3;
    vertical-align: middle;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.cpr .cpr-tbl th {
    position: sticky;
    top: 0;
    z-index: 2;
    height: 34px;
    border-bottom-color: var(--cp-border);
    background: #f8f9fb;
    color: var(--cp-muted);
    font-size: var(--cp-font-sm);
    font-weight: 600;
    user-select: none;
}
.cpr .cpr-tbl th.is-sort { cursor: pointer; }
.cpr .cpr-tbl th.is-sort:hover { color: var(--cp-text); }
.cpr .cpr-th { display: inline-flex; align-items: center; gap: 4px; max-width: 100%; }
.cpr .cpr-th svg { color: var(--cp-primary); }
.cpr .cpr-tbl th:first-child,
.cpr .cpr-tbl td:first-child { padding-left: var(--cp-pad-x); }
.cpr .cpr-tbl td { height: var(--cp-row-h); }
.cpr .cpr-tbl tbody tr { cursor: default; }
.cpr .cpr-tbl tbody tr:hover td { background: var(--cp-hover); }
.cpr .cpr-tbl tbody tr.is-sel td { background: var(--cp-sel); }
.cpr .cpr-tbl tbody tr.is-sel td:first-child { box-shadow: inset 3px 0 0 var(--cp-primary); }
.cpr .cpr-tbl tbody tr.is-checked td { background: #f1f6ff; }
/* старые модули ставят строке свой класс .selected (с !important) — внутри справочника он не рисуется */
.cpr .cpr-tbl tbody tr.selected { background: transparent !important; }
.cpr .cpr-tbl tbody tr.cpr-spacer td,
.cpr .cpr-tbl tbody tr.cpr-spacer:hover td { padding: 0; border: 0; background: transparent; box-shadow: none; }
.cpr .cpr-tbl .c-check { width: 40px; padding-right: 0; }
.cpr .cpr-tbl .c-check input { width: 15px; height: 15px; margin: 0; vertical-align: middle; cursor: pointer; }
.cpr .cpr-tbl td.c-num,
.cpr .cpr-tbl th.c-num { font-variant-numeric: tabular-nums; }
.cpr .cpr-tbl .c-code { color: var(--cp-faint); text-align: right; }
.cpr .cpr-tbl th.c-code { text-align: right; }
.cpr .cpr-tbl .c-muted { color: var(--cp-muted); }
.cpr .cpr-tbl .c-act { padding: 0 6px; text-align: right; }
.cpr .cpr-tbl td.c-act > span { display: inline-flex; gap: 2px; opacity: 0; }
.cpr .cpr-tbl tr:hover td.c-act > span,
.cpr .cpr-tbl tr.is-sel td.c-act > span,
.cpr .cpr-tbl tr.is-menu td.c-act > span { opacity: 1; }

.cpr .cpr-name { display: flex; align-items: center; gap: 6px; min-width: 0; }
.cpr .cpr-name__txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.cpr .cpr-name__pre { color: var(--cp-faint); font-weight: 400; }
.cpr .cpr-name__test { color: var(--cp-faint); }
.cpr .cpr-flag { display: inline-flex; color: #d08a1e; }
.cpr .cpr-sub {
    margin-top: 1px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--cp-muted);
    font-size: var(--cp-font-sm);
}
.cpr .cpr-sub i { font-style: normal; color: var(--cp-faint); }
.cpr .cpr-tbl tr.has-sub td { height: calc(var(--cp-row-h) + 14px); }
.cpr .cpr-roles { display: inline-flex; gap: 4px; }
.cpr .cpr-innwrap { display: inline-flex; align-items: center; gap: 5px; }
.cpr .cpr-bad { color: var(--cp-warn); }

.cpr .cpr-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 56px 20px;
    color: var(--cp-muted);
    text-align: center;
}
.cpr .cpr-empty b { color: var(--cp-text); font-size: 15px; }

/* ---------- подвал режима выбора ---------- */

.cpr .cpr-foot {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 52px;
    padding: 8px var(--cp-pad-x);
    border-top: 1px solid var(--cp-border);
    background: #fafbfc;
}
.cpr .cpr-foot__sel { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--cp-muted); }
.cpr .cpr-foot__sel b { color: var(--cp-text); }
.cpr .cpr-foot__hint { color: var(--cp-faint); white-space: nowrap; }
.cpr .cpr-foot__hint kbd {
    padding: 0 5px;
    border: 1px solid var(--cp-border);
    border-radius: 4px;
    background: #fff;
    color: var(--cp-muted);
    font-family: inherit;
    font-size: 11px;
    font-weight: 600;
    line-height: 16px;
    box-shadow: none;
}

/* ---------- всплывающие меню ---------- */

.cpr .cpr-pop {
    position: absolute;
    z-index: 30;
    min-width: 200px;
    max-height: 360px;
    overflow: auto;
    padding: 4px;
    border: 1px solid var(--cp-border);
    border-radius: 8px;
    background: var(--cp-surface);
    box-shadow: 0 10px 30px rgba(16, 24, 40, .16);
}
.cpr .cpr-pop__title { padding: 6px 10px 4px; color: var(--cp-muted); font-size: var(--cp-font-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.cpr .cpr-pop__item {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-height: 30px;
    padding: 0 10px;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: var(--cp-text);
    text-align: left;
    white-space: nowrap;
}
.cpr .cpr-pop__item:hover { background: var(--cp-hover); }
.cpr .cpr-pop__item:disabled { color: var(--cp-faint); cursor: default; background: transparent; }
.cpr .cpr-pop__item--danger { color: var(--cp-bad); }
.cpr .cpr-pop__item svg { color: var(--cp-muted); }
.cpr .cpr-pop__item--danger svg { color: var(--cp-bad); }
.cpr .cpr-pop__sep { height: 1px; margin: 4px 0; background: var(--cp-border); }
.cpr label.cpr-pop__item { margin: 0; font-weight: 400; cursor: pointer; }
.cpr .cpr-pop__empty { padding: 10px; color: var(--cp-muted); white-space: normal; }
/* дерево групп для выбора: папки с отступами, отмеченная — синим с галочкой */
.cpr .cpr-pop--groups { max-height: min(420px, 70vh); }
.cpr .cpr-gitem svg { color: #9aa7b8; }
.cpr .cpr-gitem > span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.cpr .cpr-gitem.is-on { background: var(--cp-primary-soft); color: var(--cp-primary); font-weight: 600; }
.cpr .cpr-gitem.is-on svg { color: var(--cp-primary); }
.cpr .cpr-gitem:focus-visible { outline-offset: -2px; }
.cpr .cpr-gitem__on { display: inline-flex; margin-left: 12px; font-style: normal; }
.cpr .cpr-gitem:disabled { color: var(--cp-faint); }
.cpr .cpr-gitem:disabled svg { color: var(--cp-faint); }
.cpr label.cpr-pop__item input { width: 15px; height: 15px; margin: 0; }

/* ---------- карточка (боковая панель) ---------- */

.cpr .cpr-card {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 20;
    display: flex;
    flex-direction: column;
    width: min(760px, calc(100% - 48px));
    min-width: 460px;
    border-left: 1px solid var(--cp-border);
    background: var(--cp-surface);
    box-shadow: -12px 0 32px rgba(16, 24, 40, .12);
    animation: cpr-slide .16s ease-out;
}
.cpr .cpr-card.is-wide { width: 100%; min-width: 0; border-left: 0; box-shadow: none; }
.cpr .cpr-card__inner { min-width: 0; }
/* развёрнутая карточка: поля не растягиваются на широкий экран; договоры (старый экран системы) — на всю ширину */
.cpr .cpr-card.is-wide .cpr-card__inner:not(.is-full) { max-width: 1040px; }
@keyframes cpr-slide { from { transform: translateX(24px); opacity: .4; } to { transform: none; opacity: 1; } }

.cpr .cpr-card__head { flex: 0 0 auto; padding: 12px var(--cp-pad-x) 0; border-bottom: 1px solid var(--cp-border); }
.cpr .cpr-card__bar { display: flex; align-items: flex-start; gap: 10px; }
.cpr .cpr-card__ttl { flex: 1 1 auto; min-width: 0; }
.cpr .cpr-card__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 17px; font-weight: 700; }
.cpr .cpr-card__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 4px; color: var(--cp-muted); font-size: var(--cp-font-sm); }
.cpr .cpr-card__acts { display: flex; align-items: center; gap: 4px; }
.cpr .cpr-tabs { display: flex; gap: 2px; margin-top: 10px; }
.cpr .cpr-tabs button {
    position: relative;
    height: 34px;
    padding: 0 10px;
    border: 0;
    background: transparent;
    color: var(--cp-muted);
    font-weight: 500;
    white-space: nowrap;
}
.cpr .cpr-tabs button:hover { color: var(--cp-text); }
.cpr .cpr-tabs button.is-on { color: var(--cp-primary); }
.cpr .cpr-tabs button.is-on::after { content: ""; position: absolute; left: 8px; right: 8px; bottom: -1px; height: 2px; border-radius: 2px; background: var(--cp-primary); }
.cpr .cpr-tabs button:disabled { color: var(--cp-faint); cursor: default; }
.cpr .cpr-tabs .cpr-n { margin-left: 4px; padding: 0 5px; border-radius: 8px; background: var(--cp-neutral-soft); color: var(--cp-muted); font-size: var(--cp-font-xs); }

.cpr .cpr-card__body { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 14px var(--cp-pad-x) 20px; }
.cpr .cpr-card__foot {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px var(--cp-pad-x);
    border-top: 1px solid var(--cp-border);
    background: #fafbfc;
}
.cpr .cpr-card__stamp { flex: 1 1 auto; min-width: 0; color: var(--cp-faint); font-size: var(--cp-font-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cpr .cpr-card__dirty { color: var(--cp-warn); font-weight: 500; }

.cpr .cpr-sec { margin: 0 0 18px; }
.cpr .cpr-sec__t { margin: 0 0 8px; color: var(--cp-muted); font-size: var(--cp-font-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.cpr .cpr-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px 12px; }
.cpr .cpr-f { display: flex; flex-direction: column; gap: 4px; min-width: 0; grid-column: span 6; }
.cpr .cpr-f--3 { grid-column: span 3; }
.cpr .cpr-f--2 { grid-column: span 2; }
.cpr .cpr-f--4 { grid-column: span 4; }
.cpr .cpr-f > label { margin: 0; color: var(--cp-muted); font-size: var(--cp-font-sm); font-weight: 500; }
.cpr .cpr-f > label i { color: var(--cp-bad); font-style: normal; }
.cpr .cpr-f input[type=text],
.cpr .cpr-f select,
.cpr .cpr-f textarea {
    width: 100%;
    height: var(--cp-ctl-h);
    padding: 0 9px;
    border: 1px solid var(--cp-border-strong);
    border-radius: var(--cp-radius);
    outline: 0;
    background: #fff;
    box-shadow: none;
}
.cpr .cpr-gpick {
    display: flex;
    align-items: center;
    gap: 7px;
    width: 100%;
    height: var(--cp-ctl-h);
    padding: 0 8px 0 9px;
    border: 1px solid var(--cp-border-strong);
    border-radius: var(--cp-radius);
    background: #fff;
    color: var(--cp-text);
    text-align: left;
}
.cpr .cpr-gpick:hover { border-color: #b8c0cc; }
.cpr .cpr-gpick:focus, .cpr .cpr-gpick[aria-expanded="true"] { border-color: var(--cp-primary); box-shadow: 0 0 0 3px rgba(23, 103, 214, .12); outline: 0; }
.cpr .cpr-gpick__ico { display: inline-flex; color: #9aa7b8; }
.cpr .cpr-gpick__t { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cpr .cpr-gpick__ph { color: var(--cp-faint); }
.cpr .cpr-gpick__dn { display: inline-flex; color: var(--cp-muted); }
.cpr .cpr-f.is-err .cpr-gpick { border-color: var(--cp-bad); }
.cpr .cpr-f textarea { height: auto; min-height: 60px; padding: 6px 9px; resize: vertical; }
.cpr .cpr-f input:focus,
.cpr .cpr-f select:focus,
.cpr .cpr-f textarea:focus { border-color: var(--cp-primary); box-shadow: 0 0 0 3px rgba(23, 103, 214, .12); }
.cpr .cpr-f.is-err input,
.cpr .cpr-f.is-err select { border-color: var(--cp-bad); }
.cpr .cpr-f__msg { color: var(--cp-muted); font-size: var(--cp-font-sm); }
.cpr .cpr-f__msg--err { color: var(--cp-bad); }
.cpr .cpr-f__msg--warn { color: var(--cp-warn); }
.cpr .cpr-f .cpr-seg { align-self: flex-start; }
.cpr .cpr-toggles { display: flex; gap: 6px; }
.cpr .cpr-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: var(--cp-ctl-h);
    margin: 0;
    padding: 0 10px;
    border: 1px solid var(--cp-border-strong);
    border-radius: var(--cp-radius);
    background: #fff;
    color: var(--cp-neutral);
    font-weight: 500;
    cursor: pointer;
}
.cpr .cpr-toggle input { width: 15px; height: 15px; margin: 0; }
.cpr .cpr-toggle.is-on { border-color: var(--cp-primary); background: var(--cp-primary-soft); color: var(--cp-primary); }

.cpr .cpr-alert {
    display: flex;
    gap: 8px;
    margin: 0 0 14px;
    padding: 9px 11px;
    border-radius: var(--cp-radius);
    background: var(--cp-warn-soft);
    color: #6b4300;
}
.cpr .cpr-alert svg { margin-top: 1px; color: #c27c0e; }
.cpr .cpr-alert--bad { background: var(--cp-bad-soft); color: #7a1a10; }
.cpr .cpr-alert--bad svg { color: var(--cp-bad); }
.cpr .cpr-alert--info { background: var(--cp-primary-soft); color: #18407a; }
.cpr .cpr-alert--info svg { color: var(--cp-primary); }
.cpr .cpr-alert ul { margin: 4px 0 0; padding-left: 16px; list-style: disc; }

.cpr .cpr-list { border: 1px solid var(--cp-border); border-radius: var(--cp-radius); }
.cpr .cpr-list__row { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 6px 12px; border-bottom: 1px solid #eef0f3; }
.cpr .cpr-list__row:last-child { border-bottom: 0; }
.cpr .cpr-list__main { flex: 1 1 auto; min-width: 0; }
.cpr .cpr-list__main div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cpr .cpr-list__sub { color: var(--cp-muted); font-size: var(--cp-font-sm); }
.cpr .cpr-list__num { color: var(--cp-text); font-weight: 600; font-variant-numeric: tabular-nums; }
.cpr .cpr-blank { padding: 22px 12px; border: 1px dashed var(--cp-border-strong); border-radius: var(--cp-radius); color: var(--cp-muted); text-align: center; }

.cpr .cpr-contact { margin: 0 0 10px; border: 1px solid var(--cp-border); border-radius: var(--cp-radius); }
.cpr .cpr-contact > .cpr-grid { padding: 10px 12px 12px; }
/* шапка контакта: номер слева, «Удалить» справа — кнопка с подписью, а не значок в углу поверх полей */
.cpr .cpr-contact__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-height: 34px;
    padding: 0 8px 0 12px;
    border-bottom: 1px solid var(--cp-border);
    border-radius: var(--cp-radius) var(--cp-radius) 0 0;
    background: #fafbfc;
}
.cpr .cpr-contact__t { color: var(--cp-muted); font-size: var(--cp-font-sm); font-weight: 600; }
.cpr .cpr-link--bad {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 26px;
    padding: 0 8px;
    border-radius: 5px;
    color: var(--cp-muted);
    font-size: var(--cp-font-sm);
}
.cpr .cpr-link--bad svg { width: 14px; height: 14px; }
.cpr .cpr-link--bad:hover, .cpr .cpr-link--bad:focus-visible { background: var(--cp-bad-soft); color: var(--cp-bad); text-decoration: none; }

/* вкладка «Договоры» — встроенная форма договоров системы (Bootstrap); наши сбросы ей не мешают */
.cpr .cpr-legacy { margin: -4px calc(-1 * var(--cp-pad-x)) 0; font-size: 13px; line-height: 1.5; }
.cpr .cpr-legacy p { margin: 0 0 1rem; }
.cpr .cpr-legacy ul { margin: 0 0 1rem; padding-left: 40px; list-style: disc; }
.cpr .cpr-legacy svg { display: inline; }

/* ---------- диалог и всплывающие сообщения ---------- */

.cpr .cpr-overlay {
    position: absolute;
    inset: 0;
    z-index: 40;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(16, 24, 40, .28);
}
.cpr .cpr-dlg {
    width: 440px;
    max-width: calc(100% - 32px);
    padding: 18px 20px 16px;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 20px 50px rgba(16, 24, 40, .3);
}
.cpr .cpr-dlg__t { margin: 0 0 8px; font-size: 15px; font-weight: 700; }
.cpr .cpr-dlg__b { color: var(--cp-neutral); line-height: 1.45; }
.cpr .cpr-dlg__b ul { margin: 6px 0 0; padding-left: 18px; list-style: disc; }
.cpr .cpr-dlg__f { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }

.cpr .cpr-toasts { position: absolute; left: 16px; bottom: 16px; z-index: 50; display: flex; flex-direction: column; gap: 6px; pointer-events: none; }
.cpr .cpr-toast {
    padding: 9px 14px;
    border-radius: 8px;
    background: #1f2328;
    color: #fff;
    box-shadow: 0 8px 24px rgba(16, 24, 40, .25);
    animation: cpr-up .16s ease-out;
}
.cpr .cpr-toast--bad { background: var(--cp-bad); }
@keyframes cpr-up { from { transform: translateY(8px); opacity: 0; } to { transform: none; opacity: 1; } }

.cpr .cpr-loading { padding: 40px; color: var(--cp-muted); text-align: center; }

/* окно системы, в которое загружен справочник: большое окно с полями по краям, а не на весь экран —
   вокруг видно затемнение, понятно, что это окно поверх страницы (решение Сергея 03.11.2026).
   Размер один для всех мест, откуда открывают справочник. Чуть меньше окна «Реестр статей» ПЗ (96vw),
   чтобы при открытии поверх него был виден край нижнего окна.
   Только пока справочник внутри (класс ставит и снимает скрипт; :has — подстраховка). */
.modal-dialog.cpr-host-dialog,
.modal-dialog:has(> .modal-content > .modal-body > .cpr-mount > .cpr) {
    width: 92vw !important;
    max-width: 92vw !important;
    height: calc(100vh - 64px) !important;
    margin: 32px auto !important;
}
.modal-dialog.cpr-host-dialog > .modal-content,
.modal-dialog:has(> .modal-content > .modal-body > .cpr-mount > .cpr) > .modal-content {
    display: flex !important;
    flex-direction: column !important;
    height: 100% !important;
    max-height: 100% !important;
    border-radius: 8px !important;
    overflow: hidden !important;
}
.modal-dialog.cpr-host-dialog > .modal-content > .modal-body,
.modal-dialog:has(> .modal-content > .modal-body > .cpr-mount > .cpr) > .modal-content > .modal-body {
    flex: 1 1 auto !important;
    padding: 0 !important;
    min-height: 0 !important;
    /* обычно прокрутки нет: справочник ровно по высоте тела окна; на совсем низком экране — прокрутка, а не обрезка */
    overflow: auto !important;
}
.modal-dialog.cpr-host-dialog > .modal-content > .modal-header,
.modal-dialog.cpr-host-dialog > .modal-content > .modal-footer { flex: 0 0 auto; }
/* у многих окон системы под справочником пустой подвал — пустую полосу не показываем */
.modal-dialog.cpr-host-dialog > .modal-content > .modal-footer:not(:has(*)) { display: none !important; }

/* организации: фильтр, колонка, метка цвета */
.cpr .cpr-orgsel {
    height: var(--cp-ctl-h);
    padding: 0 8px;
    border: 1px solid var(--cp-border-strong);
    border-radius: var(--cp-radius);
    background: var(--cp-surface);
    color: var(--cp-text);
    max-width: 220px;
}
.cpr .cpr-orgsel:disabled { opacity: .7; }
.cpr .cpr-org { display: inline-flex; align-items: center; gap: 6px; }
.cpr .cpr-org__dot { width: 10px; height: 10px; border-radius: 2px; flex: none; }

/* ---------- карточка контрагента окном (режим card): только карточка, без таблицы и групп ---------- */
.cpr[data-mode="card"] .cpr-top,
.cpr[data-mode="card"] .cpr-side,
.cpr[data-mode="card"] .cpr-main { display: none; }
.cpr[data-mode="card"] .cpr-body { display: block; }
.cpr[data-mode="card"] .cpr-card { position: absolute; inset: 0; width: 100%; min-width: 0; border-left: 0; box-shadow: none; animation: none; }
.cpr .cpr-cardwin-miss { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; height: 100%; padding: 24px; color: var(--cp-muted); text-align: center; }
/* окно с одной карточкой уже окна справочника: поля карточки не растягиваются, договоры — таблицей на всю ширину */
.modal-dialog.cpr-host-dialog:has(.cpr[data-mode="card"]) { width: min(1240px, 92vw) !important; max-width: min(1240px, 92vw) !important; }
/* окно карточки (openWindow) без шапки окна системы: одна шапка — у самой карточки; поля — по ширине окна, без пустой полосы справа */
.modal-dialog.cpr-cardwin > .modal-content { border: 0 !important; box-shadow: 0 16px 48px rgba(16, 24, 40, .24) !important; }
.cpr[data-mode="card"] .cpr-card.is-wide .cpr-card__inner:not(.is-full),
.cpr[data-mode="card"] .cpr-card .cpr-card__inner { max-width: none; }
.cpr[data-mode="card"] .cpr-card__head { padding-top: 14px; }

/* ссылка на карточку контрагента (реестр договоров, «Постоянные затраты»): щелчок — окно, ⌘/Ctrl+щелчок — новая вкладка */
a.cpr-cplink { color: #1767d6; text-decoration: underline dotted; text-decoration-thickness: 1px; text-underline-offset: 3px; cursor: pointer; }
a.cpr-cplink:hover, a.cpr-cplink:focus-visible { color: #1257b8; text-decoration-style: solid; }
a.cpr-cpicon { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; margin-left: 4px; border-radius: 5px; color: #667085; vertical-align: middle; text-decoration: none; flex: none; }
a.cpr-cpicon:hover, a.cpr-cpicon:focus-visible { background: #eef2f7; color: #1767d6; text-decoration: none; }
a.cpr-cpicon svg { display: block; }

/* ---------- выпадающие списки и флажки: свои, в одном стиле с выбором группы (кнопка .cpr-gpick) ----------
   Системный вид select/checkbox у каждого браузера свой и не похож на соседние поля.
   Старую форму договоров (.cpr-legacy, Bootstrap) не трогаем. */
.cpr select:not(.cpr-legacy *):not([multiple]) {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 28px !important;
    background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3e%3cpath fill='none' stroke='%235f6b7a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M2.5 4.5 6 8l3.5-3.5'/%3e%3c/svg%3e") no-repeat right 8px center / 12px 12px;
    text-overflow: ellipsis;
    cursor: pointer;
}
.cpr select:not(.cpr-legacy *):not([multiple]):hover { border-color: #b8c0cc; }
.cpr select:not(.cpr-legacy *):not([multiple]):focus { border-color: var(--cp-primary); }
.cpr select:not(.cpr-legacy *):disabled { background-color: var(--cp-bg); color: var(--cp-muted); cursor: not-allowed; opacity: 1; }
.cpr select::-ms-expand { display: none; }

.cpr input[type=checkbox]:not(.cpr-legacy *) {
    -webkit-appearance: none;
    appearance: none;
    position: static;
    top: auto;
    flex: 0 0 auto;
    width: 15px;
    height: 15px;
    margin: 0;
    border: 1px solid #b8c0cc;
    border-radius: 4px;
    background: #fff center / 11px 11px no-repeat;
    vertical-align: middle;
    cursor: pointer;
    transition: background-color .12s, border-color .12s;
}
.cpr input[type=checkbox]:not(.cpr-legacy *):hover { border-color: var(--cp-primary); }
.cpr input[type=checkbox]:not(.cpr-legacy *):checked {
    border-color: var(--cp-primary);
    background-color: var(--cp-primary);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3e%3cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.2l2.3 2.3 4.7-4.9'/%3e%3c/svg%3e");
}
.cpr input[type=checkbox]:not(.cpr-legacy *):focus { outline: none; }
.cpr input[type=checkbox]:not(.cpr-legacy *):focus-visible { box-shadow: 0 0 0 3px rgba(23, 103, 214, .2); }
.cpr input[type=checkbox]:not(.cpr-legacy *):disabled { border-color: var(--cp-border); background-color: var(--cp-bg); cursor: not-allowed; }
.cpr input[type=checkbox]:not(.cpr-legacy *):checked:disabled { border-color: #a9c3ec; background-color: #a9c3ec; }
