/* =======================================================================
   Transcargo – CSS unificado y normalizado
   Criterios:
   - Orden lógico de secciones
   - Duplicados consolidados; la versión menos completa queda comentada
   - Sin romper selectores ni clases existentes
   ======================================================================= */

/* === 1) Base y cabecera ================================================= */
.app-sidebar__user-avatar{width:48px;background:gray;padding:6px;}
.headerRegister,.header-primary{background:#002447;color:#fff;}
.headerUpdate{background:#048abf;color:#fff;}
.notBlock{display:none;}
.app-title{margin:0;padding:5px;border:#002447;border-bottom-style:solid;}
.app-content{padding:15px;background:#fff;min-height:0;}
.app-title h1{padding:10px 0 0 20px;}
.app-breadcrumb{padding-top:10px;padding-right:0;}
.tile{-webkit-box-shadow:none;box-shadow:none;}
.treeview-item{margin-left:20px;}
.botonNew{margin-left:40px;}
.breadcrumb-item + .breadcrumb-item::before{padding-right:0;}

/* === 2) Tablas ========================================================== */
@media (min-width:992px){.table-responsive{overflow-x:hidden;}}
@media (min-width:1200px){.table-responsive{overflow-x:hidden;}}

/* === 3) Login =========================================================== */
.login-content .login-box label{margin-bottom:0;}
#divLoading{position:fixed;top:0;width:100%;height:100%;display:none;justify-content:center;align-items:center;background:rgba(254,254,255,.65);z-index:9999;}
#divLoading img{width:50px;height:50px;}
.required{color:red;font-size:13pt;font-weight:bold;}

/* === 4) Navbar ========================================================== */
.navbar-center{position:absolute;left:50%;transform:translateX(-50%);}

/* === 5) DataTables: paginación, barra superior, responsive icon ========= */
div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center;}
.page-item.active .page-link{z-index:1;color:#fff;background-color:gray;border-color:gray;}
.dataTables_wrapper .top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:10px;}
.dataTables_wrapper .dataTables_length{margin-right:20px;}
.dataTables_wrapper .dataTables_info{flex-grow:1;text-align:center;}
.dataTables_wrapper .dataTables_filter{margin-left:20px;}
table.dataTable td.dtr-control:before,table.dataTable th.dtr-control:before{content:'+';display:inline-block;margin-right:.5rem;font-weight:700;}
table.dataTable tr.parent td.dtr-control:before,table.dataTable tr.parent th.dtr-control:before{content:'–';}

/* === 6) SweetAlert / SweetAlert2 (z-index + estilo) ===================== */
.swal-button{padding:7px 19px;border-radius:2px;background-color:#002447;font-size:12px;border:1px solid #002447;text-shadow:0 -1px 0 rgba(0,0,0,.3);}
.sweet-alert button{background:#002447 !important;color:#fff;border:none;-webkit-box-shadow:none;box-shadow:none;font-size:17px;font-weight:500;border-radius:3px;padding:8px 20px;margin:26px 5px 0;cursor:pointer;}
.sweet-alert button.cancel{background:#dc3545 !important;}
/* Compatibilidad SweetAlert sobre fondo difuminado */
.sweet-overlay{ z-index:2000 !important; filter:none !important; }
.sweet-alert{  z-index:2001 !important; filter:none !important; }
/* SweetAlert2 */
.swal2-container{ z-index:2001 !important; filter:none !important; }
.swal2-container .swal2-popup{ filter:none !important; }

/* === 7) Elementos “sticky” ============================================= */
.fixed-row{position:sticky;top:0;background:#f9f9f9;z-index:1;}

/* === 8) UI “GS” ========================================================= */
.gs-header{align-items:center;}
.gs-logo{font-weight:600;font-size:1.05rem;display:flex;align-items:center;}
.gs-logo i{font-size:1.25rem;margin-right:.5rem;}
.gs-search .form-control{border-radius:2rem;}
.gs-section-title{font-weight:600;color:#5f6368;font-size:.95rem;margin:1rem 0 .5rem;}
.gs-templates .card{border:1px solid #e0e0e0;border-radius:8px;width:200px;min-width:200px;}
.gs-templates .card-img-top{height:120px;background:#eaf3ff;display:flex;align-items:center;justify-content:center;}
.gs-templates .card-img-top .plus{font-size:3rem;line-height:1;border:0;background:#fff;}
.gs-templates .card-title{font-size:.9rem;margin:.5rem 0 0;color:#5f6368;}
.gs-divider{border-top:1px solid #e9edf5;margin:1rem 0;}
.gs-file-head{color:#6a6f76;font-weight:600;border-bottom:1px solid #edf0f4;}
.gs-file-row{padding:.5rem .75rem;border-bottom:1px solid #edf0f4;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;}
.gs-file-row:hover{background:#fafafa;}
.gs-file-name{display:flex;align-items:center;gap:.5rem;}
.gs-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;background:#1a73e8;color:#fff;border-radius:3px;font-size:.85rem;}
.gs-right-controls i{color:#5f6368;}
@media (max-width:768px){.gs-templates{overflow-x:auto;}}
/* Template cards */
.template-card{width:200px;border-radius:.5rem;}
.template-card:hover{box-shadow:0 2px 12px rgba(0,0,0,.12);}
.template-card .card-img-top svg{display:block;width:100%;height:120px;}
/* Plus multicolor (consolidado) */
.gsheets-plus{position:relative;width:56px;height:56px}
.gsheets-plus.md{width:72px;height:72px}
.gsheets-plus:before,.gsheets-plus:after{content:"";position:absolute;border-radius:3px;left:50%;top:50%;transform:translate(-50%,-50%);}
.gsheets-plus:before{width:18px;height:72px;background:linear-gradient(#f4b400 0 25%,#0f9d58 25% 50%,#4285f4 50% 75%,#db4437 75% 100%)}
.gsheets-plus:after{width:72px;height:18px;background:linear-gradient(90deg,#f4b400 0 25%,#0f9d58 25% 50%,#4285f4 50% 75%,#db4437 75% 100%)}

/* === 9) Grillas rápidas FX/MF/CF/CG ==================================== */
.fx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:6px;}
.fx-cell{border:1px solid #dfe3e8;padding:8px;border-radius:4px;background:#fff;text-align:center;}
/* MF highlight + links */
.mf-hit{background:#14532d;color:#fff;font-weight:600;}
#mf-grid a{text-decoration:none;}
#mf-grid a:hover{text-decoration:underline;}
#modalFacturas #mf-grid a{color:inherit;text-decoration:none !important;}
#modalFacturas #mf-grid a:hover,#modalFacturas #mf-grid a:focus{text-decoration:none !important;}
#modalFacturas #mf-grid td.mf-hit{background:#14532d;color:#fff;}
#modalFacturas #mf-grid td.mf-hit a{color:#fff !important;text-decoration:none !important;}
/* Botón quitar (svg) */
#modalFacturas #mf-grid td{position:relative;padding-right:28px;white-space:nowrap;vertical-align:middle;}
#modalFacturas #mf-grid td .mf-del{position:absolute;right:16px;top:50%;transform:translateY(-50%);width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;color:#fff;cursor:pointer;transition:filter .15s ease,transform .05s ease;background-color:transparent;}
#modalFacturas #mf-grid td .mf-del:hover{filter:brightness(.95);}
#modalFacturas #mf-grid td .mf-del:active{transform:translateY(-50%) scale(.96);}
#modalFacturas #mf-grid td .mf-del svg{width:12px;height:12px;display:block;}
/* CG grid 3→6 cols */
#cg-grid td{height:42px;vertical-align:middle;text-align:center;}
@media (min-width:576px){#cg-grid tr{display:grid;grid-template-columns:repeat(3,1fr);}}
@media (min-width:768px){#cg-grid tr{grid-template-columns:repeat(4,1fr);}}
@media (min-width:992px){#cg-grid tr{grid-template-columns:repeat(6,1fr);}}

/* === 10) Badges de estados ============================================= */
.badge-violet{background:#6f42c1;color:#fff;min-width: 90px;}
.badge-rosa{background:#f78504;color:#fff;min-width: 90px;}
.badge-rosaOscuro{background:#0cd5f0;color:#000;min-width: 90px;}
.badge-danger{min-width: 90px;}
.badge-warning{min-width: 90px;}
.badge-success{min-width: 90px;}
.badge-secondary{min-width: 90px;}

/* === 11) Reportes / impresión ========================================== */
.report-wrap{max-width:1100px;margin:0 auto;padding:0 12px;}
.rep-two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.rep-block{break-inside:avoid;}
.rep-kv{display:grid;grid-template-columns:200px 1fr;align-items:center;padding:4px 0;border-bottom:1px solid #eee;}
.rep-kv dt{margin:0;font-weight:600;color:#666;}
.rep-kv dd{margin:0;}
.kv{width:100%;border-collapse:separate;border-spacing:0 8px;}
.kv .k{width:24%;color:#6b7785;font-weight:600;padding-right:10px;white-space:nowrap;}
.kv .v{width:76%;border-bottom:1px solid #e9edf3;padding-bottom:6px;word-break:break-word;}
.grid{width:100%;table-layout:fixed;border-collapse:collapse;}
.grid th{background:#f5f7fb;border-top:1px solid #e5e9f2;border-bottom:1px solid #e5e9f2;text-align:center;padding:.6rem;}
.grid td{padding:.45rem .55rem;border:1px solid #e9edf3;vertical-align:middle;}
.grid .num a{color:#212529;text-decoration:none;display:inline-block;width:100%;}
.chk .box{width:10px;height:10px;border:1px solid #222;margin:0 auto;}
.rep-grid-wrapper{max-width:1100px;margin:0 auto;}
.rep-grid{width:100%;table-layout:fixed;border-collapse:collapse;}
.rep-grid td{width:12.5%;padding:.45rem .55rem;border:1px solid #e9edf3;vertical-align:middle;text-align:center;}
/* Cabeceras como el modal */
#rep-grid th.mf-colhdr,
#rep-grid th.corner,
#rep-grid td.mf-rowhdr{background:#cad5df;color:#2b1f12;font-weight:700;text-align:center;vertical-align:middle;border:1px solid #818181ef;white-space:nowrap;}
#rep-grid th.mf-coltitle{background:#cad5df;color:#2b1f12;font-weight:700;text-align:center;border:1px solid #818181ef;}
/* Enlaces reporte */
#rep-grid a{ text-decoration:none !important; color:inherit !important; }
#rep-grid a:hover{ text-decoration:none !important; }
/* No subrayar ni color en print */
@media print{
  a[href]::after{content:none !important;}
  .card{box-shadow:none;border:0;}
  .report-wrap{max-width:none;padding:0;}
  .rep-two-col{display:grid !important;grid-template-columns:1fr 1fr !important;grid-column-gap:18pt !important;align-items:start;width:100% !important;}
  .rep-two-col .rep-block{break-inside:avoid;}
  .rep-kv{display:grid !important;grid-template-columns:140pt 1fr !important;grid-column-gap:8pt;margin:0 0 6pt 0;}
  .rep-kv dt{font-weight:600;color:#6c757d;}
  .rep-grid-wrapper{max-width:100%;}
  .rep-grid td{width:12.5%;}
  .grid th.chk,.grid td.chk,.chk{display:none !important;}
  #rep-grid a{ text-decoration:none !important; color:#000 !important; }
  @page{size:letter;margin:12mm;}
}

/* === 12) “No imprimir” consistente ===================================== */
.no-print{ display:block !important; } /* visibilidad en pantalla por compatibilidad */
/* (INACTIVA la variante previa que la ocultaba en pantalla)
   .no-print{display:none !important;} */
@media print{ .no-print{ display:none !important; } }

/* === 13) Contenedores: tabla → cards móvil ============================= */
#tableContenedores{width:100%;}
#tableContenedores thead th{white-space:nowrap;font-size:.9rem;}
@media (max-width:768px){
  #tableContenedores thead{display:none;}
  #tableContenedores,#tableContenedores tbody,#tableContenedores tr,#tableContenedores td{display:block;width:100%;}
  #tableContenedores tbody tr{background:#fff;border:1px solid #e9ecef;border-radius:10px;padding:10px 12px;margin:0 0 12px;}
  #tableContenedores tbody td{border:0;padding:.35rem 0;font-size:15px;white-space:normal !important;word-break:break-word !important;}
  #tableContenedores tbody td::before{content:attr(data-label);display:block;font-size:12px;color:#6b7280;text-transform:uppercase;letter-spacing:.02em;margin-bottom:2px;}
  #tableContenedores .badge{font-size:.8rem;padding:.3rem .55rem;border-radius:.6rem;}
}
#tableContenedores td{white-space:normal;}

/* === 14) Lista “Este mes” ajustes ====================================== */
.gs-file-row > *:last-child{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}
.gs-file-row .badge{margin-right:.5rem;}
@media (max-width:768px){.gs-file-row > *:last-child{width:100%;justify-content:flex-start;}}

/* === 15) Cabeceras numéricas MF + REP ================================== */
#modalFacturas #mf-grid th.mf-colhdr,
#modalFacturas #mf-grid th.mf-corner,
#modalFacturas #mf-grid td.mf-rowhdr{
  background:#cad5df;color:#2b1f12;font-weight:700;text-align:center;vertical-align:middle;border:1px solid #818181ef;white-space:nowrap;
}
#modalFacturas #mf-grid th.mf-coltitle{
  background:#cad5df;color:#2b1f12;font-weight:700;text-align:center;border:1px solid #818181ef;
}
#modalFacturas #mf-grid td.mf-rowhdr{ width:1%; }

/* === 16) Botones y utilidades ========================================== */
.btn-via{ background:#6f42c1; color:#fff; border-color:#6f42c1; }
.btn-via:hover{ filter:brightness(.95); color:#fff; }
.btn-objeto{ background:#888603; color:#fff; border-color:#888603; }
.btn-objeto:hover{ filter:brightness(.95); color:#fff; }
.btn-outline-danger{ color:#dc3545; border-color:#fff !important; }
.icon-action{cursor:pointer;padding:.375rem;line-height:1;border-radius:.25rem;display:inline-block}
.icon-action:hover{background:rgba(0,0,0,.075)}
.icon-action:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}
.flip-x{transform:scaleX(-1)}
.fontObjetos{font-weight:bold;padding:10px;margin-right:5px;margin-bottom:15px;}

/* === 17) Toasts genéricos ============================================== */
#cg-toast{position:sticky;top:0;z-index:2;}
.cg-ok{background:#e9f7ef;}
.cg-bad{background:#fdecea;}

/* === 18) Captura facturas (CF) ========================================= */
.cf-grid{display:flex;flex-direction:column;gap:.5rem;}
.cf-row{display:grid;grid-template-columns:repeat(6,1fr);gap:.5rem;margin-bottom:.5rem;}
.cf-cell{min-height:42px;border:1px solid #e9ecef;border-radius:.35rem;padding:.4rem .5rem;background:#fff;}
.cf-num{font-weight:600;}
.cf-sub{font-size:.82rem;color:#6c757d;}
@media (max-width:992px){.cf-row{grid-template-columns:repeat(4,1fr);}}
@media (max-width:576px){.cf-row{grid-template-columns:repeat(2,1fr);}}
/* Toast informativo */
.cf-toast{position:fixed;left:50%;top:1rem;transform:translateX(-50%);background:#343a40;color:#fff;padding:.5rem .75rem;border-radius:.25rem;opacity:0;transition:opacity .2s;z-index:1060;}
.cf-toast.show{opacity:1;}

/* === 19) Modal Carga Facturas (MCF) ==================================== */
#modalCargaFacturas .modal-dialog{max-width:640px;}
@media (max-width:768px){#modalCargaFacturas .modal-dialog{max-width:100%;margin:.5rem;}}
#modalCargaFacturas .modal-body{max-height:calc(100vh - 220px);overflow:auto;}
#modalCargaFacturas .modal-footer{position:sticky;bottom:0;background:#fff;z-index:2;}
#modalCargaFacturas .cf-lab{font-size:.85rem;color:#6c757d;font-weight:600;display:block;margin-bottom:.15rem;}
#modalCargaFacturas .cf-val{font-size:1rem;font-weight:700;}
#modalCargaFacturas #cfGrid{max-height:58vh;overflow:auto;}
#modalCargaFacturas .cf-row{display:block;margin:0 0 .6rem;}
#modalCargaFacturas .cf-cell{width:100%;display:flex;align-items:center;justify-content:space-between;padding:.7rem .9rem;border:1px dashed #d9dee3;border-radius:.5rem;background:#fff;}
#modalCargaFacturas .cf-cell .cf-nro{font-size:1.25rem;font-weight:700;letter-spacing:.2px;}
#modalCargaFacturas .cf-cell .cf-tag{font-size:.78rem;color:#6c757d;}
#modalCargaFacturas .cf-cell.cf-fixed{position:sticky;top:0;z-index:2;background:#0b5d1e;color:#fff;border-color:#0b5d1e;}
.cf-last{background:#14532d;color:#fff;font-weight:600;font-size:1.3rem;}
/* Highlight dentro del modal */
#modalCargaFacturas .cf-cell.mf-hit{background:#14532d !important;color:#fff !important;border-color:#14532d !important;}
#modalCargaFacturas .cf-cell.mf-hit .cf-num,#modalCargaFacturas .cf-cell.mf-hit .cf-tag{color:#fff !important;}
#modalCargaFacturas .cf-cell.mf-hit a{color:#fff !important;text-decoration:none !important;}
/* Última en rojo con texto blanco */
#modalCargaFacturas .cf-cell.cf-last{ background:red; color:#fff; border-color:red; }
#modalCargaFacturas .cf-cell.cf-last a{ color:#fff !important; }
#modalCargaFacturas .cf-cell.cf-last .cf-num,#modalCargaFacturas .cf-cell.cf-last .cf-tag{ color:#fff !important; }
/* Línea “pendientes multi-caja” */
#modalCargaFacturas .mc-multi-line{ margin:.35rem 0 .35rem; }
#modalCargaFacturas .mc-multi-line .k{ font-weight:600; margin-right:.35rem; }
#modalCargaFacturas .mc-multi-line .pend{ color:#dc3545; font-weight:700; margin-right:.5rem; white-space:nowrap; }
/* Línea "Cantidad de Cajas ingresadas" (versión vigente) */
#modalCargaFacturas .mc-count-line{display:inline-flex !important;align-items:baseline;justify-content:flex-start;gap:0;margin:.35rem 0 .35rem;}
#modalCargaFacturas .mc-count-line .k{font-weight:600;margin-right:10px;}
#modalCargaFacturas .mc-count-line .v{font-weight:800;font-size:calc(1rem + 2pt);line-height:1;}
/* (INACTIVA la variante previa más genérica)
#modalCargaFacturas .mc-count-line{
  display:flex !important;align-items:center;justify-content:space-between;gap:.5rem;margin:.35rem 0 .35rem;
}
#modalCargaFacturas .mc-count-line .k{font-weight:600;color:#6c757d;}
#modalCargaFacturas .mc-count-line .v{font-weight:800;}
*/

/* === 20) Modales mobile-first unificados ================================ */
@media (max-width:576px){
  .modal .modal-dialog{max-width:100% !important;margin:0 !important;}
  .modal .modal-content{
    height:100dvh !important;min-height:100dvh !important;
    height:100svh !important;min-height:100svh !important;
    height:var(--vh-mobile,100vh) !important;
    display:flex !important;flex-direction:column !important;
    overflow-y:auto !important;border-radius:0;padding-bottom:env(safe-area-inset-bottom,0);
    overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;
  }
  .modal .modal-header,.modal .modal-footer{position:static !important;top:auto !important;bottom:auto !important;z-index:auto !important;background:#fff;}
  .modal .modal-body{flex:0 0 auto !important;overflow:visible !important;max-height:none !important;}
  #modalFacturas .table-wrap,#modalCargaFacturas #cfGrid,#modalContenedores #mc-list{max-height:none !important;overflow:visible !important;}
  /* FIX específico MCF: desactivar sticky para que no tape la botonera */
  #modalCargaFacturas .cf-cell.cf-fixed{position:static !important;z-index:auto !important;top:auto !important;}
  #modalCargaFacturas .cf-row{position:relative;z-index:1;}
  #modalCargaFacturas .modal-footer{position:static !important;z-index:2;}
  /* Compactación MCF en móvil */
  #modalCargaFacturas .cf-row{ margin-bottom:.4rem; display:block; }
  #modalCargaFacturas .cf-cell{display:flex;align-items:center;justify-content:flex-start;padding:.45rem .65rem !important;min-height:44px !important;border:1px dashed #d9dee3;border-radius:.5rem;background:#fff;}
  #modalCargaFacturas .cf-cell .cf-num,#modalCargaFacturas .cf-cell .cf-nro{flex:1 1 auto;text-align:center;font-size:1.35rem;line-height:1.2;letter-spacing:.2px;}
  #modalCargaFacturas .cf-cell .btn,#modalCargaFacturas .cf-cell .btn-outline-danger{flex:0 0 auto;margin-left:auto;}
  #modalCargaFacturas .cf-cell .cf-tag{font-size:.72rem;}
  #modalCargaFacturas .cf-cell.cf-last{padding:.5rem .7rem;min-height:46px;}
}

/* === 21) Modal Facturas: contenedor ==================================== */
#modalFacturas .table-wrap{overflow:auto;-webkit-overflow-scrolling:touch;}
#modalFacturas #mf-grid{min-width:520px;}

/* === 22) Modal Contenedores ============================================ */
#modalContenedores .modal-dialog{max-width:720px;}
@media (max-width:768px){#modalContenedores .modal-dialog{max-width:100%;margin:.5rem;}}
#mc-header .mc-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;}
#mc-header .mc-label{flex:0 0 140px;color:#6c757d;font-weight:600;text-transform:uppercase;font-size:.85rem;}
#mc-header input{flex:1 1 auto;}
#mc-header input:focus{box-shadow:0 0 0 .2rem rgba(0,36,71,.1);border-color:#bcd;}
#mc-list{display:flex;flex-direction:column;gap:.5rem;max-height:60vh;overflow:auto;}
#mc-list .mc-item{padding:.55rem .75rem;border:1px solid #e5e7eb;border-radius:.35rem;font-size:1.05rem;background:#fff;}
#mc-list .mc-item--last{background:#0a3d2e;color:#fff;font-weight:700;}
#modalContenedores .modal-footer{position:sticky;bottom:0;background:#fff;z-index:99;}

/* === 23) Backdrop, stacking y blur de fondo ============================ */
.modal-backdrop{ z-index:1040 !important; }
.modal{ z-index:1050 !important; }
.modal-backdrop.show{ opacity:.75 !important; }
/* Blur del fondo cuando hay modal */
body.blur-bg > *:not(.modal):not(.modal-backdrop){filter:blur(2px) brightness(.85);transition:filter .15s ease;}
/* (INACTIVA la duplicación previa del mismo bloque)
   body.blur-bg > *:not(.modal):not(.modal-backdrop){
     filter: blur(2px) brightness(.85);
     transition: filter .15s ease;
   }
*/
/* SweetAlert sobre blur (ya unificado arriba) */
body.blur-bg > *:not(.modal):not(.modal-backdrop):not(.sweet-alert):not(.sweet-overlay):not(.swal2-container){
  filter: blur(2px) brightness(.85);
  transition: filter .15s ease;
}

/* === 24) Cabeceras numéricas: colores en MF ============================ */
#modalFacturas td.mf-hit,#modalFacturas td.mf-hit a{ background:#015314 !important; color:#fff !important; }

/* === 25) Otros ========================================================== */
.obj-line{display:block!important;width:100%;flex:0 0 100%!important;margin:.35rem 0 .5rem;color:#343a40}
.obj-line .k{font-weight:600;margin-right:.35rem}
#modalFacturas .mf-obj-line,#modalCargaFacturas .mc-obj-line{padding-left:.5rem}
