/*
 * theme.css — единая константа стилей и тем проекта.
 *
 * Источник значений — главное меню (.sidebar) из app_shell.css:
 *   светлая тема  -> :root + светлые правила .sidebar
 *   тёмная тема   -> блок body.sidebar-theme-dark .sidebar
 *
 * Переключатель темы не меняли: класс body.sidebar-theme-dark ставит
 * существующий скрипт в base.html (localStorage 'appSidebarTheme').
 *
 * Правило использования в шаблонах: вместо хардкода цвета берём токен
 *   background: var(--gc-surface);  color: var(--gc-text);
 * тогда шаблон автоматически наследует обе темы.
 */

:root {
    /* --- Поверхности (светлая) --- */
    --gc-bg: #f0f4f8;               /* фон страницы, как в style.css */
    --gc-bg-soft: #e5eef5;          /* середина градиента меню */
    --gc-surface: #ffffff;          /* карточки, модалки, таблицы */
    --gc-surface-2: #f4f8fc;        /* шапки таблиц, полосатые строки */
    --gc-surface-3: #e5eef6;        /* hover пунктов меню */
    --gc-surface-inset: #dce8f1;    /* низ градиента меню, врезки */
    --gc-surface-overlay: rgba(255, 255, 255, 0.94);
    /* Полупрозрачная светлая подложка («стекло»). В тёмной теме белую
       полупрозрачность надо ослабить, иначе панель остаётся светлой. */
    --gc-veil: rgba(255, 255, 255, 0.85);

    /* --- Границы --- */
    --gc-border: #dce6f1;
    --gc-border-strong: #c4d4e2;
    --gc-border-subtle: rgba(39, 72, 108, 0.09);

    /* --- Текст --- */
    --gc-text: #172033;
    --gc-text-strong: #10233a;
    --gc-text-muted: #687d96;
    --gc-text-subtle: #7e96ad;
    --gc-heading: #17304d;
    --gc-text-on-accent: #ffffff;
    /* Текст на подложке, которая остаётся светлой в обеих темах
       (жёлтая подсветка, печатные формы): не переключается. */
    --gc-text-on-light: #172033;
    /* Текст на фиксированной пастельной подложке: подложка светлая в обеих
       темах, поэтому и цвет один. Мид-тон (--gc-success и т.п.) там не годится:
       зелёное по светло-зелёному даёт контраст 2.9. */
    --gc-success-ink: #166534;
    --gc-warning-ink: #92400e;
    --gc-danger-ink: #991b1b;
    --gc-info-ink: #155e75;

    /* --- Акцент (из активного пункта меню) --- */
    --gc-accent: #3e8edf;
    --gc-accent-strong: #165d9f;
    --gc-accent-hover: #287dcc;
    --gc-accent-soft: #dcebf8;
    --gc-accent-ghost: rgba(75, 156, 255, 0.16);
    /* Заливка кнопок под белым текстом: --gc-accent для этого слишком светлый
       (контраст 3.2), нужен насыщенный синий. */
    --gc-accent-solid: #0d6efd;
    /* Исторический фирменный синий: шапки карточек, кнопки входа.
       В светлой теме остаётся как был, в тёмной уходит в навигационную синь
       из палитры меню, чтобы полоса не выглядела инородной. */
    --gc-brand: #2E5894;
    --gc-link: #1e5f9d;
    --gc-link-hover: #165d9f;

    /* Второй акцент — индиго/фиолетовый редактора скриптов */
    --gc-accent-alt: #4f46e5;
    --gc-accent-alt-soft: rgba(79, 70, 229, 0.12);

    /* --- Семантика --- */
    --gc-success: #28a745;
    --gc-success-soft: rgba(40, 167, 69, 0.12);
    --gc-danger: #dc3545;
    --gc-danger-soft: rgba(220, 53, 69, 0.12);
    --gc-warning: #ffc107;
    --gc-warning-soft: rgba(255, 193, 7, 0.16);
    --gc-info: #4b9cff;
    --gc-info-soft: rgba(75, 156, 255, 0.12);

    /* --- Форма --- */
    --gc-radius-sm: 8px;
    --gc-radius: 12px;
    --gc-radius-lg: 18px;
    --gc-shadow-sm: 0 2px 8px rgba(27, 52, 85, 0.06);
    --gc-shadow: 0 8px 24px rgba(27, 52, 85, 0.08);
    --gc-shadow-lg: 0 18px 40px rgba(16, 35, 58, 0.14);
    --gc-transition: 220ms cubic-bezier(0.4, 0, 0.2, 1);
}

