/* /css/android-edge-to-edge.css
   Prestax - compatibilidad Android 15/16 edge-to-edge para TWA/PWA.
   Corrección segura: NO anula la reserva existente del header fijo.
   El header de Prestax ya es fixed; por eso el body debe reservar:
   altura del header + safe-area superior.
*/

:root {
  --pcp-safe-top: env(safe-area-inset-top, 0px);
  --pcp-safe-right: env(safe-area-inset-right, 0px);
  --pcp-safe-bottom: env(safe-area-inset-bottom, 0px);
  --pcp-safe-left: env(safe-area-inset-left, 0px);
}

html {
  min-height: 100%;
  min-height: 100dvh;
}

body.android-shell,
body.auth-page,
body.doc-page {
  min-height: 100%;
  min-height: 100dvh;
  box-sizing: border-box;
}

/*
   APP PRINCIPAL
   IMPORTANTE:
   Antes este archivo ponía padding-top: safe-area únicamente.
   Eso pisaba el padding original de la app:
   var(--appHeaderH) + safe-area.
   Resultado: sourceChipBar quedaba debajo del appHeader.
*/
body.android-shell {
  padding-top: calc(var(--appHeaderH, 50px) + var(--pcp-safe-top)) !important;
  padding-right: var(--pcp-safe-right) !important;
  padding-bottom: calc(var(--bottomReserve, 140px) + var(--pcp-safe-bottom)) !important;
  padding-left: var(--pcp-safe-left) !important;
}

/*
   Header fijo.
   En Android 15 edge-to-edge, la status bar puede ser transparente.
   Si el sistema informa safe-area superior, bajamos el header esa distancia.
   En navegador normal/desktop vale 0px y no cambia nada.
*/
body.android-shell #appHeader,
body.android-shell .app-header {
  top: var(--pcp-safe-top) !important;
}

/* La barra de fuente debe quedar en el flujo normal, justo debajo del header reservado. */
body.android-shell #sourceChipBar,
body.android-shell .source-chip-bar {
  position: relative;
  z-index: 1;
  margin-top: 0 !important;
}

/* Login y tutorial son páginas independientes: aplicamos safe-area sin header fijo de app. */
body.auth-page,
body.doc-page {
  padding-top: var(--pcp-safe-top) !important;
  padding-right: var(--pcp-safe-right) !important;
  padding-bottom: var(--pcp-safe-bottom) !important;
  padding-left: var(--pcp-safe-left) !important;
}

/* Overlays full-screen: mantienen su lógica actual, pero respetan zonas del sistema. */
#bootOverlay,
#lockOverlay,
#vaultModal,
#emailVerifyGate,
.modal,
.modal-overlay,
.dialog-overlay,
.preview-modal,
.tpl-modal,
#multiempresaModal {
  padding-top: var(--pcp-safe-top);
  padding-right: var(--pcp-safe-right);
  padding-bottom: var(--pcp-safe-bottom);
  padding-left: var(--pcp-safe-left);
  box-sizing: border-box;
}

/* Contenedores con scroll: evita que el último botón quede bajo la barra de navegación. */
.modal-body,
.menu-body,
.exp-modal-body,
.exp-hist-body,
.gestoria-body,
.tpl-modal__body,
.tutorial-modal__body,
.preview-modal-body,
.price-lib-body,
.stats-modal-body {
  scroll-padding-bottom: calc(var(--pcp-safe-bottom) + 24px);
}

/* Elementos fijados abajo: margen extra únicamente cuando el sistema informa inset. */
.sticky-actions,
.modal-actions,
.bottom-actions,
.floating-actions,
.fab,
.fab-row {
  margin-bottom: max(0px, var(--pcp-safe-bottom));
}

@media (min-width: 600px) {
  /* Android 16/tablets/plegables: permitir que la UI respire en ventanas anchas. */
  body.android-shell,
  body.auth-page,
  body.doc-page {
    overflow-x: hidden;
  }
}
