/* ==========================================================================
   theme.css — тёмная тема (data-bs-theme="dark" на <html>)
   Подключается ПОСЛЕ bootstrap.css и ДО page-<style> (block extra_css).

   Правила специфичности (см. ТЗ docs/dark_theme_proposal_2026-10-31.md §6.1):
   - оверрайды переменных — только :root[data-bs-theme="dark"]  → (0,2,0),
     сильнее :root в <style> страниц независимо от порядка подключения;
   - обычные правила — [data-bs-theme="dark"] …                  → префикс.
   Против inline !important правим на месте, а не оверрайдом.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Реестровые палитры.
   Светлые значения объявлены в <style> страниц:
     --ctr-*  contracts/list.html, payments_list.html
     --tmr-*  timer/record_list.html
     --inv-*  investments/project_list.html, sourcing/candidate_list.html и др.
     --nts-*  notes/_list_styles.html
   -bg приравнен к --bs-body-bg: страницы реестров красят body через
   var(--*-bg), а глобальное правило body ниже выравнивает все приложения.
   -------------------------------------------------------------------------- */
:root[data-bs-theme="dark"] {
    --ctr-bg: var(--bs-body-bg);          --inv-bg: var(--bs-body-bg);
    --tmr-bg: var(--bs-body-bg);          --nts-bg: var(--bs-body-bg);

    --ctr-card: #252b3b;                  --inv-card: #252b3b;
    --tmr-card: #252b3b;                  --nts-card: #252b3b;

    --ctr-accent: #6d9ef1;                --inv-accent: #6d9ef1;
    --tmr-accent: #6d9ef1;                --nts-accent: #6d9ef1;
    --ctr-accent-soft: #1c2a4a;           --inv-accent-soft: #1c2a4a;
    --tmr-accent-soft: #1c2a4a;           --nts-accent-soft: #1c2a4a;

    --ctr-green: #42c98f;                 --inv-green: #42c98f;
    --tmr-green: #42c98f;
    --ctr-green-soft: #12352a;            --inv-green-soft: #12352a;
    --tmr-green-soft: #12352a;

    --ctr-red: #f07178;                   --inv-red: #f07178;
    --tmr-red: #f07178;
    --ctr-red-soft: #3a2024;              --inv-red-soft: #3a2024;
    --tmr-red-soft: #3a2024;

    --ctr-amber: #f2b544;                 --inv-amber: #f2b544;
    --tmr-amber: #f2b544;
    --ctr-amber-soft: #3a2f14;             --inv-amber-soft: #3a2f14;
    --tmr-amber-soft: #3a2f14;

    --ctr-gray: #9ca3af;                  --inv-gray: #9ca3af;
    --tmr-gray: #9ca3af;                  --nts-gray: #9ca3af;

    --ctr-border: #363e54;                --inv-border: #363e54;
    --tmr-border: #363e54;                --nts-border: #363e54;

    --ctr-shadow: 0 1px 3px rgba(0,0,0,.35), 0 4px 12px rgba(0,0,0,.25);
    --inv-shadow: 0 1px 3px rgba(0,0,0,.35), 0 4px 12px rgba(0,0,0,.25);
    --tmr-shadow: 0 1px 3px rgba(0,0,0,.35), 0 4px 12px rgba(0,0,0,.25);
    --nts-shadow: 0 1px 3px rgba(0,0,0,.35), 0 4px 12px rgba(0,0,0,.25);

    /* Расширенные семантические переменные (используются в правилах страниц
       как var(--*-x, #светлое_значение) — светлая тема читает fallback) */
    --ctr-text: #dee2e6;                 --inv-text: #dee2e6;
    --tmr-text: #dee2e6;                 --nts-text: #dee2e6;
    --ctr-title: #f1f3f5;                --inv-title: #f1f3f5;
    --tmr-title: #f1f3f5;                --nts-title: #f1f3f5;
    --ctr-border-soft: #2a3042;          --inv-border-soft: #2a3042;
    --tmr-border-soft: #2a3042;          --nts-border-soft: #2a3042;
    --ctr-input: #232939;                --inv-input: #232939;
    --tmr-input: #232939;                --nts-input: #232939;
    --ctr-thead: #1c2234;                --inv-thead: #1c2234;
    --tmr-thead: #1c2234;                --nts-thead: #1c2234;
    --ctr-thead-hover: #232a3d;          --inv-thead-hover: #232a3d;
    --tmr-thead-hover: #232a3d;          --nts-thead-hover: #232a3d;
    --ctr-row-hover: #232a3d;            --inv-row-hover: #232a3d;
    --tmr-row-hover: #232a3d;            --nts-row-hover: #232a3d;
    --ctr-pinned: #2b2818;               --inv-pinned: #2b2818;
    --tmr-pinned: #2b2818;               --nts-pinned: #2b2818;
    --ctr-pinned-hover: #342e1a;         --inv-pinned-hover: #342e1a;
    --tmr-pinned-hover: #342e1a;         --nts-pinned-hover: #342e1a;
    --ctr-closed-bg: #232939;           --inv-closed-bg: #232939;
    --tmr-closed-bg: #232939;           --nts-closed-bg: #232939;
    --ctr-closed-hover: #2d3346;         --inv-closed-hover: #2d3346;
    --tmr-closed-hover: #2d3346;         --nts-closed-hover: #2d3346;
    /* Акцентный текст (выбранная компания/источник), бирюзовые цифры */
    --ctr-accent-text: #8fb4f5;          --inv-accent-text: #8fb4f5;
    --src-accent-text: #8fb4f5;
    --ctr-teal: #5fd0e0;                 --tmr-teal: #5fd0e0;
    /* investments: выполненная задача, редактируемая операция */
    --inv-done-bg: #12352a;
    --inv-edit-bg: #3a2f14;              --inv-edit-bd: #5c4a1e;
    /* timer/base: рамка .form-control (страницы matrix/news/notes/events) */
    --tmr-form-border: var(--bs-border-color);
    /* notes: полоска «без группы» */
    --nts-bar-none: #4a5169;
    /* avia_supply: приглушённый текст бейджа superseded */
    --as-muted: #7c8595;
    --nts-green: #42c98f;                --nts-green-soft: #12352a;
    --nts-red: #f07178;                  --nts-red-soft: #3a2024;
    --nts-amber: #f2b544;                --nts-amber-soft: #3a2f14;

    /* waybills: акцент сайдбара/стат-карточек */
    --wb-primary: #6d9ef1;

    /* contracts/payments_list: локальная палитра --pm-* */
    --pm-bg: var(--bs-body-bg);
    --pm-card: #252b3b;
    --pm-accent: #6d9ef1;
    --pm-green: #42c98f;
    --pm-red: #f07178;
    --pm-border: #363e54;
    --pm-shadow: 0 1px 3px rgba(0,0,0,.35), 0 4px 12px rgba(0,0,0,.25);

    /* sourcing/run_create: локальная палитра --src-* */
    --src-bg: var(--bs-body-bg);
    --src-card: #252b3b;
    --src-accent: #6d9ef1;
    --src-accent-soft: #1c2a4a;
    --src-green: #42c98f;
    --src-green-soft: #12352a;
    --src-red: #f07178;
    --src-red-soft: #3a2024;
    --src-amber: #f2b544;
    --src-amber-soft: #3a2f14;
    --src-gray: #9ca3af;
    --src-border: #363e54;
    --src-shadow: 0 1px 3px rgba(0,0,0,.35), 0 4px 12px rgba(0,0,0,.25);
    --src-text: #dee2e6;
    --src-title: #f1f3f5;
}