html.sidebar-theme-dark-preload body,
body.sidebar-theme-dark {
    /* --- Поверхности (тёмная, из градиента тёмного меню) --- */
    --gc-bg: #0b1628;
    --gc-bg-soft: #10213a;
    --gc-surface: #132743;
    --gc-surface-2: #17304d;
    --gc-surface-3: #1b3859;
    --gc-surface-inset: #0e1d33;
    --gc-surface-overlay: rgba(16, 33, 58, 0.94);
    --gc-veil: rgba(255, 255, 255, 0.06);

    /* --- Границы --- */
    --gc-border: rgba(255, 255, 255, 0.08);
    --gc-border-strong: rgba(255, 255, 255, 0.14);
    --gc-border-subtle: rgba(255, 255, 255, 0.05);

    /* --- Текст --- */
    --gc-text: #dbe8f7;
    --gc-text-strong: #ffffff;
    --gc-text-muted: #91a7c1;
    --gc-text-subtle: #7d93ad;
    --gc-heading: #ffffff;
    --gc-text-on-accent: #ffffff;
    --gc-text-on-light: #172033;
    --gc-success-ink: #166534;
    --gc-warning-ink: #92400e;
    --gc-danger-ink: #991b1b;
    --gc-info-ink: #155e75;

    /* --- Акцент --- */
    --gc-accent: #4b9cff;
    --gc-accent-strong: #7db7ff;
    --gc-accent-hover: #b8d7ff;
    --gc-accent-soft: rgba(75, 156, 255, 0.16);
    --gc-accent-ghost: rgba(255, 255, 255, 0.07);
    --gc-accent-solid: #2563eb;
    --gc-brand: #1b3859;
    --gc-link: #7db7ff;
    --gc-link-hover: #b8d7ff;
    --gc-accent-alt: #a5b4fc;
    --gc-accent-alt-soft: rgba(165, 180, 252, 0.16);

    /* --- Семантика (осветлённая под тёмный фон) --- */
    --gc-success: #73d7a4;
    --gc-success-soft: rgba(115, 215, 164, 0.16);
    --gc-danger: #ff8c93;
    --gc-danger-soft: rgba(255, 140, 147, 0.16);
    --gc-warning: #ffce66;
    --gc-warning-soft: rgba(255, 212, 59, 0.16);
    --gc-info: #7db7ff;
    --gc-info-soft: rgba(125, 183, 255, 0.14);

    /* --- Тени --- */
    --gc-shadow-sm: 0 2px 8px rgba(3, 9, 18, 0.4);
    --gc-shadow: 0 8px 24px rgba(3, 9, 18, 0.45);
    --gc-shadow-lg: 0 18px 40px rgba(3, 9, 18, 0.55);

    /* --- Мост к токенам app_shell.css, чтобы шапка и оболочка
           подхватили тему без правок app_shell.css --- */
    --shell-surface: var(--gc-surface-overlay);
    --shell-border: var(--gc-border);
    --shell-text: var(--gc-text);
    --shell-muted: var(--gc-text-muted);
}

/* ==========================================================================
   Базовое наследование темы контентом.
   Светлая тема намеренно не переопределяется — она совпадает с текущим видом,
   поэтому правила ниже включаются только в тёмной теме. Шаблоны, переведённые
   на токены --gc-*, наследуют обе темы автоматически.
   ========================================================================== */

html.sidebar-theme-dark-preload body,
body.sidebar-theme-dark {
    background-color: var(--gc-bg);
    color: var(--gc-text);
}

body.sidebar-theme-dark h1,
body.sidebar-theme-dark h2,
body.sidebar-theme-dark h3,
body.sidebar-theme-dark h4,
body.sidebar-theme-dark h5,
body.sidebar-theme-dark h6 {
    color: var(--gc-heading);
}

/* Только ссылки без собственных классов: у :not(.btn):not(.sidebar a)
   специфичность (0,3,3) — она перебивала компонентные правила
   (.back-arrow, .call-color-chip) и ломала их цвет. */
body.sidebar-theme-dark a:not([class]) {
    color: var(--gc-link);
}

