/* =============================================================
   NeuHábita — Modo Oscuro
   Activar agregando la clase "dark-mode" al <body>:
       document.body.classList.toggle('dark-mode');
   Guardar preferencia: localStorage.setItem('darkMode', '1');
   ============================================================= */

/* ── Variables base ── */
body.dark-mode {
    --dm-bg:           #1a1d23;
    --dm-bg-secondary: #22262e;
    --dm-bg-tertiary:  #2b2f3a;
    --dm-surface:      #2e3340;
    --dm-border:       #3d4454;
    --dm-text:         #d8dce8;
    --dm-text-muted:   #8890a4;
    --dm-text-heading: #eef0f6;
    --dm-link:         #5baddb;
    --dm-link-hover:   #7dc3e8;
    --dm-blue:         #2d7ab3;
    --dm-blue-light:   #3d90cc;
    --dm-green:        #1d8a4b;
    --dm-green-light:  #27a85c;
    --dm-red:          #c0392b;
    --dm-yellow:       #c89b2a;
    --dm-shadow:       rgba(0, 0, 0, 0.5);
}

/* ══════════════════════════════════════════════
   1. LAYOUT GENERAL — AdminLTE wrapper
══════════════════════════════════════════════ */
body.dark-mode,
body.dark-mode .content-wrapper,
body.dark-mode .right-side,
body.dark-mode .wrapper {
    background-color: var(--dm-bg) !important;
    color: var(--dm-text) !important;
}

