/* ============================================================
   МАРШРУТИЗАТОР ЭТП — Тёмная тема
   Подключается добавлением класса .dark-theme к <body>
   ============================================================ */

body.dark-theme {
    --bg-primary: #0f1117;
    --bg-secondary: #161821;
    --bg-tertiary: #1e2028;
    --bg-sidebar: #0a0c10;
    --bg-sidebar-hover: #161821;
    --bg-sidebar-active: #1e2028;
    --bg-card: #1a1c24;
    --bg-modal: #1a1c24;
    --bg-input: #1e2028;
    --bg-overlay: rgba(0, 0, 0, 0.7);

    --text-primary: #e2e8f0;
    --text-secondary: #94a3b8;
    --text-muted: #64748b;
    --text-sidebar: #64748b;
    --text-sidebar-active: #e2e8f0;
    --text-inverse: #0f1117;

    --border-color: #2a2d38;
    --border-light: #1e2028;
    --border-focus: #6366f1;

    --accent-glow: rgba(99, 102, 241, 0.2);

    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
    --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4);
    --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.5);
    --shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.6);

    /* Glass для тёмной темы */
    --glass-bg: rgba(30, 32, 40, 0.75);
    --glass-border: rgba(255, 255, 255, 0.06);
    --glass-blur: blur(20px);
    --surface-elevated: rgba(30, 32, 40, 0.9);
    --surface-sunken: rgba(0, 0, 0, 0.15);
}

body.dark-theme .alert-warning {
    background: rgba(245, 158, 11, 0.15);
    color: #fbbf24;
    border-color: rgba(245, 158, 11, 0.3);
}

body.dark-theme .alert-danger {
    background: rgba(239, 68, 68, 0.15);
    color: #f87171;
    border-color: rgba(239, 68, 68, 0.3);
}

body.dark-theme .alert-success {
    background: rgba(16, 185, 129, 0.15);
    color: #34d399;
    border-color: rgba(16, 185, 129, 0.3);
}

body.dark-theme .alert-info {
    background: rgba(59, 130, 246, 0.15);
    color: #60a5fa;
    border-color: rgba(59, 130, 246, 0.3);
}

body.dark-theme .drop-zone:hover,
body.dark-theme .drop-zone.drag-over {
    background: rgba(99, 102, 241, 0.08);
}

body.dark-theme ::-webkit-scrollbar-thumb {
    background: #3d404a;
}

body.dark-theme ::-webkit-scrollbar-thumb:hover {
    background: #4d505a;
}

body.dark-theme .data-table th {
    background: #23262e;
}

body.dark-theme .login-card {
    background: #1e2028;
}

/* === Dashboard Panel Dark Theme === */
body.dark-theme .dashboard-panel {
    background: var(--glass-bg);
    backdrop-filter: var(--glass-blur);
    -webkit-backdrop-filter: var(--glass-blur);
    border-color: var(--glass-border);
    box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.4), 0 -2px 8px rgba(0, 0, 0, 0.2);
}

body.dark-theme .stat-card {
    background: var(--glass-bg);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-color: var(--glass-border);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

body.dark-theme .stat-card:hover {
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3), 0 0 0 1px var(--accent-glow);
    border-color: rgba(99, 102, 241, 0.3);
}

body.dark-theme .stat-card::before {
    background: linear-gradient(90deg, var(--accent), #818cf8);
}

body.dark-theme .stat-icon {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.2) 0%, rgba(129, 140, 248, 0.15) 100%);
    color: var(--accent);
}

body.dark-theme .stat-card.warning {
    background: linear-gradient(135deg, rgba(245, 158, 11, 0.15) 0%, rgba(217, 119, 6, 0.1) 100%);
    border-color: rgba(245, 158, 11, 0.3);
}

body.dark-theme .stat-card.danger {
    background: linear-gradient(135deg, rgba(239, 68, 68, 0.15) 0%, rgba(185, 28, 28, 0.1) 100%);
    border-color: rgba(239, 68, 68, 0.3);
}

body.dark-theme .dashboard-title-icon {
    background: linear-gradient(135deg, var(--accent) 0%, #818cf8 100%);
    box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
}

body.dark-theme .dashboard-header-badge {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.15) 0%, rgba(129, 140, 248, 0.12) 100%);
}