body.sidebar-theme-dark a:not([class]):hover {
    color: var(--gc-link-hover);
}

body.sidebar-theme-dark hr {
    border-color: var(--gc-border);
}

body.sidebar-theme-dark .text-muted,
body.sidebar-theme-dark .form-text,
body.sidebar-theme-dark small.text-secondary {
    color: var(--gc-text-muted) !important;
}

/* --- Контейнеры --- */
body.sidebar-theme-dark .card,
body.sidebar-theme-dark .modal-content,
body.sidebar-theme-dark .offcanvas,
body.sidebar-theme-dark .accordion-item,
body.sidebar-theme-dark .list-group-item,
body.sidebar-theme-dark .toast,
body.sidebar-theme-dark .popover {
    color: var(--gc-text);
    background-color: var(--gc-surface);
    border-color: var(--gc-border);
}

body.sidebar-theme-dark .card-header,
body.sidebar-theme-dark .card-footer,
body.sidebar-theme-dark .modal-header,
body.sidebar-theme-dark .modal-footer,
body.sidebar-theme-dark .accordion-button {
    color: var(--gc-text);
    background-color: var(--gc-surface-2);
    border-color: var(--gc-border);
}

body.sidebar-theme-dark .accordion-button:not(.collapsed) {
    color: var(--gc-accent-strong);
    background-color: var(--gc-accent-soft);
}

body.sidebar-theme-dark .accordion-button::after {
    filter: invert(1) brightness(1.6);
}

body.sidebar-theme-dark .btn-close {
    filter: invert(1) grayscale(1) brightness(2);
}

/* --- Таблицы --- */
body.sidebar-theme-dark .table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--gc-text);
    --bs-table-border-color: var(--gc-border);
    --bs-table-striped-bg: var(--gc-surface-2);
    --bs-table-striped-color: var(--gc-text);
    --bs-table-hover-bg: var(--gc-surface-3);
    --bs-table-hover-color: var(--gc-text-strong);
    color: var(--gc-text);
    border-color: var(--gc-border);
}

body.sidebar-theme-dark .table > thead th,
body.sidebar-theme-dark .table > thead td {
    color: var(--gc-text-strong);
    background-color: var(--gc-surface-2);
    border-color: var(--gc-border-strong);
}

body.sidebar-theme-dark .table > tbody td,
body.sidebar-theme-dark .table > tbody th {
    border-color: var(--gc-border);
}

/* --- Формы --- */
body.sidebar-theme-dark .form-control,
body.sidebar-theme-dark .form-select,
body.sidebar-theme-dark .input-group-text,
body.sidebar-theme-dark textarea,
body.sidebar-theme-dark select,
body.sidebar-theme-dark input[type="text"],
body.sidebar-theme-dark input[type="number"],
body.sidebar-theme-dark input[type="email"],
body.sidebar-theme-dark input[type="tel"],
body.sidebar-theme-dark input[type="search"],
body.sidebar-theme-dark input[type="password"],
body.sidebar-theme-dark input[type="date"],
body.sidebar-theme-dark input[type="datetime-local"],
body.sidebar-theme-dark input[type="time"] {
    color: var(--gc-text);
    background-color: var(--gc-surface-inset);
    border-color: var(--gc-border-strong);
}

body.sidebar-theme-dark .form-control:focus,
body.sidebar-theme-dark .form-select:focus {
    color: var(--gc-text);
    background-color: var(--gc-surface-inset);
    border-color: var(--gc-accent);
    box-shadow: 0 0 0 0.2rem var(--gc-accent-soft);
}

body.sidebar-theme-dark .form-control::placeholder,
body.sidebar-theme-dark textarea::placeholder {
    color: var(--gc-text-subtle);
}

body.sidebar-theme-dark .form-label,
body.sidebar-theme-dark label,
body.sidebar-theme-dark legend {
    color: var(--gc-text);
}

body.sidebar-theme-dark .form-check-input {
    background-color: var(--gc-surface-inset);
    border-color: var(--gc-border-strong);
}

body.sidebar-theme-dark .form-check-input:checked {
    background-color: var(--gc-accent);
    border-color: var(--gc-accent);
}

/* --- Навигация и выпадающие списки --- */
body.sidebar-theme-dark .dropdown-menu {
    color: var(--gc-text);
    background-color: var(--gc-surface-2);
    border-color: var(--gc-border);
    box-shadow: var(--gc-shadow);
}

