/* Estilos generales */
body {
    background-color: #f8f9fa;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

.sidebar {
    background-color: #1a1e21 !important;
    min-height: 100vh;
}

.sidebar .nav-link {
    padding: 10px 15px;
    margin: 5px 0;
    border-radius: 5px;
    transition: all 0.3s;
    color: #adb5bd !important;
}

.sidebar .nav-link:hover {
    background-color: rgba(255,255,255,0.1);
    color: #fff !important;
}

.sidebar .nav-link.active {
    background-color: #007bff;
    color: #fff !important;
}

.sidebar .nav-link i {
    margin-right: 10px;
    width: 20px;
    text-align: center;
}

/* Tarjetas */
.card {
    border-radius: 10px;
    border: none;
    box-shadow: 0 0 20px rgba(0,0,0,0.05);
    transition: transform 0.3s, box-shadow 0.3s;
}

.card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 25px rgba(0,0,0,0.1);
}

.card-header {
    background: transparent;
    border-bottom: 1px solid #e9ecef;
    padding: 15px 20px;
}

.card-body {
    padding: 20px;
}

/* Tablas */
.table {
    font-size: 14px;
}

.table-hover tbody tr:hover {
    background-color: rgba(0,123,255,0.05);
}

.table thead th {
    border-top: none;
    border-bottom: 2px solid #dee2e6;
    font-weight: 600;
    color: #495057;
}

/* Botones */
.btn-primary {
    background: #007bff;
    border: none;
    padding: 8px 20px;
}

.btn-primary:hover {
    background: #0056b3;
}

.btn-success {
    background: #28a745;
    border: none;
}

.btn-success:hover {
    background: #1e7e34;
}

.btn-warning {
    background: #ffc107;
    border: none;
    color: #212529;
}

.btn-warning:hover {
    background: #e0a800;
}

.btn-danger {
    background: #dc3545;
    border: none;
}

.btn-danger:hover {
    background: #bd2130;
}

/* Badges */
.badge {
    padding: 5px 12px;
    font-weight: 500;
    font-size: 12px;
    border-radius: 20px;
}

