/* ================================================
   DARK MODE
   Палитра: тёплые тёмно-синие — не жжёт глаза
   ================================================ */

/* Плавный переход только для нужных свойств */
body { transition: background-color 0.25s ease, color 0.15s ease; }
.card, .topbar, .modal-content, .form-control,
.dropdown-menu, .table, .input-group-text,
.list-group-item, .page-link {
    transition: background-color 0.25s ease, border-color 0.2s ease, color 0.15s ease;
}

body.dark-mode {
    background-color: #1a1d27;
    color: #d0d3e0;
}
body.dark-mode #wrapper,
body.dark-mode #content-wrapper,
body.dark-mode #content             { background-color: #1a1d27 !important; }
body.dark-mode .container-fluid,
body.dark-mode .container           { background-color: transparent !important; }

/* Топбар */
body.dark-mode .topbar,
body.dark-mode .navbar.bg-white,
body.dark-mode nav.bg-white {
    background-color: #242738 !important;
    box-shadow: 0 0.15rem 1.75rem rgba(0,0,0,0.5) !important;
}
body.dark-mode .topbar-divider {
    border-right-color: #3d4157 !important;
}
body.dark-mode .navbar-light .navbar-nav .nav-link,
body.dark-mode .topbar .nav-link {
    color: #9ba1bc !important;
}
body.dark-mode .topbar .nav-link:hover {
    color: #d0d3e0 !important;
}