body.sidebar-theme-dark .dropdown-menu .dropdown-item {
    color: var(--gc-text);
}

body.sidebar-theme-dark .dropdown-menu .dropdown-item:hover,
body.sidebar-theme-dark .dropdown-menu .dropdown-item:focus {
    color: var(--gc-text-strong);
    background-color: var(--gc-accent-ghost);
}

body.sidebar-theme-dark .dropdown-divider {
    border-color: var(--gc-border);
}

body.sidebar-theme-dark .nav-tabs {
    border-bottom-color: var(--gc-border);
}

body.sidebar-theme-dark .nav-tabs .nav-link {
    color: var(--gc-text-muted);
}

body.sidebar-theme-dark .nav-tabs .nav-link:hover {
    border-color: var(--gc-border);
}

body.sidebar-theme-dark .nav-tabs .nav-link.active {
    color: var(--gc-text-strong);
    background-color: var(--gc-surface);
    border-color: var(--gc-border) var(--gc-border) var(--gc-surface);
}

body.sidebar-theme-dark .page-link {
    color: var(--gc-link);
    background-color: var(--gc-surface);
    border-color: var(--gc-border);
}

body.sidebar-theme-dark .page-item.active .page-link {
    color: var(--gc-text-on-accent);
    background-color: var(--gc-accent-solid);
    border-color: var(--gc-accent);
}

body.sidebar-theme-dark .page-item.disabled .page-link {
    color: var(--gc-text-subtle);
    background-color: var(--gc-surface-inset);
}

/* --- Утилиты Bootstrap, которые «прибивают» светлый фон --- */
body.sidebar-theme-dark .bg-white,
body.sidebar-theme-dark .bg-body,
body.sidebar-theme-dark .bg-light {
    color: var(--gc-text);
    background-color: var(--gc-surface) !important;
}

body.sidebar-theme-dark .border,
body.sidebar-theme-dark .border-top,
body.sidebar-theme-dark .border-end,
body.sidebar-theme-dark .border-bottom,
body.sidebar-theme-dark .border-start {
    border-color: var(--gc-border) !important;
}

/* --- Код и врезки --- */
body.sidebar-theme-dark pre,
body.sidebar-theme-dark code,
body.sidebar-theme-dark kbd {
    color: var(--gc-text);
    background-color: var(--gc-surface-inset);
}

/* --- Скроллбары контента --- */
body.sidebar-theme-dark ::-webkit-scrollbar-track {
    background: var(--gc-bg-soft);
}

body.sidebar-theme-dark ::-webkit-scrollbar-thumb {
    background: var(--gc-border-strong);
    border-radius: var(--gc-radius-sm);
}

/* ==========================================================================
   Правки по результатам осмотра в браузере.
   Все блоки ниже ограничены body.sidebar-theme-dark — светлая тема
   не меняется ни на пиксель. Причина указана над каждым блоком.
   ========================================================================== */

/* Шапка приложения. app_shell.css красит её жёстко светлым, а сам файл
   не трогаем — он источник стилей меню. Перекрываем адресно. */
body.sidebar-theme-dark .site-header .robot-activity-summary,
body.sidebar-theme-dark .site-header .site-hints-toggle {
    color: var(--gc-text);
    background: var(--gc-surface);
    border-color: var(--gc-border-strong);
}

body.sidebar-theme-dark .site-header__context-icon,
body.sidebar-theme-dark .site-header__brand-icon {
    color: var(--gc-accent-strong);
    background: var(--gc-accent-soft);
    border-color: var(--gc-border-strong);
}

body.sidebar-theme-dark .site-header__brand-icon--collect {
    color: var(--gc-success);
    background: var(--gc-success-soft);
    border-color: var(--gc-border-strong);
}

body.sidebar-theme-dark .site-header__breadcrumbs i,
body.sidebar-theme-dark .site-header .robot-activity-summary__updated i {
    color: var(--gc-text-subtle);
}

/* Кнопки Bootstrap со светлой заливкой: в тёмной теме у них оставался
   чёрный текст из UA-стиля. */
body.sidebar-theme-dark .btn-light,
body.sidebar-theme-dark .btn-secondary,
body.sidebar-theme-dark .btn-outline-secondary {
    color: var(--gc-text);
    background-color: var(--gc-surface-2);
    border-color: var(--gc-border-strong);
}