/* Formularios */
.form-control:focus {
    border-color: #007bff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}

.form-label {
    font-weight: 500;
    color: #495057;
}

/* Dashboard KPI */
.kpi-card {
    padding: 20px;
    border-radius: 10px;
    color: #fff;
    position: relative;
    overflow: hidden;
}

.kpi-card .kpi-icon {
    position: absolute;
    right: 15px;
    top: 15px;
    font-size: 30px;
    opacity: 0.3;
}

.kpi-card h6 {
    font-weight: 400;
    opacity: 0.9;
}

.kpi-card h3 {
    font-weight: 700;
    margin-top: 5px;
}

.kpi-blue {
    background: linear-gradient(135deg, #007bff, #0056b3);
}

.kpi-green {
    background: linear-gradient(135deg, #28a745, #1e7e34);
}

.kpi-red {
    background: linear-gradient(135deg, #dc3545, #bd2130);
}

.kpi-orange {
    background: linear-gradient(135deg, #fd7e14, #e06b0a);
}

.kpi-purple {
    background: linear-gradient(135deg, #6f42c1, #5530a0);
}

/* Responsive */
@media (max-width: 768px) {
    .sidebar {
        min-height: auto !important;
        height: auto !important;
    }
    
    .table-responsive {
        font-size: 12px;
    }
    
    .btn {
        font-size: 12px;
        padding: 5px 12px;
    }
}

/* Login */
.login-container {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #007bff 0%, #0056b3 100%);
}

.login-card {
    background: #fff;
    padding: 40px;
    border-radius: 15px;
    box-shadow: 0 10px 40px rgba(0,0,0,0.2);
    width: 100%;
    max-width: 400px;
}

.login-card h3 {
    color: #007bff;
    font-weight: 700;
}

.login-card .form-control {
    padding: 12px 15px;
    border-radius: 8px;
}

/* Filtros */
.filter-section {
    background: #f8f9fa;
    padding: 15px;
    border-radius: 8px;
    margin-bottom: 20px;
}

/* Animaciones */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

.fade-in {
    animation: fadeIn 0.5s ease;
}
/* GuateHost Manager 2.0 */
:root { --ghm-bg:#f4f7fb; --ghm-card:#fff; --ghm-text:#172033; --ghm-muted:#748096; --ghm-border:#e6ebf2; }
body { background:var(--ghm-bg); color:var(--ghm-text); font-family:Inter,"Segoe UI",sans-serif; }
.main-content { background:var(--ghm-bg)!important; }
.sidebar { box-shadow:8px 0 28px rgba(10,21,45,.08); }
.sidebar .position-sticky { height:100vh; overflow-y:auto; overflow-x:hidden; scrollbar-width:thin; }
.sidebar .nav-link { display:flex; align-items:center; min-height:42px; border-radius:9px!important; margin:2px 8px!important; }
.sidebar .nav-link.active { box-shadow:0 7px 18px color-mix(in srgb,var(--primary-color) 25%,transparent); }
.card, .ghm-card { border:1px solid var(--ghm-border)!important; box-shadow:0 8px 30px rgba(25,43,70,.055)!important; border-radius:14px!important; overflow:hidden; }
.card:hover, .ghm-card:hover { transform:none!important; }
.ghm-page-head { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; margin-bottom:22px; }
.ghm-page-head h2 { font-size:1.35rem; font-weight:750; margin:3px 0 5px; }
.ghm-page-head p { margin:0; color:var(--ghm-muted); font-size:.9rem; }
.ghm-eyebrow { color:var(--primary-color); font-size:.7rem; letter-spacing:.1em; font-weight:800; }
.ghm-kpi { background:var(--ghm-card); border:1px solid var(--ghm-border); border-radius:14px; padding:17px 18px; box-shadow:0 8px 25px rgba(25,43,70,.04); height:100%; }
.ghm-kpi span { display:block; color:var(--ghm-muted); font-size:.78rem; margin-bottom:7px; }
.ghm-kpi strong { display:block; font-size:1.45rem; line-height:1.15; }
.table thead th { background:#f8fafc; color:#6f7b90; text-transform:uppercase; letter-spacing:.035em; font-size:.68rem; border-bottom:1px solid var(--ghm-border); padding:12px 14px; white-space:nowrap; }
.table tbody td { padding:12px 14px; border-color:#eef2f6; }
.btn { border-radius:9px; font-weight:600; }
.form-control,.form-select,.input-group-text { border-color:#dce3ec; border-radius:9px; min-height:40px; }
.ghm-unread { background:#f5f9ff; }
.ghm-notification-dot { flex:0 0 10px; width:10px; height:10px; border-radius:50%; margin-top:6px; }
.ghm-permission { display:flex; align-items:flex-start; gap:10px; border:1px solid var(--ghm-border); border-radius:11px; padding:12px; height:100%; cursor:pointer; }
.ghm-permission span { display:flex; flex-direction:column; gap:2px; }
.ghm-permission small { color:var(--ghm-muted); font-size:.68rem; }
@media(max-width:768px){.ghm-page-head{align-items:flex-start;flex-direction:column}.ghm-page-head>.btn{width:100%}.ghm-kpi strong{font-size:1.2rem}}

/* ===== GuateHost Manager 2.0.15: pulido responsive global ===== */
html,body{max-width:100%;overflow-x:hidden}.row>*{min-width:0}.card,.ghm-card{max-width:100%}.card-header{gap:.5rem}.table-responsive{width:100%;-webkit-overflow-scrolling:touch}.modal-body{overflow-wrap:anywhere}.form-control,.form-select{max-width:100%}.input-group{min-width:0}.badge{max-width:100%}.btn{white-space:normal}.nav-tabs{scrollbar-width:thin}
@media(max-width:767px){.card-header.d-flex{flex-wrap:wrap}.card-header .d-flex{flex-wrap:wrap}.card-header .btn{flex:0 0 auto}.row.g-3{--bs-gutter-x:.75rem}.table-responsive{margin-bottom:.5rem}.form-label{font-size:.82rem}.input-group-text{font-size:.8rem}.btn-group{flex-wrap:wrap}.pagination{flex-wrap:wrap}.ghm-card{border-radius:12px}}

/* GuateHost Manager 2.0.18 - branding/login final */
.ghm-login-pro{background:radial-gradient(circle at 15% 20%,rgba(32,120,255,.25),transparent 35%),linear-gradient(135deg,#071426 0%,#0c2340 52%,#0b5bd3 130%);padding:24px}
.login-shell{width:min(960px,100%);display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.75fr);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:24px;overflow:hidden;box-shadow:0 30px 90px rgba(0,0,0,.28);backdrop-filter:blur(14px)}
.login-brand-panel{padding:54px;display:flex;flex-direction:column;justify-content:space-between;min-height:560px;color:#fff;background:linear-gradient(145deg,rgba(255,255,255,.045),rgba(255,255,255,.01))}
.login-brand-logo{width:min(310px,82%);height:auto;object-fit:contain;filter:drop-shadow(0 8px 24px rgba(0,0,0,.18))}
.login-brand-copy h2{font-size:2rem;line-height:1.08;font-weight:800;max-width:520px}.login-brand-copy p{color:rgba(255,255,255,.72);max-width:520px}.login-kicker{font-size:.68rem;letter-spacing:.14em;font-weight:800;color:#66a9ff}
.login-card-pro{max-width:none;border-radius:0!important;box-shadow:none!important;padding:48px!important;display:flex;flex-direction:column;justify-content:center}.login-card-pro h3{color:#172033}.login-card-pro .input-group-text{background:#f8fafc;border-color:#e4eaf1}.login-card-pro .form-control{border-color:#e4eaf1}.login-submit{border-radius:11px;font-weight:700;min-height:46px}.login-foot{font-size:.72rem;color:#8a94a6;text-align:center;margin-top:20px}.form-check-label{font-size:.88rem;font-weight:650}
@media(max-width:767px){.ghm-login-pro{padding:14px}.login-shell{display:block;border-radius:18px}.login-brand-panel{min-height:auto;padding:26px 28px 16px}.login-brand-logo{width:min(220px,75%)}.login-brand-copy{display:none}.login-card-pro{padding:28px!important;border-radius:0!important}.login-foot{margin-top:16px}}

/* Chat final: compacto y tipo mensajería */
.comm-chat-card{border-radius:18px!important}.comm-chat-card>.card-header{min-height:64px;background:#fff!important}.chat-box{background:linear-gradient(180deg,#f7f9fc,#f2f5f9);padding:22px}.chat-msg{box-shadow:0 3px 14px rgba(15,23,42,.055);border-radius:18px 18px 18px 6px}.chat-msg.mine{border-radius:18px 18px 6px 18px}.chat-composer{background:#fff;padding:12px 14px}.chat-composer textarea{background:#f7f9fc;border-color:#e3e8ef}.comm-avatar{box-shadow:inset 0 0 0 1px rgba(13,110,253,.08)}
@media(max-width:767px){.comm-chat-card{border-radius:0!important}.chat-box{height:calc(100dvh - 282px);min-height:420px}.chat-composer{padding-bottom:max(10px,env(safe-area-inset-bottom))}}

/* =========================================================
   GuateHost Manager 2.0.21 - MOBILE FIRST / RESPONSIVE FINAL
   ========================================================= */
:root{
  --ghm-mobile-header:58px;
  --ghm-mobile-gutter:12px;
}
img{max-width:100%;height:auto}
.ghm-brand-img,.sidebar-logo img,.sidebar-logo-mobile img,.top-navbar .navbar-brand img{
  display:block!important;
  width:auto!important;
  height:auto!important;
  object-fit:contain!important;
}
.sidebar-logo img{max-width:178px!important;max-height:42px!important;margin:0 auto}
.sidebar-logo-mobile img{max-width:168px!important;max-height:34px!important;margin:0 auto}
.top-navbar .navbar-brand img{max-width:154px!important;max-height:30px!important;margin:0 auto}

/* Login: nunca permitir que el logo domine la pantalla */
.ghm-login-pro{width:100%;min-height:100dvh;overflow-y:auto;overflow-x:hidden}
.login-brand-logo{display:block;max-width:310px!important;max-height:92px!important;width:auto!important;height:auto!important;object-fit:contain!important}

/* Componentes generales */
.card,.ghm-card{overflow:hidden}
.card-header{min-width:0}
.table-responsive{position:relative;overflow-x:auto;overscroll-behavior-inline:contain}
.table-responsive .table{margin-bottom:0}
.modal{padding-right:0!important}
.modal-dialog{max-width:min(760px,calc(100vw - 24px))}
textarea{resize:vertical}

@media (max-width: 767.98px){
  html{font-size:15px;-webkit-text-size-adjust:100%}
  body{min-width:0;background:var(--ghm-bg);padding:0!important}
  .top-navbar{height:var(--ghm-mobile-header)!important;padding:6px 10px!important;box-shadow:0 3px 14px rgba(15,23,42,.12);z-index:1040}
  .top-navbar .container-fluid{padding:0!important;gap:8px}
  .top-navbar .navbar-brand{max-width:calc(100vw - 112px)!important;min-width:0!important;justify-content:center}
  .top-navbar .navbar-brand img{max-width:min(150px,48vw)!important;max-height:28px!important}
  .top-navbar .navbar-brand span{font-size:.86rem!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  .sidebar{width:min(84vw,286px)!important;max-width:min(84vw,286px)!important;left:-310px!important;height:100dvh!important;min-height:100dvh!important;overflow-y:auto!important;overflow-x:hidden!important;box-shadow:18px 0 44px rgba(0,0,0,.22)}
  .sidebar.open{left:0!important}
  .sidebar .position-sticky{height:auto!important;min-height:100dvh!important;padding-top:0!important}
  .sidebar .sidebar-logo-mobile{min-height:60px;display:flex!important;align-items:center;justify-content:center;padding:13px 16px!important;position:sticky;top:0;z-index:2}
  .sidebar .sidebar-logo-mobile img{max-width:min(172px,58vw)!important;max-height:34px!important}
  .sidebar .nav-link{min-height:44px!important;margin:2px 8px!important;padding:10px 12px!important;font-size:.9rem!important}
  .sidebar .nav-link i{width:21px!important;flex:0 0 21px}
  .sidebar-overlay{backdrop-filter:blur(2px)}

  .main-content{margin-left:0!important;padding:calc(var(--ghm-mobile-header) + 10px) var(--ghm-mobile-gutter) calc(18px + env(safe-area-inset-bottom))!important;min-height:100dvh!important;width:100%!important}
  .main-content>.d-flex.justify-content-between.flex-wrap.flex-md-nowrap{gap:8px;margin-bottom:12px!important;padding-bottom:10px!important}
  .main-content>.d-flex.justify-content-between.flex-wrap.flex-md-nowrap h1{font-size:1.18rem!important;margin:0!important}

  .ghm-page-head{margin-bottom:14px!important;gap:8px!important}
  .ghm-page-head h2{font-size:1.22rem!important;line-height:1.2}
  .ghm-page-head p{font-size:.8rem!important;line-height:1.4}
  .ghm-eyebrow{font-size:.62rem!important}

  .row{--bs-gutter-x:.7rem;--bs-gutter-y:.7rem}
  .card,.ghm-card{border-radius:12px!important}
  .card-header{padding:11px 12px!important}
  .card-body{padding:12px!important}
  .ghm-kpi{padding:13px 14px!important;border-radius:12px!important}
  .ghm-kpi strong{font-size:1.12rem!important}
  .ghm-kpi span{font-size:.72rem!important}

  .form-control,.form-select,.input-group-text{min-height:42px!important;font-size:16px!important}
  .form-label{font-size:.79rem!important;margin-bottom:5px}
  .btn:not(.btn-sm){min-height:42px!important;padding:8px 12px!important;font-size:.88rem}
  .btn-sm{min-height:34px!important;font-size:.76rem!important}
  .btn-group{gap:4px}

  /* Tablas: scroll táctil, encabezado legible, no romper la página */
  .table-responsive{margin-left:-2px;margin-right:-2px;border-radius:10px!important;border:1px solid #edf1f5;background:#fff}
  .table-responsive::after{content:"Desliza horizontalmente para ver más";display:block;position:sticky;left:0;width:max-content;max-width:100%;font-size:.61rem;color:#98a2b3;padding:5px 9px;background:#fff}
  .table{min-width:720px!important;font-size:.78rem!important}
  .table thead th{padding:9px 10px!important;font-size:.61rem!important}
  .table tbody td{padding:10px!important}
  .table .btn{white-space:nowrap!important}

  .nav-tabs{gap:4px;padding-bottom:4px}
  .nav-tabs .nav-link{font-size:.78rem;padding:8px 10px}
  .alert{font-size:.8rem;padding:10px 12px}
  .badge{font-size:.66rem;padding:4px 8px}

  /* Login móvil: una sola tarjeta compacta y logo controlado */
  .ghm-login-pro{display:block!important;padding:0!important;background:linear-gradient(180deg,#071426 0,#0b3e7d 38%,#f4f7fb 38%,#f4f7fb 100%)!important}
  .login-shell{display:flex!important;flex-direction:column!important;width:100%!important;min-height:100dvh!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;overflow:visible!important}
  .login-brand-panel{min-height:132px!important;height:132px!important;padding:30px 22px 20px!important;display:flex!important;align-items:center!important;justify-content:center!important;background:transparent!important;overflow:hidden!important;flex:0 0 132px!important}
  .login-brand-logo{width:auto!important;max-width:min(220px,68vw)!important;max-height:58px!important;margin:0 auto!important;object-fit:contain!important}
  .login-brand-copy{display:none!important}
  .login-card-pro{width:calc(100% - 24px)!important;max-width:480px!important;margin:0 auto 18px!important;padding:24px 20px!important;border-radius:20px!important;background:#fff!important;box-shadow:0 16px 40px rgba(15,23,42,.16)!important;justify-content:flex-start!important}
  .login-card-pro h3{font-size:1.35rem!important}
  .login-card-pro .mb-4{margin-bottom:1rem!important}
  .login-foot{font-size:.68rem!important}

  /* Permisos compactos */
  .permissions-shell{width:100%!important;max-width:100%!important}
  .perm-userbar{gap:8px!important}
  .perm-profile-grid{gap:7px!important}
  .perm-profile{padding:9px 10px!important;border-radius:10px!important}
  .permission-sections{gap:8px!important}
  .perm-section{border-radius:11px!important}
  .perm-section-head{padding:8px 9px!important}
  .perm-section-head i{width:26px!important;height:26px!important}
  .perm-grid{padding:2px!important}
  .perm-item{padding:8px!important;gap:8px!important}
  .perm-copy strong{font-size:.73rem!important}
  .perm-copy small{font-size:.61rem!important;line-height:1.25}
  .perm-switch .form-check-input{width:2rem!important;height:1.08rem!important}
  .perm-actions{bottom:max(8px,env(safe-area-inset-bottom))!important}

  /* Comunicación realmente usable en pantalla pequeña */
  .comm-grid{display:block!important}
  .comm-sidebar,.comm-chat-pane{width:100%!important;min-width:0!important}
  .comm-grid.mobile-open .comm-sidebar{display:none!important}
  .comm-grid:not(.mobile-open) .comm-chat-pane{display:none!important}
  .comm-list{max-height:none!important;border-radius:12px!important}
  .comm-list .list-group-item{padding:12px!important}
  .comm-avatar{width:40px!important;height:40px!important;flex-basis:40px!important}
  .comm-chat-card{position:relative;border-radius:12px!important;height:calc(100dvh - var(--ghm-mobile-header) - 24px)!important;display:flex!important;flex-direction:column!important}
  .comm-chat-card>.card-header{position:relative!important;top:auto!important;min-height:58px!important;flex:0 0 auto!important;padding:9px 10px!important}
  .comm-chat-card>.card-body{display:flex!important;flex-direction:column!important;min-height:0!important;flex:1 1 auto!important}
  .chat-box{height:auto!important;min-height:0!important;flex:1 1 auto!important;overflow-y:auto!important;padding:12px 10px 18px!important;-webkit-overflow-scrolling:touch!important}
  .chat-msg{max-width:88%!important;min-width:0!important;font-size:.84rem!important;padding:9px 11px!important}
  .chat-meta,.chat-read{font-size:.6rem!important}
  .chat-composer{position:relative!important;bottom:auto!important;flex:0 0 auto!important;padding:8px 9px max(9px,env(safe-area-inset-bottom))!important}
  .chat-composer textarea{font-size:16px!important;min-height:44px!important;max-height:94px!important}
  .chat-composer .composer-actions{grid-template-columns:minmax(0,1fr) 44px!important}
  .chat-header-title{min-width:0!important}
  .chat-header-title>div:last-child{min-width:0!important}
  .chat-header-title strong{display:block;max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  /* Modales en móvil */
  .modal-dialog{width:calc(100% - 12px)!important;max-width:none!important;margin:6px!important}
  .modal-content{max-height:calc(100dvh - 12px);overflow:hidden}
  .modal-body{overflow-y:auto!important;-webkit-overflow-scrolling:touch}
  .modal-footer{padding:9px!important;gap:6px;flex-wrap:wrap}
  .modal-footer .btn{flex:1 1 auto}
}

@media (max-width: 380px){
  .top-navbar .navbar-brand img{max-width:126px!important}
  .login-brand-logo{max-width:190px!important}
  .main-content{--ghm-mobile-gutter:8px}
  .chat-msg{max-width:92%!important}
}


/* ===== GHM 2.0.22 · Modales seguros y responsive ===== */
.modal-dialog{max-height:calc(100dvh - 24px);}
.modal-content{max-height:calc(100dvh - 24px);}
.modal-content > form{display:flex;flex-direction:column;min-height:0;max-height:calc(100dvh - 24px);}
.modal-content > form > .modal-header{flex:0 0 auto;}
.modal-content > form > .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
.modal-content > form > .modal-footer{flex:0 0 auto;background:var(--bs-body-bg,#fff);position:sticky;bottom:0;z-index:3;border-top:1px solid var(--ghm-border,#dee2e6);}
.modal-body{max-height:calc(100dvh - 150px);overflow-y:auto!important;-webkit-overflow-scrolling:touch;}
@media(max-width:767px){
  .modal{padding:0!important;}
  .modal-dialog{width:calc(100% - 12px)!important;max-width:none!important;margin:6px!important;height:calc(100dvh - 12px);max-height:calc(100dvh - 12px);display:flex;align-items:stretch;}
  .modal-content{width:100%;max-height:calc(100dvh - 12px)!important;border-radius:14px!important;}
  .modal-content > form{width:100%;max-height:calc(100dvh - 12px)!important;}
  .modal-header{padding:.8rem .9rem;}
  .modal-body{max-height:none!important;padding:.9rem!important;}
  .modal-footer{padding:.75rem .9rem!important;gap:.5rem;flex-wrap:nowrap;}
  .modal-footer .btn{flex:1 1 0;min-width:0;}
}


/* ===== GHM 2.0.23 · Modal viewport fix definitivo ===== */
.modal-content{
  display:flex;
  flex-direction:column;
  min-height:0;
  overflow:hidden!important;
}
.modal-content > .modal-header,
.modal-content > .modal-footer{flex:0 0 auto;}
.modal-content > .modal-body{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch;
}
.modal-content > form{
  display:flex!important;
  flex-direction:column;
  flex:1 1 auto!important;
  min-height:0!important;
  overflow:hidden!important;
  width:100%;
}
.modal-content > form > .modal-header,
.modal-content > form > .modal-footer{flex:0 0 auto!important;}
.modal-content > form > .modal-body{
  flex:1 1 auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  touch-action:pan-y;
}
.modal-content > form > .modal-footer{
  position:relative!important;
  bottom:auto!important;
  background:var(--bs-body-bg,#fff);
  z-index:5;
}
#modalMovimiento .modal-dialog{
  height:min(760px,calc(100dvh - 24px));
}
#modalMovimiento .modal-content,
#modalMovimiento #formMovimiento{
  height:100%;
  max-height:100%!important;
}
#modalMovimiento .modal-body{
  padding-bottom:1rem!important;
}
@media(max-width:767px){
  #modalMovimiento .modal-dialog{
    height:calc(100dvh - 12px)!important;
    max-height:calc(100dvh - 12px)!important;
  }
  #modalMovimiento .modal-content,
  #modalMovimiento #formMovimiento{
    height:100%!important;
    max-height:100%!important;
  }
  #modalMovimiento .modal-footer{
    display:flex!important;
    flex:0 0 auto!important;
    padding-bottom:calc(.75rem + env(safe-area-inset-bottom))!important;
  }
  #modalMovimiento .modal-body{
    padding-bottom:1.25rem!important;
  }
}


/* ===== GHM 2.0.24 · Modal móvil fullscreen robusto ===== */
@media (max-width: 767.98px){
  body.modal-open{overflow:hidden!important;touch-action:none;}
  .modal{padding:0!important;overflow:hidden!important;}
  .modal .modal-dialog,
  #modalMovimiento .modal-dialog{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    max-width:100vw!important;
    height:100dvh!important;
    max-height:100dvh!important;
    margin:0!important;
    transform:none!important;
  }
  .modal .modal-content,
  #modalMovimiento .modal-content{
    width:100%!important;
    height:100dvh!important;
    max-height:100dvh!important;
    border:0!important;
    border-radius:0!important;
    overflow:hidden!important;
  }
  .modal .modal-content > form,
  #modalMovimiento #formMovimiento{
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr) auto!important;
    width:100%!important;
    height:100dvh!important;
    min-height:0!important;
    max-height:100dvh!important;
    overflow:hidden!important;
  }
  .modal .modal-content > form > .modal-header,
  .modal .modal-content > form > .modal-footer{
    position:relative!important;
    inset:auto!important;
    flex:none!important;
    min-height:0!important;
    background:var(--bs-body-bg,#fff)!important;
    z-index:10!important;
  }
  .modal .modal-content > form > .modal-body,
  #modalMovimiento .modal-body{
    min-height:0!important;
    height:auto!important;
    max-height:none!important;
    overflow-x:hidden!important;
    overflow-y:scroll!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-y!important;
    padding-bottom:2rem!important;
  }
  .modal .modal-content > form > .modal-footer,
  #modalMovimiento .modal-footer{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:.5rem!important;
    padding:.7rem .75rem calc(.7rem + env(safe-area-inset-bottom))!important;
    box-shadow:0 -8px 22px rgba(15,23,42,.08)!important;
  }
  .modal .modal-footer .btn{width:100%!important;min-height:44px!important;margin:0!important;}
}

/* ===== GHM 2.0.25 · Scroll móvil de modales: bloqueo de fondo + scroll interno real ===== */
:root{--ghm-modal-vh:100dvh;}
@media (max-width: 767.98px){
  /* Nunca bloquear el gesto vertical desde body: el bloqueo del fondo se hace por JS con position:fixed. */
  body.modal-open,
  body.ghm-modal-lock{
    overflow:hidden!important;
    overscroll-behavior:none!important;
    touch-action:auto!important;
  }

  .modal{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    height:var(--ghm-modal-vh,100dvh)!important;
    max-height:var(--ghm-modal-vh,100dvh)!important;
    padding:0!important;
    margin:0!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
  }

  .modal.show .modal-dialog,
  .modal .modal-dialog,
  #modalMovimiento .modal-dialog{
    position:absolute!important;
    inset:0!important;
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    height:100%!important;
    max-height:100%!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    transform:none!important;
    pointer-events:auto!important;
  }

  .modal .modal-content,
  #modalMovimiento .modal-content{
    display:flex!important;
    flex-direction:column!important;
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
    overflow:hidden!important;
  }

  /* Estructura con header/body/footer directamente dentro de modal-content. */
  .modal .modal-content > .modal-header,
  .modal .modal-content > .modal-footer{
    flex:0 0 auto!important;
  }
  .modal .modal-content > .modal-body{
    flex:1 1 auto!important;
    min-height:0!important;
    height:0!important;
    max-height:none!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior-y:contain!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-y!important;
  }

  /* Estructura más común: form dentro de modal-content. El form ocupa SOLO el espacio disponible. */
  .modal .modal-content > form,
  #modalMovimiento #formMovimiento{
    display:flex!important;
    flex-direction:column!important;
    flex:1 1 auto!important;
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:hidden!important;
  }
  .modal .modal-content > form > .modal-header,
  .modal .modal-content > form > .modal-footer{
    flex:0 0 auto!important;
    position:relative!important;
    inset:auto!important;
    z-index:5!important;
    background:var(--bs-body-bg,#fff)!important;
  }
  .modal .modal-content > form > .modal-body,
  #modalMovimiento .modal-body{
    flex:1 1 auto!important;
    min-height:0!important;
    height:0!important;
    max-height:none!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior-y:contain!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-y!important;
    padding-bottom:calc(1.5rem + env(safe-area-inset-bottom))!important;
  }

  .modal .modal-footer{
    flex:0 0 auto!important;
    padding:.7rem .75rem calc(.7rem + env(safe-area-inset-bottom))!important;
    background:var(--bs-body-bg,#fff)!important;
    border-top:1px solid var(--ghm-border,#dee2e6)!important;
    box-shadow:0 -6px 18px rgba(15,23,42,.08)!important;
    z-index:8!important;
  }
  .modal .modal-footer .btn{
    min-height:44px!important;
  }

  /* El fondo nunca recibe scroll/touch mientras un modal está visible. */
  .modal-backdrop{touch-action:none!important;}
}
