:root {
    /* Light theme (default) */
    --bg-primary: #ffffff;
    --bg-secondary: #f8f9fa;
    --bg-card: #ffffff;
    --text-primary: #212529;
    --text-secondary: #6c757d;
    --border-color: #dee2e6;
    --primary-color: #4e73df;
    --success-color: #1cc88a;
    --info-color: #36b9cc;
    --warning-color: #f6c23e;
    --danger-color: #e74a3b;
    --card-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15);
    --navbar-bg: #4e73df;
    --navbar-text: #ffffff;
    --footer-bg: #f8f9fa;
    --footer-text: #6c757d;
    --input-bg: #ffffff;
    --input-text: #495057;
    --input-border: #ced4da;
    --table-stripe: rgba(0, 0, 0, 0.05);
    --table-hover: rgba(0, 0, 0, 0.075);
}

[data-theme="dark"] {
    /* Dark theme */
    --bg-primary: #1a1a1a;
    --bg-secondary: #2d2d2d;
    --bg-card: #2d2d2d;
    --text-primary: #e0e0e0;
    --text-secondary: #adb5bd;
    --border-color: #444444;
    --primary-color: #375ad3;
    --success-color: #17a673;
    --info-color: #2c9faf;
    --warning-color: #e9b949;
    --danger-color: #d13b2e;
    --card-shadow: 0 0.15rem 1.75rem 0 rgba(0, 0, 0, 0.5);
    --navbar-bg: #375ad3;
    --navbar-text: #ffffff;
    --footer-bg: #2d2d2d;
    --footer-text: #adb5bd;
    --input-bg: #333333;
    --input-text: #e0e0e0;
    --input-border: #555555;
    --table-stripe: rgba(255, 255, 255, 0.05);
    --table-hover: rgba(255, 255, 255, 0.075);
}

/* Apply theme variables */
body {
    background-color: var(--bg-primary);
    color: var(--text-primary);
    transition: background-color 0.3s ease, color 0.3s ease;
}

.navbar {
    background-color: var(--navbar-bg) !important;
    color: var(--navbar-text);
}

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

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

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

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

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

[data-theme="dark"] .table-hover tbody tr:hover {
    background-color: rgba(255, 255, 255, 0.1);
    color: var(--text-primary);
}

[data-theme="dark"] .table-hover tbody tr:hover td {
    color: var(--text-primary) !important;
}

[data-theme="dark"] .table-hover tbody tr:hover .badge {
    opacity: 0.9;
}

/* Fix hover state for colored table rows - Light Theme */
.table-hover tbody tr.table-warning:hover {
    background-color: rgba(100, 100, 100, 0.15) !important;
}

.table-hover tbody tr.table-warning:hover td,
.table-hover tbody tr.table-warning:hover th {
    color: #212529 !important;
}

/* Fix hover state for colored table rows in dark mode */
[data-theme="dark"] .table-hover tbody tr.table-warning:hover {
    background-color: rgba(150, 120, 40, 0.4) !important;
}

[data-theme="dark"] .table-hover tbody tr.table-warning:hover td,
[data-theme="dark"] .table-hover tbody tr.table-warning:hover td *,
[data-theme="dark"] .table-hover tbody tr.table-warning:hover th {
    color: #ffffff !important;
}

[data-theme="dark"] .table-warning,
[data-theme="dark"] .table-warning td,
[data-theme="dark"] .table-warning th,
[data-theme="dark"] tr.table-warning td,
[data-theme="dark"] tr.table-warning th {
    color: #ffffff !important;
    background-color: rgba(233, 185, 73, 0.25) !important;
}

[data-theme="dark"] .table-hover tbody tr.table-danger:hover {
    background-color: rgba(140, 40, 30, 0.4) !important;
}

[data-theme="dark"] .table-hover tbody tr.table-danger:hover td,
[data-theme="dark"] .table-hover tbody tr.table-danger:hover td *,
[data-theme="dark"] .table-hover tbody tr.table-danger:hover th {
    color: #ffffff !important;
}