body.sidebar-theme-dark .btn-light:hover,
body.sidebar-theme-dark .btn-secondary:hover,
body.sidebar-theme-dark .btn-outline-secondary:hover {
    color: var(--gc-text-strong);
    background-color: var(--gc-surface-3);
    border-color: var(--gc-border-strong);
}

/* Кнопки без собственных классов наследуют чёрный цвет из UA-стиля.
   Раньше здесь стоял :not(.btn):not([class*="btn-"]) — он оказался
   специфичнее компонентных правил и перекрывал их собственный цвет. */
body.sidebar-theme-dark button:not([class]) {
    color: var(--gc-text);
}

/* Карточка тестового звонка задаёт фон инлайном (#B0C4DE), перебить
   можно только !important. */
body.sidebar-theme-dark .call-card {
    background: var(--gc-surface-2) !important;
}

/* Локальные палитры компонентов объявлены на своих корневых селекторах,
   поэтому и переопределять их надо там же — на body они не действуют.
   Смысловые BEM-модификаторы (типы звонков, варианты кнопок) пропущены:
   их цвет несёт различение, а не оформление. Только тёмная тема. */

/* accounting.css */
body.sidebar-theme-dark:has(.accounting-page) {
    --accounting-border: var(--gc-border-strong);
    --accounting-text: var(--gc-text);
}

/* accounting.css */
body.sidebar-theme-dark .accounting-page {
    --accounting-border: var(--gc-border-strong);
    --accounting-text: var(--gc-text);
}

/* admin_audit.css */
body.sidebar-theme-dark .admin-audit {
    --audit-error: var(--gc-danger);
    --audit-warning: var(--gc-warning);
}

/* admin_system_prompts.css */
body.sidebar-theme-dark .system-prompts-page {
    --sp-accent: var(--gc-link);
    --sp-accent-dark: var(--gc-link);
    --sp-border: var(--gc-border);
    --sp-muted: var(--gc-text-muted);
    --sp-text: var(--gc-text);
    --sp-surface-muted: var(--gc-surface);
}

/* call_statistics_dashboard.css */
body.sidebar-theme-dark .call-statistics-page {
    --cs-blue: var(--gc-link);
    --cs-blue-dark: var(--gc-link);
    --cs-blue-bright: var(--gc-link);
    --cs-blue-soft: var(--gc-accent-soft);
    --cs-green: var(--gc-success);
    --cs-green-soft: var(--gc-success-soft);
    --cs-amber: var(--gc-warning);
    --cs-amber-soft: var(--gc-warning-soft);
    --cs-orange: var(--gc-warning);
    --cs-red: var(--gc-danger);
    --cs-cyan: var(--gc-link);
    --cs-slate: var(--gc-text-muted);
    --cs-ink: var(--gc-text);
    --cs-muted: var(--gc-text-muted);
    --cs-border: var(--gc-border);
    --cs-surface: var(--gc-surface);
    --cs-surface-muted: var(--gc-surface-2);
    --cs-success-text: var(--gc-success);
}

/* group_action_buttons.css */
body.sidebar-theme-dark .group-action-btn {
    --action-bg: var(--gc-surface);
    --action-border: var(--gc-border);
    --action-hover-bg: var(--gc-surface-2);
    --action-hover-border: var(--gc-border-strong);
}

/* group_quick_setup.css */
body.sidebar-theme-dark .group-quick-setup {
    --gqs-accent: var(--gc-link);
    --gqs-accent-hover: var(--gc-link);
    --gqs-bg-light: var(--gc-surface);
    --gqs-border: var(--gc-border);
    --gqs-border-focus: var(--gc-border-strong);
    --gqs-text-main: var(--gc-text);
    --gqs-text-muted: var(--gc-text-muted);
    --gqs-danger: var(--gc-danger);
    --gqs-danger-bg: var(--gc-danger-soft);
    --gqs-danger-border: var(--gc-danger);
    --gqs-success: var(--gc-success);
    --gqs-success-hover: var(--gc-success);
    --gqs-card-border: var(--gc-border);
    --gqs-card-hover-border: var(--gc-border-strong);
    --gqs-card-selected-border: var(--gc-border-strong);
}