/* ── Navbar superior ── */
body.dark-mode .main-header .navbar,
body.dark-mode .main-header .logo {
    background-color: var(--dm-bg-secondary) !important;
    border-bottom-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .main-header .navbar .nav > li > a,
body.dark-mode .main-header .logo {
    color: var(--dm-text) !important;
}
body.dark-mode .main-header .navbar .nav > li > a:hover {
    background-color: var(--dm-bg-tertiary) !important;
}

/* ── Skin-blue / skin-green: barra de skin ── */
body.dark-mode.skin-blue .main-header .navbar,
body.dark-mode.skin-green .main-header .navbar,
body.dark-mode.skin-red .main-header .navbar {
    background-color: var(--dm-bg-secondary) !important;
}
body.dark-mode.skin-blue .main-header .logo,
body.dark-mode.skin-green .main-header .logo,
body.dark-mode.skin-red .main-header .logo {
    background-color: var(--dm-bg-tertiary) !important;
    border-bottom-color: var(--dm-border) !important;
}

/* ── Sidebar ── */
body.dark-mode .main-sidebar,
body.dark-mode .left-side {
    background-color: var(--dm-bg-secondary) !important;
}
body.dark-mode .sidebar-menu > li > a,
body.dark-mode .sidebar-menu > li.header {
    color: var(--dm-text-muted) !important;
    border-left-color: transparent !important;
}
body.dark-mode .sidebar-menu > li > a:hover,
body.dark-mode .sidebar-menu > li.active > a {
    background-color: var(--dm-bg-tertiary) !important;
    color: var(--dm-text-heading) !important;
}
body.dark-mode .sidebar-menu > li.active > a {
    border-left-color: var(--dm-blue-light) !important;
}
body.dark-mode .sidebar-menu .treeview-menu {
    background-color: var(--dm-bg) !important;
}
body.dark-mode .sidebar-menu .treeview-menu > li > a {
    color: var(--dm-text-muted) !important;
}
body.dark-mode .sidebar-menu .treeview-menu > li > a:hover,
body.dark-mode .sidebar-menu .treeview-menu > li.active > a {
    color: var(--dm-link) !important;
}
body.dark-mode .user-panel > .info,
body.dark-mode .user-panel > .info > a {
    color: var(--dm-text) !important;
}

/* ── Footer ── */
body.dark-mode .main-footer {
    background-color: var(--dm-bg-secondary) !important;
    border-top-color: var(--dm-border) !important;
    color: var(--dm-text-muted) !important;
}

/* ══════════════════════════════════════════════
   2. BOXES (AdminLTE)
══════════════════════════════════════════════ */
body.dark-mode .box {
    background-color: var(--dm-surface) !important;
    border-top-color: var(--dm-border) !important;
    box-shadow: 0 1px 3px var(--dm-shadow) !important;
}
body.dark-mode .box-header {
    background-color: var(--dm-surface) !important;
    color: var(--dm-text-heading) !important;
    border-bottom-color: var(--dm-border) !important;
}
body.dark-mode .box-body,
body.dark-mode .box-footer {
    background-color: var(--dm-surface) !important;
    color: var(--dm-text) !important;
    border-top-color: var(--dm-border) !important;
}
body.dark-mode .box.box-primary   { border-top-color: var(--dm-blue)  !important; }
body.dark-mode .box.box-success   { border-top-color: var(--dm-green) !important; }
body.dark-mode .box.box-danger    { border-top-color: var(--dm-red)   !important; }
body.dark-mode .box.box-warning   { border-top-color: var(--dm-yellow)!important; }

/* ── Info boxes / small boxes ── */
body.dark-mode .info-box {
    background-color: var(--dm-surface) !important;
    color: var(--dm-text) !important;
    box-shadow: 0 1px 3px var(--dm-shadow) !important;
}
body.dark-mode .small-box {
    color: #fff !important;
}

/* ══════════════════════════════════════════════
   3. TABLAS (Bootstrap + Yii GridView)
══════════════════════════════════════════════ */
body.dark-mode table,
body.dark-mode .table {
    color: var(--dm-text) !important;
}
body.dark-mode .table > thead > tr > th,
body.dark-mode .table > tbody > tr > th,
body.dark-mode .table > tfoot > tr > th {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text-heading) !important;
}
body.dark-mode .table > tbody > tr > td,
body.dark-mode .table > tfoot > tr > td {
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .table-bordered,
body.dark-mode .table-bordered > thead > tr > th,
body.dark-mode .table-bordered > tbody > tr > td {
    border-color: var(--dm-border) !important;
}
body.dark-mode .table-striped > tbody > tr:nth-of-type(odd) {
    background-color: rgba(255,255,255,0.04) !important;
}
body.dark-mode .table-hover > tbody > tr:hover {
    background-color: rgba(93, 173, 219, 0.12) !important;
}
/* GridView highlight personalizado */
body.dark-mode #grillaTramites tbody tr:hover {
    background: rgba(93, 173, 219, 0.15) !important;
}
/* Filas contextuales de Bootstrap (tr.info, tr.danger, etc.) */
body.dark-mode .table > tbody > tr.info > td,
body.dark-mode .table > tbody > tr.info > th {
    background-color: rgba(61, 144, 204, 0.15) !important;
}
body.dark-mode .table > tbody > tr.danger > td,
body.dark-mode .table > tbody > tr.danger > th {
    background-color: rgba(192, 57, 43, 0.15) !important;
}
body.dark-mode .table > tbody > tr.success > td,
body.dark-mode .table > tbody > tr.success > th {
    background-color: rgba(29, 138, 75, 0.15) !important;
}
body.dark-mode .table > tbody > tr.warning > td,
body.dark-mode .table > tbody > tr.warning > th {
    background-color: rgba(200, 155, 42, 0.12) !important;
}
/* Estados de fila: listado de trámites (_listado_tramite.php) */
body.dark-mode tr.tr-estado-resuelto  > td { background-color: rgba(29, 138, 75,  0.18) !important; }
body.dark-mode tr.tr-estado-pendiente > td { background-color: rgba(192, 100, 57, 0.18) !important; }
body.dark-mode tr.tr-estado-orden     > td { background-color: rgba(200, 155, 42, 0.15) !important; }
body.dark-mode tr.tr-estado-inhibido  > td { background-color: rgba(200, 155, 42, 0.10) !important; }
/* Striped override (anula el #f9f9f9 del <style> inline de _listado_tramite) */
body.dark-mode .table-striped > tbody > tr:nth-of-type(odd),
body.dark-mode .table-striped > tbody > tr:nth-of-type(even) {
    background-color: transparent !important;
}
/* Ranking card (indexdashboard) */
body.dark-mode .ranking-card {
    background-color: var(--dm-surface) !important;
    color: var(--dm-text) !important;
    border-color: var(--dm-border) !important;
}

