/**
 * Global component theme.
 * Keep all visual values tied to design-tokens.css; do not add color literals here.
 */
:root {
    --bs-primary: var(--primary);
    --bs-secondary: var(--btn-secondary-bg);
    --bs-success: var(--success);
    --bs-info: var(--info);
    --bs-warning: var(--warning);
    --bs-danger: var(--danger);
    --bs-body-bg: var(--bg-main);
    --bs-body-color: var(--text-primary);
    --bs-border-color: var(--border);
    --bs-link-color: var(--text-link);
    --bs-link-hover-color: var(--primary-hover);
}

body,
.content,
.content-wrapper,
.main-content {
    background-color: var(--bg-main);
    color: var(--text-primary);
}

a,
.link-primary {
    color: var(--text-link);
}

a:hover,
.link-primary:hover {
    color: var(--primary-hover);
}

/* Header and sidebar */
.navbar:not(.navbar-vertical),
.navbar-sticky-top,
.top-navbar,
.header,
.header-navbar {
    background-color: var(--bg-page);
    border-color: var(--border);
    box-shadow: var(--shadow-card);
}

.navbar-vertical,
.navbar-vertical-aside,
.navbar-vertical-content,
.navbar-vertical-container,
.navbar-vertical-aside .navbar-brand-wrapper {
    background-color: var(--bg-sidebar);
    border-color: var(--border);
}

.navbar-vertical .nav-link,
.navbar-vertical .nav-sub .nav-link,
.navbar-vertical-content .nav-subtitle,
.navbar-vertical-content .nav-sub {
    color: var(--menu-text);
}

.navbar-vertical .nav-link:hover,
.navbar-vertical .nav-link:focus,
.navbar-vertical .nav-sub .nav-link:hover,
.navbar-vertical .show > .nav-link {
    background-color: var(--menu-hover-bg);
    color: var(--menu-hover-text);
}

.navbar-vertical .active > .nav-link,
.navbar-vertical .nav-link.active,
.navbar-vertical .nav-link.show,
.navbar-vertical .show > .nav-link,
.navbar-vertical-aside-has-menu.active > .nav-link {
    background-color: var(--menu-active-bg);
    color: var(--menu-active-text);
}

.navbar-vertical .nav-link.active .nav-icon,
.navbar-vertical .nav-link.active .nav-indicator-icon,
.navbar-vertical .active > .nav-link .nav-icon,
.navbar-vertical .active > .nav-link .nav-indicator-icon {
    color: var(--menu-active-text);
}

/* Buttons and actions */
.btn-primary,
.btn-primary:not(:disabled):not(.disabled),
.btn-primary:focus,
.btn-primary:active,
.btn-check:checked + .btn-primary {
    background-color: var(--btn-primary-bg);
    border-color: var(--btn-primary-bg);
    color: var(--text-white);
}

.btn-primary:hover,
.btn-primary:not(:disabled):not(.disabled):hover {
    background-color: var(--btn-primary-hover);
    border-color: var(--btn-primary-hover);
    color: var(--text-white);
}

.btn-primary:active,
.btn-primary:not(:disabled):not(.disabled):active {
    background-color: var(--btn-primary-active);
    border-color: var(--btn-primary-active);
}

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

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

.btn-outline-primary {
    background-color: var(--bg-card);
    border-color: var(--primary);
    color: var(--primary);
}

.btn-outline-primary:hover,
.btn-outline-primary:focus {
    background-color: var(--primary);
    border-color: var(--primary);
    color: var(--text-white);
}

