/* ══════════════════════════════════════════════════════════
   THEME: Dark Classic (dark)
   ──────────────────────────────────────────────────────────
   Activated by body[data-theme="dark-classic"] in base.html
   (+ data-bs-theme="dark" на body — нативный тёмный Bootstrap).
   Тёмная версия classic-палитры: slate-фоны, тот же синий
   акцент, статус-цвета в тех же hue. Спека:
   docs/superpowers/specs/2026-07-17-dark-theme-design.md
   NB: --gantt-* и --sidebar-* НЕ переопределяем — они dark by design.
   ══════════════════════════════════════════════════════════ */

body[data-theme="dark-classic"] {
    color-scheme: dark;

    /* === SURFACES === */
    --bg-page:               #0f172a;   /* slate-900 */
    --bg-card:               #1e293b;   /* slate-800 */
    --bg-subtle:             #283548;
    --bg-elevated:           #243044;
    --bg-tinted-blue:        #1e3a5f;
    --bg-tinted-warning:     #3b3320;
    --bg-tinted-success:     #16321f;
    --bg-tinted-danger:      #3a2226;

    /* === BORDERS === */
    --border-strong:         #475569;   /* slate-600 */
    --border-default:        #334155;   /* slate-700 */
    --border-subtle:         #283548;

    /* === TEXT === */
    --text-primary:          #e2e8f0;   /* slate-200 */
    --text-secondary:        #94a3b8;   /* slate-400 */
    --text-tertiary:         #64748b;   /* slate-500 */
    --text-inverse:          #ffffff;
    --text-link:             #60a5fa;   /* blue-400 */

    /* === ACCENT (тот же синий, ярче для тёмного) === */
    --accent-primary:                 #3b82f6;  /* blue-500: кнопки с белым текстом */
    --accent-primary-hover:           #60a5fa;  /* на тёмном hover — светлее */
    --accent-primary-soft:            #1e3a5f;
    --accent-primary-soft-strong:     #27497a;
    --accent-primary-border:          #3b6cb0;
    --accent-primary-text:            #ffffff;

    /* === STATUS (те же hue, яркость под тёмный фон) === */
    --status-success:        #22c55e;
    --status-success-soft:   #16321f;
    --status-success-text:   #4ade80;
    --status-warning:        #eab308;
    --status-warning-soft:   #3b3320;
    --status-warning-text:   #fbbf24;
    --status-danger:         #ef4444;
    --status-danger-soft:    #3a2226;
    --status-danger-text:    #f87171;
    --status-info:           #0ea5e9;
    --status-info-soft:      #12303f;
    --status-info-text:      #38bdf8;

    /* === LOGISTICS (модуль «Рейсы», Task C2) — хоз. рейс без проекта === */
    --logi-hoz-bg:           #3a1930;
    --logi-hoz-border:       #ec4899;
    --logi-hoz-text:         #f472b6;

    /* === TEXT EXTENSIONS === */
    --text-strong:           #f8fafc;
    --text-emphasis:         #f8fafc;
    --text-ink:              #f1f5f9;
    --gray-text-strong:      #cbd5e1;
    --gray-text-mid:         #94a3b8;
    --gray-text-soft:        #64748b;
    --gray-bg-soft:          #283548;

    /* === STATUS EXTENSIONS === */
    --status-success-strong: #4ade80;
    --status-success-strong-hover: #86efac;
    --success-deep-text:     #34d399;
    --success-deep-text-hover: #6ee7b7;
    --accent-text-deep:      #93c5fd;
    --warning-bg-softest:    #33290f;
    --warning-text-deep:     #fbbf24;
    --chip-warning-text:     #fcd34d;
    --chip-danger-text:      #fca5a5;
    --chip-danger-bg:        #450a0a;
    --chip-danger-border:    #7f1d1d;
    --chip-neutral-bg:       #334155;
    --chip-neutral-text:     #cbd5e1;
    --info-chip-bg:          #0c3346;
    --info-chip-text:        #38bdf8;

    /* === SPARE / TRANSFER === */
    --spare-accent:          #fb923c;
    --spare-border-soft:     #7c2d12;
    --transfer-accent:       #22d3ee;
    --transfer-border-soft:  #155e75;
    --transfer-bg-soft:      #103a43;

    /* === COMPONENT TINTS === */
    --rack-child-bg:         #14301c;
    --folder-row-bg:         #173424;
    --subrent-block-bg:      #243044;
    --subrent-toggle-active-bg: #232a4d;
    --combo-soft-bg:         #2a2440;
    --combo-soft-bg-2:       #262038;
    --combo-soft-bg-hover:   #332a52;
    --combo-soft-border:     #4c3d78;
    --accent-selected-hover: #2f5a8f;
    --input-border-soft:     #475569;
    --text-caps:             #cbd5e1;
    --text-title:            #f8fafc;
    --text-heading:          #f1f5f9;
    --text-gray-500:         #9ca3af;

    /* === ACCENT EXTENSIONS === */
    --accent-bright:         #60a5fa;
    --accent-deep:           #64a9f0;
    --bs-accent:             #4d94ff;
    --warning-bright:        #fbbf24;

    /* === LEGACY GRAY SURFACES === */
    --gray-border-soft:      #334155;
    --gray-bg-softest:       #243044;
    --bg-tinted-success-soft: #10241a;
    --bg-chip-slate:         #334155;

    /* === ROSE === */
    --rose-accent:           #fb7185;
    --rose-bg-soft:          #3a1a20;
    --rose-border-soft:      #7f1d2d;

    /* === ДОБОРНЫЕ СТАТУС-ОТТЕНКИ === */
    --amber-border-soft:     #78350f;
    --amber-text-deep:       #fcd34d;
    --success-border-soft:   #14532d;
    --teardown-accent:       #22d3ee;

    --row-hover-bg:          #223049;
    --scanner-banner-bg:     #14321f;
    --scanner-banner-border: #166534;
    --scanner-banner-blue-bg: #16324f;
    --scanner-banner-blue-border: #1e4976;
    --panel-head-bg:         #1a2740;
    --deep-navy-text:        #93c5fd;
    --indigo-chip-bg:        #26264d;
    --indigo-chip-text:      #a5b4fc;
    --selected-warm-bg:      #3a3110;
    --gantt-weekend-bg:      #1c2940;
    --gantt-grid-line:       #33415e;

    /* === КАЛЕНДАРЬ ПЕРСОНАЛА === */
    --bg-tinted-orange:      #33231a;
    --staffcal-even-bg:      #223049;
    --staffcal-even-hdr:     #1a2740;
    --staffcal-even-subhdr:  #182338;

    /* === BOOTSTRAP BRIDGE (выравниваем BS-dark под slate) === */
    --bs-body-bg:            var(--bg-page);
    --bs-body-color:         var(--text-primary);
    --bs-emphasis-color:     #f8fafc;
    --bs-secondary-color:    var(--text-secondary);
    --bs-tertiary-color:     var(--text-tertiary);
    --bs-secondary-bg:       var(--bg-subtle);
    --bs-tertiary-bg:        var(--bg-elevated);
    --bs-border-color:       var(--border-default);
    --bs-link-color:         var(--text-link);
    --bs-link-hover-color:   #93c5fd;
    --bs-info-rgb:           21, 94, 117;    /* .bg-info → cyan-800, белый текст читаем */
    --bs-light-rgb:          40, 53, 72;     /* .bg-light → slate-подложка */

    /* === FULLCALENDAR BRIDGE (сетка календаря проектов) === */
    --fc-page-bg-color:      var(--bg-card);
    --fc-neutral-bg-color:   var(--bg-subtle);
    --fc-border-color:       var(--border-default);
    --fc-today-bg-color:     rgba(59, 130, 246, 0.12);
    --fc-list-event-hover-bg-color: var(--bg-subtle);
}