/* --------------------------------------------------------------------------
   2. Глобальный фон body.
   ai_studio/investments/timer base красят body светлым градиентом,
   waybills — #f4f6fb (специфичность body{} = (0,0,1) < (0,1,1)).
   Реестры (body { background: var(--*-bg) }) тоже выравниваются сюда:
   их тёмный --*-bg уже равен --bs-body-bg.
   -------------------------------------------------------------------------- */
[data-bs-theme="dark"] body {
    background: var(--bs-body-bg);
}

/* --------------------------------------------------------------------------
   3a. .table-light (шапки 22 таблиц). В BS 5.3 фон ячеек задаётся на th/td
   через --bs-table-bg, поэтому замена класса на thead (bg-body-tertiary) не
   работает — переопределяем переменные самого .table-light, как делает BS.
   -------------------------------------------------------------------------- */
[data-bs-theme="dark"] .table-light {
    --bs-table-color: var(--bs-body-color);
    --bs-table-bg: var(--bs-tertiary-bg);
    --bs-table-border-color: var(--bs-border-color);
    --bs-table-striped-bg: var(--bs-secondary-bg);
    --bs-table-striped-color: var(--bs-body-color);
    --bs-table-active-bg: var(--bs-secondary-bg);
    --bs-table-active-color: var(--bs-body-color);
    --bs-table-hover-bg: var(--bs-secondary-bg);
    --bs-table-hover-color: var(--bs-body-color);
    color: var(--bs-table-color);
    border-color: var(--bs-table-border-color);
}

