/* =====================================================================
   CMH · TEMA UNIFICADO
   Capa única de identidad visual. Se carga al final y unifica colores,
   tipografía, botones, insignias, tablas, formularios y accesibilidad
   sin modificar la estructura de las vistas.

   Para ajustar la identidad basta con cambiar las variables de :root.
   ===================================================================== */

:root {
    /* Verde del logo (serpientes del caduceo) */
    --cmh-verde-900: #1c5a2a;
    --cmh-verde-800: #1f6f30;
    --cmh-verde-700: #268239;
    --cmh-verde-600: #36a04b;
    --cmh-verde-500: #5fbf6f;
    --cmh-verde-100: #e4f5e7;
    --cmh-verde-50:  #f3fbf4;

    /* Lima del logo (borde del mapa) */
    --cmh-lima-500: #a8cf45;
    --cmh-lima-100: #f0f8d9;

    /* Dorado del logo (caduceo) */
    --cmh-dorado-700: #8a6a0a;
    --cmh-dorado-500: #dba91f;
    --cmh-dorado-100: #fcf3d2;

    /* Neutros */
    --cmh-tinta:      #1b2430;
    --cmh-texto:      #36414f;
    --cmh-suave:      #5b6675;
    --cmh-borde:      #dfe5e2;
    --cmh-superficie: #ffffff;
    --cmh-fondo:      #f6faf7;

    /* Estados */
    --cmh-ok-fondo:    #dcf5e4;
    --cmh-ok-texto:    #14592b;
    --cmh-error-fondo: #fde3e1;
    --cmh-error-texto: #9b1c13;
    --cmh-error:       #c62f24;
    --cmh-aviso-fondo: #fdf0c8;
    --cmh-aviso-texto: #7a5300;
    --cmh-info-fondo:  #dfeafd;
    --cmh-info-texto:  #1b4690;

    /* Forma y movimiento */
    --cmh-radio-sm: 8px;
    --cmh-radio:    12px;
    --cmh-radio-lg: 16px;
    --cmh-sombra-sm: 0 1px 2px rgba(18, 61, 34, .06), 0 1px 3px rgba(18, 61, 34, .08);
    --cmh-sombra:    0 4px 14px rgba(18, 61, 34, .08), 0 1px 3px rgba(18, 61, 34, .06);
    --cmh-sombra-lg: 0 14px 34px rgba(18, 61, 34, .14);
    --cmh-foco: 0 0 0 3px rgba(42, 128, 73, .35);
    --cmh-transicion: .18s ease;
    --cmh-fuente: 'Montserrat', 'Segoe UI', system-ui, -apple-system, sans-serif;

    /* Fondos de página (cambiar aquí para volver al verde anterior) */
    --cmh-fondo-interno: var(--cmh-fondo);
    --cmh-fondo-externo: linear-gradient(160deg, #f3fbf4 0%, #e4f5e7 55%, #fcf3d2 100%);
}

/* Las hojas por pantalla definen sus propias variables: se unifican aquí */
body.layout-cmh {
    --meidoc-primary:   var(--cmh-verde-700);
    --meidoc-secondary: var(--cmh-verde-600);
    --meidoc-accent:    var(--cmh-verde-500);
    --meidoc-gold:      var(--cmh-dorado-500);
    --meidoc-light:     var(--cmh-fondo);
    --meidoc-dark:      var(--cmh-tinta);
    --meidoc-shadow:    rgba(18, 61, 34, .10);
    --meidoc-glow:      rgba(42, 128, 73, .22);
    --verde-principal:  var(--cmh-verde-700);
    --verde-medio:      var(--cmh-verde-500);
    --verde-claro:      var(--cmh-verde-100);
    --verde-oscuro:     var(--cmh-verde-900);
    --dorado-principal: var(--cmh-dorado-500);
    --success-color:    var(--cmh-verde-700);
    --success-light:    var(--cmh-verde-500);
    --success-dark:     var(--cmh-verde-900);
    --bs-success:       var(--cmh-verde-700);
    --bs-success-rgb:   38, 130, 57;
}

/* ---------- Base ---------- */
body.layout-cmh {
    font-family: var(--cmh-fuente);
    color: var(--cmh-texto);
    background: var(--cmh-fondo-interno);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

body.layout-cmh.cmh-externo,
body.layout-cmh.cmh-login {
    background: var(--cmh-fondo-externo);
    background-attachment: fixed;
}

body.layout-cmh .login-page,
body.layout-cmh .header-cupos {
    background: transparent;
    font-family: var(--cmh-fuente);
}

body.layout-cmh h1, body.layout-cmh h2, body.layout-cmh h3,
body.layout-cmh h4, body.layout-cmh h5, body.layout-cmh h6 {
    font-family: var(--cmh-fuente);
    letter-spacing: -.01em;
}

body.layout-cmh.cmh-interno h1, body.layout-cmh.cmh-interno h2,
body.layout-cmh.cmh-interno h3, body.layout-cmh.cmh-interno h4,
body.layout-cmh.cmh-interno h5 {
    color: var(--cmh-tinta);
}

body.layout-cmh .text-muted { color: var(--cmh-suave) !important; }
body.layout-cmh .text-success,
body.layout-cmh .text-meidoc-primary { color: var(--cmh-verde-700) !important; }
body.layout-cmh .bg-meidoc-primary { background-color: var(--cmh-verde-700) !important; }
body.layout-cmh .bg-meidoc-accent  { background-color: var(--cmh-verde-500) !important; }
body.layout-cmh a { transition: color var(--cmh-transicion); }

/* ---------- Accesibilidad: foco visible con teclado ---------- */
body.layout-cmh a:focus-visible,
body.layout-cmh button:focus-visible,
body.layout-cmh .btn:focus-visible,
body.layout-cmh [tabindex]:focus-visible,
body.layout-cmh .accordion-button:focus-visible,
body.layout-cmh .page-link:focus-visible {
    outline: 3px solid var(--cmh-dorado-500);
    outline-offset: 2px;
    box-shadow: none;
}

/* ---------- Navbar ---------- */
body.layout-cmh .navbar,
body.layout-cmh .navbar-cm {
    background: rgba(255, 255, 255, .97) !important;
    border-bottom: 1px solid var(--cmh-borde);
    box-shadow: var(--cmh-sombra-sm) !important;
    backdrop-filter: saturate(160%) blur(12px);
}

body.layout-cmh .navbar-brand span { color: var(--cmh-verde-700) !important; letter-spacing: .04em; }

body.layout-cmh .nav-link-cm {
    color: var(--cmh-texto) !important;
    border-radius: var(--cmh-radio);
    padding: .6rem 1rem !important;
    transition: background var(--cmh-transicion), color var(--cmh-transicion);
}
body.layout-cmh .nav-link-cm::before { display: none; }
body.layout-cmh .nav-link-cm:hover {
    color: var(--cmh-verde-800) !important;
    background: var(--cmh-verde-50);
    transform: none;
    box-shadow: none;
}
body.layout-cmh .hover-glow:hover { box-shadow: none; }

body.layout-cmh .dropdown-user .nav-link {
    background: var(--cmh-verde-50);
    border: 1px solid var(--cmh-verde-100);
    border-radius: 999px;
    padding: .35rem .9rem .35rem .4rem !important;
}
body.layout-cmh .dropdown-user .nav-link:hover {
    background: var(--cmh-verde-100);
    border-color: var(--cmh-verde-100);
    transform: none;
    box-shadow: none;
}
body.layout-cmh .user-avatar {
    width: 38px; height: 38px;
    background: var(--cmh-verde-700);
    box-shadow: none;
}
body.layout-cmh .user-avatar:hover { transform: none; box-shadow: none; }
body.layout-cmh .user-avatar-container:hover .user-avatar { animation: none; }
body.layout-cmh .user-avatar-sm { background: var(--cmh-verde-700) !important; }
body.layout-cmh .user-name { color: var(--cmh-tinta); font-size: .9rem; line-height: 1.2; }
body.layout-cmh .user-role { color: var(--cmh-suave) !important; font-size: .72rem; letter-spacing: .06em; }

body.layout-cmh .dropdown-menu {
    border: 1px solid var(--cmh-borde) !important;
    border-radius: var(--cmh-radio-lg) !important;
    box-shadow: var(--cmh-sombra-lg) !important;
}
body.layout-cmh .dropdown-menu li { box-shadow: none; border-bottom: 0; }
body.layout-cmh .dropdown-header { background: var(--cmh-verde-50); }
body.layout-cmh .dropdown-item {
    border-radius: var(--cmh-radio-sm) !important;
    margin: .2rem .5rem !important;
    padding: .65rem .9rem !important;
    width: auto;
    border: 0 !important;
    color: var(--cmh-texto);
}
body.layout-cmh .dropdown-item:hover,
body.layout-cmh .dropdown-item:focus {
    background: var(--cmh-verde-50) !important;
    transform: none;
    box-shadow: none;
}
body.layout-cmh .logout-form button { width: calc(100% - 1rem) !important; }
body.layout-cmh .logout-form button:hover {
    background: var(--cmh-error-fondo) !important;
    transform: none;
    box-shadow: none;
}
body.layout-cmh .dropdown-item i.text-primary,
body.layout-cmh .dropdown-item i.text-info { color: var(--cmh-verde-700) !important; }

/* ---------- Botones ---------- */
body.layout-cmh .btn {
    font-family: var(--cmh-fuente);
    font-weight: 600;
    border-radius: var(--cmh-radio);
    letter-spacing: 0;
    transition: background-color var(--cmh-transicion), border-color var(--cmh-transicion),
                color var(--cmh-transicion), box-shadow var(--cmh-transicion), transform var(--cmh-transicion);
}
body.layout-cmh .btn:hover  { transform: translateY(-1px); }
body.layout-cmh .btn:active { transform: translateY(0); }
body.layout-cmh .btn-sm { border-radius: var(--cmh-radio-sm); }

body.layout-cmh .btn-success,
body.layout-cmh .btn-meidoc,
body.layout-cmh .btn-meidoc-cupo,
body.layout-cmh .btn-meidoc-reporte,
body.layout-cmh .btn-gradient-primary,
body.layout-cmh .btn-provisional,
body.layout-cmh .login-btn {
    background: var(--cmh-verde-700) !important;
    border: 1px solid var(--cmh-verde-700) !important;
    color: #fff !important;
    box-shadow: var(--cmh-sombra-sm);
}
body.layout-cmh .btn-success:hover,
body.layout-cmh .btn-meidoc:hover,
body.layout-cmh .btn-meidoc-cupo:hover,
body.layout-cmh .btn-meidoc-reporte:hover,
body.layout-cmh .btn-gradient-primary:hover,
body.layout-cmh .btn-provisional:hover,
body.layout-cmh .login-btn:hover {
    background: var(--cmh-verde-800) !important;
    border-color: var(--cmh-verde-800) !important;
    color: #fff !important;
    box-shadow: var(--cmh-sombra);
    transform: translateY(-1px);
}

/* Colegiación definitiva: se distingue con dorado institucional */
body.layout-cmh .btn-definitiva {
    background: var(--cmh-dorado-500) !important;
    border: 1px solid var(--cmh-dorado-500) !important;
    color: #2b2103 !important;
}
body.layout-cmh .btn-definitiva:hover { background: #b8931f !important; color: #2b2103 !important; }

body.layout-cmh .btn-outline-meidoc,
body.layout-cmh .btn-outline-success,
body.layout-cmh .btn-volver-meidoc {
    background: #fff;
    border: 1px solid var(--cmh-verde-700);
    color: var(--cmh-verde-700);
}
body.layout-cmh .btn-outline-meidoc:hover,
body.layout-cmh .btn-outline-success:hover,
body.layout-cmh .btn-volver-meidoc:hover {
    background: var(--cmh-verde-50);
    color: var(--cmh-verde-800);
    border-color: var(--cmh-verde-800);
}
body.layout-cmh .btn-outline-secondary {
    border-color: var(--cmh-borde);
    color: var(--cmh-texto);
    background: #fff;
}
body.layout-cmh .btn-outline-secondary:hover { background: var(--cmh-fondo); color: var(--cmh-tinta); border-color: #c9d1cd; }
body.layout-cmh .btn-danger  { background: var(--cmh-error); border-color: var(--cmh-error); }
body.layout-cmh .btn-warning { background: var(--cmh-dorado-500); border-color: var(--cmh-dorado-500); color: #2b2103; }
body.layout-cmh .btn-info    { background: var(--cmh-info-fondo); border-color: var(--cmh-info-fondo); color: var(--cmh-info-texto); }
body.layout-cmh .btn-primary { background: var(--cmh-verde-600); border-color: var(--cmh-verde-600); }
body.layout-cmh .btn-primary:hover { background: var(--cmh-verde-800); border-color: var(--cmh-verde-800); }

/* ---------- Tarjetas y paneles ---------- */
body.layout-cmh .card,
body.layout-cmh .card-preinscripciones,
body.layout-cmh .card-meidoc,
body.layout-cmh .card-meidoc-cupo,
body.layout-cmh .card-meidoc-reporte,
body.layout-cmh .search-section-preinscripciones,
body.layout-cmh .formulario-reserva,
body.layout-cmh .seccion-cupos,
body.layout-cmh .login-card {
    border: 1px solid var(--cmh-borde);
    border-radius: var(--cmh-radio-lg);
    box-shadow: var(--cmh-sombra);
    background: var(--cmh-superficie);
    backdrop-filter: none;
}
body.layout-cmh .card-preinscripciones:hover,
body.layout-cmh .card-meidoc:hover,
body.layout-cmh .card-meidoc-cupo:hover,
body.layout-cmh .card-meidoc-reporte:hover,
body.layout-cmh .login-card:hover {
    transform: none;
    box-shadow: var(--cmh-sombra);
}
body.layout-cmh .card-cupo {
    border: 1px solid var(--cmh-borde);
    border-radius: var(--cmh-radio-lg);
    box-shadow: var(--cmh-sombra);
    transition: transform var(--cmh-transicion), box-shadow var(--cmh-transicion);
}
body.layout-cmh .card-cupo:hover { transform: translateY(-3px); box-shadow: var(--cmh-sombra-lg); }
body.layout-cmh .franja-provisional { background: var(--cmh-verde-600); }
body.layout-cmh .franja-definitiva  { background: var(--cmh-dorado-500); }
body.layout-cmh .titulo-card { color: var(--cmh-tinta); font-size: 1.35rem; }
body.layout-cmh .titulo-formulario { color: var(--cmh-verde-700); }

/* Menú principal */
body.layout-cmh .menu-card-cm-verde {
    border-radius: var(--cmh-radio-lg);
    border: 1px solid var(--cmh-borde);
    box-shadow: var(--cmh-sombra);
    transition: transform var(--cmh-transicion), box-shadow var(--cmh-transicion), border-color var(--cmh-transicion);
}
body.layout-cmh .menu-card-cm-verde:hover {
    transform: translateY(-4px);
    box-shadow: var(--cmh-sombra-lg);
    border-color: var(--cmh-verde-500);
}
body.layout-cmh .menu-card-cm-verde::before {
    background: linear-gradient(135deg, var(--cmh-verde-800), var(--cmh-verde-600)) !important;
    animation: none !important;
}
body.layout-cmh .card-icon-cm-verde {
    border: 0;
    border-radius: var(--cmh-radio);
    color: var(--cmh-verde-700);
    box-shadow: var(--cmh-sombra);
    width: 64px; height: 64px;
    font-size: 1.8rem;
    top: 1.75rem; right: 1.75rem;
}
body.layout-cmh .menu-card-cm-verde:hover .card-icon-cm-verde { transform: scale(1.06); box-shadow: var(--cmh-sombra); }
body.layout-cmh .card-content-cm-verde { left: 1.75rem; bottom: 1.75rem; right: 3.5rem; }
body.layout-cmh .card-title-cm-verde { color: var(--cmh-tinta); font-size: 1.25rem; font-weight: 700; overflow-wrap: anywhere; }
body.layout-cmh .card-desc-cm-verde  { color: var(--cmh-suave); font-size: .92rem; }
body.layout-cmh .card-cta-verde { color: var(--cmh-verde-700); right: 1.75rem; bottom: 1.75rem; font-size: 1.3rem; text-shadow: none !important; }

/* ---------- Formularios ---------- */
body.layout-cmh .form-label,
body.layout-cmh .login-label { color: var(--cmh-tinta); font-weight: 600; font-size: .9rem; }

body.layout-cmh .form-control,
body.layout-cmh .form-select,
body.layout-cmh .login-input {
    font-family: var(--cmh-fuente);
    min-height: 44px;
    border: 1px solid #c9d1cd;
    border-radius: var(--cmh-radio) ;
    color: var(--cmh-tinta);
    background-color: #fff;
    transition: border-color var(--cmh-transicion), box-shadow var(--cmh-transicion);
}
body.layout-cmh .form-control::placeholder { color: #8a94a1; }
body.layout-cmh .form-control:focus,
body.layout-cmh .form-select:focus,
body.layout-cmh .login-input:focus {
    border-color: var(--cmh-verde-600);
    box-shadow: var(--cmh-foco);
    transform: none;
}
body.layout-cmh .form-control.is-invalid,
body.layout-cmh .form-select.is-invalid { border-color: var(--cmh-error); }
body.layout-cmh .invalid-feedback { color: var(--cmh-error-texto); font-weight: 500; }
body.layout-cmh .input-group-text { color: var(--cmh-verde-700) !important; background: var(--cmh-verde-50); border-color: #c9d1cd; }

/* ---------- Tablas ---------- */
body.layout-cmh .table-responsive { border-radius: var(--cmh-radio-lg); }
body.layout-cmh .table { color: var(--cmh-texto); margin-bottom: 0; }

body.layout-cmh .table-preinscripciones th,
body.layout-cmh .table-meidoc th,
body.layout-cmh .table-meidoc-cupo th,
body.layout-cmh .table-meidoc-reporte th,
body.layout-cmh .tabla-cupos thead th {
    background: var(--cmh-verde-800) !important;
    color: #fff !important;
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: .95rem 1rem;
    border: 0;
}
body.layout-cmh .table tbody td { vertical-align: middle; border-color: var(--cmh-borde); }
body.layout-cmh .table tbody tr { transition: background-color var(--cmh-transicion); }
body.layout-cmh .table-hover tbody tr:hover > * ,
body.layout-cmh .table-meidoc tbody tr:hover > *,
body.layout-cmh .table-meidoc-cupo tbody tr:hover > *,
body.layout-cmh .table-meidoc-reporte tbody tr:hover > * {
    background-color: var(--cmh-verde-50);
    --bs-table-accent-bg: transparent;
}
body.layout-cmh .table .table-light th {
    background: var(--cmh-fondo) !important;
    color: var(--cmh-suave) !important;
    font-size: .76rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}

body.layout-cmh .fila-cupo-principal {
    background: #fff !important;
    transition: background-color var(--cmh-transicion);
}
body.layout-cmh .fila-cupo-principal:hover {
    background: var(--cmh-verde-50) !important;
    transform: none;
    box-shadow: none;
}
body.layout-cmh .fila-cupo-principal:hover * { color: inherit !important; }
body.layout-cmh .fila-cupo-principal:hover .badge { filter: none; }

/* Inscripción inactiva dentro del detalle del cupo */
body.layout-cmh tr.fila-inactiva > td { background: #fbf4f3; }
body.layout-cmh tr.fila-inactiva td:nth-child(-n+4) { color: var(--cmh-suave) !important; }

/* ---------- Insignias de estado ---------- */
body.layout-cmh .badge {
    font-family: var(--cmh-fuente);
    font-weight: 600;
    font-size: .78rem;
    border-radius: 999px;
    padding: .42em .85em;
    letter-spacing: .01em;
}

body.layout-cmh .badge-estado-activo,
body.layout-cmh .badge-activo,
body.layout-cmh .estado-activo,
body.layout-cmh .estado-completado,
body.layout-cmh .badge.bg-success {
    background: var(--cmh-ok-fondo) !important;
    color: var(--cmh-ok-texto) !important;
    border: 1px solid #b4e4c3;
}
body.layout-cmh .badge-estado-inactivo,
body.layout-cmh .badge-inactivo,
body.layout-cmh .badge.bg-danger {
    background: var(--cmh-error-fondo) !important;
    color: var(--cmh-error-texto) !important;
    border: 1px solid #f6c1bc;
}
body.layout-cmh .estado-pendiente,
body.layout-cmh .badge.bg-warning {
    background: var(--cmh-aviso-fondo) !important;
    color: var(--cmh-aviso-texto) !important;
    border: 1px solid #f1dc97;
}
body.layout-cmh .badge-provisional,
body.layout-cmh .badge-cupo-provisional,
body.layout-cmh .badge-reporte-provisional,
body.layout-cmh .badge-colegiacion-provisional,
body.layout-cmh .cupos-provisional {
    background: var(--cmh-verde-100) !important;
    color: var(--cmh-verde-900) !important;
    border: 1px solid #c4e2cd;
}
body.layout-cmh .badge-definitivo,
body.layout-cmh .badge-definitiva,
body.layout-cmh .badge-cupo-definitiva,
body.layout-cmh .badge-reporte-definitiva,
body.layout-cmh .badge-colegiacion-definitiva,
body.layout-cmh .cupos-definitiva {
    background: var(--cmh-dorado-100) !important;
    color: #5f4800 !important;
    border: 1px solid #ecd98d;
}
body.layout-cmh .badge-cupo-id,
body.layout-cmh .badge-preinscripciones,
body.layout-cmh .badge-meidoc,
body.layout-cmh .badge-usuario,
body.layout-cmh .badge.bg-light {
    background: var(--cmh-fondo) !important;
    color: var(--cmh-tinta) !important;
    border: 1px solid var(--cmh-borde);
    box-shadow: none !important;
}
body.layout-cmh .badge-admin {
    background: var(--cmh-verde-800) !important;
    color: #fff !important;
}
/* El estado manda sobre la insignia base */
body.layout-cmh .badge.badge-meidoc.badge-activo {
    background: var(--cmh-ok-fondo) !important;
    color: var(--cmh-ok-texto) !important;
    border-color: #b4e4c3;
}
body.layout-cmh .badge.badge-meidoc.badge-inactivo {
    background: var(--cmh-error-fondo) !important;
    color: var(--cmh-error-texto) !important;
    border-color: #f6c1bc;
}
body.layout-cmh .badge.badge-meidoc.badge-admin {
    background: var(--cmh-verde-800) !important;
    color: #fff !important;
    border-color: var(--cmh-verde-800);
}
body.layout-cmh .badge i,
body.layout-cmh .estado-badge i { opacity: .85; }

/* En páginas externas las etiquetas van sobre fondo verde oscuro */
body.layout-cmh.cmh-externo .etiqueta-seccion {
    background: rgba(255, 255, 255, .14);
    border: 1px solid rgba(255, 255, 255, .3);
    color: #fff;
    border-radius: 999px;
    padding: .4rem 1rem;
    font-weight: 600;
    font-size: .85rem;
}

/* ---------- Modales ---------- */
body.layout-cmh .modal-content {
    border: 0;
    border-radius: var(--cmh-radio-lg);
    box-shadow: var(--cmh-sombra-lg);
    overflow: hidden;
}
body.layout-cmh .modal-header {
    background: var(--cmh-verde-800) !important;
    color: #fff;
    border-bottom: 0;
    padding: 1rem 1.25rem;
}
body.layout-cmh .modal-header .modal-title { color: #fff; font-weight: 700; font-size: 1.05rem; }
body.layout-cmh .modal-header .btn-close { filter: invert(1) grayscale(100%) brightness(200%); opacity: .85; }
body.layout-cmh .modal-footer { background: var(--cmh-fondo); border-top: 1px solid var(--cmh-borde); }
body.layout-cmh .modal.fade .modal-dialog { transition: transform .22s ease-out; }

/* ---------- Paginación ---------- */
body.layout-cmh .pagination { background: transparent; padding: 0; gap: .3rem; flex-wrap: wrap; }
body.layout-cmh .page-link {
    border: 1px solid var(--cmh-borde);
    border-radius: var(--cmh-radio-sm) !important;
    color: var(--cmh-texto);
    font-weight: 600;
    min-width: 38px;
    text-align: center;
}
body.layout-cmh .page-link:hover { background: var(--cmh-verde-50); color: var(--cmh-verde-800); }
body.layout-cmh .page-item.active .page-link {
    background: var(--cmh-verde-700);
    border-color: var(--cmh-verde-700);
    color: #fff;
}
body.layout-cmh .page-item.disabled .page-link { color: #a3acb6; background: var(--cmh-fondo); }

/* ---------- Alertas ---------- */
body.layout-cmh .alert { border-radius: var(--cmh-radio); border-width: 1px; font-weight: 500; }
body.layout-cmh .alert-success { background: var(--cmh-ok-fondo);    color: var(--cmh-ok-texto);    border-color: #b4e4c3; }
body.layout-cmh .alert-danger  { background: var(--cmh-error-fondo); color: var(--cmh-error-texto); border-color: #f6c1bc; }
body.layout-cmh .alert-warning { background: var(--cmh-aviso-fondo); color: var(--cmh-aviso-texto); border-color: #f1dc97; }
body.layout-cmh .alert-info    { background: var(--cmh-info-fondo);  color: var(--cmh-info-texto);  border-color: #bcd2f7; }

/* ---------- Documentos (acordeón de requisitos) ---------- */
body.layout-cmh .accordion-documentos .accordion-item { border-radius: var(--cmh-radio); border-color: var(--cmh-borde); }
body.layout-cmh .accordion-button:not(.collapsed) { background: var(--cmh-verde-50); color: var(--cmh-tinta); box-shadow: none; }
body.layout-cmh .barra-docs .progress-bar,
body.layout-cmh .progress-bar { background: var(--cmh-verde-600) !important; }
body.layout-cmh .archivo-actual-box { background: var(--cmh-verde-50); border-color: #c4e2cd; color: var(--cmh-ok-texto); }
body.layout-cmh .documento-item.pendiente  { border-left-color: var(--cmh-dorado-500); }
body.layout-cmh .documento-item.completado { border-left-color: var(--cmh-verde-600); }

/* ---------- Login ---------- */
body.layout-cmh .login-title {
    background: none;
    -webkit-text-fill-color: var(--cmh-verde-900);
    color: var(--cmh-verde-900);
    font-size: 1.75rem;
    font-weight: 700;
}
body.layout-cmh .login-subtitle,
body.layout-cmh .login-note { color: var(--cmh-suave); }
body.layout-cmh .login-logo { border: 0; box-shadow: none; border-radius: 0; width: auto; height: 76px; }

/* ---------- Footer ---------- */
body.layout-cmh .footer-cmh { border-top-color: var(--cmh-dorado-500); }
body.layout-cmh .footer-cmh h3,
body.layout-cmh .correo-footer { color: var(--cmh-verde-700) !important; }
body.layout-cmh .footer-bottom { background: var(--cmh-verde-900); }

/* ---------- SweetAlert (modales y toasts) ---------- */
.swal2-popup { font-family: var(--cmh-fuente) !important; border-radius: var(--cmh-radio-lg) !important; }
.swal2-title { color: var(--cmh-tinta) !important; font-size: 1.35rem !important; }
.swal2-html-container { color: var(--cmh-texto) !important; }
.swal2-styled.swal2-confirm { background: var(--cmh-verde-700) !important; border-radius: var(--cmh-radio) !important; font-weight: 600 !important; }
.swal2-styled.swal2-cancel  { border-radius: var(--cmh-radio) !important; font-weight: 600 !important; }
.swal2-styled:focus-visible { box-shadow: var(--cmh-foco) !important; }
.swal2-toast { box-shadow: var(--cmh-sombra-lg) !important; border: 1px solid var(--cmh-borde); padding: .7rem 1rem !important; }
.swal2-toast .swal2-title { font-size: .95rem !important; font-weight: 600; }
.swal2-timer-progress-bar { background: var(--cmh-verde-500) !important; }

/* ---------- Móvil y tablet ---------- */
@media (max-width: 991.98px) {
    body.layout-cmh .navbar-collapse {
        background: #fff;
        border: 1px solid var(--cmh-borde);
        border-radius: var(--cmh-radio);
        box-shadow: var(--cmh-sombra);
        padding: .5rem;
        margin-top: .5rem;
    }
}

@media (max-width: 767.98px) {
    body.layout-cmh .contenido-principal > .container,
    body.layout-cmh .contenido-principal > .container-fluid { padding-top: 18px; padding-bottom: 32px; }
    body.layout-cmh .card-body { padding-left: 1rem !important; padding-right: 1rem !important; }
    body.layout-cmh .card-header { padding-left: 1rem !important; padding-right: 1rem !important; }
    body.layout-cmh .titulos, body.layout-cmh .titulo-cupos { font-size: 1.8rem; }
    body.layout-cmh .titulo-seccion { font-size: 1.3rem; }
    body.layout-cmh .table-preinscripciones th,
    body.layout-cmh .table-meidoc th,
    body.layout-cmh .table-meidoc-cupo th,
    body.layout-cmh .table-meidoc-reporte th { padding: .7rem .6rem; font-size: .72rem; }
    body.layout-cmh .table td { padding: .6rem; }
    body.layout-cmh .btn { min-height: 44px; }
    body.layout-cmh .btn-sm { min-height: 38px; }
    body.layout-cmh .menu-card-cm-verde { height: 260px; }
    body.layout-cmh .card-content-cm-verde { padding-top: 0; }
    body.layout-cmh .modal-footer .btn { flex: 1 1 auto; }
}

/* ---------- Respeto a "reducir movimiento" ---------- */
@media (prefers-reduced-motion: reduce) {
    body.layout-cmh *,
    body.layout-cmh *::before,
    body.layout-cmh *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}

/* =====================================================================
   PALETA CLARA (tonos del logo: verde, lima y dorado)
   Sustituye los rellenos oscuros por superficies claras.
   ===================================================================== */

/* Encabezados de tabla claros */
body.layout-cmh .table-preinscripciones th,
body.layout-cmh .table-meidoc th,
body.layout-cmh .table-meidoc-cupo th,
body.layout-cmh .table-meidoc-reporte th,
body.layout-cmh .tabla-cupos thead th {
    background: var(--cmh-verde-100) !important;
    color: var(--cmh-verde-900) !important;
    border-bottom: 2px solid #c4e6ca;
}
body.layout-cmh .table-preinscripciones th *,
body.layout-cmh .table-meidoc th *,
body.layout-cmh .table-meidoc-cupo th *,
body.layout-cmh .table-meidoc-reporte th * { color: inherit !important; }

/* Encabezados de modal claros */
body.layout-cmh .modal-header {
    background: var(--cmh-verde-50) !important;
    color: var(--cmh-tinta) !important;
    border-bottom: 1px solid #cfe8d4;
}
body.layout-cmh .modal-header .modal-title,
body.layout-cmh .modal-header .modal-title * { color: var(--cmh-verde-900) !important; }
body.layout-cmh .modal-header .btn-close,
body.layout-cmh .modal-header .btn-close-white { filter: none; opacity: .6; }

/* Cabeceras de tarjeta con relleno */
body.layout-cmh .card-header.bg-gradient-primary,
body.layout-cmh .card-header.text-white {
    background: linear-gradient(135deg, var(--cmh-verde-100), var(--cmh-lima-100)) !important;
    color: var(--cmh-verde-900) !important;
}
body.layout-cmh .card-header.text-white * { color: var(--cmh-verde-900) !important; }

body.layout-cmh .badge.badge-meidoc.badge-admin,
body.layout-cmh .badge-admin {
    background: var(--cmh-dorado-100) !important;
    color: #6b4f00 !important;
    border-color: #ecd98d;
}
body.layout-cmh .footer-bottom { background: var(--cmh-verde-700); }

/* Páginas públicas y login: fondo claro, por lo que los títulos pasan a tinta */
body.layout-cmh.cmh-externo .titulos,
body.layout-cmh.cmh-externo .titulo-cupos,
body.layout-cmh.cmh-externo .titulo-seccion,
body.layout-cmh.cmh-externo .titulo-principal { color: var(--cmh-verde-900); }
body.layout-cmh.cmh-externo .sub-seccion,
body.layout-cmh.cmh-externo .subtitulo-cupos,
body.layout-cmh.cmh-externo .texto-seccion-cupo,
body.layout-cmh.cmh-externo .contenido-principal p.text-white { color: var(--cmh-texto) !important; }
body.layout-cmh.cmh-externo .etiqueta-seccion {
    background: #fff;
    border: 1px solid #c4e6ca;
    color: var(--cmh-verde-800);
}
body.layout-cmh.cmh-externo .seccion-cupos-wrapper { background: transparent; }

/* ---------- Página y cabecera estándar ---------- */
body.layout-cmh .cmh-pagina { max-width: 1320px; margin: 0 auto; padding-left: 20px; padding-right: 20px; }

body.layout-cmh .cmh-cabecera {
    display: flex; align-items: center; justify-content: space-between;
    gap: 16px; flex-wrap: wrap; margin-bottom: 20px;
}
body.layout-cmh .cmh-cabecera-titulo { display: flex; align-items: center; gap: 14px; }
body.layout-cmh .cmh-cabecera h1 { font-size: 1.5rem; font-weight: 700; margin: 0; color: var(--cmh-tinta); }
body.layout-cmh .cmh-cabecera p  { margin: 2px 0 0; color: var(--cmh-suave); font-size: .92rem; }
body.layout-cmh .cmh-cabecera-acciones { display: flex; gap: 8px; flex-wrap: wrap; }
body.layout-cmh .cmh-volver {
    width: 42px; height: 42px; flex: 0 0 42px;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 50%; background: #fff; border: 1px solid var(--cmh-borde);
    color: var(--cmh-verde-700); font-size: 1.1rem; text-decoration: none;
    box-shadow: var(--cmh-sombra-sm);
    transition: background var(--cmh-transicion), transform var(--cmh-transicion);
}
body.layout-cmh .cmh-volver:hover { background: var(--cmh-verde-50); transform: translateX(-2px); }

body.layout-cmh .cmh-btn-exportar { background: #fff; border: 1px solid var(--cmh-borde); color: var(--cmh-tinta); }
body.layout-cmh .cmh-btn-exportar:hover { background: var(--cmh-fondo); color: var(--cmh-tinta); border-color: #c9d1cd; }
body.layout-cmh .cmh-exportar-excel i { color: #1d7a45; }
body.layout-cmh .cmh-exportar-pdf i   { color: #c62f24; }
body.layout-cmh .cmh-exportar-word i  { color: #2a5fb8; }

body.layout-cmh .cmh-panel {
    background: #fff; border: 1px solid var(--cmh-borde);
    border-radius: var(--cmh-radio-lg); box-shadow: var(--cmh-sombra-sm);
    padding: 20px;
}
body.layout-cmh .cmh-panel-titulo {
    font-size: 1rem; font-weight: 700; color: var(--cmh-tinta);
    margin: 0 0 14px; display: flex; align-items: center; gap: 8px;
}
body.layout-cmh .cmh-panel-titulo i { color: var(--cmh-verde-600); }

body.layout-cmh .cmh-filtros { display: flex; gap: 14px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 20px; }
body.layout-cmh .cmh-campo { flex: 1 1 170px; }
body.layout-cmh .cmh-campo .form-label { margin-bottom: 4px; font-size: .82rem; }
body.layout-cmh .cmh-campo-botones { flex: 0 0 auto; display: flex; gap: 8px; }

/* ---------- Indicadores ---------- */
body.layout-cmh .cmh-kpis {
    display: grid; gap: 14px; margin-bottom: 20px;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}
body.layout-cmh .cmh-kpi {
    background: #fff; border: 1px solid var(--cmh-borde);
    border-radius: var(--cmh-radio-lg); box-shadow: var(--cmh-sombra-sm);
    padding: 16px; display: flex; flex-direction: column; gap: 2px;
    transition: transform var(--cmh-transicion), box-shadow var(--cmh-transicion);
}
body.layout-cmh .cmh-kpi:hover { transform: translateY(-2px); box-shadow: var(--cmh-sombra); }
body.layout-cmh .cmh-kpi-icono {
    width: 38px; height: 38px; border-radius: 10px; margin-bottom: 8px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--cmh-verde-100); color: var(--cmh-verde-700); font-size: 1.1rem;
}
body.layout-cmh .cmh-kpi-icono-dorado { background: var(--cmh-dorado-100); color: #8a6a0a; }
body.layout-cmh .cmh-kpi-icono-alerta { background: var(--cmh-error-fondo); color: var(--cmh-error-texto); }
body.layout-cmh .cmh-kpi-etiqueta { font-size: .78rem; font-weight: 600; color: var(--cmh-suave); text-transform: uppercase; letter-spacing: .04em; }
body.layout-cmh .cmh-kpi-valor { font-size: 1.9rem; font-weight: 700; color: var(--cmh-tinta); line-height: 1.15; font-variant-numeric: tabular-nums; }
body.layout-cmh .cmh-kpi-nota { font-size: .8rem; color: var(--cmh-suave); }

body.layout-cmh .cmh-medidor {
    display: block; height: 6px; border-radius: 999px; background: #e9efec;
    overflow: hidden; margin: 6px 0 4px; min-width: 80px;
}
body.layout-cmh .cmh-medidor > span { display: block; height: 100%; border-radius: 999px; background: var(--cmh-verde-600); }
body.layout-cmh .cmh-ocupacion { display: flex; align-items: center; gap: 10px; font-variant-numeric: tabular-nums; }
body.layout-cmh .cmh-ocupacion .cmh-medidor { flex: 1 1 auto; margin: 0; }

/* ---------- Rejilla del dashboard ---------- */
body.layout-cmh .cmh-rejilla { display: grid; gap: 16px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
body.layout-cmh .cmh-ancho-1 { grid-column: span 1; }
body.layout-cmh .cmh-ancho-2 { grid-column: span 2; }
body.layout-cmh .cmh-ancho-3 { grid-column: span 3; }
body.layout-cmh .cmh-grafico { position: relative; height: 280px; }

body.layout-cmh .cmh-hallazgos { list-style: none; margin: 0 0 16px; padding: 0; }
body.layout-cmh .cmh-hallazgos li {
    position: relative; padding: 8px 0 8px 22px; font-size: .9rem; line-height: 1.45;
    border-bottom: 1px solid var(--cmh-borde); color: var(--cmh-texto);
}
body.layout-cmh .cmh-hallazgos li:last-child { border-bottom: 0; }
body.layout-cmh .cmh-hallazgos li::before {
    content: ""; position: absolute; left: 4px; top: 15px;
    width: 8px; height: 8px; border-radius: 50%; background: var(--cmh-lima-500);
}
body.layout-cmh .cmh-datos-clave { display: grid; gap: 8px; margin: 0; }
body.layout-cmh .cmh-datos-clave > div {
    display: flex; justify-content: space-between; gap: 10px;
    background: var(--cmh-verde-50); border-radius: var(--cmh-radio-sm); padding: 8px 12px;
}
body.layout-cmh .cmh-datos-clave dt { font-weight: 500; font-size: .85rem; color: var(--cmh-texto); }
body.layout-cmh .cmh-datos-clave dd { margin: 0; font-weight: 700; color: var(--cmh-verde-900); white-space: nowrap; }

body.layout-cmh .cmh-tabla th {
    background: var(--cmh-verde-50); color: var(--cmh-suave);
    font-size: .76rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 600;
    border-bottom: 1px solid var(--cmh-borde);
}
body.layout-cmh .cmh-tabla td { font-size: .9rem; }
body.layout-cmh .cmh-tabla-datos { margin-top: 10px; font-size: .85rem; }
body.layout-cmh .cmh-tabla-datos summary { cursor: pointer; color: var(--cmh-verde-700); font-weight: 600; }
body.layout-cmh .cmh-vacio { color: var(--cmh-suave); text-align: center; padding: 30px 0; margin: 0; }
body.layout-cmh .cmh-nota-tabla { color: var(--cmh-suave); font-size: .82rem; margin: 10px 0 0; }

/* ---------- Menú de módulos (tarjetas) ---------- */
body.layout-cmh .cmh-bienvenida {
    display: flex; align-items: center; gap: 18px;
    background: linear-gradient(120deg, #fff 0%, var(--cmh-verde-50) 60%, var(--cmh-lima-100) 100%);
    border: 1px solid var(--cmh-borde); border-radius: var(--cmh-radio-lg);
    padding: 22px 24px; margin-bottom: 24px; box-shadow: var(--cmh-sombra-sm);
}
body.layout-cmh .cmh-bienvenida-logo { height: 68px; width: auto; }
body.layout-cmh .cmh-bienvenida h1 { font-size: 1.5rem; font-weight: 700; margin: 0; color: var(--cmh-tinta); }
body.layout-cmh .cmh-bienvenida p  { margin: 4px 0 0; color: var(--cmh-suave); }

body.layout-cmh .cmh-modulos { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
body.layout-cmh .cmh-modulo {
    position: relative; display: flex; flex-direction: column; gap: 6px;
    background: #fff; border: 1px solid var(--cmh-borde); border-radius: var(--cmh-radio-lg);
    padding: 22px; text-decoration: none; color: var(--cmh-texto); overflow: hidden;
    box-shadow: var(--cmh-sombra-sm);
    transition: transform var(--cmh-transicion), box-shadow var(--cmh-transicion), border-color var(--cmh-transicion);
}
body.layout-cmh .cmh-modulo::before {
    content: ""; position: absolute; left: 0; top: 0; right: 0; height: 4px; background: var(--cmh-verde-600);
}
body.layout-cmh .cmh-modulo:hover { transform: translateY(-4px); box-shadow: var(--cmh-sombra-lg); border-color: #c4e6ca; color: var(--cmh-texto); }
body.layout-cmh .cmh-modulo-icono {
    width: 52px; height: 52px; border-radius: 14px; margin-bottom: 10px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 1.5rem; background: var(--cmh-verde-100); color: var(--cmh-verde-700);
}
body.layout-cmh .cmh-modulo-titulo { font-size: 1.1rem; font-weight: 700; color: var(--cmh-tinta); }
body.layout-cmh .cmh-modulo-texto  { font-size: .9rem; color: var(--cmh-suave); line-height: 1.45; flex: 1 1 auto; }
body.layout-cmh .cmh-modulo-ir {
    margin-top: 12px; font-size: .85rem; font-weight: 600; color: var(--cmh-verde-700);
    display: inline-flex; align-items: center; gap: 6px;
}
body.layout-cmh .cmh-modulo-ir i { transition: transform var(--cmh-transicion); }
body.layout-cmh .cmh-modulo:hover .cmh-modulo-ir i { transform: translateX(4px); }

body.layout-cmh .cmh-modulo-lima::before { background: var(--cmh-lima-500); }
body.layout-cmh .cmh-modulo-lima .cmh-modulo-icono { background: var(--cmh-lima-100); color: #557a0c; }
body.layout-cmh .cmh-modulo-dorado::before { background: var(--cmh-dorado-500); }
body.layout-cmh .cmh-modulo-dorado .cmh-modulo-icono { background: var(--cmh-dorado-100); color: #8a6a0a; }

@media (max-width: 991.98px) {
    body.layout-cmh .cmh-rejilla { grid-template-columns: 1fr; }
    body.layout-cmh .cmh-ancho-1,
    body.layout-cmh .cmh-ancho-2,
    body.layout-cmh .cmh-ancho-3 { grid-column: span 1; }
}
@media (max-width: 575.98px) {
    body.layout-cmh .cmh-pagina { padding-left: 12px; padding-right: 12px; }
    body.layout-cmh .cmh-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    body.layout-cmh .cmh-kpi-valor { font-size: 1.5rem; }
    body.layout-cmh .cmh-cabecera-acciones { width: 100%; }
    body.layout-cmh .cmh-cabecera-acciones .btn { flex: 1 1 calc(50% - 8px); }
    body.layout-cmh .cmh-bienvenida { flex-direction: column; text-align: center; }
    body.layout-cmh .cmh-grafico { height: 240px; }
}

body.layout-cmh .cmh-detalle-bitacora {
    background: var(--cmh-fondo); border: 1px solid var(--cmh-borde); border-radius: var(--cmh-radio-sm);
    padding: 8px 10px; margin: 6px 0 0; font-size: .78rem; white-space: pre-wrap; max-width: 520px;
}