/* === BOOTSTRAP-КОМПОНЕНТЫ, не подхватывающие data-bs-theme === */
body[data-theme="dark-classic"] .table-light {
    --bs-table-bg: var(--bg-subtle);
    --bs-table-color: var(--text-primary);
    --bs-table-border-color: var(--border-default);
    --bs-table-striped-bg: var(--bg-subtle);
    --bs-table-hover-bg: var(--bg-elevated);
    color: var(--text-primary);
    border-color: var(--border-default);
}
body[data-theme="dark-classic"] .table-success {
    --bs-table-bg: #14321f; --bs-table-color: var(--text-primary); color: var(--text-primary);
}
body[data-theme="dark-classic"] .table-warning {
    --bs-table-bg: #3b3320; --bs-table-color: var(--text-primary); color: var(--text-primary);
}
body[data-theme="dark-classic"] .table-danger {
    --bs-table-bg: #3a2226; --bs-table-color: var(--text-primary); color: var(--text-primary);
}
body[data-theme="dark-classic"] .archive-banner {
    background: #332701;
    border-color: #997404;
}
/* .bg-light выше перелит в тёмный slate, а .text-dark берёт --bs-dark-rgb
   (#212529) — пара «badge bg-light text-dark» давала тёмное по тёмному.
   Целимся ТОЛЬКО в эту пару: на фиксированно-светлых заливках
   (.bg-warning text-dark) литеральный тёмный текст обязан остаться. */
