/* ==========================================================================
   00-base-scroll-disposicion.css
   Proposito: reglas base de scroll y altura de layout para toda la app.
   Impacto: pagina completa, modales y sidebar.
   ========================================================================== */
/* === Scroll habilitado por defecto en toda la app === */
html, body {
  height: auto;
  min-height: 100%;
  overflow-y: auto;
}

/* Contenedor de páginas: que sea el que scrollea */
#page-content, .dash-pages, .app-page {
  min-height: 100vh;
  overflow-y: auto;
  scrollbar-gutter: stable;
}

/* Cuando hay un modal abierto, bloquear el scroll del contenido de fondo */
body.modal-open {
  overflow: hidden !important;
  overscroll-behavior: none;
  padding-right: 0 !important;
}

body.modal-open #page-content,
body.modal-open .dash-pages,
body.modal-open .app-page {
  overflow-y: hidden !important;
  overscroll-behavior: none;
}

/* Una clase modal-open residual al navegar no debe bloquear la página. */
body.modal-open:not(:has(.modal.show)) #page-content,
body.modal-open:not(:has(.modal.show)) .dash-pages,
body.modal-open:not(:has(.modal.show)) .app-page {
  overflow-y: auto !important;
}

#page-content {
  scrollbar-width: auto;
}

/* Mantener el scroll dentro del modal */
body.modal-open .modal,
body.modal-open .modal-dialog,
body.modal-open .modal-content,
body.modal-open .modal-body {
  overflow-y: auto;
  overscroll-behavior: contain;
  padding-right: 0 !important;
}

/* Sidebar fijo con su propio scroll si es alto */
#sidebar {
  overflow-y: auto;
}

/* Solo el login sin scroll */
#login-outer {
  height: 100vh !important;
  overflow: hidden !important;
}

/* Evitar que algún contenedor corte el scroll por accidente */
.fullscreen-lock, .no-scroll, .fixed-viewport {
  overflow: visible !important;
  height: auto !important;
}
