/* Comprehensive Light/Dark Theme Implementation */

/* Light Theme (Default) */
[data-bs-theme="light"] {
    --bs-body-bg: #f8f9fa;
    --bs-body-color: #212529;
    --bs-card-bg: #ffffff;
    --bs-card-border-color: #dee2e6;
    --bs-form-bg: #ffffff;
    --bs-form-color: #212529;
    --bs-form-border-color: #ced4da;
    --bs-table-bg: transparent;
    --bs-table-color: #212529;
    --bs-modal-bg: #ffffff;
    --bs-modal-color: #212529;
    --bs-dropdown-bg: #ffffff;
    --bs-dropdown-color: #212529;
    --bs-btn-bg: #ffffff;
    --bs-btn-color: #212529;
    --bs-btn-border: #ced4da;
    --bs-shadow: rgba(0, 0, 0, 0.15);
}

/* Dark Theme */
[data-bs-theme="dark"] {
    --bs-body-bg: #212529;
    --bs-body-color: #ffffff;
    --bs-card-bg: #343a40;
    --bs-card-border-color: #495057;
    --bs-form-bg: #495057;
    --bs-form-color: #ffffff;
    --bs-form-border-color: #6c757d;
    --bs-table-bg: transparent;
    --bs-table-color: #ffffff;
    --bs-modal-bg: #343a40;
    --bs-modal-color: #ffffff;
    --bs-dropdown-bg: #343a40;
    --bs-dropdown-color: #ffffff;
    --bs-btn-bg: #495057;
    --bs-btn-color: #ffffff;
    --bs-btn-border: #6c757d;
    --bs-shadow: rgba(0, 0, 0, 0.5);
}

/* Global Theme Application */
body {
    background-color: var(--bs-body-bg) !important;
    color: var(--bs-body-color) !important;
    transition: background-color 0.3s ease, color 0.3s ease;
}

main {
    background-color: var(--bs-body-bg) !important;
    color: var(--bs-body-color) !important;
    transition: background-color 0.3s ease, color 0.3s ease;
}

/* Card Styling */
.card {
    background-color: var(--bs-card-bg) !important;
    color: var(--bs-body-color) !important;
    border-color: var(--bs-card-border-color) !important;
    box-shadow: 0 0.125rem 0.25rem var(--bs-shadow) !important;
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}

.card-header {
    background-color: var(--bs-card-bg) !important;
    color: var(--bs-body-color) !important;
    border-bottom-color: var(--bs-card-border-color) !important;
}

.card-footer {
    background-color: var(--bs-card-bg) !important;
    color: var(--bs-body-color) !important;
    border-top-color: var(--bs-card-border-color) !important;
}

/* Preserve specific branded card colors */
.card.bg-primary, .card-header.bg-primary,
.card.bg-success, .card-header.bg-success,
.card.bg-info, .card-header.bg-info,
.card.bg-warning, .card-header.bg-warning,
.card.bg-danger, .card-header.bg-danger,
.card.bg-gradient-primary {
    background-color: inherit !important;
    color: inherit !important;
}

/* Form Controls */
.form-control, .form-select {
    background-color: var(--bs-form-bg) !important;
    color: var(--bs-form-color) !important;
    border-color: var(--bs-form-border-color) !important;
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}

.form-control:focus, .form-select:focus {
    border-color: #86b7fe !important;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25) !important;
}

/* Table Styling */
.table {
    color: var(--bs-table-color) !important;
    transition: color 0.3s ease;
}

.table-striped > tbody > tr:nth-of-type(odd) > td {
    background-color: var(--bs-body-bg) !important;
}

.table-hover > tbody > tr:hover > td {
    background-color: var(--bs-card-border-color) !important;
}

