/* Офис профсоюза (/registry) — вынесено из templates/registry.html */
    /* ===== КАРКАС ===== */
    #main-content { display: flex; flex-direction: column; height: 100vh; overflow: hidden; }
    header { display: none; }

    /* Светлый фон — лавандовый, как в разделе «Мессенджер» (--chat-bg #f0ecfa). */
    .registry-wrap { display: flex; flex: 1; overflow: hidden; flex-direction: column; background: #f0ecfa; }

    /* ===== ТУЛБАР ===== */
    .reg-toolbar {
        display: flex; align-items: center; gap: 10px;
        padding: 10px 20px; background: #fff;
        border-bottom: 1px solid #ddd; flex-shrink: 0; flex-wrap: wrap;
    }
    .reg-toolbar h1 { font-size: 16px; font-weight: 600; color: var(--bg-darker-purple, #1f1140); margin: 0; margin-right: 10px; }

    /* Вкладки */
    .reg-tabs { display: flex; gap: 2px; }
    .reg-tab {
        padding: 6px 16px; border-radius: 6px 6px 0 0; font-size: 13px; font-weight: 500;
        cursor: pointer; border: 1px solid transparent; background: #f0f0f5; color: #666;
        transition: 0.15s; user-select: none;
    }
    .reg-tab.active { background: #fff; border-color: #ddd #ddd #fff; color: var(--bg-darker-purple, #1f1140); font-weight: 600; }
    .reg-tab:hover:not(.active) { background: #e8e0ff; }

    .toolbar-right { margin-left: auto; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

    .tb-btn {
        padding: 6px 14px; border-radius: 6px; font-size: 13px; font-weight: 500;
        border: none; cursor: pointer; transition: 0.15s; display: flex; align-items: center; gap: 6px;
    }
    .tb-btn-add { background: var(--logo-orange, #f45e28); color: #fff; }
    .tb-btn-add:hover { background: #d44d1a; }
    .tb-btn-export { background: #1d6f42; color: #fff; }
    .tb-btn-export:hover { background: #155232; }
    .tb-btn-secondary { background: #f0f0f5; color: #444; border: 1px solid #ddd; }
    .tb-btn-secondary:hover { background: #e0e0ea; }

    .search-box {
        padding: 6px 12px; border: 1px solid #ddd; border-radius: 6px;
        font-size: 13px; outline: none; width: 200px;
    }
    .search-box:focus { border-color: var(--bg-darker-purple, #2b1b54); }

    /* ===== ОСНОВНАЯ ОБЛАСТЬ ===== */
    .reg-body { display: flex; flex: 1; overflow: hidden; }

    /* ===== ТАБЛИЦА ===== */
    .table-area { flex: 1; min-width: 0; overflow: auto; position: relative; }

    /* На телефоне реестр перестаёт быть «приложением на весь экран» с
       внутренними прокрутками и становится обычной прокручиваемой страницей.
       Иначе цепочка height:100vh + overflow:hidden (#main-content →
       .registry-wrap → .reg-body) обрезала нижнюю часть: карточки участников,
       вкладки, бюджет были недостижимы. На десктопе поведение не меняется. */
    @media (max-width: 768px) {
        #main-content { height: auto; overflow: visible; }
        .registry-wrap { overflow: visible; }
        .reg-body { overflow: visible; }
    }

    table.reg-table {
        border-collapse: collapse; width: 100%; font-size: 13px;
        /* table-layout: auto — колонки автоматически подгоняются под содержимое;
           Excel-style ресайз вручную всё ещё работает через явные inline-width */
        table-layout: auto; background: #fff;
    }

    table.reg-table thead th {
        position: sticky; top: 0; z-index: 10;
        background: #2b1b54; color: #fff; font-weight: 600;
        padding: 10px 8px; text-align: left; white-space: nowrap;
        border-right: 1px solid rgba(255,255,255,0.15);
        user-select: none;
    }
    table.reg-table thead th:first-child { width: 40px; text-align: center; }

    table.reg-table tbody tr { border-bottom: 1px solid #ebebeb; transition: background 0.1s; color: #1a1a1a; }
    table.reg-table tbody tr:hover { background: #f5f0ff !important; }

    /* Единый цвет текста для ВСЕХ ячеек таблицы */
    table.reg-table tbody td {
        padding: 7px 10px; vertical-align: middle;
        color: #1a1a1a !important;   /* !important перебивает любые inline-стили */
        border-right: 1px solid #f0f0f0; white-space: nowrap;
        overflow: hidden; text-overflow: ellipsis;
    }

    /* ===== РЕСАЙЗ СТОЛБЦОВ ===== */
    .col-resizer {
        position: absolute; right: 0; top: 0;
        width: 5px; height: 100%;
        cursor: col-resize; user-select: none; z-index: 3;
        border-right: 2px solid transparent; transition: border-color .15s;
    }
    .col-resizer:hover, .col-resizer.resizing { border-right-color: #f45e28; }

    /* Строка-разделитель подразделения */
    tr.dept-row td {
        background: linear-gradient(90deg, #2b1b54 0%, #3d2472 100%) !important;
        font-weight: 700; font-size: 12px; color: #fff !important;
        text-transform: uppercase; letter-spacing: 1px;
        padding: 6px 14px; border: none;
    }

    /* Чередование строк */
    tbody tr:not(.dept-row):nth-child(even) { background: #f6f3ff; }

    /* Inline editing — рамка ТОЛЬКО при фокусе */
    td[contenteditable="true"] { cursor: text; }
    td[contenteditable="true"]:hover { background: #fafaff !important; }
    td[contenteditable="true"]:focus {
        outline: 2px solid #7c4dff; outline-offset: -2px;
        background: #fff !important; border-radius: 3px;
        overflow: visible; white-space: normal;
        box-shadow: 0 0 0 3px rgba(124,77,255,0.12);
        position: relative; z-index: 5; color: #1a1a1a;
    }

    td.num-cell { text-align: center; color: #888; font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; }

    /* ===== ЕДИНЫЙ СТИЛЬ ЯЧЕЕК ===== */
    /* Все ячейки таблиц реестра — один цвет текста */
    table.reg-table tbody td,
    table.reg-table tbody td * {
        color: #1a1a1a;
        font-size: 13px;
        font-family: 'Rubik', sans-serif;
    }
    table.reg-table tbody td.num-cell { color: #888; font-size: 12px; }
    /* dept-row стилизуется в блоке UNIFIED REGISTRY TABLE STYLES — */
    /* старое правило color: #fff удалено (мешало новой soft-tint заливке) */

    /* ===== РЕСАЙЗ КОЛОНОК (как Excel) ===== */
    /* Оставляем auto (см. выше); ресайз вручную всё равно работает */
    table.reg-table thead th {
        position: relative;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .col-resize-handle {
        position: absolute;
        top: 0;
        right: -3px;
        width: 6px;
        height: 100%;
        cursor: col-resize;
        user-select: none;
        z-index: 10;
        background: transparent;
        transition: background 0.15s;
    }
    .col-resize-handle:hover,
    .col-resize-handle.resizing {
        background: rgba(244, 94, 40, 0.6);
    }
    /* Когда идёт ресайз — отключаем выделение текста на всей странице */
    body.col-resizing,
    body.col-resizing * {
        cursor: col-resize !important;
        user-select: none !important;
    }

    /* Кнопка редактирования */
    .edit-btn {
        background: none; border: 1px solid #ddd; border-radius: 5px;
        cursor: pointer; color: #7c4dff; font-size: 14px; padding: 2px 5px;
        transition: all .15s; line-height: 1;
    }
    .edit-btn:hover { background: #f0ebff; border-color: #7c4dff; transform: scale(1.1); }

    /* Модалка редактирования */
    .reg-modal h2 { margin: 0 0 20px; font-size: 17px; color: #2b1b54; }
    .reg-modal .modal-section-title {
        font-size: 11px; font-weight: 700; color: #999; text-transform: uppercase;
        letter-spacing: .6px; margin: 16px 0 8px; padding-bottom: 4px;
        border-bottom: 1px solid #eee;
    }
    .modal-danger-zone { margin-top: 20px; padding-top: 16px; border-top: 1px solid #ffe0e0; }
    .btn-delete-member {
        background: none; border: 1.5px solid #e74c3c; color: #e74c3c;
        padding: 9px 18px; border-radius: 8px; cursor: pointer; font-size: 13px;
        font-weight: 600; transition: all .15s;
    }
    .btn-delete-member:hover { background: #ffe8e8; }

    .del-btn {
        background: none; border: none; cursor: pointer; color: #c0392b;
        font-size: 16px; padding: 2px 6px; border-radius: 4px; transition: 0.15s;
        /* БЫЛО display:none + показ только на :hover строки — кнопку «не находили»
           (особенно на вкладке «Расходы»). Теперь всегда видна, но приглушена,
           а при наведении — акцент. */
        display: inline-block; opacity: 0.5;
    }
    tr:hover .del-btn { opacity: 1; }
    .del-btn:hover { color: #e74c3c; background: #fde8e8; opacity: 1; }

    /* Роль badge */
    .role-badge {
        display: inline-block; padding: 2px 8px; border-radius: 10px;
        font-size: 11px; font-weight: 600; white-space: nowrap;
    }
    .role-member { background: #e8f5e9; color: #2e7d32; }
    .role-chair { background: #fff3e0; color: #e65100; }
    .role-committee { background: #e3f2fd; color: #1565c0; }
    .role-audit { background: #fce4ec; color: #c62828; }
    .role-admin { background: #f3e5f5; color: #6a1b9a; }

    /* ===== СЧЁТЧИК (правая панель) ===== */
    .counter-panel {
        width: 200px; flex-shrink: 0; background: #fff;
        border-left: 1px solid #e0e0e0; overflow-y: auto; padding: 15px 12px;
    }
    .counter-panel { position: relative; transition: width .2s ease, padding .2s ease; }
    .counter-collapse-btn {
        position: absolute; top: 12px; right: 10px; z-index: 2;
        width: 22px; height: 22px; padding: 0; border-radius: 5px;
        border: 1px solid #ddd; background: #f3f3f7; color: #666;
        cursor: pointer; font-size: 13px; line-height: 1;
        display: flex; align-items: center; justify-content: center;
        transition: background .15s, right .2s ease;
    }
    .counter-collapse-btn:hover { background: #e6e6ee; color: #333; }
    .counter-panel.collapsed { width: 30px; padding-left: 4px; padding-right: 4px; overflow: hidden; }
    .counter-panel.collapsed .counter-content { display: none; }
    .counter-panel.collapsed .counter-collapse-btn { right: 50%; transform: translateX(50%); }
    .counter-panel h3 { font-size: 13px; color: #555; text-transform: uppercase; letter-spacing: 0.5px; margin: 0 0 10px; padding-right: 26px; }
    .counter-total { font-size: 22px; font-weight: 700; color: #2b1b54; margin-bottom: 14px; }
    .counter-item { display: flex; justify-content: space-between; align-items: center; padding: 5px 0; border-bottom: 1px solid #f5f5f5; font-size: 13px; }
    .counter-item .c-label { color: #555; }
    .counter-item .c-val { font-weight: 700; color: #2b1b54; }
    .counter-section { margin-top: 14px; }
    .counter-section-title { font-size: 11px; color: #666; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 6px; }

    /* ===== ТОСТЫ ===== */
    #reg-toast { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%); background: #333; color: #fff; padding: 10px 20px; border-radius: 8px; font-size: 14px; z-index: 9999; display: none; }
    #reg-toast.show { display: block; animation: toastIn 0.3s ease; }
    @keyframes toastIn { from { opacity:0; transform: translateX(-50%) translateY(10px); } to { opacity:1; transform: translateX(-50%) translateY(0); } }

    /* ===== МОДАЛКА ДОБАВЛЕНИЯ ===== */
    .reg-modal-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 9000; justify-content: center; align-items: center; }
    .reg-modal-overlay.open { display: flex; }
    .reg-modal { background: #fff; border-radius: 12px; padding: 28px; width: 480px; max-width: 95vw; max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 50px rgba(0,0,0,0.3); }
    .reg-modal h2 { margin: 0 0 20px; font-size: 18px; color: #2b1b54; }
    .reg-field { margin-bottom: 14px; }
    .reg-field label { display: block; font-size: 12px; font-weight: 600; color: #666; margin-bottom: 5px; }
    .reg-field input, .reg-field select { width: 100%; padding: 9px 12px; border: 1px solid #ddd; border-radius: 7px; font-size: 14px; outline: none; box-sizing: border-box; }
    .reg-field input:focus, .reg-field select:focus { border-color: #7c4dff; }
    /* Умное поле даты: маска-ввод дд.мм.гггг + кнопка-календарь справа */
    .smart-date { position: relative; }
    .sd-cal { position: absolute; right: 1px; top: 1px; bottom: 1px; width: 34px; display: flex; align-items: center; justify-content: center; background: none; border: none; cursor: pointer; color: #7a6e99; border-radius: 7px; padding: 0; }
    .sd-cal:hover { color: #7c4dff; background: rgba(124, 77, 255, 0.08); }
    .registry-wrap.theme-dark .sd-cal { color: var(--d-ink-dim, #9a8fc0); }
    .registry-wrap.theme-dark .sd-cal:hover { color: #b9a6ff; background: rgba(255, 255, 255, 0.06); }
    .reg-field-row { display: flex; gap: 12px; }
    .reg-field-row .reg-field { flex: 1; }
    .reg-modal-btns { display: flex; gap: 10px; justify-content: flex-end; margin-top: 20px; }
    .reg-modal-btns button { padding: 9px 20px; border-radius: 7px; font-size: 14px; font-weight: 600; border: none; cursor: pointer; }
    .reg-modal-btns .btn-cancel { background: #f0f0f5; color: #555; }
    .reg-modal-btns .btn-save { background: var(--logo-orange, #f45e28); color: #fff; }

    /* ═══ Модалка редактирования члена — стиль мессенджера ═══ */
    #edit-member-modal {
        --em-blue: #5c3fa3;
        --em-accent: #f45e28;
        --em-gray-bg: #f5f3fb;
        --em-text: #1a1a1a;
        --em-muted: #7a6e99;
        --em-border: #d8d0ef;
        --em-card: #fff;
        --em-card-border: rgba(92, 63, 163, 0.18);
        --em-shadow: rgba(31, 17, 64, 0.12);
        --em-heading: #2b1b54;
        --em-soft: #f7f5fc;
        --em-danger: #c0392b;
        padding: 20px;
        background: rgba(31, 17, 64, 0.42);
        backdrop-filter: blur(6px);
        -webkit-backdrop-filter: blur(6px);
        align-items: center;
        justify-content: center;
    }
    #edit-member-modal.theme-dark {
        --em-gray-bg: #241a3d;
        --em-text: #ece8f7;
        --em-muted: #9a8fc0;
        --em-border: rgba(255, 255, 255, 0.12);
        --em-card: #19112f;
        --em-card-border: rgba(255, 255, 255, 0.09);
        --em-shadow: rgba(0, 0, 0, 0.45);
        --em-heading: #f0ecfa;
        --em-soft: #241a3d;
        --em-danger: #f0a8a8;
        background: rgba(0, 0, 0, 0.55);
    }
    #edit-member-modal .em-modal {
        width: min(560px, 100%);
        max-height: min(90vh, 880px);
        padding: 0;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        background: var(--em-card);
        color: var(--em-text);
        border: 1px solid var(--em-card-border);
        border-radius: 16px;
        box-shadow: 0 18px 48px var(--em-shadow);
    }
    #edit-member-modal .em-modal-head {
        display: flex;
        align-items: center;
        gap: 12px;
        padding: 16px 18px 14px;
        border-bottom: 1px solid var(--em-border);
        flex-shrink: 0;
    }
    #edit-member-modal .em-modal-head-ico {
        width: 36px; height: 36px; border-radius: 12px;
        display: flex; align-items: center; justify-content: center;
        background: var(--em-soft);
        color: var(--em-heading);
        flex-shrink: 0;
    }
    #edit-member-modal .em-modal-head-ico .icon { width: 18px; height: 18px; }
    #edit-member-modal .em-modal-title {
        flex: 1; min-width: 0;
        margin: 0;
        font-size: 17px;
        font-weight: 700;
        color: var(--em-heading);
        line-height: 1.25;
        word-break: break-word;
    }
    #edit-member-modal .em-modal-close {
        width: 36px; height: 36px; border: none; border-radius: 10px;
        background: transparent; color: var(--em-muted);
        font-size: 20px; line-height: 1; cursor: pointer;
        flex-shrink: 0;
    }
    #edit-member-modal .em-modal-close:hover {
        background: var(--em-gray-bg);
        color: var(--em-heading);
    }
    #edit-member-modal .em-modal-body {
        padding: 8px 18px 6px;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        flex: 1;
        min-height: 0;
    }
    #edit-member-modal .modal-section-title {
        font-size: 12px;
        font-weight: 700;
        color: var(--em-muted);
        text-transform: uppercase;
        letter-spacing: 0.06em;
        margin: 16px 0 10px;
        padding: 0;
        border: none;
    }
    #edit-member-modal .modal-section-title:first-child { margin-top: 8px; }
    #edit-member-modal .reg-field { margin-bottom: 12px; }
    #edit-member-modal .reg-field label {
        color: var(--em-muted);
        font-size: 12px;
        font-weight: 600;
        margin-bottom: 6px;
    }
    #edit-member-modal .reg-field input,
    #edit-member-modal .reg-field select {
        width: 100%;
        box-sizing: border-box;
        padding: 10px 12px;
        border: 1px solid var(--em-border);
        border-radius: 10px;
        font-size: 14px;
        outline: none;
        background: var(--em-gray-bg);
        color: var(--em-text);
        font-family: inherit;
    }
    #edit-member-modal .reg-field input:focus,
    #edit-member-modal .reg-field select:focus {
        border-color: var(--em-blue);
        box-shadow: 0 0 0 3px rgba(92, 63, 163, 0.15);
    }
    #edit-member-modal .sd-cal { color: var(--em-muted); border-radius: 10px; }
    #edit-member-modal .sd-cal:hover {
        color: var(--em-blue);
        background: rgba(92, 63, 163, 0.1);
    }
    #edit-member-modal .role-modal-perms {
        margin-top: 10px;
        width: 100%;
        padding: 10px 12px;
        border-radius: 10px;
        border: 1px solid var(--em-border);
        background: var(--em-soft);
        color: var(--em-heading);
        font-size: 13px;
        font-weight: 600;
        cursor: pointer;
        text-align: left;
    }
    #edit-member-modal .role-modal-perms:hover { filter: brightness(0.98); }
    #edit-member-modal #em-perms-hint { color: var(--em-muted) !important; }
    #edit-member-modal #em-docs-section > label {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
        color: var(--em-heading);
        font-size: 13px;
        font-weight: 700;
        margin-bottom: 4px;
    }
    #edit-member-modal #em-docs-section > label small {
        color: var(--em-muted) !important;
        font-weight: 400;
    }
    #edit-member-modal #em-docs-uploader {
        margin-top: 12px;
        padding: 12px;
        background: var(--em-soft);
        border: 1px solid var(--em-border);
        border-radius: 12px;
        display: flex;
        flex-direction: column;
        gap: 10px;
    }
    #edit-member-modal .em-uploader-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
    }
    #edit-member-modal .em-control,
    #edit-member-modal #em-docs-uploader .em-control,
    #edit-member-modal #em-doc-type,
    #edit-member-modal #em-doc-desc {
        width: 100%;
        box-sizing: border-box;
        min-height: 42px;
        padding: 10px 12px;
        border: 1px solid var(--em-border);
        border-radius: 10px;
        font-size: 14px;
        line-height: 1.3;
        outline: none;
        background: var(--em-card);
        color: var(--em-text);
        font-family: inherit;
    }
    #edit-member-modal #em-doc-type {
        appearance: none;
        -webkit-appearance: none;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%237a6e99' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 12px center;
        padding-right: 32px;
        cursor: pointer;
    }
    #edit-member-modal .em-file-picker {
        position: relative;
        min-width: 0;
    }
    #edit-member-modal .em-file-input {
        position: absolute;
        inset: 0;
        opacity: 0;
        width: 100%;
        height: 100%;
        cursor: pointer;
        z-index: 2;
    }
    #edit-member-modal .em-file-btn {
        display: flex;
        align-items: center;
        gap: 8px;
        width: 100%;
        text-align: left;
        cursor: pointer;
        color: var(--em-muted);
        overflow: hidden;
    }
    #edit-member-modal .em-file-btn.has-file {
        color: var(--em-heading);
        font-weight: 600;
    }
    #edit-member-modal #em-doc-file-label {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        min-width: 0;
    }
    #edit-member-modal #em-doc-type:focus,
    #edit-member-modal #em-doc-desc:focus,
    #edit-member-modal .em-file-picker:focus-within .em-file-btn {
        border-color: var(--em-blue);
        box-shadow: 0 0 0 3px rgba(92, 63, 163, 0.15);
    }
    #edit-member-modal .em-docs-empty {
        color: var(--em-muted);
        font-size: 13px;
        padding: 8px 0;
        font-style: italic;
    }
    #edit-member-modal .em-doc-row {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 10px 12px;
        background: var(--em-card);
        border: 1px solid var(--em-border);
        border-radius: 10px;
        margin-bottom: 6px;
    }
    #edit-member-modal .em-doc-row-title {
        font-size: 13px;
        font-weight: 600;
        color: var(--em-heading);
    }
    #edit-member-modal .em-doc-row-meta {
        font-size: 12px;
        color: var(--em-muted);
        word-break: break-all;
    }
    #edit-member-modal .em-doc-dl {
        display: inline-flex;
        align-items: center;
        gap: 5px;
        padding: 6px 10px;
        background: rgba(46, 204, 113, 0.12);
        color: #1a7a3a;
        text-decoration: none;
        border: 1px solid #b6e6c9;
        border-radius: 8px;
        font-size: 12px;
        font-weight: 600;
        white-space: nowrap;
    }
    #edit-member-modal.theme-dark .em-doc-dl {
        background: rgba(46, 204, 113, 0.16);
        color: #8fe3ad;
        border-color: rgba(46, 204, 113, 0.35);
    }
    #edit-member-modal .em-doc-dl-locked {
        display: inline-flex;
        align-items: center;
        padding: 6px 10px;
        background: transparent;
        color: var(--em-muted);
        border: 1px dashed var(--em-line, #ddd);
        border-radius: 8px;
        font-size: 12px;
        font-weight: 500;
        white-space: nowrap;
        cursor: default;
        user-select: none;
    }
    #edit-member-modal.em-readonly .reg-field input:disabled,
    #edit-member-modal.em-readonly .reg-field select:disabled {
        opacity: 1;
        cursor: default;
        background: var(--em-gray-bg);
        color: var(--em-ink);
    }
    #edit-member-modal.em-readonly .sd-cal { display: none; }
    #edit-member-modal .em-doc-del {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 6px 8px;
        background: rgba(231, 76, 60, 0.12);
        color: var(--em-danger);
        border: 1px solid rgba(231, 76, 60, 0.35);
        border-radius: 8px;
        font-size: 12px;
        cursor: pointer;
    }
    #edit-member-modal .em-upload-btn {
        width: 100%;
        min-height: 42px;
        padding: 10px 16px;
        font-size: 14px;
        font-weight: 600;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 6px;
        border-radius: 10px;
        border: 1px solid var(--em-border);
        background: var(--em-card);
        color: var(--em-heading);
        cursor: pointer;
        font-family: inherit;
    }
    #edit-member-modal .em-upload-btn:hover {
        border-color: var(--em-blue);
        background: rgba(92, 63, 163, 0.06);
    }
    @media (max-width: 560px) {
        #edit-member-modal .em-uploader-grid { grid-template-columns: 1fr; }
    }
    #edit-member-modal .modal-danger-zone {
        margin: 18px 0 8px;
        padding: 8px 0 0;
        border-top: 1px solid var(--em-border);
        display: flex;
        flex-direction: column;
        gap: 2px;
    }
    #edit-member-modal .em-danger-btn {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        padding: 12px 10px;
        border: none;
        border-radius: 10px;
        background: transparent;
        color: var(--em-danger);
        font-size: 14px;
        font-weight: 500;
        cursor: pointer;
        text-align: left;
        font-family: inherit;
    }
    #edit-member-modal .em-danger-btn:hover { background: rgba(192, 57, 43, 0.08); }
    #edit-member-modal .em-danger-btn .icon { width: 15px; height: 15px; flex-shrink: 0; }
    #edit-member-modal .em-modal-foot {
        display: flex;
        border-top: 1px solid var(--em-border);
        flex-shrink: 0;
        margin-top: 0;
    }
    #edit-member-modal .em-modal-foot .em-btn {
        flex: 1;
        padding: 15px;
        border: none;
        background: transparent;
        font-size: 16px;
        cursor: pointer;
        text-align: center;
        font-family: inherit;
    }
    #edit-member-modal .em-modal-foot .em-btn-cancel {
        border-right: 1px solid var(--em-border);
        color: var(--em-text);
        font-weight: 400;
    }
    #edit-member-modal .em-modal-foot .em-btn-cancel:hover { background: var(--em-gray-bg); }
    #edit-member-modal .em-modal-foot .em-btn-save {
        color: var(--em-accent);
        font-weight: 700;
    }
    #edit-member-modal .em-modal-foot .em-btn-save:hover { background: rgba(244, 94, 40, 0.08); }
    @media (max-width: 560px) {
        #edit-member-modal { padding: 0; align-items: stretch; }
        #edit-member-modal .em-modal {
            width: 100%;
            max-height: 100%;
            height: 100%;
            border-radius: 0;
            border: none;
        }
        #edit-member-modal .reg-field-row { flex-direction: column; gap: 0; }
    }

    /* ===== АДАПТИВНОСТЬ ===== */
    @media (max-width: 768px) {
        header { display: flex !important; }
        .counter-panel { display: none; }
        .search-box { width: 140px; }
        /* Узкий экран: убираем «залипание» (sticky) заголовков таблицы и групп.
           На мобильном (особенно Samsung Internet с динамической адресной строкой)
           они заезжают под шапку с бургером и обрезаются (заголовок «АЭ №1»). */
        table.reg-table thead th,
        table.reg-table tr.dept-row td,
        table.reg-table tr.dept-row-matrix td,
        .fees-matrix th,
        .fees-matrix.is-month td.col-name,
        .fees-matrix.is-month th.col-name { position: static !important; }
    }

    /* ===== ЕДИНЫЙ SECONDARY TOOLBAR (как filter-bar у Реестра) ===== */
    .tab-toolbar,
    .filter-bar,
    .fees-toolbar,
    .budget-toolbar,
    .staff-toolbar,
    .app-history-toolbar {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 8px 14px;
        flex-wrap: wrap;
        background: #f8f6ff;
        border-bottom: 1px solid #ebebeb;
    }
    .tab-toolbar-title {
        font-size: 14px;
        font-weight: 700;
        color: #2b1b54;
        margin: 0;
        white-space: nowrap;
    }
    .tab-pane-pad { padding: 14px 16px; overflow-x: auto; }
    /* Расход — тот же оранжевый CTA, чуть приглушённый красным оттенком */
    .tb-btn-expense { background: #c0392b; }
    .tb-btn-expense:hover { background: #a93226; }
    /* Совместимость со старыми классами кнопок бюджета/ФОТ */
    .budget-add-btn {
        display: inline-flex; align-items: center; gap: 6px;
        padding: 6px 14px; border-radius: 6px; border: none;
        font-size: 13px; font-weight: 500; color: #fff; cursor: pointer;
        background: var(--logo-orange, #f45e28); transition: background .15s;
    }
    .budget-add-btn:hover { background: #d44d1a; }
    .budget-add-income { background: var(--logo-orange, #f45e28); }
    .budget-add-expense { background: #c0392b; }
    .budget-add-expense:hover { background: #a93226; }
    .staff-add-btn {
        display: inline-flex; align-items: center; gap: 6px;
        padding: 6px 14px; border-radius: 6px; border: none;
        font-size: 13px; font-weight: 500; color: #fff; cursor: pointer;
        background: var(--logo-orange, #f45e28); transition: background .15s;
    }
    .staff-add-btn:hover { background: #d44d1a; filter: none; }

    /* ===== ФИЛЬТРЫ ===== */
    .filter-bar label { font-size: 11px; color: #999; font-weight: 600;
                        text-transform: uppercase; letter-spacing: .4px; white-space: nowrap; }
    .filter-select, .filter-input {
        padding: 5px 10px; border: 1px solid #ddd; border-radius: 6px;
        font-size: 13px; color: #1a1a1a; background: #fff;
        outline: none; cursor: pointer;
    }
    .filter-select:focus, .filter-input:focus { border-color: #7c4dff; }
    .filter-input { min-width: 180px; }
    .filter-clear { padding: 5px 10px; border: 1px solid #ddd; border-radius: 6px;
                    background: #fff; color: #e74c3c; font-size: 12px; font-weight: 600;
                    cursor: pointer; }
    .filter-clear:hover { background: #fff0f0; }
    .filter-archive {
        padding: 5px 10px; border: 1px solid #f45e28; border-radius: 6px;
        background: #fff; color: #f45e28; font-size: 12px; font-weight: 600;
        cursor: pointer; transition: background .15s, color .15s;
    }
    .filter-archive:hover { background: #fff4ef; }
    .filter-count { margin-left: auto; font-size: 12px; color: #999; white-space: nowrap; }

    /* ===== СОРТИРОВКА ===== */
    thead th.sortable { cursor: pointer; user-select: none; }
    thead th.sortable:hover { background: #3d2472; }
    thead th.sort-asc::after  { content: " ↑"; opacity: .8; }
    thead th.sort-desc::after { content: " ↓"; opacity: .8; }

    /* ===== КНОПКА РЕДАКТИРОВАНИЯ ВЗНОСА ===== */
    .fee-edit-btn {
        background: none; border: 1px solid #ddd; border-radius: 4px;
        cursor: pointer; color: #7c4dff; font-size: 12px; padding: 1px 5px;
        transition: all .15s;
    }
    .fee-edit-btn:hover { background: #f0ebff; border-color: #7c4dff; }
    .year-btns { display:flex; gap:4px; }
    .year-btn { padding:4px 14px; border-radius:6px; border:1.5px solid #ddd; background:#fff; color:#555; font-size:13px; font-weight:600; cursor:pointer; transition:all .15s; }
    .year-btn.active { background:#2b1b54; color:#fff; border-color:#2b1b54; }
    .view-toggle { display:flex; gap:0; border:1.5px solid #ddd; border-radius:7px; overflow:hidden; margin-left:auto; }
    .view-btn { padding:5px 14px; background:#fff; color:#777; font-size:12px; font-weight:600; cursor:pointer; transition:all .15s; border:none; }
    .view-btn.active { background:#2b1b54; color:#fff; }

    /* Матрица */
    .fees-matrix-wrap { overflow-x:auto; }
    .fees-matrix { width:100%; border-collapse:collapse; font-size:13px; }
    .fees-matrix th {
        background:#2b1b54; color:#fff; padding:8px 10px; text-align:center;
        font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px;
        white-space:nowrap; position:sticky; top:0; z-index:5;
    }
    .fees-matrix th.col-name { text-align:left; min-width:200px; }
    .fees-matrix th.col-pos  { min-width:60px; }
    .fees-matrix td { padding:6px 10px; border-bottom:1px solid #f0f0f0; color:#1a1a1a; vertical-align:middle; }
    .fees-matrix td.col-name { white-space:nowrap; font-weight:500; }
    .fees-matrix td.col-pos  { text-align:center; color:#888; font-size:11px; }
    .fees-matrix td.col-total { font-weight:700; color:#2b1b54; text-align:right; background:#f8f6ff; }
    .fees-matrix td.col-num  { color:#aaa; font-size:11px; text-align:center; }

    /* Ячейки кварталов */
    .fee-cell { text-align:right; min-width:100px; cursor:pointer; transition:background .1s; }
    .fee-cell:hover { background:#ede9ff; }
    .fee-cell.paid { background:#f0fff4; }
    .fee-cell.paid .fee-amount { color:#1a7a3a; font-weight:600; }
    .fee-cell.unpaid .fee-amount { color:#ccc; }

    /* Помесячный вид (12 столбцов): таблица шире контейнера → горизонтальный скролл.
       Узкие ячейки месяцев, чтобы влезало больше столбцов без переноса. */
    .fees-matrix.is-month { width:auto; min-width:100%; }
    .fees-matrix.is-month th, .fees-matrix.is-month td { white-space:nowrap; }
    .fees-matrix.is-month .fee-cell { min-width:64px; padding:6px 8px; }
    .fees-matrix.is-month td.col-name, .fees-matrix.is-month th.col-name {
        position:sticky; left:0; z-index:4; background:#fff;
    }
    .fees-matrix.is-month th.col-name { background:#2b1b54; z-index:6; }

    /* Строки-разделители подразделений */
    tr.dept-row-matrix td {
        background:linear-gradient(90deg,#2b1b54,#3d2472) !important;
        color:#fff; font-weight:700; font-size:11px; text-transform:uppercase;
        letter-spacing:1px; padding:5px 12px; border:none;
    }
    /* Итоговые строки */
    tr.subtotal-row td { background:#f0f0ff; font-weight:700; color:#2b1b54; border-top:2px solid #c0b0f0; }
    tr.subtotal-row td.subtotal-label { color:#555; font-size:12px; text-transform:uppercase; }
    tr.grand-total-row td { background:#2b1b54 !important; color:#fff !important; font-weight:700; }

    /* Прогресс-бар */
    .fees-summary { display:flex; gap:16px; padding:12px 16px; background:#fff; border-bottom:1px solid #ebebeb; flex-wrap:wrap; }
    .fees-stat { display:flex; flex-direction:column; }
    .fees-stat .val { font-size:20px; font-weight:700; color:#2b1b54; }
    .fees-stat .lbl { font-size:11px; color:#999; text-transform:uppercase; letter-spacing:.4px; }
    /* Заголовок сводки: год, к которому относятся числа (отделён линией). */
    .fees-caption { padding-right:16px; margin-right:4px; border-right:2px solid #e7e4f0; }
    .fees-caption .val { color:#7c4dff; }
    .fees-caption .lbl { color:#7a6ba8; font-weight:600; }
    .fees-progress { flex:1; min-width:200px; display:flex; flex-direction:column; gap:5px; justify-content:center; }
    .progress-track { height:8px; background:#eee; border-radius:4px; overflow:hidden; }
    .progress-fill { height:100%; background:linear-gradient(90deg,#4ade80,#22c55e); border-radius:4px; transition:width .5s; }
    .progress-lbl { font-size:11px; color:#777; }

    /* ===== БЮДЖЕТ ===== */
    /* Секционные заголовки в бюджете (ДОХОДЫ / РАСХОДЫ / БАЛАНС) */
    .budget-section-header td {
        font-weight: 800; font-size: 13px; letter-spacing: 1.5px;
        text-transform: uppercase; padding: 9px 14px; border: none;
        text-align: center !important; color: #1a4d2e;
    }
    .budget-section-header.section-income td  { background: #b5e7c5 !important; color: #1a4d2e !important; }
    .budget-section-header.section-expense td { background: #f5b8b8 !important; color: #6b1c1c !important; }
    .budget-section-header.section-balance td { background: #f0d97a !important; color: #5d4310 !important; }

    .budget-table { width: 100%; border-collapse: collapse; font-size: 13px; background: #fff; font-variant-numeric: tabular-nums lining-nums; }
    .budget-table th {
        position: sticky; top: 0; z-index: 5;
        background: #2b1b54; color: #fff; padding: 9px 14px;
        text-align: right; font-size: 12px; font-weight: 600;
        letter-spacing: .3px; white-space: nowrap;
        border-bottom: 1px solid #1a1a1a;
    }
    .budget-table th:first-child { text-align: left; min-width: 260px; }
    .budget-table td { padding: 7px 14px; border-bottom: 1px solid #f0f0f0; color: #1a1a1a; text-align: right; }
    .budget-table td:first-child { text-align: left; font-weight: 500; color: #1a1a1a; }
    .budget-table tbody tr:not(.budget-section-header):not(.budget-group-header):not(.budget-total-row):not(.budget-balance-row):nth-child(even) td {
        background: #fafafa;
    }
    .budget-table tbody tr:not(.budget-section-header):not(.budget-group-header):hover td {
        background: #f4efff;
    }
    .budget-table td[contenteditable="true"] {
        cursor: text;
        background: rgba(124, 77, 255, 0.04);
        transition: background .15s;
    }
    .budget-table td[contenteditable="true"]:hover { background: #f6f3ff; }
    .budget-table td[contenteditable="true"]:focus {
        background: #fff !important; outline: 2px solid #7c4dff;
    }
    /* Подкладка строк секций */
    tr.row-income td  { background: rgba(181, 231, 197, 0.18); }
    tr.row-expense td { background: rgba(245, 184, 184, 0.18); }
    .budget-total-row td { background: #e6e2f3 !important; font-weight: 700; color: #2b1b54 !important; border-top: 2px solid #c0b0f0; }
    .budget-balance-row td { background: rgba(240, 217, 122, 0.55) !important; font-weight: 700; color: #5d4310 !important; }

    /* Двухколоночная разбивка бюджета:
       слева — основная таблица (доходы/расходы/баланс),
       справа — квартальная аналитика и прогнозы. */
    .budget-grid {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 20px;
        align-items: stretch;        /* колонки тянутся по высоте — задача 4 */
    }
    /* Каждая колонка получает свой overflow-контекст, чтобы
       широкие таблицы внутри не «наезжали» на соседнюю. */
    .budget-col-left, .budget-col-right {
        min-width: 0;
        overflow-x: auto;
        display: flex; flex-direction: column;
    }
    .budget-col-left .budget-table,
    .budget-col-right .quarterly-table,
    .budget-col-right .forecast-table {
        min-width: 0;
        width: 100%;
    }
    /* Высота правой колонки = высоте левой (задача 4):
       таблицы и section-title равномерно распределяются по правой колонке. */
    .budget-col-right > .section-title:first-child { margin-top: 0; }
    .budget-col-right .quarterly-table,
    .budget-col-right .forecast-table { margin-top: 0 !important; flex: 0 0 auto; }
    .budget-col-right .section-title { flex: 0 0 auto; }
    .budget-col-right { gap: 14px; }
    .budget-col-right .quarterly-table { margin-bottom: 0; }

    @media (max-width: 1100px) {
        .budget-grid { grid-template-columns: 1fr; }
    }

    /* Кнопка «+ статья» под итогами секции */
    .budget-add-item-btn {
        background: none; border: 1px dashed #bbb; color: #555;
        padding: 6px 14px; border-radius: 6px; font-size: 12px;
        cursor: pointer; transition: 0.15s; font-weight: 600;
    }
    .budget-add-item-btn:hover { background: #f5f0ff; border-color: #7c4dff; color: #2b1b54; }

    /* Авто-рассчитываемые строки (например, «Отчисления 15%») */
    .budget-table tr.row-auto td { background: rgba(124, 77, 255, 0.08) !important; }
    .budget-table tr.row-auto td:first-child { font-style: italic; color: #5e35b1; }
    .budget-auto-cell {
        color: #5e35b1; font-weight: 600; cursor: not-allowed;
        background: rgba(124, 77, 255, 0.05);
    }

    /* Разовые (нерегулярные) статьи */
    .budget-table tr.row-one-time td:first-child { color: #b35a1d; }
    .budget-onetime-badge {
        display: inline-block; margin-left: 6px;
        padding: 1px 8px; border-radius: 8px;
        background: rgba(244, 94, 40, 0.12);
        color: #b35a1d; font-size: 11px; font-weight: 600;
        vertical-align: middle;
    }

    /* Кнопка ✕ удаления статьи (правый столбец) */
    .budget-del-item-btn {
        background: rgba(231, 76, 60, 0.08); color: #c0392b; border: none;
        width: 26px; height: 26px; border-radius: 5px; cursor: pointer;
        font-size: 13px; opacity: 0; transition: opacity .15s, background .15s;
    }
    .budget-table tr:hover .budget-del-item-btn { opacity: 1; }
    .budget-del-item-btn:hover { background: rgba(231, 76, 60, 0.18); }

    /* ── Drag-handle для изменения порядка строк бюджета ── */
    .budget-drag-handle {
        display: inline-block; width: 18px;
        color: #aaa; cursor: grab; user-select: none;
        font-size: 16px; line-height: 1; vertical-align: middle;
        margin-right: 6px; opacity: 0; transition: opacity .15s, color .15s;
    }
    .budget-table tr.budget-item-row:hover .budget-drag-handle { opacity: 1; }
    .budget-drag-handle:hover { color: #555; }
    .budget-drag-handle:active { cursor: grabbing; }
    tr.budget-item-row.dragging { opacity: 0.45; }
    tr.budget-item-row.drop-above td { box-shadow: 0 -2px 0 var(--logo-orange) inset; }
    tr.budget-item-row.drop-below td { box-shadow: 0 2px 0 var(--logo-orange) inset; }

    /* ─── ЗАГОЛОВОК ГРУППЫ статей бюджета ─── */
    /* Сдержанный дизайн: лёгкий серо-фиолетовый бейдж вместо яркой рамки. */
    tr.budget-group-header td {
        background: #f0eef7 !important;
        color: #3d2f6b;
        font-weight: 600; font-size: 12px;
        padding: 6px 14px !important;
        letter-spacing: 0.2px;
        text-transform: uppercase;
        border-top: 1px solid #d8d2ec !important;
        border-bottom: 1px solid #d8d2ec !important;
        border-left: 2px solid #6b56a5 !important;
        user-select: none;
        cursor: grab;
    }
    tr.budget-group-header.dragging td { cursor: grabbing; opacity: 0.5; }
    tr.budget-group-header.drop-above td { box-shadow: 0 -2px 0 #6b56a5 inset; }
    tr.budget-group-header.drop-below td { box-shadow: 0 2px 0 #6b56a5 inset; }

    .budget-group-toggle {
        display: inline-block; width: 16px; text-align: center;
        cursor: pointer; user-select: none;
        font-size: 10px; color: #6b56a5;
        margin-right: 4px;
        transition: transform .15s;
    }
    .budget-group-toggle.collapsed { transform: rotate(-90deg); }

    .budget-group-drag-handle {
        display: inline-block; width: 14px; cursor: grab;
        color: #9a8cc2; opacity: 0; font-size: 12px; user-select: none;
        margin-right: 4px; transition: opacity .15s;
    }
    tr.budget-group-header:hover .budget-group-drag-handle { opacity: 1; }
    .budget-group-drag-handle:active { cursor: grabbing; }

    tr.budget-group-header td .budget-group-name {
        display: inline-block; padding: 1px 6px; border-radius: 3px;
        border: 1px dashed transparent; cursor: text;
        text-transform: uppercase;
        transition: border-color .15s, background .15s;
    }
    tr.budget-group-header td .budget-group-name:hover {
        border-color: #b8a8e0; background: #fff;
    }
    tr.budget-group-header td .budget-group-name:focus {
        outline: none; border-color: #6b56a5; background: #fff;
    }
    tr.budget-group-header td .budget-group-del {
        background: transparent; color: #c0392b;
        border: 1px solid rgba(192, 57, 43, 0.3);
        padding: 1px 8px; border-radius: 3px; cursor: pointer;
        font-size: 10px; margin-left: 10px;
        text-transform: none; letter-spacing: 0;
        opacity: 0; transition: opacity .15s, background .15s;
    }
    tr.budget-group-header:hover td .budget-group-del { opacity: 0.75; }
    tr.budget-group-header td .budget-group-del:hover {
        opacity: 1; background: rgba(192, 57, 43, 0.08);
    }

    /* ─── СТРОКИ ВНУТРИ ГРУППЫ — лёгкий отступ слева + тонкая полоса ─── */
    tr.budget-grouped-row td:first-child {
        border-left: 2px solid #d8d2ec !important;
        padding-left: 28px !important;
    }
    tr.budget-grouped-row.last-in-group td {
        border-bottom: 1px solid #d8d2ec !important;
    }
    /* Без агрессивной тонировки — статьи в группе выглядят почти как обычные */

    /* Свёрнутая группа: статьи скрыты, остаётся только заголовок */
    tr.budget-grouped-row.collapsed-hidden { display: none; }
    tr.budget-group-header.is-collapsed td {
        border-bottom: 1px solid #d8d2ec !important;
    }

    /* Подытог группы (числа в заголовке) — выделение и моноширинные цифры */
    tr.budget-group-header td.budget-group-sum {
        font-weight: 700;
        font-size: 13px;
        color: #3d2f6b;
        text-transform: none;
        letter-spacing: 0;
        font-variant-numeric: tabular-nums;
        text-align: right;
        padding-right: 18px !important;
    }

    /* Селект группы при перемещении статьи */
    .budget-move-group-btn {
        background: none; border: none;
        color: #4b3b8a; cursor: pointer;
        font-size: 11px; padding: 0 4px;
        opacity: 0; transition: opacity .15s;
    }
    .budget-table tr:hover .budget-move-group-btn { opacity: 1; }
    .budget-move-group-btn:hover { color: #2d2068; text-decoration: underline; }

    /* Редактируемое название статьи бюджета */
    .budget-name-edit {
        display: inline-block; min-width: 100px; padding: 2px 4px;
        border-radius: 4px; cursor: text;
        border: 1px dashed transparent;
        transition: border-color .15s, background .15s;
    }
    .budget-name-edit:hover  { border-color: rgba(0,0,0,0.15); background: rgba(255,255,255,0.5); }
    .budget-name-edit:focus  { outline: none; border-color: var(--logo-orange); background: #fff; }
    .budget-name-edit.saved  { background: rgba(26, 122, 58, 0.15); }
    .budget-name-edit.error  { background: rgba(231, 76, 60, 0.15); }

    .pct-cell { font-weight: 700; }
    .pct-cell.good { color: #1a7a3a; }
    .pct-cell.warn { color: #e67e22; }
    .pct-cell.bad  { color: #e74c3c; }

    /* Квартальная таблица */
    .quarterly-table { width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 24px; background: #fff; font-variant-numeric: tabular-nums lining-nums; }
    .quarterly-table th { position: sticky; top: 0; z-index: 5; background: #2b1b54; color: #fff; padding: 9px 14px; text-align: center; font-size: 12px; font-weight: 600; letter-spacing: .3px; }
    .quarterly-table td { padding: 8px 14px; border-bottom: 1px solid #f0f0f0; text-align: center; color: #1a1a1a; }
    .quarterly-table td:first-child { text-align: left; color: #555; font-weight: 600; }
    .q-positive { color: #1a7a3a; font-weight: 600; }
    .q-negative { color: #e74c3c; font-weight: 600; }

    /* Прогноз */
    .forecast-table { width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 24px; background: #fff; font-variant-numeric: tabular-nums lining-nums; }
    .forecast-table th { position: sticky; top: 0; z-index: 5; background: #2b1b54; color: #fff; padding: 9px 12px; text-align: right; font-size: 12px; font-weight: 600; letter-spacing: .3px; }
    .forecast-table th:first-child { text-align: left; }
    .forecast-table td { padding: 7px 12px; border-bottom: 1px solid #f0f0f0; text-align: right; color: #1a1a1a; }
    .forecast-table td:first-child { text-align: left; font-weight: 600; }

    /* Вкладка «Прогноз доходов»: единая фиксированная сетка столбцов, чтобы
       все таблицы были выровнены одинаково (границы колонок совпадали). */
    .quarterly-table, .forecast-table { table-layout: fixed; }
    /* Первый столбец (Показатель/Должность) — одинаковой ширины во всех таблицах;
       остальные числовые столбцы fixed-раскладка делит поровну. */
    .quarterly-table th:first-child, .quarterly-table td:first-child,
    .forecast-table  th:first-child, .forecast-table  td:first-child { width: 26%; }
    /* Числа и заголовки не переносим — суммы остаются целыми, лишнее прячем. */
    .quarterly-table th, .quarterly-table td,
    .forecast-table  th, .forecast-table  td {
        white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }

    /* Выделенные столбцы — вертикальные разделители + зебра + акцент на крайнем (итоговом) столбце. */
    .quarterly-table th, .quarterly-table td,
    .forecast-table th,  .forecast-table td {
        border-right: 1px solid #e7e4f0;
    }
    .quarterly-table th:last-child, .quarterly-table td:last-child,
    .forecast-table  th:last-child, .forecast-table  td:last-child {
        border-right: none;
    }
    .quarterly-table tbody tr:nth-child(even) td,
    .forecast-table  tbody tr:nth-child(even):not(.budget-total-row) td {
        background: #faf9fd;
    }
    /* Крайний правый столбец (ИТОГО / За год / Прогноз год) — выделяем */
    .quarterly-table td:last-child,
    .forecast-table  td:last-child { font-weight: 700; color: #2b1b54; }
    .quarterly-table th:last-child,
    .forecast-table  th:last-child { background: #20103d; }

    /* Широкие таблицы прогноза (12 месяцев) — авто-раскладка + горизонтальный
       скролл (контейнер #forecast-content уже overflow-x:auto). Перебивает
       table-layout:fixed/width:100% базового .forecast-table. */
    .forecast-table.forecast-wide { table-layout: auto; width: auto; min-width: 100%; }
    .forecast-table.forecast-wide th:first-child,
    .forecast-table.forecast-wide td:first-child { width: auto; min-width: 150px; position: sticky; left: 0; background: #fff; z-index: 1; }
    .forecast-table.forecast-wide th, .forecast-table.forecast-wide td { padding: 6px 10px; }
    .forecast-table.forecast-wide th:first-child { background: #2b1b54; z-index: 2; }
    .forecast-table.forecast-wide tbody tr:nth-child(even):not(.budget-total-row) td:first-child { background: #faf9fd; }
    .forecast-table.forecast-wide tr.budget-total-row td:first-child { background: #efeaf9; }

    /* Под-вкладки прогноза («По месяцам» / «По кварталам») — как view-toggle Реестра */
    .fc-subtabs {
        display: flex; gap: 0; margin: 0 0 12px;
        border: 1.5px solid #ddd; border-radius: 7px; overflow: hidden; width: fit-content;
    }
    .fc-subtab {
        padding: 5px 14px; border-radius: 0; cursor: pointer; font-size: 12px;
        font-weight: 600; color: #777; background: #fff; border: none;
        user-select: none; transition: background .12s, color .12s;
    }
    .fc-subtab:hover { background: #f0ebff; }
    .fc-subtab.active { background: #2b1b54; color: #fff; }

    /* Подсказка о членах без даты вступления (исключены из прогноза) */
    .fc-nodate-note {
        margin: 14px 0 0; padding: 8px 12px; border-radius: 8px;
        background: #fff4e0; border: 1px solid #f0d9a8; color: #7a5a16; font-size: 12.5px;
    }

    .section-title { font-size: 14px; font-weight: 700; color: #2b1b54; margin: 20px 0 10px; text-transform: uppercase; letter-spacing: .5px; }

    /* ===== GOOGLE FORMS STYLE МОДАЛКИ ===== */
    .gform-overlay {
        position: fixed; inset: 0;
        background: rgba(32,33,36,0.55);
        display: none;
        align-items: flex-start; justify-content: center;
        overflow-y: auto;
        padding: 40px 16px;
        z-index: 1000;
    }
    .gform-overlay.open { display: flex; }
    .gform-container {
        width: 100%; max-width: 640px;
        display: flex; flex-direction: column; gap: 12px;
        padding-bottom: 40px;
    }
    .gform-header {
        background: white;
        border-top: 10px solid #2b1b54;
        border-radius: 8px;
        padding: 26px 26px 22px;
        box-shadow: 0 1px 3px rgba(0,0,0,0.1);
        position: relative;
    }
    .gform-header h2 {
        font-size: 28px; color: #202124; font-weight: 400;
        margin: 0 0 8px; line-height: 1.25;
    }
    .gform-header p { color: #5f6368; font-size: 14px; margin: 4px 0 0; line-height: 1.4; }
    .gform-required-note {
        color: #d93025; font-size: 13px; margin-top: 16px;
        padding-top: 12px; border-top: 1px solid #e8eaed;
    }
    .gform-close {
        position: absolute; top: 14px; right: 14px;
        background: transparent; border: none; cursor: pointer;
        font-size: 22px; color: #5f6368; padding: 4px 10px; border-radius: 50%;
    }
    .gform-close:hover { background: #f1f3f4; }

    .gform-card {
        background: white;
        border-radius: 8px;
        padding: 22px 24px;
        box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    }
    .gform-q {
        font-size: 15px; color: #202124; margin: 0 0 4px;
        font-weight: 400; line-height: 1.4;
    }
    .gform-q .req { color: #d93025; margin-left: 3px; }
    .gform-help {
        font-size: 13px; color: #5f6368;
        margin: 4px 0 16px; font-style: italic;
    }
    .gform-input, .gform-textarea {
        width: 100%;
        border: none;
        border-bottom: 1px solid #dadce0;
        padding: 8px 0;
        font-size: 14px;
        background: transparent;
        color: #202124;
        outline: none;
        transition: border-color 0.15s;
        font-family: inherit;
    }
    .gform-textarea { resize: vertical; min-height: 22px; }
    .gform-input:focus, .gform-textarea:focus {
        border-bottom: 2px solid #2b1b54; padding-bottom: 7px;
    }
    .gform-input::placeholder, .gform-textarea::placeholder { color: #80868b; }

    .gform-select {
        width: 100%;
        border: 1px solid #dadce0;
        border-radius: 4px;
        padding: 10px 12px;
        font-size: 14px;
        background: white;
        color: #202124;
        cursor: pointer;
        font-family: inherit;
        outline: none;
        appearance: none;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%235f6368' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 12px center;
        padding-right: 32px;
    }
    .gform-select:focus { border-color: #2b1b54; }

    .gform-actions {
        display: flex; align-items: center; gap: 8px;
        padding: 14px 0;
    }
    .gform-submit {
        background: #2b1b54;
        color: white;
        border: none;
        border-radius: 4px;
        padding: 10px 24px;
        font-size: 14px;
        font-weight: 500;
        font-family: inherit;
        cursor: pointer;
        transition: all 0.15s;
    }
    .gform-submit:hover { background: #3d2472; box-shadow: 0 1px 4px rgba(43,27,84,0.4); }
    .gform-submit:disabled { background: #80868b; cursor: not-allowed; }
    .gform-clear {
        color: #2b1b54; background: transparent;
        border: none; padding: 10px 12px;
        font-size: 14px; font-weight: 500;
        cursor: pointer; border-radius: 4px;
        font-family: inherit;
    }
    .gform-clear:hover { background: #f3f0fa; }

    /* Поле даты в стиле GForm */
    .gform-date-row { display: flex; gap: 6px; align-items: center; }
    .gform-date-input {
        border: 1px solid #dadce0; border-radius: 4px;
        padding: 6px 8px; font-size: 14px; width: 70px;
        text-align: center; color: #202124; font-family: inherit;
    }
    .gform-date-input.year { width: 90px; }
    .gform-date-input:focus { outline: 2px solid #2b1b54; border-color: #2b1b54; }
    .gform-date-sep { color: #5f6368; font-size: 14px; }

    /* Поиск участника */
    .gform-search-wrap { position: relative; }
    .gform-search-results {
        position: absolute; top: 100%; left: 0; right: 0;
        background: white; border: 1px solid #dadce0;
        border-radius: 4px; max-height: 220px; overflow-y: auto;
        box-shadow: 0 2px 8px rgba(0,0,0,0.15);
        z-index: 10; margin-top: 2px;
        display: none;
    }
    .gform-search-results.open { display: block; }
    .gform-search-item {
        padding: 10px 14px; cursor: pointer;
        font-size: 14px; color: #202124;
        border-bottom: 1px solid #f1f3f4;
    }
    .gform-search-item:hover { background: #f3f0fa; }
    .gform-search-item small { color: #80868b; font-size: 12px; margin-left: 8px; }
    .gform-selected-pill {
        display: none; margin-top: 8px;
        padding: 6px 12px; background: #e8eaf6;
        border-radius: 16px; font-size: 13px; color: #2b1b54;
        font-weight: 500;
    }
    .gform-selected-pill.shown { display: inline-block; }

    /* ===== ВКЛАДКА «ЗАЯВКИ» (одобрение новых членов, только админ) ===== */
    .reg-tab.tab-applications-trigger { display: none; }   /* по умолчанию скрыта, показываем только админу */
    #tab-applications { display: none; }
    .request-item {
        background: #fff;
        border: 1px solid #e5e5e5;
        color: #1a1a1a;
        padding: 14px 16px; border-radius: 0;
        margin-bottom: 0;
        border-left: none; border-right: none;
        display: flex; justify-content: space-between; align-items: center;
        gap: 16px;
        box-shadow: none;
    }
    .request-item + .request-item { border-top: none; }
    #pending-requests-list { background: #fff; border: 1px solid #e5e5e5; border-radius: 0; overflow: hidden; }
    .request-info h4 { margin: 0 0 4px 0; color: #1f1140; font-size: 15px; font-weight: 600; }
    .request-info p  { margin: 0; color: #555; font-size: 13px; }
    /* Детали в развёрнутой карточке заявки — явный контраст */
    .request-details {
        background: #f6f4fb;
        border: 1px solid #d8d0eb;
        border-radius: 8px;
        padding: 12px 14px;
        font-size: 13px;
        line-height: 1.55;
        color: #1f1140;
    }
    .request-details strong { color: #4b3b8a; }
    .request-details hr     { border: none; border-top: 1px solid #d8d0eb; margin: 8px 0; }
    .request-details .footer-meta { color: #555; font-size: 12px; }
    .request-toggle {
        background: none; border: none;
        color: #4b3b8a; cursor: pointer;
        text-align: left; padding: 0;
        font-size: 13px; font-weight: 600;
        align-self: flex-start;
    }
    .request-toggle:hover { color: #2d2068; }
    .request-id-tag {
        font-size: 11px; color: #777;
        font-family: monospace; flex-shrink: 0;
    }
    .btn-approve {
        background: #2ecc71; color: #fff; border: none;
        padding: 8px 18px; border-radius: 6px; cursor: pointer;
        font-weight: 600; font-size: 13px; transition: 0.15s;
    }
    .btn-approve:hover { background: #27ae60; }
    .btn-approve:disabled { background: #95a5a6; cursor: not-allowed; }
    .btn-reject {
        background: #e74c3c; color: #fff; border: none;
        padding: 8px 18px; border-radius: 6px; cursor: pointer;
        font-weight: 600; font-size: 13px; transition: 0.15s;
    }
    .btn-reject:hover { background: #c0392b; }
    .btn-reject:disabled { background: #95a5a6; cursor: not-allowed; }
    #pending-requests-list .empty-msg { color: #2ecc71; font-weight: 600; margin: 0; }
    #pending-requests-list .error-msg { color: #e74c3c; margin: 0; }
    .app-history-toolbar label {
        display: flex; flex-direction: column; gap: 4px;
        font-size: 11px; color: #999; font-weight: 600;
        text-transform: uppercase; letter-spacing: .4px;
    }
    .app-history-toolbar select {
        min-width: 160px; padding: 5px 10px; border-radius: 6px;
        border: 1px solid #ddd; background: #fff; color: #1a1a1a;
        font-size: 13px; text-transform: none; letter-spacing: 0; font-weight: 500;
    }
    #application-history-wrap { overflow-x: auto; }
    /* История заявок — тот же reg-table (класс ставит JS) */
    #application-history-table .app-hist-note {
        color: #666; font-size: 12px; margin-top: 2px;
    }
    #application-history-table .app-hist-action {
        display: inline-block; padding: 2px 8px; border-radius: 999px;
        font-size: 12px; font-weight: 600; white-space: nowrap;
    }
    #application-history-table .app-hist-approve { background: #e8f8ef; color: #1b7a3d; }
    #application-history-table .app-hist-reject  { background: #fdecea; color: #b42318; }
    #application-history-table .app-hist-merge   { background: #fff4e5; color: #9a5b00; }

    /* ===== КЛИКАБЕЛЬНЫЙ БЕЙДЖ РОЛИ ===== */
    .role-cell-clickable {
        display: inline-flex; align-items: center; gap: 4px;
        cursor: pointer; padding: 2px; border-radius: 6px;
        transition: background .15s;
    }
    .role-cell-clickable:hover { background: rgba(244, 94, 40, 0.08); }
    .role-edit-hint {
        font-size: 11px; color: #999; opacity: 0;
        transition: opacity .15s;
    }
    .role-cell-clickable:hover .role-edit-hint { opacity: 1; color: var(--logo-orange, #f45e28); }

    /* ===== СКРЕПКА ДОКУМЕНТОВ В СТРОКЕ РЕЕСТРА ===== */
    .docs-badge {
        background: rgba(124, 77, 255, 0.1);
        color: #5e35b1; border: 1px solid #c4b3e8;
        padding: 2px 8px; border-radius: 10px;
        font-size: 11px; font-weight: 700; cursor: pointer;
        transition: background .15s;
    }
    .docs-badge:hover { background: rgba(124, 77, 255, 0.22); }

    .modal-section-title {
        font-size: 12px; font-weight: 700; color: #777;
        text-transform: uppercase; letter-spacing: 1px;
        margin-top: 12px;
    }

    /* ===== МИНИ-МОДАЛ «НАЗНАЧИТЬ РОЛЬ» ===== */
    #role-modal-overlay {
        display: none; position: fixed; inset: 0;
        background: rgba(0, 0, 0, 0.55);
        align-items: center; justify-content: center; z-index: 10000;
        backdrop-filter: blur(4px);
    }
    #role-modal-overlay.open { display: flex; }
    #role-modal {
        background: #fff; border-radius: 12px;
        width: min(420px, 92vw); padding: 24px;
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
    }
    #role-modal h3 { margin: 0 0 4px; color: #1f1140; font-size: 17px; }
    #role-modal .role-modal-sub { color: #888; font-size: 13px; margin-bottom: 10px; }
    #role-modal .role-modal-hint,
    #perms-modal .role-modal-hint {
        margin: 0 0 14px; padding: 8px 10px; border-radius: 8px;
        background: #f7f5fc; color: #5a5270; font-size: 12px; line-height: 1.4;
    }
    #role-modal label { display: block; font-size: 13px; color: #555; margin-bottom: 6px; font-weight: 500; }
    #role-modal select {
        width: 100%; padding: 10px 12px; font-size: 14px;
        border: 1px solid #ddd; border-radius: 8px; background: #fff;
        color: #1f1140; outline: none; font-family: inherit;
    }
    #role-modal select:focus { border-color: var(--logo-orange, #f45e28); }
    #role-modal .role-modal-btns {
        display: flex; gap: 8px; justify-content: flex-end; margin-top: 18px;
    }
    #role-modal .role-modal-btns button {
        padding: 8px 16px; border-radius: 6px; font-size: 13px;
        font-weight: 600; cursor: pointer; border: none;
    }
    #role-modal .role-modal-cancel { background: #f0f0f5; color: #444; }
    #role-modal .role-modal-cancel:hover { background: #e0e0ea; }
    #role-modal .role-modal-save { background: var(--logo-orange, #f45e28); color: #fff; }
    #role-modal .role-modal-save:hover { background: #d44d1a; }
    #role-modal .role-modal-perms {
        display: block; width: 100%; margin-top: 14px; padding: 9px 12px;
        border: 1px dashed #c9b8ff; border-radius: 8px; background: #f6f1ff;
        color: #5b3fb0; font-size: 13px; font-weight: 600; cursor: pointer;
    }
    #role-modal .role-modal-perms:hover { background: #ece2ff; }
    button.role-modal-perms {
        display: block; width: 100%; margin-top: 14px; padding: 9px 12px;
        border: 1px dashed #c9b8ff; border-radius: 8px; background: #f6f1ff;
        color: #5b3fb0; font-size: 13px; font-weight: 600; cursor: pointer;
        font-family: inherit;
    }
    button.role-modal-perms:hover { background: #ece2ff; }
    .role-custom-mark {
        display: inline-block; margin-left: 4px; padding: 1px 6px;
        border-radius: 8px; background: #f6f1ff; color: #5b3fb0;
        font-size: 10px; font-weight: 700; vertical-align: middle;
        letter-spacing: .2px;
    }

    /* ===== МОДАЛ «ИНДИВИДУАЛЬНЫЕ ПРАВА» ===== */
    #perms-modal-overlay, #rolepreset-modal-overlay {
        display: none; position: fixed; inset: 0;
        background: rgba(0, 0, 0, 0.55);
        align-items: center; justify-content: center; z-index: 10001;
        backdrop-filter: blur(4px);
    }
    #perms-modal-overlay.open, #rolepreset-modal-overlay.open { display: flex; }
    #perms-modal, #rolepreset-modal {
        background: #fff; border-radius: 12px;
        width: min(560px, 94vw); max-height: 88vh; padding: 22px;
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
        display: flex; flex-direction: column;
    }
    #perms-modal h3, #rolepreset-modal h3 { margin: 0 0 4px; color: #1f1140; font-size: 17px; }
    #perms-modal .role-modal-sub, #rolepreset-modal .role-modal-sub { color: #888; font-size: 12px; margin-bottom: 12px; }
    .perms-presets {
        display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
        margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid #eee;
    }
    .perms-presets-label { font-size: 12px; color: #888; margin-right: 4px; }
    .perms-preset-btn {
        padding: 4px 10px; border-radius: 14px; border: 1px solid #ddd;
        background: #f7f7fb; color: #444; font-size: 12px; cursor: pointer;
    }
    .perms-preset-btn:hover { background: #ece2ff; border-color: #c9b8ff; }
    .perms-body { overflow-y: auto; flex: 1; }
    .perms-group { margin-bottom: 12px; }
    .perms-group-title {
        font-size: 12px; font-weight: 700; color: #5b3fb0; text-transform: uppercase;
        letter-spacing: .5px; margin-bottom: 6px;
    }
    .perms-item {
        display: flex; align-items: center; gap: 8px; padding: 4px 6px;
        font-size: 13px; color: #2a2a2a; border-radius: 6px; cursor: pointer;
    }
    .perms-item:hover { background: #f5f0ff; }
    .perms-item input { width: 15px; height: 15px; cursor: pointer; }

    /* ============================================================
       БЮДЖЕТ — МИНИМАЛИСТИЧНЫЙ ДИЗАЙН (Bloomberg/бух. ведомость)
       Этот блок намеренно идёт ПОСЛЕ всех остальных правил .budget-*
       и переопределяет их через специфичность .budget-col-left + !important.
       Принципы: тонкие линии вместо плашек, типографика вместо цвета,
       единственный цветной якорь — section header (зелёный/красный/золотой),
       классическая double-line для ИТОГО (как в бухгалтерском отчёте).
       ============================================================ */

    /* 1. БАЗА — воздух, тонкие линии, моноширинные цифры */
    .budget-col-left .budget-table {
        width: 100%;
        border-collapse: collapse;
        font-size: 13px;
        background: #fff;
        font-feature-settings: "tnum" 1, "lnum" 1;
        font-variant-numeric: tabular-nums lining-nums;
    }
    .budget-col-left .budget-table th {
        position: sticky; top: 0; z-index: 5;
        background: #2b1b54;
        color: #fff;
        padding: 9px 14px;
        text-align: right;
        font-size: 12px;
        font-weight: 600;
        letter-spacing: .3px;
        text-transform: none;
        border-bottom: 1px solid #1a1a1a;
        white-space: nowrap;
    }
    .budget-col-left .budget-table th:first-child {
        text-align: left;
        min-width: 260px;
    }
    .budget-col-left .budget-table td {
        padding: 6px 14px;
        border-bottom: 1px solid #f5f5f5;
        color: #1a1a1a;
        text-align: right;
        font-variant-numeric: tabular-nums lining-nums;
        font-feature-settings: "tnum" 1, "lnum" 1;
    }
    .budget-col-left .budget-table td:first-child {
        text-align: left;
        font-weight: 400;
        color: #1a1a1a;
    }

    /* 2. УБИРАЕМ цветные подкладки строк income/expense (zebra) */
    .budget-col-left .budget-table tr.row-income td,
    .budget-col-left .budget-table tr.row-expense td {
        background: #fff !important;
    }

    /* contenteditable — без жёлтой заливки, только подчёркивание при focus */
    .budget-col-left .budget-table td[contenteditable="true"] {
        background: transparent;
        cursor: text;
        transition: background .12s, box-shadow .12s;
    }
    .budget-col-left .budget-table td[contenteditable="true"]:hover {
        background: #fafafa;
        box-shadow: inset 0 -1px 0 #d0d0d0;
    }
    .budget-col-left .budget-table td[contenteditable="true"]:focus {
        background: #fffef5 !important;
        outline: none;
        box-shadow: inset 0 -2px 0 var(--logo-orange);
    }

    /* 3. SECTION HEADER — цветной uppercase якорь, sticky */
    .budget-col-left .budget-table tr.budget-section-header td {
        font-weight: 700 !important;
        font-size: 10px !important;
        letter-spacing: 2px !important;
        text-transform: uppercase;
        padding: 14px 14px 6px !important;
        border: none !important;
        border-bottom: 1px solid #1a1a1a !important;
        text-align: left !important;
        background: #fff !important;
        position: sticky;
        top: 0;
        z-index: 2;
    }
    .budget-col-left .budget-table tr.budget-section-header.section-income  td { color: #1a7a3a !important; }
    .budget-col-left .budget-table tr.budget-section-header.section-expense td { color: #b03030 !important; }
    .budget-col-left .budget-table tr.budget-section-header.section-balance td { color: #8a6410 !important; }

    /* 4. ГРУППЫ — uppercase микро-заголовок, без плашек, воздух сверху */
    .budget-col-left .budget-table tr.budget-group-header td {
        background: #fff !important;
        color: #555 !important;
        font-weight: 700 !important;
        font-size: 10px !important;
        letter-spacing: 1.2px !important;
        text-transform: uppercase;
        padding: 18px 14px 4px !important;
        border: none !important;
        border-bottom: 1px solid #e5e5e5 !important;
        border-left: none !important;
        border-top: none !important;
        user-select: none;
        cursor: grab;
    }
    .budget-col-left .budget-table tr.budget-group-header.dragging td {
        opacity: 0.5; cursor: grabbing;
    }
    .budget-col-left .budget-table tr.budget-group-header.drop-above td {
        box-shadow: inset 0 2px 0 var(--logo-orange) !important;
    }
    .budget-col-left .budget-table tr.budget-group-header.drop-below td {
        box-shadow: inset 0 -2px 0 var(--logo-orange) !important;
    }

    .budget-group-toggle { color: #777; font-size: 9px; }
    .budget-group-drag-handle { color: #aaa; }

    .budget-col-left .budget-table tr.budget-group-header td .budget-group-name {
        text-transform: uppercase;
        letter-spacing: 1.2px;
        padding: 0 4px;
        border: 1px dashed transparent;
        background: transparent;
    }
    .budget-col-left .budget-table tr.budget-group-header td .budget-group-name:hover {
        border-color: #d0d0d0; background: transparent;
    }
    .budget-col-left .budget-table tr.budget-group-header td .budget-group-name:focus {
        border-color: #888; background: #fafafa;
    }
    .budget-col-left .budget-table tr.budget-group-header td .budget-group-name.saved {
        background: rgba(26, 122, 58, 0.10); border-color: transparent;
    }
    .budget-col-left .budget-table tr.budget-group-header td .budget-group-name.error {
        background: rgba(176, 48, 48, 0.10); border-color: transparent;
    }

    /* Подытог группы — крупный жирный, справа */
    .budget-col-left .budget-table tr.budget-group-header td.budget-group-sum {
        font-weight: 700 !important;
        font-size: 12px !important;
        color: #1a1a1a !important;
        text-transform: none !important;
        letter-spacing: 0 !important;
        font-variant-numeric: tabular-nums lining-nums;
        font-feature-settings: "tnum" 1, "lnum" 1;
        text-align: right !important;
        padding-right: 14px !important;
    }

    /* Строки внутри группы — отступ слева, тонкая разлиновка */
    .budget-col-left .budget-table tr.budget-grouped-row td:first-child {
        border-left: none !important;
        padding-left: 28px !important;
        color: #333;
    }
    .budget-col-left .budget-table tr.budget-grouped-row.last-in-group td {
        border-bottom: 1px solid #f5f5f5 !important;
    }
    .budget-col-left .budget-table tr.budget-group-header.is-collapsed td {
        border-bottom: 1px solid #e5e5e5 !important;
    }

    /* 5. AUTO-СТРОКИ — italic серый, без фона */
    .budget-col-left .budget-table tr.row-auto td {
        background: #fff !important;
        color: #888 !important;
        font-style: italic;
        font-size: 12px;
    }
    .budget-col-left .budget-table tr.row-auto td:first-child {
        color: #888 !important; font-style: italic; font-weight: 400;
    }
    .budget-auto-cell {
        background: transparent !important;
        color: #888 !important;
        font-style: italic;
        font-weight: 400 !important;
        cursor: not-allowed;
    }

    /* 6. ИТОГО — единственная жирная double-line строка (классика бух. отчёта) */
    .budget-col-left .budget-table tr.budget-total-row td {
        background: #fff !important;
        font-weight: 700 !important;
        color: #1a1a1a !important;
        font-size: 13px !important;
        padding-top: 10px !important;
        padding-bottom: 10px !important;
        border-top: 1px solid #1a1a1a !important;
        border-bottom: 3px double #1a1a1a !important;
        letter-spacing: 0.5px;
        font-variant-numeric: tabular-nums lining-nums;
        font-feature-settings: "tnum" 1, "lnum" 1;
    }
    .budget-col-left .budget-table tr.budget-total-row td:first-child {
        font-weight: 700 !important;
        color: #1a1a1a !important;
        text-transform: uppercase;
        letter-spacing: 0.8px;
    }

    /* БАЛАНС — оранжевый акцент */
    .budget-col-left .budget-table tr.budget-balance-row td {
        background: #fff !important;
        font-weight: 700 !important;
        color: var(--logo-orange) !important;
        font-size: 14px !important;
        padding-top: 12px !important;
        padding-bottom: 12px !important;
        border-top: 1px solid var(--logo-orange) !important;
        border-bottom: 3px double var(--logo-orange) !important;
        letter-spacing: 0.5px;
        font-variant-numeric: tabular-nums lining-nums;
    }
    .budget-col-left .budget-table tr.budget-balance-row td:first-child {
        text-transform: uppercase;
        letter-spacing: 0.8px;
    }

    /* 7. КНОПКА «+ статья» — текстовая ссылка вместо рамки */
    .budget-add-item-btn {
        background: none;
        border: none;
        color: #999;
        padding: 4px 0;
        font-size: 11px;
        font-weight: 500;
        text-transform: lowercase;
        letter-spacing: 0.2px;
        cursor: pointer;
        transition: color .12s;
        border-radius: 0;
    }
    .budget-add-item-btn:hover {
        background: none;
        border: none;
        color: var(--logo-orange);
        text-decoration: underline;
        text-underline-offset: 3px;
    }

    /* 8. DRAG HANDLE — тонкий серый */
    .budget-drag-handle { color: #aaa; font-size: 14px; }
    .budget-drag-handle:hover { color: #666; }
    .budget-col-left .budget-table tr.budget-item-row.drop-above td {
        box-shadow: inset 0 2px 0 var(--logo-orange) !important;
    }
    .budget-col-left .budget-table tr.budget-item-row.drop-below td {
        box-shadow: inset 0 -2px 0 var(--logo-orange) !important;
    }

    /* 9. ОДНОРАЗОВЫЕ — точка вместо плашки */
    .budget-col-left .budget-table tr.row-one-time td:first-child { color: #1a1a1a; }
    .budget-onetime-badge {
        background: transparent;
        color: #b35a1d;
        font-size: 10px;
        font-weight: 500;
        padding: 0;
        margin-left: 8px;
        text-transform: lowercase;
        letter-spacing: 0;
        border-radius: 0;
        display: inline;
        vertical-align: baseline;
    }
    .budget-onetime-badge::before { content: "• "; }

    /* Переключатель режима ввода ФОТ (на руки ⇄ до вычета) */
    .fot-basis-toggle {
        background: rgba(124, 77, 255, 0.10);
        color: #5e35b1;
        border: 1px solid #c4b3e8;
        padding: 1px 8px; margin-left: 8px;
        border-radius: 10px; cursor: pointer;
        font-size: 11px; font-weight: 600; line-height: 1.4;
        vertical-align: middle; white-space: nowrap;
        transition: background .15s;
    }
    .fot-basis-toggle:hover { background: rgba(124, 77, 255, 0.22); }

    /* Справочные строки ФОТ (начислено / полная стоимость) — не редактируются,
       в ИТОГО не входят, оформлены приглушённо как авто-строки. */
    .budget-table tr.budget-fot-ref td,
    .budget-col-left .budget-table tr.budget-fot-ref td {
        background: #fbfaff !important;
        border-bottom: 1px solid #f2f0f7 !important;
        padding-top: 3px !important; padding-bottom: 3px !important;
    }

    /* 10. Кнопка удаления статьи — серая на белом */
    .budget-del-item-btn {
        background: transparent;
        color: #999;
        border: none;
    }
    .budget-table tr:hover .budget-del-item-btn { opacity: 1; }
    .budget-del-item-btn:hover {
        background: rgba(176, 48, 48, 0.08);
        color: #b03030;
    }

    /* =====================================================================
       UNIFIED REGISTRY TABLE STYLES — минималистичный, Bloomberg / бух. ведомость
       Применяется к: reg-table, fees-matrix, budget/staff/forecast/quarterly
       ===================================================================== */

    /* 0. CSS-переменные палитры реестровых таблиц */
    .registry-wrap {
        /* Цвет текста ПО УМОЛЧАНИЮ для светлой темы. Без него элементы без явного
           color (заголовки голосований, ad-hoc <span> и т.п.) наследуют белый
           текст из глобального body (тёмная оболочка) и сливаются со светлым
           фоном. Тёмная тема (.theme-dark) переопределяет это на --d-ink ниже. */
        color:             #1a1a1a;
        --rg-ink:          #1a1a1a;
        --rg-ink-soft:     #555;
        --rg-ink-muted:    #888;
        --rg-line:         #e5e5e5;
        --rg-line-soft:    #f0f0f0;
        --rg-line-strong:  #1a1a1a;
        --rg-head-bg:      #2b1b54;
        --rg-head-fg:      #fff;
        --rg-zebra:        #fafafa;
        --rg-hover:        #f4efff;
        --rg-focus:        #7c4dff;
        --rg-income:       26, 122, 58;
        --rg-expense:      176, 48, 48;
        --rg-income-ink:   #1a7a3a;
        --rg-expense-ink:  #a83232;
    }

    /* 1. Общий каркас reg-table */
    .registry-wrap table.reg-table {
        border-collapse: collapse;
        width: 100%;
        font-size: 13px;
        background: #fff;
        font-variant-numeric: tabular-nums lining-nums;
    }

    /* 2. Sticky thead — минималистичный, фиолет фирменный */
    .registry-wrap table.reg-table thead th {
        position: sticky; top: 0; z-index: 10;
        background: var(--rg-head-bg);
        color: var(--rg-head-fg);
        font-weight: 600;
        font-size: 12px;
        letter-spacing: .3px;
        padding: 9px 10px;
        text-align: left;
        white-space: nowrap;
        border-right: 1px solid rgba(255,255,255,.12);
        border-bottom: 1px solid var(--rg-line-strong);
        user-select: none;
    }
    .registry-wrap table.reg-table thead th:first-child {
        width: 40px; text-align: center;
    }

    /* 3. tbody — тонкие линии, табличные цифры */
    .registry-wrap table.reg-table tbody tr {
        border-bottom: 1px solid var(--rg-line-soft);
        transition: background .1s ease;
        color: var(--rg-ink);
    }
    .registry-wrap table.reg-table tbody td {
        padding: 7px 10px;
        vertical-align: middle;
        border-right: 1px solid var(--rg-line-soft);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        font-variant-numeric: tabular-nums lining-nums;
    }

    /* 4. Зебра — лёгкая нейтральная (~3%) для реестра */
    .registry-wrap table.reg-table tbody tr:not(.dept-row):not(.dept-row-matrix):not(.subtotal-row):not(.grand-total-row):nth-child(even) {
        background: var(--rg-zebra);
    }

    /* 5. Семантическая зебра ВЗНОСЫ (доходы) — едва различимый зелёный */
    .registry-wrap table#fees-table tbody tr:not(.dept-row):nth-child(even) {
        background: rgba(var(--rg-income), .03);
    }
    .registry-wrap table#fees-table tbody tr:hover {
        background: rgba(var(--rg-income), .07) !important;
    }

    /* 6. Семантическая зебра РАСХОДЫ — едва различимый красный */
    .registry-wrap table#expenses-table tbody tr:not(.dept-row):nth-child(even) {
        background: rgba(var(--rg-expense), .03);
    }
    .registry-wrap table#expenses-table tbody tr:hover {
        background: rgba(var(--rg-expense), .07) !important;
    }

    /* 7. Реестр — фиолетовый hover (брендовый) */
    .registry-wrap table#members-table tbody tr:hover {
        background: var(--rg-hover) !important;
    }

    /* 8. contenteditable — сохраняем поведение */
    .registry-wrap table.reg-table td[contenteditable="true"] { cursor: text; }
    .registry-wrap table.reg-table td[contenteditable="true"]:hover {
        background: #f6f3ff !important;
    }
    .registry-wrap table.reg-table td[contenteditable="true"]:focus {
        outline: 2px solid var(--rg-focus);
        outline-offset: -2px;
        background: #fff !important;
        border-radius: 2px;
        overflow: visible;
        white-space: normal;
        box-shadow: 0 0 0 3px rgba(124,77,255,.12);
        position: relative; z-index: 5;
    }

    /* 9. dept-row — мягкая фирменная заливка + верхний акцент (брендовый фиолетовый) */
    .registry-wrap tr.dept-row td,
    .registry-wrap tr.dept-row-matrix td {
        background: rgba(43, 27, 84, 0.07) !important;
        color: var(--rg-ink) !important;
        font-weight: 700;
        font-size: 12px;
        letter-spacing: 1.5px;
        text-transform: uppercase;
        padding: 16px 12px 10px !important;
        border: none;
        border-top: 2px solid #2b1b54 !important;
        border-bottom: 1px solid var(--rg-line) !important;
        box-shadow: inset 3px 0 0 #2b1b54;
    }

    /* 10. tfoot / ИТОГО — double-line (бух. конвенция) */
    .registry-wrap table.reg-table tfoot td {
        background: #fff !important;
        font-weight: 700;
        color: var(--rg-ink) !important;
        padding: 10px;
        border-top: 1px solid var(--rg-line-strong);
        border-bottom: 3px double var(--rg-line-strong);
        font-variant-numeric: tabular-nums lining-nums;
        text-transform: uppercase;
        font-size: 12px;
        letter-spacing: .5px;
    }
    .registry-wrap table#fees-table tfoot td { color: var(--rg-income-ink) !important; }
    .registry-wrap table#expenses-table tfoot td { color: var(--rg-expense-ink) !important; }

    /* 11. Матрица взносов — единый стиль */
    .registry-wrap .fees-matrix {
        width: 100%;
        border-collapse: collapse;
        font-size: 13px;
        background: #fff;
        font-variant-numeric: tabular-nums lining-nums;
    }
    .registry-wrap .fees-matrix th {
        background: var(--rg-head-bg);
        color: var(--rg-head-fg);
        padding: 9px 10px;
        text-align: center;
        font-size: 11px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .5px;
        white-space: nowrap;
        position: sticky; top: 0; z-index: 5;
        border-bottom: 1px solid var(--rg-line-strong);
    }
    .registry-wrap .fees-matrix th.col-name { text-align: left; min-width: 200px; }
    .registry-wrap .fees-matrix th.col-pos  { min-width: 60px; }
    .registry-wrap .fees-matrix td {
        padding: 7px 10px;
        border-bottom: 1px solid var(--rg-line-soft);
        color: var(--rg-ink);
        vertical-align: middle;
        font-variant-numeric: tabular-nums lining-nums;
    }
    .registry-wrap .fees-matrix td.col-name  { white-space: nowrap; font-weight: 500; }
    .registry-wrap .fees-matrix td.col-pos   { text-align: center; color: var(--rg-ink-muted); font-size: 11px; }
    .registry-wrap .fees-matrix td.col-num   { color: #aaa; font-size: 11px; text-align: center; }
    .registry-wrap .fees-matrix td.col-total {
        font-weight: 700;
        color: var(--rg-head-bg);
        text-align: right;
        background: #fafafa;
        border-left: 1px solid var(--rg-line);
    }
    .registry-wrap .fees-matrix tbody tr:not(.dept-row-matrix):not(.subtotal-row):not(.grand-total-row):nth-child(even) {
        background: rgba(var(--rg-income), .03);
    }
    .registry-wrap .fees-matrix tbody tr:not(.dept-row-matrix):not(.subtotal-row):not(.grand-total-row):hover {
        background: rgba(var(--rg-income), .07) !important;
    }
    .registry-wrap .fees-matrix td.fee-cell {
        text-align: right;
        min-width: 100px;
        cursor: pointer;
        transition: background .1s;
    }
    .registry-wrap .fees-matrix td.fee-cell:hover { background: rgba(124,77,255,.08); }
    .registry-wrap .fees-matrix td.fee-cell.paid { background: rgba(var(--rg-income), .05); }
    .registry-wrap .fees-matrix td.fee-cell.paid .fee-amount {
        color: var(--rg-income-ink); font-weight: 600;
    }
    .registry-wrap .fees-matrix td.fee-cell.unpaid .fee-amount { color: #ccc; }

    /* 12. Подытоги и grand-total матрицы — double-line */
    .registry-wrap tr.subtotal-row td {
        background: #fff !important;
        font-weight: 700;
        color: var(--rg-ink) !important;
        border-top: 1px solid var(--rg-line-strong) !important;
        border-bottom: 1px solid var(--rg-line) !important;
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: .5px;
    }
    .registry-wrap tr.subtotal-row td.subtotal-label {
        color: var(--rg-ink-soft) !important;
        font-size: 11px;
    }
    .registry-wrap tr.grand-total-row td {
        background: #fff !important;
        color: var(--rg-ink) !important;
        font-weight: 800;
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 1px;
        border-top: 1px solid var(--rg-line-strong) !important;
        border-bottom: 3px double var(--rg-line-strong) !important;
    }

    /* 13. Бюджет / прогноз / ФОТ / квартальная — та же палитра шапки */
    .registry-wrap .budget-table th,
    .registry-wrap .budget-col-left .budget-table th,
    .registry-wrap .forecast-table th,
    .registry-wrap .quarterly-table th,
    .registry-wrap .staff-table th,
    .registry-wrap .staff-doc-table th {
        background: var(--rg-head-bg) !important;
        color: var(--rg-head-fg) !important;
        border-bottom: 1px solid var(--rg-line-strong);
    }
    .registry-wrap .forecast-table th:last-child,
    .registry-wrap .quarterly-table th:last-child {
        background: #20103d !important;
    }
    .registry-wrap .budget-table,
    .registry-wrap .forecast-table,
    .registry-wrap .quarterly-table,
    .registry-wrap .staff-table {
        background: #fff;
        font-variant-numeric: tabular-nums lining-nums;
    }
    .registry-wrap .budget-col-left .budget-table tr.budget-section-header.section-income td {
        background: rgba(var(--rg-income), 0.12) !important;
        color: var(--rg-income-ink) !important;
    }
    .registry-wrap .budget-col-left .budget-table tr.budget-section-header.section-expense td {
        background: rgba(var(--rg-expense), 0.12) !important;
        color: var(--rg-expense-ink) !important;
    }
    .registry-wrap .budget-col-left .budget-table tr.budget-section-header.section-balance td {
        background: rgba(43, 27, 84, 0.08) !important;
        color: #2b1b54 !important;
    }

    /* 14. Мобилка */
    @media (max-width: 768px) {
        .registry-wrap table.reg-table,
        .registry-wrap .fees-matrix { font-size: 12px; }
        .registry-wrap table.reg-table tbody td,
        .registry-wrap .fees-matrix td { padding: 6px 8px; }
    }

    /* =====================================================================
       ТЁМНАЯ ТЕМА РЕЕСТРА
       Включается классом .theme-dark на .registry-wrap (переключатель ☀/🌙
       в шапке, выбор хранится в localStorage['registryTheme']). Скоуп — только
       реестр; остальной сайт не затрагивается. !important нужен, чтобы
       перебить хардкод-цвета (#fff и inline-стили) исходных правил.
       ===================================================================== */
    .registry-wrap.theme-dark {
        /* Палитра как в разделе «Мессенджер» (chat-dark): глубокий тёмно-фиолетовый
           фон #0f0a22, карточки #19112f, текст #ece8f7, акцент-оранжевый. */
        --d-bg: #0f0a22; --d-surface: #19112f; --d-surface-2: #241a40;
        --d-ink: #ece8f7; --d-ink-dim: #9a8fc0; --d-line: #2a2147;
        --d-accent: #f45e28;
        background: var(--d-bg);
        color: var(--d-ink);
    }
    .registry-wrap.theme-dark .reg-toolbar,
    .registry-wrap.theme-dark .reg-body,
    .registry-wrap.theme-dark .table-area { background: var(--d-bg); }
    .registry-wrap.theme-dark .reg-toolbar h1 { color: var(--d-ink); }

    /* Вкладки */
    .registry-wrap.theme-dark .reg-tab {
        color: var(--d-ink-dim); background: var(--d-surface);
        border-color: var(--d-line) var(--d-line) transparent;
    }
    .registry-wrap.theme-dark .reg-tab:hover:not(.active) { background: var(--d-surface-2); }
    .registry-wrap.theme-dark .reg-tab.active {
        background: var(--d-surface-2); color: #fff;
        border-color: var(--d-line) var(--d-line) var(--d-surface-2);
    }

    /* Поля/кнопки */
    .registry-wrap.theme-dark .search-box,
    .registry-wrap.theme-dark .filter-select,
    .registry-wrap.theme-dark .filter-input,
    .registry-wrap.theme-dark .reg-staff input,
    .registry-wrap.theme-dark .reg-staff select {
        background: var(--d-surface); color: var(--d-ink); border-color: var(--d-line);
    }
    .registry-wrap.theme-dark .tab-toolbar,
    .registry-wrap.theme-dark .filter-bar,
    .registry-wrap.theme-dark .fees-toolbar,
    .registry-wrap.theme-dark .budget-toolbar,
    .registry-wrap.theme-dark .staff-toolbar,
    .registry-wrap.theme-dark .app-history-toolbar {
        background: var(--d-surface); border-color: var(--d-line);
    }
    .registry-wrap.theme-dark .tab-toolbar-title { color: #cfc6ef; }
    .registry-wrap.theme-dark .tb-btn-secondary {
        background: var(--d-surface-2); color: var(--d-ink); border-color: var(--d-line);
    }
    .registry-wrap.theme-dark .app-history-toolbar select {
        background: var(--d-surface); color: var(--d-ink); border-color: var(--d-line);
    }
    .registry-wrap.theme-dark .tab-pane-pad { color: var(--d-ink); }
    .registry-wrap.theme-dark .filter-bar label,
    .registry-wrap.theme-dark .filter-count,
    .registry-wrap.theme-dark .empty-msg,
    .registry-wrap.theme-dark .section-title { color: var(--d-ink-dim); }

    /* Универсальные таблицы реестра */
    .registry-wrap.theme-dark table.reg-table { background: var(--d-surface) !important; color: var(--d-ink); }
    .registry-wrap.theme-dark table.reg-table tbody tr { border-bottom-color: var(--d-line); color: var(--d-ink); }
    .registry-wrap.theme-dark table.reg-table tbody td,
    .registry-wrap.theme-dark table.reg-table tbody td * { color: var(--d-ink) !important; }
    .registry-wrap.theme-dark table.reg-table tbody td.num-cell,
    .registry-wrap.theme-dark table.reg-table tbody td.num-cell * { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark table.reg-table tbody tr:hover { background: var(--d-surface-2) !important; }
    .registry-wrap.theme-dark table.reg-table tbody tr:not(.dept-row):not(.dept-row-matrix):not(.subtotal-row):not(.grand-total-row):nth-child(even) { background: rgba(255,255,255,0.025); }
    .registry-wrap.theme-dark table.reg-table thead th { background: #160f2b !important; color: #cfc6ef !important; border-color: var(--d-line) !important; }
    .registry-wrap.theme-dark table.reg-table td[contenteditable="true"]:hover,
    .registry-wrap.theme-dark table.reg-table td[contenteditable="true"]:focus { background: #2a2050 !important; }
    .registry-wrap.theme-dark table.reg-table tfoot td { background: #160f2b !important; color: var(--d-ink) !important; }

    /* Бюджет / прогноз / кварталы */
    .registry-wrap.theme-dark .budget-table,
    .registry-wrap.theme-dark .quarterly-table,
    .registry-wrap.theme-dark .forecast-table { background: var(--d-surface); color: var(--d-ink); }
    .registry-wrap.theme-dark .budget-table th,
    .registry-wrap.theme-dark .quarterly-table th,
    .registry-wrap.theme-dark .forecast-table th { background: #160f2b; color: #cfc6ef; }
    .registry-wrap.theme-dark .budget-table td,
    .registry-wrap.theme-dark .quarterly-table td,
    .registry-wrap.theme-dark .forecast-table td { color: var(--d-ink); border-bottom-color: var(--d-line); }
    .registry-wrap.theme-dark .budget-table td:first-child { color: var(--d-ink); }
    .registry-wrap.theme-dark .budget-table td[contenteditable="true"]:hover,
    .registry-wrap.theme-dark .budget-table td[contenteditable="true"]:focus { background: #3a2d12 !important; }
    .registry-wrap.theme-dark .budget-table tr.row-auto td { background: rgba(124,77,255,0.16) !important; }
    .registry-wrap.theme-dark .budget-table tr.row-auto td:first-child { color: #c7b3ff !important; }
    .registry-wrap.theme-dark .budget-total-row td { background: #2d2150 !important; color: #efe9ff !important; border-top-color: #6b53b8; }
    .registry-wrap.theme-dark .budget-balance-row td { background: rgba(240,217,122,0.18) !important; color: #f0d97a !important; }
    .registry-wrap.theme-dark .budget-section-header.section-income td  { background: #1d3b2a !important; color: #aef0c5 !important; }
    .registry-wrap.theme-dark .budget-section-header.section-expense td { background: #4a1f1f !important; color: #f3b0b0 !important; }
    .registry-wrap.theme-dark .budget-section-header.section-balance td { background: #4a3c12 !important; color: #f0d97a !important; }
    .registry-wrap.theme-dark .budget-add-item-btn { background: var(--d-surface); border-color: var(--d-line); color: var(--d-ink-dim); }
    .registry-wrap.theme-dark .budget-add-item-btn:hover { background: var(--d-surface-2); color: #fff; }

    /* ── Минималистичный «бухгалтерский» бюджет (.budget-col-left) использует
       жёсткие #fff/#1a1a1a с !important — перебиваем с большей специфичностью,
       иначе таблица бюджета остаётся светлой в тёмной теме. ── */
    .registry-wrap.theme-dark .budget-col-left .budget-table td,
    .registry-wrap.theme-dark .budget-col-left .budget-table td:first-child { color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table th { background: #160f2b !important; color: #cfc6ef !important; border-bottom-color: #6b56a5 !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.row-income td,
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.row-expense td,
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.row-one-time td { background: var(--d-surface) !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-section-header td { background: #160f2b !important; border-bottom-color: #6b56a5 !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-section-header.section-income  td { color: #8fe3ad !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-section-header.section-expense td { color: #f0a8a8 !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-section-header.section-balance td { color: #f0d97a !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-group-header td { background: var(--d-surface-2) !important; color: #cfc6ef !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-group-header td.budget-group-sum { color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-grouped-row td:first-child { color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.row-auto td,
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.row-auto td:first-child { background: rgba(124,77,255,0.14) !important; color: #b9a6e8 !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-total-row td { background: #2d2150 !important; color: #efe9ff !important; border-top-color: #cfc6ef !important; border-bottom-color: #cfc6ef !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-balance-row td { background: rgba(240,217,122,0.10) !important; color: #f0d97a !important; border-top-color: #f0d97a !important; border-bottom-color: #f0d97a !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table td[contenteditable="true"]:hover { background: #2a2050 !important; box-shadow: inset 0 -1px 0 #6b56a5 !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table td[contenteditable="true"]:focus { background: #2a2050 !important; box-shadow: inset 0 -2px 0 var(--logo-orange) !important; }
    .registry-wrap.theme-dark .budget-auto-cell { color: #b9a6e8 !important; background: transparent !important; }
    /* Справочные строки ФОТ (начислено / полная стоимость) */
    .registry-wrap.theme-dark .budget-table tr.budget-fot-ref td { background: #201838 !important; color: #9b8fc4 !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .fot-basis-toggle { background: rgba(124,77,255,0.22); color: #cbb8ff; border-color: #6b56a5; }

    /* Шапка бюджета + кнопки года */
    .registry-wrap.theme-dark .budget-toolbar { border-bottom-color: var(--d-line); }
    .registry-wrap.theme-dark .year-btn { background: var(--d-surface); color: var(--d-ink-dim); border-color: var(--d-line); }
    .registry-wrap.theme-dark .year-btn.active { background: var(--d-surface-2); color: #fff; border-color: #6b56a5; }

    /* Прогноз/кварталы: перебиваем светлые зебру, разделители и крайний столбец */
    .registry-wrap.theme-dark .quarterly-table th, .registry-wrap.theme-dark .quarterly-table td,
    .registry-wrap.theme-dark .forecast-table th,  .registry-wrap.theme-dark .forecast-table td { border-right-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .quarterly-table tbody tr:nth-child(even) td,
    .registry-wrap.theme-dark .forecast-table tbody tr:nth-child(even):not(.budget-total-row) td { background: rgba(255,255,255,0.03) !important; }
    .registry-wrap.theme-dark .quarterly-table td:last-child,
    .registry-wrap.theme-dark .forecast-table td:last-child { color: #cfc6ef !important; }
    .registry-wrap.theme-dark .quarterly-table th:last-child,
    .registry-wrap.theme-dark .forecast-table th:last-child { background: #100a20 !important; }
    .registry-wrap.theme-dark .forecast-table tr.budget-total-row td,
    .registry-wrap.theme-dark .quarterly-table tr.budget-total-row td { background: #2d2150 !important; color: #efe9ff !important; }
    /* Широкие таблицы: липкий первый столбец перекрашиваем под тёмный фон */
    .registry-wrap.theme-dark .forecast-table.forecast-wide td:first-child { background: var(--d-surface) !important; }
    .registry-wrap.theme-dark .forecast-table.forecast-wide th:first-child { background: #160f2b !important; }
    .registry-wrap.theme-dark .forecast-table.forecast-wide tbody tr:nth-child(even):not(.budget-total-row) td:first-child { background: #1b1438 !important; }
    .registry-wrap.theme-dark .forecast-table.forecast-wide tr.budget-total-row td:first-child { background: #2d2150 !important; }

    /* Под-вкладки прогноза — тёмная тема */
    .registry-wrap.theme-dark .fc-subtabs { border-color: var(--d-line); }
    .registry-wrap.theme-dark .fc-subtab { background: var(--d-surface); color: var(--d-ink-dim); border: none; }
    .registry-wrap.theme-dark .fc-subtab:hover { background: var(--d-surface-2); }
    .registry-wrap.theme-dark .fc-subtab.active { background: #6b56a5; color: #fff; }
    .registry-wrap.theme-dark .fc-nodate-note { background: #3a2e16; border-color: #5c4a1f; color: #e8d28f; }

    /* Панель статистики + кнопка сворачивания */
    .registry-wrap.theme-dark .counter-panel { background: var(--d-surface); border-left-color: var(--d-line); }
    .registry-wrap.theme-dark .counter-collapse-btn { background: var(--d-surface-2); border-color: var(--d-line); color: var(--d-ink-dim); }
    .registry-wrap.theme-dark .counter-collapse-btn:hover { background: #3a2d5e; color: #fff; }

    /* Вкладка ФОТ */
    .registry-wrap.theme-dark .staff-card { background: var(--d-surface); border-color: var(--d-line); color: var(--d-ink); }
    .registry-wrap.theme-dark .staff-card h3,
    .registry-wrap.theme-dark .staff-cmp-col .v { color: var(--d-ink); }
    .registry-wrap.theme-dark .staff-cmp-col { background: #160f2b; border-color: var(--d-line); }
    .registry-wrap.theme-dark .staff-hint { color: var(--d-ink-dim); }

    /* ============================================================
       ТЁМНАЯ ТЕМА — ДОПОЛНЕНИЯ (сведено из многоагентного аудита):
       заявки, матрица взносов, сводка, модалки, бейджи, разделители.
       ============================================================ */

    /* Общее: тосты, фильтры, кнопки ячеек, панель статистики */
    .registry-wrap.theme-dark #reg-toast { background: var(--d-surface-2) !important; color: var(--d-ink) !important; border: 1px solid var(--d-line) !important; }
    .registry-wrap.theme-dark .search-box:focus { border-color: #f45e28 !important; }
    .registry-wrap.theme-dark .filter-clear { background: var(--d-surface); color: #f45e28; border-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .filter-clear:hover { background: var(--d-surface-2); }
    .registry-wrap.theme-dark .modal-section-title { color: var(--d-ink-dim) !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .edit-btn { border-color: #6b56a5 !important; color: #b9a6e8 !important; background: transparent !important; }
    .registry-wrap.theme-dark .edit-btn:hover { background: rgba(107,86,165,0.2) !important; border-color: #b9a6e8 !important; color: #d4c6ff !important; }
    .registry-wrap.theme-dark .del-btn { color: #f0a8a8 !important; }
    .registry-wrap.theme-dark .del-btn:hover { background: rgba(240,168,168,0.15) !important; color: #f5c4c4 !important; }
    .registry-wrap.theme-dark .counter-item { border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .counter-item .c-label { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .counter-item .c-val,
    .registry-wrap.theme-dark .counter-total { color: #cfc6ef !important; }
    /* h3/section-title затемнены для светлой темы (#555/#666) — на тёмном фоне
       возвращаем им светлый приглушённый цвет, иначе сольются. */
    .registry-wrap.theme-dark .counter-panel h3,
    .registry-wrap.theme-dark .counter-section-title { color: var(--d-ink-dim) !important; }

    /* Реестр-таблица: гендер, бейджи ролей, скрепка документов */
    .gender-m { font-weight: 700; color: #3498db; }
    .gender-f { font-weight: 700; color: #e74c3c; }
    .gender-none { color: #ccc; }
    .registry-wrap.theme-dark .gender-m { color: #5fa8ff !important; }
    .registry-wrap.theme-dark .gender-f { color: #ff8080 !important; }
    .registry-wrap.theme-dark .gender-none { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .role-member    { background: rgba(143,227,173,0.18) !important; color: #8fe3ad !important; }
    .registry-wrap.theme-dark .role-chair     { background: rgba(244,94,40,0.18)  !important; color: #ff9d6e !important; }
    .registry-wrap.theme-dark .role-committee { background: rgba(159,168,218,0.18) !important; color: #a895d6 !important; }
    .registry-wrap.theme-dark .role-audit     { background: rgba(240,168,168,0.18) !important; color: #f0a8a8 !important; }
    .registry-wrap.theme-dark .role-admin     { background: rgba(203,184,255,0.18) !important; color: #c7b3ff !important; }
    .registry-wrap.theme-dark .docs-badge { background: rgba(203,184,255,0.22) !important; border-color: #6b56a5 !important; color: #cbb8ff !important; }
    .registry-wrap.theme-dark .docs-badge:hover { background: rgba(107,86,165,0.4) !important; }

    /* Вкладка «Заявки» */
    .registry-wrap.theme-dark #tab-applications { background: transparent !important; }
    .registry-wrap.theme-dark #pending-requests-list { background: var(--d-surface); border-color: var(--d-line); }
    .registry-wrap.theme-dark .request-item { background: var(--d-surface) !important; border-color: var(--d-line) !important; color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .request-info h4 { color: #cfc6ef !important; }
    .registry-wrap.theme-dark .request-info p  { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .request-details { background: var(--d-surface-2) !important; border-color: var(--d-line) !important; color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .request-details strong { color: #b9a6e8 !important; }
    .registry-wrap.theme-dark .request-toggle { color: #cbb8ff !important; }
    .registry-wrap.theme-dark .request-id-tag { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .btn-approve { background: #1a7a3a !important; }
    .registry-wrap.theme-dark .btn-approve:hover { background: #145c2f !important; }
    .registry-wrap.theme-dark .btn-reject  { background: #a0392b !important; }
    .registry-wrap.theme-dark .btn-reject:hover  { background: #7a2b1f !important; }

    /* Взносы: матрица (.fees-matrix не наследует reg-table) */
    .registry-wrap.theme-dark .fees-toolbar { border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .fee-edit-btn { background: transparent; border-color: #6b56a5; color: #b9a6e8; }
    .registry-wrap.theme-dark .fee-edit-btn:hover { background: rgba(124,77,255,0.15); border-color: #7c4dff; }
    .registry-wrap.theme-dark .fees-matrix { background: var(--d-surface) !important; }
    .registry-wrap.theme-dark .fees-matrix td { color: var(--d-ink) !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .fees-matrix th { background: #160f2b !important; color: #cfc6ef !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .fees-matrix td.col-total { background: rgba(255,255,255,0.08) !important; color: #cfc6ef !important; border-left-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .fees-matrix td.col-num { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .fees-matrix td.fee-cell:hover { background: rgba(124,77,255,0.12) !important; }
    .registry-wrap.theme-dark .fees-matrix td.fee-cell.paid { background: rgba(143,227,173,0.12) !important; }
    .registry-wrap.theme-dark .fees-matrix td.fee-cell.paid .fee-amount { color: #8fe3ad !important; font-weight: 600; }
    .registry-wrap.theme-dark .fees-matrix td.fee-cell.unpaid .fee-amount { color: var(--d-ink-dim) !important; }
    /* Помесячный вид: липкий первый столбец на тёмном фоне */
    .registry-wrap.theme-dark .fees-matrix.is-month td.col-name { background: var(--d-surface) !important; }
    .registry-wrap.theme-dark .fees-matrix.is-month th.col-name { background: #160f2b !important; }
    .registry-wrap.theme-dark tr.subtotal-row td { background: rgba(124,77,255,0.10) !important; color: var(--d-ink) !important; border-top-color: var(--d-line) !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark tr.subtotal-row td.subtotal-label { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark tr.grand-total-row td { background: #2d2150 !important; color: #efe9ff !important; border-top-color: var(--d-line) !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .fees-matrix tbody tr td[style*="color:#aaa"] { color: var(--d-ink-dim) !important; }

    /* Взносы: сводка + прогресс */
    .registry-wrap.theme-dark .fees-summary { background: var(--d-surface) !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .fees-stat .val { color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .fees-stat .lbl { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .fees-caption { border-right-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .fees-caption .val { color: #b9a6ff !important; }
    .registry-wrap.theme-dark .fees-caption .lbl { color: #9c8fd0 !important; }
    .registry-wrap.theme-dark .progress-track { background: rgba(255,255,255,0.1) !important; }
    .registry-wrap.theme-dark .progress-fill  { background: linear-gradient(90deg, #5ecc5e, #4ade80) !important; }
    .registry-wrap.theme-dark .progress-lbl   { color: var(--d-ink-dim) !important; }

    /* Бюджет: кнопки/бейджи/разделители, не закрытые ранее */
    .registry-wrap.theme-dark .budget-del-item-btn { background: rgba(240,168,168,0.20) !important; color: #f0a8a8; }
    .registry-wrap.theme-dark .budget-del-item-btn:hover { background: rgba(240,168,168,0.35) !important; color: #fff; }
    .registry-wrap.theme-dark .budget-move-group-btn { color: #d4c5ff; }
    .registry-wrap.theme-dark .budget-move-group-btn:hover { color: #f45e28; text-decoration: underline; }
    .registry-wrap.theme-dark .budget-onetime-badge { background: rgba(92,63,163,0.20) !important; color: #d4c5ff !important; }
    .registry-wrap.theme-dark .budget-table small { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .budget-add-row td { background: var(--d-surface) !important; color: var(--d-ink); }
    .registry-wrap.theme-dark .budget-onetime-divider td { background: rgba(92,63,163,0.15) !important; color: #d4c5ff !important; border-top-color: #6b56a5 !important; }

    /* Прогноз: зебра-фоллбэк (на случай инлайн-фона) + проценты */
    .registry-wrap.theme-dark .forecast-table tbody tr:nth-child(even) td[style*="background"],
    .registry-wrap.theme-dark .quarterly-table tbody tr:nth-child(even) td[style*="background"] { background: rgba(255,255,255,0.03) !important; }
    .registry-wrap.theme-dark .pct-cell.good { color: #8fe3ad !important; }
    .registry-wrap.theme-dark .pct-cell.warn { color: #f0d97a !important; }
    .registry-wrap.theme-dark .pct-cell.bad  { color: #f0a8a8 !important; }

    /* Модалки (добавление члена / роль / Google-форма) */
    .registry-wrap.theme-dark .reg-modal { background: var(--d-surface) !important; color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .reg-modal h2 { color: #cfc6ef !important; }
    .registry-wrap.theme-dark .reg-modal .reg-field label { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .reg-modal .reg-field input,
    .registry-wrap.theme-dark .reg-modal .reg-field select { background: var(--d-surface); color: var(--d-ink); border-color: var(--d-line); }
    .registry-wrap.theme-dark .reg-modal-btns .btn-cancel { background: var(--d-surface-2); color: var(--d-ink); }
    .registry-wrap.theme-dark #role-modal { background: var(--d-surface) !important; color: var(--d-ink) !important; }
    .registry-wrap.theme-dark #role-modal h3 { color: #cfc6ef !important; }
    .registry-wrap.theme-dark #role-modal select { background: var(--d-surface) !important; color: var(--d-ink) !important; border-color: var(--d-line) !important; }
    .registry-wrap.theme-dark #role-modal .role-modal-cancel { background: var(--d-surface-2); color: var(--d-ink); }
    .registry-wrap.theme-dark .gform-header { background: var(--d-surface) !important; color: var(--d-ink) !important; border-top-color: #f45e28 !important; }
    .registry-wrap.theme-dark .gform-header h2 { color: #cfc6ef !important; }
    .registry-wrap.theme-dark .gform-header p  { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .gform-card { background: var(--d-surface) !important; color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .gform-q { color: var(--d-ink) !important; }
    .registry-wrap.theme-dark .gform-input,
    .registry-wrap.theme-dark .gform-textarea { background: transparent !important; color: var(--d-ink) !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .gform-select,
    .registry-wrap.theme-dark .gform-date-input { background: var(--d-surface) !important; color: var(--d-ink) !important; border-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .gform-date-sep { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .gform-search-results { background: var(--d-surface) !important; border-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .gform-search-item { color: var(--d-ink) !important; border-bottom-color: var(--d-line) !important; }
    .registry-wrap.theme-dark .gform-search-item:hover { background: var(--d-surface-2) !important; }

    /* ============================================================
       РАСХОДЫ: подразделы «Обязательные / Необязательные» + подытоги
       + переключатель обязательности на статье.
       ============================================================ */
    .budget-col-left .budget-table tr.budget-subsection-header td {
        background: transparent !important;
        font-weight: 700; font-size: 10px; letter-spacing: 1.4px;
        text-transform: uppercase; padding: 14px 14px 5px !important;
        border: none !important; border-bottom: 1px solid #c9c0e8 !important;
        text-align: left !important;
    }
    .budget-col-left .budget-table tr.budget-subsection-header.subsection-mandatory td { color: #b03030 !important; }
    .budget-col-left .budget-table tr.budget-subsection-header.subsection-optional  td { color: #7a6e99 !important; }
    .budget-col-left .budget-table tr.budget-subtotal-row td {
        font-weight: 700 !important; font-size: 12px !important;
        color: #4b3b8a !important;
        border-top: 1px solid #c9c0e8 !important;
        padding-top: 6px !important; padding-bottom: 6px !important;
    }
    .budget-col-left .budget-table tr.budget-subtotal-row td:first-child { text-transform: none; letter-spacing: .3px; }
    .budget-empty-sub td { font-style: italic; opacity: .6; }

    /* Кнопка-переключатель обязательности статьи */
    .budget-mand-toggle {
        background: none; border: none; cursor: pointer;
        font-size: 13px; line-height: 1; padding: 0 4px; margin-left: 4px;
        color: #b03030; opacity: 0; transition: opacity .15s, color .15s;
        vertical-align: middle;
    }
    .budget-mand-toggle.optional { color: #9a8fc0; }
    .budget-table tr:hover .budget-mand-toggle { opacity: .85; }
    .budget-mand-toggle:hover { opacity: 1 !important; transform: scale(1.15); }

    /* Тёмная тема для подразделов/подытогов/переключателя */
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-subsection-header td { border-bottom-color: #3a2d5e !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-subsection-header.subsection-mandatory td { color: #f0a8a8 !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-subsection-header.subsection-optional  td { color: #9a8fc0 !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-subtotal-row td { color: #cbb8ff !important; border-top-color: #3a2d5e !important; }
    .registry-wrap.theme-dark .budget-empty-sub td { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .budget-mand-toggle { color: #f0a8a8; }
    .registry-wrap.theme-dark .budget-mand-toggle.optional { color: #9a8fc0; }

    /* ============================================================
       ТЁМНАЯ ТЕМА — ЗАЩИТА ОТ ПРОТЕЧКИ СВЕТЛОГО ФОНА
       Глобальное правило `tbody tr:nth-child(even){background:#f6f3ff}` (светлое)
       и светлый `background:#fff` контейнеров протекали в неперекрытых таблицах
       (Прогноз, Бюджет, Матрица): полупрозрачные тёмные слои поверх показывали
       светлый фон из-под низа. Форсируем НЕПРОЗРАЧНЫЙ тёмный фон, чтобы цвет
       строки не зависел от того, что под ней.
       ============================================================ */
    /* 1. Контейнеры таблиц — непрозрачный тёмный (перебиваем светлый #fff). */
    .registry-wrap.theme-dark .budget-table,
    .registry-wrap.theme-dark .budget-col-left .budget-table,
    .registry-wrap.theme-dark .quarterly-table,
    .registry-wrap.theme-dark .forecast-table,
    .registry-wrap.theme-dark .fees-matrix { background: var(--d-surface) !important; }

    /* 2. Светлая «зебра» #f6f3ff на tr — гасим во ВСЕХ таблицах реестра
       (reg-table сохраняет свою более специфичную зебру из строки 1528). */
    .registry-wrap.theme-dark tbody tr:not(.dept-row):not(.dept-row-matrix):nth-child(even) { background: transparent !important; }
    .registry-wrap.theme-dark .forecast-table  tbody tr:not(.budget-total-row):nth-child(even) td,
    .registry-wrap.theme-dark .quarterly-table tbody tr:not(.budget-total-row):nth-child(even) td,
    .registry-wrap.theme-dark .fees-matrix tbody tr:not(.dept-row-matrix):not(.subtotal-row):not(.grand-total-row):nth-child(even) td { background: rgba(255,255,255,0.035) !important; }

    /* 3. Спец-строки с прозрачным/полупрозрачным фоном → непрозрачный тёмный. */
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-subsection-header td { background: var(--d-surface) !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.budget-subtotal-row td { background: #221a3e !important; }
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.row-auto td,
    .registry-wrap.theme-dark .budget-col-left .budget-table tr.row-auto td:first-child,
    .registry-wrap.theme-dark .budget-table tr.row-auto td { background: #221a3e !important; }
    .registry-wrap.theme-dark .budget-auto-cell { background: #221a3e !important; }
    .registry-wrap.theme-dark tr.subtotal-row td { background: #221a3e !important; }

    /* 4. Заголовки подразделений (dept-row / dept-row-matrix) — непрозрачный
       тёмный фон. Иначе на чётной позиции под полупрозрачный td протекала
       светлая глобальная зебра #f6f3ff → светлая полоса со светлым текстом.
       Текст/иконки — светлые (иначе #1a1a1a с table.reg-table td даёт «тёмный на синем»). */
    .registry-wrap.theme-dark tr.dept-row td,
    .registry-wrap.theme-dark tr.dept-row-matrix td {
        background: #241a40 !important;
        color: #efe9ff !important;
    }
    .registry-wrap.theme-dark tr.dept-row td *,
    .registry-wrap.theme-dark tr.dept-row-matrix td * {
        color: #efe9ff !important;
        stroke: #efe9ff !important;
    }

    /* 5. HOVER строки. Светлые hover-правила заданы через ID-селекторы
       (#members-table/#fees-table/#expenses-table tr:hover), а ID по специфичности
       перебивает классовые .theme-dark-переопределения → при наведении строка
       становилась светлой (--rg-hover #f4efff) и светлый текст пропадал.
       Возвращаем тёмный hover тем же ID-уровнем специфичности. */
    .registry-wrap.theme-dark table#members-table tbody tr:hover,
    .registry-wrap.theme-dark table#fees-table tbody tr:hover,
    .registry-wrap.theme-dark table#expenses-table tbody tr:hover,
    .registry-wrap.theme-dark table#members-table tbody tr:hover td,
    .registry-wrap.theme-dark table#fees-table tbody tr:hover td,
    .registry-wrap.theme-dark table#expenses-table tbody tr:hover td { background: var(--d-surface-2) !important; }


/* ---- Staff tab (было nested <style> в #tab-staff) ---- */
                    .reg-staff { padding: 0; }
                    .reg-staff .staff-toolbar { margin-bottom: 0; }
                    .reg-staff .staff-period { display:flex; gap:0; border:1.5px solid #ddd; border-radius:7px; overflow:hidden; background:#fff; padding:0; }
                    .reg-staff .staff-period button { border:none; background:#fff; padding:5px 14px; border-radius:0; cursor:pointer; font-size:12px; font-weight:600; color:#777; }
                    .reg-staff .staff-period button.active { background:#2b1b54; font-weight:600; color:#fff; box-shadow:none; }
                    .registry-wrap.theme-dark .reg-staff .staff-period { background:var(--d-surface); border-color:var(--d-line); }
                    .registry-wrap.theme-dark .reg-staff .staff-period button { color:var(--d-ink-dim); background:var(--d-surface); }
                    .registry-wrap.theme-dark .reg-staff .staff-period button.active { background:#6b56a5; color:#fff; }
                    .reg-staff .staff-hint { font-size:12px; color:#888; padding: 0 14px; }
                    .reg-staff .staff-toolbar .staff-hint { margin-left:auto; max-width:430px; padding: 0; }
                    .staff-table { width:100%; border-collapse:collapse; font-size:13px; background:#fff; }
                    .staff-table th { background:#2b1b54; color:#fff; padding:8px 10px; text-align:right; font-weight:600; white-space:nowrap; position:sticky; top:0; z-index:1; }
                    .staff-table th.txt { text-align:left; }
                    .staff-table td { padding:6px 10px; border-bottom:1px solid #f0f0f0; text-align:right; color:#1a1a1a; white-space:nowrap; }
                    .staff-table td.txt { text-align:left; }
                    /* Поля ввода: явный высококонтрастный цвет в ОБЕИХ темах
                       (!important — чтобы не перебивались глобальными стилями сайта). */
                    .staff-table input, .staff-table select { width:100%; box-sizing:border-box; border:1px solid #c9c9d4; border-radius:4px; padding:5px 7px; font-size:13px; background:#fff !important; color:#1a1a1a !important; caret-color:#2b1b54; }
                    .staff-table input:focus, .staff-table select:focus { outline:none; border-color:#7c4dff; box-shadow:0 0 0 2px rgba(124,77,255,.18); }
                    .staff-table input::placeholder { color:#9a93b3; opacity:1; }
                    .staff-table select option { color:#1a1a1a; background:#fff; }
                    .staff-table input.num { text-align:right; }
                    /* Убираем спиннеры у числовых полей — они крадут место и перекрывают сумму */
                    .staff-table input[type=number]::-webkit-outer-spin-button,
                    .staff-table input[type=number]::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
                    .staff-table input[type=number] { -moz-appearance:textfield; }
                    .staff-table .full-cell { font-weight:700; color:#6b1c1c; }
                    .registry-wrap.theme-dark .staff-table { background:var(--d-surface); }
                    .registry-wrap.theme-dark .staff-table th { background:#160f2b; }
                    .registry-wrap.theme-dark .staff-table td { color:var(--d-ink); border-bottom-color:var(--d-line); }
                    .registry-wrap.theme-dark .staff-table .full-cell { color:#f3b0b0; }
                    /* Тёмная тема: поля ввода внутри таблицы (раньше оставались чёрный текст на тёмном фоне) */
                    .registry-wrap.theme-dark .staff-table input, .registry-wrap.theme-dark .staff-table select { background:#1c1438 !important; color:var(--d-ink) !important; border-color:var(--d-line); caret-color:#e9e4f7; }
                    .registry-wrap.theme-dark .staff-table input::placeholder { color:var(--d-ink-dim); opacity:1; }
                    .registry-wrap.theme-dark .staff-table select option { color:var(--d-ink); background:#241a40; }
                    .staff-member-badge { display:inline-block; font-size:11px; color:#5e35b1; background:#efe9ff; border-radius:8px; padding:1px 6px; margin-left:4px; vertical-align:middle; }
                    .registry-wrap.theme-dark .staff-member-badge { color:#cbb8ff; background:#2d2150; }
                    .staff-total-row td { background:#e6e2f3; font-weight:700; color:#2b1b54; border-top:2px solid #c0b0f0; }
                    .registry-wrap.theme-dark .staff-total-row td { background:#2d2150; color:#efe9ff; }
                    .staff-card { background:#fff; border:1px solid #e5e5e5; border-radius:0; padding:14px 16px; margin-bottom:12px; }
                    .staff-card h3 { margin:0 0 4px; font-size:15px; color:#2b1b54; }
                    .staff-cmp { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:10px; }
                    .staff-cmp-col { background:#fafafa; border:1px solid #e5e5e5; border-radius:0; padding:12px; }
                    .staff-cmp-col h4 { margin:0 0 8px; font-size:13px; color:#5e35b1; }
                    /* color на .row — это цвет ПОДПИСЕЙ («На руки», «НДФЛ 13%»…),
                       раньше он не задавался и наследовался светлым (сливался с фоном).
                       Значения .v перекрывают его более тёмным ниже. */
                    .staff-cmp-col .row { display:flex; justify-content:space-between; padding:3px 0; font-size:13px; color:#4a4368; }
                    .staff-cmp-col .row .v { font-weight:600; color:#1a1a1a; }
                    .staff-cmp-col .row.full { border-top:1px dashed #ccc; margin-top:6px; padding-top:8px; }
                    .staff-cmp-col .row.full .v { color:#6b1c1c; }
                    .registry-wrap.theme-dark .staff-cmp-col .row { color:var(--d-ink-dim); }
                    .registry-wrap.theme-dark .staff-cmp-col .row .v { color:var(--d-ink); }
                    .registry-wrap.theme-dark .staff-cmp-col .row.full .v { color:#f3b0b0; }
                    @media (max-width:680px){ .staff-cmp { grid-template-columns:1fr; } }
                    /* ── Штатное расписание (документ) ── */
                    .staff-doc { background:#fff; border:1px solid #e5e5e5; border-radius:0; padding:26px 28px; max-width:1080px; }
                    #staff-schedule { padding: 14px 16px; }
                    .staff-doc-actions { text-align:right; margin-bottom:10px; }
                    .staff-doc-head { margin-bottom:16px; }
                    .staff-doc-approve { width:330px; max-width:100%; margin:0 0 14px auto; text-align:left; font-size:12px; line-height:1.65; color:#333; }
                    .staff-doc-titlewrap { text-align:center; }
                    .staff-doc-title { font-size:20px; font-weight:800; color:#2b1b54; margin:4px 0 6px; letter-spacing:1.5px; }
                    .staff-doc-org { font-size:13.5px; color:#333; line-height:1.5; }
                    .staff-doc-meta { font-size:12px; color:#666; margin-top:4px; }
                    .staff-doc-foot { margin-top:4px; }
                    .staff-doc-table { width:100%; border-collapse:collapse; font-size:13px; margin-top:6px; }
                    .staff-doc-table th { background:#2b1b54; color:#fff; border:1px solid #c0b0f0; padding:8px 10px; font-weight:600; text-align:center; line-height:1.3; }
                    .staff-doc-table td { border:1px solid #e2ddf0; padding:8px 10px; color:#1a1a1a; }
                    .staff-doc-table td.c { text-align:center; } .staff-doc-table td.r { text-align:right; }
                    .staff-doc-table td.b { font-weight:700; color:#6b1c1c; }
                    .staff-doc-table tfoot .tot td { background:#efe9ff; font-weight:700; color:#2b1b54; }
                    .staff-doc-sign { margin-top:18px; font-size:13px; line-height:1.9; color:#222; }
                    .staff-doc-note { font-size:11px; color:#777; margin:8px 0; }
                    .registry-wrap.theme-dark .staff-doc { background:var(--d-surface); border-color:var(--d-line); }
                    .registry-wrap.theme-dark .staff-doc-title { color:#cbb8ff; }
                    .registry-wrap.theme-dark .staff-doc-org,
                    .registry-wrap.theme-dark .staff-doc-approve,
                    .registry-wrap.theme-dark .staff-doc-meta,
                    .registry-wrap.theme-dark .staff-doc-sign { color:var(--d-ink); }
                    .registry-wrap.theme-dark .staff-doc-table th { background:#160f2b !important; border-color:var(--d-line); }
                    .registry-wrap.theme-dark .staff-doc-table td { color:var(--d-ink); border-color:var(--d-line); }
                    .registry-wrap.theme-dark .staff-doc-table td.b { color:#f3b0b0; }
                    .registry-wrap.theme-dark .staff-doc-table tfoot .tot td { background:#2d2150; color:#efe9ff; }
                    .registry-wrap.theme-dark .staff-doc-note { color: var(--d-ink-dim); }
                    .registry-wrap.theme-dark .staff-cmp-col h4 { color: #cbb8ff; }
                    .registry-wrap.theme-dark .staff-table th { background: #160f2b !important; color: #cfc6ef !important; }

/* ===== Dark theme: дочистка после выноса CSS (п.6) ===== */
.registry-wrap.theme-dark {
    --rg-head-bg: #160f2b;
    --rg-head-fg: #cfc6ef;
    --rg-zebra: rgba(255, 255, 255, 0.025);
    --rg-hover: var(--d-surface-2);
}
.registry-wrap.theme-dark .view-toggle {
    border-color: var(--d-line);
    background: var(--d-surface);
}
.registry-wrap.theme-dark .view-btn {
    background: var(--d-surface);
    color: var(--d-ink-dim);
}
.registry-wrap.theme-dark .view-btn.active {
    background: #6b56a5;
    color: #fff;
}
.registry-wrap.theme-dark .budget-name-edit:hover {
    border-color: rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.04);
}
.registry-wrap.theme-dark .budget-name-edit:focus {
    background: var(--d-surface-2);
    border-color: var(--d-accent, #f45e28);
}
.registry-wrap.theme-dark .request-details hr { border-top-color: var(--d-line); }
.registry-wrap.theme-dark .request-details .footer-meta { color: var(--d-ink-dim); }
.registry-wrap.theme-dark #application-history-table .app-hist-note { color: var(--d-ink-dim); }
.registry-wrap.theme-dark #application-history-table .app-hist-approve {
    background: rgba(46, 204, 113, 0.16); color: #8fe3ad;
}
.registry-wrap.theme-dark #application-history-table .app-hist-reject {
    background: rgba(231, 76, 60, 0.18); color: #f0a8a8;
}
.registry-wrap.theme-dark #application-history-table .app-hist-merge {
    background: rgba(230, 126, 34, 0.18); color: #f0d97a;
}
.registry-wrap.theme-dark .staff-hint { color: var(--d-ink-dim); }

/* Мобильные карточки членов — тёмный фон (перебиваем mobile.css #fff) */
@media (max-width: 768px) {
    .registry-wrap.theme-dark table#members-table tbody tr:not(.dept-row) {
        background: var(--d-surface) !important;
        border-bottom-color: var(--d-line) !important;
    }
    .registry-wrap.theme-dark table#members-table tbody td::before {
        color: var(--d-ink-dim) !important;
    }
    .registry-wrap.theme-dark table#members-table tbody tr:not(.dept-row)::before {
        border-color: #cbb8ff;
    }
    .registry-wrap.theme-dark table#members-table tbody tr:not(.dept-row):not(.is-expanded) > td:nth-child(5),
    .registry-wrap.theme-dark table#members-table tbody tr:not(.dept-row):not(.is-expanded) > td:nth-child(6) {
        color: var(--d-ink) !important;
    }
    .registry-wrap.theme-dark table#members-table tbody tr:not(.dept-row):not(.is-expanded) > td:nth-child(8),
    .registry-wrap.theme-dark table#members-table tbody tr:not(.dept-row):not(.is-expanded) > td:nth-child(13) {
        color: var(--d-ink-dim) !important;
    }
    .registry-wrap.theme-dark table#members-table tbody tr:not(.dept-row):not(.is-expanded) > td:nth-child(8)::after {
        color: var(--d-ink-dim);
    }
    .registry-wrap.theme-dark table#members-table tbody tr:not(.dept-row):not(.is-expanded) > td:nth-child(4) {
        color: #cbb8ff !important;
    }
    .registry-wrap.theme-dark .filter-bar {
        background: var(--d-surface) !important;
        border-bottom-color: var(--d-line) !important;
    }
    .registry-wrap.theme-dark .filter-bar > label,
    .registry-wrap.theme-dark .filter-bar .filter-count { color: var(--d-ink-dim) !important; }
    .registry-wrap.theme-dark .filter-bar .filter-select,
    .registry-wrap.theme-dark .filter-bar .filter-input {
        background: var(--d-surface-2) !important;
        color: var(--d-ink) !important;
        border-color: var(--d-line) !important;
    }
    .registry-wrap.theme-dark .filter-archive {
        background: var(--d-surface) !important;
        border-color: #f45e28;
        color: #f45e28;
    }
}

/* Мобилка: заголовок подразделения — фиолетовая полоса + белый текст
   (перебиваем UNIFIED .registry-wrap tr.dept-row td { color: --rg-ink }). */
@media (max-width: 768px) {
    .registry-wrap table#members-table tbody tr.dept-row {
        background: linear-gradient(90deg, #2b1b54 0%, #3d2472 100%) !important;
    }
    .registry-wrap table#members-table tbody tr.dept-row td,
    .registry-wrap table#members-table tbody tr.dept-row td *,
    .registry-wrap table#members-table tbody tr.dept-row td span {
        background: transparent !important;
        color: #fff !important;
        stroke: #fff !important;
    }
}

/* ── Вкладка «Мониторинг» ── */
.monitor-period { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-left: auto; }
.monitor-days-btn.is-active {
    background: var(--bg-darker-purple, #2b1b54) !important;
    color: #fff !important;
    border-color: var(--bg-darker-purple, #2b1b54) !important;
}
.monitor-kpi {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
    padding: 12px 16px 8px;
}
.monitor-kpi-card {
    background: #f5f0ff;
    border: 1px solid #e0d6f5;
    border-radius: 10px;
    padding: 12px 14px;
    text-align: center;
}
.monitor-kpi-card .mk-val {
    font-size: 22px;
    font-weight: 700;
    color: #2b1b54;
    line-height: 1.2;
}
.monitor-kpi-card .mk-label {
    font-size: 11px;
    color: #666;
    margin-top: 4px;
    line-height: 1.3;
}
.monitor-content-row {
    display: flex;
    flex-wrap: wrap;
    gap: 14px 22px;
    padding: 4px 16px 14px;
    font-size: 13px;
    color: #555;
}
.monitor-content-row b { color: #2b1b54; }
.monitor-section { padding: 0 0 18px; }
.monitor-section-title {
    margin: 0;
    padding: 10px 16px;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: #fff;
    background: linear-gradient(90deg, #2b1b54 0%, #3d2472 100%);
}
.monitor-section .table-scroll { overflow-x: auto; }
.mon-badge {
    display: inline-block;
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 8px;
    white-space: nowrap;
}
.mon-online { background: #e8f5e9; color: #2e7d32; }
.mon-recent { background: #fff3e0; color: #ef6c00; }
.mon-fail { background: #fff8e1; color: #f57f17; }
.mon-locked { background: #ffebee; color: #c62828; }
.mon-dot {
    display: inline-block;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: #2e7d32;
    vertical-align: middle;
    margin-left: 4px;
}
.registry-wrap.theme-dark .monitor-kpi-card {
    background: var(--d-surface-2, #1e1633);
    border-color: var(--d-line, #3a2f55);
}
.registry-wrap.theme-dark .monitor-kpi-card .mk-val { color: #cfc6ef; }
.registry-wrap.theme-dark .monitor-kpi-card .mk-label,
.registry-wrap.theme-dark .monitor-content-row { color: var(--d-ink-dim, #a89bc8); }
.registry-wrap.theme-dark .monitor-content-row b { color: #efe9ff; }
.registry-wrap.theme-dark .mon-online { background: #1b3a24; color: #81c784; }
.registry-wrap.theme-dark .mon-recent { background: #3a2a12; color: #ffb74d; }
.registry-wrap.theme-dark .mon-fail { background: #3a3212; color: #ffe082; }
.registry-wrap.theme-dark .mon-locked { background: #3a1515; color: #ef9a9a; }