body.dark-theme .dashboard-summary-mini span {
    background: rgba(255, 255, 255, 0.03);
}

body.dark-theme .dashboard-summary-mini span:hover {
    background: rgba(255, 255, 255, 0.06);
}

body.dark-theme .route-list-item {
    background: var(--bg-tertiary);
}

body.dark-theme .route-list-item:hover {
    background: #2a2d36;
    border-color: var(--border-color);
}

body.dark-theme .unassigned-reason-box {
    background: rgba(239, 68, 68, 0.1);
}

body.dark-theme .quick-assign-form {
    background: var(--bg-tertiary);
    border-color: var(--border-light);
}

body.dark-theme .edit-form-grid .form-input,
body.dark-theme .edit-form-grid .form-select {
    background: var(--bg-input);
    border-color: var(--border-color);
    color: var(--text-primary);
}

body.dark-theme .edit-actions {
    border-color: var(--border-light);
}

body.dark-theme .edit-section {
    background: var(--bg-tertiary);
    border-color: var(--border-light);
}

/* === Кнопки-фильтры нераспределённых ТТ — Тёмная тема === */
body.dark-theme .filter-btn {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
    color: var(--text-secondary);
}

body.dark-theme .filter-btn:hover {
    background: rgba(99, 102, 241, 0.12);
    border-color: var(--accent);
    color: var(--accent);
}

body.dark-theme .filter-summary-text {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
    color: var(--text-secondary);
}

/* === Импорт — Результат (тёмная тема) === */
body.dark-theme .import-result-card {
    background: var(--bg-card);
    border-color: var(--border-color);
}

body.dark-theme .import-stats-grid {
    background: var(--border-color);
}

body.dark-theme .import-stat-card {
    background: var(--bg-card);
}

body.dark-theme .import-stat-card.stat-card-success {
    background: rgba(16, 185, 129, 0.12);
}

body.dark-theme .import-stat-card.stat-card-info {
    background: rgba(59, 130, 246, 0.12);
}

body.dark-theme .import-stat-card.stat-card-danger {
    background: rgba(239, 68, 68, 0.12);
}

body.dark-theme .import-coords-section {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
}

body.dark-theme .import-extra-info {
    background: var(--bg-card);
}

body.dark-theme .extra-info-abc {
    background: rgba(59, 130, 246, 0.15);
    color: #60a5fa;
}

body.dark-theme .extra-info-delete {
    background: rgba(245, 158, 11, 0.15);
    color: #fbbf24;
}

body.dark-theme .import-geocode-warning {
    background: linear-gradient(135deg, rgba(245, 158, 11, 0.15) 0%, rgba(245, 158, 11, 0.25) 100%);
    border-color: var(--warning);
}

body.dark-theme .geocode-warning-title {
    color: #fbbf24;
}

body.dark-theme .geocode-warning-hint {
    color: #d97706;
}

body.dark-theme .geocode-progress-box {
    background: var(--bg-card);
    border-color: var(--border-color);
}

body.dark-theme .geocode-progress-bar-wrap {
    background: var(--bg-tertiary);
}

body.dark-theme .geocode-result-icon {
    background: var(--success);
}

/* === Zone Panel Dark Theme === */
body.dark-theme .zone-panel {
    background: var(--bg-primary);
    border-color: var(--border-color);
}

body.dark-theme .zone-panel-header {
    border-color: var(--border-color);
}

body.dark-theme .zone-stats {
    background: var(--bg-secondary);
    border-color: var(--border-color);
}

body.dark-theme .zone-stat {
    background: var(--bg-primary);
}

body.dark-theme .zone-group-toggle {
    border-color: var(--border-color);
}

body.dark-theme .zone-group-btn {
    background: var(--bg-secondary);
    color: var(--text-secondary);
}

body.dark-theme .zone-group-btn:hover {
    background: var(--bg-tertiary);
    color: var(--text-primary);
}

body.dark-theme .zone-group-btn.active {
    background: var(--accent);
    color: white;
}

body.dark-theme .zone-group-header {
    background: var(--bg-tertiary);
}

body.dark-theme .zone-group-header:hover {
    background: var(--bg-secondary);
}

body.dark-theme .zone-card {
    background: var(--bg-primary);
    border-color: var(--border-light);
}

body.dark-theme .zone-card:hover {
    border-color: var(--accent);
}