/* info_page.css */
body.sidebar-theme-dark .summary-page {
    --summary-primary: var(--gc-link);
    --summary-primary-dark: var(--gc-link);
    --summary-accent: var(--gc-link);
    --summary-surface: var(--gc-surface);
    --summary-border: var(--gc-border);
}

/* info_page.css */
body.sidebar-theme-dark .summary-excluded-action-modal {
    --excluded-modal-primary: var(--gc-link);
    --excluded-modal-primary-dark: var(--gc-link);
    --excluded-modal-success: var(--gc-success);
}

/* legal_footer.css */
body.sidebar-theme-dark .app-legal-footer {
    --legal-footer-border: var(--gc-border);
    --legal-footer-text: var(--gc-text);
    --legal-footer-muted: var(--gc-text-muted);
    --legal-footer-strong: var(--gc-text);
    --legal-footer-link: var(--gc-link);
}

/* personal_cabinet.css */
body.sidebar-theme-dark .cab-modal {
    --cab-indigo: var(--gc-accent-alt);
    --cab-violet: var(--gc-accent-alt);
    --cab-border: var(--gc-border);
    --cab-ink: var(--gc-text);
    --cab-muted: var(--gc-text-muted);
}

/* script_editor.css */
body.sidebar-theme-dark .script-editor-header {
    --seh-line: var(--gc-border);
    --seh-ink: var(--gc-text);
    --seh-muted: var(--gc-text-muted);
    --seh-accent: var(--gc-link);
    /* rail и soft — светлые поверхности панели вкладок; без них
       вкладки оставались на белой подложке со светлым текстом. */
    --seh-rail: var(--gc-surface-2);
    --seh-soft: var(--gc-surface-3);
}

/* Внутренняя светлая подсветка панели вкладок читалась как яркая линия. */
body.sidebar-theme-dark .script-editor-layer-rail {
    box-shadow: inset 0 1px 0 var(--gc-border);
}

/* Залитая кнопка на дашборде статистики: --cs-blue в тёмной теме светлеет,
   а текст на ней белый — нужна насыщенная заливка. */
body.sidebar-theme-dark .call-statistics-apply {
    background: var(--gc-accent-solid);
    border-color: var(--gc-accent-solid);
    color: var(--gc-text-on-accent);
}

/* Кнопка на цветной карточке баланса остаётся белой в обеих темах,
   значит её текст должен быть фиксированно тёмным. */
body.sidebar-theme-dark .accounting-balance-card__button {
    color: var(--gc-text-on-light);
}

/* Плашка расхода звонков: подложка остаётся светло-янтарной в обеих темах,
   поэтому весь текст внутри неё — фиксированно тёмный. */
body.sidebar-theme-dark .script-call-usage,
body.sidebar-theme-dark .script-call-usage *,
body.sidebar-theme-dark .prompt-call-usage,
body.sidebar-theme-dark .prompt-call-usage * {
    color: var(--gc-text-on-light) !important;
}

/* Бирюза Bootstrap под белым текстом даёт контраст 1.96 и в светлой теме.
   В тёмной делаем заливку глубже, чтобы белый текст читался. */
body.sidebar-theme-dark .bg-info,
body.sidebar-theme-dark .btn-info {
    background-color: #0b6a80 !important;
    border-color: #0b6a80;
    color: var(--gc-text-on-accent) !important;
}

/* Базовая заливка основной кнопки: --gc-accent слишком светлый под белым текстом. */
.btn-primary {
    background-color: var(--gc-accent-solid);
    border-color: var(--gc-accent-solid);
}

/* Ссылку на телефон должника рисует JS — логику скриптов не трогаем,
   поэтому цвет задаём стилем. */
body.sidebar-theme-dark .debtor-profile-link--phone {
    /* Цвет проставляет JS инлайном, поэтому без !important правило не действует. */
    color: var(--gc-link) !important;
}

/* Бейджи оператора и транка берут цвет из локальной --primary-color,
   которая в разных файлах значит разное. Задаём явно. */
body.sidebar-theme-dark .operator-badge,
body.sidebar-theme-dark .operator-badge-row,
body.sidebar-theme-dark .trunk-badge,
body.sidebar-theme-dark .trunk-badge-row {
    color: var(--gc-text-muted);
}

