/* Módulos Documentos (galería) y Reportes (vista previa) — prefijos lbo-docs- / lbo-rep-. */

/* ════════════════════════ DOCUMENTOS ════════════════════════ */

/* Color por categoría: fondo de la miniatura (--c-bg) y tinta (--c-ink). */
[data-cat="CSF"]       { --c-bg: #E3F2FB; --c-ink: #0A6CA8; }
[data-cat="Contrato"]  { --c-bg: #ECEBFC; --c-ink: #4B44C4; }
[data-cat="OC"]        { --c-bg: #FDF0E1; --c-ink: #B45309; }
[data-cat="Factura"]   { --c-bg: #E3F5EC; --c-ink: #047857; }
[data-cat="Evidencia"] { --c-bg: #DFF3F6; --c-ink: #0E7490; }
[data-cat="Otro"]      { --c-bg: #EEF0F4; --c-ink: #5A5F73; }

.lbo-docs-ic-btn { width: 18px; height: 18px; }

.lbo-docs-cargando,
.lbo-rep-cargando { padding: 2rem; text-align: center; color: var(--lbo-gray-500); font-size: 15px; }

/* Filtros: buscador + chips */
.lbo-docs-filtros {
  display: grid;
  grid-template-columns: minmax(260px, 340px) 1fr;
  gap: 16px 24px;
  align-items: start;
  margin-bottom: 18px;
}
.lbo-docs-buscar, .lbo-docs-chips { min-width: 0; }
.lbo-docs-buscar-caja { position: relative; }
.lbo-docs-buscar-caja .lbo-input { width: 100%; box-sizing: border-box; }
.lbo-docs-buscar-ic {
  position: absolute; left: 13px; top: 50%; transform: translateY(-50%);
  width: 18px; height: 18px; color: var(--lbo-gray-400); pointer-events: none;
}
.lbo-docs-buscar-caja .lbo-input { padding-left: 40px; font-size: 15px; min-height: 44px; }
.lbo-docs-chips .lbo-label { margin-bottom: 6px; }
.lbo-docs-chips .ux-chip { min-height: 42px; }

/* Zona de arrastre */
.lbo-docs-drop {
  display: flex; align-items: center; justify-content: center; gap: 14px;
  padding: 22px 20px;
  margin-bottom: 22px;
  border: 2px dashed rgba(12, 132, 204, .35);
  border-radius: 18px;
  background: var(--lbo-white);
  color: var(--lbo-gray-700);
  cursor: pointer;
  transition: background .15s, border-color .15s, transform .15s;
}
.lbo-docs-drop:hover,
.lbo-docs-drop:focus-visible { border-color: var(--lbo-blue); background: #F5FAFE; outline: none; }
.lbo-docs-drop.encima { border-color: var(--lbo-blue); background: var(--lbo-blue-light); transform: scale(1.005); }
.lbo-docs-drop-ic {
  display: grid; place-items: center; flex-shrink: 0;
  width: 48px; height: 48px; border-radius: 14px;
  background: var(--lbo-blue-light); color: var(--lbo-blue);
}
.lbo-docs-drop-ic svg { width: 24px; height: 24px; }
.lbo-docs-drop-txt { display: flex; flex-direction: column; gap: 2px; }
.lbo-docs-drop-txt strong { font-size: 16px; color: var(--lbo-gray-900); }
.lbo-docs-drop-txt span { font-size: 14px; color: var(--lbo-gray-500); }

/* Galería */
.lbo-docs-cuenta { font-size: 14px; color: var(--lbo-gray-500); margin: 0 0 10px; }
.lbo-docs-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(232px, 1fr));
  gap: 16px;
}
.lbo-docs-card {
  display: flex; flex-direction: column;
  background: var(--lbo-white);
  border: 1px solid var(--lbo-gray-200);
  border-radius: 18px;
  padding: 10px;
  box-shadow: 0 10px 30px -22px rgba(19, 26, 46, .35);
  cursor: pointer;
  transition: transform .15s, box-shadow .15s, border-color .15s;
  min-width: 0;
}
.lbo-docs-card:hover,
.lbo-docs-card:focus-visible {
  transform: translateY(-2px);
  border-color: rgba(12, 132, 204, .35);
  box-shadow: 0 18px 40px -24px rgba(12, 132, 204, .45);
  outline: none;
}
.lbo-docs-thumb {
  position: relative;
  display: grid; place-items: center;
  height: 118px;
  border-radius: 12px;
  background: var(--c-bg);
  color: var(--c-ink);
  overflow: hidden;
}
.lbo-docs-thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lbo-docs-thumb img + .lbo-docs-thumb-ic { display: none; }
.lbo-docs-thumb-ic { width: 38px; height: 38px; }
.lbo-docs-ext {
  position: absolute; right: 8px; bottom: 8px;
  padding: 2px 8px; border-radius: 999px;
  background: rgba(255, 255, 255, .85);
  color: var(--c-ink);
  font-size: 11.5px; font-weight: 700; letter-spacing: .04em;
}
.lbo-docs-info { display: flex; flex-direction: column; gap: 6px; padding: 10px 4px 2px; flex: 1; min-width: 0; }
.lbo-docs-nombre {
  font-size: 15px; font-weight: 600; color: var(--lbo-gray-900); line-height: 1.3;
  overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  word-break: break-word;
}
.lbo-docs-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.lbo-docs-badge {
  padding: 3px 10px; border-radius: 999px;
  background: var(--c-bg); color: var(--c-ink);
  font-size: 13px; font-weight: 600; white-space: nowrap;
}
.lbo-docs-fecha { font-family: var(--lbo-font-mono); font-size: 13px; color: var(--lbo-gray-500); }
.lbo-docs-destino {
  font-size: 13.5px; color: var(--lbo-gray-600); line-height: 1.35;
  overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.lbo-docs-destino-tipo {
  display: block; font-size: 12px; font-weight: 700; letter-spacing: .05em;
  text-transform: uppercase; color: var(--lbo-gray-400);
}
.lbo-docs-acciones {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  margin-top: auto; padding-top: 8px; border-top: 1px solid var(--lbo-gray-100);
}
.lbo-docs-abrir { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; color: var(--lbo-blue); }
.lbo-docs-abrir svg { width: 16px; height: 16px; }
.lbo-docs-borrar {
  display: grid; place-items: center;
  width: 42px; height: 42px; border-radius: 12px;
  border: 1px solid transparent; background: none;
  color: var(--lbo-gray-400); cursor: pointer;
}
.lbo-docs-borrar svg { width: 18px; height: 18px; }
.lbo-docs-borrar:hover { color: #dc2626; background: #FEF2F2; border-color: #FECACA; }

.lbo-docs-vacio,
.lbo-rep-vacio { text-align: center; padding: 36px 20px; color: var(--lbo-gray-600); font-size: 15px; }
.lbo-docs-vacio p,
.lbo-rep-vacio p { margin: 0 0 12px; }
.lbo-docs-vacio-titulo,
.lbo-rep-vacio-titulo { font-size: 17px; font-weight: 700; color: var(--lbo-gray-900); }

/* Pantalla de subida */
.lbo-docs-modal-sub { font-size: 14px; color: var(--lbo-gray-500); margin: 2px 0 0; }
.lbo-docs-sec { margin-bottom: 26px; }
.lbo-docs-sec-titulo {
  display: flex; align-items: center; gap: 10px;
  font-size: 16px; font-weight: 700; color: var(--lbo-gray-900); margin: 0 0 12px;
}
.lbo-docs-sec-titulo span {
  display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%;
  background: var(--lbo-gradient); color: #fff; font-size: 13px;
}
.lbo-docs-subitem {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 14px; margin-bottom: 10px;
  border: 1px solid var(--lbo-gray-200); border-radius: 16px; background: var(--lbo-white);
}
.lbo-docs-subitem.con-error { border-color: #FECACA; background: #FFFBFB; }
.lbo-docs-subitem-ic {
  display: grid; place-items: center; flex-shrink: 0;
  width: 44px; height: 44px; border-radius: 12px; background: var(--c-bg); color: var(--c-ink);
}
.lbo-docs-subitem-ic svg { width: 22px; height: 22px; }
.lbo-docs-subitem-campos { flex: 1; min-width: 0; }
.lbo-docs-subitem-archivo { font-size: 14px; font-weight: 600; color: var(--lbo-gray-700); margin-bottom: 8px; word-break: break-all; }
.lbo-docs-subitem-archivo span { font-weight: 400; color: var(--lbo-gray-400); }
.lbo-docs-subitem-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 12px; }
.lbo-docs-subitem-error { color: #dc2626; font-size: 14px; margin: 4px 0 0; }
.lbo-docs-subitem-estado { font-size: 14px; color: var(--lbo-blue); font-weight: 600; margin: 6px 0 0; }
.lbo-docs-subitem-estado.ok { color: #059669; }
.lbo-docs-subitem-quitar {
  display: grid; place-items: center; flex-shrink: 0;
  width: 42px; height: 42px; border-radius: 12px; border: 1px solid var(--lbo-gray-200);
  background: var(--lbo-white); color: var(--lbo-gray-500); cursor: pointer;
}
.lbo-docs-subitem-quitar svg { width: 18px; height: 18px; }
.lbo-docs-subitem-quitar:hover { color: #dc2626; border-color: #FECACA; }
.lbo-docs-subvacio { font-size: 14px; color: var(--lbo-gray-500); }
.lbo-docs-ac { max-height: 320px; }
.lbo-docs-ac-item { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; }
.lbo-docs-ac-tipo {
  flex-shrink: 0; margin-top: 1px; padding: 2px 8px; border-radius: 999px;
  font-size: 12px; font-weight: 700; background: var(--lbo-gray-100); color: var(--lbo-gray-600);
}
.lbo-docs-ac-tipo[data-tipo="cliente"]  { background: var(--lbo-blue-light); color: var(--lbo-blue-dark); }
.lbo-docs-ac-tipo[data-tipo="contrato"] { background: #ECEBFC; color: #4B44C4; }
.lbo-docs-ac-tipo[data-tipo="servicio"] { background: #E3F5EC; color: #047857; }
.lbo-docs-ac-txt { display: flex; flex-direction: column; min-width: 0; }
.lbo-docs-ac-txt strong { font-size: 14.5px; color: var(--lbo-gray-900); font-weight: 600; }
.lbo-docs-ac-txt small { font-size: 13px; color: var(--lbo-gray-500); }
.lbo-docs-elegido {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px; border-radius: 14px;
  border: 1px solid rgba(12, 132, 204, .35); background: #F5FAFE;
}
.lbo-docs-elegido > svg { width: 22px; height: 22px; color: var(--lbo-blue); flex-shrink: 0; }
.lbo-docs-elegido > div { flex: 1; min-width: 0; }
.lbo-docs-elegido-tipo { font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--lbo-blue); }
.lbo-docs-elegido-titulo { font-size: 15px; font-weight: 600; color: var(--lbo-gray-900); }
.lbo-docs-elegido-sub { font-size: 13.5px; color: var(--lbo-gray-500); }
.lbo-docs-fecha-in { max-width: 240px; }

/* Celular: una columna; tarjeta horizontal (miniatura a la izquierda) */
@media (max-width: 767px) {
  .lbo-docs-filtros { grid-template-columns: 1fr; }
  .lbo-docs-chips .ux-chips { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
  .lbo-docs-chips .ux-chips::-webkit-scrollbar { display: none; }
  .lbo-docs-chips .ux-chip { flex-shrink: 0; }
  .lbo-docs-drop { justify-content: flex-start; padding: 16px; }
  .lbo-docs-grid { grid-template-columns: 1fr; gap: 12px; }
  .lbo-docs-card { flex-direction: row; gap: 12px; }
  .lbo-docs-thumb { width: 84px; height: auto; min-height: 96px; flex-shrink: 0; }
  .lbo-docs-thumb-ic { width: 30px; height: 30px; }
  .lbo-docs-ext { right: 50%; transform: translateX(50%); bottom: 6px; }
  .lbo-docs-info { padding: 2px 0; }
  .lbo-docs-subitem-grid { grid-template-columns: 1fr; }
  .lbo-docs-fecha-in { max-width: none; }
}

/* ════════════════════════ REPORTES ════════════════════════ */

.lbo-rep-ic-btn { width: 18px; height: 18px; }

.lbo-rep-filtros {
  background: var(--lbo-white);
  border: 1px solid var(--lbo-gray-200);
  border-radius: 18px;
  padding: 16px 18px;
  margin-bottom: 14px;
  box-shadow: 0 10px 30px -24px rgba(19, 26, 46, .3);
  display: flex; flex-direction: column; gap: 14px;
}
.lbo-rep-fila { display: flex; align-items: center; gap: 12px 16px; flex-wrap: wrap; }
.lbo-rep-fila > .lbo-label { margin: 0; min-width: 76px; }
.lbo-rep-fila .ux-chip { min-height: 42px; }
.lbo-rep-rango { display: grid; grid-template-columns: repeat(2, minmax(0, 220px)); gap: 14px; padding-left: 92px; }
.lbo-rep-rango[hidden] { display: none; }
.lbo-rep-btn-clientes {
  display: inline-flex; align-items: center; gap: 8px;
  min-height: 42px; padding: 8px 14px;
  border-radius: 999px; border: 1px solid var(--lbo-gray-300);
  background: var(--lbo-white); color: var(--lbo-gray-800);
  font-size: 14.5px; font-weight: 600; cursor: pointer;
}
.lbo-rep-btn-clientes svg { width: 18px; height: 18px; color: var(--lbo-blue); }
.lbo-rep-btn-clientes:hover { border-color: var(--lbo-blue); }
.lbo-rep-btn-clientes[aria-expanded="true"] .lbo-rep-flecha { transform: rotate(180deg); }
.lbo-rep-flecha { color: var(--lbo-gray-400); transition: transform .15s; }

.lbo-rep-panel-clientes { border-top: 1px solid var(--lbo-gray-100); padding-top: 14px; }
.lbo-rep-panel-clientes[hidden] { display: none; }
.lbo-rep-panel-top { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; margin-bottom: 10px; }
.lbo-rep-panel-buscar { flex: 1; min-width: 220px; max-width: 360px; }
.lbo-rep-panel-acciones { display: flex; gap: 8px; padding-top: 24px; }
.lbo-rep-lista-clientes {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 6px;
  max-height: 260px; overflow-y: auto;
}
.lbo-rep-cliente {
  display: flex; align-items: center; gap: 10px;
  min-height: 44px; padding: 8px 12px;
  border-radius: 12px; border: 1px solid var(--lbo-gray-200);
  font-size: 14.5px; color: var(--lbo-gray-800); cursor: pointer;
}
.lbo-rep-cliente:has(input:checked) { border-color: rgba(12, 132, 204, .45); background: #F5FAFE; }
.lbo-rep-cliente input { width: 20px; height: 20px; accent-color: var(--lbo-blue); flex-shrink: 0; cursor: pointer; }

.lbo-rep-mostrando { font-size: 14px; color: var(--lbo-gray-500); margin: 0 0 12px; min-height: 20px; }
.lbo-rep-mostrando strong { color: var(--lbo-gray-800); }

#rpt-resultado { transition: opacity .15s; }
#rpt-resultado.lbo-rep-actualizando { opacity: .5; pointer-events: none; }

.lbo-rep-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 16px; }
.lbo-rep-kpi {
  background: var(--lbo-white);
  border: 1px solid var(--lbo-gray-200);
  border-radius: 18px;
  padding: 16px 18px;
  box-shadow: 0 10px 30px -24px rgba(19, 26, 46, .3);
  min-width: 0;
}
.lbo-rep-kpi-titulo { font-size: 14px; color: var(--lbo-gray-500); font-weight: 500; }
.lbo-rep-kpi-valor { font-size: 28px; font-weight: 700; letter-spacing: -.02em; color: var(--lbo-gray-900); margin: 4px 0 2px; line-height: 1.15; }
.lbo-rep-kpi.positivo .lbo-rep-kpi-valor { color: #059669; }
.lbo-rep-kpi.alerta .lbo-rep-kpi-valor { color: #B45309; }
.lbo-rep-kpi-sub { font-size: 13px; color: var(--lbo-gray-500); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.lbo-rep-cuerpo { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: start; }
.lbo-rep-cuerpo.con-grafica { grid-template-columns: 1fr; }
@media (min-width: 1800px) {
  .lbo-rep-cuerpo.con-grafica { grid-template-columns: minmax(360px, 0.7fr) 1.6fr; }
}
.lbo-rep-card-titulo { font-size: 16px; font-weight: 700; color: var(--lbo-gray-900); margin-bottom: 12px; }
.lbo-rep-grafica { position: relative; height: 240px; }
.lbo-rep-tabla .lbo-badge { white-space: nowrap; }
.lbo-rep-tabla-card { padding-bottom: 8px; min-width: 0; }
.lbo-rep-tabla { width: 100%; }
.lbo-rep-tabla th.num, .lbo-rep-tabla td.num { text-align: right; white-space: nowrap; }
.lbo-rep-tabla td { font-size: 14px; vertical-align: middle; }
.lbo-rep-tabla td.fuerte { font-weight: 700; color: var(--lbo-gray-900); }
.lbo-rep-tabla tfoot td { font-weight: 700; color: var(--lbo-gray-900); border-top: 2px solid var(--lbo-gray-200); background: var(--lbo-gray-50); }
.lbo-rep-cli { font-weight: 600; color: var(--lbo-gray-900); font-size: 14.5px; }
.lbo-rep-cli-sub { font-size: 13px; color: var(--lbo-gray-400); }
.lbo-rep-desglose { color: var(--lbo-gray-600); }

.lbo-rep-tarjeta-total { font-size: 18px; font-weight: 700; color: var(--lbo-gray-900); white-space: nowrap; }
.lbo-rep-par { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.lbo-rep-par span { color: var(--lbo-gray-500); }

@media (max-width: 900px) {
  .lbo-rep-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .lbo-rep-filtros { padding: 14px; }
  /* nowrap: en columna con wrap, cada renglón toma el ancho de sus chips y la página se sale a lo ancho. */
  .lbo-rep-fila { flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 8px; }
  .lbo-rep-fila .ux-chips { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
  .lbo-rep-fila .ux-chips::-webkit-scrollbar { display: none; }
  .lbo-rep-fila .ux-chip { flex-shrink: 0; }
  .lbo-rep-rango { padding-left: 0; grid-template-columns: 1fr 1fr; }
  .lbo-rep-btn-clientes { justify-content: flex-start; }
  .lbo-rep-btn-clientes .lbo-rep-flecha { margin-left: auto; }
  .lbo-rep-panel-acciones { padding-top: 0; width: 100%; }
  .lbo-rep-panel-acciones .lbo-btn { flex: 1; justify-content: center; }
  .lbo-rep-lista-clientes { grid-template-columns: 1fr; }
  .lbo-rep-kpis { gap: 10px; }
  .lbo-rep-kpi { padding: 13px 14px; }
  .lbo-rep-kpi-valor { font-size: 22px; }
  .lbo-rep-kpi-sub { white-space: normal; }
  .lbo-rep-grafica { height: 220px; }
  .lbo-rep-tabla-card { background: none; border: none; box-shadow: none; padding: 0; }
}
@media (max-width: 767px) {
  .lbo-docs-subitem { padding: 12px; }
  .lbo-docs-subitem-ic { display: none; }
}