body.dark-theme .zone-card.active {
    background: rgba(99, 102, 241, 0.15);
}

body.dark-theme .zone-card-btn {
    background: var(--bg-secondary);
    color: var(--text-secondary);
}

body.dark-theme .zone-card-btn:hover {
    background: var(--bg-tertiary);
    color: var(--text-primary);
}

body.dark-theme .zone-group-no-etp .zone-group-header {
    background: rgba(245, 158, 11, 0.15);
}

body.dark-theme .zone-actions {
    background: var(--bg-secondary);
    border-color: var(--border-color);
}

body.dark-theme .zone-edit-form {
    background: var(--bg-primary);
    border-color: var(--border-color);
}

body.dark-theme .zone-edit-close {
    background: var(--bg-tertiary);
    color: var(--text-muted);
}

body.dark-theme .zone-edit-close:hover {
    background: var(--bg-secondary);
    color: var(--text-primary);
}

body.dark-theme .color-input {
    border-color: var(--border-color);
}

body.dark-theme .color-preset-sm {
    border-color: transparent;
}

/* === Mobile Elements Dark Theme === */
body.dark-theme .panel-toggle {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
}

body.dark-theme .panel-toggle:hover {
    box-shadow: 0 6px 24px rgba(99, 102, 241, 0.5);
}

body.dark-theme .mobile-search-btn {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
    color: var(--text-secondary);
}

body.dark-theme .mobile-search-btn:hover {
    background: var(--bg-secondary);
    color: var(--text-primary);
}

body.dark-theme .mobile-search-overlay {
    background: var(--bg-primary);
}

body.dark-theme .mobile-search-header {
    background: var(--bg-secondary);
    border-color: var(--border-color);
}

body.dark-theme .mobile-search-input-wrap input {
    background: var(--bg-primary);
    border-color: var(--border-color);
    color: var(--text-primary);
}

body.dark-theme .mobile-search-close {
    color: var(--text-secondary);
}

body.dark-theme .mobile-search-results .search-result-item {
    border-color: var(--border-color);
}

body.dark-theme .mobile-search-results .search-result-item:hover {
    background: var(--bg-secondary);
}

/* === Dashboard Toggle Dark Theme === */
body.dark-theme .dashboard-handle-bar {
    background: var(--text-secondary);
    opacity: 0.5;
}

body.dark-theme .dashboard-handle:hover .dashboard-handle-bar {
    background: var(--accent);
}

/* === Zone Mobile Close Dark Theme === */
body.dark-theme .zone-mobile-close {
    background: var(--bg-tertiary);
    color: var(--text-secondary);
}

body.dark-theme .zone-mobile-close:hover {
    background: var(--danger-bg);
    color: var(--danger);
}

/* === Data Table Gradient Dark Theme === */
body.dark-theme .data-table-wrap::after {
    background: linear-gradient(to right, transparent, var(--bg-primary));
}

/* === Sales Dashboard Dark Theme === */
body.dark-theme .sales-metric-delta.delta-up {
    color: #34D399;
    background: rgba(16, 185, 129, 0.15);
}
body.dark-theme .sales-metric-delta.delta-down {
    color: #F87171;
    background: rgba(239, 68, 68, 0.15);
}
body.dark-theme .sales-metric-delta.delta-stable {
    color: #9CA3AF;
    background: rgba(107, 114, 128, 0.15);
}
body.dark-theme .sales-forecast-card {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.12), rgba(16, 185, 129, 0.12));
    border-color: rgba(99, 102, 241, 0.3);
}
body.dark-theme .sales-forecast-value.delta-up {
    color: #34D399;
}
body.dark-theme .sales-forecast-value.delta-down {
    color: #F87171;
}
/* Селектор типа маршрута - иконка стрелки */
body.dark-theme .route-type-select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
}

/* === Modal Dark Theme Fixes === */
body.dark-theme .modal-section-header {
    background: rgba(99, 102, 241, 0.12);
    border-color: var(--border-color);
}

body.dark-theme .modal-header {
    border-bottom: 1px solid var(--border-light);
}

body.dark-theme .modal-overlay {
    background: var(--bg-overlay);
}

/* === Settings Badges Dark Theme === */
body.dark-theme .sett-badge.hard {
    background: rgba(239, 68, 68, 0.15);
    color: #f87171;
    border-color: rgba(239, 68, 68, 0.3);
}