/* bg утилиты */
body.dark-mode .bg-white   { background-color: #242738 !important; color: #d0d3e0 !important; }
body.dark-mode .bg-light   { background-color: #2b2f42 !important; color: #d0d3e0 !important; }
body.dark-mode .bg-gray-100 { background-color: #1e2130 !important; }

/* Цвета текста */
body.dark-mode .text-dark       { color: #d0d3e0 !important; }
body.dark-mode .text-muted      { color: #7a82a0 !important; }
body.dark-mode .text-gray-400   { color: #8890ad !important; }
body.dark-mode .text-gray-500   { color: #8890ad !important; }
body.dark-mode .text-gray-600   { color: #a0a8c0 !important; }
body.dark-mode .text-gray-700   { color: #bcc1d5 !important; }
body.dark-mode .text-gray-800   { color: #d0d3e0 !important; }
body.dark-mode .text-gray-900   { color: #e0e3ee !important; }
body.dark-mode .text-black-50   { color: #9ba1bc !important; }
body.dark-mode h1,body.dark-mode h2,body.dark-mode h3,
body.dark-mode h4,body.dark-mode h5,body.dark-mode h6 { color: #d0d3e0; }

/* Карточки */
/* :not() — чтобы не перебивать карточки с явным Bootstrap bg-* (например
   bg-warning/bg-danger в "Распределение нарядов" — у них своя задумка цвета) */
body.dark-mode .card:not(.bg-primary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-secondary):not(.bg-info) {
    background-color: #242738; border-color: #363a4e; color: #d0d3e0;
}
body.dark-mode .card-header { background-color: #1e2130; border-bottom-color: #363a4e; color: #d0d3e0; }
body.dark-mode .card-body   { background-color: #242738; }
body.dark-mode .card-footer { background-color: #1e2130; border-top-color: #363a4e; }

/* Приглушённые версии bg-* для тёмной темы — яркий Bootstrap-неон на тёмном фоне режет глаза */
body.dark-mode .bg-primary   { background-color: #2c4a8f !important; }
body.dark-mode .bg-success   { background-color: #1f5c3e !important; }
body.dark-mode .bg-danger    { background-color: #7a2e26 !important; }
body.dark-mode .bg-warning   { background-color: #6d5a2e !important; color: #f0e6c8 !important; }
body.dark-mode .bg-secondary { background-color: #3d4157 !important; }
body.dark-mode .bg-info      { background-color: #1f5066 !important; }

/* card-header/body/footer наследуют фон родителя .card, если у него явный
   Bootstrap bg-* (напр. цветные карточки нарядов в "Распределение нарядов") */
body.dark-mode .bg-primary .card-header,   body.dark-mode .bg-primary .card-body,   body.dark-mode .bg-primary .card-footer,
body.dark-mode .bg-success .card-header,   body.dark-mode .bg-success .card-body,   body.dark-mode .bg-success .card-footer,
body.dark-mode .bg-danger .card-header,    body.dark-mode .bg-danger .card-body,    body.dark-mode .bg-danger .card-footer,
body.dark-mode .bg-warning .card-header,   body.dark-mode .bg-warning .card-body,   body.dark-mode .bg-warning .card-footer,
body.dark-mode .bg-secondary .card-header, body.dark-mode .bg-secondary .card-body, body.dark-mode .bg-secondary .card-footer,
body.dark-mode .bg-info .card-header,      body.dark-mode .bg-info .card-body,      body.dark-mode .bg-info .card-footer {
    background-color: transparent !important;
    border-color: transparent !important;
}

/* Таблицы */
body.dark-mode .table              { color: #d0d3e0; border-color: #363a4e; }
body.dark-mode .table thead th     { background-color: #1e2130; border-color: #363a4e; color: #8890ad; }
body.dark-mode .table td,
body.dark-mode .table th           { border-color: #363a4e; }
body.dark-mode .table-bordered,
body.dark-mode .table-bordered td,
body.dark-mode .table-bordered th  { border-color: #363a4e; }
body.dark-mode .table-hover tbody tr:hover { background-color: #2b2f42; color: #d0d3e0; }
body.dark-mode .table-striped tbody tr:nth-of-type(odd) { background-color: rgba(255,255,255,0.03); }
body.dark-mode .table-responsive   { border-color: #363a4e; }

/* Формы */
body.dark-mode .form-control                { background-color: #2b2f42 !important; border-color: #454b66 !important; color: #d0d3e0 !important; }
body.dark-mode .form-control:focus          { background-color: #30344a !important; border-color: #5267dd !important; color: #d0d3e0 !important; }
body.dark-mode .form-control::placeholder   { color: #6b7190 !important; }
body.dark-mode .form-control[readonly]      { background-color: #232637 !important; }
body.dark-mode .input-group-text            { background-color: #363a4e; border-color: #454b66; color: #8890ad; }
body.dark-mode select.form-control option   { background-color: #2b2f42; color: #d0d3e0; }
body.dark-mode .custom-select               { background-color: #2b2f42; border-color: #454b66; color: #d0d3e0; }

/* Обязательное поле (.check_info) — .form-control border-color выше перебивает
   обычный .check_info без !important, поэтому даём составной селектор повыше специфичностью */
body.dark-mode .check_info,
body.dark-mode .form-control.check_info,
body.dark-mode select.check_info,
body.dark-mode textarea.check_info {
    border-color: #ff5252 !important;
    box-shadow: 0 0 0 2px rgba(255,82,82,0.25) !important;
}

/* Дропдауны */
body.dark-mode .dropdown-menu           { background-color: #242738; border-color: #363a4e; box-shadow: 0 6px 24px rgba(0,0,0,0.45); }
body.dark-mode .dropdown-item           { color: #d0d3e0; }
body.dark-mode .dropdown-item:hover,
body.dark-mode .dropdown-item:focus     { background-color: #2b2f42; color: #ffffff; }
body.dark-mode .dropdown-divider        { border-top-color: #363a4e; }
body.dark-mode .dropdown-header         { background: linear-gradient(135deg,#1e2130 0%,#252840 100%); color: #8890ad; }
body.dark-mode .dropdown-list .dropdown-item { border-bottom-color: #363a4e; }

/* Модалки */
body.dark-mode .modal-content  { background-color: #242738; border-color: #363a4e; color: #d0d3e0; }
body.dark-mode .modal-header   { background-color: #1e2130; border-bottom-color: #363a4e; }
body.dark-mode .modal-footer   { background-color: #1e2130; border-top-color: #363a4e; }
body.dark-mode .modal-body     { background-color: #242738; }
body.dark-mode .modal-title    { color: #d0d3e0; }
body.dark-mode .close,
body.dark-mode .close:hover    { color: #8890ad !important; }

/* Разделители и границы */
body.dark-mode hr                  { border-top-color: #363a4e; }
body.dark-mode .border             { border-color: #363a4e !important; }
body.dark-mode .border-bottom      { border-bottom-color: #363a4e !important; }
body.dark-mode .border-top         { border-top-color: #363a4e !important; }

/* Кнопки */
body.dark-mode .btn-secondary       { background-color: #363a4e; border-color: #454b66; color: #d0d3e0; }
body.dark-mode .btn-secondary:hover { background-color: #454b66; border-color: #545c7a; color: #fff; }
body.dark-mode .btn-light           { background-color: #363a4e; border-color: #454b66; color: #d0d3e0; }
body.dark-mode .btn-link            { color: #7b8dd8; }
body.dark-mode .btn-link:hover      { color: #9ba8e8; }
body.dark-mode .btn-danger          { background-color: #7a2e26; border-color: #7a2e26; color: #f0d3d1; }
body.dark-mode .btn-danger:hover    { background-color: #93362b; border-color: #93362b; color: #fff; }

/* Пагинация */
body.dark-mode .page-link               { background-color: #242738; border-color: #363a4e; color: #8890ad; }
body.dark-mode .page-link:hover         { background-color: #2b2f42; border-color: #454b66; color: #d0d3e0; }
body.dark-mode .page-item.active .page-link   { background-color: #4e73df; border-color: #4e73df; color: #fff; }
body.dark-mode .page-item.disabled .page-link { background-color: #1e2130; color: #5c6280; border-color: #363a4e; }

/* jQuery UI */
body.dark-mode .ui-widget-content,
body.dark-mode .ui-autocomplete,
body.dark-mode .ui-widget           { background-color: #242738 !important; border-color: #454b66 !important; color: #d0d3e0 !important; }
body.dark-mode .ui-menu-item-wrapper:hover,
body.dark-mode .ui-state-active,
body.dark-mode .ui-state-focus,
body.dark-mode .ui-state-hover      { background: #2b2f42 !important; border-color: #454b66 !important; color: #ffffff !important; }

/* Список */
body.dark-mode .list-group-item         { background-color: #242738; border-color: #363a4e; color: #d0d3e0; }
body.dark-mode .list-group-item:hover   { background-color: #2b2f42; }

/* Alert */
body.dark-mode .alert-info    { background-color: #1e2d45; border-color: #1a4a7a; color: #8ab4f8; }
body.dark-mode .alert-success { background-color: #1a2e25; border-color: #1a5235; color: #6fcf97; }
body.dark-mode .alert-warning { background-color: #2e2a14; border-color: #5c4a0a; color: #f2c94c; }
body.dark-mode .alert-danger  { background-color: #2e1a1a; border-color: #5c1a1a; color: #eb5757; }

/* Крошки */
body.dark-mode .breadcrumb          { background-color: #1e2130; }
body.dark-mode .breadcrumb-item.active { color: #8890ad; }

/* Collapse-inner сайдбара */
body.dark-mode .collapse-inner      { background-color: #242738 !important; }
body.dark-mode .collapse-item       { color: #d0d3e0 !important; }
body.dark-mode .collapse-item:hover { background-color: #2b2f42 !important; color: #fff !important; }

/* Кнопка прокрутки */
body.dark-mode .scroll-to-top       { background-color: rgba(100,110,180,0.55); }
body.dark-mode .scroll-to-top:hover { background-color: rgba(100,110,180,0.85); }

/* Тень */
body.dark-mode .shadow    { box-shadow: 0 0.15rem 1.75rem rgba(0,0,0,0.55) !important; }
body.dark-mode .shadow-sm { box-shadow: 0 0.125rem 0.5rem rgba(0,0,0,0.45) !important; }

/* Статус сессии (vgroup) */
.session-status-up    { background-color: #c7f6c7 !important; color: #155724 !important; }
.session-status-error { background-color: #ffb3b3 !important; color: #721c24 !important; }
body.dark-mode .session-status-up    { background-color: #1a3d25 !important; color: #a5d6a7 !important; }
body.dark-mode .session-status-error { background-color: #3d1a1a !important; color: #ef9a9a !important; }

/* Иконка календаря в date-инпутах */
body.dark-mode input[type="date"]::-webkit-calendar-picker-indicator,
body.dark-mode input[type="datetime-local"]::-webkit-calendar-picker-indicator,
body.dark-mode input[type="time"]::-webkit-calendar-picker-indicator,
body.dark-mode input[type="month"]::-webkit-calendar-picker-indicator {
    filter: invert(1) brightness(0.85);
    cursor: pointer;
    opacity: 0.8;
}

/* Боковое меню: менее яркий синий в тёмной теме */
body.dark-mode .sidebar.bg-gradient-primary,
body.dark-mode ul.sidebar.bg-gradient-primary {
    background-color: #1e2a5e !important;
    background-image: linear-gradient(180deg, #253070 10%, #151d45 100%) !important;
}

/* Иконка переключателя темы */
body.dark-mode .dark-mode-toggle-btn      { color: #f5c842 !important; }
body:not(.dark-mode) .dark-mode-toggle-btn { color: #6b7190; }
body:not(.dark-mode) .dark-mode-toggle-btn:hover { color: #4e73df; }

/* Жёстко заданные чёрные тексты в Vue-компонентах (не scoped) */
body.dark-mode label             { color: #d0d3e0 !important; }
body.dark-mode .col-form-label   { color: #d0d3e0 !important; }
body.dark-mode .form-check-label { color: #d0d3e0 !important; }
body.dark-mode .form-group label { color: #d0d3e0 !important; }
body.dark-mode .text-body        { color: #d0d3e0 !important; }

/* Footer */
body.dark-mode .sticky-footer      { background-color: #1a1d27 !important; color: #8890ad; border-top: 1px solid #363a4e; }
body.dark-mode .sticky-footer span { color: #8890ad; }

/* border-dark Bootstrap */
body.dark-mode .border-dark,
body.dark-mode .card.border-dark   { border-color: #454b66 !important; }

/* Bootstrap table-variants (договоры, учётные записи) */
body.dark-mode .table-success,
body.dark-mode .table-success > td,
body.dark-mode .table-success > th    { background-color: #1b3a27 !important; color: #a5d6a7 !important; }
body.dark-mode .table-success td,
body.dark-mode .table-success th      { border-color: rgba(165,214,167,0.2) !important; }
body.dark-mode .table-hover tbody tr.table-success:hover > td,
body.dark-mode .table-hover tbody tr.table-success:hover > th { background-color: #224d2e !important; }

body.dark-mode .table-danger,
body.dark-mode .table-danger > td,
body.dark-mode .table-danger > th     { background-color: #3b1a1a !important; color: #ef9a9a !important; }
body.dark-mode .table-danger td,
body.dark-mode .table-danger th       { border-color: rgba(239,154,154,0.2) !important; }
body.dark-mode .table-hover tbody tr.table-danger:hover > td,
body.dark-mode .table-hover tbody tr.table-danger:hover > th  { background-color: #4a2020 !important; }

body.dark-mode .table-primary,
body.dark-mode .table-primary > td,
body.dark-mode .table-primary > th    { background-color: #1a2a4a !important; color: #90caf9 !important; }
body.dark-mode .table-primary td,
body.dark-mode .table-primary th      { border-color: rgba(144,202,249,0.2) !important; }
body.dark-mode .table-hover tbody tr.table-primary:hover > td,
body.dark-mode .table-hover tbody tr.table-primary:hover > th { background-color: #203560 !important; }

body.dark-mode .table-warning,
body.dark-mode .table-warning > td,
body.dark-mode .table-warning > th    { background-color: #3a2a0a !important; color: #ffe082 !important; }
body.dark-mode .table-warning td,
body.dark-mode .table-warning th      { border-color: rgba(255,224,130,0.2) !important; }

body.dark-mode .table-info,
body.dark-mode .table-info > td,
body.dark-mode .table-info > th       { background-color: #0a2a3a !important; color: #80deea !important; }
body.dark-mode .table-info td,
body.dark-mode .table-info th         { border-color: rgba(128,222,234,0.2) !important; }

/* ---- Radio / checkbox: нативная отрисовка браузера, просто перекраска.
   (disabled-радио убран из шаблонов в пользу @click.prevent — у Chromium
   disabled принципиально глушит accent-color, это не лечится CSS) ---- */
body.dark-mode input[type="radio"],
body.dark-mode input[type="checkbox"] {
    accent-color: #6f8aef;
}

/* ---- Вкладки btn-outline-dark (AppAbonents, Отчёты, Инженеры и т.д.) ---- */
body.dark-mode .btn-outline-dark {
    color: #e8eaf0 !important;
    border-color: #5c6280 !important;
}
body.dark-mode .btn-outline-dark:hover {
    background-color: #363a4e !important;
    color: #fff !important;
    border-color: #545c7a !important;
}
body.dark-mode .btn-outline-dark.active,
body.dark-mode .btn-outline-dark.router-link-active {
    background-color: #4e73df !important;
    border-color: #4e73df !important;
    color: #fff !important;
}

/* ---- Кнопки btn-outline-* (иконки редактирования адреса и т.п.) ----
   Многие из них верстальщик пометил inline style="border:none" — обычный
   border-color это не перебивает (border-style остаётся none), поэтому
   задаём border целиком через shorthand с !important. */
body.dark-mode .btn-outline-primary {
    color: #8aa0ec !important;
    border: 1px solid #4e73df !important;
}
body.dark-mode .btn-outline-primary:hover {
    background-color: #4e73df !important;
    color: #fff !important;
}
body.dark-mode .btn-outline-success  { color: #6fcf97 !important; border: 1px solid #1cc88a !important; }
body.dark-mode .btn-outline-success:hover  { background-color: #1cc88a !important; color: #0c1f16 !important; }
body.dark-mode .btn-outline-danger   { color: #ef9a9a !important; border: 1px solid #e74a3b !important; }
body.dark-mode .btn-outline-danger:hover   { background-color: #e74a3b !important; color: #fff !important; }
body.dark-mode .btn-outline-info     { color: #80deea !important; border: 1px solid #36b9cc !important; }
body.dark-mode .btn-outline-info:hover     { background-color: #36b9cc !important; color: #0c1f16 !important; }
body.dark-mode .btn-outline-warning  { color: #ffe082 !important; border: 1px solid #f6c23e !important; }
body.dark-mode .btn-outline-warning:hover  { background-color: #f6c23e !important; color: #2e2a14 !important; }
body.dark-mode .btn-outline-secondary { color: #9ba1bc !important; border: 1px solid #5c6280 !important; }

body.dark-mode select,
body.dark-mode input,
body.dark-mode textarea { color-scheme: dark; }

/* ---- Alert-primary/secondary/light — светлые блоки-плашки ---- */
body.dark-mode .alert-primary   { background-color: #1a2a55 !important; border-color: #2c3f7a !important; color: #9ab0f5 !important; }
body.dark-mode .alert-secondary { background-color: #2b2f42 !important; border-color: #3d4157 !important; color: #b3b8cc !important; }
body.dark-mode .alert-light     { background-color: #2b2f42 !important; border-color: #3d4157 !important; color: #d0d3e0 !important; }
body.dark-mode .alert-dark      { background-color: #1a1d27 !important; border-color: #363a4e !important; color: #d0d3e0 !important; }

/* ---- Яркость текстовых Bootstrap-утилит на тёмном фоне ---- */
body.dark-mode .text-success   { color: #6fcf97 !important; }
body.dark-mode .text-primary   { color: #8aa0ec !important; }
body.dark-mode .text-danger    { color: #ef9a9a !important; }
body.dark-mode .text-warning   { color: #f2c94c !important; }
body.dark-mode .text-info      { color: #80deea !important; }
body.dark-mode .text-secondary { color: #9ba1bc !important; }
body.dark-mode .text-white     { color: #f0f1f5 !important; }
