:root[data-theme="dark"] {
  --bs-body-bg: #1a1d23;
  --bs-body-color: #e4e6eb;
  --bs-card-bg: #242831;
  --bs-card-border-color: #3a3f4b;
  --bs-border-color: #3a3f4b;
  --bs-table-bg: #242831;
  --bs-table-striped-bg: #2a2f3a;
  --bs-table-hover-bg: #2f3542;
  --bs-modal-bg: #242831;
  --bs-dropdown-bg: #242831;
  --bs-list-group-bg: #242831;
  --bs-nav-link-color: #b0b3b8;
  --bs-nav-link-hover-color: #e4e6eb;
  --bs-text-muted: #8a8d91;
  --bs-secondary-bg: #2a2f3a;
  --bs-tertiary-bg: #1f2229;
  --input-bg: #2a2f3a;
  --input-border: #3a3f4b;
  --code-bg: #1f2229;
}

[data-theme="dark"] {
  background-color: var(--bs-body-bg);
  color: var(--bs-body-color);
}

[data-theme="dark"] .card {
  background-color: var(--bs-card-bg);
  border-color: var(--bs-card-border-color);
  color: var(--bs-body-color);
}

[data-theme="dark"] .modal-content {
  background-color: var(--bs-modal-bg);
  color: var(--bs-body-color);
}

[data-theme="dark"] .dropdown-menu {
  background-color: var(--bs-dropdown-bg);
  border-color: var(--bs-border-color);
}

[data-theme="dark"] .dropdown-item {
  color: var(--bs-body-color);
}

[data-theme="dark"] .dropdown-item:hover {
  background-color: var(--bs-secondary-bg);
}

.theme-switcher-dropdown {
  background-color: #ffffff !important;
  border: 1px solid #dee2e6 !important;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important;
}

.theme-switcher-dropdown .dropdown-item {
  color: #212529 !important;
  padding: 0.5rem 1rem;
  font-size: 0.95rem;
}

.theme-switcher-dropdown .dropdown-item:hover {
  background-color: #f8f9fa !important;
  color: #000 !important;
}

.theme-switcher-dropdown .dropdown-divider {
  border-color: #dee2e6 !important;
}

.theme-switcher-dropdown .text-muted {
  color: #6c757d !important;
}

[data-theme="dark"] .table {
  --bs-table-bg: var(--bs-table-bg);
  --bs-table-striped-bg: var(--bs-table-striped-bg);
  --bs-table-hover-bg: var(--bs-table-hover-bg);
  color: var(--bs-body-color);
}

[data-theme="dark"] .table-bordered {
  border-color: var(--bs-border-color);
}

[data-theme="dark"] .table-bordered th,
[data-theme="dark"] .table-bordered td {
  border-color: var(--bs-border-color);
}

[data-theme="dark"] .form-control,
[data-theme="dark"] .form-select {
  background-color: var(--input-bg);
  border-color: var(--input-border);
  color: var(--bs-body-color);
}

[data-theme="dark"] .form-control:focus,
[data-theme="dark"] .form-select:focus {
  background-color: var(--input-bg);
  color: var(--bs-body-color);
  border-color: #4a8cf7;
}

[data-theme="dark"] .list-group-item {
  background-color: var(--bs-list-group-bg);
  border-color: var(--bs-border-color);
  color: var(--bs-body-color);
}

[data-theme="dark"] .alert {
  border-color: var(--bs-border-color);
}

[data-theme="dark"] .alert-primary {
  background-color: #1a3a52;
  color: #a8d1ff;
  border-color: #2a4a62;
}

[data-theme="dark"] .alert-success {
  background-color: #1a3d2e;
  color: #a8f0c8;
  border-color: #2a4d3e;
}

[data-theme="dark"] .alert-warning {
  background-color: #4a3d1a;
  color: #ffd88a;
  border-color: #5a4d2a;
}

[data-theme="dark"] .alert-danger {
  background-color: #4a1a1a;
  color: #ffa8a8;
  border-color: #5a2a2a;
}

[data-theme="dark"] .alert-info {
  background-color: #1a3a4a;
  color: #a8d8ff;
  border-color: #2a4a5a;
}

[data-theme="dark"] code {
  background-color: var(--code-bg);
  color: #f8f8f2;
}

[data-theme="dark"] pre {
  background-color: var(--code-bg);
  border-color: var(--bs-border-color);
  color: #f8f8f2;
}

[data-theme="dark"] .bg-light {
  background-color: var(--bs-secondary-bg) !important;
}

[data-theme="dark"] .bg-white {
  background-color: var(--bs-card-bg) !important;
}

[data-theme="dark"] .text-muted {
  color: var(--bs-text-muted) !important;
}

[data-theme="dark"] .border {
  border-color: var(--bs-border-color) !important;
}

[data-theme="dark"] .sidebar {
  background-color: #1f2229;
  border-right-color: var(--bs-border-color);
}

[data-theme="dark"] .nav-link {
  color: var(--bs-nav-link-color);
}

[data-theme="dark"] .nav-link:hover,
[data-theme="dark"] .nav-link.active {
  color: var(--bs-nav-link-hover-color);
}

[data-theme="dark"] .leaflet-tile-pane {
  filter: invert(1) hue-rotate(180deg) brightness(0.9);
}

[data-theme="dark"] .leaflet-control {
  filter: invert(1) hue-rotate(180deg);
}

[data-theme="dark"] canvas {
  filter: brightness(0.9);
}

* {
  transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
