/* assets/css/theme.css */ /* Variables para el tema claro (por defecto) */ :root { --bg-color: #f8f9fa; --text-color: #212529; --text-muted-color: #6c757d; --link-color: #0d6efd; --link-hover-color: #0a58ca; --card-bg-color: #ffffff; --card-border-color: #dee2e6; --card-shadow: 0 2px 4px rgba(0,0,0,0.1); --table-bg: #ffffff; --table-color: #212529; --table-striped-bg: #f2f2f2; --table-hover-bg: #e9ecef; --table-border-color: #dee2e6; --table-dark-bg: #212529; --table-dark-color: #fff; --modal-bg: #ffffff; --btn-close-color: #000; --navbar-bg-color: #0d6efd; --navbar-color: #ffffff; --input-bg-color: #fff; --input-border-color: #ced4da; --input-text-color: #495057; --status-paid-bg: #d4edda; --status-paid-text: #155724; --status-pending-bg: #f8d7da; --status-pending-text: #721c24; --status-partial-bg: #fff3cd; --status-partial-text: #856404; --status-inactive-bg: #e2e3e5; --status-inactive-text: #6c757d; } /* Variables para el tema oscuro */ .dark-mode { --bg-color: #1a1a1a; --text-color: #e0e0e0; --text-muted-color: #a0a0a0; --link-color: #69a6ff; --link-hover-color: #8cbaff; --card-bg-color: #2c2c2c; --card-border-color: #444444; --card-shadow: 0 2px 4px rgba(0,0,0,0.3); --table-bg: #2c2c2c; --table-color: #e0e0e0; --table-striped-bg: #212529; --table-hover-bg: #32383e; --table-border-color: #444444; --table-dark-bg: #343a40; --table-dark-color: #e0e0e0; --modal-bg: #2c2c2c; --btn-close-color: #fff; --navbar-bg-color: #1a1a1a; --navbar-color: #e0e0e0; --input-bg-color: #2c2c2c; --input-border-color: #444; --input-text-color: #e0e0e0; --status-paid-bg: #28a745; --status-paid-text: #ffffff; --status-pending-bg: #dc3545; --status-pending-text: #ffffff; --status-partial-bg: #ffc107; --status-partial-text: #212529; --status-inactive-bg: #6c757d; --status-inactive-text: #ffffff; } /* --- ESTILOS GENERALES --- */ body { background-color: var(--bg-color); color: var(--text-color); transition: background-color 0.3s, color 0.3s; } .card { background-color: var(--card-bg-color) !important; border-color: var(--card-border-color) !important; color: var(--text-color) !important; box-shadow: var(--card-shadow); } .form-control, .form-select { background-color: var(--input-bg-color) !important; border-color: var(--input-border-color) !important; color: var(--input-text-color) !important; } .form-control:focus, .form-select:focus { box-shadow: 0 0 0 0.25rem rgba(var(--navbar-bg-color), 0.25); } /* Select múltiple específico */ .form-select[multiple] { background-color: var(--input-bg-color) !important; border-color: var(--input-border-color) !important; color: var(--input-text-color) !important; } .form-select[multiple] option { background-color: var(--input-bg-color) !important; color: var(--input-text-color) !important; padding: 0.25rem 0.5rem !important; } .form-select[multiple] option:checked { background-color: rgba(13, 110, 253, 0.2) !important; color: var(--input-text-color) !important; } .dark-mode .form-select[multiple] option:checked { background-color: rgba(105, 166, 255, 0.2) !important; color: var(--input-text-color) !important; } /* --- TABLAS (Método Bootstrap) --- */ .table { --bs-table-color: var(--table-color); --bs-table-bg: var(--table-bg); --bs-table-border-color: var(--table-border-color); --bs-table-striped-bg: var(--table-striped-bg); --bs-table-striped-color: var(--table-color); --bs-table-hover-bg: var(--table-hover-bg); --bs-table-hover-color: var(--table-color); } .table-dark { --bs-table-color: var(--table-dark-color); --bs-table-bg: var(--table-dark-bg); --bs-table-border-color: var(--table-border-color); } /* --- TEXTO Y ENLACES --- */ h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, p, li, small, .form-label { color: inherit; } a { color: var(--link-color); } a:hover { color: var(--link-hover-color); } .dark-mode .text-dark, .dark-mode .text-body { color: var(--text-color) !important; } .dark-mode .text-muted { color: var(--text-muted-color) !important; } .dark-mode .text-primary { color: #69a6ff !important; } .dark-mode .text-success { color: #32cd6c !important; } .dark-mode .text-info { color: #3cf0f0 !important; } .dark-mode .text-warning { color: #ffcb3d !important; } .dark-mode .text-danger { color: #f8707c !important; } .dark-mode .text-secondary { color: var(--text-muted-color) !important; } /* --- NAVBAR --- */ .dark-mode .navbar-dark { background-color: var(--navbar-bg-color) !important; } .dark-mode .navbar-dark .navbar-brand, .dark-mode .navbar-dark .nav-link { color: var(--navbar-color) !important; } .navbar-brand, .nav-link.active { font-weight: bold; } /* --- DROPDOWN --- */ .dark-mode .dropdown-menu { background-color: var(--card-bg-color) !important; border-color: var(--card-border-color) !important; } .dark-mode .dropdown-item { color: var(--text-color) !important; } .dark-mode .dropdown-item:hover, .dark-mode .dropdown-item:focus { background-color: rgba(255, 255, 255, 0.15) !important; } .dark-mode .dropdown-divider { border-top-color: var(--card-border-color) !important; } /* --- MODALS --- */ .modal-content { background-color: var(--modal-bg); color: var(--text-color); } .modal-header { border-bottom-color: var(--card-border-color); } .modal-footer { border-top-color: var(--card-border-color); } .btn-close { color: var(--btn-close-color); } .dark-mode .btn-close { filter: invert(1) grayscale(100%) brightness(200%); } /* --- ESTADOS Y COLORES --- */ .paid { background-color: var(--status-paid-bg) !important; color: var(--status-paid-text) !important; } .pending { background-color: var(--status-pending-bg) !important; color: var(--status-pending-text) !important; } .partial { background-color: var(--status-partial-bg) !important; color: var(--status-partial-text) !important; } .inactive { background-color: var(--status-inactive-bg) !important; color: var(--status-inactive-text) !important; } /* --- OTROS --- */ .stat-card { transition: transform 0.2s; } .stat-card:hover { transform: translateY(-5px); } table { font-size: 14px; } .payment-cell { cursor: pointer; } /* --- BOTÓN DE TEMA --- */ #theme-toggle { cursor: pointer; font-size: 1.25rem; background: none; border: none; color: var(--navbar-color); } .dark-mode #theme-toggle { color: var(--navbar-color); } /* Botones de checkboxes para meses */ .dark-mode .btn-outline-primary { border-color: var(--input-border-color) !important; color: var(--input-text-color) !important; background-color: var(--input-bg-color) !important; } .dark-mode .btn-outline-primary:hover { background-color: var(--navbar-bg-color) !important; border-color: var(--navbar-bg-color) !important; color: var(--navbar-color) !important; } .dark-mode .btn-check:checked + .btn-outline-primary { background-color: var(--navbar-bg-color) !important; border-color: var(--navbar-bg-color) !important; color: var(--navbar-color) !important; }