/* ══════════════════════════════════════════════════════════════════════════
   QUICK PRO LITE — MODO TELEFONO (hasta 767 px)
   CDP Consultores · 2026-09-15

   Escritorio y tablet NO cambian: TODAS las reglas de interfaz van dentro de
   @media (max-width: 767px). Fuera de ese bloque solo se esconden los
   elementos nuevos que crea quickpro-movil.js (barra inferior, pestañas del
   POS, boton "volver a la lista"), para que en escritorio no existan.

   Se carga DESPUES de quickpro-lite.css (plantilla.php). Muchas reglas repiten
   el selector de quickpro-lite.css (misma especificidad): gana por ir despues.
   Para quitar el modo telefono: borrar el <link> y el <script> de plantilla.php.
   ══════════════════════════════════════════════════════════════════════════ */

/* Elementos del modo telefono: ocultos en escritorio y tablet */
.qpm-barra, .qpm-pos-tabs, .qpm-volver, .qpm-velo, .qpm-cajon-cab, .qpm-modal-cab, .qpm-paso, .qpm-ir-carrito, .qpm-btn-escaner { display: none; }

/* ══════════════ ESCANER CON CAMARA (quickpro-movil.js) ══════════════
   Solo se abre desde el boton del telefono; va fuera del @media porque el
   panel esta oculto ([hidden]) hasta que se toca el boton. */