[data-theme="dark"] .table-danger,
[data-theme="dark"] .table-danger td,
[data-theme="dark"] .table-danger th,
[data-theme="dark"] tr.table-danger td,
[data-theme="dark"] tr.table-danger th {
    color: #ffffff !important;
    background-color: rgba(209, 59, 46, 0.25) !important;
}

[data-theme="dark"] .table-hover tbody tr.table-success:hover {
    background-color: rgba(15, 110, 75, 0.4) !important;
}

[data-theme="dark"] .table-hover tbody tr.table-success:hover td,
[data-theme="dark"] .table-hover tbody tr.table-success:hover td *,
[data-theme="dark"] .table-hover tbody tr.table-success:hover th {
    color: #ffffff !important;
}

[data-theme="dark"] .table-success,
[data-theme="dark"] .table-success td,
[data-theme="dark"] .table-success th,
[data-theme="dark"] tr.table-success td,
[data-theme="dark"] tr.table-success th {
    color: #ffffff !important;
    background-color: rgba(23, 166, 115, 0.25) !important;
}

[data-theme="dark"] .table-hover tbody tr.table-info:hover {
    background-color: rgba(30, 105, 115, 0.4) !important;
}

[data-theme="dark"] .table-hover tbody tr.table-info:hover td,
[data-theme="dark"] .table-hover tbody tr.table-info:hover td *,
[data-theme="dark"] .table-hover tbody tr.table-info:hover th {
    color: #ffffff !important;
}

[data-theme="dark"] .table-info,
[data-theme="dark"] .table-info td,
[data-theme="dark"] .table-info th,
[data-theme="dark"] tr.table-info td,
[data-theme="dark"] tr.table-info th {
    color: #ffffff !important;
    background-color: rgba(44, 159, 175, 0.25) !important;
}

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

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

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

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

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

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

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

.footer {
    background-color: var(--footer-bg) !important;
}

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

/* Fix text-muted visibility in dark mode */
[data-theme="dark"] .text-muted {
    color: #adb5bd !important;
}

/* Theme toggle button */
.theme-toggle {
    cursor: pointer;
    padding: 0.5rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.3s;
}

.theme-toggle:hover {
    background-color: rgba(255, 255, 255, 0.1);
}

/* Chart.js customization for dark mode */
[data-theme="dark"] .chartjs-render-monitor {
    filter: invert(1) hue-rotate(180deg);
}

/* Help pages dark mode support */
.help-highlighted {
    border-left: 3px solid var(--primary-color);
    font-weight: bold;
}

[data-theme="light"] .help-highlighted {
    background-color: #e7f3ff !important;
}

[data-theme="dark"] .help-highlighted {
    background-color: rgba(55, 90, 211, 0.2) !important;
}

/* Collapsible/Accordion support for dark mode */
.accordion-button {
    background-color: var(--bg-secondary);
    color: var(--text-primary);
}

.accordion-button:not(.collapsed) {
    background-color: var(--bg-secondary);
    color: var(--text-primary);
}

.accordion-item {
    background-color: var(--bg-card);
    border-color: var(--border-color);
}

.accordion-body {
    background-color: var(--bg-card);
    color: var(--text-primary);
}

/* Badge support for dark mode */
[data-theme="dark"] .badge {
    filter: brightness(0.8);
}

/* Alert support for dark mode */
[data-theme="dark"] .alert {
    background-color: var(--bg-secondary);
    border-color: var(--border-color);
    color: var(--text-primary);
}

[data-theme="dark"] .alert-info {
    background-color: rgba(44, 159, 175, 0.2);
    border-color: var(--info-color);
}

[data-theme="dark"] .alert-success {
    background-color: rgba(23, 166, 115, 0.2);
    border-color: var(--success-color);
}

[data-theme="dark"] .alert-warning {
    background-color: rgba(233, 185, 73, 0.2);
    border-color: var(--warning-color);
}

[data-theme="dark"] .alert-danger {
    background-color: rgba(209, 59, 46, 0.2);
    border-color: var(--danger-color);
}