/* ============================================================================
   Loading global de la aplicación.

   Loader.css (copiado del proyecto viejo) solo trae los spinners .loader y
   .lds-roller. Aquí va el resto del sistema: el overlay #loadingOverlay que
   usan showLoading()/hideLoading(), la barra de progreso de navegación y los
   esqueletos de tabla. Se usan las variables --mod-* del tema Modernize.
   ============================================================================ */

/* ── Overlay de pantalla completa ─────────────────────────────────────────── */
#loadingOverlay {
    display: none;
    position: fixed;
    inset: 0;
    /* por encima de los modales de Bootstrap (1055) y de SweetAlert2 (1060) */
    z-index: 20000;
    background: rgba(255, 255, 255, .68);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

#loadingOverlay.bc-visible {
    display: block;
    animation: bc-fade-in .12s ease-out;
}

#loadingOverlay .bc-loading-caja {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    /* la caja no debe capturar clics: el overlay entero ya los bloquea */
    pointer-events: none;
}

#loadingOverlay .bc-loading-spinner {
    width: 52px;
    height: 52px;
    margin: 0 auto;
    border: 4px solid var(--mod-primary-lighter, #e8eef6);
    border-top-color: var(--mod-primary, #143c84);
    border-radius: 50%;
    animation: bc-spin .8s linear infinite;
}

/* Aviso de escape: aparece solo si el overlay llevaba mucho rato arriba, para que
   un cuelgue no deje al usuario atrapado detrás de una pantalla bloqueada. */
#loadingOverlay .bc-loading-escape {
    margin-top: 10px;
    max-width: 260px;
    font-size: .74rem;
    line-height: 1.35;
    color: var(--mod-text-muted, #6b7280);
}

#loadingOverlay.bc-escapable { cursor: pointer; }
#loadingOverlay.bc-escapable .bc-loading-caja { pointer-events: none; }

#loadingOverlay .bc-loading-texto {
    margin-top: 14px;
    font-size: .85rem;
    font-weight: 600;
    letter-spacing: .01em;
    color: var(--mod-primary, #143c84);
}

/* ── Barra de progreso superior (navegación entre páginas) ────────────────── */
#bcProgreso {
    position: fixed;
    top: 0;
    left: 0;
    height: 3px;
    width: 0;
    z-index: 20001;
    background: linear-gradient(90deg, var(--mod-primary, #143c84) 0%, var(--mod-primary-light, #3a6eb2) 100%);
    box-shadow: 0 0 8px rgba(58, 110, 178, .55);
    opacity: 0;
    transition: width .2s ease-out, opacity .25s ease-out;
}

#bcProgreso.bc-visible { opacity: 1; }

/* ── Esqueletos: filas de tabla y bloques mientras llegan los datos ───────── */
.bc-skeleton {
    background: linear-gradient(90deg,
                rgba(0, 0, 0, .055) 25%,
                rgba(0, 0, 0, .10) 37%,
                rgba(0, 0, 0, .055) 63%);
    background-size: 400% 100%;
    animation: bc-skeleton 1.3s ease-in-out infinite;
    border-radius: 4px;
    height: .8rem;
}

/* Texto "Cargando…" en línea, para tbody/paneles que se llenan por ajax. */
.bc-cargando {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    padding: 1.75rem 1rem;
    color: var(--mod-text-muted, #6b7280);
    font-size: .85rem;
}

.bc-cargando::before {
    content: "";
    width: 16px;
    height: 16px;
    border: 2px solid var(--mod-primary-lighter, #e8eef6);
    border-top-color: var(--mod-primary, #143c84);
    border-radius: 50%;
    animation: bc-spin .7s linear infinite;
}

/* ── Botones en estado "trabajando" (login, guardar, etc.) ────────────────── */
.bc-btn-cargando {
    position: relative;
    pointer-events: none;
    opacity: .75;
}

.bc-btn-cargando > .bc-btn-spinner {
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-right: .45rem;
    vertical-align: -2px;
    border: 2px solid rgba(255, 255, 255, .45);
    border-top-color: #fff;
    border-radius: 50%;
    animation: bc-spin .7s linear infinite;
}

@keyframes bc-spin {
    to { transform: rotate(360deg); }
}

@keyframes bc-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@keyframes bc-skeleton {
    0%   { background-position: 100% 50%; }
    100% { background-position: 0 50%; }
}

/* Respeta a quien pidió menos animación en el sistema operativo. */
@media (prefers-reduced-motion: reduce) {
    #loadingOverlay .bc-loading-spinner,
    .bc-cargando::before,
    .bc-btn-cargando > .bc-btn-spinner { animation-duration: 2s; }
    .bc-skeleton { animation: none; }
    #loadingOverlay.bc-visible { animation: none; }
}
