/* =========================================================================
   OVERRIDES DE BOOTSTRAP 5 AL TEMA OSCURO
   Mantiene la grid/utilities de Bootstrap pero re-colorea superficies
   ========================================================================= */

/* Body */
body.bg-light, body { background: var(--bg-base) !important; color: var(--text-body); }

/* Containers por defecto */
.container, .container-fluid, .container-sm, .container-md, .container-lg, .container-xl { color: var(--text-body); }

/* Cards */
.card {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.01)) !important;
    border: 1px solid var(--border-subtle) !important;
    border-radius: var(--radius-2xl) !important;
    color: var(--text-body);
}
.card-header {
    background: transparent !important;
    border-bottom: 1px solid var(--border-subtle) !important;
    color: var(--text-primary);
    font-weight: 600;
}
.card-header.bg-dark, .card-header.bg-primary, .card-header.bg-success, .card-header.bg-danger, .card-header.bg-warning, .card-header.bg-info {
    background: var(--grad-brand) !important;
    color: #fff !important;
    border-bottom: none !important;
}
.card-header.bg-success { background: linear-gradient(135deg, #16a34a, #0a6a2f) !important; }
.card-header.bg-danger { background: linear-gradient(135deg, #dc2626, #7f1d1d) !important; }
.card-header.bg-warning { background: linear-gradient(135deg, #d97706, #78350f) !important; }
.card-header.bg-info { background: linear-gradient(135deg, #0891b2, #155e75) !important; }
.card-body { color: var(--text-body); }
.card-footer { background: transparent !important; border-top: 1px solid var(--border-subtle) !important; color: var(--text-muted); }

/* Subrayados de KPI cards del dashboard existente — los dejamos visuales */
.kpi-card { border-left-width: 3px !important; }

/* Texts utility colors remap */
.text-primary { color: var(--accent-violet-light) !important; }
.text-secondary { color: var(--text-muted) !important; }
.text-success { color: var(--success) !important; }
.text-danger { color: var(--danger) !important; }
.text-warning { color: var(--warning) !important; }
.text-info { color: var(--info) !important; }
.text-dark { color: var(--text-primary) !important; }
.text-muted { color: var(--text-subtle) !important; }
.text-body { color: var(--text-body) !important; }
.text-white { color: var(--text-primary) !important; }

/* Backgrounds utility */
.bg-light { background: var(--bg-elevated) !important; color: var(--text-body) !important; }
.bg-white { background: var(--bg-elevated) !important; color: var(--text-body) !important; }
.bg-dark { background: var(--bg-sidebar-start) !important; color: var(--text-body) !important; }
.bg-body, .bg-body-tertiary { background: var(--bg-base) !important; }

/* Forms */
.form-control, .form-select {
    background: var(--bg-elevated) !important;
    border: 1px solid var(--border-default) !important;
    color: var(--text-body) !important;
    border-radius: var(--radius-md) !important;
    font-family: var(--font-body);
    transition: border-color var(--trans-fast), background var(--trans-fast);
}
.form-control:focus, .form-select:focus {
    background: var(--bg-elevated-hover) !important;
    border-color: rgba(139, 92, 246, 0.5) !important;
    box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.15) !important;
    color: var(--text-body) !important;
}
.form-control::placeholder { color: var(--text-subtle) !important; }
.form-control:disabled, .form-select:disabled { background: rgba(255,255,255,0.02) !important; color: var(--text-subtle) !important; }
.form-check-input {
    background: var(--bg-elevated);
    border: 1px solid var(--border-strong);
}
.form-check-input:checked { background: var(--accent-violet); border-color: var(--accent-violet); }
.form-check-label { color: var(--text-body); }
.form-label { color: var(--text-muted); font-size: 12px; font-weight: 600; letter-spacing: 0.2px; }
.input-group-text {
    background: var(--bg-elevated) !important;
    border: 1px solid var(--border-default) !important;
    color: var(--text-body) !important;
}

/* Botones */
.btn { font-family: var(--font-body); border-radius: var(--radius-md); font-weight: 500; transition: transform var(--trans-fast), background var(--trans-fast), border-color var(--trans-fast); }
.btn:hover { transform: translateY(-1px); }
.btn:focus { box-shadow: 0 0 0 3px rgba(139,92,246,0.2) !important; }

.btn-primary {
    background: var(--grad-brand) !important;
    border: none !important;
    color: #fff !important;
    box-shadow: var(--shadow-brand);
}
.btn-primary:hover, .btn-primary:focus { color: #fff !important; }
.btn-secondary {
    background: var(--bg-elevated) !important;
    border: 1px solid var(--border-default) !important;
    color: var(--text-body) !important;
}
.btn-secondary:hover { background: var(--bg-elevated-hover) !important; color: var(--text-primary) !important; }

.btn-success {
    background: linear-gradient(135deg, #16a34a, #065f46) !important;
    border: none !important;
    color: #fff !important;
}
.btn-danger {
    background: linear-gradient(135deg, #dc2626, #7f1d1d) !important;
    border: none !important;
    color: #fff !important;
}
.btn-warning {
    background: linear-gradient(135deg, #d97706, #78350f) !important;
    border: none !important;
    color: #fff !important;
}
.btn-info {
    background: linear-gradient(135deg, #0891b2, #0e7490) !important;
    border: none !important;
    color: #fff !important;
}
.btn-dark {
    background: var(--bg-sidebar-start) !important;
    border: 1px solid var(--border-strong) !important;
    color: var(--text-body) !important;
}

.btn-outline-primary { background: transparent !important; border: 1px solid rgba(139,92,246,0.5) !important; color: var(--accent-violet-light) !important; }
.btn-outline-primary:hover { background: rgba(139,92,246,0.12) !important; color: var(--text-primary) !important; }
.btn-outline-secondary { background: transparent !important; border: 1px solid var(--border-strong) !important; color: var(--text-muted) !important; }
.btn-outline-secondary:hover { background: var(--bg-elevated) !important; color: var(--text-primary) !important; }
.btn-outline-success { background: transparent !important; border: 1px solid rgba(134,239,172,0.4) !important; color: var(--success) !important; }
.btn-outline-success:hover { background: var(--success-bg) !important; color: var(--success) !important; }
.btn-outline-danger { background: transparent !important; border: 1px solid rgba(248,113,113,0.4) !important; color: var(--danger) !important; }
.btn-outline-danger:hover { background: var(--danger-bg) !important; color: var(--danger) !important; }
.btn-outline-warning { background: transparent !important; border: 1px solid rgba(251,191,36,0.4) !important; color: var(--warning) !important; }
.btn-outline-warning:hover { background: var(--warning-bg) !important; color: var(--warning) !important; }
.btn-outline-info { background: transparent !important; border: 1px solid rgba(103,232,249,0.4) !important; color: var(--info) !important; }
.btn-outline-info:hover { background: var(--info-bg) !important; color: var(--info) !important; }
.btn-outline-dark { background: transparent !important; border: 1px solid var(--border-strong) !important; color: var(--text-body) !important; }

.btn-link { color: var(--accent-violet-light) !important; }

/* Tables */
.table {
    color: var(--text-body) !important;
    background: transparent !important;
    --bs-table-bg: transparent;
    --bs-table-color: var(--text-body);
    --bs-table-striped-bg: rgba(255,255,255,0.02);
    --bs-table-striped-color: var(--text-body);
    --bs-table-hover-bg: rgba(255,255,255,0.03);
    --bs-table-hover-color: var(--text-primary);
    --bs-table-border-color: var(--border-subtle);
}
.table > thead { color: var(--text-muted); }
.table > thead th {
    background: rgba(255,255,255,0.02) !important;
    border-bottom: 1px solid var(--border-strong) !important;
    color: var(--text-muted) !important;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    padding: 10px 12px;
}
.table > tbody > tr > td, .table > tbody > tr > th {
    border-color: var(--border-subtle) !important;
    padding: 10px 12px;
    vertical-align: middle;
    font-size: 13px;
}
.table-dark {
    --bs-table-bg: var(--bg-sidebar-start);
    --bs-table-color: var(--text-body);
}
.table-dark > thead th { background: var(--bg-sidebar-start) !important; }
.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-accent-bg: rgba(255,255,255,0.015); color: var(--text-body); }
.table-bordered, .table-bordered > :not(caption) > * { border-color: var(--border-subtle) !important; }
.table-light, .table-light > th { background: var(--bg-elevated) !important; color: var(--text-body) !important; }

/* Badges nativas de Bootstrap */
.badge { font-weight: 600; letter-spacing: 0.2px; }
.badge.bg-primary, .bg-primary { background: rgba(139,92,246,0.15) !important; color: var(--accent-violet-light) !important; border: 1px solid rgba(139,92,246,0.3); }
.badge.bg-secondary, .bg-secondary { background: rgba(255,255,255,0.06) !important; color: var(--text-muted) !important; }
.badge.bg-success, .bg-success { background: var(--success-bg) !important; color: var(--success) !important; border: 1px solid var(--success-border); }
.badge.bg-danger, .bg-danger { background: var(--danger-bg) !important; color: var(--danger) !important; border: 1px solid var(--danger-border); }
.badge.bg-warning, .bg-warning { background: var(--warning-bg) !important; color: var(--warning) !important; border: 1px solid var(--warning-border); }
.badge.bg-info, .bg-info { background: var(--info-bg) !important; color: var(--info) !important; border: 1px solid var(--info-border); }
.badge.bg-dark, .bg-dark { background: var(--bg-sidebar-start) !important; color: var(--text-body) !important; }
.badge.bg-light, .bg-light { background: var(--bg-elevated) !important; color: var(--text-body) !important; }

/* Alertas */
.alert {
    border-radius: var(--radius-md);
    border: 1px solid;
    padding: 10px 14px;
    color: var(--text-body);
}
.alert-success { background: var(--success-bg) !important; border-color: var(--success-border) !important; color: var(--success) !important; }
.alert-danger { background: var(--danger-bg) !important; border-color: var(--danger-border) !important; color: var(--danger) !important; }
.alert-warning { background: var(--warning-bg) !important; border-color: var(--warning-border) !important; color: var(--warning) !important; }
.alert-info { background: var(--info-bg) !important; border-color: var(--info-border) !important; color: var(--info) !important; }
.alert-secondary { background: var(--bg-elevated) !important; border-color: var(--border-default) !important; color: var(--text-body) !important; }
.alert-primary { background: rgba(139,92,246,0.1) !important; border-color: rgba(139,92,246,0.3) !important; color: var(--accent-violet-light) !important; }
.alert-dismissible .btn-close {
    filter: invert(1) opacity(0.5);
}
.alert .alert-link { color: inherit; text-decoration: underline; }

/* Dropdowns */
.dropdown-menu {
    background: #15151f !important;
    border: 1px solid var(--border-strong) !important;
    border-radius: var(--radius-lg) !important;
    box-shadow: 0 12px 32px rgba(0,0,0,0.5);
    padding: 6px;
}
.dropdown-item { color: var(--text-body) !important; border-radius: var(--radius-sm); padding: 8px 12px; font-size: 13px; }
.dropdown-item:hover, .dropdown-item:focus { background: rgba(139,92,246,0.12) !important; color: var(--text-primary) !important; }
.dropdown-item.active, .dropdown-item:active { background: var(--accent-violet) !important; color: #fff !important; }
.dropdown-divider { border-color: var(--border-strong); }
.dropdown-menu-dark { background: #15151f !important; }

/* Modales */
.modal-content {
    background: #12121c !important;
    border: 1px solid var(--border-strong) !important;
    border-radius: var(--radius-2xl) !important;
    color: var(--text-body);
}
.modal-header { border-bottom: 1px solid var(--border-subtle) !important; }
.modal-footer { border-top: 1px solid var(--border-subtle) !important; }
.modal-title { color: var(--text-primary); font-family: var(--font-display); }
.btn-close { filter: invert(1) opacity(0.7); }
.btn-close:hover { filter: invert(1) opacity(1); }
.modal-backdrop.show { opacity: 0.7; }

/* List groups */
.list-group-item {
    background: var(--bg-elevated) !important;
    border-color: var(--border-subtle) !important;
    color: var(--text-body) !important;
}
.list-group-item.active { background: var(--accent-violet) !important; color: #fff !important; border-color: var(--accent-violet); }
.list-group-item-action:hover { background: var(--bg-elevated-hover) !important; color: var(--text-primary) !important; }

/* Accordion */
.accordion { --bs-accordion-border-color: var(--border-subtle); --bs-accordion-bg: transparent; --bs-accordion-color: var(--text-body); }
.accordion-item { background: transparent !important; border: 1px solid var(--border-subtle) !important; border-radius: var(--radius-md) !important; margin-bottom: 4px; }
.accordion-button {
    background: var(--bg-elevated) !important;
    color: var(--text-body) !important;
    border-radius: var(--radius-md) !important;
    box-shadow: none !important;
    font-weight: 600;
}
.accordion-button:not(.collapsed) { background: rgba(139,92,246,0.1) !important; color: var(--text-primary) !important; }
.accordion-button::after { filter: invert(1) opacity(0.7); }
.accordion-body { background: var(--bg-card) !important; color: var(--text-body); }

/* Nav tabs / pills */
.nav-tabs { border-bottom: 1px solid var(--border-strong); }
.nav-tabs .nav-link { color: var(--text-muted); border: none; border-bottom: 2px solid transparent; padding: 10px 14px; }
.nav-tabs .nav-link:hover { color: var(--text-body); border-color: transparent; }
.nav-tabs .nav-link.active { background: transparent; color: var(--accent-violet-light); border-bottom: 2px solid var(--accent-violet); }
.nav-pills .nav-link { color: var(--text-muted); background: var(--bg-elevated); border: 1px solid var(--border-default); margin-right: 4px; }
.nav-pills .nav-link:hover { color: var(--text-body); background: var(--bg-elevated-hover); }
.nav-pills .nav-link.active, .nav-pills .show > .nav-link { background: var(--grad-brand) !important; color: #fff !important; border-color: transparent; }

/* Offcanvas */
.offcanvas { background: linear-gradient(180deg, var(--bg-sidebar-start), var(--bg-sidebar-end)) !important; color: var(--text-body); border-right: 1px solid var(--border-strong) !important; }
.offcanvas-header { border-bottom: 1px solid var(--border-subtle); }

/* Pagination */
.pagination .page-link {
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    color: var(--text-body);
    margin: 0 2px;
    border-radius: var(--radius-sm) !important;
}
.pagination .page-item.active .page-link {
    background: var(--grad-brand);
    border-color: transparent;
    color: #fff;
}
.pagination .page-item.disabled .page-link { background: var(--bg-elevated); color: var(--text-faint); }

/* Spinners */
.spinner-border, .spinner-grow { color: var(--accent-violet-light); }

/* HR */
hr { border-color: var(--border-subtle); opacity: 1; }

/* Small textos */
small, .small { color: var(--text-muted); }

/* Inputs number */
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="time"]::-webkit-calendar-picker-indicator,
input[type="month"]::-webkit-calendar-picker-indicator {
    filter: invert(0.7);
    cursor: pointer;
}

/* Row hover for clickable tables */
.fila-clickable { transition: background 0.15s ease; }
.fila-clickable:hover { background: var(--bg-card-hover) !important; cursor: pointer; color: var(--text-primary); }

/* =========================================================================
   Ocultar el viejo navbar de HGE si existe (al refactorizar todo a sidebar)
   ========================================================================= */
nav.hge-navbar { display: none !important; }

/* Estilos de calendario en components.css (.cal-*) */

/* Para impresión seguir mostrando en claro si se usa print */
@media print {
    body { background: #fff !important; color: #000 !important; }
    .sidebar, .bottom-nav, .topbar, .no-print { display: none !important; }
    .page-main { width: 100% !important; }
    .card, .card-premium { background: #fff !important; color: #000 !important; border-color: #ddd !important; }
    .text-body, .text-primary, .text-muted, .text-subtle { color: #000 !important; }
}