body[data-theme="dark-classic"] .bg-light.text-dark,
body[data-theme="dark-classic"] .bg-white.text-dark {
    color: var(--text-primary) !important;
}
/* .bg-white не перекрашивается data-bs-theme (это literal-белый утилити).
   Все её потребители в проекте — UI-панели (карточка субаренд-дашборда,
   вкладки импорта, вывод truss-калькулятора), а не «бумага» для печати. */
body[data-theme="dark-classic"] .bg-white {
    background-color: var(--bg-card) !important;
}

/* Панель множественного выделения сметы: «инверсная» плашка сидит на
   var(--est-text) как на фоне — в dark текст-токен светлеет и панель
   становится светлой под белым текстом. Даём ей elevated-тёмный фон. */
body[data-theme="dark-classic"] .selection-toolbar {
    background: var(--bg-elevated);
    border: 1px solid var(--border-strong);
    box-shadow: 0 4px 24px rgba(0,0,0,.5);
}
body[data-theme="dark-classic"] .selection-toolbar select option {
    background: var(--bg-elevated);
}

/* Приёмка: шапка довозов, тулбар, numpad, зелёная панель */
body[data-theme="dark-classic"] .extras-header { background: #2a1f3d; }
body[data-theme="dark-classic"] .shipment-item.has-extras { background: #2a1f3d; }
/* Дашборд склада, карточка «Приёмка возвратов»: светлый violet-градиент
   остался литеральным, а текст внутри — токенный (в dark светлеет).
   Заливка pending-иконки (#7c3aed + белый) специфичнее — её не трогаем. */
body[data-theme="dark-classic"] .acceptance-card.has-pending {
    background: linear-gradient(135deg, #2a1f3d 0%, #241a35 100%);
    border-color: #7c3aed;
}
body[data-theme="dark-classic"] .acceptance-icon { background: #2e2450; color: #a78bfa; }
body[data-theme="dark-classic"] .acceptance-count.has-pending { color: #a78bfa; }
body[data-theme="dark-classic"] .acpt-toolbar { background: var(--bg-subtle); border-color: var(--border-default); }
body[data-theme="dark-classic"] .acc-numpad-grid button:active { background: #475569; }
body[data-theme="dark-classic"] .acc-numpad-confirm:disabled { background: #334155; }
body[data-theme="dark-classic"] .acc-numpad-quick button { background: var(--bg-tinted-success-soft); }

/* Погрузочная (loading_list_detail): страница несёт локальный :root со светлыми
   значениями — body[data-theme] специфичнее :root, перекрываем проблемные.
   --bg-hover = #fafafa давал белую hover-строку под светлым текстом. */
body[data-theme="dark-classic"] { --bg-hover: #243044; }
/* Numpad погрузочной — зеркало acc-numpad выше (тот же попап, другие классы). */
body[data-theme="dark-classic"] .ll-numpad-grid button:active { background: #475569; }
body[data-theme="dark-classic"] .ll-numpad-confirm:disabled { background: #334155; }
body[data-theme="dark-classic"] .ll-numpad-quick button { background: var(--bg-tinted-success-soft); }
body[data-theme="dark-classic"] .ll-numpad-reset { background: #33231a; color: #fb923c; }

/* Bootstrap .btn-outline-dark (кнопка «Роли» и др.): почти-чёрные текст/бордер
   невидимы на тёмном фоне — нейтральный светлый outline. */
body[data-theme="dark-classic"] .btn-outline-dark {
    --bs-btn-color: #cbd5e1;
    --bs-btn-border-color: #475569;
    --bs-btn-hover-color: #ffffff;
    --bs-btn-hover-bg: #334155;
    --bs-btn-hover-border-color: #64748b;
    --bs-btn-active-color: #ffffff;
    --bs-btn-active-bg: #475569;
    --bs-btn-active-border-color: #64748b;
    --bs-btn-disabled-color: #64748b;
    --bs-btn-disabled-border-color: #334155;
}

/* Профиль: hover строк проектов и карточек-кандидатов */
body[data-theme="dark-classic"] .project-row:hover { background: var(--row-hover-bg); }
body[data-theme="dark-classic"] .candidate-card:hover { background: var(--bg-tinted-blue); }

/* Вкладка «Персонал»: слоты, договорная цена (чипы/чат-пузыри) */
body[data-theme="dark-classic"] .st-slot-seg { background: #2c3a55; }
body[data-theme="dark-classic"] .st-rate-pending { background: #332701; border-color: #997404; color: #fbbf24; }
body[data-theme="dark-classic"] .st-rate-msg-st { background: #243044; }
body[data-theme="dark-classic"] .st-rate-msg-co { background: #1c3326; }

/* Орг-календарь: сухая аренда / отменённые / штриховка планирования */
body[data-theme="dark-classic"] .fc-event.dry-rental {
    border-color: #94a3b8 !important;
    color: #e2e8f0 !important;
}
body[data-theme="dark-classic"] .fc-event.dry-rental .fc-event-title,
body[data-theme="dark-classic"] .fc-event.dry-rental .fc-event-time { color: #e2e8f0; }
body[data-theme="dark-classic"] .fc-event.project-cancelled {
    background: linear-gradient(transparent calc(50% - 1px), #94a3b8 calc(50% - 1px), #94a3b8 calc(50% + 1px), transparent calc(50% + 1px)), var(--bg-card) !important;
}
body[data-theme="dark-classic"] .fc-event.dry-rental.setup-event {
    background: repeating-linear-gradient(-45deg, var(--bg-card), var(--bg-card) 3px, #334155 3px, #334155 6px) !important;
}

/* Статус-чипы календаря персонала: пастель → тёмный тинт + яркий текст */
body[data-theme="dark-classic"] .staff-cal-grid .stat-vacation { background:#3a1a2b; color:#f472b6; }
body[data-theme="dark-classic"] .staff-cal-grid .stat-sick { background:#33231a; color:#fb923c; }
body[data-theme="dark-classic"] .staff-cal-grid .stat-dayoff { background:#2e1f3a; color:#c084fc; }
body[data-theme="dark-classic"] .staff-cal-grid .stat-project { background:#33261a; color:#fdba74; }

/* === КОМПОНЕНТНЫЕ OVERRIDE (one-off rose-хвост панели уведомлений) === */
body[data-theme="dark-classic"] #notif-panel .notif-header-btn-danger {
    color: #fb7185; border-color: #7f1d2d;
}
body[data-theme="dark-classic"] #notif-panel .notif-header-btn-danger:hover {
    background: #3a1a20;
}
body[data-theme="dark-classic"] #notif-panel .notif-delete:hover {
    color: #fb7185; background: #3a1a20;
}

/* === SCROLLBARS === */
body[data-theme="dark-classic"] {
    scrollbar-color: #334155 #0f172a;             /* Firefox */
}
body[data-theme="dark-classic"] ::-webkit-scrollbar {
    width: 10px; height: 10px;
}
body[data-theme="dark-classic"] ::-webkit-scrollbar-track {
    background: #0f172a;
}
body[data-theme="dark-classic"] ::-webkit-scrollbar-thumb {
    background: #334155; border-radius: 5px;
}
body[data-theme="dark-classic"] ::-webkit-scrollbar-thumb:hover {
    background: #475569;
}

/* === ОФЕР (offer_upload.html) — захардкоженные светлые фоны таблицы === */
body[data-theme="dark-classic"] .offer-table tr.section-header td {
    background: #1e293b;                          /* было #e3f2fd */
}
body[data-theme="dark-classic"] .offer-table td.comment {
    background: #1e2a44 !important;               /* было #e3f2fd !important */
}
body[data-theme="dark-classic"] .offer-table td.filled {
    background: #14532d;                          /* было #a5d6a7 */
    color: #dcfce7;
}
body[data-theme="dark-classic"] .offer-table td.filled:hover {
    background: #166534;                          /* было #81c784 */
}
body[data-theme="dark-classic"] .offer-table td.droppable.drop-highlight {
    background: #1e3a5f !important;               /* было #bbdefb !important */
}
body[data-theme="dark-classic"] .drop-zone:hover,
body[data-theme="dark-classic"] .drop-zone.dragover {
    background: #12291a;                          /* было #e8f5e9 */
}