/* Чипы статусов звонка — ссылки с фиксированной пастельной подложкой,
   поэтому текст на них тёмный в обеих темах. Варианты --robot и --operator
   не перечислены: у них подложка тематическая и темнеет вместе с темой. */
body.sidebar-theme-dark .call-color-chip--no-lines,
body.sidebar-theme-dark .call-color-chip--operator-no-call,
body.sidebar-theme-dark .call-color-chip--potential,
body.sidebar-theme-dark .call-color-chip--recall,
body.sidebar-theme-dark .call-color-chip--inbound,
body.sidebar-theme-dark .call-color-chip--inbound-no-name {
    color: var(--gc-text-on-light);
}

/* ==========================================================================
   Светлые границы, оставшиеся в тёмной теме.
   ========================================================================== */

/* Bootstrap рисует разделитель под шапкой таблицы как
   `border-top: 2px solid currentcolor` — в тёмной теме currentcolor
   это светлый текст, и получалась яркая полоса на всю ширину. */
body.sidebar-theme-dark .table > :not(:first-child) {
    border-top-color: var(--gc-border-strong);
}

/* Кнопка-гамбургер и пагинация: границы заданы светлыми в app_shell.css
   и Bootstrap соответственно. */
body.sidebar-theme-dark .openbtn,
body.sidebar-theme-dark .app-shell-toggle,
body.sidebar-theme-dark .pagination .page-link,
body.sidebar-theme-dark a.page-link {
    border-color: var(--gc-border-strong);
}

/* Правовой футер: разделители секций из legal_footer.css. */
body.sidebar-theme-dark .app-legal-footer__product,
body.sidebar-theme-dark .app-legal-footer__company,
body.sidebar-theme-dark .app-legal-footer__contacts {
    border-color: var(--gc-border);
}

/* Пунктирная рамка кнопки добавления группы и рамка бейджа с тематическим
   фоном — в тёмной теме светлая обводка выделялась как чужая. */
body.sidebar-theme-dark .add-group-btn,
body.sidebar-theme-dark .group-type-badge--generative {
    border-color: var(--gc-border-strong);
}

/* Карточки-маркеры (известный должник / без имени) в тёмной теме:
   пастельную подложку заменяем полупрозрачным тоном того же смысла —
   маркер сохраняется, а текст внутри остаётся тематическим. */
body.sidebar-theme-dark .card.lightblue-bg,
body.sidebar-theme-dark .card.classic {
    background-color: var(--gc-accent-soft);
}

body.sidebar-theme-dark .card.yellow-bg,
body.sidebar-theme-dark .card.yellow {
    background-color: var(--gc-warning-soft);
}

/* Пузыри диалога — простой текст на фиксированной пастели,
   здесь тёмный цвет как раз нужен. */
body.sidebar-theme-dark .message-text {
    color: var(--gc-text-on-light);
}

/* В палитрах страниц --primary-dark служит и заливкой, и цветом текста.
   Заливку не трогаем, а текстовое применение (подзаголовок карточки)
   осветляем, иначе индиго сливается с тёмной поверхностью. */
body.sidebar-theme-dark .card-subtitle {
    color: var(--gc-accent-alt);
}

/* ==========================================================================
   Граф редактора скриптов (HTML-метки узлов поверх Cytoscape).
   Узлы намеренно остаются светлыми в обеих темах: их фон — градиент от
   пастели типа (развилка/старт/конец/ИИ/робот) к белому, и тонировать его
   под тёмную тему значит терять узнаваемость типов. Вместо перекраски
   возвращаем внутри узла светлые значения токенов — узел рендерится
   ровно так же, как в светлой теме, вместе с бейджами, подписями и рамками.
   ========================================================================== */

body.sidebar-theme-dark .cy-node-label,
body.sidebar-theme-dark .cy-portal-label,
body.sidebar-theme-dark .cy-portal-entry-arrow {
    --gc-surface: #ffffff;
    --gc-surface-2: #f4f8fc;
    --gc-surface-3: #e5eef6;
    --gc-surface-inset: #dce8f1;
    --gc-text: #172033;
    --gc-text-strong: #10233a;
    --gc-heading: #17304d;
    --gc-text-muted: #687d96;
    --gc-text-subtle: #7e96ad;
    --gc-border: #dce6f1;
    --gc-border-strong: #c4d4e2;
    --gc-link: #1e5f9d;
    --gc-accent-soft: #dcebf8;
}