.qpm-esc { position: fixed; inset: 0; z-index: 2000; display: flex; flex-direction: column; background: #06140F; color: #fff; font-family: "Segoe UI", system-ui, -apple-system, Arial, sans-serif; }
.qpm-esc[hidden] { display: none !important; }
.qpm-esc-cam { position: relative; flex: 0 0 auto; height: 46vh; min-height: 250px; overflow: hidden; background: #000; }
.qpm-esc-cam video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.qpm-esc-cab { position: absolute; left: 0; right: 0; top: 0; z-index: 3; display: flex; align-items: center; gap: 10px; padding: calc(12px + env(safe-area-inset-top)) 12px 28px; background: linear-gradient(rgba(0,0,0,.65), transparent); }
.qpm-esc-titulo { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.qpm-esc-titulo b { font-size: 16px; font-weight: 600; letter-spacing: .02em; }
.qpm-esc-titulo small { font-size: 11.5px; color: rgba(255,255,255,.7); }
.qpm-esc-ico { flex: 0 0 auto; width: 42px; height: 42px; border: 0; border-radius: 50%; background: rgba(255,255,255,.16); color: #fff; font-size: 17px; display: inline-flex; align-items: center; justify-content: center; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.qpm-esc-ico.activo { background: #FFD24D; color: #3A2A00; }
.qpm-esc-ico[hidden] { display: none; }
/* Marco del codigo: esquinas + velo alrededor + linea laser */
.qpm-esc-marco { position: absolute; z-index: 2; left: 50%; top: 54%; width: min(78vw, 340px); height: 34%; min-height: 110px; transform: translate(-50%, -50%); border-radius: 18px; box-shadow: 0 0 0 100vmax rgba(0,0,0,.42); pointer-events: none; }
.qpm-esc-marco i { position: absolute; width: 30px; height: 30px; border: 4px solid #3FE0A8; }
.qpm-esc-marco i:nth-child(1) { left: -2px; top: -2px; border-right: 0; border-bottom: 0; border-radius: 18px 0 0 0; }
.qpm-esc-marco i:nth-child(2) { right: -2px; top: -2px; border-left: 0; border-bottom: 0; border-radius: 0 18px 0 0; }
.qpm-esc-marco i:nth-child(3) { left: -2px; bottom: -2px; border-right: 0; border-top: 0; border-radius: 0 0 0 18px; }
.qpm-esc-marco i:nth-child(4) { right: -2px; bottom: -2px; border-left: 0; border-top: 0; border-radius: 0 0 18px 0; }
.qpm-esc-marco b { position: absolute; left: 8%; right: 8%; top: 50%; height: 2px; border-radius: 2px; background: #3FE0A8; box-shadow: 0 0 12px 2px rgba(63,224,168,.8); animation: qpmLaser 1.8s ease-in-out infinite; }
@keyframes qpmLaser { 0%, 100% { transform: translateY(-38px); opacity: .55; } 50% { transform: translateY(38px); opacity: 1; } }
.qpm-esc.qpm-esc-ok .qpm-esc-marco i { border-color: #fff; }
.qpm-esc.qpm-esc-ok .qpm-esc-marco { box-shadow: 0 0 0 100vmax rgba(0,0,0,.42), inset 0 0 0 3px rgba(63,224,168,.9); }
.qpm-esc-ayuda { position: absolute; z-index: 3; left: 0; right: 0; bottom: 30px; text-align: center; font-size: 12.5px; color: rgba(255,255,255,.85); text-shadow: 0 1px 4px rgba(0,0,0,.6); }
/* Aviso de la ultima lectura */
.qpm-esc-aviso { position: absolute; z-index: 4; left: 12px; right: 12px; bottom: 30px; display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 14px; background: rgba(255,255,255,.96); color: #062821; font-size: 13.5px; box-shadow: 0 10px 30px rgba(0,0,0,.35); transform: translateY(12px); opacity: 0; transition: transform .2s ease, opacity .2s ease; }
.qpm-esc-aviso.ver { transform: none; opacity: 1; }
.qpm-esc-aviso i { flex: 0 0 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: #1BAF7A; font-size: 14px; }
.qpm-esc-aviso.error i { background: #E24B4A; }
.qpm-esc-aviso.espera i { background: #7A8A83; }
.qpm-esc-aviso span { flex: 1; min-width: 0; line-height: 1.25; }
.qpm-esc-aviso small { display: block; color: #7A8A83; font-size: 11.5px; }
/* Mensaje sin camara (sin HTTPS, permiso negado) */
.qpm-esc-sincam { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 70px 26px 20px; text-align: center; font-size: 14px; line-height: 1.4; color: rgba(255,255,255,.9); }
.qpm-esc-sincam[hidden] { display: none; }
.qpm-esc-sincam i { font-size: 38px; color: #FFD24D; }
.qpm-esc-sincam a { display: inline-block; margin-top: 4px; padding: 11px 18px; border-radius: 10px; background: #3FE0A8; color: #062821 !important; font-weight: 700; text-decoration: none !important; word-break: break-all; }
/* Hoja inferior: productos escaneados */
.qpm-esc-hoja { position: relative; flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; margin-top: -18px; border-radius: 22px 22px 0 0; background: #F4F4F2; color: #062821; box-shadow: 0 -10px 30px rgba(0,0,0,.3); z-index: 5; }
.qpm-esc-hoja::before { content: ""; align-self: center; width: 42px; height: 5px; margin: 8px 0 2px; border-radius: 3px; background: #D8DDD9; }
.qpm-esc-hoja-cab { display: flex; align-items: baseline; gap: 8px; padding: 6px 16px 10px; }
.qpm-esc-hoja-cab b { font-size: 15px; }
.qpm-esc-hoja-cab small { color: #7A8A83; font-size: 12px; }
.qpm-esc-hoja-cab .qpm-esc-cuenta { margin-left: auto; min-width: 26px; padding: 0 8px; border-radius: 13px; background: #0D4A3E; color: #fff; font-size: 12px; line-height: 24px; text-align: center; }
.qpm-esc-lista { flex: 1 1 auto; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; list-style: none; margin: 0; padding: 0 12px 10px; }
.qpm-esc-lista li { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; padding: 10px 12px; border-radius: 14px; background: #fff; border: 1px solid #E4E8E5; transition: background .4s ease, border-color .4s ease; }
.qpm-esc-lista li.nuevo { background: #E6F7F0; border-color: #3FA88F; animation: qpmEntra .35s ease; }
@keyframes qpmEntra { from { transform: translateY(-8px); opacity: 0; } to { transform: none; opacity: 1; } }
.qpm-esc-cant { flex: 0 0 auto; min-width: 38px; height: 38px; padding: 0 6px; border-radius: 12px; background: #E8F2EE; color: #0D4A3E; font-weight: 700; font-size: 15px; display: inline-flex; align-items: center; justify-content: center; }
.qpm-esc-lista li.nuevo .qpm-esc-cant { background: #1D8268; color: #fff; }
.qpm-esc-prod { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.qpm-esc-prod b { font-size: 13.5px; font-weight: 600; line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.qpm-esc-prod small { font-size: 11.5px; color: #7A8A83; }
.qpm-esc-sub { flex: 0 0 auto; font-weight: 700; font-size: 14px; color: #0D4A3E; white-space: nowrap; }
.qpm-esc-vacio { padding: 26px 20px; text-align: center; color: #7A8A83; font-size: 13px; }
.qpm-esc-vacio i { display: block; margin-bottom: 8px; font-size: 30px; color: #C9D3CE; }
.qpm-esc-pie { display: flex; align-items: center; gap: 10px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid #E4E8E5; }
.qpm-esc-total { display: flex; flex-direction: column; min-width: 0; }
.qpm-esc-total small { font-size: 10.5px; font-weight: 700; letter-spacing: .08em; color: #7A8A83; }
.qpm-esc-total b { font-size: 21px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.qpm-esc-listo { margin-left: auto; height: 50px; padding: 0 22px; border: 0; border-radius: 14px; background: #1D8268; color: #fff; font-size: 15px; font-weight: 700; letter-spacing: .03em; display: inline-flex; align-items: center; gap: 8px; }
.qpm-esc-listo:active { background: #0D4A3E; }
body.qpm-esc-abierto { overflow: hidden; }

/* ══════════════ VISOR DEL COMPROBANTE (quickpro-movil.js) ══════════════
   Se usa en el telefono y con la app instalada: el PDF se ve DENTRO de la app.
   Lo crea el JS, por eso va fuera del @media. */
.qpm-pdf { position: fixed; inset: 0; z-index: 2100; display: flex; flex-direction: column; background: #1E1E1E; }
.qpm-pdf-cab { display: flex; align-items: center; gap: 10px; padding: calc(8px + env(safe-area-inset-top)) 12px 8px; background: #0D4A3E; color: #fff; }
.qpm-pdf-cab b { flex: 1; min-width: 0; font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qpm-pdf-ico { flex: 0 0 auto; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(255,255,255,.14); color: #fff; font-size: 17px; }
.qpm-pdf iframe { flex: 1 1 auto; width: 100%; border: 0; background: #1E1E1E; }
.qpm-pdf-pie { display: flex; gap: 8px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid var(--qp-borde, #E4E8E5); }
.qpm-pdf-btn {
  flex: 1 1 0; min-height: 48px; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border: 1px solid var(--qp-borde-2, #D8DDD9); border-radius: 12px; background: #fff; color: var(--qp-tinta, #062821) !important;
  font-size: 14px; font-weight: 700; text-decoration: none !important;
}
.qpm-pdf-btn[hidden] { display: none; }
.qpm-pdf-btn .fa-whatsapp { color: #25D366; font-size: 18px; }
.qpm-pdf-descargar { background: linear-gradient(135deg, #1D8268, #0D4A3E); border: 0; color: #fff !important; }
.qpm-pdf-btn:active { transform: scale(.985); }

/* ══════════════ AVISO "INSTALAR APLICACION" (quickpro-instalar.js) ══════════════
   Tarjeta tipo notificacion que baja desde arriba. Solo la crea el JS en el telefono. */
.qpl-inst {
  position: fixed; z-index: 1900; left: 10px; right: 10px; top: calc(10px + env(safe-area-inset-top));
  max-width: 460px; margin: 0 auto; padding: 14px 14px 12px; border-radius: 18px;
  background: rgba(255,255,255,.97); color: #062821; font-family: "Segoe UI", system-ui, -apple-system, Arial, sans-serif;
  box-shadow: 0 18px 50px rgba(6,40,33,.35), 0 0 0 1px rgba(13,74,62,.08);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  transform: translateY(calc(-100% - 30px)); opacity: 0; transition: transform .38s cubic-bezier(.2,.9,.25,1.15), opacity .25s ease;
}
.qpl-inst.qpl-inst-cab { top: calc(60px + env(safe-area-inset-top)); }
.qpl-inst.ver { transform: none; opacity: 1; }
.qpl-inst-cerrar { position: absolute; top: 6px; right: 8px; width: 30px; height: 30px; border: 0; border-radius: 50%; background: transparent; color: #7A8A83; font-size: 22px; line-height: 1; }
.qpl-inst-fila { display: flex; align-items: center; gap: 12px; padding-right: 22px; }
.qpl-inst-logo { flex: 0 0 56px; width: 56px; height: 56px; border-radius: 14px; box-shadow: 0 6px 16px rgba(13,74,62,.3); }
.qpl-inst-texto { display: flex; flex-direction: column; min-width: 0; }
.qpl-inst-texto small { font-size: 10px; font-weight: 700; letter-spacing: .1em; color: #1D8268; }
.qpl-inst-texto b { font-size: 17px; font-weight: 700; line-height: 1.2; color: #062821; }
.qpl-inst-texto span { font-size: 12.5px; line-height: 1.35; color: #52615C; margin-top: 2px; }
.qpl-inst-botones { display: flex; gap: 8px; margin-top: 12px; }
.qpl-inst-botones button { flex: 1 1 0; height: 44px; border-radius: 12px; font-size: 14px; font-weight: 700; }
.qpl-inst-no { border: 1px solid #D8DDD9; background: #fff; color: #52615C; }
.qpl-inst-si { border: 0; background: linear-gradient(135deg, #1D8268, #0D4A3E); color: #fff; box-shadow: 0 6px 16px rgba(13,74,62,.3); }
.qpl-inst-si i { margin-right: 6px; }
.qpl-inst-si:active, .qpl-inst-no:active { transform: scale(.98); }
.qpl-inst-pasos { margin-top: 12px; padding: 10px 12px; border-radius: 12px; background: #E8F2EE; font-size: 13.5px; color: #0D4A3E; text-align: center; }
.qpl-inst-ico-ios { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; margin: 0 2px; border-radius: 7px; background: #fff; color: #2A78D6; vertical-align: middle; box-shadow: 0 1px 3px rgba(0,0,0,.12); }

@media (max-width: 767px) {

  /* ══════════════ 1. BASE ══════════════ */
  body.qp { -webkit-tap-highlight-color: rgba(29,130,104,.15); }
  body.qp .super-contenedor { overflow-x: clip; }   /* clip: no rompe position:sticky */
  /* 16 px en los campos: el telefono no hace zoom al escribir */
  body.qp input.form-control, body.qp select.form-control, body.qp textarea.form-control,
  body.qp .select2-container .select2-selection, body.qp .select2-search__field,
  body.qp .qpt-campo input, body.qp .qpt-campo select { font-size: 16px !important; }
  body.qp .btn { min-height: 38px; }

  /* ══════════════ 2. CONTENIDO SIN LA FRANJA DEL MENU COMPACTO ══════════════
     quickpro-lite.css deja margin-left:56px (menu de iconos de escritorio);
     en el telefono el menu es un cajon que se abre encima. */
  body.qp .content-wrapper, body.qp .main-footer,
  body.qp.sidebar-collapse .content-wrapper, body.qp.sidebar-collapse .main-footer { margin-left: 0 !important; }
  body.qp.sidebar-open .content-wrapper, body.qp.sidebar-open .main-footer { transform: none !important; }
  body.qp .main-footer { padding: 10px 14px; font-size: 12px; }

  /* ══════════════ 3. ENCABEZADO EN UNA SOLA FILA (fijo arriba) ══════════════
     La barra (nav) pasa a display:contents: sus botones quedan en la misma
     fila que el logo y se ordenan con order. */
  body.qp .main-header {
    position: sticky !important; top: 0; z-index: 1030;
    display: flex; align-items: center; gap: 6px;
    height: 52px; min-height: 52px; padding: 0 6px 0 4px; max-height: none;
    padding-top: env(safe-area-inset-top);
  }
  body.qp .main-header .navbar,
  body.qp.sidebar-collapse .main-header .navbar { display: contents; margin: 0 !important; }
  body.qp .main-header .logo,
  body.qp.sidebar-collapse .main-header .logo {
    order: 2; flex: 1 1 auto; min-width: 0; width: auto !important; height: 52px;
    float: none; padding: 0 4px; border-right: 0 !important; text-align: left;
    display: flex; align-items: center; line-height: 52px; font-size: 16px;
  }
  body.qp .main-header .logo .logo-mini { display: none !important; }
  body.qp .main-header .logo .logo-lg { display: inline-flex !important; min-width: 0; }
  body.qp .main-header .logo .qp-logo-lg b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
  body.qp .main-header .logo .qp-logo-lg img { width: 30px; height: 30px; }

  body.qp .main-header .btn-menup {
    order: 1; flex: 0 0 auto; width: 44px; height: 40px !important; margin: 0 !important; padding: 0 !important;
    display: inline-flex; align-items: center; justify-content: center;
  }
  body.qp .main-header .btn-modo-sistema { order: 3; flex: 0 0 auto; font-size: 9px !important; letter-spacing: .4px; padding: 3px 6px !important; }
  body.qp .main-header #tipocambio { order: 4; flex: 0 1 auto; max-width: 92px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; padding: 4px 6px; }
  body.qp .main-header .navbar-custom-menu { order: 5; flex: 0 0 auto; float: none; }
  body.qp .main-header .navbar-custom-menu > .navbar-nav { margin: 0; display: flex; }
  body.qp .main-header .navbar-custom-menu > .navbar-nav > li { float: none; position: static; }
  body.qp .main-header .navbar-custom-menu > .navbar-nav > li > a { padding: 0 10px; height: 52px; display: flex; align-items: center; line-height: 1; }
  body.qp .main-header .user-image { float: none; margin: 0; width: 28px; height: 28px; }
  /* Menus desplegables (campana, usuario): tarjeta flotante bajo el encabezado */
  body.qp .main-header .navbar-custom-menu .dropdown-menu {
    position: fixed !important; top: 56px !important; right: 8px !important; left: auto !important;
    width: min(320px, calc(100vw - 16px)) !important; max-height: calc(100vh - 140px); overflow-y: auto;
    background: #fff !important; border: 1px solid var(--qp-borde) !important; border-radius: 12px !important;
    box-shadow: 0 16px 40px rgba(6,40,33,.25) !important; float: none;
  }
  body.qp .main-header .navbar-custom-menu .dropdown-menu > li > a,
  body.qp .main-header .navbar-custom-menu .dropdown-menu .menu > li > a { color: var(--qp-tinta) !important; padding: 12px 16px; white-space: normal; }

  /* ══════════════ 4. MENU = CAJON LATERAL ══════════════ */
  body.qp .main-sidebar,
  body.qp.sidebar-collapse .main-sidebar {
    position: fixed !important; top: 0; bottom: 0; left: 0; z-index: 1045;
    width: 284px !important; max-width: 86vw; padding: 0 0 env(safe-area-inset-bottom) !important;
    transform: translateX(-105%) !important; transition: transform .22s ease;
    overflow-y: auto; -webkit-overflow-scrolling: touch; box-shadow: none;
  }
  body.qp.sidebar-open .main-sidebar { transform: none !important; box-shadow: 12px 0 40px rgba(0,0,0,.35) !important; }
  body.qp .main-sidebar .sidebar { height: auto !important; overflow: visible !important; padding-bottom: 24px !important; }
  body.qp.sidebar-open { overflow: hidden; }   /* sin desplazar la pagina de fondo */

  body.qp .qpm-velo { display: block; position: fixed; inset: 0; z-index: 1040; background: rgba(6,40,33,.45); opacity: 0; pointer-events: none; transition: opacity .2s ease; }
  body.qp.sidebar-open .qpm-velo { opacity: 1; pointer-events: auto; }

  body.qp .qpm-cajon-cab {
    display: flex; align-items: center; gap: 10px; padding: calc(12px + env(safe-area-inset-top)) 14px 12px;
    border-bottom: 1px solid rgba(255,255,255,.10); color: #fff;
  }
  body.qp .qpm-cajon-cab img { width: 36px; height: 36px; border-radius: 9px; }
  body.qp .qpm-cajon-cab div { flex: 1; min-width: 0; display: flex; flex-direction: column; }
  body.qp .qpm-cajon-cab b { font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #fff !important; }
  body.qp .qpm-cajon-cab small { font-size: 11px; color: rgba(255,255,255,.6) !important; }
  body.qp .qpm-cajon-cerrar { flex: 0 0 auto; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(255,255,255,.10); color: #fff; font-size: 18px; }

  /* Rotulos, flechas y submenus visibles (anula el menu de iconos de escritorio) */
  body.qp .qp-rail > li > a,
  body.qp.sidebar-collapse .qp-rail > li > a { justify-content: flex-start; gap: 14px; padding: 15px 16px !important; font-size: 13px !important; }
  body.qp .qp-rail > li > a > span,
  body.qp.sidebar-mini.sidebar-collapse .qp-rail > li:hover > a > span {
    display: inline !important; position: static !important; width: auto !important; height: auto !important;
    padding: 0 !important; margin: 0 !important; background: transparent !important; box-shadow: none !important; border-radius: 0 !important;
  }
  body.qp .qp-rail .qp-flecha,
  body.qp.sidebar-collapse .qp-rail .qp-flecha { display: inline-block !important; margin-left: auto; font-size: 13px; }
  body.qp .qp-grupo > .qp-submenu,
  body.qp.sidebar-collapse .qp-grupo > .qp-submenu,
  body.qp.sidebar-mini.sidebar-collapse .qp-grupo:hover > .qp-submenu {
    display: none !important; position: static !important; width: auto !important; box-shadow: none !important; border-radius: 0 !important;
  }
  body.qp .qp-grupo.qp-abierto > .qp-submenu,
  body.qp.sidebar-collapse .qp-grupo.qp-abierto > .qp-submenu,
  body.qp.sidebar-mini.sidebar-collapse .qp-grupo.qp-abierto:hover > .qp-submenu { display: block !important; background: rgba(0,0,0,.18) !important; }
  body.qp .sidebar-menu .qp-submenu > li > a { padding: 13px 16px 13px 54px !important; font-size: 14px !important; }

  /* ══════════════ 5. BARRA INFERIOR DE NAVEGACION ══════════════ */
  body.qp.qpm-con-barra { padding-bottom: calc(62px + env(safe-area-inset-bottom)); }
  body.qp .qpm-barra {
    display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 1035;
    background: #fff; border-top: 1px solid var(--qp-borde); box-shadow: 0 -4px 18px rgba(6,40,33,.08);
    padding-bottom: env(safe-area-inset-bottom);
  }
  body.qp .qpm-barra a, body.qp .qpm-barra button {
    flex: 1 1 0; min-width: 0; height: 60px; border: 0; background: transparent;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
    color: var(--qp-muted) !important; font-size: 10.5px; font-weight: 600; letter-spacing: .02em; text-decoration: none !important;
  }
  body.qp .qpm-barra i { font-size: 19px; }
  body.qp .qpm-barra span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.qp .qpm-barra .activo { color: var(--qp-medio) !important; }
  body.qp .qpm-barra .activo i { transform: translateY(-1px); }
  body.qp.sidebar-open .qpm-barra { visibility: hidden; }

  /* ══════════════ 6. FICHAS Y CAJAS ══════════════ */
  body.qp .content { padding: 10px; }
  body.qp .content-header { padding: 10px 10px 0; }
  body.qp .box-body { padding: 10px; }
  body.qp .container-fluid { padding-left: 10px; padding-right: 10px; }
  /* Bootstrap 3 desplaza las tablas en su contenedor; plantilla.css lo anulaba (overflow-x: inherit)
     y las tablas se salian de la pantalla. El resumen del POS (.qp-totales-full) se deja como esta. */
  body.qp .table-responsive { overflow-x: auto !important; -webkit-overflow-scrolling: touch; border: 0; margin-bottom: 10px; }
  body.qp[data-ruta="pos"] .qp-totales-full .table-responsive { overflow: visible !important; }
  body.qp .dataTables_wrapper { overflow-x: auto; }
  body.qp .dataTables_wrapper .dataTables_filter input { width: 100%; margin-left: 0; }
  body.qp .dataTables_wrapper .dataTables_filter label { width: 100%; }

  /* Pestañas y filtros que no caben: fila con desplazamiento horizontal */
  body.qp .contenedor-radios { display: flex; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
  body.qp .contenedor-radios label { flex: 0 0 auto; white-space: nowrap; }
  body.qp .qpv-tabs, body.qp .qpfd-tipos { overflow-x: auto; flex-wrap: nowrap; margin-left: 0; margin-right: 0; }
  body.qp .qpv-tabs button, body.qp .qpfd-tipos button { flex: 0 0 auto; white-space: nowrap; }
  body.qp .qpfd-filtros > * { flex: 1 1 100%; min-width: 0 !important; }
  body.qp .contenedor-btn-reportes { justify-content: flex-start; flex-wrap: wrap; }

  /* ══════════════ 7. PANTALLAS DE TARJETAS DE CADA MODULO ══════════════ */
  body.qp .qp-modulo { min-height: 0; }
  body.qp .qp-mod-cabecera { padding: 14px 16px 12px; }
  body.qp .qp-mod-cabecera h1 { font-size: 19px; }
  body.qp .qp-mod-cabecera p { font-size: 12px; }
  body.qp .qp-mod-usuario { padding: 10px 16px; font-size: 13px; }
  body.qp .qp-mod-tarjetas { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 14px 12px; }
  body.qp .qp-tarjeta { height: auto; min-height: 118px; padding: 0 8px 12px; border-radius: 10px; border-top-width: 5px; }
  body.qp .qp-tarjeta:hover { transform: none; }
  body.qp .qp-tarjeta-icono { font-size: 26px; margin: 18px 0 8px; }
  body.qp .qp-tarjeta-titulo { font-size: 12.5px; }
  body.qp .qp-tarjeta-sub { font-size: 10.5px; margin-top: 4px; }
  body.qp .qp-tarjeta-contador { top: 6px; right: 6px; font-size: 11px; }
  body.qp .qp-mod-pie { padding: 10px 16px; font-size: 12px; }

  /* ══════════════ 8. TABLERO (inicio) ══════════════ */
  body.qp #qp-tablero { padding: 10px; }
  body.qp #qp-tablero .qpt-barra { gap: 10px; margin-bottom: 12px; }
  body.qp #qp-tablero .qpt-acciones { width: 100%; }
  body.qp #qp-tablero .qpt-acciones > .btn { flex: 1 1 0; }
  body.qp #qp-tablero .qpt-sucursal { flex: 1 1 100%; width: 100%; }
  body.qp #qp-tablero .qpt-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  body.qp #qp-tablero .kpi { padding: 10px 12px 6px; }
  body.qp #qp-tablero .kpi:hover { transform: none; }
  body.qp #qp-tablero .kpi .val { font-size: 17px; overflow: hidden; text-overflow: ellipsis; }
  body.qp #qp-tablero .qpt-charts { grid-auto-rows: 240px; }
  body.qp #qp-tablero .vsdev .dat { min-width: 0; }

  /* ══════════════ 9. FICHAS MAESTRO-DETALLE (clientes, proveedores, productos, categorias) ══════════════
     Lista a pantalla completa; al abrir un registro la ficha ocupa la pantalla
     y aparece "Volver a la lista". */
  body.qp .qp-terceros { padding: 0 !important; }
  body.qp .qpt-cabecera { border-radius: 0; padding: 12px 14px; gap: 12px; }
  body.qp .qpt-cabecera h2 { font-size: 16px; }
  body.qp .qpt-cabecera p { font-size: 12px; }
  body.qp .qpt-icono { width: 38px; height: 38px; font-size: 18px; }
  body.qp .qpt-cuerpo { display: block; min-height: 0; border: 0; border-radius: 0; }
  body.qp .qpt-lista { border-right: 0; border-bottom: 0; }
  body.qp .qpt-buscar { position: sticky; top: 52px; z-index: 5; background: #F8FAF8; padding: 10px; }
  body.qp .qpt-filtro button { padding: 8px 0; font-size: 13px; }
  body.qp .qpt-items { max-height: none !important; overflow: visible; }
  body.qp .qpt-item { padding: 12px; }
  body.qp .qpt-cuerpo:not(:has(.qpt-ficha form:not([hidden]))) .qpt-ficha { display: none; }
  body.qp .qpt-cuerpo:has(.qpt-ficha form:not([hidden])) .qpt-lista { display: none; }
  body.qp .qpt-ficha { padding: 10px 12px 16px; }
  body.qp .qpm-volver {
    display: flex; align-items: center; gap: 8px; width: 100%; margin: 0 0 8px; padding: 10px 4px;
    border: 0; border-bottom: 1px solid var(--qp-borde); background: transparent; color: var(--qp-medio); font-weight: 700; font-size: 14px;
  }
  body.qp .qpt-grid { grid-template-columns: 1fr; }
  body.qp .qpt-doble, body.qp .qpt-triple { grid-column: auto; }
  body.qp .qpt-numero { flex-wrap: wrap; }
  body.qp .qpt-numero .form-control { flex: 1 1 140px; }
  body.qp .qpt-pie { bottom: 0; margin-left: -12px; margin-right: -12px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); box-shadow: 0 -6px 16px rgba(6,40,33,.06); }
  body.qp.qpm-con-barra .qpt-pie { bottom: calc(60px + env(safe-area-inset-bottom)); }
  body.qp .qpt-pie .btn, body.qp .qpt-cancelar, body.qp .qpt-guardar { flex: 1 1 0; min-width: 0 !important; min-height: 46px; }
  body.qp .qpc-eliminar { flex: 0 0 auto !important; }
  body.qp .qpp-tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  body.qp .qpp-tabs button { padding: 12px 10px; font-size: 12px; }
  body.qp .qpp-general, body.qp .qpc-general, body.qp .qpp-series { grid-template-columns: 1fr; }
  body.qp .qpp-imagen, body.qp .qpc-imagen { max-width: 220px; }
  body.qp .qpp-stock > div:first-child, body.qp .qpp-stock-inicial { min-width: 0; flex: 1 1 100%; }
  body.qp .qp-imp-lista { grid-template-columns: 1fr; }
  body.qp .qp-imp-ibua { grid-template-columns: 1fr; }
  body.qp .qp-pais-caja { padding: 12px; }
  body.qp .qp-pais-select { flex: 1 1 100%; }
  body.qp .qp-pais-operacion { padding: 12px 10px 4px !important; }

  /* Nota credito / documentos DIAN */
  body.qp .qpnc-totales { width: 100%; }
  body.qp .qpnc-totales > div { flex: 1 1 calc(50% - 8px); min-width: 0; }
  body.qp .qpnc-totales .qpnc-total { flex-basis: 100%; min-width: 0; }
  body.qp .qpnc-botones { width: 100%; }
  body.qp .qpnc-botones .btn { flex: 1 1 0; }
  body.qp .qpfd-msg { max-width: 160px; }

  /* Nota credito de Colombia (nota-credito-co.php): cabecera 2x2, lineas como TARJETAS y GUARDAR fijo abajo.
     Columnas: 1 marcar · 2 codigo · 3 descripcion · 4 facturado · 5 devuelto · 6 disponible · 7 precio · 8 a devolver · 9 total */
  body.qp .qpnc .box-header { padding: 12px 12px 4px; }
  body.qp .qpnc .box-header .qp-impuestos-ayuda { font-size: 12px; }
  body.qp .qpnc .box-body { padding: 8px 10px; }
  body.qp .qpnc-buscar .form-control { height: 46px; }
  body.qp .qpnc-buscar .btn { height: 46px; }
  body.qp .qpnc-cabecera { gap: 6px; }
  body.qp .qpnc-cabecera > div { padding: 6px 8px; }
  body.qp .qpnc-cabecera .qpnc-cliente { grid-column: 1 / -1; }
  body.qp .qpnc-motivo > [class*="col-"] { padding-left: 0; padding-right: 0; }
  body.qp .qpnc .table-responsive { overflow: visible !important; }
  body.qp .qpnc-tabla, body.qp .qpnc-tabla > tbody { display: block; width: 100%; }
  body.qp .qpnc-tabla > thead { display: block; }
  body.qp .qpnc-tabla > thead > tr { display: flex; align-items: center; gap: 8px; padding: 6px 2px; }
  body.qp .qpnc-tabla > thead > tr > th { display: none; border: 0 !important; padding: 0 !important; background: transparent !important; }
  body.qp .qpnc-tabla > thead > tr > th:first-child { display: flex; align-items: center; gap: 8px; width: auto !important; font-size: 12px; color: var(--qp-tinta-2) !important; }
  body.qp .qpnc-tabla > thead > tr > th:first-child::after { content: "Marcar todas las líneas"; }
  body.qp .qpnc-tabla > tbody > tr {
    position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, 1fr);
    grid-template-areas: "desc desc desc" "cod cod cod" "fact dev disp" "precio cant total";
    gap: 6px 10px; margin: 0 0 8px; padding: 10px 12px 10px 48px;
    background: #fff; border: 1px solid var(--qp-borde); border-radius: 10px;
  }
  body.qp .qpnc-tabla > tbody > tr:has(.qpncSel:checked) { border-color: var(--qp-medio); box-shadow: inset 4px 0 0 var(--qp-medio); }
  body.qp .qpnc-tabla > tbody > tr > td { display: block; padding: 0 !important; border: 0 !important; text-align: left !important; min-width: 0; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(1) { position: absolute; left: 12px; top: 12px; }
  body.qp .qpnc-tabla .qpncSel, body.qp #qpncTodas { width: 24px; height: 24px; margin: 0; accent-color: var(--qp-medio); }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(2) { grid-area: cod; font-size: 11.5px; color: var(--qp-muted); }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(3) { grid-area: desc; font-weight: 600; font-size: 14px; line-height: 1.25; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(3) small { font-weight: 400; color: var(--qp-muted); }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(4) { grid-area: fact; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(5) { grid-area: dev; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(6) { grid-area: disp; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(7) { grid-area: precio; align-self: end; padding-bottom: 10px !important; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(8) { grid-area: cant; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(9) { grid-area: total; text-align: right !important; font-weight: 700; font-size: 15px; color: var(--qp-oscuro); align-self: end; padding-bottom: 10px !important; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(n+4)::before { display: block; flex: 1 1 100%; margin-bottom: 2px; font-size: 10px; font-weight: 700; letter-spacing: .04em; color: var(--qp-muted); }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(4)::before { content: "FACTURADO"; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(5)::before { content: "DEVUELTO"; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(6)::before { content: "DISPONIBLE"; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(7)::before { content: "PRECIO"; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(8)::before { content: "A DEVOLVER"; }
  body.qp .qpnc-tabla > tbody > tr > td:nth-child(9)::before { content: "TOTAL"; }
  body.qp .qpnc-tabla .qpncCant { height: 40px; padding: 0 4px; font-size: 16px !important; text-align: center; }
  body.qp .qpnc-tabla td.qpm-cant { flex-wrap: wrap !important; }
  body.qp .qpnc-tabla td.qpm-cant > * { flex-shrink: 1; }
  body.qp .qpnc-tabla td.qpm-cant .qpm-paso { flex-basis: 34px; }
  body.qp .qpnc-pie { display: contents; }   /* contents: los botones pueden quedar fijos sobre toda la factura */
  body.qp .qpnc-totales { margin: 10px 0; }
  /* Solo los botones quedan fijos abajo (con los 5 totales la franja tapaba media pantalla) */
  body.qp .qpnc-botones { position: sticky; bottom: 0; z-index: 10; margin: 0 -10px; padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); background: rgba(255,255,255,.97); box-shadow: 0 -6px 16px rgba(6,40,33,.08); }
  body.qp .qpnc-totales > div:not(.qpnc-total) { padding: 4px 8px; }
  body.qp .qpnc-totales .qpnc-total b { font-size: 20px; }
  body.qp #qpncGuardar { flex: 2 1 0; min-height: 48px; font-size: 14px; white-space: normal; }
  body.qp #qpncLimpiar { min-height: 48px; }
  body.qp .qpnc-reembolso .form-control { font-size: 16px !important; }

  /* ══════════════ 10. DOCUMENTOS DE VENTA (factura, nota de venta, cotizacion, notas) ══════════════ */
  body.qp.qp-doc .dashboard-header button { font-size: 16px !important; padding: 10px 12px !important; }
  body.qp.qp-doc .dashboard-header .btns-dash a { margin: 4px !important; padding: 8px 10px !important; }
  /* Pestañas Factura / Nota de venta (menu-rapido.php): siempre visibles como fila, sin la hamburguesa */
  body.qp .dashboard-header .btns-dash { padding: 6px 8px !important; justify-content: flex-start !important; }
  body.qp .btns-dash #lblch, body.qp .btns-dash .btn-menur { display: none !important; }
  body.qp .btns-dash #contenedor-menur {
    position: static !important; transform: none !important; width: 100% !important;
    display: flex !important; gap: 6px; overflow-x: auto; scrollbar-width: none;
  }
  body.qp .btns-dash #contenedor-menur::-webkit-scrollbar { display: none; }
  body.qp.qp-doc .btns-dash #contenedor-menur a,
  body.qp.qp-doc .btns-dash #contenedor-menur a:nth-child(n) {
    flex: 1 0 auto; width: auto !important; margin: 0 !important; padding: 10px 12px !important; border-right: 0 !important;
    border-radius: 8px !important; text-align: center; white-space: nowrap; font-size: 13px !important;
  }
  body.qp[data-ruta="crear-factura"] .btns-dash #contenedor-menur a[href="crear-factura"],
  body.qp[data-ruta="crear-nota"] .btns-dash #contenedor-menur a[href="crear-nota"],
  body.qp[data-ruta="crear-boleta"] .btns-dash #contenedor-menur a[href="crear-boleta"] { background: var(--qp-medio) !important; border-color: var(--qp-medio) !important; }
  /* Barra de teclas F1…F9: una fila que se desliza con el dedo */
  body.qp.qp-doc .qp-teclas { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; gap: 6px; padding: 10px 0 6px; scrollbar-width: none; }
  body.qp.qp-doc .qp-teclas::-webkit-scrollbar { display: none; }
  body.qp.qp-doc .qp-teclas .qp-tecla-btn { flex: 0 0 auto; height: 40px; padding: 0 12px !important; border-radius: 20px !important; }
  /* ── GRILLA DE ITEMS en factura / nota de venta / cotizacion: cada item es una TARJETA ──
     Columnas (ControladorVentas y CarritoColombia): 1 codigo · 2 cantidad · 3 unidad ·
     4 descripcion · 5 precio · 6 valor unitario · 7 subtotal · 8 eliminar */
  body.qp.qp-doc:not([data-ruta="pos"]) .qp-grilla { height: auto !important; min-height: 150px !important; overflow: visible; border: 0; background: transparent; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items,
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody { display: block; width: 100%; background: transparent; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > thead { display: none !important; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
    grid-template-areas: "desc desc del" "cod cod cod" "cant precio total";
    gap: 6px 10px; align-items: end; margin: 0 0 8px; padding: 10px 12px;
    background: #fff; border: 1px solid var(--qp-borde); border-radius: 10px; box-shadow: 0 1px 3px rgba(13,74,62,.06);
  }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td {
    display: block; padding: 0 !important; border: 0 !important; background: transparent !important; box-shadow: none !important; text-align: left !important; min-width: 0;
  }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(1) { grid-area: cod; font-size: 11.5px; color: var(--qp-muted); }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(1)::before { content: "Cód. "; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(2) { grid-area: cant; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(3) { display: none; }   /* unidad: va en la ficha */
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(4) { grid-area: desc; font-size: 14.5px; font-weight: 600; color: var(--qp-tinta); line-height: 1.25; align-self: center; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(4) .qp-imp-linea { font-weight: 400; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(5) { grid-area: precio; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(6) { display: none; }   /* valor unitario sin impuesto */
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(7) { grid-area: total; text-align: right !important; font-size: 16px; font-weight: 700; color: var(--qp-oscuro); white-space: nowrap; padding-bottom: 8px !important; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(8) { grid-area: del; align-self: start; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:is(:nth-child(2), :nth-child(5), :nth-child(7))::before {
    display: block; margin-bottom: 3px; font-size: 10px; font-weight: 700; letter-spacing: .05em; color: var(--qp-muted); text-align: inherit;
  }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(2)::before { content: "CANTIDAD"; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(5)::before { content: "PRECIO"; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(7)::before { content: "SUBTOTAL"; font-weight: 700; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items td input { width: 100% !important; min-width: 0; height: 40px; padding: 0 8px; text-align: right; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items .btnEliminarItemCarro { width: 38px; height: 38px; padding: 0; border-radius: 8px !important; font-size: 15px; }
  body.qp.qp-doc:not([data-ruta="pos"]) #itemsP tr.qp-fila-sel { border-color: var(--qp-medio); box-shadow: inset 4px 0 0 var(--qp-medio); }
  body.qp.qp-doc:not([data-ruta="pos"]) #itemsP tr.qp-fila-sel td { background: transparent !important; box-shadow: none !important; }
  body.qp.qp-doc:not([data-ruta="pos"]) .qp-grilla-vacia { min-height: 170px !important; background: #fff; border: 1px dashed var(--qp-borde-2); border-radius: 10px; }
  body.qp.qp-doc:not([data-ruta="pos"]) .qp-grilla-vacia::after { top: 0; content: "Agregue productos con el botón AGREGAR"; }

  /* Cantidad con botones − / + (quickpro-movil.js) */
  /* carrito.css pinta TODO boton de la grilla como circulo rojo de 30 px y .formVenta input a 35 px / 14 px */
  body.qp .tabla-items .qpm-cant button.qpm-paso {
    width: 36px !important; height: 40px !important; padding: 0 !important; border-radius: 8px !important;
    background: var(--qp-fondo) !important; border: 1px solid var(--qp-borde-2) !important; color: var(--qp-oscuro) !important;
  }
  body.qp .formVenta .tabla-items td input, body.qp .formVenta .tabla-add td input { height: 40px !important; font-size: 16px !important; }
  body.qp .formVenta .tabla-items .btnEliminarItemCarro { width: 38px !important; height: 38px !important; border-radius: 8px !important; padding: 0 !important; }
  body.qp.qp-doc:not([data-ruta="pos"]) .tabla-items > tbody > tr > td:nth-child(4) { white-space: normal; overflow-wrap: anywhere; }
  body.qp .qpm-cant,
  body.qp .tabla-items > tbody > tr > td.qpm-cant,
  body.qp .tabla-add > tbody > tr > td.qpm-cant { display: flex !important; flex-wrap: wrap; align-items: stretch; gap: 4px; }
  body.qp td.qpm-cant::before { flex: 1 1 100%; }   /* rotulo CANTIDAD arriba */
  body.qp .qpm-cant input,
  body.qp.qp-doc .tabla-items td.qpm-cant input { width: auto !important; flex: 1 1 0; min-width: 0 !important; text-align: center !important; }
  body.qp .qpm-cant .qpm-paso {
    display: inline-flex; align-items: center; justify-content: center; flex: 0 0 36px; height: 40px; padding: 0;
    border: 1px solid var(--qp-borde-2); border-radius: 8px; background: var(--qp-fondo); color: var(--qp-oscuro); font-size: 18px; font-weight: 700; line-height: 1;
  }
  body.qp .qpm-cant .qpm-paso:active { background: var(--qp-seleccion); }

  /* Fila del escaner: campo del codigo a lo ancho y botones AGREGAR / NUEVO grandes */
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex { display: flex !important; flex-wrap: wrap; gap: 8px; margin: 0; padding: 4px 0 10px; }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex > .fa-barcode { display: none; }
  /* Boton ESCANEAR junto al campo del codigo (factura, nota de venta, cotizacion y POS) */
  body.qp .qpm-btn-escaner {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: 0 0 auto; height: 44px; padding: 0 14px; margin: 0;
    border: 0; border-radius: 10px; background: linear-gradient(135deg, #1D8268, #0D4A3E); color: #fff; font-size: 13px; font-weight: 700; letter-spacing: .03em;
    box-shadow: 0 4px 12px rgba(13,74,62,.3);
  }
  body.qp .qpm-btn-escaner i { font-size: 17px; }
  body.qp .qpm-btn-escaner:active { transform: scale(.97); }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex .qpm-btn-escaner { order: 1; }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto #searchpc { flex: 1 1 55% !important; min-width: 0; }   /* 55 %: Escanear al lado; Buscar y Nuevo bajan a la segunda linea */
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex .btn-agregar-carrito { flex-basis: 60% !important; }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto #searchpc { flex: 1 1 100%; order: 1; height: 44px !important; margin: 0 !important; padding: 0 12px; font-size: 16px !important; letter-spacing: 0 !important; font-weight: 400 !important; border: 1px solid var(--qp-borde-2) !important; border-radius: 8px !important; }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex .btn-agregar-carrito,
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex .btnproser {
    display: inline-flex !important; align-items: center; justify-content: center; gap: 8px; height: 46px !important; margin: 0 !important; border-radius: 8px !important; font-size: 14px !important; font-weight: 700 !important; white-space: nowrap;
  }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex .btn-agregar-carrito { order: 2; flex: 1 1 auto; }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex .btnproser { order: 3; flex: 0 0 auto; padding: 0 14px !important; font-size: 0 !important; gap: 0; }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex .btnproser i { font-size: 15px; margin-right: 6px; }
  body.qp.qp-doc:not([data-ruta="pos"]) .nuevoProducto .flex .btnproser::after { content: "Nuevo"; font-size: 14px; }

  /* ── VENTANA F1 "AGREGAR PRODUCTOS" (table-productos.php + dataTables.php dtaProductosVentas) ──
     Pantalla completa, buscador fijo arriba y cada producto como TARJETA.
     Columnas: 1 # · 2 codigo · 3 descripcion · 4 categoria · 5 stock · 6 cantidad · 7 precio · 8 por mayor · 9 agregar · 10 herramientas */
  body.qp #modalProductosVenta:has(.productosCar) { padding: 0 !important; }
  body.qp #modalProductosVenta:has(.productosCar) .modal-dialog { width: 100% !important; margin: 0 !important; min-height: 100%; }
  body.qp #modalProductosVenta:has(.productosCar) .modal-content { min-height: 100vh; min-height: 100dvh; border-radius: 0 !important; background: var(--qp-fondo) !important; overflow: visible !important; }   /* visible: buscador y Cerrar quedan fijos al desplazar */
  body.qp #modalProductosVenta:has(.productosCar) .modal-body { padding: 0; }
  body.qp #modalProductosVenta:has(.productosCar) .modal-body > .col-12 { padding: 0; }
  body.qp #modalProductosVenta:has(.productosCar) .qpm-modal-cab { display: flex; align-items: center; gap: 10px; padding: 12px 12px 12px 16px; background: var(--qp-oscuro); color: #fff; font-size: 16px; font-weight: 600; }
  body.qp .qpm-modal-cab span { flex: 1; }
  body.qp .qpm-modal-cab button { width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(255,255,255,.12); color: #fff; font-size: 18px; }
  /* Filtros: buscador a lo ancho + categoria; el "cuantos por pagina" se oculta (quickpro-movil.js pone 20) */
  body.qp #modalProductosVenta:has(.productosCar) .modal-body .row:first-of-type { position: sticky; top: 0; z-index: 5; margin: 0; padding: 10px 12px 4px; background: var(--qp-fondo); border-bottom: 1px solid var(--qp-borde); }
  body.qp #modalProductosVenta:has(.productosCar) .modal-body .row:first-of-type > .col-lg-12 { display: flex; flex-wrap: wrap; gap: 0 8px; padding: 0; }
  body.qp #modalProductosVenta:has(.productosCar) .modal-body .row:first-of-type [class*="col-md-"] { width: auto; float: none; padding: 0; }
  body.qp #modalProductosVenta:has(.productosCar) .modal-body .row:first-of-type .col-md-2 { display: none; }
  body.qp #modalProductosVenta:has(.productosCar) .modal-body .row:first-of-type .col-md-7 { order: 1; flex: 1 1 100%; }
  body.qp #modalProductosVenta:has(.productosCar) .modal-body .row:first-of-type .col-md-3 { order: 2; flex: 1 1 100%; }
  body.qp #modalProductosVenta:has(.productosCar) .form-group { margin-bottom: 8px; }
  body.qp #modalProductosVenta:has(.productosCar) #searchProductoV { height: 46px; }
  /* Lista de tarjetas */
  body.qp #modalProductosVenta:has(.productosCar) .productosCar { overflow: visible !important; margin: 0; padding: 10px 10px 0; }
  body.qp #modalProductosVenta:has(.productosCar) .tabla-add,
  body.qp #modalProductosVenta:has(.productosCar) .tabla-add > tbody { display: block; width: 100%; border: 0 !important; background: transparent !important; }
  body.qp #modalProductosVenta:has(.productosCar) .tabla-add > thead { display: none !important; }
  body.qp #modalProductosVenta:has(.productosCar) .tabla-add > tbody > tr { display: block; background: transparent !important; }
  body.qp #modalProductosVenta:has(.productosCar) .tabla-add > tbody > tr > td { display: block; border: 0 !important; padding: 0 !important; background: transparent !important; }
  body.qp #modalProductosVenta:has(.productosCar) .tabla-add > tbody > tr.contenedor-items {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr) auto;
    grid-template-areas: "desc desc stock" "cod cat herr" "precio cant add";
    gap: 6px 8px; align-items: center; margin: 0 0 8px; padding: 12px;
    background: #fff !important; border: 1px solid var(--qp-borde); border-radius: 12px; box-shadow: 0 1px 3px rgba(13,74,62,.06);
  }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td { min-width: 0; text-align: left !important; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(1),
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(8) { display: none !important; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(2) { grid-area: cod; font-size: 11.5px; color: var(--qp-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(3) { grid-area: desc; font-size: 15px; font-weight: 600; color: var(--qp-tinta); line-height: 1.25; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(4) { grid-area: cat; font-size: 11.5px; color: var(--qp-muted); text-align: right !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(5) { grid-area: stock; align-self: start; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(5) .btn-stock { min-width: 44px; padding: 3px 8px; border: 0; border-radius: 12px; font-size: 12px; font-weight: 700; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(5) .btn-stock::before { content: "Stock "; font-weight: 400; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(6) { grid-area: cant; flex-wrap: nowrap !important; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(3) { white-space: normal !important; overflow-wrap: anywhere; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(10) { justify-self: end; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(6) input { width: auto !important; flex: 1 1 0; min-width: 0; height: 40px; text-align: center; border: 1px solid var(--qp-borde-2); border-radius: 8px; font-size: 16px; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(7) { grid-area: precio; font-size: 17px; font-weight: 700; color: var(--qp-medio); white-space: nowrap; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(9) { grid-area: add; width: auto !important; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items > td:nth-child(10) { grid-area: herr; width: auto !important; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items .agregarProducto { width: 48px; height: 44px; border-radius: 10px !important; font-size: 18px; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items .vermasProductos { width: 40px; height: 44px; border-radius: 10px !important; }
  body.qp #modalProductosVenta:has(.productosCar) tr.contenedor-items .btn-group { display: flex; }
  /* Detalle de precios (Peru, boton herramientas) y fila del paginador: a lo ancho */
  body.qp #modalProductosVenta:has(.productosCar) .super-contenedor-precios { margin: -4px 0 10px; border-radius: 0 0 12px 12px; }
  body.qp #modalProductosVenta:has(.productosCar) .tabla-add td[colspan] { text-align: center !important; }
  body.qp #modalProductosVenta:has(.productosCar) .pagination { display: flex; flex-wrap: wrap; justify-content: center; margin: 6px 0 10px; }
  body.qp #modalProductosVenta:has(.productosCar) .pagination > li > a, body.qp #modalProductosVenta:has(.productosCar) .pagination > li > span { min-width: 40px; padding: 9px 10px; text-align: center; }
  /* Cerrar: fijo abajo */
  body.qp #modalProductosVenta:has(.productosCar) .modal-footer { position: sticky; bottom: 0; z-index: 6; margin: 0; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: #fff; box-shadow: 0 -6px 16px rgba(6,40,33,.08); }
  body.qp #modalProductosVenta:has(.productosCar) .modal-footer .btn { flex: 1 1 100%; min-height: 48px; }
  /* Boton F12 COBRAR + Anular: pegados abajo, a todo el ancho */
  body.qp.qp-doc .contenedor-btns-carrito,
  body.qp[data-pais="CO"][data-ruta="nueva-compra"] .contenedor-btns-carrito {
    position: sticky; bottom: 0; z-index: 20; gap: 8px; margin: 0 -10px !important; padding: 8px 10px calc(8px + env(safe-area-inset-bottom)) !important;
    background: rgba(244,244,242,.97) !important; box-shadow: 0 -6px 16px rgba(6,40,33,.08);
  }
  body.qp.qp-doc .btnGuardarVenta, body.qp.qp-doc .btnGuardarVentaPos,
  body.qp[data-pais="CO"][data-ruta="nueva-compra"] .btnGuardarCompra {
    flex: 1 1 auto; min-width: 0; min-height: 52px; font-size: 14px !important; letter-spacing: .2px; padding: 0 10px !important; white-space: normal; line-height: 1.2;
  }
  body.qp.qp-doc .btnEliminarCarro,
  body.qp[data-pais="CO"][data-ruta="nueva-compra"] .btnEliminarCarro { flex: 0 0 auto; min-height: 52px; padding: 0 14px !important; }
  body.qp.qp-doc .tabla-totales .op-total td { font-size: 20px !important; }
  body.qp.qp-doc .nuevoProducto .flex { flex-wrap: wrap; }
  body.qp.qp-doc .nuevoProducto .flex > * { max-width: 100%; }

  /* ══════════════ 11. POS EN TELEFONO: pestañas PRODUCTOS / CARRITO ══════════════ */
  body.qp[data-ruta="pos"] { padding-bottom: 58px; }
  body.qp[data-ruta="pos"] .qpm-pos-tabs {
    display: flex; position: sticky; top: 52px; z-index: 1020; gap: 6px; padding: 6px 8px;
    background: var(--qp-fondo); border-bottom: 1px solid var(--qp-borde);
  }
  body.qp[data-ruta="pos"] .qpm-pos-tabs button {
    flex: 1 1 0; min-width: 0; height: 44px; border: 1px solid var(--qp-borde-2); border-radius: 8px; background: #fff;
    color: var(--qp-tinta-2); font-weight: 700; font-size: 13px; display: flex; align-items: center; justify-content: center; gap: 6px;
  }
  body.qp[data-ruta="pos"] .qpm-pos-tabs button.qpm-salir { flex: 0 0 auto; padding: 0 12px; background: #fff; border-color: var(--qp-peligro); color: var(--qp-peligro); }
  body.qp[data-ruta="pos"] .qpm-pos-tabs button.qpm-salir:active { background: var(--qp-peligro); color: #fff; }
  body.qp[data-ruta="pos"] .qpm-pos-tabs button.activo { background: var(--qp-oscuro); border-color: var(--qp-oscuro); color: #fff; }
  body.qp[data-ruta="pos"] .qpm-pos-tabs .qpm-cuenta { min-width: 20px; padding: 0 6px; border-radius: 10px; background: var(--qp-alerta); color: var(--qp-alerta-txt); font-size: 11px; line-height: 20px; }
  body.qp[data-ruta="pos"] .qpm-pos-tabs .qpm-total { display: none; }   /* el total va en la barra "Ver carrito" y en el carrito; junto a Salir no cabia */
  body.qp[data-ruta="pos"].qpm-ver-productos .super-contenedor-formulario-pos { display: none !important; }
  body.qp[data-ruta="pos"].qpm-ver-carrito .super-contenedor-productos-pos { display: none !important; }
  /* pos.css arma el POS como una ventana FIJA de 100vw x 100vh con sus propias barras de desplazamiento.
     En el telefono la pagina desplaza normal: el encabezado y las pestañas quedan fijos arriba. */
  body.qp[data-ruta="pos"] .pos-contenedoor { position: relative !important; width: auto !important; height: auto !important; left: auto !important; background: var(--qp-fondo); }
  body.qp[data-ruta="pos"] .pos-contenedor-fluido { height: auto !important; overflow: visible !important; margin: 0 !important; padding: 0 !important; }
  body.qp[data-ruta="pos"] .rounded-pos { margin: 0 !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important; }
  body.qp[data-ruta="pos"] .rounded-pos > .box-body { padding: 6px 8px; }
  body.qp[data-ruta="pos"] .rounded-pos > .box-body > .row { margin: 0; }
  body.qp[data-ruta="pos"] .super-contenedor-productos-pos,
  body.qp[data-ruta="pos"] .super-contenedor-formulario-pos { height: auto !important; overflow: visible !important; padding: 0 !important; background: transparent; }
  body.qp[data-ruta="pos"] .inicio-pos { display: none !important; }   /* el logo del encabezado y el menu ya llevan al inicio */
  body.qp[data-ruta="pos"] .main-sidebar { display: block !important; }   /* pos.js lo esconde; en el telefono es el cajon */

  /* Documento: FACTURA | NOTA VENTA como control segmentado a lo ancho */
  body.qp[data-ruta="pos"] .container-comprobants-pos { display: flex; width: auto !important; height: auto !important; gap: 6px; margin: 8px 8px 0 !important; padding: 0; border-radius: 0 !important; }
  body.qp[data-ruta="pos"] .container-comprobants-pos label.btn { flex: 1 1 0; height: 40px !important; display: flex; align-items: center; justify-content: center; padding: 0 8px !important; margin: 0 !important; font-size: 12px !important; border-radius: 8px !important; }

  /* Buscador (el selector 20/50/100 se oculta: siempre 20 por pagina) */
  body.qp[data-ruta="pos"] .contenedor-productos-ventas { margin: 0 0 8px; }
  body.qp[data-ruta="pos"] .contenedor-productos-ventas > .col-lg-12 { padding: 0; }
  body.qp[data-ruta="pos"] .contenedor-productos-ventas .col-md-2 { display: none !important; }
  body.qp[data-ruta="pos"] .contenedor-productos-ventas .col-md-10 { width: 100%; padding: 0 !important; }
  body.qp[data-ruta="pos"] .contenedor-productos-ventas .form-group { margin: 0 !important; }
  body.qp[data-ruta="pos"] #searchProductoV { height: 46px !important; border-radius: 10px !important; padding: 0 14px; }
  body.qp[data-ruta="pos"] .qpm-busca-esc { display: flex; gap: 8px; }
  body.qp[data-ruta="pos"] .qpm-busca-esc #searchProductoV { flex: 1 1 auto; min-width: 0; width: auto !important; }
  body.qp[data-ruta="pos"] .qpm-busca-esc .qpm-btn-escaner { height: 46px; }

  /* CATEGORIAS: una fila de fichas que se desliza con el dedo; REGRESAR / INICIO y la ruta arriba */
  body.qp[data-ruta="pos"] .qp-panel-cat { margin: 0 0 10px; padding: 8px 0 8px 8px; border-radius: 12px; }
  body.qp[data-ruta="pos"] .qp-panel-cat-barra { padding-right: 8px; gap: 6px; min-height: 32px; }
  body.qp[data-ruta="pos"] .qp-panel-btn { height: 32px; padding: 0 12px; font-size: 11px; border-radius: 16px; }
  body.qp[data-ruta="pos"] .qp-panel-miga { font-size: 12px; }
  body.qp[data-ruta="pos"] .qp-panel-tiles {
    display: flex !important; grid-template-columns: none; gap: 8px; max-height: none; margin-top: 8px; padding: 0 8px 4px 0;
    overflow-x: auto; overflow-y: hidden; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; scrollbar-width: none;
  }
  body.qp[data-ruta="pos"] .qp-panel-tiles[hidden] { display: none !important; }
  body.qp[data-ruta="pos"] .qp-panel-tiles::-webkit-scrollbar { display: none; }
  body.qp[data-ruta="pos"] .qp-cat-tile { flex: 0 0 104px; width: 104px; height: 76px; font-size: 11.5px; scroll-snap-align: start; }
  body.qp[data-ruta="pos"] .qp-cat-tile:hover { transform: none; }
  body.qp[data-ruta="pos"] .qp-cat-tile i { font-size: 18px; }

  /* PRODUCTOS: tarjetas en 2 columnas (3 en telefonos grandes) con el mismo diseño de escritorio */
  body.qp[data-ruta="pos"] .productos-pos {
    display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px;
    height: auto !important; overflow: visible !important; padding: 0 !important; justify-content: stretch;
  }
  body.qp[data-ruta="pos"] .productos-pos > p, body.qp[data-ruta="pos"] .productos-pos > h3, body.qp[data-ruta="pos"] .productos-pos .paginador-pos { grid-column: 1 / -1; }
  body.qp[data-ruta="pos"] .productos-pos .productos-pos-venta {
    width: auto !important; height: auto !important; margin: 0 !important; padding: 8px 8px 56px !important;
    display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 4px; border-radius: 12px !important; overflow: hidden;
  }
  body.qp[data-ruta="pos"] .productos-pos .productos-pos-venta:hover { box-shadow: none !important; }
  body.qp[data-ruta="pos"] .productos-pos .productos-pos-venta * { margin: 0; }
  body.qp[data-ruta="pos"] .productos-pos .productos-pos-venta img.img-ps { width: 100% !important; height: 92px; object-fit: contain; border-radius: 8px; background: #fff; }
  body.qp[data-ruta="pos"] .productos-pos .descripcion-pos {
    min-height: 2.5em; font-size: 12px !important; line-height: 1.25; text-align: left !important;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  body.qp[data-ruta="pos"] .productos-pos .precio-uni-pos { height: auto !important; display: block; }
  body.qp[data-ruta="pos"] .productos-pos .precio-unitario { font-size: 16px !important; text-align: left !important; }
  body.qp[data-ruta="pos"] .productos-pos .btn-mas-menos { height: auto !important; display: block; }
  body.qp[data-ruta="pos"] .productos-pos .btn-mas-menos .input-group { display: flex; width: 100%; }
  body.qp[data-ruta="pos"] .productos-pos .productos-pos-venta .input-group span {
    flex: 0 0 38px; width: 38px !important; height: 38px; padding: 0; display: flex; align-items: center; justify-content: center; font-size: 18px; border-radius: 8px !important;
  }
  body.qp[data-ruta="pos"] .productos-pos .productos-pos-venta input.cantidad-number {
    flex: 1 1 0; width: auto !important; min-width: 0; height: 38px !important; margin: 0 4px !important; padding: 0 !important;
    border: 1px solid var(--qp-borde-2) !important; border-radius: 8px !important; font-size: 16px !important;
  }
  body.qp[data-ruta="pos"] .productos-pos .sin-stock { position: absolute; top: 8px; left: 8px; right: auto; width: auto !important; height: auto; z-index: 2; padding: 2px 8px; border-radius: 10px; font-size: 10px; font-weight: 700; }
  /* Boton AGREGAR a la vista (en escritorio aparece al pasar el mouse sobre la foto) */
  body.qp[data-ruta="pos"] .productos-pos .btn-agregar-ps-pos {
    display: flex !important; opacity: 1 !important; position: absolute; top: auto !important; left: 8px; right: 8px; bottom: 8px;
    width: auto !important; height: 40px !important; margin: 0 !important; border-radius: 8px; background: var(--qp-medio) !important; color: #fff;
    align-items: center; justify-content: center; gap: 8px; font-size: 13px; font-weight: 700; letter-spacing: .04em;
  }
  body.qp[data-ruta="pos"] .productos-pos .btn-agregar-ps-pos::after { content: "AGREGAR"; }
  body.qp[data-ruta="pos"] .productos-pos .btn-agregar-ps-pos i { width: auto; height: auto; padding: 0; background: transparent !important; font-size: 15px; }
  body.qp[data-ruta="pos"] .productos-pos .btn-agregar-ps-pos:active { background: var(--qp-oscuro) !important; }
  /* Camara / lapiz: pequeños arriba a la derecha */
  body.qp[data-ruta="pos"] .productos-pos .contenedor-menu-pos { top: 6px; right: 6px; height: auto; flex-direction: row; gap: 4px; padding: 0; }
  body.qp[data-ruta="pos"] .productos-pos .foto-pos, body.qp[data-ruta="pos"] .productos-pos .edit-pos { width: 30px; height: 30px; padding: 0; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; }
  body.qp[data-ruta="pos"] .productos-pos .formFotoPos { background: transparent; }
  body.qp[data-ruta="pos"] .paginador-pos .pagination { display: flex; flex-wrap: wrap; justify-content: center; margin: 8px 0; }
  body.qp[data-ruta="pos"] .paginador-pos .pagination > li > a, body.qp[data-ruta="pos"] .paginador-pos .pagination > li > span { min-width: 40px; padding: 9px 10px; text-align: center; }

  /* CARRITO: engranaje de opciones flotante (arriba a la derecha tapaba el encabezado) */
  body.qp[data-ruta="pos"] .super-contenedor-herramientas-pos { top: auto; right: 12px; bottom: 172px; width: 42px; height: 42px; z-index: 1025; }
  body.qp[data-ruta="pos"] .super-contenedor-herramientas-pos .btn-h-pos { position: static; width: 42px; height: 42px; padding: 0; }
  body.qp[data-ruta="pos"] .super-contenedor-herramientas-pos .btn-h-pos i {
    position: static; width: 42px; height: 42px; padding: 0; display: flex; align-items: center; justify-content: center; font-size: 17px;
    background: var(--qp-tinta-2) !important; box-shadow: 0 6px 18px rgba(6,40,33,.3);
  }
  body.qp[data-ruta="pos"] .contenedor-herramientas-pos { top: auto; bottom: 220px; right: 12px; max-width: calc(100vw - 24px); border-radius: 10px; overflow: hidden; box-shadow: 0 12px 30px rgba(0,0,0,.3); transform: translateX(120%); }
  body.qp[data-ruta="pos"] .contenedor-herramientas-pos label { padding: 13px 16px; font-size: 13px; }
  body.qp[data-ruta="pos"].qpm-ver-productos .super-contenedor-herramientas-pos { display: none; }

  /* CARRITO: cliente en una columna y cada item como TARJETA
     Columnas (CarritoColombia / ControladorVentas en POS): 1 codigo · 2 cantidad · 3 descripcion · 4 precio · 5 subtotal · 6 eliminar */
  body.qp[data-ruta="pos"] .formVenta legend { margin: 4px 0 6px !important; font-size: 14px !important; }
  body.qp[data-ruta="pos"] .formVenta .row { margin-left: 0; margin-right: 0; }
  body.qp[data-ruta="pos"] .formVenta [class*="col-md-"] { padding-left: 0; padding-right: 0; }
  body.qp[data-ruta="pos"] .nuevoProducto { margin: 0 !important; padding: 0 !important; }
  body.qp[data-ruta="pos"] .nuevoProducto .flex { display: flex !important; gap: 8px; padding: 4px 0 10px; }
  body.qp[data-ruta="pos"] .nuevoProducto .flex > .fa-barcode { display: none; }
  body.qp[data-ruta="pos"] #searchpcPos { flex: 1 1 auto; height: 44px !important; border-radius: 8px !important; font-size: 16px !important; letter-spacing: 0 !important; font-weight: 400 !important; }
  body.qp[data-ruta="pos"] .qp-grilla { height: auto !important; min-height: 150px !important; overflow: visible; border: 0; background: transparent; }
  body.qp[data-ruta="pos"] .tabla-items, body.qp[data-ruta="pos"] .tabla-items > tbody { display: block; width: 100%; background: transparent; }
  body.qp[data-ruta="pos"] .tabla-items > thead { display: none !important; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
    grid-template-areas: "desc desc del" "cod cod cod" "cant precio total";
    gap: 6px 10px; align-items: end; margin: 0 0 8px; padding: 10px 12px;
    background: #fff; border: 1px solid var(--qp-borde); border-radius: 10px; box-shadow: 0 1px 3px rgba(13,74,62,.06);
  }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td { display: block; padding: 0 !important; border: 0 !important; background: transparent !important; box-shadow: none !important; text-align: left !important; min-width: 0; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(1) { grid-area: cod; font-size: 11.5px; color: var(--qp-muted); }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(1)::before { content: "Cód. "; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(2) { grid-area: cant; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(3) { grid-area: desc; font-size: 14.5px; font-weight: 600; color: var(--qp-tinta); line-height: 1.25; white-space: normal; overflow-wrap: anywhere; align-self: center; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(3) .qp-imp-linea { font-weight: 400; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(4) { grid-area: precio; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(5) { grid-area: total; text-align: right !important; font-size: 16px; font-weight: 700; color: var(--qp-oscuro); white-space: nowrap; padding-bottom: 8px !important; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(6) { grid-area: del; align-self: start; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:is(:nth-child(2), :nth-child(4), :nth-child(5))::before { display: block; margin-bottom: 3px; font-size: 10px; font-weight: 700; letter-spacing: .05em; color: var(--qp-muted); flex: 1 1 100%; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(2)::before { content: "CANTIDAD"; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(4)::before { content: "PRECIO"; }
  body.qp[data-ruta="pos"] .tabla-items > tbody > tr > td:nth-child(5)::before { content: "SUBTOTAL"; }
  body.qp[data-ruta="pos"] #formVentaPos .tabla-items td input { width: 100% !important; min-width: 0; height: 40px !important; padding: 0 8px !important; font-size: 16px !important; text-align: right !important; border: 1px solid var(--qp-borde-2) !important; border-radius: 8px !important; }
  body.qp[data-ruta="pos"] #formVentaPos .tabla-items td.qpm-cant input { width: auto !important; text-align: center !important; }
  body.qp[data-ruta="pos"] .formVenta .tabla-items .btnEliminarItemCarroPos { width: 38px !important; height: 38px !important; border-radius: 8px !important; padding: 0 !important; font-size: 15px; }
  body.qp[data-ruta="pos"] #itemsP tr.qp-fila-sel { border-color: var(--qp-medio); box-shadow: inset 4px 0 0 var(--qp-medio); }
  body.qp[data-ruta="pos"] #itemsP tr.qp-fila-sel td { background: transparent !important; box-shadow: none !important; }
  body.qp[data-ruta="pos"] .qp-grilla-vacia { min-height: 150px !important; background: #fff; border: 1px dashed var(--qp-borde-2); border-radius: 10px; }
  body.qp[data-ruta="pos"] .qp-grilla-vacia::after { top: 0; content: "Toque AGREGAR en la pestaña Productos"; }

  body.qp[data-ruta="pos"] .qp-totales-full .tabla-totales tbody.totales { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  body.qp[data-ruta="pos"] .qp-totales-full .tabla-totales tbody.totales tr.op-total td:last-child { font-size: 28px !important; }
  /* Barra de teclas fija del POS: encima de ella va el boton F12 */
  body.qp[data-ruta="pos"] .qp-teclas { padding: 6px 8px calc(6px + env(safe-area-inset-bottom)); }
  body.qp[data-ruta="pos"] .contenedor-btns-carrito { bottom: 52px; }
  body.qp[data-ruta="pos"].qpm-ver-productos .qp-teclas { display: none !important; }   /* en Productos, la barra inferior es la de ir al carrito */
  body.qp[data-ruta="pos"].qpm-ver-productos { padding-bottom: 72px; }
  /* Pantalla completa: boton redondo flotante (arriba chocaba con la campana y el usuario) */
  body.qp .qp-btn-pantalla { top: auto; bottom: 120px; right: 12px; width: 42px; height: 42px; font-size: 16px; box-shadow: 0 6px 18px rgba(6,40,33,.3); }
  body.qp[data-ruta="pos"].qpm-ver-productos .qp-btn-pantalla { bottom: 84px; }

  /* Barra "Ver carrito" fija abajo en la pestaña Productos (quickpro-movil.js) */
  body.qp[data-ruta="pos"].qpm-ver-productos .qpm-ir-carrito {
    display: flex; position: fixed; left: 8px; right: 8px; bottom: calc(8px + env(safe-area-inset-bottom)); z-index: 1030;
    height: 56px; padding: 0 16px; border: 0; border-radius: 12px; align-items: center; gap: 10px;
    background: var(--qp-oscuro); color: #fff; font-size: 15px; font-weight: 700; box-shadow: 0 10px 26px rgba(6,40,33,.35);
  }
  body.qp[data-ruta="pos"] .qpm-ir-carrito .qpm-cuenta { min-width: 24px; padding: 0 7px; border-radius: 12px; background: var(--qp-alerta); color: var(--qp-alerta-txt); font-size: 12px; line-height: 24px; text-align: center; }
  body.qp[data-ruta="pos"] .qpm-ir-carrito .qpm-total { margin-left: auto; font-size: 18px; font-variant-numeric: tabular-nums; }

  /* ══════════════ 13. MODULOS: encabezados, filtros, indicadores y listados ══════════════ */
  /* Encabezado de caja con titulo + boton (Nuevo gasto, Ajuste de inventario…): boton a lo ancho debajo */
  body.qp .panel-medio .box-header { padding: 12px 12px 8px !important; }
  body.qp .panel-medio .box-header::after { content: ""; display: table; clear: both; }
  body.qp .panel-medio .box-header > .btn.pull-right,
  body.qp .panel-medio .box-header > button.pull-right { float: none !important; display: flex; align-items: center; justify-content: center; width: 100%; margin: 8px 0 0 !important; min-height: 44px; border-left-width: 0 !important; }
  body.qp .panel-medio > .box, body.qp .panel-medio .box.rounded { margin-bottom: 10px; }
  body.qp .container-fluid.panel-medio, body.qp section.panel-medio { padding-left: 8px; padding-right: 8px; }
  body.qp .dashboard-header .btns-dash a.btn { float: none !important; margin: 4px !important; }

  /* Filtros de fechas y buscador */
  body.qp .fechas-reportes { margin: 0; }
  body.qp .fechas-reportes > [class*="col-"] { padding-left: 0; padding-right: 0; margin-bottom: 8px; }
  body.qp .fechas-reportes input, body.qp .fechareportes { height: 44px !important; }
  body.qp .contenedor-busqueda { padding: 0 !important; }
  body.qp .input-group-search, body.qp .input-group-searchkardex { flex-wrap: wrap; gap: 8px; margin: 0 0 10px; }
  body.qp .input-group-search .input-search { margin: 0 !important; flex: 1 1 100%; }
  body.qp .input-group-search input.search { height: 44px !important; width: 100% !important; }
  body.qp .input-group-searchkardex > *, body.qp .kardex-contenedor { flex: 1 1 100%; width: 100% !important; padding-right: 0 !important; }
  body.qp .busca-pro-kardex { margin-left: 0 !important; }
  body.qp .contenedor-busqueda-cuotas > [class*="col-"] { padding-left: 0; padding-right: 0; }
  body.qp #daterange-btn, body.qp .btn-rango-fechas { float: none !important; width: 100%; margin: 6px 0 !important; min-height: 44px; }
  body.qp .contenedor-estados-sunat { flex-wrap: wrap; gap: 6px; height: auto !important; }
  body.qp .contenedor-estados-sunat label { position: static !important; }
  /* Barras oscuras de exportar (PDF / Excel) de inventario, kardex, caja y gastos: a lo ancho y claras */
  body.qp .btn-rd-inventarios, body.qp .btn-rd-kardex {
    width: 100% !important; margin: 0 0 10px !important; padding: 0 !important; background: transparent !important;
    display: flex !important; gap: 8px; justify-content: flex-start;
  }
  body.qp .btn-rd-inventarios .btn, body.qp .btn-rd-kardex .btn, body.qp .btn-rd-inventarios button, body.qp .btn-rd-kardex button {
    flex: 1 1 0; min-height: 44px; margin: 0 !important; background: #fff !important; border: 1px solid var(--qp-borde-2) !important; color: var(--qp-tinta) !important;
  }
  body.qp .contenedor-btn-reportes .btn { width: 48px; height: 44px; }
  body.qp .btn-container-consultar button { width: 100% !important; }
  body.qp #resultConsulta { padding: 12px !important; font-size: 1.1em !important; }

  /* Indicadores de los reportes (6 fichas apiladas): cuadricula de 2 */
  body.qp .contenedor-widget { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 0 8px; }
  body.qp .contenedor-widget > [class*="col-"] { width: auto; padding: 0; float: none; }
  body.qp .contenedor-widget .info-box { min-height: 0 !important; margin: 0; padding: 10px 10px 10px 14px; border-radius: 12px !important; }
  body.qp .contenedor-widget .info-box-icon { display: none !important; }
  body.qp .contenedor-widget .info-box-content { margin: 0 !important; padding: 0 !important; }
  body.qp .contenedor-widget .info-box-text { font-size: 9.5px !important; white-space: normal; line-height: 1.2; }
  body.qp .contenedor-widget .info-box-number { font-size: 16px !important; overflow: hidden; text-overflow: ellipsis; }
  body.qp .contenedor-widget .info-box:hover { transform: none; }

  /* Paginadores dentro de las tablas: se acomodan en varias lineas y no ensanchan la tabla */
  body.qp table td[colspan] .pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; margin: 6px 0; white-space: normal; }
  body.qp table td[colspan] .pagination > li > a, body.qp table td[colspan] .pagination > li > span { float: none; min-width: 40px; margin: 0; padding: 9px 10px; text-align: center; border-radius: 8px !important; }
  body.qp .qpfd-paginas { justify-content: center; flex-wrap: wrap; }

  /* DataTables (usuarios, cajas, unidades, bancos…): largo y buscador en su propia fila */
  body.qp .dataTables_wrapper .dataTables_length { position: static !important; float: none !important; margin-bottom: 6px; }
  body.qp .dataTables_wrapper .dataTables_filter { float: none !important; text-align: left; }
  body.qp .dataTables_wrapper .dataTables_paginate { float: none !important; text-align: center; }
  body.qp .dataTables_wrapper .dataTables_info { text-align: center; }
  body.qp .box-body:has(> table.tablas), body.qp .box-body:has(> table.tbl-t), body.qp .table-cajas, body.qp .table-sucursales, body.qp .table-proveedores { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  body.qp .img-contenedor-logo label { width: 120px !important; }

  /* ── ADMINISTRAR VENTAS (Colombia): cada venta es una TARJETA ──
     Columnas (api/ventas/ListadoVentasCO.php): 1 # · 2 fecha · 3 documento · 4 cliente · 5 total · 6 PDF · 7 enviar · 8 QR · 9 notas · 10 estado DIAN · 11 boton NC */
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas { overflow: visible !important; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas,
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody { display: block; width: 100% !important; border: 0 !important; background: transparent !important; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > thead { display: none !important; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr { display: block; margin: 0 0 8px; background: #fff !important; border: 1px solid var(--qp-borde); border-radius: 12px; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr:not(:has(> td[colspan])) {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-areas: "doc doc doc tot" "cli cli cli cli" "fec fec nts est" "pdf pdf env ncb";
    gap: 6px 8px; align-items: center; padding: 10px 12px;
  }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td { display: block; border: 0 !important; padding: 0 !important; background: transparent !important; text-align: left !important; min-width: 0; white-space: normal; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td[colspan] { padding: 12px !important; text-align: center !important; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(1):not([colspan]) { display: none; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(2):not([colspan]) { grid-area: fec; font-size: 11.5px; color: var(--qp-muted); }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(3):not([colspan]) { grid-area: doc; font-weight: 700; font-size: 14px; color: var(--qp-tinta); }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(4):not([colspan]) { grid-area: cli; font-size: 12.5px; color: var(--qp-tinta-2); line-height: 1.3; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(5):not([colspan]) { grid-area: tot; text-align: right !important; font-weight: 700; font-size: 15px; color: var(--qp-oscuro); white-space: nowrap; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(6):not([colspan]) { grid-area: pdf; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(7):not([colspan]) { grid-area: env; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(8):not([colspan]) { display: none; }   /* QR: esta en Documentos DIAN */
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(9):not([colspan]) { grid-area: nts; text-align: center !important; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(10):not([colspan]) { grid-area: est; text-align: right !important; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas > tbody > tr > td:nth-child(11):not([colspan]) { grid-area: ncb; text-align: right !important; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas .contenedor-print-comprobantes { justify-content: flex-start; flex-wrap: nowrap; gap: 4px; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas .contenedor-print-comprobantes :is(#printA4, #printT, .senda4, .sendwsa4, .qp-ws-co) { width: 40px !important; height: 40px !important; }
  body.qp[data-pais="CO"][data-ruta="ventas"] .qpv-solo-ventas .tablaVentas td:nth-child(11) .btn { min-height: 40px; padding: 0 12px; }
  body.qp[data-ruta="ventas"] .tablaCotizaciones .btn-contenedor-cotizaciones { justify-content: flex-start; }

  /* ── REPORTE DE VENTAS (Colombia): TARJETAS ──
     Columnas (tables/dataTablesReportes.php): 1 # · 2 fecha · 3 comprobante · 4 cliente · 5 IVA · 6 total · 7 PDF · 8 DIAN · 9 enviar · 10 estado */
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes,
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody { display: block; width: 100% !important; border: 0 !important; background: transparent !important; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > thead { display: none !important; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr { display: flex; flex-wrap: wrap; gap: 6px 12px; margin: 0 0 8px; padding: 10px 12px; background: #fff !important; border: 1px solid var(--qp-borde); border-radius: 12px; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr:not(:has(> td[colspan])) {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-areas: "doc doc doc tot" "cli cli cli cli" "fec fec iva est" "pdf env dian dian";
    align-items: center;
  }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td { display: block; border: 0 !important; padding: 0 !important; background: transparent !important; text-align: left !important; min-width: 0; white-space: normal !important; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td[colspan] { flex: 1 1 100%; text-align: center !important; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(1):not([colspan]) { display: none; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(2):not([colspan]) { grid-area: fec; font-size: 11.5px; color: var(--qp-muted); }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(3):not([colspan]) { grid-area: doc; font-weight: 700; font-size: 14px; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(4):not([colspan]) { grid-area: cli; font-size: 12.5px; color: var(--qp-tinta-2); }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(5):not([colspan]) { grid-area: iva; font-size: 11.5px; color: var(--qp-muted); }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(5):not([colspan])::before { content: "IVA "; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(6):not([colspan]) { grid-area: tot; text-align: right !important; font-weight: 700; font-size: 15px; color: var(--qp-oscuro); white-space: nowrap !important; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(7):not([colspan]) { grid-area: pdf; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(8):not([colspan]) { grid-area: dian; text-align: right !important; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(9):not([colspan]) { grid-area: env; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes > tbody > tr > td:nth-child(10):not([colspan]) { grid-area: est; text-align: right !important; }
  body.qp[data-pais="CO"][data-ruta="reporte-ventas"] .tabla-reportes .contenedor-print-comprobantes { justify-content: flex-start; flex-wrap: nowrap; gap: 4px; }

  /* ── NUEVA COMPRA: ventana "Agregar producto" (#formItems) y datos del proveedor en una columna ── */
  body.qp[data-ruta="nueva-compra"] .formCompra [class*="col-md-"] { padding-left: 0; padding-right: 0; }
  body.qp[data-ruta="nueva-compra"] .formCompra legend { margin-left: 0 !important; }
  body.qp[data-ruta="nueva-compra"] .formCompra textarea { width: 100% !important; }
  body.qp[data-ruta="nueva-compra"] .formCompra .tabla-totales tbody tr td:nth-child(1) { width: 55% !important; padding-right: 8px !important; }
  body.qp[data-ruta="nueva-compra"] .nuevoProductoC .flex { display: flex !important; flex-wrap: wrap; gap: 8px; }
  body.qp[data-ruta="nueva-compra"] .nuevoProductoC .flex .btn { float: none !important; flex: 1 1 auto; min-height: 44px; margin: 0 !important; }
  body.qp[data-ruta="nueva-compra"] .formCompra .tabla-items { min-width: 640px; }
  body.qp #modalProductosVenta:has(#formItems) .modal-dialog { width: auto !important; margin: 0 !important; }
  body.qp #modalProductosVenta:has(#formItems) .modal-content { min-height: 100vh; border-radius: 0 !important; }
  body.qp #formItems [class*="col-md-"] { width: 100%; padding-left: 0; padding-right: 0; }
  body.qp #formItems .p-productos { position: static !important; max-height: 50vh; }

  /* Ventanas de formularios con foto a la derecha (usuarios, productos, sucursales): una columna */
  body.qp .fullscreen-modal .modal-dialog { width: auto !important; margin: 0 !important; }
  body.qp .fullscreen-modal .modal-content { min-height: 100vh; border-radius: 0 !important; }
  body.qp .contenedor-roles-ch { justify-content: flex-start !important; }
  body.qp .contenedor-roles-ch label { flex: 1 1 calc(50% - 10px); }
  body.qp .series-sucursales td input { width: 64px !important; }

  /* ══════════════ 12. VENTANAS (modales, cobro, SweetAlert) ══════════════ */
  body.qp .modal-dialog { width: auto !important; margin: 8px !important; }
  body.qp .modal-body { padding: 12px; }
  body.qp .modal-footer { display: flex; flex-wrap: wrap; gap: 8px; }
  body.qp .modal-footer .btn { flex: 1 1 0; margin: 0 !important; min-height: 44px; }
  .qpc .modal-dialog, .qpr .modal-dialog, .qpdi .modal-dialog { width: auto !important; margin: 0 !important; min-height: 100%; }
  .qpc .modal-content, .qpr .modal-content { border-radius: 0; min-height: 100vh; }
  .qpc-cuerpo { padding: 10px; gap: 10px; }
  .qpc-total strong { font-size: 28px; }
  .qpc-falta strong { font-size: 24px; }
  .qpc-tab { min-width: 0; flex: 1 1 0; padding: 12px 8px; }
  .qpc-medios { grid-template-columns: 1fr; }
  .qpc-cuota { grid-template-columns: 56px 1fr 1fr; }
  .qpc-pie { position: sticky; bottom: 0; padding: 10px 10px calc(10px + env(safe-area-inset-bottom)); background: var(--qp-fondo, #F4F4F2); }
  .qpc-confirmar, .qpc-cancelar { min-width: 0 !important; flex: 1 1 0; height: 52px; }
  .qpc-confirmar { flex-grow: 2; }
  .qpr-cuerpo { max-height: none; padding: 6px 12px 8px; }
  body.qp .swal2-popup { width: calc(100vw - 24px) !important; max-width: 520px; padding: 16px !important; }
  body.qp .qp-emision-cab { padding: 16px; }
  body.qp .qp-emision-numero { font-size: 21px; }
  body.qp .contenedor-print #printA4, body.qp .contenedor-print #printT { width: calc(50% - 8px) !important; }
}