/* --------------------------------------------------------------------------
   3b. Пользовательские пастельные цвета заметок (note.color).
   Вариант (а) из ТЗ: на пастели текст принудительно тёмный — читаемо
   в обеих темах. Класс ставится шаблонами _note_card.html / note_detail.html.
   -------------------------------------------------------------------------- */
[data-bs-theme="dark"] .note--colored,
[data-bs-theme="dark"] .note--colored *,
[data-bs-theme="dark"] .note--colored a {
    color: #1f2937 !important;
}
[data-bs-theme="dark"] .note--colored .btn,
[data-bs-theme="dark"] .note--colored .btn * {
    color: #1f2937 !important;
    background-color: rgba(0, 0, 0, .07);
}

/* --------------------------------------------------------------------------
   4. Сторонние виджеты: flatpickr (8 страниц), Tom-Select (payments_list).
   -------------------------------------------------------------------------- */
[data-bs-theme="dark"] .flatpickr-calendar {
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
    box-shadow: 0 0 0 1px var(--bs-border-color);
}
[data-bs-theme="dark"] .flatpickr-month,
[data-bs-theme="dark"] .flatpickr-months .flatpickr-month {
    background: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
}
[data-bs-theme="dark"] .flatpickr-weekdays,
[data-bs-theme="dark"] .flatpickr-weekday {
    background: var(--bs-tertiary-bg);
    color: var(--bs-secondary-color);
    fill: var(--bs-secondary-color);
}
[data-bs-theme="dark"] .flatpickr-day {
    color: var(--bs-body-color);
}
[data-bs-theme="dark"] .flatpickr-day:hover {
    background: var(--bs-secondary-bg);
    border-color: var(--bs-secondary-bg);
}
[data-bs-theme="dark"] .flatpickr-day.today {
    border-color: var(--bs-primary);
}
[data-bs-theme="dark"] .flatpickr-day.selected,
[data-bs-theme="dark"] .flatpickr-day.startRange,
[data-bs-theme="dark"] .flatpickr-day.endRange,
[data-bs-theme="dark"] .flatpickr-day.inRange {
    background: var(--bs-primary);
    border-color: var(--bs-primary);
    color: #fff;
}
[data-bs-theme="dark"] .flatpickr-day.flatpickr-disabled,
[data-bs-theme="dark"] .flatpickr-day.prevMonthDay,
[data-bs-theme="dark"] .flatpickr-day.nextMonthDay {
    color: var(--bs-secondary-color);
    opacity: .5;
}
[data-bs-theme="dark"] .flatpickr-time input,
[data-bs-theme="dark"] .flatpickr-time .flatpickr-time-separator,
[data-bs-theme="dark"] .flatpickr-time .flatpickr-am-pm {
    color: var(--bs-body-color);
}
[data-bs-theme="dark"] .flatpickr-time input:hover,
[data-bs-theme="dark"] .flatpickr-time input:focus {
    background: var(--bs-secondary-bg);
}

/* --------------------------------------------------------------------------
   3c. Tom-Select (bootstrap5-тема, contracts/payments_list).
   Родная bs5-тема частично адаптивна, но dropdown и опции остаются светлыми.
   -------------------------------------------------------------------------- */
[data-bs-theme="dark"] .ts-wrapper .ts-dropdown {
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}
[data-bs-theme="dark"] .ts-wrapper .ts-dropdown .active {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}
[data-bs-theme="dark"] .ts-wrapper .ts-dropdown .optgroup-header {
    background: var(--bs-tertiary-bg);
    color: var(--bs-secondary-color);
}
[data-bs-theme="dark"] .ts-wrapper.multi .ts-control > div {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}