/* Theme Variables */
:root {
    /* Light Theme (Default) */
    --background-color: #f8f9fa;
    --text-color: #212529;
    --text-table-color: #333333;
    --card-bg: #ffffff;
    --card-h5-color: #2b2b2b;
    --border-color: rgba(0, 0, 0, 0.125);
    --sidebar-bg: linear-gradient(135deg, #002868 0%, #003a8c 100%);
    --sidebar-text: #ffffff;
    --striped-bg: rgba(0, 0, 0, 0.03);
    --hover-bg: rgba(0, 0, 0, 0.08);
    --input-bg: #ffffff;
    --input-border: #ced4da;
    --header-bg: #ffffff;
    --chart-grid: #f0f0f0;
    --muted-text: #6c757d;
    --card-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
    --button-hover: rgba(0, 0, 0, 0.1);
    --list-group-hover: rgba(0, 0, 0, 0.02);
    --active-item: #002868;
    --active-item-text: #fff;
}

/* Dark Theme */
body.dark-theme {
    --background-color: #121212;
    --text-color: #e0e0e0;
    --text-table-color: #aaaaaa;
    --card-bg: #1e1e1e;
    --card-h5-color: #dcdcdc;
    --border-color: rgba(255, 255, 255, 0.1);
    --sidebar-bg: linear-gradient(135deg, #001433 0%, #001a40 100%);
    --sidebar-text: #ffffff;
    --striped-bg: rgba(255, 255, 255, 0.04);
    --hover-bg: rgba(255, 255, 255, 0.08);
    --input-bg: #2c2c2c;
    --input-border: #3d3d3d;
    --header-bg: #1a1a1a;
    --chart-grid: #2c2c2c;
    --muted-text: #9e9e9e;
    --card-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
    --button-hover: rgba(255, 255, 255, 0.1);
    --list-group-hover: rgba(255, 255, 255, 0.05);
    --active-item: #003a8c;
    --active-item-text: #fff;
    --bs-card-cap-color: #e0e0e0;
}

/* Apply Theme Variables */
body {
    background-color: var(--background-color);
    color: var(--text-color);
    transition: background-color 0.3s, color 0.3s;
}

.sidebar {
    background: var(--sidebar-bg);
    color: var(--sidebar-text);
}

.card {
    background-color: var(--card-bg);
    border-color: var(--border-color);
    box-shadow: var(--card-shadow);
}

.card h5 {
    color: var(--card-h5-color);
}

.card-header {
    background-color: var(--card-bg);
    border-color: var(--border-color);
    color: var(--text-color);
}

.list-group-item {
    background-color: var(--card-bg);
    color: var(--text-color);
    border-color: var(--border-color);
}

.list-group-item:hover {
    background-color: var(--list-group-hover);
}

.form-control, .form-select {
    background-color: var(--input-bg);
    color: var(--text-color);
    border-color: var(--input-border);
}

.form-control:focus, .form-select:focus {
    background-color: var(--input-bg);
    color: var(--text-color);
    border-color: var(--active-item);
    box-shadow: 0 0 0 0.25rem rgba(0, 40, 104, 0.25);
}

.form-control::placeholder {
    color: var(--muted-text);
    opacity: 0.7;
}

.form-check-input:checked {
    background-color: var(--active-item);
    border-color: var(--active-item);
}

.input-group-text {
    background-color: var(--input-bg);
    color: var(--text-color);
    border-color: var(--input-border);
}

.table {
    color: var(--text-color);
}

.table th, .table td {
    border-color: var(--border-color);
}

.table-striped tbody tr:nth-of-type(odd) {
    background-color: var(--striped-bg);
    color: var(--text-table-color);
}

.table-striped tbody tr:nth-of-type(even) {
    color: var(--text-table-color);
}

.table-striped tbody tr:hover {
    background-color: var(--hover-bg);
}

.table-striped > tbody > tr:nth-of-type(odd) > th,
.table-striped > tbody > tr:nth-of-type(odd) > td {
    color: var(--text-table-color) !important;
}

.table-striped > tbody > tr:nth-of-type(even) > th,
.table-striped > tbody > tr:nth-of-type(even) > td {
    color: var(--text-table-color) !important;
}

.dropdown-menu {
    background-color: var(--card-bg);
    border-color: var(--border-color);
    box-shadow: var(--card-shadow);
}

.dropdown-item {
    color: var(--text-color);
}

.dropdown-item:hover {
    background-color: var(--hover-bg);
}

.dropdown-item.active {
    background-color: var(--active-item);
    color: var(--active-item-text);
}

.dropdown-divider {
    border-color: var(--border-color);
}

.user-info {
    background-color: var(--card-bg);
    color: var(--text-color);
    box-shadow: var(--card-shadow);
}

.nav-tabs .nav-link {
    color: var(--text-color);
    border-color: var(--border-color);
}

.nav-tabs .nav-link.active {
    background-color: var(--card-bg);
    color: var(--text-color);
    border-color: var(--border-color);
    border-bottom-color: var(--card-bg);
}

.btn-outline-secondary {
    color: var(--text-color);
    border-color: var(--border-color);
}

.btn-outline-secondary:hover {
    background-color: var(--hover-bg);
    color: var(--text-color);
    border-color: var(--border-color);
}

.btn-outline-primary {
    color: #0d6efd;
    border-color: #0d6efd;
}

.btn-outline-primary:hover {
    background-color: #0d6efd;
    color: #fff;
}

.modal-content {
    background-color: var(--card-bg);
    color: var(--text-color);
    border-color: var(--border-color);
}

.modal-header, .modal-footer {
    border-color: var(--border-color);
}

.close {
    color: var(--text-color);
}

.text-muted {
    color: var(--muted-text) !important;
}

.alert-info {
    background-color: rgba(13, 202, 240, 0.2);
    color: var(--text-color);
    border-color: rgba(13, 202, 240, 0.3);
}

.alert-success {
    background-color: rgba(25, 135, 84, 0.2);
    color: var(--text-color);
    border-color: rgba(25, 135, 84, 0.3);
}

.alert-warning {
    background-color: rgba(255, 193, 7, 0.2);
    color: var(--text-color);
    border-color: rgba(255, 193, 7, 0.3);
}

.alert-danger {
    background-color: rgba(220, 53, 69, 0.2);
    color: var(--text-color);
    border-color: rgba(220, 53, 69, 0.3);
}

.pagination .page-link {
    background-color: var(--card-bg);
    color: var(--text-color);
    border-color: var(--border-color);
}

.pagination .page-item.active .page-link {
    background-color: var(--active-item);
    color: var(--active-item-text);
    border-color: var(--active-item);
}

.pagination .page-item.disabled .page-link {
    background-color: var(--card-bg);
    color: var(--muted-text);
    border-color: var(--border-color);
}

body.dark-theme .card:not(.bg-primary):not(.bg-success):not(.bg-warning):not(.bg-info):not(.bg-danger) {
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}

body.dark-theme .btn-outline-secondary {
    color: #adb5bd;
    border-color: #495057;
}

body.dark-theme .btn-outline-secondary:hover {
    background-color: #495057;
    color: #f8f9fa;
}

body.dark-theme canvas {
    filter: brightness(0.9);
}

body.dark-theme .bg-light {
    background-color: #2c2c2c !important;
}

body.dark-theme .bg-white {
    background-color: #1e1e1e !important;
}

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

body.dark-theme .text-dark {
    color: #e0e0e0 !important;
}

body.dark-theme .text-body {
    color: #e0e0e0 !important;
}

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

.swal2-theme-light {
    background-color: var(--card-bg) !important;
    color: var(--text-color) !important;
    border: 1px solid var(--border-color) !important;
}

.swal2-theme-dark {
    background-color: var(--card-bg) !important;
    color: var(--text-color) !important;
    border: 1px solid var(--border-color) !important;
}

.swal2-theme-light-title,
.swal2-theme-dark-title {
    color: var(--text-color) !important;
}

.swal2-theme-light-confirm,
.swal2-theme-dark-confirm {
    color: #fff !important;
}

.swal2-theme-light-cancel,
.swal2-theme-dark-cancel {
    color: #fff !important;
}