/* Cards, modals, menus and dashboard blocks */
.card,
.modal-content,
.offcanvas,
.dropdown-menu,
.popover,
.dashboard-card,
.dashboard-widget,
.dashboard-widget-card,
.analytics-card,
.report-card,
.report-summary,
.summary-card {
    background-color: var(--bg-card);
    border-color: var(--border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
}

.card-header,
.modal-header,
.offcanvas-header,
.page-header,
.report-header,
.table-card-header {
    background-color: var(--bg-header);
    border-color: var(--border);
    color: var(--text-primary);
}

.card-footer,
.modal-footer,
.offcanvas-footer {
    background-color: var(--bg-page);
    border-color: var(--border);
}

.page-header-title,
.card-header-title,
.modal-title,
.report-title,
.dashboard-title {
    color: var(--text-primary);
}

/* Forms */
.form-control,
.form-select,
.custom-select,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple,
.input-group-text {
    background-color: var(--bg-page);
    border-color: var(--input-border);
    color: var(--text-primary);
}

.form-control::placeholder,
.form-select::placeholder,
.select2-container--default .select2-selection__placeholder {
    color: var(--text-muted);
}

.form-control:focus,
.form-select:focus,
.custom-select:focus,
.select2-container--default.select2-container--focus .select2-selection--multiple,
.select2-container--default.select2-container--open .select2-selection--single {
    background-color: var(--bg-page);
    border-color: var(--input-focus);
    box-shadow: var(--shadow-card);
    color: var(--text-primary);
}

.form-check-input:checked,
.custom-control-input:checked ~ .custom-control-label::before {
    background-color: var(--primary);
    border-color: var(--primary);
}

.form-check-input:focus,
.custom-control-input:focus ~ .custom-control-label::before {
    border-color: var(--input-focus);
    box-shadow: var(--shadow-card);
}

/* Tables, reports and filters */
.table,
.table > :not(caption) > * > * {
    border-color: var(--border);
    color: var(--text-primary);
}

.table thead th,
.table > thead > tr > th,
.table-light > :not(caption) > * > * {
    background-color: var(--table-header-bg);
    color: var(--table-header-text);
}

.table tbody tr:hover > *,
.table-hover > tbody > tr:hover > * {
    background-color: var(--table-row-hover);
    color: var(--text-primary);
}

.table-active > *,
.table-active > * > *,
tr.table-active > * {
    background-color: var(--table-selected);
    color: var(--text-primary);
}

.report-filter,
.report-toolbar,
.analytics-filter,
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_length {
    background-color: var(--bg-page);
    border-color: var(--border);
    color: var(--text-secondary);
}

/* Status, badges and alerts */
.badge-primary,
.bg-primary,
.text-bg-primary,
.alert-primary {
    background-color: var(--primary) !important;
    color: var(--text-white) !important;
}

.badge-success,
.bg-success,
.text-bg-success,
.alert-success {
    background-color: var(--success) !important;
    color: var(--text-white) !important;
}

.badge-info,
.bg-info,
.text-bg-info,
.alert-info {
    background-color: var(--info) !important;
    color: var(--text-white) !important;
}

.badge-warning,
.bg-warning,
.text-bg-warning,
.alert-warning {
    background-color: var(--warning) !important;
    color: var(--text-primary) !important;
}

.badge-danger,
.bg-danger,
.text-bg-danger,
.alert-danger {
    background-color: var(--danger) !important;
    color: var(--text-white) !important;
}

.text-primary { color: var(--primary) !important; }
.text-success { color: var(--success) !important; }
.text-info { color: var(--info) !important; }
.text-warning { color: var(--warning) !important; }
.text-danger { color: var(--danger) !important; }

/* Navigation, pagination and report tabs */
.nav-tabs,
.nav-pills,
.pagination {
    border-color: var(--border);
}

.nav-tabs .nav-link,
.nav-pills .nav-link,
.page-link {
    background-color: var(--bg-page);
    border-color: var(--border);
    color: var(--text-link);
}

.nav-tabs .nav-link:hover,
.nav-pills .nav-link:hover,
.page-link:hover {
    background-color: var(--menu-hover-bg);
    border-color: var(--primary-hover);
    color: var(--primary-hover);
}

.nav-tabs .nav-link.active,
.nav-pills .nav-link.active,
.page-item.active .page-link {
    background-color: var(--primary);
    border-color: var(--primary);
    color: var(--text-white);
}

@media (max-width: 767.98px) {
    .card,
    .modal-content,
    .dashboard-card,
    .dashboard-widget,
    .analytics-card,
    .report-card {
        border-radius: var(--radius-sm);
    }
}