/* Modal Styling */
.modal-content {
    background-color: var(--bs-modal-bg) !important;
    color: var(--bs-modal-color) !important;
    border-color: var(--bs-card-border-color) !important;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.modal-header {
    border-bottom-color: var(--bs-card-border-color) !important;
}

.modal-footer {
    border-top-color: var(--bs-card-border-color) !important;
}

/* Dropdown Styling */
.dropdown-menu {
    background-color: var(--bs-dropdown-bg) !important;
    color: var(--bs-dropdown-color) !important;
    border-color: var(--bs-card-border-color) !important;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.dropdown-item {
    color: var(--bs-dropdown-color) !important;
    transition: color 0.3s ease;
}

.dropdown-item:hover {
    background-color: var(--bs-card-border-color) !important;
    color: var(--bs-dropdown-color) !important;
}

.dropdown-divider {
    border-top-color: var(--bs-card-border-color) !important;
}

/* Button Styling (non-branded) */
.btn-outline-secondary {
    color: var(--bs-btn-color) !important;
    border-color: var(--bs-btn-border) !important;
    transition: color 0.3s ease, border-color 0.3s ease;
}

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

/* Pagination */
.page-link {
    background-color: var(--bs-card-bg) !important;
    color: var(--bs-body-color) !important;
    border-color: var(--bs-card-border-color) !important;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.page-link:hover {
    background-color: var(--bs-card-border-color) !important;
    color: var(--bs-body-color) !important;
}

.page-item.active .page-link {
    background-color: #0d6efd !important;
    border-color: #0d6efd !important;
    color: white !important;
}

/* Alert Styling */
.alert {
    border-color: var(--bs-card-border-color) !important;
    transition: border-color 0.3s ease;
}

/* Badge and Small Text */
.text-muted {
    color: var(--bs-body-color) !important;
    opacity: 0.7;
    transition: color 0.3s ease;
}

/* Progress Bars */
.progress {
    background-color: var(--bs-card-border-color) !important;
    transition: background-color 0.3s ease;
}

/* Border Colors */
.border {
    border-color: var(--bs-card-border-color) !important;
    transition: border-color 0.3s ease;
}

.border-secondary {
    border-color: var(--bs-card-border-color) !important;
    transition: border-color 0.3s ease;
}

/* Input Group */
.input-group-text {
    background-color: var(--bs-form-bg) !important;
    color: var(--bs-form-color) !important;
    border-color: var(--bs-form-border-color) !important;
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}

/* List Group */
.list-group-item {
    background-color: var(--bs-card-bg) !important;
    color: var(--bs-body-color) !important;
    border-color: var(--bs-card-border-color) !important;
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}

/* Tooltip and Popover */
.tooltip-inner {
    background-color: var(--bs-modal-bg) !important;
    color: var(--bs-modal-color) !important;
}

.popover {
    background-color: var(--bs-modal-bg) !important;
    border-color: var(--bs-card-border-color) !important;
}

.popover-body {
    color: var(--bs-modal-color) !important;
}

/* Custom Scrollbar for Dark Theme */
[data-bs-theme="dark"] ::-webkit-scrollbar {
    width: 8px;
}

[data-bs-theme="dark"] ::-webkit-scrollbar-track {
    background: #495057;
}

[data-bs-theme="dark"] ::-webkit-scrollbar-thumb {
    background: #6c757d;
    border-radius: 4px;
}

[data-bs-theme="dark"] ::-webkit-scrollbar-thumb:hover {
    background: #adb5bd;
}

/* Light Theme Scrollbar */
[data-bs-theme="light"] ::-webkit-scrollbar {
    width: 8px;
}

[data-bs-theme="light"] ::-webkit-scrollbar-track {
    background: #f8f9fa;
}

[data-bs-theme="light"] ::-webkit-scrollbar-thumb {
    background: #ced4da;
    border-radius: 4px;
}

[data-bs-theme="light"] ::-webkit-scrollbar-thumb:hover {
    background: #adb5bd;
}

/* Theme Transition for All Elements */
* {
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease !important;
}