body.dark-theme .sett-badge.soft {
    background: rgba(245, 158, 11, 0.15);
    color: #fbbf24;
    border-color: rgba(245, 158, 11, 0.3);
}

body.dark-theme .sett-badge.info {
    background: rgba(16, 185, 129, 0.15);
    color: #34d399;
    border-color: rgba(16, 185, 129, 0.3);
}

/* === Glass Filter Panel Dark Theme === */
body.dark-theme .map-filter-panel {
    background: var(--bg-primary);
    border-color: var(--border-color);
}

body.dark-theme .view-mode-tabs {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
}

body.dark-theme .view-mode-tab.active {
    background: var(--bg-card);
    color: var(--accent);
}

/* === Settings Sections Dark Theme === */
body.dark-theme .settings-section {
    background: var(--bg-card);
    border-color: var(--border-color);
}

body.dark-theme .settings-section:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
}

body.dark-theme .settings-section h3 i {
    background: rgba(99, 102, 241, 0.15);
}

/* === Slider Dark Theme === */
body.dark-theme .unassigned-slider-select {
    background: var(--bg-input);
    border-color: var(--border-color);
    color: var(--text-primary);
}

body.dark-theme .unassigned-slider-select:hover {
    border-color: var(--accent);
}

body.dark-theme .unassigned-slider-select:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-glow);
}

/* === Edit Form Dark Theme === */
body.dark-theme .edit-form-grid {
    background: var(--surface-sunken);
    border-color: var(--border-color);
}

body.dark-theme .edit-form-grid .form-input,
body.dark-theme .edit-form-grid .form-select {
    background: var(--bg-input);
    border-color: var(--border-color);
    color: var(--text-primary);
}

body.dark-theme .edit-form-grid .form-input:focus,
body.dark-theme .edit-form-grid .form-select:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-glow);
}

/* === Edit Point Modal (ep) Dark Theme === */
body.dark-theme .ep-header {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(139, 92, 246, 0.06) 100%);
    border-bottom-color: var(--border-color);
}

body.dark-theme .ep-close-btn {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
    color: var(--text-muted);
}

body.dark-theme .ep-close-btn:hover {
    background: rgba(239, 68, 68, 0.15);
    border-color: var(--danger);
    color: var(--danger);
}

body.dark-theme .ep-section {
    border-bottom-color: var(--border-color);
}

body.dark-theme .ep-section--status {
    background: rgba(0, 0, 0, 0.15);
}

body.dark-theme .ep-input,
body.dark-theme .ep-select {
    background: var(--bg-input);
    border-color: var(--border-color);
    color: var(--text-primary);
}

body.dark-theme .ep-input:focus,
body.dark-theme .ep-select:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-glow);
}

body.dark-theme .ep-geo-btn {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
    color: var(--accent);
}

body.dark-theme .ep-geo-btn:hover {
    background: var(--accent);
    color: white;
}

body.dark-theme .ep-tp-badge {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(139, 92, 246, 0.06) 100%);
    border-color: rgba(99, 102, 241, 0.2);
}

body.dark-theme .ep-tp-badge-day {
    background: var(--bg-tertiary);
    color: var(--text-secondary);
}

body.dark-theme .ep-action-btn--remove {
    border-color: rgba(239, 68, 68, 0.5);
    color: #f87171;
}

body.dark-theme .ep-action-btn--remove:hover {
    background: var(--danger);
    color: white;
}

body.dark-theme .ep-footer {
    border-top-color: var(--border-color);
    background: var(--bg-card);
}

body.dark-theme .ep-footer-btn--danger {
    border-color: rgba(239, 68, 68, 0.3);
    color: #f87171;
}

body.dark-theme .ep-footer-btn--danger:hover {
    background: var(--danger);
    color: white;
}

body.dark-theme .ep-footer-btn--cancel {
    background: var(--bg-tertiary);
    color: var(--text-secondary);
    border-color: var(--border-color);
}

body.dark-theme .ep-toggle-slider {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
}

body.dark-theme .ep-toggle input:checked + .ep-toggle-slider {
    background: var(--success);
    border-color: var(--success);
}

body.dark-theme .edit-actions {
    background: var(--bg-card);
    border-color: var(--border-color);
}
