.tx-system-overlay{position:fixed;inset:0;z-index:30000;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(15,23,42,.58);opacity:0;transition:opacity .18s ease;overscroll-behavior:contain}.tx-system-overlay.d-none{display:none!important}.tx-system-overlay.tx-system-overlay-visible{opacity:1}.tx-system-modal-card{width:min(460px,100%);max-height:calc(100dvh - 36px);overflow:auto;border:0;border-radius:24px;box-shadow:0 24px 70px rgba(16,24,40,.30);background:#fff;transform:translateY(8px) scale(.98);transition:transform .2s ease}.tx-system-overlay-visible .tx-system-modal-card{transform:none}.tx-system-modal-body{padding:34px 30px 26px;text-align:center;background:#fff}.tx-system-modal-icon{width:86px;height:86px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;font-size:42px;animation:txModalPop .38s cubic-bezier(.2,.85,.34,1.45),txModalFloat 2.4s ease-in-out .38s infinite}.tx-system-modal-success{background:#e8f8ef;color:#159455}.tx-system-modal-error{background:#fdeced;color:#d92d20}.tx-system-modal-warning{background:#fff4dc;color:#dc8b00}.tx-system-modal-info{background:#e9f4ff;color:#1778d3}.tx-system-modal-question{background:#f1ebff;color:#7141c6}.tx-system-modal-title{font-size:23px;font-weight:800;color:#15324d;margin:0 0 10px}.tx-system-modal-message{font-size:15px;line-height:1.55;color:#667085;overflow-wrap:anywhere;word-break:break-word}.tx-system-modal-input{margin-top:18px;text-align:left}.tx-system-modal-input .form-control{min-height:48px;border-radius:12px}.tx-system-modal-actions{display:flex;justify-content:center;gap:10px;margin-top:26px}.tx-system-modal-actions .btn{min-width:124px;border-radius:12px;padding:11px 18px;font-weight:800}.tx-system-modal-accept{background:#003b7a!important;color:#fff!important;border-color:#003b7a!important}.tx-system-modal-cancel{background:#f2f4f7!important;color:#344054!important;border-color:#eaecf0!important}@keyframes txModalPop{0%{opacity:0;transform:scale(.55) rotate(-8deg)}100%{opacity:1;transform:scale(1) rotate(0)}}@keyframes txModalFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}@media(max-width:575.98px){.tx-system-overlay{padding:12px}.tx-system-modal-card{width:100%;max-height:calc(100dvh - 24px)}.tx-system-modal-body{padding:30px 22px 22px}.tx-system-modal-actions{flex-direction:column-reverse}.tx-system-modal-actions .btn{width:100%}}

/* R18-FIX23 · Modales responsivos globales: nunca desbordan la pantalla. */
.modal{padding:max(6px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))!important;overflow:hidden!important}
.modal-dialog:not(.modal-fullscreen){
  width:min(var(--bs-modal-width,500px),calc(100vw - 12px))!important;
  max-width:calc(100vw - 12px)!important;
  max-height:calc(100dvh - 12px)!important;
  margin:6px auto!important;
  min-width:0!important;
}
.modal-dialog:not(.modal-fullscreen)>.modal-content,
.modal-dialog:not(.modal-fullscreen) .modal-content{
  width:100%!important;max-width:100%!important;max-height:calc(100dvh - 12px)!important;min-height:0!important;
  overflow:hidden!important;display:flex!important;flex-direction:column!important;
}
.modal-dialog:not(.modal-fullscreen) .modal-header,
.modal-dialog:not(.modal-fullscreen) .modal-footer{flex:0 0 auto!important;min-width:0!important}
.modal-dialog:not(.modal-fullscreen) .modal-body{
  flex:1 1 auto!important;min-height:0!important;min-width:0!important;overflow-y:auto!important;overflow-x:hidden!important;
  overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important;
}
.modal-dialog:not(.modal-fullscreen) .modal-content>form{
  min-height:0!important;max-height:100%!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;
}
.modal-dialog:not(.modal-fullscreen) .modal-content>form>.modal-body{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important}
.modal-dialog:not(.modal-fullscreen) img,.modal-dialog:not(.modal-fullscreen) video,.modal-dialog:not(.modal-fullscreen) canvas,.modal-dialog:not(.modal-fullscreen) iframe{max-width:100%!important}
.modal-dialog:not(.modal-fullscreen) .row{max-width:100%!important;margin-left:0!important;margin-right:0!important}
.modal-dialog:not(.modal-fullscreen) .input-group,.modal-dialog:not(.modal-fullscreen) .form-control,.modal-dialog:not(.modal-fullscreen) .form-select{min-width:0!important}
@media(max-width:575.98px){
  .modal-dialog:not(.modal-fullscreen){width:calc(100vw - 8px)!important;max-width:calc(100vw - 8px)!important;max-height:calc(100dvh - 8px)!important;margin:4px auto!important}
  .modal-dialog:not(.modal-fullscreen) .modal-content{max-height:calc(100dvh - 8px)!important;border-radius:16px!important}
  .modal-dialog:not(.modal-fullscreen) .modal-header,.modal-dialog:not(.modal-fullscreen) .modal-footer{padding-left:12px!important;padding-right:12px!important}
  .modal-dialog:not(.modal-fullscreen) .modal-body{padding-left:12px!important;padding-right:12px!important}
}