/* ══════════════════════════════════════════════
   4. FORMULARIOS
══════════════════════════════════════════════ */
body.dark-mode .form-control,
body.dark-mode input[type="text"],
body.dark-mode input[type="email"],
body.dark-mode input[type="password"],
body.dark-mode input[type="number"],
body.dark-mode input[type="search"],
body.dark-mode input[type="date"],
body.dark-mode textarea,
body.dark-mode select {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .form-control:focus,
body.dark-mode input:focus,
body.dark-mode textarea:focus,
body.dark-mode select:focus {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-blue-light) !important;
    color: var(--dm-text-heading) !important;
    box-shadow: 0 0 0 2px rgba(61, 144, 204, 0.3) !important;
}
body.dark-mode .form-control[disabled],
body.dark-mode .form-control[readonly],
body.dark-mode fieldset[disabled] .form-control {
    background-color: var(--dm-bg-secondary) !important;
    color: var(--dm-text-muted) !important;
}
body.dark-mode label,
body.dark-mode .control-label {
    color: var(--dm-text) !important;
}
body.dark-mode .input-group-addon {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text-muted) !important;
}

/* ── Select2 ── */
body.dark-mode .select2-container--default .select2-selection--single,
body.dark-mode .select2-container--default .select2-selection--multiple {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .select2-container--default .select2-selection--single .select2-selection__rendered {
    color: var(--dm-text) !important;
}
body.dark-mode .select2-dropdown {
    background-color: var(--dm-surface) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .select2-container--default .select2-results__option--highlighted {
    background-color: var(--dm-blue) !important;
}

/* ══════════════════════════════════════════════
   5. MODALES (Bootstrap 3)
══════════════════════════════════════════════ */
body.dark-mode .modal-content {
    background-color: var(--dm-surface) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .modal-header {
    background-color: var(--dm-blue) !important;
    border-bottom-color: var(--dm-border) !important;
    color: #fff !important;
}
body.dark-mode .modal-body {
    background-color: var(--dm-surface) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .modal-footer {
    background-color: var(--dm-bg-secondary) !important;
    border-top-color: var(--dm-border) !important;
}
body.dark-mode .modal-backdrop {
    background-color: #000 !important;
}
/* Workflow diagram modal */
body.dark-mode .workflow-diagram-modal .modal-content {
    background-color: var(--dm-surface) !important;
}
body.dark-mode .workflow-network-container {
    border-color: var(--dm-border) !important;
    background: var(--dm-bg-tertiary) !important;
}
body.dark-mode .workflow-legend {
    background-color: var(--dm-bg-secondary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}

/* ══════════════════════════════════════════════
   6. BOTONES
══════════════════════════════════════════════ */
body.dark-mode .btn-default {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .btn-default:hover {
    background-color: var(--dm-surface) !important;
    color: var(--dm-text-heading) !important;
}
body.dark-mode .btn-primary {
    background-color: var(--dm-blue) !important;
    border-color: var(--dm-blue-light) !important;
}
body.dark-mode .btn-primary:hover {
    background-color: var(--dm-blue-light) !important;
}
body.dark-mode .btn-success {
    background-color: var(--dm-green) !important;
    border-color: var(--dm-green-light) !important;
    color: #fff !important;
}
body.dark-mode .btn-success:hover {
    background-color: var(--dm-green-light) !important;
    color: #fff !important;
}
body.dark-mode .btn-danger {
    background-color: var(--dm-red) !important;
}

/* ══════════════════════════════════════════════
   7. ALERTS / PANELS / WELL
══════════════════════════════════════════════ */
body.dark-mode .alert {
    border-color: var(--dm-border) !important;
}
body.dark-mode .alert-info {
    background-color: rgba(45, 122, 179, 0.2) !important;
    color: #8ecae6 !important;
}
body.dark-mode .alert-success {
    background-color: rgba(29, 138, 75, 0.2) !important;
    color: #a0d9b4 !important;
}
body.dark-mode .alert-warning {
    background-color: rgba(200, 155, 42, 0.2) !important;
    color: #d4b96a !important;
}
/* Labels y badges warning: amarillo atenuado para no enceguecer */
body.dark-mode .label-warning,
body.dark-mode .badge-warning {
    background-color: #ad8128 !important;
    color: #fce99a !important;
}
body.dark-mode .label-warning[href]:hover,
body.dark-mode .badge-warning:hover {
    background-color: #c29432 !important;
}
body.dark-mode .alert-danger {
    background-color: rgba(192, 57, 43, 0.2) !important;
    color: #f5a3a3 !important;
}
body.dark-mode .panel {
    background-color: var(--dm-surface) !important;
    border-color: var(--dm-border) !important;
}
body.dark-mode .panel-heading {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text-heading) !important;
}
body.dark-mode .panel-body {
    background-color: var(--dm-surface) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .well {
    background-color: var(--dm-bg-secondary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}

/* ══════════════════════════════════════════════
   8. NAVEGACIÓN / TABS / BREADCRUMB
══════════════════════════════════════════════ */
body.dark-mode .nav-tabs > li > a {
    color: var(--dm-text-muted) !important;
    border-color: transparent !important;
    background-color: transparent !important;
}
body.dark-mode .nav-tabs > li.active > a,
body.dark-mode .nav-tabs > li.active > a:hover {
    background-color: var(--dm-surface) !important;
    border-color: var(--dm-border) var(--dm-border) transparent !important;
    color: var(--dm-text-heading) !important;
}
body.dark-mode .nav-tabs {
    border-bottom-color: var(--dm-border) !important;
}
body.dark-mode .breadcrumb {
    background-color: var(--dm-bg-secondary) !important;
    color: var(--dm-text-muted) !important;
}
body.dark-mode .breadcrumb > li + li::before {
    color: var(--dm-text-muted) !important;
}
body.dark-mode .breadcrumb > .active {
    color: var(--dm-text) !important;
}
body.dark-mode .pagination > li > a,
body.dark-mode .pagination > li > span {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-link) !important;
}
body.dark-mode .pagination > .active > a,
body.dark-mode .pagination > .active > span {
    background-color: var(--dm-blue) !important;
    border-color: var(--dm-blue) !important;
    color: #fff !important;
}

/* ══════════════════════════════════════════════
   9. CARDS — Bandeja de entrada
══════════════════════════════════════════════ */
body.dark-mode .tramites-card {
    background-color: var(--dm-green) !important;
}
body.dark-mode .tickets-card {
    background-color: var(--dm-blue) !important;
}

/* ══════════════════════════════════════════════
   10. TRAMITE — Ticket / Avance
══════════════════════════════════════════════ */
body.dark-mode .bodytramite p {
    border-color: var(--dm-blue) !important;
}
body.dark-mode .file-preview {
    background-color: var(--dm-bg-tertiary) !important;
    border-color: var(--dm-border) !important;
}
body.dark-mode .cargaAvance h2 {
    color: var(--dm-blue-light) !important;
}

/* ══════════════════════════════════════════════
   11. DOCUMENTACIÓN (vista independiente)
══════════════════════════════════════════════ */
body.dark-mode header {
    background-color: var(--dm-bg-secondary) !important;
    color: var(--dm-link) !important;
    box-shadow: 0 5px 5px var(--dm-shadow) !important;
}
body.dark-mode .menu {
    background-color: var(--dm-bg-secondary) !important;
}
body.dark-mode .menu > ul > li > a,
body.dark-mode li > a {
    color: var(--dm-text) !important;
}
body.dark-mode .menu > ul > li:hover {
    background-color: rgba(255,255,255,0.06) !important;
    color: var(--dm-link) !important;
}
body.dark-mode .activo {
    box-shadow: inset .25em 0 0 var(--dm-link) !important;
    background-color: rgba(255,255,255,0.06) !important;
}
body.dark-mode .activo > a {
    color: var(--dm-link) !important;
}
body.dark-mode .documentacion {
    background-color: transparent !important;
    color: var(--dm-text) !important;
}

/* ══════════════════════════════════════════════
   12. MISCÉLANEO
══════════════════════════════════════════════ */
body.dark-mode hr {
    border-color: var(--dm-border) !important;
}
body.dark-mode a {
    color: var(--dm-link) !important;
}
body.dark-mode a:hover {
    color: var(--dm-link-hover) !important;
}
body.dark-mode .text-muted,
body.dark-mode .hint-block {
    color: var(--dm-text-muted) !important;
}
body.dark-mode .error-summary {
    background: rgba(192, 57, 43, 0.15) !important;
    border-left-color: var(--dm-red) !important;
    color: #f5a3a3 !important;
}
body.dark-mode pre,
body.dark-mode code {
    background-color: var(--dm-bg-tertiary) !important;
    color: #c9d1d9 !important;
    border-color: var(--dm-border) !important;
}
body.dark-mode .callout {
    background-color: var(--dm-surface) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
/* Scrollbar custom (Webkit) */
body.dark-mode ::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}
body.dark-mode ::-webkit-scrollbar-track {
    background: var(--dm-bg-secondary);
}
body.dark-mode ::-webkit-scrollbar-thumb {
    background-color: var(--dm-border);
    border-radius: 4px;
}
body.dark-mode ::-webkit-scrollbar-thumb:hover {
    background-color: var(--dm-text-muted);
}

/* ══════════════════════════════════════════════
   13. HELPERS DE VISTAS ESPECÍFICAS
══════════════════════════════════════════════ */
/* Labels ADUS / IPVU (ticketsabm) */
body.dark-mode .label-adus {
    background-color: #8a7220 !important;
    color: #fde8a0 !important;
}
body.dark-mode .label-ipvu {
    background-color: #7a2e1e !important;
    color: #f5b0a0 !important;
}
/* Conteo de usuarios por sector */
body.dark-mode .dm-count-muted {
    color: var(--dm-text-muted) !important;
}
/* Etiqueta de filtro activo */
body.dark-mode .texto-filtro {
    color: #ffa040 !important;
}
/* DatePicker popup */
body.dark-mode .datepicker {
    background-color: var(--dm-surface) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-mode .datepicker table tr td,
body.dark-mode .datepicker table tr th {
    color: var(--dm-text) !important;
}
body.dark-mode .datepicker table tr td:hover,
body.dark-mode .datepicker table tr th:hover {
    background-color: var(--dm-bg-tertiary) !important;
}
body.dark-mode .datepicker table tr td.today {
    background-color: var(--dm-blue) !important;
    color: #fff !important;
}
body.dark-mode .datepicker table tr td.active,
body.dark-mode .datepicker table tr td.active:hover {
    background-color: var(--dm-blue-light) !important;
    color: #fff !important;
}
body.dark-mode .datepicker-dropdown::before {
    border-bottom-color: var(--dm-border) !important;
}
body.dark-mode .datepicker-dropdown::after {
    border-bottom-color: var(--dm-surface) !important;
}

/* ══════════════════════════════════════════════
   14. BOTÓN TOGGLE — incluir en header.php
   (colocar cerca del ícono de usuario)
══════════════════════════════════════════════ */
#btn-dark-mode {
    cursor: pointer;
    font-size: 16px;
    padding: 0 10px;
    line-height: 50px;     /* altura del navbar AdminLTE */
    color: inherit;
    background: transparent;
    border: none;
    transition: color 0.2s;
}
#btn-dark-mode:hover {
    color: #fff;
}