/* ==========================================================================
   R18-FIX27 · Backdrop oscuro y ajuste global de todos los modales al viewport
   ========================================================================== */
/* Bootstrap: fondo claramente oscurecido mientras exista un modal visible. */
.modal-backdrop{background:#000!important}
.modal-backdrop.show{opacity:.68!important}

/* TxModal propio del sistema usa el mismo oscurecimiento. */
.tx-system-overlay{
  background:rgba(0,0,0,.68)!important;
  padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))!important;
  overflow:hidden!important;
}
.tx-system-modal-card{
  box-sizing:border-box!important;
  width:min(460px,calc(100vw - 16px))!important;
  max-width:calc(100vw - 16px)!important;
  max-height:calc(100vh - 16px)!important;
  max-height:calc(100dvh - 16px)!important;
  overflow:auto!important;
  overscroll-behavior:contain!important;
  -webkit-overflow-scrolling:touch!important;
}

/* Bootstrap: cada modal normal cabe siempre dentro del ancho y alto disponibles. */
.modal{
  box-sizing:border-box!important;
  overflow:hidden!important;
  padding:0!important;
}
.modal-dialog:not(.modal-fullscreen){
  box-sizing:border-box!important;
  width:min(var(--bs-modal-width,500px),calc(100vw - 16px))!important;
  max-width:calc(100vw - 16px)!important;
  max-height:calc(100vh - 16px)!important;
  max-height:calc(100dvh - 16px)!important;
  margin:8px auto!important;
  min-width:0!important;
}
.modal-dialog:not(.modal-fullscreen)>.modal-content,
.modal-dialog:not(.modal-fullscreen) .modal-content{
  box-sizing:border-box!important;
  width:100%!important;
  max-width:100%!important;
  max-height:calc(100vh - 16px)!important;
  max-height:calc(100dvh - 16px)!important;
  min-width:0!important;
  min-height:0!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:column!important;
}
.modal-dialog:not(.modal-fullscreen) .modal-header,
.modal-dialog:not(.modal-fullscreen) .modal-footer{
  flex:0 0 auto!important;
  min-width:0!important;
  max-width:100%!important;
}
.modal-dialog:not(.modal-fullscreen) .modal-body{
  box-sizing:border-box!important;
  flex:1 1 auto!important;
  min-width:0!important;
  min-height:0!important;
  max-width:100%!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  -webkit-overflow-scrolling:touch!important;
}
.modal-dialog:not(.modal-fullscreen) .modal-content>form{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  min-height:0!important;
  max-height:100%!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:column!important;
}
.modal-dialog:not(.modal-fullscreen) .modal-content>form>.modal-body{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
.modal-dialog:not(.modal-fullscreen) img,
.modal-dialog:not(.modal-fullscreen) video,
.modal-dialog:not(.modal-fullscreen) canvas,
.modal-dialog:not(.modal-fullscreen) iframe,
.modal-dialog:not(.modal-fullscreen) svg{
  max-width:100%!important;
}
.modal-dialog:not(.modal-fullscreen) .row{
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
}
.modal-dialog:not(.modal-fullscreen) .input-group,
.modal-dialog:not(.modal-fullscreen) .form-control,
.modal-dialog:not(.modal-fullscreen) .form-select,
.modal-dialog:not(.modal-fullscreen) textarea,
.modal-dialog:not(.modal-fullscreen) input,
.modal-dialog:not(.modal-fullscreen) select{
  min-width:0!important;
  max-width:100%!important;
}
.modal-dialog:not(.modal-fullscreen) .modal-body>*,
.modal-dialog:not(.modal-fullscreen) .modal-header>*,
.modal-dialog:not(.modal-fullscreen) .modal-footer>*{
  min-width:0;
}
.modal-dialog:not(.modal-fullscreen) .modal-body table{max-width:100%!important}
.modal-dialog:not(.modal-fullscreen) .table-responsive{
  max-width:100%!important;
  overflow-x:auto!important;
  -webkit-overflow-scrolling:touch!important;
}

/* Fullscreen: ocupa exactamente el viewport dinámico, sin desbordarse. */
.modal-dialog.modal-fullscreen{
  width:100vw!important;
  max-width:100vw!important;
  height:100vh!important;
  height:100dvh!important;
  max-height:100dvh!important;
  margin:0!important;
}
.modal-dialog.modal-fullscreen>.modal-content,
.modal-dialog.modal-fullscreen .modal-content{
  width:100vw!important;
  max-width:100vw!important;
  height:100vh!important;
  height:100dvh!important;
  max-height:100dvh!important;
  overflow:hidden!important;
}

@media(max-width:575.98px){
  .modal-dialog:not(.modal-fullscreen){
    width:calc(100vw - 8px)!important;
    max-width:calc(100vw - 8px)!important;
    max-height:calc(100vh - 8px)!important;
    max-height:calc(100dvh - 8px)!important;
    margin:4px auto!important;
  }
  .modal-dialog:not(.modal-fullscreen)>.modal-content,
  .modal-dialog:not(.modal-fullscreen) .modal-content{
    max-height:calc(100vh - 8px)!important;
    max-height:calc(100dvh - 8px)!important;
    border-radius:14px!important;
  }
  .modal-dialog:not(.modal-fullscreen) .modal-header,
  .modal-dialog:not(.modal-fullscreen) .modal-footer{
    padding-left:12px!important;
    padding-right:12px!important;
  }
  .modal-dialog:not(.modal-fullscreen) .modal-body{
    padding-left:12px!important;
    padding-right:12px!important;
  }
  .tx-system-overlay{
    padding:max(4px,env(safe-area-inset-top)) max(4px,env(safe-area-inset-right)) max(4px,env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-left))!important;
  }
  .tx-system-modal-card{
    width:calc(100vw - 8px)!important;
    max-width:calc(100vw - 8px)!important;
    max-height:calc(100vh - 8px)!important;
    max-height:calc(100dvh - 8px)!important;
  }
}

/* R18-FIX36 · respuestas y confirmaciones siempre sobre cualquier asistente/modal */
body .tx-system-overlay{z-index:2147483647!important;background:rgba(0,0,0,.62)!important}
body .tx-system-overlay .tx-system-modal-card{position:relative;z-index:2147483647!important}

/* R18-FIX38: confirmaciones/respuestas por encima incluso de llamadas. */
body .tx-system-overlay{z-index:2147483647!important}
body .tx-system-overlay .tx-system-modal-card{z-index:2147483647!important}
