/* ==========================================================================
   WMS OQUENDO  -  LA HOJA DE ESTILOS
   --------------------------------------------------------------------------
   Estaba adentro del index.html (116 KB). Ahora es un archivo aparte
   para que el celular lo guarde y no lo baje de nuevo cada vez.

   Se cambia la version con ?v= en el <link> del index.html.
   ========================================================================== */

/* ==========================================================================
   WMS OQUENDO  -  LA PANTALLA DEL OPERADOR
   Una sola app. Se instala en el celular. Funciona sin internet.
   ========================================================================== */
:root{
  /* ================= NOCHE (por defecto) ================= */
  --fondo:    #05080f;
  --panel:    #0f1626;
  --panel2:   #1a2333;
  --borde:    #3d4a5f;   /* gris fino, se ve sin ser molesto */
  --borde2:   #2a3546;
  --texto:    #ffffff;
  --texto2:   #c2cee0;
  --texto3:   #8b9ab0;
  --ok:       #00e676;
  --alerta:   #ffc400;
  --error:    #ff3d3d;
  --info:     #35a7ff;
  --amarillo: #ffd400;
  --amarillo2:#ffb800;
  --r:        14px;
  --alto:     46px;      /* el alto de TODOS los botones */
  --alto-g:   55px;      /* el alto de los botones grandes */
  --alto-in:  45px;      /* el alto de los campos */
  --letra:    12.5px;    /* la letra de los botones */
  --radio:    11px;
  --sombra:   0 2px 8px rgba(0,0,0,.35);
}
/* ================= DIA ================= */
html[data-tema="dia"]{
  --fondo:    #eef1f6;
  --panel:    #ffffff;
  --panel2:   #f4f6fa;
  --borde:    #b8c2d1;   /* gris visible sobre blanco */
  --borde2:   #d5dbe5;
  --texto:    #0b1220;
  --texto2:   #3d4a5f;
  --texto3:   #6b7a90;
  --ok:       #00a854;
  --alerta:   #d68f00;
  --error:    #d92b2b;
  --info:     #0b74d1;
  --amarillo: #ffc400;
  --amarillo2:#e0a800;
  --sombra:   0 2px 8px rgba(20,30,50,.10);
}
html[data-tema="dia"] body{ background:var(--fondo); color:var(--texto); }
html[data-tema="dia"] input,
html[data-tema="dia"] select,
html[data-tema="dia"] textarea{ background:#fff !important; color:var(--texto) !important; }
html[data-tema="dia"] nav{ background:linear-gradient(180deg,#fff,#eef1f6) !important; }
html[data-tema="dia"] nav button.activo{ color:#000 !important; }
html[data-tema="dia"] .card{ background:#fff !important; }
html[data-tema="dia"] .inb{ background:var(--fondo); color:var(--texto); }
html[data-tema="dia"] .inb thead{ background:var(--panel2); }
html[data-tema="dia"] .inb thead th{ color:var(--texto2); }
html[data-tema="dia"] .inb tbody tr{ color:var(--texto); }
html[data-tema="dia"] .inb .menu{ background:#fff; }
html[data-tema="dia"] .inb .menu button{ color:var(--texto2); }
html[data-tema="dia"] .inb .menu button:hover{ background:#eef1f6; color:var(--texto); }
html[data-tema="dia"] .inb .tabla-item input{ background:#fff; color:var(--texto); }
html[data-tema="dia"] .aviso{ background:rgba(0,0,0,.04); }
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
body{
  background:var(--fondo); color:var(--texto);
  font:16px/1.45 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  overscroll-behavior:none;
}
/* ---------- la barra de arriba ---------- */
header{
  position:sticky;top:0;z-index:50;background:var(--panel);
  border-bottom:1px solid var(--borde);
  padding:calc(env(safe-area-inset-top) + 10px) 14px 10px;
  display:flex;align-items:center;gap:10px;
}
header h1{font-size:17px;margin:0;flex:1;font-weight:700;letter-spacing:-.2px}
header .quien{font-size:12px;color:var(--texto2);text-align:right;line-height:1.2}
header .quien b{display:block;color:var(--texto);font-size:13px}
.punto{width:9px;height:9px;border-radius:50%;background:var(--ok);flex:0 0 auto;box-shadow:0 0 8px var(--ok)}
.punto.off{background:var(--error);box-shadow:0 0 8px var(--error)}
/* ---------- el contenido ---------- */
main{
  padding:14px 14px calc(env(safe-area-inset-bottom) + 84px);
  max-width:720px;margin:0 auto;
}
.vista{display:none}
.vista.activa{display:block;animation:entra .18s ease}
@keyframes entra{from{opacity:0;transform:translateY(6px)}
to{opacity:1;transform:none}}
/* ---------- las tarjetas ---------- */
.card{background:var(--panel);border:1px solid var(--borde);border-radius:var(--r);padding:15px;margin-bottom:12px}
.card h3{margin:0 0 10px;font-size:15px;font-weight:600}
.vacio{text-align:center;color:var(--texto3);padding:44px 20px;font-size:15px}
.vacio .ico{font-size:44px;display:block;margin-bottom:12px;opacity:.5}
/* ---------- los botones ---------- */
button,.btn{
  font:inherit;font-weight:600;border:none;border-radius:12px;
  padding:14px 18px;background:var(--panel2);color:var(--texto);
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  gap:8px;transition:transform .08s,filter .15s;
}
button:active,.btn:active{transform:scale(.97)}
button:disabled{opacity:.45;cursor:not-allowed}
.btn-primario{background:var(--info);color:#fff}
.btn-ok{background:var(--ok);color:#052e16}
.btn-alerta{background:var(--alerta);color:#451a03}
.btn-fantasma{background:transparent;border:1px solid var(--borde);color:var(--texto2)}
.btn-ancho{display:flex;width:100%}
.btn-grande{padding:20px;font-size:19px;border-radius:16px}
.acciones{display:grid;gap:10px;margin-top:12px}
.acciones.dos{grid-template-columns:1fr 1fr}
/* ---------- los campos ---------- */
input,select{
  font:inherit;width:100%;padding:15px 16px;border-radius:12px;
  background:var(--panel2);color:var(--texto);border:1px solid var(--borde);
}
input:focus,select:focus{outline:2px solid var(--info);outline-offset:-1px}
input::placeholder{color:var(--texto3)}
label{display:block;font-size:13px;color:var(--texto2);margin:12px 0 6px;font-weight:600}
/* ---------- los pallets ---------- */
.pallet{
  background:var(--panel);border:1px solid var(--borde);border-radius:var(--r);
  padding:14px;margin-bottom:10px;cursor:pointer;
}
.pallet:active{transform:scale(.99)}
.pallet .lpn{font-family:ui-monospace,monospace;font-size:15px;font-weight:700;color:var(--info)}
.pallet .desc{font-size:15px;font-weight:600;margin:3px 0 6px}
.pallet .meta{font-size:13px;color:var(--texto2);display:flex;flex-wrap:wrap;gap:12px}
.pallet .meta b{color:var(--texto)}
.guia-titulo{
  font-size:12px;font-weight:700;color:var(--texto3);text-transform:uppercase;
  letter-spacing:.6px;margin:18px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--borde);
}
/* ---------- LA UBICACION SUGERIDA (bien grande) ---------- */
.ubi-sugerida{
  background:linear-gradient(135deg,var(--amarillo),var(--amarillo2));
  color:#422006;border-radius:18px;padding:24px;text-align:center;margin:14px 0;
  box-shadow:0 8px 28px rgba(250,204,21,.28);
}
.ubi-sugerida .etiqueta{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;opacity:.75}
.ubi-sugerida .codigo{
  font-family:ui-monospace,monospace;font-size:44px;font-weight:900;
  letter-spacing:2px;line-height:1.05;margin:8px 0;
}
.ubi-sugerida .zona{font-size:15px;font-weight:600;opacity:.85}
.ubi-sugerida .motivos{margin:14px 0 0;padding:0;list-style:none;font-size:13px;text-align:left}
.ubi-sugerida .motivos li{padding:3px 0 3px 20px;position:relative}
.ubi-sugerida .motivos li:before{content:'✓';position:absolute;left:0;font-weight:800}
/* ---------- la escalera de empaque ---------- */
.escalera{
  background:var(--panel2);border-radius:12px;padding:12px;margin:10px 0;
  display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;font-size:14px;
}
.escalera .n{font-size:22px;font-weight:800;color:var(--amarillo)}
.escalera .u{color:var(--texto2);font-size:12px;font-weight:600}
.escalera .x{color:var(--texto3);font-size:18px}
.chip{display:inline-block;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:700}
.chip.ok{background:rgba(34,197,94,.2);color:#4ade80}
.chip.alerta{background:rgba(245,158,11,.2);color:#fbbf24}
.chip.error{background:rgba(239,68,68,.2);color:#f87171}
/* ---------- los avisos ---------- */
.aviso{padding:14px 16px;border-radius:12px;margin:12px 0;font-size:14px;font-weight:600}
.aviso.ok{background:rgba(34,197,94,.15);border:1px solid var(--ok);color:#86efac}
.aviso.alerta{background:rgba(245,158,11,.15);border:1px solid var(--alerta);color:#fcd34d}
.aviso.error{background:rgba(239,68,68,.15);border:1px solid var(--error);color:#fca5a5}
/* ---------- el buscador ---------- */
.buscador{position:relative;margin-bottom:14px}
.buscador input{padding-left:44px}
.buscador .limpiar{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;padding:10px;color:var(--texto3)}
/* ---------- la barra de abajo ---------- */
nav{
  position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--panel);
  border-top:1px solid var(--borde);display:flex;
  padding-bottom:env(safe-area-inset-bottom);
}
nav button{
  flex:1 1 0; min-width:0; max-width:20%;
  background:none !important; border:none !important; border-radius:10px !important;
  padding:7px 1px 6px !important; margin:0 1px;
  display:flex; align-items:center; justify-content:center;
  font-size:8.5px !important; font-weight:800 !important;
  letter-spacing:0 !important; text-transform:uppercase !important;
  color:var(--texto3) !important;
  min-height:50px !important;
  line-height:1.1;
  white-space:normal; word-break:break-word; text-align:center;
  overflow:hidden;
}
nav{ overflow-x:hidden; display:flex; align-items:stretch; }
nav button .ico{font-size:21px;line-height:1}
nav button.activo{color:var(--info)}
nav button.activo .ico{transform:translateY(-1px)}
/* ---------- el cargando ---------- */
.spin{
  width:19px;height:19px;border:2.5px solid rgba(255,255,255,.25);
  border-top-color:#fff;border-radius:50%;animation:gira .7s linear infinite;
}
@keyframes gira{to{transform:rotate(360deg)}}
.cargando{display:flex;align-items:center;justify-content:center;gap:10px;padding:36px;color:var(--texto2)}
/* ==========================================================================
   ALTO CONTRASTE  -  botones grandes, sin emojis
   ========================================================================== */
/*  OJO: el nav queda AFUERA de esta regla (tiene su propio estilo) */
main button, .card button, .acciones button,
.btn-primario, .btn-ok, .btn-alerta, .btn-fantasma, label.btn-alerta {
  min-height: 62px !important;
  font-size: 17px !important;
  font-weight: 900 !important;
  letter-spacing: .4px !important;
  text-transform: uppercase !important;
  border-radius: 14px !important;
  padding: 0 18px !important;
  -webkit-tap-highlight-color: transparent;
}
button:active { transform: scale(.975); }
/* el primario: AMARILLO con letras NEGRAS (maximo contraste) */
.btn-primario, .btn-alerta {
  background: var(--amarillo) !important;
  color: #000000 !important;
  border: 2px solid var(--amarillo) !important;
}
.btn-ok {
  background: var(--ok) !important;
  color: #001a0d !important;
  border: 2px solid var(--ok) !important;
}
.btn-fantasma, button:not([class]) {
  background: transparent !important;
  color: var(--texto) !important;
  border: 2px solid var(--borde) !important;
}
/* el boton GRANDE */
.btn-grande { min-height: 74px !important; font-size: 19px !important; }
.btn-ancho  { width: 100%; }
/* los titulos de las pantallas */
h2, h3, .card h3 {
  text-transform: uppercase;
  letter-spacing: .6px;
  font-weight: 900;
}
/* las tarjetas: borde bien visible */
.card {
  border: 1px solid var(--borde) !important;
  background: var(--panel) !important;
}
/* los input: grandes y con borde grueso */
input[type=text], input[type=number], input[type=date], input:not([type]), select, textarea {
  min-height: 60px !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  border: 2px solid var(--borde) !important;
  background: #00060f !important;
  color: var(--texto) !important;
  border-radius: 12px !important;
}
input::placeholder { color: var(--texto3) !important; }
label { font-size: 14px !important; font-weight: 800 !important;
        color: var(--texto2) !important; text-transform: uppercase; letter-spacing: .5px; }
/* ==========================================================================
   10% MAS CHICO EN TODO
   ========================================================================== */
main button, .card button, .acciones button,
.btn-primario, .btn-ok, .btn-alerta, .btn-fantasma {
  min-height: 56px !important;
  font-size: 15px !important;
}
.btn-grande { min-height: 66px !important; font-size: 17px !important; }
input[type=text], input[type=number], input[type=date], input:not([type]), select {
  min-height: 54px !important; font-size: 16px !important;
}
.card { padding: 15px 16px !important; }
/* ⚠️  ESTE ES EL BUENO. NO PONER OTRO "main { padding }
" DESPUES.
   ---------------------------------------------------------------------------
   La barra de abajo es position:fixed, asi que NO empuja el contenido:
   lo TAPA. Para que el ultimo renglon se pueda ver hay que dejarle
   abajo el alto de la barra + el area del gesto del celular.
   Si se pone un "padding:12px" pelado, el final de cada pantalla
   queda escondido detras de la barra. */
main{
  padding: 12px 12px calc(env(safe-area-inset-bottom) + 92px) !important;
}
/* la barra, para saber cuanto mide: unos 64px + el gesto del celular */
nav{ min-height: 60px }
/* ==========================================================================
   LA BARRA DE ABAJO  -  con vida
   ========================================================================== */
nav {
  background: linear-gradient(180deg, rgba(15,22,38,.97), #05080f) !important;
  border-top: 1px solid rgba(69,85,112,.5) !important;
  box-shadow: 0 -6px 22px rgba(0,0,0,.55);
  padding: 5px 4px calc(5px + env(safe-area-inset-bottom)) !important;
  gap: 3px;
}
nav button {
  position: relative;
  border-radius: 12px !important;
  margin: 0 2px;
  color: var(--texto3) !important;
  font-size: 9.5px !important;
  transition: all .16s ease;
}
nav button::after {
  content: ''; position: absolute; left: 22%; right: 22%; bottom: 2px;
  height: 3px; border-radius: 2px; background: transparent; transition: all .18s;
}
nav button.activo {
  color: #000 !important;
  background: var(--amarillo) !important;
  box-shadow: 0 3px 12px rgba(255,212,0,.35);
}
nav button.activo::after { background: transparent; }
nav button:active { transform: scale(.94); }
/* ==========================================================================
   LA PANTALLA DEL INBOUND  -  igual a la vieja
   (Tailwind escrito a mano, para que ande sin internet)
   ========================================================================== */
.inb { background:#0b1121; color:#f8fafc; font-family:'Inter',system-ui,sans-serif;
       margin:-16px; padding:16px; min-height:100%; }
.inb * { box-sizing:border-box; }
.inb .wrap { max-width:1280px; margin:0 auto; }
/* ---- cabecera ---- */
.inb .head { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center;
             gap:14px; border-bottom:1px solid #334155; padding-bottom:14px; margin-bottom:20px; }
.inb .head h1 { font-size:20px; font-weight:900; color:#fff; margin:0;
                display:flex; align-items:center; gap:10px; }
.inb .head p { font-size:11px; color:#94a3b8; font-family:ui-monospace,monospace;
               margin:4px 0 0; }
.inb .head .btns { display:flex; flex-wrap:wrap; gap:8px; }
/* ---- los botones de arriba ---- */
.inb .b { display:inline-flex; align-items:center; justify-content:center; gap:7px;
          padding:9px 15px; border-radius:9px; font-size:12px; font-weight:800;
          cursor:pointer; border:1px solid transparent; transition:all .15s;
          -webkit-tap-highlight-color:transparent; min-height:0 !important;
          text-transform:none !important; letter-spacing:0 !important; }
.inb .b:active { transform:scale(.97); }
.inb .b-verde  { background:#059669; color:#fff; }
.inb .b-verde:hover { background:#10b981; }
.inb .b-rojo   { background:rgba(127,29,29,.6); color:#fecaca; border-color:rgba(185,28,28,.5); }
.inb .b-rojo:hover { background:#991b1b; }
.inb .b-azul   { background:linear-gradient(90deg,#2563eb,#4f46e5); color:#fff;
                 border-color:rgba(96,165,250,.3); }
.inb .b-azul:hover { background:linear-gradient(90deg,#3b82f6,#6366f1); }
.inb .b:disabled { background:#334155 !important; color:#64748b !important;
                   cursor:not-allowed; }
.inb .latido { animation:latido 1.5s infinite; }
@keyframes latido {
  0%   { box-shadow:0 0 0 0 rgba(239,68,68,.7) }
  70%  { box-shadow:0 0 0 10px rgba(239,68,68,0) }
  100% { box-shadow:0 0 0 0 rgba(239,68,68,0) }
}
@media (min-width:760px) { }
@media (min-width:760px) {}
.inb .fila-dir { display:flex; gap:8px; }
.inb .tabla-box { overflow-x:auto; border:1px solid #334155; border-radius:9px; }
.inb table { width:100%; border-collapse:collapse; font-size:12px;
             font-family:ui-monospace,monospace; white-space:nowrap; }
.inb thead { background:#1e293b; }
.inb thead th { padding:11px; font-size:10px; font-weight:800; color:#94a3b8;
                text-transform:uppercase; text-align:left;
                border-bottom:1px solid #334155; letter-spacing:.4px; }
.inb thead th.ce { text-align:center; }
.inb thead th.am { color:#facc15; }
.inb tbody tr { border-bottom:1px solid #1e293b; color:#cbd5e1; }
.inb tbody tr:last-child { border-bottom:none; }
.inb tbody td { padding:8px 11px; }
.inb .vacio { text-align:center; padding:36px 16px; color:#64748b; }
.inb .vacio .ic { font-size:30px; display:block; margin-bottom:10px; opacity:.5; }
.inb .tabla-item input { width:100%; background:#0f172a; border:1px solid #334155;
                         padding:7px 9px; border-radius:6px; color:#fff;
                         font-family:ui-monospace,monospace; font-size:13px;
                         min-height:0 !important; font-weight:700; }
.inb .tabla-item input:focus { outline:none; border-color:#3b82f6; }
.inb .tabla-item .cant { text-align:right; }
.inb .tabla-item .pal  { text-align:center; }
.inb .btn-x { background:rgba(127,29,29,.6); color:#fecaca; border:1px solid rgba(185,28,28,.4);
              border-radius:6px; padding:6px 10px; font-size:12px; font-weight:800;
              cursor:pointer; min-height:0 !important; }
.inb .btn-x:hover { background:#991b1b; }
@media (min-width:760px) { }
.inb .menu { position:absolute; right:0; margin-top:8px; width:260px; background:#1e293b;
             border-radius:8px; border:1px solid #334155; z-index:60; display:none;
             box-shadow:0 12px 30px rgba(0,0,0,.6); overflow:hidden; }
.inb .menu.abierto { display:block; }
.inb .menu button { display:block; width:100%; text-align:left; padding:11px 16px;
                    font-size:12px; color:#cbd5e1; background:none; border:none;
                    cursor:pointer; font-weight:700; min-height:0 !important;
                    text-transform:none !important; letter-spacing:0 !important;
                    border-radius:0 !important; }
.inb .menu button:hover { background:#334155; color:#fff; }
.inb .menu .dest { background:rgba(49,46,129,.6); color:#c7d2fe;
                   border-bottom:1px solid #334155; }
.inb .menu .dest:hover { background:#3730a3; }
/* ---- la barra de estado ---- */
.inb .estado { display:flex; flex-wrap:wrap; gap:10px; font-size:11px;
               font-family:ui-monospace,monospace; color:#94a3b8; margin-top:12px;
               padding-top:12px; border-top:1px solid #334155; }
.inb .estado b { color:#fff; }
.inb .reloj { font-family:ui-monospace,monospace; background:rgba(0,0,0,.3);
              padding:2px 9px; border-radius:5px; letter-spacing:2px; font-size:11px; }
/* ---- scroll ---- */
.inb ::-webkit-scrollbar { width:6px; height:6px; }
.inb ::-webkit-scrollbar-track { background:#0f172a; }
.inb ::-webkit-scrollbar-thumb { background:#3b82f6; border-radius:10px; }
/* ==========================================================================
   LA PANTALLA DE RECIBIR  -  estilo f-gold
   ========================================================================== */
.inb .head h1 { font-size:19px !important; letter-spacing:.3px; }
.inb .head p  { font-size:9.5px !important; }
.chip-red{font-size:9.5px;font-weight:800;padding:4px 11px;border-radius:20px;
          background:rgba(0,230,118,.15);color:var(--ok);border:1px solid rgba(0,230,118,.4);
          white-space:nowrap}
.chip-red.off{background:rgba(255,61,61,.15);color:var(--error);border-color:rgba(255,61,61,.4)}
.chip-foto{font-size:9.5px;font-weight:800;padding:4px 11px;border-radius:20px;
           background:var(--panel2);color:var(--texto3);border:1px solid var(--borde);
           white-space:nowrap}
.chip-ok{font-size:9.5px;font-weight:800;padding:3px 9px;border-radius:20px;
         background:rgba(0,230,118,.15);color:var(--ok);border:1px solid rgba(0,230,118,.4)}
.chip-ok.mal{background:rgba(255,61,61,.15);color:var(--error);border-color:rgba(255,61,61,.4)}
/* ---- los 4 botones de arriba ---- */
.inb-botones{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.ib{display:flex;align-items:center;justify-content:center;gap:6px;
    height:46px;min-height:46px;max-height:46px;padding:0 10px;border-radius:11px;
    font-size:12.5px;font-weight:800;letter-spacing:.2px;cursor:pointer;
    border:1px solid transparent;transition:filter .15s,transform .1s;
    text-transform:none !important;box-shadow:none;
    -webkit-tap-highlight-color:transparent}
.ib:active{transform:scale(.975);filter:brightness(1.1)}
.ib-azul{background:#2563eb;color:#fff}
.ib-verde{background:#059669;color:#fff}
.ib-verde.rojo{background:#dc2626 !important}
.ib-verde.latido{animation:latido 1.3s ease-in-out infinite}
@keyframes latido{0%,100%{opacity:1}
50%{opacity:.72}}
.ib-gris{background:var(--panel2);color:var(--texto);border-color:var(--borde)}
.ib-violeta{background:#7c3aed;color:#fff}
.ib-reloj{font-family:ui-monospace,monospace;font-size:11px;background:rgba(0,0,0,.25);
          padding:2px 7px;border-radius:5px;letter-spacing:1px;font-size:10.5px}
.ib:disabled{opacity:.45;cursor:not-allowed}
/* ---- la busqueda de transito, CHICA ---- */
.tr-mini{display:flex;gap:6px;margin-bottom:12px}
.tr-mini input{flex:1;height:34px !important;min-height:34px !important;font-size:11.5px !important}
.tr-mini button{height:34px !important;min-height:34px !important;font-size:9.5px !important;
                padding:0 11px !important;border-radius:8px !important;
                background:#059669;color:#fff;border:1px solid transparent !important;
                font-weight:800;text-transform:uppercase}
.tr-mini button:last-child{background:var(--panel2);color:var(--texto);
                           border-color:var(--borde) !important;padding:0 11px !important}
/* ---- el desplegable de transitos ---- */
.tr-wrap{position:relative;flex:1}
.tr-drop{position:absolute;top:38px;left:0;right:0;z-index:80;max-height:290px;
         overflow-y:auto;background:var(--panel);border:1px solid var(--borde);
         border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.6);display:none}
.tr-drop.on{display:block}
.tr-drop .op{display:flex;align-items:center;gap:8px;padding:8px 11px;
             border-bottom:1px solid var(--borde2);cursor:pointer}
.tr-drop .op:last-child{border-bottom:none}
.tr-drop .op:active{background:var(--panel2)}
.tr-drop .op.hecho{opacity:.45}
.tr-drop .op .n{font-family:ui-monospace,monospace;font-size:13px;font-weight:900;
                color:var(--info);min-width:82px}
.tr-drop .op .d{flex:1;font-size:10px;color:var(--texto2);line-height:1.45;overflow:hidden}
.tr-drop .op .e{font-size:8.5px;font-weight:900;padding:2px 7px;border-radius:9px;
                white-space:nowrap}
.tr-drop .op .e.ok{background:rgba(0,230,118,.15);color:var(--ok);
                   border:1px solid rgba(0,230,118,.4)}
.tr-drop .op .e.no{background:rgba(255,196,0,.15);color:var(--alerta);
                   border:1px solid rgba(255,196,0,.4)}
.tr-drop .vacio2{padding:16px;text-align:center;font-size:11.5px;color:var(--texto3)}
.tr-drop .cab{position:sticky;top:0;background:var(--panel2);padding:6px 11px;
              font-size:9px;font-weight:900;color:var(--texto3);letter-spacing:.5px;
              border-bottom:1px solid var(--borde);text-transform:uppercase}
/* ---- las tarjetas del inbound ---- */
.inb-card{background:var(--panel);border:1px solid var(--borde);border-radius:12px;
          padding:13px;margin-bottom:11px}
.inb-card-cab{display:flex;align-items:center;gap:8px;margin-bottom:11px;flex-wrap:wrap}
.inb-tt{font-size:14px;font-weight:900;flex:0 0 auto}
.inb-ob{font-size:9.5px;color:var(--texto3);font-style:italic;flex:1}
.inb-mini{height:28px !important;min-height:28px !important;padding:0 9px !important;
          font-size:9.5px !important;border-radius:7px !important;
          background:var(--panel2) !important;color:var(--texto2) !important;
          border:1px solid var(--borde) !important;font-weight:800;
          text-transform:uppercase;white-space:nowrap}
.inb-lb{display:block;font-size:10px;font-weight:900;color:var(--texto2);
        margin:10px 0 4px;letter-spacing:.4px;text-transform:uppercase}
.inb-lb b{color:var(--alerta)}
.inb-in{width:100%;height:42px !important;min-height:42px !important;
        background:#0b1220 !important;border:1px solid var(--borde) !important;
        border-radius:8px !important;padding:0 11px !important;
        font-size:13px !important;color:var(--texto) !important;font-weight:700}
.inb-in:focus{border-color:var(--info) !important}
.inb-amar{color:var(--alerta) !important}
.inb-mono{font-family:ui-monospace,monospace;letter-spacing:.5px}
.inb-fila{display:flex;gap:7px;align-items:center}
.inb-sep{border-top:1px solid var(--borde2);margin:13px 0 4px}
.inb-2col{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.inb-tat{font-size:11px;font-family:ui-monospace,monospace;color:var(--ok);
         background:rgba(0,230,118,.1);border:1px solid rgba(0,230,118,.3);
         border-radius:7px;padding:6px 10px;margin-top:8px;text-align:center}
/* ---- guardar / exportar ---- */
.inb-acciones{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.inb-lpn-in{flex:1;height:34px !important;min-height:34px !important;
            font-family:ui-monospace,monospace !important;font-size:13px !important;
            color:var(--info) !important;letter-spacing:1px;text-align:center;
            background:transparent !important;border:1px solid var(--borde) !important}
.tabla-item.mal{background:rgba(255,61,61,.08)}
/* ---- la tabla ---- */
.tabla-box{overflow-x:auto;border:1px solid var(--borde);border-radius:9px}
.tabla-box table{width:100%;border-collapse:collapse;font-size:11px;
                 font-family:ui-monospace,monospace;white-space:nowrap}
.tabla-box thead{background:var(--panel2)}
.tabla-box thead th{padding:6px 7px;font-size:8px;font-weight:900;color:var(--texto3);
                    text-transform:uppercase;text-align:left;
                    border-bottom:1px solid var(--borde);letter-spacing:0}
.tabla-box th.ce{text-align:center}
.tabla-box tbody td{padding:4px 6px;border-bottom:1px solid var(--borde2)}
.tabla-box tbody tr:last-child td{border-bottom:none}
.tabla-box .vacio{text-align:center;padding:24px 12px;color:var(--texto3);
                  font-family:'Inter',system-ui,sans-serif;font-size:11.5px;line-height:1.6}
.tabla-box input{height:30px !important;min-height:30px !important;
                 font-size:11px !important;padding:0 6px !important;
                 background:#0b1220 !important;border:1px solid var(--borde) !important;
                 border-radius:6px !important;color:var(--texto) !important}
/* ---- los botones del menu de impresion ---- */
.inb .menu button{height:36px;font-size:11px}
/* ==========================================================================
   EL REPORTE DE TRANSITOS  -  version COMPACTA
   ========================================================================== */
.rep-mini{background:transparent;border:1px solid var(--borde2);
          border-radius:8px;margin-bottom:8px;overflow:hidden}
.rep-cab{display:flex;align-items:center;gap:7px;width:100%;padding:0 10px;
         height:30px;min-height:30px;background:none;border:none;cursor:pointer;
         text-transform:none !important;letter-spacing:0 !important;
         box-shadow:none !important;border-radius:0 !important}
.rep-cab:active{transform:none !important}
.rep-tit{font-size:9.5px;font-weight:900;color:var(--texto3);letter-spacing:.5px;
         text-transform:uppercase;font-family:'Inter',system-ui,sans-serif}
.rep-est{flex:1;text-align:right;font-size:9.5px;font-family:ui-monospace,monospace;
         color:var(--texto3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rep-est.ok{color:var(--ok)}
.rep-flecha{font-size:9px;color:var(--texto3);transition:transform .2s}
.rep-mini.abierto .rep-flecha{transform:rotate(180deg)}
.rep-cuerpo{display:none;padding:0 10px 10px}
.rep-mini.abierto .rep-cuerpo{display:block}
.rep-info{font-size:10px !important;line-height:1.5 !important;margin-bottom:8px !important}
.rep-cargar{height:32px !important;min-height:32px !important;font-size:10px !important}
.rep-info{font-size:10.5px;font-family:ui-monospace,monospace;color:#94a3b8;
          line-height:1.6;margin-bottom:10px}
.rep-cargar{position:relative;overflow:hidden;display:flex;align-items:center;
            justify-content:center;width:100%;height:38px;min-height:38px;
            font-size:11px;font-weight:800;border-radius:9px;cursor:pointer}
/* ==========================================================================
   AUDITAR  -  tarjeta chica y color al marcar
   ========================================================================== */
.aud-cab{display:flex;align-items:center;gap:9px;padding:9px 12px;margin-bottom:9px;
         background:var(--panel2);border:1px solid var(--borde);border-radius:11px;
         position:sticky;top:0;z-index:20}
.aud-cab .nom{font-size:13px;font-weight:900;flex:1}
.aud-cab .cue{font-size:10px;color:var(--texto3);font-family:ui-monospace,monospace}
.aud-cab button{height:34px !important;min-height:34px !important;
                font-size:10px !important;padding:0 11px !important;
                box-shadow:none !important}
/* cada posicion */
.pos-cab{display:flex;align-items:center;gap:8px;padding:5px 10px;margin:7px 0 5px;
         background:var(--panel2);border-left:3px solid var(--info);border-radius:0 7px 7px 0}
.pos-cab .p{font-size:11px;font-weight:900;letter-spacing:.5px}
.pos-cab .c{flex:1;text-align:right;font-size:9.5px;color:var(--texto3);
            font-family:ui-monospace,monospace}
/* las filas de niveles: BIEN chicas */
.niv-fila{display:flex;align-items:center;gap:7px;padding:5px 9px;
          border:1px solid var(--borde2);border-radius:8px;margin-bottom:4px;
          background:var(--panel);transition:all .15s}
.niv-fila .n{font-size:9px;font-weight:900;color:var(--texto3);
             background:var(--panel2);padding:2px 6px;border-radius:5px;
             font-family:ui-monospace,monospace;min-width:30px;text-align:center}
.niv-fila .u{flex:1;font-family:ui-monospace,monospace;font-size:12.5px;font-weight:800;
             letter-spacing:.4px}
.niv-fila .ch{font-size:8.5px;font-weight:800;padding:2px 7px;border-radius:9px;
              border:1px solid var(--borde)}
.niv-fila .ch.vacia{background:rgba(0,230,118,.14);color:var(--ok);border-color:rgba(0,230,118,.4)}
.niv-fila .ch.llena{background:rgba(255,196,0,.14);color:var(--alerta);border-color:rgba(255,196,0,.4)}
.niv-fila .btns{display:flex;gap:4px}
.niv-fila .btns button{height:30px !important;min-height:30px !important;width:38px;
                       padding:0 !important;font-size:10px !important;
                       border-radius:7px !important;box-shadow:none !important;
                       background:transparent !important;color:var(--texto3) !important;
                       border:1px solid var(--borde) !important}
/* MARCADA VACIA  ->verde */
.niv-fila.marcada-vacia{background:rgba(0,230,118,.13);border-color:var(--ok)}
.niv-fila.marcada-vacia .ch{background:var(--ok);color:#00220f;border-color:var(--ok)}
.niv-fila.marcada-vacia .btns button.v{background:var(--ok) !important;color:#00220f !important;
                                       border-color:var(--ok) !important;font-weight:900}
/* MARCADA LLENA  ->ambar */
.niv-fila.marcada-llena{background:rgba(255,196,0,.13);border-color:var(--alerta)}
.niv-fila.marcada-llena .ch{background:var(--alerta);color:#2a1a00;border-color:var(--alerta)}
.niv-fila.marcada-llena .btns button.l{background:var(--alerta) !important;color:#2a1a00 !important;
                                       border-color:var(--alerta) !important;font-weight:900}
/* ==========================================================================
   LA TARJETA DEL TRANSITO  (reemplaza al "Buscando el transito...")
   ========================================================================== */
.card-transito{background:linear-gradient(180deg,rgba(16,185,129,.14),rgba(16,185,129,.05));
               border:1.5px solid rgba(16,185,129,.5);border-radius:13px;
               padding:11px 13px;margin:8px 0 12px}
.ct-linea1{display:flex;align-items:center;gap:7px;flex-wrap:wrap;
           font-size:15px;font-weight:900;color:var(--texto)}
.ct-linea1 b{color:var(--ok);font-family:ui-monospace,monospace}
.ct-sep,.ct-flecha{color:var(--texto3);font-weight:700}
.ct-flecha{color:var(--amarillo)}
.ct-linea2{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.chip-dato{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);
           border-radius:7px;padding:3px 8px;font-size:11px;color:var(--texto2)}
.chip-dato b{color:var(--amarillo)}
.ct-linea3{font-size:10.5px;color:var(--texto3);margin-top:6px;line-height:1.5}
/* ==========================================================================
   LA RECEPCION GUARDADA  -  la confirmacion
   ========================================================================== */
.guardado-ok{background:linear-gradient(180deg,rgba(16,185,129,.2),rgba(16,185,129,.06));
             border:2px solid var(--ok);border-radius:14px;overflow:hidden;margin:10px 0}
.gd-cab{display:flex;align-items:center;gap:10px;padding:12px 14px;
        background:rgba(16,185,129,.22);border-bottom:1.5px solid var(--ok)}
.gd-check{width:26px;height:26px;border-radius:50%;background:var(--ok);color:#000;
          display:flex;align-items:center;justify-content:center;font-weight:900;font-size:16px}
.gd-tt{font-size:14px;font-weight:900;letter-spacing:.6px;color:#6ee7b7}
.gd-cuerpo{padding:10px 14px}
.gd-grupo{margin-bottom:12px}
.gd-grupo:last-child{margin-bottom:2px}
.gd-gt{font-size:9.5px;font-weight:900;letter-spacing:1.2px;color:var(--texto3);
       border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:4px;margin-bottom:7px}
.gd-fila{display:flex;justify-content:space-between;gap:10px;padding:3px 0;
         font-size:12px;align-items:baseline}
.gd-k{color:var(--texto3);font-weight:700;flex:0 0 auto}
.gd-v{color:var(--texto);font-weight:800;text-align:right;word-break:break-word}
.gd-v.grande{font-size:20px;color:var(--amarillo);font-family:'Arial Black',Arial}
.gd-v.mono{font-family:ui-monospace,monospace;font-size:11px;color:var(--info)}
.gd-v.tat{color:var(--ok);font-family:ui-monospace,monospace;font-size:14px}
.gd-pie{padding:9px 14px;background:rgba(0,0,0,.25);font-size:10.5px;
        color:var(--texto3);text-align:center;font-weight:700}
/* el boton del cronometro cuando esta andando */
#btnDescarga.rojo{background:var(--error) !important;border-color:#ff8080 !important}
#tiempoDescarga{font-family:ui-monospace,monospace;font-size:19px;font-weight:900;
                color:#fff;letter-spacing:2px}
.bloqueado{opacity:.4;cursor:not-allowed !important}
/* ---- los botones chiquitos de cada fila (borrar / duplicar) ---- */
.btn-mini{width:26px;height:26px;min-height:26px;padding:0;border-radius:6px;
          border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);
          color:var(--texto2);font-size:13px;font-weight:900;cursor:pointer;
          display:inline-flex;align-items:center;justify-content:center;
          vertical-align:middle;margin:0 1px;line-height:1}
.btn-mini:active{transform:scale(.92)}
.btn-dup{color:#93c5fd;border-color:rgba(59,130,246,.45);background:rgba(59,130,246,.14)}
.btn-dup:hover{background:rgba(59,130,246,.3)}
.btn-del{color:#fca5a5;border-color:rgba(239,68,68,.45);background:rgba(239,68,68,.14)}
.btn-del:hover{background:rgba(239,68,68,.3)}
/* ==========================================================================
   LOS DESPLEGABLES DE 1 RENGLON
   (la impresora Zebra y el correlativo LPN: van cerrados)
   ========================================================================== */
.mini-desplegable{border:1px solid var(--borde);border-radius:10px;overflow:hidden;
                  background:rgba(255,255,255,.02);width:100%}
.md-cab{width:100%;display:flex;align-items:center;gap:8px;
        padding:0 10px;height:34px;min-height:34px;
        background:transparent;border:0;color:var(--texto2);
        cursor:pointer;text-align:left;font-family:inherit}
.md-cab:active{background:rgba(255,255,255,.06)}
.md-tt{font-size:11px !important;font-weight:900;letter-spacing:.2px;
       flex:0 0 auto;white-space:nowrap;color:var(--texto2)}
.md-est{flex:1 1 auto;min-width:0;text-align:right;font-size:10px;
        color:var(--texto3);font-weight:700;
        white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
        font-family:ui-monospace,monospace}
.md-cuerpo{padding:8px 10px 10px;border-top:1px solid var(--borde)}
/* ==========================================================================
   GUARDAR e IMPRIMIR: EXACTAMENTE IGUALES
   ========================================================================== */
#v-recibir .inb-acciones{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:6px !important;
  margin-top:9px !important;
  align-items:stretch !important;
}
#v-recibir .inb-acciones > .ib,
#v-recibir .inb-acciones > button{
  width:100% !important;
  min-width:0 !important;
  height:40px !important;
  min-height:40px !important;
  max-height:40px !important;
  padding:0 6px !important;
  border-radius:9px !important;
  font-size:11.5px !important;
  font-weight:900 !important;
  letter-spacing:.2px !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:4px !important;
  box-sizing:border-box !important;
}
#v-recibir #btnGuardarServidor{background:#2563eb !important;color:#fff !important}
#v-recibir #btnMenuImprimir{background:#7c3aed !important;color:#fff !important}
#v-recibir #btnMenuImprimir:disabled{background:#334155 !important;color:#94a3b8 !important}
/* ==========================================================================
   EL BOTON DE DESCARGA: letra mas chica, y que el reloj entre comodo
   ========================================================================== */
#v-recibir #btnDescarga{
  font-size:10.5px !important;
  letter-spacing:0 !important;
  padding:0 5px !important;
  gap:3px !important;
}
#v-recibir #textoDescarga{font-size:10.5px !important;font-weight:900 !important}
#v-recibir .ib-reloj{
  font-size:9.5px !important;
  padding:1px 4px !important;
  letter-spacing:0 !important;
  border-radius:4px !important;
}
/* ==========================================================================
   LOS BOTONES DE ARRIBA A PRUEBA DE TODO
   --------------------------------------------------------------------------
   Que el texto NUNCA se corte en 2 renglones, y que los 4 midan igual.
   ========================================================================== */
#v-recibir .inb-botones{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:6px !important;
  margin-bottom:8px !important;
}
#v-recibir .inb-botones > .ib,
#v-recibir .inb-botones > label,
#v-recibir .inb-botones > button{
  width:100% !important;
  min-width:0 !important;
  height:42px !important;
  min-height:42px !important;
  max-height:42px !important;
  padding:0 6px !important;
  gap:4px !important;
  border-radius:9px !important;
  font-size:11.5px !important;
  font-weight:900 !important;
  letter-spacing:0 !important;
  line-height:1 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  box-sizing:border-box !important;
  flex-wrap:nowrap !important;
}
#v-recibir #textoDescarga{
  font-size:11.5px !important;
  font-weight:900 !important;
  white-space:nowrap !important;
  flex:0 0 auto !important;
}
#v-recibir .ib-reloj{
  font-size:9px !important;
  padding:1px 3px !important;
  letter-spacing:0 !important;
  border-radius:4px !important;
  flex:0 0 auto !important;
  font-family:ui-monospace,monospace !important;
}
/* ---------- la confirmacion ---------- */
.conf-tabla{width:100%; border-collapse:collapse; font-size:13px}
.conf-tabla th{background:#00060f; color:var(--texto2); font-size:10.5px; font-weight:900;
               text-transform:uppercase; letter-spacing:.5px; padding:8px 6px; text-align:left;
               border-bottom:2px solid var(--borde); white-space:nowrap}
.conf-tabla td{padding:8px 6px; border-bottom:1px solid var(--borde); vertical-align:middle}
.conf-tabla tr.ok td{border-left:5px solid var(--ok)}
.conf-tabla tr.mal td{border-left:5px solid var(--error); background:rgba(255,61,61,.07)}
.conf-tabla .sk{font-family:ui-monospace,monospace; font-weight:800; font-size:13.5px; display:block}
.conf-tabla .ds{font-size:11px; color:var(--texto3); display:block; margin-top:2px;
                max-width:190px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.conf-tabla input{min-height:46px !important; font-size:15px !important; padding:0 8px !important;
                  text-align:right; width:100%; min-width:92px}
.conf-tabla .num{font-family:ui-monospace,monospace; font-size:14px; font-weight:800; text-align:right}
.conf-tabla .dif{font-family:ui-monospace,monospace; font-size:14px; font-weight:900; text-align:right}
.conf-tabla .dif.mal{color:var(--error)}
.conf-tabla .dif.ok{color:var(--ok)}
.conf-total{display:flex; justify-content:space-between; gap:8px; flex-wrap:wrap;
            font-size:14px; font-weight:800; padding:12px 6px; border-top:3px solid var(--borde)}
.conf-total span b{font-family:ui-monospace,monospace}
.tabla-mini{width:100%; border-collapse:collapse; font-size:12.5px}
.tabla-mini td{padding:5px 4px; border-bottom:1px solid var(--borde)}
.tabla-mini td:last-child{text-align:right; font-family:ui-monospace,monospace; font-weight:800}
/* ---------- los transitos ---------- */
.transito{border:1px solid rgba(56,189,248,.35);border-radius:12px;padding:12px 14px;
          margin-bottom:9px;background:linear-gradient(135deg,rgba(56,189,248,.09),transparent)}
.transito.hoy{border-color:rgba(34,197,94,.55);background:linear-gradient(135deg,rgba(34,197,94,.12),transparent)}
.transito .n{font-family:ui-monospace,monospace;font-size:16px;font-weight:800;letter-spacing:.5px}
.transito .d{font-size:12px;color:var(--texto2);margin-top:4px;line-height:1.5}
.transito .badge-hoy{font-size:10px;font-weight:800;padding:2px 7px;border-radius:10px;
                     background:var(--ok);color:#052e16;margin-left:7px}
.carga-info{font-size:11.5px;color:var(--texto3);margin-top:9px;line-height:1.6;
            border-top:1px solid rgba(71,85,105,.3);padding-top:9px}
/* ---------- los usuarios ---------- */
.usuario{border-left:4px solid var(--ok);background:rgba(34,197,94,.06);
         padding:12px 14px;margin-bottom:9px;border-radius:0 11px 11px 0}
.usuario.baja{border-left-color:var(--texto3);background:rgba(71,85,105,.15);opacity:.6}
.usuario.admin{border-left-color:#a78bfa;background:rgba(167,139,250,.08)}
.usuario.super{border-left-color:#38bdf8;background:rgba(56,189,248,.07)}
.usuario .u{font-family:ui-monospace,monospace;font-size:15px;font-weight:800;letter-spacing:.4px}
.usuario .n{font-size:12.5px;color:var(--texto2);margin-top:3px}
.usuario .r{font-size:10.5px;font-weight:800;letter-spacing:1px;margin-top:6px;display:inline-block;
            padding:3px 9px;border-radius:20px}
.usuario .r.ADMIN{background:rgba(167,139,250,.2);color:#c4b5fd}
.usuario .r.SUPERVISOR{background:rgba(56,189,248,.2);color:#7dd3fc}
.usuario .r.OPERADOR{background:rgba(34,197,94,.2);color:#86efac}
.usuario .acc{display:flex;gap:6px;margin-top:10px}
.usuario .acc button{flex:1;padding:9px;border-radius:9px;font-size:11.5px;font-weight:800;
                     background:rgba(71,85,105,.4);color:var(--texto);
                     border:1px solid rgba(100,116,139,.4)}
.usuario .acc button:active{transform:scale(.97)}
.form-usu label{font-size:11.5px;color:var(--texto2);display:block;margin-bottom:3px}
.form-usu input,.form-usu select{width:100%;padding:12px;border-radius:10px;
    border:1px solid rgba(100,116,139,.45);background:rgba(2,6,23,.55);
    color:var(--texto);font-size:15px;margin-bottom:10px}
/* ---------- los candados ---------- */
.candado{border-left:4px solid #64748b;padding:12px 14px;margin-bottom:9px;
         background:rgba(15,23,42,.4);border-radius:0 11px 11px 0}
.candado.on{border-left-color:var(--ok);background:rgba(34,197,94,.07)}
.candado.off{border-left-color:var(--texto3)}
.candado.peligro{border-left-color:#ef4444;background:rgba(239,68,68,.07)}
.candado .k{font-family:ui-monospace,monospace;font-size:12.5px;font-weight:800;letter-spacing:.3px}
.candado .q{font-size:12.5px;color:var(--texto2);margin-top:5px;line-height:1.45}
.candado .w{font-size:11.5px;color:#fca5a5;margin-top:6px;line-height:1.4}
.candado .ctrl{margin-top:9px;display:flex;align-items:center;gap:9px}
.sw{position:relative;width:52px;height:30px;flex:0 0 auto;border-radius:15px;
    background:rgba(71,85,105,.7);transition:background .18s;border:none;padding:0}
.sw:after{content:'';position:absolute;top:3px;left:3px;width:24px;height:24px;
          border-radius:50%;background:#fff;transition:left .18s}
.sw.on{background:#22c55e}
.sw.on:after{left:25px}
.candado input[type=number],.candado input[type=text]{
    flex:1;padding:10px 12px;border-radius:9px;border:1px solid rgba(100,116,139,.45);
    background:rgba(2,6,23,.55);color:var(--texto);font-size:15px}
.grupo{font-size:11px;font-weight:800;letter-spacing:1.4px;color:var(--texto3);
       margin:20px 0 9px;padding-left:2px}
.linea{border-left:4px solid var(--ok);background:rgba(34,197,94,.06)}
.linea .sku{font-family:ui-monospace,monospace;font-weight:800;font-size:14.5px}
.escalera{font-size:12px;color:var(--texto2);background:rgba(15,23,42,.5);
          border-radius:9px;padding:8px 10px;margin-top:8px;
          font-family:ui-monospace,monospace}
.fila-datos{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fila-datos label{font-size:11.5px;color:var(--texto2);display:block;margin-bottom:3px}
.alerta-item{border-left:4px solid #ef4444;background:rgba(239,68,68,.07)}
nav button{position:relative}
/* ---------- los descuadres ---------- */
.descuadre{border-left:4px solid var(--alerta);background:rgba(245,158,11,.06)}
.descuadre .fila{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.descuadre .tipo{font-size:11px;font-weight:800;letter-spacing:.6px;color:#fcd34d}
.descuadre .ubi{font-family:ui-monospace,monospace;font-weight:800;font-size:15px}
.resolver{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}
.resolver button{padding:10px 8px;border-radius:9px;font-size:12px;font-weight:800;
                 background:rgba(71,85,105,.35);color:var(--texto);border:1px solid rgba(100,116,139,.4)}
.resolver button:active{transform:scale(.97)}
.resolver input{grid-column:1 / -1;padding:10px;border-radius:9px;border:1px solid rgba(100,116,139,.4);
                background:rgba(15,23,42,.6);color:var(--texto);font-size:14px}
/* ---------- el login ---------- */
#login{max-width:400px;margin:0 auto;padding-top:8vh}
#login .logo{text-align:center;margin-bottom:28px}
#login .logo .ico{font-size:56px}
#login .logo h2{margin:8px 0 2px;font-size:24px;font-weight:800;letter-spacing:-.5px}
#login .logo p{margin:0;color:var(--texto2);font-size:14px}
/* ---------- el dashboard ---------- */
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.kpi{background:var(--panel);border:1px solid var(--borde);border-radius:var(--r);padding:14px}
.kpi .v{font-size:27px;font-weight:800;line-height:1.1}
.kpi .t{font-size:11px;color:var(--texto2);text-transform:uppercase;letter-spacing:.5px;margin-top:3px;font-weight:600}
.kpi.ok .v{color:var(--ok)} .kpi.info .v{color:var(--info)}
.kpi.alerta .v{color:var(--alerta)} .kpi.error .v{color:var(--error)}
.barra{height:8px;background:var(--panel2);border-radius:99px;overflow:hidden;margin-top:8px}
.barra i{display:block;height:100%;background:var(--info);border-radius:99px}
/* ---------- la tabla de zonas ---------- */
table{width:100%;border-collapse:collapse;font-size:14px}
table th{text-align:left;font-size:11px;color:var(--texto3);text-transform:uppercase;letter-spacing:.5px;padding:8px 6px;border-bottom:1px solid var(--borde)}
table td{padding:9px 6px;border-bottom:1px solid rgba(71,85,105,.4)}
table td.n{text-align:right;font-family:ui-monospace,monospace;font-weight:600}
table tr:last-child td{border-bottom:none}
/* ---------- la camara ---------- */
#camara{position:fixed;inset:0;background:#000;z-index:100;display:none;flex-direction:column}
#camara.on{display:flex}
#video{flex:1;width:100%;object-fit:cover}
#camara .controles{padding:14px;padding-bottom:calc(env(safe-area-inset-bottom) + 14px);
                   display:flex;gap:9px;background:#000;z-index:2}
#camara .controles button{height:48px !important;min-height:48px !important;font-size:13px !important}
/* ---------- el cuadro de enfoque ---------- */
#camara .enfoque{position:absolute;inset:0;display:flex;flex-direction:column;
                 align-items:center;justify-content:center;pointer-events:none;z-index:1}
#camara .marco{position:relative;width:78%;max-width:420px;height:30%;max-height:210px;
               box-shadow:0 0 0 100vmax rgba(0,0,0,.5);border-radius:6px}
#camara .marco .esq{position:absolute;width:30px;height:30px;border:4px solid var(--amarillo)}
#camara .marco .tl{top:-2px;left:-2px;border-right:0;border-bottom:0;border-radius:6px 0 0 0}
#camara .marco .tr{top:-2px;right:-2px;border-left:0;border-bottom:0;border-radius:0 6px 0 0}
#camara .marco .bl{bottom:-2px;left:-2px;border-right:0;border-top:0;border-radius:0 0 0 6px}
#camara .marco .br{bottom:-2px;right:-2px;border-left:0;border-top:0;border-radius:0 0 6px 0}
#camara .marco .linea{position:absolute;left:6px;right:6px;height:3px;border-radius:2px;
                      background:linear-gradient(90deg,transparent,var(--error),transparent);
                      box-shadow:0 0 12px rgba(255,61,61,.9);animation:barrido 2s infinite}
@keyframes barrido{
  0%   { top:6px }
  50%  { top:calc(100% - 10px) }
  100% { top:6px }
}
#camara .pista{margin-top:16px;color:#fff;font-size:12.5px;font-weight:700;
               background:rgba(0,0,0,.6);padding:7px 14px;border-radius:20px;
               max-width:88%;text-align:center;line-height:1.4}
#camara .leido{margin-top:9px;color:#000;background:var(--amarillo);font-size:15px;
               font-weight:900;font-family:ui-monospace,monospace;padding:8px 16px;
               border-radius:9px;letter-spacing:1px}
/* ---------- el aviso de sin conexion ---------- */
#sinRed{
  position:fixed;top:0;left:0;right:0;z-index:200;background:var(--alerta);color:#451a03;
  text-align:center;padding:calc(env(safe-area-inset-top) + 8px) 10px 8px;font-size:13px;font-weight:700;
  transform:translateY(-100%);transition:transform .3s;
}
#sinRed.on{transform:none}
/* ==========================================================================
   PANTALLA DE INBOUND: ORDENADA Y APRETADA
   --------------------------------------------------------------------------
   TODO con !important, porque las reglas originales tambien lo usan.
   Se reduce SOLO el espacio. NO se toca el tamaño de las letras.
   ========================================================================== */
/* ==========================================================================
   1) LOS 4 BOTONES DE ARRIBA: EXACTAMENTE IGUALES
   --------------------------------------------------------------------------
   Grid de 2 columnas perfectas: 1fr 1fr  (mismo ancho)
   y todos el mismo alto.
   ========================================================================== */
#v-recibir .inb-botones{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:6px !important;
  margin-bottom:8px !important;
}
#v-recibir .inb-botones .ib{
  width:100% !important;
  height:40px !important;
  min-height:40px !important;
  max-height:40px !important;
  padding:0 8px !important;
  gap:5px !important;
  border-radius:9px !important;
  font-size:12px !important;
  justify-content:center !important;
  white-space:nowrap !important;
  overflow:hidden !important;
}
#v-recibir .ib-reloj{font-size:10px !important;padding:1px 4px !important}
/* ==========================================================================
   2) EL ESPACIO ENTRE CAMPOS
   ========================================================================== */
#v-recibir .inb-lb{margin:5px 0 2px !important;line-height:1.25 !important}
#v-recibir .inb-in{height:33px !important;min-height:33px !important;
                   padding:0 8px !important;margin:0 !important}
#v-recibir .inb-2col{gap:6px !important;margin:0 0 2px 0 !important}
#v-recibir .inb-fila{gap:6px !important;margin:0 !important}
#v-recibir .inb-sep{margin:8px 0 !important}
#v-recibir .inb-tat{padding:4px 7px !important;margin:5px 0 0 0 !important}
#v-recibir .inb-card{padding:10px 11px !important}
#v-recibir .inb-card-cab{margin-bottom:7px !important;padding-bottom:5px !important}
#v-recibir .card{margin-top:8px !important;padding:10px 11px !important}
/* ==========================================================================
   3) EL REPORTE Y EL BUSCADOR
   ========================================================================== */
#v-recibir .rep-mini{margin-bottom:7px !important}
#v-recibir .rep-cab{padding:7px 10px !important}
#v-recibir .rep-cuerpo{padding:8px 10px !important}
/* ==========================================================================
   4) LA TABLA
   ========================================================================== */
#v-recibir .tabla-box,#v-recibir .tabla-caja{max-height:200px !important}
#v-recibir table th{padding:3.5px 4px !important}
#v-recibir table td{padding:2.5px 4px !important}
#v-recibir .btn-mini{width:23px !important;height:23px !important;
                     min-height:23px !important;font-size:12px !important}
#v-recibir table input.cant,#v-recibir table input.lot,
#v-recibir table input.fef,#v-recibir table input.pal{
  height:27px !important;min-height:27px !important}
/* ==========================================================================
   5) GUARDAR + IMPRIMIR, JUNTOS, ABAJO DE LA TABLA
   ========================================================================== */
#v-recibir .inb-acciones{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:6px !important;
  margin-top:9px !important;
}
#v-recibir .inb-acciones .ib{
  width:100% !important;
  height:40px !important;
  min-height:40px !important;
  max-height:40px !important;
  border-radius:9px !important;
  font-size:12px !important;
}
#v-recibir #btnAgregarItem{height:34px !important;min-height:34px !important;
                           margin-top:8px !important}
#v-recibir .estado{margin-top:8px !important;padding:6px 9px !important}
/* ---- el menu de impresion, cuando se abre ---- */
#v-recibir .menu button{height:34px !important;min-height:34px !important;
                        padding:0 11px !important}
/* ---- los demas botones ---- */
#v-recibir .acciones{gap:6px !important;margin-top:8px !important}
#v-recibir .acciones.dos{gap:6px !important}
#v-recibir .btn-primario,#v-recibir .btn-fantasma,#v-recibir .btn-verde,
#v-recibir .btn-alerta,#v-recibir .btn-azul{
  height:36px !important;min-height:36px !important;max-height:36px !important;
  border-radius:9px !important}
#v-recibir .b{height:34px !important;min-height:34px !important;
              max-height:34px !important}
/* ==========================================================================
   6) LA IMPRESORA ZEBRA: SE VE COMPLETA
   --------------------------------------------------------------------------
   Con 190px de espacio al final, la tarjeta entra entera y no la
   tapa la barra de navegacion de abajo.
   ========================================================================== */
#v-recibir.activa{padding-bottom:190px !important}
#v-recibir .zebra-card,#v-recibir #zebraCuerpo{margin-bottom:20px !important}
/* ---- las tarjetas de resultado ---- */
#v-recibir .card-transito{padding:8px 10px !important;margin:6px 0 8px !important}
#v-recibir .chip-dato{padding:2px 6px !important}
#v-recibir .guardado-ok{margin:7px 0 !important}
#v-recibir .gd-cab{padding:9px 11px !important}
#v-recibir .gd-cuerpo{padding:8px 11px !important}
#v-recibir .gd-grupo{margin-bottom:9px !important}
#v-recibir .gd-fila{padding:2px 0 !important}
/* ==========================================================================
   ARREGLOS DE PANTALLA
   ========================================================================== */
/* --------------------------------------------------------------------------
   1) LA BARRA DE ABAJO: que el texto ENTRE en su casillero
   --------------------------------------------------------------------------
   "Descuadres", "Reubicar" y "Consultar" no entraban y se cortaban.
   Solucion: letra mas chica, que no se parta en 2 renglones,
   y si no entra igual, se puede deslizar de costado.
   -------------------------------------------------------------------------- */
nav{
  display:flex !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  -webkit-overflow-scrolling:touch !important;
  scrollbar-width:none !important;
  gap:2px !important;
  padding:0 3px !important;
}
nav::-webkit-scrollbar{display:none !important}
nav button{
  flex:1 0 auto !important;
  min-width:0 !important;
  padding:0 4px !important;
  font-size:9px !important;
  font-weight:800 !important;
  letter-spacing:0 !important;
  line-height:1.05 !important;
  white-space:nowrap !important;
  overflow:visible !important;
  text-overflow:clip !important;
  text-transform:none !important;
}
nav button span{
  white-space:nowrap !important;
  font-size:9px !important;
  letter-spacing:0 !important;
}
/* --------------------------------------------------------------------------
   2) LOS CAMPOS MAS BAJOS
   --------------------------------------------------------------------------
   Estaban en 33px y se veian muy altos. Bajan a 30px.
   Las letras quedan igual.
   -------------------------------------------------------------------------- */
#v-recibir .inb-in{height:30px !important;min-height:30px !important;
                   padding:0 8px !important}
#v-recibir .inb-lb{margin:4px 0 1px !important}
#v-recibir .inb-2col{gap:6px !important;margin:0 !important}
#v-recibir .inb-fila{gap:6px !important}
#v-recibir .inb-sep{margin:6px 0 !important}
#v-recibir .inb-card{padding:9px 10px !important}
#v-recibir .inb-card-cab{margin-bottom:5px !important;padding-bottom:4px !important}
/* los campos de la tabla, mas bajos tambien */
#v-recibir table input.cant,#v-recibir table input.lot,
#v-recibir table input.fef,#v-recibir table input.pal{
  height:25px !important;min-height:25px !important;font-size:11px !important}
#v-recibir table th{padding:3px 4px !important}
#v-recibir table td{padding:2px 4px !important}
#v-recibir .tabla-box,#v-recibir .tabla-caja{max-height:190px !important}
/* --------------------------------------------------------------------------
   3) LOS BOTONES IGUALADOS
   -------------------------------------------------------------------------- */
#v-recibir .inb-botones,
#v-recibir .inb-acciones{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:6px !important;
  align-items:stretch !important;
}
#v-recibir .inb-botones > *,
#v-recibir .inb-acciones > *{
  width:100% !important;
  min-width:0 !important;
  height:40px !important;
  min-height:40px !important;
  max-height:40px !important;
  box-sizing:border-box !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:5px !important;
  padding:0 6px !important;
  border-radius:10px !important;
  font-size:11.5px !important;
  font-weight:900 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
/* ==========================================================================
   4) EFECTO CRISTAL Y BRILLO EN LOS BOTONES IMPORTANTES
   --------------------------------------------------------------------------
   Los botones que HACEN algo llevan:
      · un brillo arriba (como si les diera la luz)
      · una sombra abajo
      · un borde clarito
      · y al tocarlos se hunden
   ========================================================================== */
/* ---- el boton de INICIAR descarga (el importante de Recibir) ---- */
#v-recibir #btnDescarga,
.ib-verde{
  background:
    linear-gradient(180deg, rgba(255,255,255,.30) 0%, rgba(255,255,255,.06) 45%, rgba(0,0,0,.10) 100%),
    linear-gradient(180deg, #10b981, #047857) !important;
  border:1px solid rgba(255,255,255,.30) !important;
  box-shadow:
    0 3px 10px rgba(16,185,129,.35),
    0 1px 2px rgba(0,0,0,.30),
    inset 0 1px 0 rgba(255,255,255,.45) !important;
  color:#fff !important;
  text-shadow:0 1px 2px rgba(0,0,0,.30) !important;
}
/* ---- GUARDAR ---- */
#v-recibir #btnGuardarServidor{
  background:
    linear-gradient(180deg, rgba(255,255,255,.30) 0%, rgba(255,255,255,.06) 45%, rgba(0,0,0,.10) 100%),
    linear-gradient(180deg, #3b82f6, #1d4ed8) !important;
  border:1px solid rgba(255,255,255,.30) !important;
  box-shadow:
    0 3px 10px rgba(59,130,246,.40),
    0 1px 2px rgba(0,0,0,.30),
    inset 0 1px 0 rgba(255,255,255,.45) !important;
  color:#fff !important;
  text-shadow:0 1px 2px rgba(0,0,0,.30) !important;
}
/* ---- IMPRIMIR ---- */
#v-recibir #btnMenuImprimir:not(:disabled){
  background:
    linear-gradient(180deg, rgba(255,255,255,.30) 0%, rgba(255,255,255,.06) 45%, rgba(0,0,0,.10) 100%),
    linear-gradient(180deg, #a855f7, #6d28d9) !important;
  border:1px solid rgba(255,255,255,.30) !important;
  box-shadow:
    0 3px 10px rgba(168,85,247,.40),
    0 1px 2px rgba(0,0,0,.30),
    inset 0 1px 0 rgba(255,255,255,.45) !important;
  color:#fff !important;
  text-shadow:0 1px 2px rgba(0,0,0,.30) !important;
}
/* ---- ESCANEAR y los azules ---- */
.ib-azul{
  background:
    linear-gradient(180deg, rgba(255,255,255,.26) 0%, rgba(255,255,255,.04) 45%, rgba(0,0,0,.10) 100%),
    linear-gradient(180deg, #3b82f6, #1e40af) !important;
  border:1px solid rgba(255,255,255,.26) !important;
  box-shadow:
    0 3px 9px rgba(37,99,235,.35),
    0 1px 2px rgba(0,0,0,.28),
    inset 0 1px 0 rgba(255,255,255,.40) !important;
  color:#fff !important;
  text-shadow:0 1px 2px rgba(0,0,0,.28) !important;
}
/* ---- y los grises: mas discretos, sin brillo fuerte ---- */
.ib-gris{
  background:linear-gradient(180deg, rgba(255,255,255,.08), rgba(0,0,0,.15)) !important;
  border:1px solid rgba(255,255,255,.14) !important;
  box-shadow:0 1px 3px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.10) !important;
}
/* ---- el boton grande de cada pantalla (los primarios) ---- */
.btn-primario,.btn-verde{
  background:
    linear-gradient(180deg, rgba(255,255,255,.28) 0%, rgba(255,255,255,.05) 45%, rgba(0,0,0,.10) 100%),
    linear-gradient(180deg, #3b82f6, #1d4ed8) !important;
  border:1px solid rgba(255,255,255,.28) !important;
  box-shadow:
    0 3px 10px rgba(59,130,246,.38),
    0 1px 2px rgba(0,0,0,.30),
    inset 0 1px 0 rgba(255,255,255,.42) !important;
  color:#fff !important;
  text-shadow:0 1px 2px rgba(0,0,0,.28) !important;
}
.btn-alerta{
  background:
    linear-gradient(180deg, rgba(255,255,255,.28) 0%, rgba(255,255,255,.05) 45%, rgba(0,0,0,.10) 100%),
    linear-gradient(180deg, #ef4444, #b91c1c) !important;
  border:1px solid rgba(255,255,255,.28) !important;
  box-shadow:
    0 3px 10px rgba(239,68,68,.38),
    0 1px 2px rgba(0,0,0,.30),
    inset 0 1px 0 rgba(255,255,255,.42) !important;
  color:#fff !important;
}
/* ---- al tocarlos se HUNDEN (se siente que responden) ---- */
.ib-verde:active,.ib-azul:active,.btn-primario:active,.btn-alerta:active,
#v-recibir #btnDescarga:active,#v-recibir #btnGuardarServidor:active,
#v-recibir #btnMenuImprimir:active{
  transform:translateY(1px) scale(.985) !important;
  box-shadow:0 1px 3px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.30) !important;
  filter:brightness(.96) !important;
}
/* ---- y los importantes laten suave ---- */
@keyframes brilla{
  0%,100%{box-shadow:0 3px 10px rgba(16,185,129,.35),0 1px 2px rgba(0,0,0,.30),inset 0 1px 0 rgba(255,255,255,.45)}
  50%    {box-shadow:0 3px 16px rgba(16,185,129,.65),0 1px 2px rgba(0,0,0,.30),inset 0 1px 0 rgba(255,255,255,.55)}
}
#v-recibir #btnDescarga.rojo{
  background:
    linear-gradient(180deg, rgba(255,255,255,.28) 0%, rgba(255,255,255,.05) 45%, rgba(0,0,0,.10) 100%),
    linear-gradient(180deg, #ef4444, #b91c1c) !important;
  animation:brilla 1.4s ease-in-out infinite !important;
}
/* ==========================================================================
   EL DESNIVEL ENTRE EL BOTON VERDE Y EL AZUL
   --------------------------------------------------------------------------
   INICIAR es un <button>.  Escanear es un <label> (lleva el input de la
   camara escondido adentro).  Los label y los button NO se alinean solos:
   el label queda unos pixeles mas abajo.
   Aca se fuerzan los 2 a ser IDENTICOS.
   ========================================================================== */
/* ---- la casilla de la grilla: alto fijo y todo centrado ---- */
#v-recibir .inb-botones{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  grid-auto-rows:40px !important;
  gap:6px !important;
  align-items:center !important;
  justify-items:stretch !important;
  margin-bottom:8px !important;
}
/* ---- y cada boton, sea button o label, IGUAL ---- */
#v-recibir .inb-botones > button,
#v-recibir .inb-botones > label,
#v-recibir .inb-botones > .ib{
  /* la caja */
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  flex-wrap:nowrap !important;
  width:100% !important;
  min-width:0 !important;
  height:40px !important;
  min-height:40px !important;
  max-height:40px !important;
  box-sizing:border-box !important;
  /* la posicion: SIN desplazamientos de ningun tipo */
  align-self:center !important;
  justify-self:stretch !important;
  margin:0 !important;
  padding:0 6px !important;
  position:relative !important;
  top:auto !important;
  bottom:auto !important;
  left:auto !important;
  right:auto !important;
  transform:none !important;
  vertical-align:middle !important;
  float:none !important;
  /* el texto */
  font-family:inherit !important;
  font-size:11.5px !important;
  font-weight:900 !important;
  line-height:1 !important;
  letter-spacing:0 !important;
  text-transform:none !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  gap:5px !important;
  border-radius:10px !important;
}
/* ---- el input de la camara: que NO ocupe lugar ---- */
#v-recibir .inb-botones label > input[type="file"]{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  margin:0 !important;
  padding:0 !important;
  opacity:0 !important;
  font-size:0 !important;
  border:0 !important;
  display:block !important;
}
/* ---- y el reloj del cronometro ---- */
#v-recibir .inb-botones .ib-reloj{
  font-size:9px !important;
  padding:1px 4px !important;
  line-height:1.3 !important;
  border-radius:4px !important;
  flex:0 0 auto !important;
  font-family:ui-monospace,monospace !important;
}
/* ---- el mismo trato para GUARDAR / IMPRIMIR ---- */
#v-recibir .inb-acciones{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  grid-auto-rows:40px !important;
  gap:6px !important;
  align-items:center !important;
  justify-items:stretch !important;
  margin-top:9px !important;
}
#v-recibir .inb-acciones > button,
#v-recibir .inb-acciones > .ib{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:100% !important;
  min-width:0 !important;
  height:40px !important;
  min-height:40px !important;
  max-height:40px !important;
  box-sizing:border-box !important;
  align-self:center !important;
  margin:0 !important;
  padding:0 6px !important;
  top:auto !important;
  transform:none !important;
  font-family:inherit !important;
  font-size:11.5px !important;
  font-weight:900 !important;
  line-height:1 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  gap:5px !important;
  border-radius:10px !important;
}
/* ==========================================================================
   BOTONES CON RELIEVE  -  VERSION DISCRETA
   --------------------------------------------------------------------------
   Antes me pase: resplandor de 18px al 75%, un reflejo que cruzaba,
   y el rojo latiendo. Era demasiado.
   Ahora: apenas un relieve. Se nota que el boton "tiene volumen",
   pero no llama la atencion ni cansa la vista.
   Y funciona en los 2 temas (DIA y NOCHE).
   ========================================================================== */
/* ---- VERDE: INICIAR DESCARGA ---- */
#v-recibir #btnDescarga,
.ib-verde{
  background:linear-gradient(180deg,
     rgba(255,255,255,.24) 0%,
     rgba(255,255,255,.05) 46%,
     rgba(0,0,0,.12) 100%), #059669 !important;
  border:1px solid rgba(255,255,255,.34) !important;
  box-shadow:0 3px 9px rgba(0,0,0,.32),
             0 0 9px rgba(255,255,255,.10),
             inset 0 2px 0 rgba(255,255,255,.42) !important;
  color:#fff !important;
  text-shadow:0 1px 1px rgba(0,0,0,.25) !important;
}
/* ---- AZUL: ESCANEAR y GUARDAR ---- */
.ib-azul,
#v-recibir #btnGuardarServidor{
  background:linear-gradient(180deg,
     rgba(255,255,255,.24) 0%,
     rgba(255,255,255,.05) 46%,
     rgba(0,0,0,.12) 100%), #2563eb !important;
  border:1px solid rgba(255,255,255,.34) !important;
  box-shadow:0 3px 9px rgba(0,0,0,.32),
             0 0 9px rgba(255,255,255,.10),
             inset 0 2px 0 rgba(255,255,255,.42) !important;
  color:#fff !important;
  text-shadow:0 1px 1px rgba(0,0,0,.25) !important;
}
/* ---- VIOLETA: IMPRIMIR ---- */
#v-recibir #btnMenuImprimir:not(:disabled){
  background:linear-gradient(180deg,
     rgba(255,255,255,.24) 0%,
     rgba(255,255,255,.05) 46%,
     rgba(0,0,0,.12) 100%), #7c3aed !important;
  border:1px solid rgba(255,255,255,.34) !important;
  box-shadow:0 3px 9px rgba(0,0,0,.32),
             0 0 9px rgba(255,255,255,.10),
             inset 0 2px 0 rgba(255,255,255,.42) !important;
  color:#fff !important;
  text-shadow:0 1px 1px rgba(0,0,0,.25) !important;
}
/* ---- ROJO: CERRAR DESCARGA (sin latir) ---- */
#v-recibir #btnDescarga.rojo,
.btn-alerta{
  background:linear-gradient(180deg,
     rgba(255,255,255,.26) 0%,
     rgba(255,255,255,.06) 46%,
     rgba(0,0,0,.12) 100%), #dc2626 !important;
  border:1.5px solid rgba(255,255,255,.35) !important;
  box-shadow:0 2px 6px rgba(220,38,38,.40),
             inset 0 1px 0 rgba(255,255,255,.30) !important;
  color:#fff !important;
  text-shadow:0 1px 1px rgba(0,0,0,.25) !important;
}
/* ---- GRIS: WhatsApp y Limpiar ---- */
.ib-gris{
  background:linear-gradient(180deg,
     rgba(255,255,255,.18) 0%,
     rgba(255,255,255,.03) 46%,
     rgba(0,0,0,.10) 100%), #1e293b !important;
  border:1px solid rgba(255,255,255,.13) !important;
  box-shadow:0 2px 4px rgba(0,0,0,.25),
             inset 0 1px 0 rgba(255,255,255,.14) !important;
  color:#e2e8f0 !important;
}
/* ---- los primarios de cualquier pantalla ---- */
.btn-primario,.btn-verde{
  background:linear-gradient(180deg,
     rgba(255,255,255,.24) 0%,
     rgba(255,255,255,.05) 46%,
     rgba(0,0,0,.12) 100%), #2563eb !important;
  border:1px solid rgba(255,255,255,.34) !important;
  box-shadow:0 3px 9px rgba(0,0,0,.32),
             0 0 9px rgba(255,255,255,.10),
             inset 0 2px 0 rgba(255,255,255,.42) !important;
  color:#fff !important;
  text-shadow:0 1px 1px rgba(0,0,0,.25) !important;
}
/* ---- al tocar: se hunde un poquito (nada mas) ---- */
#v-recibir #btnDescarga:active,
#v-recibir #btnGuardarServidor:active,
#v-recibir #btnMenuImprimir:active,
.ib-verde:active,.ib-azul:active,.ib-gris:active,
.btn-primario:active,.btn-verde:active,.btn-alerta:active{
  transform:translateY(1px) !important;
  filter:brightness(1.08) !important;
  box-shadow:0 1px 2px rgba(0,0,0,.35) !important;
}
/* el reloj del cronometro */
#v-recibir .ib-reloj{
  background:rgba(0,0,0,.35) !important;
  color:#fff !important;
  font-weight:900 !important;
}
/* ==========================================================================
   MODO DIA  -  que no queden sombras negras pesadas
   ========================================================================== */
html[data-tema="dia"] #v-recibir #btnDescarga,
html[data-tema="dia"] .ib-verde,
html[data-tema="dia"] .ib-azul,
html[data-tema="dia"] #v-recibir #btnGuardarServidor{
  box-shadow:0 2px 5px rgba(0,0,0,.16),
             inset 0 1px 0 rgba(255,255,255,.35) !important;
  border-color:rgba(0,0,0,.08) !important;
}
html[data-tema="dia"] .ib-gris{
  background:linear-gradient(180deg, rgba(255,255,255,.9), rgba(0,0,0,.04)), #e2e8f0 !important;
  border-color:rgba(0,0,0,.12) !important;
  color:#1e293b !important;
  box-shadow:0 2px 4px rgba(0,0,0,.10),
             inset 0 1px 0 rgba(255,255,255,.9) !important;
}
html[data-tema="dia"] #btnDescarga.rojo,
html[data-tema="dia"] .btn-alerta{
  box-shadow:0 2px 5px rgba(220,38,38,.25),
             inset 0 1px 0 rgba(255,255,255,.35) !important;
}
html[data-tema="dia"] #v-recibir .ib-reloj{
  background:rgba(0,0,0,.22) !important;
}
/* y el titulo INBOUND WMS, que se perdia en modo dia */
html[data-tema="dia"] #v-recibir .inb-tt,
html[data-tema="dia"] #v-recibir .inb-cab,
html[data-tema="dia"] #v-recibir h1,
html[data-tema="dia"] #v-recibir h2{
  color:#0f172a !important;
}
/* ==========================================================================
   LOS EJEMPLOS DE LOS CAMPOS, MAS TENUES
   --------------------------------------------------------------------------
   Los "placeholder" (T303-0001029, Quién movió, dd/mm/aaaa...) se veian
   casi igual que lo que uno escribe. Ahora quedan APENAS, como una guia.
   ========================================================================== */
input::placeholder,
textarea::placeholder,
select::placeholder{
  color:var(--texto3) !important;
  opacity:.42 !important;
  font-weight:400 !important;
  font-style:normal !important;
}
/* en el celular hay que repetirlo con estos prefijos, si no no toma */
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder{
  color:var(--texto3) !important;
  opacity:.42 !important;
  font-weight:400 !important;
}
input::-moz-placeholder,
textarea::-moz-placeholder{
  color:var(--texto3) !important;
  opacity:.42 !important;
  font-weight:400 !important;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder{
  color:var(--texto3) !important;
  opacity:.42 !important;
  font-weight:400 !important;
}
/* ---- los de la pantalla de Recibir, un toque mas tenues todavia ---- */
#v-recibir .inb-in::placeholder{
  opacity:.36 !important;
  font-weight:400 !important;
  letter-spacing:0 !important;
}
#v-recibir .inb-in::-webkit-input-placeholder{
  opacity:.36 !important;
  font-weight:400 !important;
}
/* ---- y el buscador del transito ---- */
#v-recibir #trNumero::placeholder{opacity:.40 !important;font-weight:400 !important}
/* ---- los campos de la tabla (L1234, 3840...) ---- */
#v-recibir table input::placeholder{
  opacity:.32 !important;
  font-weight:400 !important;
  font-size:11px !important;
}
#v-recibir table input::-webkit-input-placeholder{
  opacity:.32 !important;
  font-weight:400 !important;
}
/* ---- los del login (TU USUARIO, Su clave) ---- */
#usuario::placeholder,#clave::placeholder{opacity:.38 !important;font-weight:400 !important}
/* ---- MODO DIA: que no queden invisibles ---- */
html[data-tema="dia"] input::placeholder,
html[data-tema="dia"] textarea::placeholder{
  color:#64748b !important;
  opacity:.60 !important;
}
/* ==========================================================================
   LA FLECHA DE LOS DESPLEGABLES, DIBUJADA CON CSS
   (asi no es un caracter raro que se pueda romper)
   ========================================================================== */
.md-cab::after{
  content:'' !important;
  flex:0 0 auto !important;
  width:0 !important;
  height:0 !important;
  margin-left:2px !important;
  border-left:4.5px solid transparent !important;
  border-right:4.5px solid transparent !important;
  border-top:5.5px solid var(--texto3) !important;
  transition:transform .18s !important;
  display:block !important;
}
.md-cab.abierto::after{transform:rotate(180deg) !important}
/* y los botones de la impresora: flechita igual */
#btnZebraCab::after{border-top-color:var(--texto3) !important}
/* ---- los botones chiquitos ahora tienen texto: son mas anchos ---- */
#v-recibir .inb-mini{
  width:auto !important;
  min-width:44px !important;
  padding:0 8px !important;
  height:26px !important;
  min-height:26px !important;
  font-size:9.5px !important;
  font-weight:900 !important;
  letter-spacing:.3px !important;
}
/* ==========================================================================
   LAS VENTANAS DE LA APP (sin la direccion del servidor)
   ========================================================================== */
.mi-capa{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.62);
         display:flex;align-items:center;justify-content:center;padding:20px;
         backdrop-filter:blur(2px);animation:miEntra .14s ease}
@keyframes miEntra{from{opacity:0}
to{opacity:1}}
.mi-caja{background:var(--panel);border:1px solid var(--borde);border-radius:14px;
         width:100%;max-width:400px;padding:18px 18px 14px;
         box-shadow:0 18px 50px rgba(0,0,0,.6);animation:miSube .18s ease}
@keyframes miSube{from{transform:translateY(14px);opacity:.4}
to{transform:none;opacity:1}}
.mi-tt{font-size:15px;font-weight:900;margin-bottom:9px;color:var(--texto)}
.mi-tx{font-size:13.5px;line-height:1.55;color:var(--texto2);margin-bottom:16px;
       word-break:break-word}
.mi-botones{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mi-btn{height:42px;border-radius:10px;border:1px solid var(--borde);
        background:rgba(255,255,255,.07);color:var(--texto);font-size:12.5px;
        font-weight:900;cursor:pointer;font-family:inherit}
.mi-btn:active{transform:translateY(1px)}
.mi-uno{width:100%;background:#2563eb;border-color:transparent;color:#fff}
.mi-si{background:#2563eb;border-color:transparent;color:#fff}
.mi-no{background:rgba(255,255,255,.06)}

/* ==========================================================================
   LA BARRA DE ABAJO: MARCADO SOLO CUANDO ESTAS EN ESA PANTALLA
   --------------------------------------------------------------------------
   El navegador le deja un borde al boton que tocaste por ultimo,
   aunque ya no estes en esa pantalla.
   Se saca ese borde: queda marcado SOLO el amarillo del .activo.
   ========================================================================== */
nav button,
nav button:focus,
nav button:focus-visible,
nav button:focus-within,
nav button:active{
  outline:none !important;
  outline-offset:0 !important;
  -webkit-tap-highlight-color:transparent !important;
}

/* sin fondo ni borde si NO esta activo */
nav button:not(.activo){
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

/* y el activo, con su amarillo */
nav button.activo{
  background:var(--amarillo) !important;
  color:#000 !important;
  border:0 !important;
  box-shadow:0 3px 12px rgba(255,212,0,.35) !important;
}

/* ==========================================================================
   LA FILA DE ITEMS: 2 RENGLONES, LETRA GRANDE
   --------------------------------------------------------------------------
   Para leer comodo en el celular.
     1er renglon: SKU + descripcion  (GRANDE)
     2do renglon: cantidad, unidad, lote
     3er renglon: vencimiento, pallets, botones
   ========================================================================== */
#v-recibir .cel-todo{
  display:block !important;
  padding:9px 10px !important;
  border-bottom:1px solid var(--borde) !important;
}

/* ---- 1er renglon: SKU y descripcion, GRANDES ---- */
#v-recibir .it-1{
  display:flex !important;
  align-items:baseline !important;
  gap:8px !important;
  flex-wrap:wrap !important;
  margin-bottom:7px !important;
}
#v-recibir .it-sku{
  font-size:17px !important;
  font-weight:900 !important;
  color:#60a5fa !important;
  font-family:ui-monospace,monospace !important;
  letter-spacing:.4px !important;
  line-height:1.1 !important;
  flex:0 0 auto !important;
}
#v-recibir .it-desc{
  font-size:13.5px !important;
  font-weight:800 !important;
  color:var(--texto) !important;
  line-height:1.25 !important;
  flex:1 1 auto !important;
  min-width:0 !important;
}

/* ---- el aviso de "no es producto" ---- */
#v-recibir .it-aviso{
  font-size:11px !important;
  font-weight:900 !important;
  color:#fca5a5 !important;
  background:rgba(239,68,68,.14) !important;
  border:1px solid rgba(239,68,68,.4) !important;
  border-radius:7px !important;
  padding:4px 8px !important;
  margin-bottom:7px !important;
  display:inline-block !important;
}

/* ---- 2do y 3er renglon: los campos ---- */
#v-recibir .it-2,
#v-recibir .it-3{
  display:flex !important;
  align-items:flex-end !important;
  gap:7px !important;
  flex-wrap:wrap !important;
}
#v-recibir .it-2{margin-bottom:6px !important}
#v-recibir .it-campo{
  display:flex !important;
  flex-direction:column !important;
  gap:2px !important;
  flex:0 0 auto !important;
}
#v-recibir .it-lb{
  font-size:9.5px !important;
  font-weight:800 !important;
  color:var(--texto3) !important;
  letter-spacing:.3px !important;
  text-transform:uppercase !important;
}
#v-recibir .it-2 .cant{width:100px !important}
#v-recibir .it-2 .lot{width:96px !important}
#v-recibir .it-umb{
  font-size:10px !important;
  font-weight:800 !important;
  color:var(--texto3) !important;
  padding-bottom:8px !important;
}
#v-recibir .it-3 .fef{width:140px !important}
#v-recibir .it-3 .pal{width:62px !important}
#v-recibir .it-pal{margin-left:auto !important}
#v-recibir .it-botones{
  display:flex !important;
  gap:5px !important;
  padding-bottom:2px !important;
}

/* ---- los campos, mas altos para que se toquen comodo ---- */
#v-recibir .cel-todo input{
  height:32px !important;
  min-height:32px !important;
  font-size:14px !important;
  font-weight:800 !important;
  padding:0 8px !important;
  border-radius:8px !important;
  background:#0b1220 !important;
  border:1px solid var(--borde) !important;
  color:var(--texto) !important;
}

/* ---- los items que no son producto: apagados ---- */
#v-recibir .tabla-item.no-prod{background:rgba(239,68,68,.07) !important}
#v-recibir .tabla-item.no-prod .it-sku{color:#fca5a5 !important}
#v-recibir .tabla-item.no-prod .it-desc{color:var(--texto3) !important}

/* ---- y los que no estan en el maestro ---- */
#v-recibir .tabla-item.mal{background:rgba(255,193,7,.07) !important}

/* ---- la cabecera ya no hace falta (cada campo dice que es) ---- */
#v-recibir .tabla-box thead,
#v-recibir .tabla-caja thead{display:none !important}

/* ---- el cuadro de la tabla ---- */
#v-recibir .tabla-box,
#v-recibir .tabla-caja{max-height:60vh !important}

/* ==========================================================================
   QUE NO SE RECARGUE LA PANTALLA AL DESLIZAR
   --------------------------------------------------------------------------
   Chrome en Android recarga la pagina si deslizas hacia abajo.
   Eso BORRA todo lo que estabas cargando.
   ========================================================================== */
html, body{
  overscroll-behavior-y: contain !important;
  overscroll-behavior-x: none !important;
  -webkit-overflow-scrolling: touch;
}
/* y los cuadros con scroll, que no arrastren a la pagina */
.tabla-box, .tabla-caja, .tr-drop, .mi-caja, nav{
  overscroll-behavior: contain !important;
}

/* ==========================================================================
   LO QUE FALTA LLENAR, EN ROJO
   ========================================================================== */
#v-recibir input.falta,
#v-recibir select.falta,
#v-recibir .inb-in.falta{
  border:2px solid #ef4444 !important;
  background:rgba(239,68,68,.10) !important;
  box-shadow:0 0 0 3px rgba(239,68,68,.18) !important;
  animation:lateRojo 1.1s ease-in-out infinite !important;
}
@keyframes lateRojo{
  0%,100%{ box-shadow:0 0 0 3px rgba(239,68,68,.18) !important; }
  50%    { box-shadow:0 0 0 7px rgba(239,68,68,.30) !important; }
}

.inb-lb.falta-lb,
.it-lb.falta-lb,
label.falta-lb{
  color:#fca5a5 !important;
}
.inb-lb.falta-lb::after,
.it-lb.falta-lb::after{
  content:' - FALTA' !important;
  font-size:9px !important;
  font-weight:900 !important;
  color:#ef4444 !important;
  letter-spacing:.4px !important;
}

#tabla-detalle.falta{
  outline:2px solid #ef4444 !important;
  outline-offset:-2px !important;
  border-radius:9px !important;
}

.mi-tx b{color:#fca5a5 !important}

/* ==========================================================================
   QUE CHROME NO GUARDE LA CLAVE
   --------------------------------------------------------------------------
   Para que en el celular del operador no quede la clave guardada.
   ========================================================================== */
#usuario, #clave{
  autocomplete: off;
}
/* ==========================================================================
   LA FRANJA DE ARRIBA  (el mensaje que se ve siempre)
   ========================================================================== */
#franja{
  position:fixed; left:0; right:0; top:0; z-index:9000;
  display:flex; align-items:center; justify-content:center; gap:10px;
  padding:14px 16px calc(14px + env(safe-area-inset-top)) 16px;
  font-size:14px; font-weight:900; color:#fff; text-align:center;
  background:linear-gradient(180deg,#1d4ed8,#1e40af);
  box-shadow:0 6px 22px rgba(0,0,0,.5);
  transform:translateY(-120%); transition:transform .22s ease;
  border-bottom:2px solid rgba(255,255,255,.22);
}
#franja.on{ transform:translateY(0) }
#franja.trabajando{ background:linear-gradient(180deg,#1d4ed8,#1e40af) }
#franja.ok{ background:linear-gradient(180deg,#15803d,#166534) }
#franja.error{ background:linear-gradient(180deg,#b91c1c,#991b1b) }
#franja.alerta{ background:linear-gradient(180deg,#b45309,#92400e) }
#franja .spin{
  width:17px; height:17px; flex:0 0 auto;
  border:2.5px solid rgba(255,255,255,.3);
  border-top-color:#fff; border-radius:50%;
  animation:gira .75s linear infinite;
}

/* ==========================================================================
   EL MENU DE ESCANEAR  (2 opciones: camara o galeria)
   ========================================================================== */
.esc-menu{ display:none }
.esc-menu.abierto{
  display:flex; flex-direction:column; gap:8px;
  margin-top:9px; padding:9px;
  background:linear-gradient(180deg,rgba(30,41,59,.98),rgba(15,23,42,.98));
  border:1px solid rgba(96,165,250,.45);
  border-radius:14px;
  box-shadow:0 12px 32px rgba(0,0,0,.55);
  animation:bajaMenu .16s ease;
}
@keyframes bajaMenu{
  from{ opacity:0; transform:translateY(-7px) }
  to  { opacity:1; transform:none }
}
.esc-op{
  display:flex; align-items:center; gap:12px; width:100%;
  min-height:60px; padding:10px 14px;
  border-radius:11px; cursor:pointer; text-align:left;
  border:1px solid rgba(255,255,255,.14);
  background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.03));
  color:var(--texto); font-family:inherit;
  transition:all .13s ease;
}
.esc-op:active{ transform:scale(.985) }
.esc-ico{
  width:44px; height:44px; flex:0 0 auto;
  display:flex; align-items:center; justify-content:center;
  border-radius:11px; color:#fff;
  background:linear-gradient(180deg,#3b82f6,#2563eb);
  box-shadow:0 3px 10px rgba(37,99,235,.45);
}
.esc-op:nth-child(2) .esc-ico{
  background:linear-gradient(180deg,#8b5cf6,#7c3aed);
  box-shadow:0 3px 10px rgba(124,58,237,.45);
}
.esc-tx{ display:flex; flex-direction:column; gap:2px; min-width:0 }
.esc-tx b{ font-size:13.5px; font-weight:900; letter-spacing:.35px }
.esc-tx i{ font-size:11.5px; font-style:normal; color:var(--texto3); font-weight:700 }
.esc-no{
  min-height:44px; justify-content:center;
  font-size:12.5px; font-weight:900; color:var(--texto3);
  background:rgba(255,255,255,.04);
}

/* ==========================================================================
   LA PROPORCION: que los botones, los campos y las letras cuadren
   ========================================================================== */
#v-recibir .inb-botones{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:9px !important;
}
#v-recibir .inb-botones .ib{
  min-height:50px !important;
  height:50px !important;
  font-size:13.5px !important;
  font-weight:900 !important;
  letter-spacing:.5px !important;
  border-radius:12px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:7px !important;
}

#v-recibir .inb-in{
  height:46px !important;
  min-height:46px !important;
  font-size:15px !important;
  font-weight:800 !important;
  border-radius:11px !important;
  padding:0 13px !important;
}
#v-recibir .inb-lb{
  font-size:11px !important;
  font-weight:900 !important;
  letter-spacing:.5px !important;
  margin-top:11px !important;
  margin-bottom:5px !important;
  display:block !important;
}

#v-recibir .inb-tt{ font-size:14px !important; font-weight:900 !important }
#v-recibir .inb-ob{ font-size:10.5px !important }

#v-recibir .tr-mini input{
  height:48px !important;
  font-size:15px !important;
  font-weight:800 !important;
  border-radius:11px !important;
}
#v-recibir #btnTrBuscar{
  min-height:48px !important;
  font-size:13px !important;
  font-weight:900 !important;
  border-radius:11px !important;
}
#v-recibir #btnTrLista{
  min-width:48px !important;
  min-height:48px !important;
  border-radius:11px !important;
}

#v-recibir #btnAgregarItem{
  min-height:48px !important;
  font-size:13.5px !important;
  font-weight:900 !important;
  border-radius:12px !important;
}
#v-recibir #btnGuardarServidor,
#v-recibir #btnMenuImprimir{
  min-height:50px !important;
  font-size:13.5px !important;
  font-weight:900 !important;
  border-radius:12px !important;
}
#v-recibir .rep-cab{ min-height:46px !important; border-radius:11px !important }
#v-recibir .rep-tit{ font-size:11.5px !important; font-weight:900 !important }
#v-recibir .rep-est{ font-size:11.5px !important; font-weight:900 !important }

/* ==========================================================================
   CONSULTAR UN LPN
   ========================================================================== */
.mat-sugeridas{
  display:flex; flex-wrap:wrap; gap:6px; margin:9px 0;
}
.mat-sug{
  display:flex; flex-direction:column; gap:1px; align-items:flex-start;
  padding:7px 11px; border-radius:9px; cursor:pointer;
  background:rgba(59,130,246,.14);
  border:1px solid rgba(59,130,246,.42);
  color:#93c5fd; font-family:inherit; text-align:left;
}
.mat-sug:active{ transform:scale(.97) }
.mat-sug b{ font-size:12.5px; font-weight:900; letter-spacing:.3px }
.mat-sug span{ font-size:9.5px; color:var(--texto3); font-weight:700 }

/* ==========================================================================
   LOS DESCUADRES
   ========================================================================== */
.desc-mot{
  width:100%; height:44px; font-size:14px; font-weight:700;
  border-radius:10px; padding:0 11px;
  background:#0b1220; color:var(--texto);
  border:1px solid var(--borde);
  margin-bottom:9px;
}
.desc-botones{
  display:grid !important; grid-template-columns:1fr 1fr 1fr !important;
  gap:6px !important; margin-top:0 !important;
}
.desc-botones button{
  min-height:44px !important; font-size:11.5px !important;
  font-weight:900 !important; border-radius:10px !important;
}
.desc-eru{
  width:100%; min-height:48px; margin-top:8px;
  border-radius:11px; cursor:pointer; font-family:inherit;
  font-size:12.5px; font-weight:900; letter-spacing:.4px;
  color:#fff; border:1px solid transparent;
  background:linear-gradient(180deg,#7c3aed,#6d28d9);
  box-shadow:0 3px 12px rgba(109,40,217,.4);
}
.desc-eru:active{ transform:translateY(1px) }

/* ==========================================================================
   EL ERU: LAS 2 COLAS DE TAREA
   ========================================================================== */
.eru-tabs{
  display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:12px;
}
.eru-tab{
  display:flex; flex-direction:column; gap:1px; align-items:flex-start;
  padding:10px 12px; border-radius:11px; cursor:pointer;
  font-family:inherit; text-align:left;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.12);
  transition:all .14s ease;
}
.eru-tab:active{ transform:scale(.98) }
.eru-tab-n{ font-size:20px; font-weight:900; line-height:1; color:var(--texto3) }
.eru-tab-t{ font-size:11.5px; font-weight:900; letter-spacing:.5px; color:var(--texto3) }
.eru-tab-s{ font-size:9px; color:var(--texto3); font-weight:700; line-height:1.25 }
.eru-tab.activo{ background:rgba(255,255,255,.10); border-color:rgba(255,255,255,.28) }
.eru-tab.activo .eru-tab-n{ color:#fff }
.eru-tab.activo .eru-tab-t{ color:#fff }

/* la de FALTAN, en rojo */
#eruTabFaltan.activo{
  background:rgba(239,68,68,.16); border-color:rgba(239,68,68,.5);
}
#eruTabFaltan.activo .eru-tab-n,
#eruTabFaltan.activo .eru-tab-t{ color:#fca5a5 }

/* la de SOBRAN, en ambar */
#eruTabSobran.activo{
  background:rgba(245,158,11,.16); border-color:rgba(245,158,11,.5);
}
#eruTabSobran.activo .eru-tab-n,
#eruTabSobran.activo .eru-tab-t{ color:#fcd34d }

/* ==========================================================================
   EL DASHBOARD
   ========================================================================== */
.dash-sel{
  height:38px; border-radius:9px; padding:0 9px;
  background:#0b1220; color:var(--texto); font-family:inherit;
  font-size:12px; font-weight:800; border:1px solid var(--borde);
}
.dash-cab{ display:flex; justify-content:space-between; align-items:center;
           gap:9px; margin-bottom:11px }
.dash-tt{ font-size:13.5px; font-weight:900; letter-spacing:.4px }
.dash-chip{
  font-size:10px; font-weight:900; padding:3px 9px; border-radius:20px;
  background:rgba(148,163,184,.16); border:1px solid rgba(148,163,184,.32);
  color:#cbd5e1;
}
.dash-gt{ font-size:10.5px; font-weight:900; letter-spacing:.7px;
          color:var(--texto3); margin-bottom:7px }
.dash-nota{ font-size:11.5px; color:var(--texto3); font-weight:700; margin-top:8px }

/* ---- los KPI ---- */
.dash-kpis{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(78px,1fr));
  gap:8px; margin-bottom:12px;
}
.dash-kpi{
  background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.10);
  border-radius:11px; padding:11px 8px; text-align:center;
}
.dash-kpi.info{ border-color:rgba(59,130,246,.4); background:rgba(59,130,246,.10) }
.dash-kpi.ok{ border-color:rgba(34,197,94,.4); background:rgba(34,197,94,.10) }
.dash-kpi.alerta{ border-color:rgba(245,158,11,.4); background:rgba(245,158,11,.10) }
.dash-kpi-v{ font-size:21px; font-weight:900; line-height:1.05; color:#fff }
.dash-kpi-t{ font-size:9px; font-weight:800; color:var(--texto3);
             text-transform:uppercase; letter-spacing:.4px; margin-top:3px }

/* ---- el TAT ---- */
.dash-tat{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:7px }
.dash-tat-b{
  background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.10);
  border-radius:11px; padding:11px 6px; text-align:center;
}
.dash-tat-v{ font-size:17px; font-weight:900; color:#93c5fd;
             font-family:ui-monospace,monospace; line-height:1.1 }
.dash-tat-t{ font-size:8.5px; font-weight:900; color:var(--texto3);
             text-transform:uppercase; letter-spacing:.3px; margin-top:4px }

/* ---- las barras por dia ---- */
.dash-barra{ display:flex; align-items:center; gap:7px; margin-bottom:4px }
.dash-barra-d{ font-size:10px; font-weight:800; color:var(--texto3);
               width:36px; flex:0 0 auto; font-family:ui-monospace,monospace } */
.dash-barra-v{ font-size:10.5px; font-weight:900; color:#93c5fd;
               font-family:ui-monospace,monospace; flex:0 0 auto }

/* ---- la productividad ---- */
.dash-grupo{ margin-bottom:14px }
.dash-prod{ display:flex; align-items:center; gap:8px; margin-bottom:5px }
.dash-prod-n{ font-size:11.5px; font-weight:800; width:96px; flex:0 0 auto;
              white-space:nowrap; overflow:hidden; text-overflow:ellipsis } */
.dash-prod-v{ font-size:10px; font-weight:700; color:var(--texto3); flex:1 1 auto;
              white-space:nowrap; overflow:hidden; text-overflow:ellipsis }

/* ---- la ocupacion ---- */
.dash-zona{ display:flex; align-items:center; gap:9px; margin-bottom:6px }
.dash-zona-n{ font-size:11px; font-weight:900; width:74px; flex:0 0 auto }
.dash-zona-bar{ flex:1 1 auto; height:11px; border-radius:6px;
                background:rgba(255,255,255,.07); overflow:hidden }
.dash-zona-bar i{ display:block; height:100%; border-radius:6px }
.dash-zona-v{ font-size:10px; font-weight:800; color:var(--texto2);
              flex:0 0 auto; text-align:right; min-width:112px }
.dash-zona-v b{ color:#fff }
.dash-zona-v em{ font-style:normal; color:var(--texto3); display:block; font-size:9px }

/* ---- el historial ---- */
.dash-hist{ display:flex; flex-direction:column; gap:7px;
            max-height:70vh; overflow-y:auto }
.dash-hist-f{
  background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.09);
  border-radius:10px; padding:9px 11px;
}
.dash-hist-1{ display:flex; justify-content:space-between; align-items:baseline; gap:8px }
.dash-hist-1 b{ font-size:13.5px; font-weight:900; color:#60a5fa;
                font-family:ui-monospace,monospace }
.dash-hist-1 span{ font-size:9.5px; color:var(--texto3); font-weight:700 }
.dash-hist-2{ font-size:10.5px; color:var(--texto2); margin-top:3px }
.dash-hist-3{ display:flex; gap:11px; margin-top:5px; flex-wrap:wrap }
.dash-hist-d{ font-size:10px; color:var(--texto3); font-weight:700 }
.dash-hist-d b{ color:#fff; font-size:11.5px }
.dash-hist-4{ font-size:9.5px; color:var(--texto3); margin-top:4px; font-weight:600 }

/* ==========================================================================
   EL ERU: el aviso de si el pallet existe
   ========================================================================== */
.eru-aviso{
  font-size:11px; font-weight:800; color:var(--texto2);
  background:rgba(255,255,255,.05); border-radius:8px;
  padding:7px 10px; margin-top:9px;
  border:1px solid rgba(255,255,255,.10);
}
.eru-aviso b{ color:#fff; font-family:ui-monospace,monospace }

/* ==========================================================================
   LOS INVENTARIOS
   ========================================================================== */
.inv-avance{ display:flex; align-items:center; gap:9px; margin-top:12px }
.inv-avance-b{ flex:1; height:12px; border-radius:6px;
               background:rgba(255,255,255,.08); overflow:hidden }
.inv-avance-b i{ display:block; height:100%;
                 background:linear-gradient(90deg,#3b82f6,#22c55e) }
.inv-avance span{ font-size:12px; font-weight:900; color:#93c5fd; min-width:38px;
                  text-align:right }

.inv-tab{
  min-height:40px; border-radius:10px; cursor:pointer; font-family:inherit;
  font-size:10.5px; font-weight:900; letter-spacing:.3px;
  background:rgba(255,255,255,.05); color:var(--texto3);
  border:1px solid rgba(255,255,255,.12);
}
.inv-tab.activo{ background:rgba(59,130,246,.18);
                 border-color:rgba(59,130,246,.5); color:#93c5fd }

.inv-lin{
  background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.09);
  border-radius:10px; padding:9px 11px; margin-bottom:7px;
}
.inv-lin-1{ display:flex; justify-content:space-between; align-items:baseline; gap:8px }
.inv-lin-u{ font-size:15px; font-weight:900;
            font-family:ui-monospace,monospace; color:#fff }
.inv-lin-l{ font-size:9.5px; color:#60a5fa; font-weight:800;
            font-family:ui-monospace,monospace }
.inv-lin-v{ font-size:10px; color:var(--texto3); font-weight:800 }
.inv-lin-2{ font-size:10.5px; color:var(--texto2); margin-top:4px }
.inv-lin-2 b{ color:#fff }
.inv-lin-3{ display:flex; align-items:center; gap:8px; margin-top:7px; flex-wrap:wrap }
.inv-esperado{ font-size:11px; color:var(--texto3); font-weight:700 }
.inv-esperado b{ color:#fff; font-size:12.5px }
.inv-cant{
  width:106px; height:38px; border-radius:9px; text-align:center;
  font-size:15px; font-weight:900; font-family:inherit;
  background:#0b1220; color:#fff; border:1px solid var(--borde);
}
.inv-ok{
  min-height:38px; padding:0 15px; border-radius:9px; cursor:pointer;
  font-family:inherit; font-size:12px; font-weight:900; color:#fff;
  background:linear-gradient(180deg,#3b82f6,#2563eb); border:0;
}
.inv-dif{ font-size:11.5px; font-weight:900 }
.inv-lin-4{ display:flex; gap:7px; align-items:center; margin-top:8px }
.inv-lin-4 select{ flex:1; margin:0 }
.inv-buscar{ margin-bottom:9px }
.inv-buscar input{
  width:100%; height:42px; border-radius:10px; padding:0 12px;
  font-size:14px; font-weight:700; font-family:inherit;
  background:#0b1220; color:var(--texto); border:1px solid var(--borde);
}

.eri-fila{
  display:grid; grid-template-columns:78px 1fr auto; gap:6px;
  align-items:baseline; padding:6px 0;
  border-bottom:1px solid rgba(255,255,255,.06);
}
.eri-fila b{ font-size:11.5px; font-family:ui-monospace,monospace; color:#60a5fa }
.eri-fila span{ font-size:10.5px; color:var(--texto2) }
.eri-fila em{ font-size:12.5px; font-weight:900; font-style:normal }
.eri-fila i{ grid-column:1 / -1; font-size:9.5px; font-style:normal;
             color:var(--texto3); font-weight:700 }

/* ==========================================================================
   CONFIGURACIÓN
   ========================================================================== */
.cfg-tabs{
  display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:12px;
}
.cfg-tab{
  min-height:40px; border-radius:10px; cursor:pointer; font-family:inherit;
  font-size:10px; font-weight:900; letter-spacing:.3px;
  background:rgba(255,255,255,.05); color:var(--texto3);
  border:1px solid rgba(255,255,255,.12);
}
.cfg-tab.activo{ background:rgba(59,130,246,.18);
                 border-color:rgba(59,130,246,.5); color:#93c5fd }

.cfg-regla{
  display:flex; align-items:center; gap:9px;
  padding:8px 0; border-bottom:1px solid rgba(255,255,255,.06);
}
.cfg-prio{ font-size:11px; font-weight:900; color:#60a5fa;
           font-family:ui-monospace,monospace; width:26px; flex:0 0 auto }
.cfg-regla-tx{ flex:1; display:flex; flex-direction:column; gap:1px; min-width:0 }
.cfg-regla-tx b{ font-size:13px; font-weight:900; color:#fff }
.cfg-regla-tx span{ font-size:10px; color:var(--texto3); font-weight:700 }
.cfg-x{
  width:32px; height:32px; flex:0 0 auto; border-radius:8px; cursor:pointer;
  font-family:inherit; font-size:12px; font-weight:900;
  background:rgba(239,68,68,.16); color:#fca5a5;
  border:1px solid rgba(239,68,68,.4);
}

.cfg-ubi{
  display:flex; align-items:center; gap:9px; flex-wrap:wrap;
  padding:8px 10px; margin-bottom:6px; border-radius:9px;
  background:rgba(255,255,255,.035);
}
.cfg-ubi-1{ flex:1 1 120px; display:flex; flex-direction:column; gap:1px; min-width:0 }
.cfg-ubi-1 b{ font-size:12.5px; font-family:ui-monospace,monospace; color:#fff }
.cfg-ubi-1 span{ font-size:9.5px; color:var(--texto3); font-weight:700 }
.cfg-ubi-2{ flex:2 1 160px; font-size:10px; color:var(--texto2); font-weight:700 }
.cfg-btn-bloq{
  min-height:34px; padding:0 12px; border-radius:8px; cursor:pointer;
  font-family:inherit; font-size:10px; font-weight:900;
  background:rgba(239,68,68,.16); color:#fca5a5;
  border:1px solid rgba(239,68,68,.4);
}
.cfg-btn-libre{
  min-height:34px; padding:0 12px; border-radius:8px; cursor:pointer;
  font-family:inherit; font-size:10px; font-weight:900;
  background:rgba(34,197,94,.16); color:#6ee7b7;
  border:1px solid rgba(34,197,94,.4);
}

.cfg-lpn{ display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-top:12px }
.cfg-lpn-b{
  background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.10);
  border-radius:11px; padding:14px 10px; text-align:center;
}
.cfg-lpn-v{ font-size:21px; font-weight:900; color:#93c5fd;
            font-family:ui-monospace,monospace; line-height:1.1 }
.cfg-lpn-t{ font-size:9px; font-weight:900; color:var(--texto3);
            text-transform:uppercase; letter-spacing:.4px; margin-top:5px }

.cfg-tar-1{ display:flex; justify-content:space-between; align-items:baseline; gap:8px }
.cfg-tar-1 b{ font-size:13px; font-weight:900 }
.cfg-tar-p{ font-size:9px; font-weight:900; color:var(--texto3);
            text-transform:uppercase }
.cfg-tar-2{ font-size:11.5px; color:var(--texto2); margin-top:5px }
.cfg-tar-3{ font-size:11px; color:var(--texto2); margin-top:5px }
.cfg-tar-4{ font-size:10px; color:var(--texto3); margin-top:4px; font-weight:700 }

.cfg-perm-cab{
  display:grid; grid-template-columns:1fr 62px 62px 62px; gap:5px;
  align-items:center; padding-bottom:8px;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.cfg-perm-rol{ font-size:9px; font-weight:900; color:var(--texto3);
               text-align:center; text-transform:uppercase }
.cfg-perm-fila{
  display:grid; grid-template-columns:1fr 62px 62px 62px; gap:5px;
  align-items:center; padding:6px 0;
  border-bottom:1px solid rgba(255,255,255,.05);
}
.cfg-perm-n{ font-size:11.5px; font-weight:700; color:var(--texto2) }
.cfg-perm-x{
  height:34px; border-radius:8px; cursor:pointer; font-family:inherit;
  font-size:14px; font-weight:900;
  background:rgba(255,255,255,.04); color:var(--texto3);
  border:1px solid rgba(255,255,255,.10);
}
.cfg-perm-x.on{ background:rgba(34,197,94,.18); color:#6ee7b7;
                border-color:rgba(34,197,94,.45) }
.cfg-perm-x:disabled{ opacity:.6; cursor:default }

/* ==========================================================================
   LOS KPI NUEVOS
   ========================================================================== */
.dash-horas{
  display:flex; gap:3px; align-items:flex-end; height:110px;
  margin-top:12px; padding-bottom:2px;
}
.dash-hora{
  flex:1 1 0; display:flex; flex-direction:column;
  align-items:center; justify-content:flex-end; height:100%; gap:2px;
}
.dash-hora-b{
  flex:1 1 auto; width:100%; display:flex; align-items:flex-end;
}
.dash-hora-b i{
  display:block; width:100%; border-radius:4px 4px 0 0;
  background:linear-gradient(180deg,#60a5fa,#2563eb);
}
.dash-hora-n{ font-size:8.5px; font-weight:900; color:#93c5fd }
.dash-hora-h{ font-size:7.5px; font-weight:800; color:var(--texto3) }

.dash-pend{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(105px,1fr));
  gap:8px; margin-top:12px;
}
.dash-pend-f{
  display:flex; flex-direction:column; align-items:center; gap:2px;
  background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.09);
  border-radius:10px; padding:10px 6px;
}
.dash-pend-n{ font-size:19px; font-weight:900; line-height:1.05 }
.dash-pend-t{ font-size:8.5px; font-weight:800; color:var(--texto3);
              text-transform:uppercase; letter-spacing:.3px; text-align:center }

   EL PIE DE LA LISTA DE PENDIENTES
   ========================================================================== */
.pend-pie{
  display:flex; align-items:center; justify-content:center; gap:8px;
  padding:16px 10px; font-size:12px; font-weight:800; color:var(--texto3);
}
.pend-pie .spin{ width:15px; height:15px }

/* el scroll de las listas largas */
.dash-hist{ scrollbar-width:thin }
.card::-webkit-scrollbar{ width:5px }
.card::-webkit-scrollbar-thumb{
  background:rgba(255,255,255,.16); border-radius:3px;
}


/* ==========================================================================
   LO FISCAL
   ========================================================================== */
.fis-nums{
  display:grid; grid-template-columns:repeat(4,1fr); gap:8px;
}
@media (max-width:520px){ .fis-nums{ grid-template-columns:repeat(2,1fr) } }
.fis-nums > div{
  background:rgba(255,255,255,.035);
  border:1px solid rgba(255,255,255,.07);
  border-radius:10px; padding:10px 8px; text-align:center;
}
.fis-nums b{ display:block; font-size:17px; font-weight:900; letter-spacing:-.3px }
.fis-nums span{ display:block; font-size:10px; font-weight:800;
  text-transform:uppercase; color:var(--texto3); margin-top:3px; letter-spacing:.4px }

/* ---- la lista de SKU con su costo ---- */
.fis-sku-cab, .fis-sku{
  display:grid; grid-template-columns:96px 1fr 96px; gap:8px; align-items:center;
}
.fis-sku-cab{
  font-size:9.5px; font-weight:900; text-transform:uppercase;
  color:var(--texto3); letter-spacing:.5px; padding:6px 4px;
  border-bottom:1px solid rgba(255,255,255,.07);
}
.fis-sku{
  padding:7px 4px; border-bottom:1px solid rgba(255,255,255,.04);
}
.fis-sku .fis-costo{
  height:34px; text-align:right; font-size:13.5px; font-weight:800;
  padding:0 8px; margin:0;
}
.fis-cod{ font-family:ui-monospace,monospace; font-size:12px; font-weight:800 }
.fis-desc{ font-size:12.5px; color:var(--texto2); overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap }

/* ---- las tablas ---- */
.fis-tabla{ display:flex; flex-direction:column }
.fis-tr{
  display:grid; grid-template-columns:74px 82px 1fr 74px 82px;
  gap:6px; align-items:center; padding:8px 4px;
  border-bottom:1px solid rgba(255,255,255,.04); font-size:12px;
}
.fis-tr.fis-th{
  font-size:9px; font-weight:900; color:var(--texto3);
  text-transform:uppercase; letter-spacing:.4px;
  border-bottom:1px solid rgba(255,255,255,.09);
}
.fis-tr span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.fis-pos{ color:#6ee7b7; font-weight:800 }
.fis-neg{ color:#fca5a5; font-weight:800 }

/* el rastro tiene 4 columnas */
#fisListaRastro .fis-tr{ grid-template-columns:78px 78px 1fr 1.4fr }
#fisListaRastro .fis-tr.fis-th span:nth-child(4){ text-align:left }

/* ---- las actas ---- */
.acta{ border-left:3px solid var(--alerta) !important }
.acta-cab{ display:flex; justify-content:space-between; align-items:center; gap:8px }
.acta-folio{ font-family:ui-monospace,monospace; font-size:14px; font-weight:900;
  letter-spacing:.3px }
.acta-datos{ font-size:12.5px; color:var(--texto2); margin-top:6px }
.acta-motivo{ font-size:13px; margin-top:6px; font-weight:700 }
.acta-pie{ font-size:11px; color:var(--texto3); margin-top:8px;
  padding-top:8px; border-top:1px dashed rgba(255,255,255,.08) }

/* ---- el modal ancho, con campos ---- */
.modal-ancho{ max-width:520px }
.modal-campos{ margin-top:12px; text-align:left }
.modal-campos label{
  display:block; font-size:10.5px; font-weight:900; text-transform:uppercase;
  color:var(--texto3); letter-spacing:.4px; margin-bottom:4px;
}
.modal-campos input, .modal-campos select{
  width:100%; height:38px; margin-bottom:2px;
}
.modal-campos .fila-datos{ margin-bottom:0 }

html[data-tema="dia"] .fis-nums > div{ background:rgba(0,0,0,.03); border-color:rgba(0,0,0,.07) }
html[data-tema="dia"] .fis-sku-cab,
html[data-tema="dia"] .fis-tr{ border-color:rgba(0,0,0,.07) }



/* ==========================================================================
   LOS ESQUELETOS  (en vez de rueditas)
   ========================================================================== */
.esq-lista{ display:flex; flex-direction:column; gap:8px; padding:4px 0 }
.esq-fila{
  display:flex; flex-direction:column; gap:6px; justify-content:center;
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.07);
  border-radius:10px; padding:10px 12px;
}
.esq-b{
  display:block; height:11px; border-radius:5px;
  background:linear-gradient(90deg,
    rgba(255,255,255,.07) 0%,
    rgba(255,255,255,.16) 50%,
    rgba(255,255,255,.07) 100%);
  background-size: 200% 100%;
  animation: esqBrilla 1.3s ease-in-out infinite;
}
.esq-1{ width:38% }
.esq-2{ width:72% }
.esq-3{ width:52% }
@keyframes esqBrilla{
  0%  { background-position: 200% 0 }
  100%{ background-position: -200% 0 }
}
html[data-tema="dia"] .esq-fila{ background:rgba(0,0,0,.03); border-color:rgba(0,0,0,.07) }
html[data-tema="dia"] .esq-b{
  background:linear-gradient(90deg, rgba(0,0,0,.06) 0%, rgba(0,0,0,.13) 50%, rgba(0,0,0,.06) 100%);
  background-size:200% 100%;
}


/* ==========================================================================


/* ==========================================================================
   LAS BARRAS DEL DASHBOARD  (arregladas)
   --------------------------------------------------------------------------
   ⚠️  EL BUG QUE TENIAN:
       La barra era un <span style="width:100%"> metido en un display:flex.
       En flex, "width:100%" es el 100% de TODO el contenedor, no de lo
       que sobra. Como el porcentaje llegaba a 100, la barra se salia de
       la tarjeta y empujaba el texto de la derecha fuera de la pantalla.

   LA SOLUCION:
       Una "pista" que se queda con lo que sobra (flex:1) y ADENTRO
       el relleno con el porcentaje. Asi el 100% es el 100% de la pista.
   ========================================================================== */

/* ---- el TAT por dia ---- */
.dash-barra-p{
  flex: 1 1 auto; min-width: 0; height: 14px;
  background: rgba(255,255,255,.06);
  border-radius: 7px; overflow: hidden;
}
.dash-barra-p > i{
  display: block; height: 100%; border-radius: 7px;
  background: linear-gradient(90deg,#3b82f6,#60a5fa);
}

/* ---- la productividad ---- */
.dash-prod-p{
  flex: 1 1 auto; min-width: 0; height: 14px;
  background: rgba(255,255,255,.06);
  border-radius: 7px; overflow: hidden;
}
.dash-prod-p > i{
  display: block; height: 100%; border-radius: 7px;
  opacity: .92;
}
/* ---- que NINGUNA fila se desborde ---- */
.dash-barra, .dash-prod, .dash-zona-f{
  overflow: hidden; max-width: 100%;
}
.dash-barra-v, .dash-prod-v{
  flex: 0 1 auto; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

html[data-tema="dia"] .dash-barra-p,
html[data-tema="dia"] .dash-prod-p,
html[data-tema="dia"] .dash-zona-p{ background: rgba(0,0,0,.07) }



/* ---- la etiqueta del nombre: que no se estire ni se desborde ---- */
.dash-prod-n{
  flex: 0 1 auto; min-width: 0; max-width: 46%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.dash-prod{
  overflow: hidden; max-width: 100%;
}
/* ---- y el cuadro del grupo ---- */
.dash-grupo{ overflow: hidden; max-width: 100% }
.dash-prod + .dash-prod{ margin-top: 3px }

/* ==========================================================================
   LA TARJETA DEL TRANSITO
   ========================================================================== */
.tr-cab{ display:flex; justify-content:space-between; align-items:flex-start; gap:8px }
/* ---- las lineas: SKU + descripcion + cantidad ---- */
.tr-lineas{
  margin-top:9px; border-top:1px solid rgba(255,255,255,.07);
  padding-top:8px; display:flex; flex-direction:column; gap:5px;
}
.tr-l{
  display:grid; grid-template-columns:70px 1fr auto;
  gap:8px; align-items:baseline; font-size:12px;
}
.tr-sku{
  font-family:ui-monospace,monospace; font-weight:900; font-size:11.5px;
  color:var(--info); letter-spacing:-.2px;
}
.tr-desc{
  color:var(--texto2); overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; font-size:11.5px;
}
.tr-cant{
  font-family:ui-monospace,monospace; font-weight:900; font-size:11.5px;
  color:var(--texto); white-space:nowrap;
}
.tr-mas{ font-size:11px; color:var(--texto3); font-weight:700; padding-top:2px }

html[data-tema="dia"] .tr-lineas{ border-color:rgba(0,0,0,.08) }


/* ---- la X chica de cada linea ---- */
.tr-l{
  display:grid; grid-template-columns:70px 1fr auto 30px;
  gap:8px; align-items:center; font-size:12px;
}
.tr-lx{
  width:30px; height:30px; border-radius:8px; padding:0;
  background:rgba(239,68,68,.10); border:1px solid rgba(239,68,68,.30);
  color:#fca5a5; font-size:14px; font-weight:900; line-height:1;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; transition:background .14s, transform .1s;
}
.tr-lx:active{ background:rgba(239,68,68,.28); transform:scale(.92) }
/* ==========================================================================
   EL EXPLORADOR DE DATOS
   ========================================================================== */

/* ---- la lista de tablas ---- */
.dat-t{
  padding:9px 6px; border-bottom:1px solid rgba(255,255,255,.05);
  cursor:pointer; transition:background .12s;
}
.dat-t:active{ background:rgba(255,255,255,.05) }
.dat-t-cab{ display:flex; align-items:center; gap:7px }
.dat-t-n{
  font-family:ui-monospace,monospace; font-size:13.5px; font-weight:900;
  color:var(--info); flex:1; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.dat-t-v{
  font-size:8.5px; font-weight:900; letter-spacing:.4px;
  background:rgba(139,92,246,.18); color:#c4b5fd;
  border-radius:4px; padding:2px 5px;
}
.dat-t-f{
  font-family:ui-monospace,monospace; font-size:12px; font-weight:900;
  color:var(--texto2); white-space:nowrap;
}
.dat-t-d{ font-size:11.5px; color:var(--texto3); margin-top:3px; line-height:1.35 }
.dat-t-c{ font-size:10px; color:var(--texto3); margin-top:2px; font-weight:700 }

/* ---- las columnas de la tabla abierta ---- */
.dat-col{
  display:inline-block; font-family:ui-monospace,monospace; font-size:10.5px;
  background:rgba(255,255,255,.06); border-radius:4px;
  padding:2px 5px; margin:2px 3px 2px 0;
}
.dat-col.pk{ background:rgba(251,191,36,.16); color:#fbbf24; font-weight:900 }

/* ---- la grilla ---- */
.dat-scroll{
  overflow:auto; max-height:62vh; border-radius:9px;
  border:1px solid rgba(255,255,255,.08); margin-top:8px;
}
.dat-grid{
  border-collapse:collapse; font-size:11.5px; white-space:nowrap;
  width:max-content; min-width:100%;
}
.dat-grid th{
  position:sticky; top:0; z-index:2;
  background:#0d1524; color:var(--info);
  font-family:ui-monospace,monospace; font-size:10.5px; font-weight:900;
  text-align:left; padding:7px 9px; white-space:nowrap;
  border-bottom:2px solid rgba(59,130,246,.35);
  cursor:pointer; user-select:none;
}
.dat-grid th:active{ background:#16223a }
.dat-grid td{
  padding:5px 9px; border-bottom:1px solid rgba(255,255,255,.04);
  color:var(--texto2); max-width:280px;
  overflow:hidden; text-overflow:ellipsis;
}
.dat-grid tbody tr:nth-child(even){ background:rgba(255,255,255,.018) }
.dat-grid tbody tr:active{ background:rgba(59,130,246,.10) }
.dat-num{ font-family:ui-monospace,monospace; color:#6ee7b7; font-weight:800 }
.dat-nulo{ color:var(--texto3); font-style:italic }
.dat-pie{ font-size:11px; color:var(--texto3); padding:8px 2px 0; font-weight:700 }

/* ---- el esquema SQL ---- */
.dat-sql{ margin-top:12px; max-height:64vh; overflow:auto }
.dat-sql-o{ margin-bottom:12px }
.dat-sql-o b{
  display:block; font-family:ui-monospace,monospace; font-size:11px;
  color:#fbbf24; margin-bottom:4px;
}
.dat-sql-o pre{
  background:rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.07);
  border-radius:7px; padding:9px 11px; margin:0;
  font-family:ui-monospace,monospace; font-size:10.5px; line-height:1.5;
  color:var(--texto2); overflow-x:auto; white-space:pre;
}

html[data-tema="dia"] .dat-t{ border-color:rgba(0,0,0,.07) }
html[data-tema="dia"] .dat-grid th{ background:#e7ebf2; color:#0b74d1 }
html[data-tema="dia"] .dat-col{ background:rgba(0,0,0,.06) }
html[data-tema="dia"] .dat-sql-o pre{ background:rgba(0,0,0,.04) }

/* ---- en pantalla grande, la grilla se ve mejor ---- */
@media (min-width:900px){
  .dat-grid{ font-size:12.5px }
  .dat-grid td{ max-width:none }
  .dat-scroll{ max-height:70vh }
}


/* ==========================================================================
   LA SALUD, LOS GRAFICOS Y LOS REPORTES
   ========================================================================== */
.dat-kpis{
  display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin-top:10px;
}
@media (min-width:600px){ .dat-kpis{ grid-template-columns:repeat(6,1fr) } }
.dat-kpi{
  background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.07);
  border-radius:9px; padding:9px 6px; text-align:center; min-width:0;
}
.dat-kpi b{ display:block; font-size:16px; font-weight:900; letter-spacing:-.4px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.dat-kpi span{ display:block; font-size:8.5px; font-weight:800; color:var(--texto3);
  text-transform:uppercase; letter-spacing:.3px; margin-top:3px }
.dat-kpi.alerta b{ color:#fca5a5 }
.dat-kpi.ok b{ color:#6ee7b7 }

/* ---- los avisos ---- */
.sal-av{
  display:flex; align-items:center; gap:9px; padding:9px 11px;
  border-radius:9px; margin-bottom:6px; cursor:pointer;
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.06);
}
.sal-av.alta{ background:rgba(239,68,68,.10); border-color:rgba(239,68,68,.28) }
.sal-av.media{ background:rgba(251,191,36,.09); border-color:rgba(251,191,36,.26) }
.sal-av-n{
  font-size:8.5px; font-weight:900; letter-spacing:.4px;
  padding:2px 6px; border-radius:4px; flex:0 0 auto;
  background:rgba(255,255,255,.10);
}
.sal-av.alta .sal-av-n{ background:#ef4444; color:#fff }
.sal-av.media .sal-av-n{ background:#f59e0b; color:#2a1a00 }

/* ---- el historico ---- */
.sal-h{ display:grid; grid-template-columns:82px 1fr 68px; gap:7px;
  align-items:center; margin-bottom:4px; font-size:10.5px }
.sal-h-f{ color:var(--texto3); font-family:ui-monospace,monospace; font-weight:700 }
.sal-h-b{ height:12px; background:rgba(255,255,255,.06); border-radius:6px; overflow:hidden }
.sal-h-b > i{ display:block; height:100%; border-radius:6px;
  background:linear-gradient(90deg,#3b82f6,#60a5fa) }
.sal-h-v{ text-align:right; font-family:ui-monospace,monospace; font-weight:900;
  color:var(--texto2) }

/* ---- las tablas mas grandes ---- */
.sal-t{ display:flex; justify-content:space-between; align-items:center;
  padding:6px 4px; border-bottom:1px solid rgba(255,255,255,.04);
  font-size:12px; cursor:pointer }
.sal-t-n{ font-family:ui-monospace,monospace; color:var(--info); font-weight:800 }
.sal-t-v{ font-family:ui-monospace,monospace; font-weight:900; color:var(--texto2) }

/* ---- los graficos de barras ---- */
.sal-g{ display:grid; grid-template-columns:100px 1fr 62px; gap:8px;
  align-items:center; margin-bottom:5px; font-size:11.5px }
.sal-g-e{ color:var(--texto2); overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; font-weight:700 }
.sal-g-b{ height:15px; background:rgba(255,255,255,.06); border-radius:8px; overflow:hidden }
.sal-g-b > i{ display:block; height:100%; border-radius:8px;
  background:linear-gradient(90deg,#3b82f6,#60a5fa) }
.sal-g-v{ text-align:right; font-family:ui-monospace,monospace; font-weight:900;
  color:var(--texto); overflow:hidden; text-overflow:ellipsis }

/* ---- los reportes ---- */
.rep{
  position:relative; padding:11px 12px; margin-bottom:7px;
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.07);
  border-radius:10px; cursor:pointer;
}
.rep:active{ background:rgba(59,130,246,.10) }
.rep-cab{ display:flex; align-items:center; gap:7px; font-size:14px; font-weight:900 }
.rep-d{ font-size:11px; color:var(--texto3); margin-top:4px; font-weight:700 }
.rep-x{
  position:absolute; top:9px; right:9px;
  width:26px; height:26px; border-radius:7px; padding:0;
  background:rgba(239,68,68,.10); border:1px solid rgba(239,68,68,.28);
  color:#fca5a5; font-size:12px; font-weight:900;
  display:flex; align-items:center; justify-content:center;
}

html[data-tema="dia"] .dat-kpi{ background:rgba(0,0,0,.03); border-color:rgba(0,0,0,.07) }
html[data-tema="dia"] .sal-av,
html[data-tema="dia"] .rep{ background:rgba(0,0,0,.02); border-color:rgba(0,0,0,.07) }


/* ==========================================================================
   EL CENTRO DE DESCARGAS
   ========================================================================== */
.desc-filtros{
  background:rgba(255,255,255,.028);
  border:1px solid rgba(255,255,255,.07);
  border-radius:11px; padding:12px 13px;
}
.desc-tt{
  font-size:9.5px; font-weight:900; text-transform:uppercase;
  letter-spacing:.5px; color:var(--texto3);
}
.desc-filtros label{ font-size:10px }
.desc-filtros input, .desc-filtros select{ height:34px; font-size:12.5px }

/* ---- la tarjeta de cada reporte ---- */
.desc-r{
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.08);
  border-radius:11px; padding:13px 14px; margin-bottom:9px;
}
.desc-r-cab{
  display:flex; align-items:flex-start; gap:8px; justify-content:space-between;
}
.desc-r-cab b{ font-size:14px; font-weight:900; line-height:1.25; flex:1; min-width:0 }
.desc-niv{
  flex:0 0 auto; font-size:8px; font-weight:900; letter-spacing:.4px;
  padding:2px 6px; border-radius:4px; margin-top:2px;
}
.desc-niv.det{ background:rgba(59,130,246,.20); color:#93c5fd }
.desc-niv.res{ background:rgba(34,197,94,.18); color:#6ee7b7 }
.desc-r-q{ font-size:12.5px; color:var(--texto2); margin-top:7px; line-height:1.45 }
.desc-r-p{
  font-size:11.5px; color:var(--texto3); margin-top:5px; line-height:1.45;
  padding-left:9px; border-left:2px solid rgba(255,255,255,.10);
}

html[data-tema="dia"] .desc-filtros{ background:rgba(0,0,0,.02); border-color:rgba(0,0,0,.07) }
html[data-tema="dia"] .desc-r{ background:rgba(0,0,0,.02); border-color:rgba(0,0,0,.07) }

/* ---- en pantalla grande, 2 columnas ---- */
@media (min-width:820px){
  #descLista{
    display:grid; grid-template-columns:1fr 1fr; gap:9px;
  }
  #descLista .desc-r{ margin-bottom:0 }
}


/* ==========================================================================
   EL CENTRO DE CARGAS MASIVAS
   ========================================================================== */

/* ---- los 4 pasos ---- */
.carg-pasos{
  display:grid; grid-template-columns:repeat(4,1fr); gap:6px; margin-top:12px;
}
@media (max-width:520px){ .carg-pasos{ grid-template-columns:repeat(2,1fr) } }
.carg-paso{
  background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.07);
  border-radius:9px; padding:8px 6px; text-align:center;
}
.carg-paso b{
  display:block; font-size:17px; font-weight:900; color:var(--info);
  line-height:1;
}
.carg-paso span{
  display:block; font-size:9px; font-weight:800; color:var(--texto3);
  margin-top:4px; line-height:1.25;
}

/* ---- la tarjeta de cada tabla ---- */
.carg-r{
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.08);
  border-radius:11px; padding:13px 14px; margin-bottom:9px;
}
.carg-r-cab{
  display:flex; align-items:flex-start; gap:8px; justify-content:space-between;
}
.carg-r-cab b{ font-size:14px; font-weight:900; flex:1; min-width:0; line-height:1.25 }
.carg-r-n{
  flex:0 0 auto; font-family:ui-monospace,monospace; font-size:11px;
  font-weight:900; color:var(--texto2);
  background:rgba(255,255,255,.06); border-radius:5px; padding:2px 7px;
}
.carg-r-q{ font-size:12.5px; color:var(--texto2); margin-top:7px; line-height:1.45 }
.carg-r-cols{ margin-top:9px; display:flex; flex-wrap:wrap; gap:4px }

/* ---- las columnas ---- */
.carg-col{
  font-family:ui-monospace,monospace; font-size:10px; font-weight:700;
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.07);
  border-radius:4px; padding:2px 5px; color:var(--texto3);
}
.carg-col.ob{
  background:rgba(59,130,246,.14); border-color:rgba(59,130,246,.30);
  color:#93c5fd;
}

/* ---- los numeros de la revision ---- */
.carg-nums{
  display:grid; grid-template-columns:repeat(5,1fr); gap:6px;
}
@media (max-width:560px){ .carg-nums{ grid-template-columns:repeat(3,1fr) } }
.carg-nums > div{
  background:rgba(255,255,255,.035); border:1px solid rgba(255,255,255,.07);
  border-radius:9px; padding:9px 5px; text-align:center;
}
.carg-nums b{ display:block; font-size:18px; font-weight:900; line-height:1.05 }
.carg-nums span{
  display:block; font-size:8px; font-weight:800; color:var(--texto3);
  text-transform:uppercase; letter-spacing:.25px; margin-top:3px;
}
.carg-nums .ok b{ color:#6ee7b7 }
.carg-nums .mal b{ color:#fca5a5 }

.carg-cols{ font-size:11.5px; color:var(--texto2) }
.carg-cols b{ font-size:10px; text-transform:uppercase; color:var(--texto3);
  letter-spacing:.3px }

/* ---- los errores ---- */
.carg-err{ margin-top:14px }
.carg-err-tt{
  font-size:9.5px; font-weight:900; text-transform:uppercase;
  letter-spacing:.5px; color:#fca5a5; margin-bottom:7px;
}
.carg-err-f{
  font-size:11.5px; color:var(--texto2); padding:7px 10px; margin-bottom:4px;
  background:rgba(239,68,68,.07); border-left:2px solid rgba(239,68,68,.5);
  border-radius:0 6px 6px 0; line-height:1.4;
}
.carg-err-f b{ color:#fca5a5; font-family:ui-monospace,monospace }
.carg-err-f span{ color:var(--texto3); font-size:11px }

html[data-tema="dia"] .carg-paso,
html[data-tema="dia"] .carg-r,
html[data-tema="dia"] .carg-nums > div{
  background:rgba(0,0,0,.02); border-color:rgba(0,0,0,.07)
}
html[data-tema="dia"] .carg-col{ background:rgba(0,0,0,.04) }

@media (min-width:820px){
  #cargLista{ display:grid; grid-template-columns:1fr 1fr; gap:9px }
  #cargLista .carg-r{ margin-bottom:0 }
}


/* ==========================================================================
   EL BOTÓN DE LA CÁMARA (uno solo para todos los campos)
   ========================================================================== */
.cam-caja{
  display:flex !important; align-items:stretch; gap:7px;
  width:100%; min-width:0;
}
.cam-caja > input,
.cam-caja > select,
.cam-caja > textarea{
  flex:1 1 auto !important; min-width:0 !important;
  width:auto !important; margin:0 !important;
}
.cam-mini{
  flex:0 0 auto; width:44px; min-width:44px; height:auto; min-height:38px;
  padding:0; margin:0; border-radius:9px;
  background:rgba(59,130,246,.14);
  border:1px solid rgba(59,130,246,.34);
  color:#93c5fd; font-size:18px; line-height:1;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; transition:background .13s, transform .1s;
  -webkit-tap-highlight-color:transparent;
}
.cam-mini:active{
  background:rgba(59,130,246,.30);
  transform:scale(.93);
}
/* ---- si el campo está adentro de una fila de datos, que no se rompa ---- */
.fila-datos .cam-caja{ margin:0 }
.cam-caja label{ display:none }

/* ---- en pantalla grande el botón un poco más chico ---- */
@media (min-width:820px){
  .cam-mini{ width:40px; min-width:40px; font-size:16px }
}

html[data-tema="dia"] .cam-mini{
  background:rgba(11,116,209,.10);
  border-color:rgba(11,116,209,.28);
  color:#0b74d1;
}


/* ==========================================================================
   🖥️  EL MODO PC
   --------------------------------------------------------------------------
   En el celular la app es una columna (que es lo correcto: hay poco ancho).

   En una pantalla de escritorio eso es un hilo en el medio con los costados
   vacíos. Acá se aprovecha el ancho:

      · el contenido pasa de 720 a 1280 px
      · la barra de abajo pasa a ser una barra ARRIBA (arriba se ve mejor)
      · las tarjetas se ponen en 2 o 3 columnas
      · las tablas y los datos usan todo el ancho
      · los tamaños de letra suben un poco (se lee de más lejos)

   Todo esto SOLO en pantallas de 900px o más. El celular no cambia.
   ========================================================================== */

@media (min-width: 900px) {

  /* ---- el ancho del contenido ---- */
  main{
    max-width: 1280px !important;
    padding-left: 28px !important;
    padding-right: 28px !important;
    /* ---- lugar para la barra fija de arriba ----
       ⚠️  Antes eran 76px y quedaba un hueco negro grande.
       La barra mide ~62px. Con 64px alcanza justo. */
    padding-top: 64px !important;
    padding-bottom: 40px !important;
  }
  /* ---- la cabecera no necesita aire extra: la barra ya dejó el suyo ---- */
  header, .cab, #cab, header.cab{ padding-top: 0 !important }
  /* (el título ya no necesita bajar: la barra dejó el lugar) */

  /* ---- la barra de abajo pasa a ser de arriba ---- */
  /* ⚠️  LA BARRA VA FIJA ARRIBA, NO 'sticky'.
     sticky la dejaba donde estaba en el HTML (que es al final del body)
     y quedaba flotando en el medio de la pantalla.
     fixed la pega al borde de arriba siempre. */
  nav{
    position: fixed !important;
    top: 0 !important;
    bottom: auto !important;
    left: 0 !important;
    right: 0 !important;
    padding: 8px 18px !important;
    gap: 6px !important;
    justify-content: center !important;
    border-top: 0 !important;
    border-bottom: 1px solid rgba(69,85,112,.5) !important;
    box-shadow: 0 -6px 22px rgba(0,0,0,0), 0 6px 22px rgba(0,0,0,.55) !important;
    margin-bottom: 18px;
  }
  nav button{
    min-width: 108px !important;
    max-width: none !important;
    height: 40px !important;
    font-size: 12.5px !important;
    border-radius: 9px !important;
    padding: 0 14px !important;
  }
  nav button::before, nav button::after{ display:none !important }

  /* ---- la barra de arriba (título) también más ancha ---- */
  header, .cab, #cab, header.cab{
    max-width: 1280px;
  }

  /* ---- las tarjetas: 2 columnas ---- */
  #v-inicio .card,
  #v-ubicar .card,
  #v-reubicar .card,
  #v-consultar .card,
  #v-auditar .card,
  #v-descuadres .card,
  #v-inventarios .card,
  #v-fiscal .card,
  #v-pallet .card{
    /* nada: se apilan, pero aprovechan el ancho */
  }

  /* ---- las pantallas de datos, en 2 columnas ---- */
  #v-dashboard > .card,
  #v-dashboard > .fusion-panel > .card,
  #v-fiscal > .card{
    margin-bottom: 14px;
  }

  /* ⚠️ ACÁ ESTABA EL BUG:
     Había un "#v-dashboard{ display: block }
" que FORZABA el dashboard
     a mostrarse siempre en PC. Por eso la tarjeta DASHBOARD aparecía
     dentro de Ubicar.
     NO se pone display acá: la visibilidad la maneja .vista/.activa. */

  /* ---- las listas largas, más anchas ---- */
  .dat-scroll{ max-height: 68vh !important }
  .dat-grid{ font-size: 12.5px !important }

  /* ---- las tarjetas de descargas y cargas: 3 columnas ---- */
  #descLista{
    grid-template-columns: repeat(3, 1fr) !important;
  }
  #cargLista{
    grid-template-columns: repeat(3, 1fr) !important;
  }

  /* ---- las tarjetas de transito en 2 columnas ---- */
  #trLista{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    align-items: start;
  }
  #trLista > .card{
    grid-column: 1 / -1;      /* la barra de conteo ocupa todo */
  }
  #trLista > .transito{
    margin-top: 0 !important;
  }

  /* ---- la lista de pendientes en 2 columnas ---- */
  #listaPendientes{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    align-items: start;
  }
  #listaPendientes > .guia-titulo{
    grid-column: 1 / -1;
  }

  /* ---- letras un toque más grandes ---- */
  body{ font-size: 16.5px }
  .pallet .lpn{ font-size: 17px }
  .pallet .desc{ font-size: 14px }
  .card h3{ font-size: 17px }

  /* ---- los botones NO ocupan todo el ancho en PC ---- */
  .btn-ancho{ max-width: 520px }
  .acciones{ justify-content: flex-start }
  .acciones.dos{ max-width: 760px }
  .acciones.dos > button{ flex: 0 1 260px }

  /* ---- los campos tampoco ---- */
  .fila-datos{ max-width: 900px }
  .inv-buscar{ max-width: 760px }

  /* ---- el modal más cómodo ---- */
  .modal-caja{ max-width: 560px }
  .modal-ancho{ max-width: 680px }
  /* ---- la barra de estado arriba, que no tape ---- */
  .franja{ top: 62px !important }

  /* ---- y el título de la pantalla, más grande ---- */
  #titulo{ font-size: 19px }
}

/* ==========================================================================
   PANTALLAS MUY GRANDES  (1400px o más)
   ========================================================================== */
@media (min-width: 1400px) {
  main{ max-width: 1500px !important }
  #descLista{ grid-template-columns: repeat(4, 1fr) !important }
  #cargLista{ grid-template-columns: repeat(3, 1fr) !important }
  #listaPendientes{ grid-template-columns: repeat(3, 1fr) }
  #trLista{ grid-template-columns: repeat(3, 1fr) }
}

/* ==========================================================================
   EN PC NO HACE FALTA EL BOTÓN DE CÁMARA TAN GRANDE
   ========================================================================== */
@media (min-width: 900px) {
  .cam-mini{ width: 38px !important; min-width: 38px !important; font-size: 15px }
}



/* ==========================================================================
   EL BUSCADOR CON CÁMARA  (la pantalla de UBICAR)
   --------------------------------------------------------------------------
   ⚠️  EL PROBLEMA QUE TENÍA:
       El buscador tiene la ✕ en position:absolute a la derecha.
       El botón de la cámara que inyectaba ponerCamaras() quedaba
       DEBAJO de la ✕ -> no se veía ni se podía tocar.

   LA SOLUCIÓN:
       Le doy su propio botón, con su espacio reservado:
          · el input deja 100px a la derecha (para la ✕ y la cámara)
          · la ✕ va en right:52px
          · la cámara va en right:8px
   ========================================================================== */
.buscador-cam input{
  padding-right: 100px !important;
}
.buscador-cam .limpiar{
  right: 52px !important;
}
.bus-cam{
  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
  width: 40px; height: 40px; border-radius: 9px; padding: 0;
  display: flex; align-items: center; justify-content: center;
  background: rgba(59,130,246,.16);
  border: 1px solid rgba(59,130,246,.36);
  color: #93c5fd; font-size: 17px; line-height: 1;
  cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.bus-cam:active{ background: rgba(59,130,246,.32); transform: translateY(-50%) scale(.93) }

html[data-tema="dia"] .bus-cam{
  background: rgba(11,116,209,.10);
  border-color: rgba(11,116,209,.28);
  color: #0b74d1;
}

/* ---- y que ponerCamaras() NO le ponga OTRO botón al buscador ---- */
.buscador-cam .cam-caja{ display: contents !important }
.buscador-cam .cam-mini{ display: none !important }

/* (las reglas del botón .bus-cam están más abajo) */

/* ==========================================================================
   🏢 EL SELECTOR DE CLIENTE  (multi-cliente)
   ========================================================================== */
.cliente-ov{
  position:fixed; inset:0; z-index:9998;
  background:rgba(6,10,18,.86);
  backdrop-filter:blur(7px);
  display:flex; align-items:center; justify-content:center;
  padding:20px;
}
.cliente-caja{
  width:100%; max-width:420px; max-height:86vh; overflow-y:auto;
  background:var(--fondo2,#131a26);
  border:1px solid rgba(255,255,255,.13);
  border-radius:18px; padding:22px 20px;
  box-shadow:0 24px 70px rgba(0,0,0,.8);
}
.cliente-tt{
  font-size:16px; font-weight:900; letter-spacing:.3px;
  text-align:center; line-height:1.3;
}
.cliente-sub{
  font-size:12px; color:var(--texto3); text-align:center;
  margin-top:6px; margin-bottom:18px; line-height:1.4;
}
.cliente-lista{ display:flex; flex-direction:column; gap:9px }
.cliente-op{
  width:100%; text-align:left; padding:14px 16px;
  background:rgba(255,255,255,.045);
  border:1px solid rgba(255,255,255,.10);
  border-radius:12px; cursor:pointer;
  transition:background .13s, border-color .13s, transform .1s;
  -webkit-tap-highlight-color:transparent;
}
.cliente-op:active{ transform:scale(.98) }
.cliente-op:hover{ background:rgba(59,130,246,.14); border-color:rgba(59,130,246,.4) }
.cliente-op b{
  display:block; font-size:15px; font-weight:900; color:var(--texto);
  line-height:1.25;
}
.cliente-op span{
  display:block; font-size:10.5px; font-weight:800; color:var(--texto3);
  letter-spacing:.4px; margin-top:4px;
}

/* ---- el cliente en la cabecera ---- */
.quien-cliente{
  font-size:10px; font-weight:900; letter-spacing:.3px;
  color:#93c5fd; background:rgba(59,130,246,.16);
  border:1px solid rgba(59,130,246,.32);
  border-radius:5px; padding:2px 7px; margin-top:3px;
  display:inline-block; max-width:150px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.quien-cliente.se-puede{ cursor:pointer }
.quien-cliente.se-puede::after{ content:' ⇄'; font-size:9px; opacity:.75 }

html[data-tema="dia"] .cliente-caja{ background:#fff }
html[data-tema="dia"] .cliente-op{ background:rgba(0,0,0,.03); border-color:rgba(0,0,0,.09) }



/* ==========================================================================
   LA PANTALLA DE CLIENTES
   ========================================================================== */
.cli-r{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);
  border-radius:11px;padding:14px;margin-bottom:9px}
.cli-r-cab{display:flex;align-items:center;gap:8px;justify-content:space-between}
.cli-r-cab b{font-size:15px;font-weight:900;flex:1;min-width:0}
.cli-cod{font-family:ui-monospace,monospace;font-size:10px;font-weight:900;
  color:var(--texto3);background:rgba(255,255,255,.06);border-radius:4px;padding:2px 6px}
.cli-off{font-size:9px;font-weight:900;color:#fca5a5;background:rgba(239,68,68,.15);
  border-radius:4px;padding:2px 6px}
.cli-modo{font-size:11.5px;color:var(--texto3);margin-top:6px}
.cli-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:11px}
.cli-nums > div{background:rgba(255,255,255,.035);border-radius:8px;padding:7px 4px;text-align:center}
.cli-nums b{display:block;font-size:15px;font-weight:900;line-height:1.1}
.cli-nums span{display:block;font-size:8px;font-weight:800;color:var(--texto3);
  text-transform:uppercase;margin-top:2px}
.cli-zonas{display:flex;flex-wrap:wrap;gap:4px;margin-top:9px}
.cli-zona{font-size:9.5px;font-weight:900;color:#93c5fd;background:rgba(59,130,246,.15);
  border-radius:4px;padding:2px 6px}
.cli-zonas-pick{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.cli-zona-pick{display:flex;align-items:center;gap:5px;font-size:12px;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);
  border-radius:8px;padding:7px 10px;cursor:pointer}
.cli-zona-pick i{font-style:normal;font-size:10px;color:var(--texto3)}
@media (min-width:820px){ #cliLista{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  #cliLista .cli-r{margin-bottom:0} }


/* ==========================================================================
   EL CARTEL DE CONFIRMACIÓN VA POR ENCIMA DE TODO
   --------------------------------------------------------------------------
   ⚠️  EL BUG QUE ARREGLABA ESTO:
       El selector de clientes tenía z-index 9998.
       El cartel de "¿cerrar sesión?" tenía uno menor.
       Tocabas SALIR, el cartel aparecía DEBAJO, y no pasaba nada.
   ========================================================================== */
.mi-capa{ z-index: 10001 !important }
.cliente-ov{ z-index: 9998 }

/* ---- el botón SALIR bien visible ---- */
#btnSalir{
  flex: 0 0 auto;
  background: rgba(239,68,68,.13) !important;
  border-color: rgba(239,68,68,.45) !important;
  color: #fca5a5 !important;
}
#btnSalir:active{ background: rgba(239,68,68,.30) !important }
#btnSalir:disabled{ opacity:.5 }


/* ==========================================================================
   EL LOGIN: que quede claro QUE estas entrando
   ========================================================================== */
.login-info{
  max-width: 420px; margin: 0 auto 14px; padding: 0 14px;
}
.login-info-fila{
  display: flex; justify-content: space-between; align-items: center;
  gap: 12px; padding: 7px 0;
  border-bottom: 1px solid rgba(255,255,255,.055);
  font-size: 11px;
}
.login-info-fila:last-child{ border-bottom: 0 }
.login-info-k{
  font-weight: 900; letter-spacing: .5px; text-transform: uppercase;
  color: var(--texto3); font-size: 9.5px; flex: 0 0 auto;
}
.login-info-v{
  color: var(--texto2); font-weight: 700; text-align: right; line-height: 1.35;
}
html[data-tema="dia"] .login-info-fila{ border-bottom-color: rgba(0,0,0,.06) }


/* ==========================================================================
   LAS PESTAÑAS  (DESCARGAS / CARGAS / MOVIMIENTOS / PALLETS)
   --------------------------------------------------------------------------
   ⚠️  EL BUG QUE ARREGLA ESTO:
       Estaban en un flex con flex-wrap, pero los botones tenían flex:1
       y se aplastaban hasta MONTARSE unos encima de otros.
       En la captura se veía "DESCARGAS CARGAS MOVIMIENTOS PALLETS"
       todo encimado, ilegible.

   AHORA:
       · 2 por fila en el celular
       · 4 en una sola fila en pantalla grande
       · ancho mínimo, letra que no se corta, sin superposición
   ========================================================================== */
.tabs-row{
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 11px;
}
.tabs-row > button{
  flex: 1 1 calc(50% - 4px) !important;
  min-width: calc(50% - 4px) !important;
  max-width: none !important;
  height: 40px !important;
  min-height: 40px !important;
  padding: 0 6px !important;
  font-size: 10.5px !important;
  font-weight: 900 !important;
  letter-spacing: .2px !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
}

@media (min-width: 560px){
  .tabs-row{ flex-wrap: nowrap }
  .tabs-row > button{
    flex: 1 1 0 !important;
    min-width: 0 !important;
    font-size: 11.5px !important;
  }
}

/* ==========================================================================
   LA BARRA DE ABAJO  (no aplastar los botones)
   --------------------------------------------------------------------------
   ⚠️  EL BUG QUE ARREGLA ESTO:
       Con 12 botones y flex:1, cada uno quedaba de ~30px.
       En la captura se veían todos apretados e ilegibles.

   AHORA:
       · cada botón tiene ancho mínimo
       · la barra hace scroll horizontal si no entran
       · no se aplasta ninguno
   ========================================================================== */
nav{
  overflow-x: auto !important;
  overflow-y: hidden !important;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  justify-content: flex-start !important;
}
nav::-webkit-scrollbar{ display: none }

nav > button,
nav button[data-ir]{
  flex: 0 0 auto !important;
  min-width: 82px !important;
  width: auto !important;
  max-width: none !important;
  padding: 0 10px !important;
  font-size: 10.5px !important;
  white-space: nowrap !important;
}

/* ---- y que el botón activo se vea, aunque esté scrolleado ---- */
nav > button.activo,
nav button[data-ir].activo{
  scroll-margin: 0 30px;
}

html[data-tema="dia"] .tabs-row > button{ border-color: rgba(0,0,0,.12) }


/* ==========================================================================
   EL AVISO DEL OCR ARRIBA Y FLOTANDO
   --------------------------------------------------------------------------
   ⚠️  EL PROBLEMA:
       El div #recOCR está en medio de la pantalla de RECIBIR.
       Los mensajes de error ("no pude leer la foto", "la foto es muy
       grande") aparecían AHÍ ABAJO, y el operador tenía que hacer
       scroll para leerlos. Muchas veces ni los veía.

   AHORA:
       Cuando hay un error o se está leyendo, el aviso se pega ARRIBA,
       flotando encima de todo. Se ve sin tocar nada.
       Cuando el resultado está bien, vuelve a su lugar normal.
   ========================================================================== */
#recOCR.av-flotante,
.rec-ocr-flotante{
  position: fixed !important;
  top: calc(env(safe-area-inset-top) + 62px) !important;
  left: 10px !important;
  right: 10px !important;
  z-index: 9500 !important;
  max-height: 66vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  border-radius: 13px;
  box-shadow: 0 18px 60px rgba(0,0,0,.8), 0 0 0 1px rgba(255,255,255,.08);
  background: var(--fondo, #0a0f17);
  padding: 3px;
  animation: recEntra .18s ease-out;
}
@keyframes recEntra{
  from{ opacity:0; transform: translateY(-10px) }
  to{ opacity:1; transform: translateY(0) }
}

/* ---- en pantalla grande, un poco más angosto y centrado ---- */
@media (min-width: 760px){
  #recOCR.av-flotante,
  .rec-ocr-flotante{
    left: 50% !important;
    right: auto !important;
    width: 620px;
    max-width: calc(100vw - 40px);
    transform: translateX(-50%);
  }
}

/* ---- en PC la barra está arriba: bajo el aviso ---- */
@media (min-width: 900px){
  #recOCR.av-flotante,
  .rec-ocr-flotante{
    top: 74px !important;
  }
}

/* ==========================================================================
   EL PANEL "GUÍA LEÍDA": que se note
   --------------------------------------------------------------------------
   ⚠️  Aparecía en medio de la pantalla y el operador no lo veía.
       Ahora la pantalla baja sola hasta acá y el panel tiene un borde
       verde que late, para que se note que hay que hacer algo.
   ========================================================================== */
#recOCR.rec-importante{
  border: 2px solid rgba(34,197,94,.65);
  border-radius: 14px;
  box-shadow: 0 0 0 1px rgba(34,197,94,.25), 0 0 26px rgba(34,197,94,.28);
  animation: recLate 1.6s ease-in-out 3;
  scroll-margin-top: 70px;
  scroll-margin-bottom: 90px;
}
@keyframes recLate{
  0%, 100%{ box-shadow: 0 0 0 1px rgba(34,197,94,.25), 0 0 18px rgba(34,197,94,.20) }
  50%     { box-shadow: 0 0 0 2px rgba(34,197,94,.55), 0 0 34px rgba(34,197,94,.45) }
}

/* ---- un botón de cerrar para el aviso flotante ---- */
.rec-cerrar{
  position: sticky; top: 0; float: right;
  width: 34px; height: 34px; margin: 4px 4px 0 0;
  border-radius: 8px; border: 0;
  background: rgba(255,255,255,.10); color: var(--texto2, #ccd);
  font-size: 17px; font-weight: 900; line-height: 1;
  cursor: pointer; z-index: 2;
}
/* ---- en el celular los títulos ocupan lugar de más: se achican ---- */
@media (max-width: 620px){}
/* ---- el panel del OCR, más visible en el celular ---- */
@media (max-width: 620px){
  #recOCR.rec-importante{
    margin-left: 2px;
    margin-right: 2px;
  }
}
/* ==========================================================================
   EL CHIP DEL MOTOR  ("MOTOR N · 16.8 SEG")
   --------------------------------------------------------------------------
   Dice con qué lector se leyó la guía y cuánto tardó.
   Tocándolo explica qué es cada motor.
   ========================================================================== */
.motor-chip{
  display: inline-block;
  font-family: ui-monospace, monospace;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: .3px;
  color: var(--texto3);
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 5px;
  padding: 3px 7px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  white-space: nowrap;
}
.motor-chip:active{ background: rgba(59,130,246,.20); color: #93c5fd }
html[data-tema="dia"] .motor-chip{ background: rgba(0,0,0,.04); border-color: rgba(0,0,0,.10) }


/* ==========================================================================
   EL CAMPO PARA EL ESCÁNER FÍSICO
   --------------------------------------------------------------------------
   El operador apunta con el escáner y el código entra solo en este campo.
   No hace falta cámara del celular.
   ========================================================================== */
.esc-otro-lab{
  display: block;
  margin-top: 14px;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .5px;
  text-transform: uppercase;
  color: var(--texto3);
}
.esc-otro-inp{
  width: 100%;
  margin-top: 6px;
  min-height: 48px;
  font-family: ui-monospace, monospace;
  font-size: 17px;
  font-weight: 800;
  text-align: center;
  letter-spacing: 1.5px;
  border-radius: 10px;
  border: 1px dashed rgba(59,130,246,.50);
  background: rgba(59,130,246,.07);
}
.esc-otro-inp:focus{
  border-style: solid;
  border-color: #3b82f6;
  outline: none;
  box-shadow: 0 0 0 3px rgba(59,130,246,.20);
}
html[data-tema="dia"] .esc-otro-inp{ background: rgba(11,116,209,.05) }


/* ==========================================================================
   LAS TAREAS DE ORDEN (familiarización)
   --------------------------------------------------------------------------
   Se filtran por familia y se ordenan por ubicación de MENOR a MAYOR,
   para que el operador camine el pasillo en orden.
   ========================================================================== */
.tareas-card{
  border-color: rgba(234,179,8,.35) !important;
  background: rgba(234,179,8,.05) !important;
}
.tareas-cab{
  display: flex; justify-content: space-between; align-items: center;
  gap: 10px; margin-bottom: 10px;
}
.tareas-cab b{
  font-size: 11px; font-weight: 900; letter-spacing: .4px;
  color: #fcd34d; text-transform: uppercase;
}
.tareas-ref{
  font-size: 9px; font-weight: 900; padding: 5px 10px;
  border-radius: 7px; background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.10); color: var(--texto2);
}
.olf-filtros{
  display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 10px;
}
.olf-chip{
  font-size: 9.5px; font-weight: 900; padding: 5px 9px;
  border-radius: 20px; background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.09); color: var(--texto2);
  cursor: pointer;
}
.olf-chip i{ font-style: normal; opacity: .6; font-size: 8.5px }
.olf-chip.on{
  background: rgba(234,179,8,.22);
  border-color: rgba(234,179,8,.60);
  color: #fcd34d;
}
.tareas-nota{
  font-size: 10px; color: var(--texto3); margin-bottom: 10px;
  padding-bottom: 9px; border-bottom: 1px solid rgba(255,255,255,.07);
}
.tarea-row{
  display: flex; gap: 10px; align-items: stretch;
  padding: 10px 0;
  border-bottom: 1px solid rgba(255,255,255,.055);
}
.tarea-row:last-child{ border-bottom: 0 }
.tarea-pos{
  flex: 0 0 30px; display: flex; align-items: center; justify-content: center;
  font-family: ui-monospace, monospace; font-size: 12px; font-weight: 900;
  color: #fcd34d; background: rgba(234,179,8,.14);
  border-radius: 7px;
}
.tarea-cuerpo{ flex: 1 1 auto; min-width: 0 }
.tarea-ubi{
  font-family: ui-monospace, monospace; font-size: 13.5px;
  font-weight: 900; color: #93c5fd;
  display: flex; align-items: center; gap: 7px;
}
.tarea-niv{
  font-size: 8.5px; font-weight: 900; color: var(--texto3);
  background: rgba(255,255,255,.06); border-radius: 4px; padding: 1px 5px;
  letter-spacing: .2px;
}
.tarea-lpn{
  font-family: ui-monospace, monospace; font-size: 11px;
  color: var(--texto2); margin-top: 2px;
}
.tarea-desc{
  font-size: 11px; color: var(--texto3); margin-top: 1px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.tarea-problema{
  font-size: 10.5px; color: var(--texto2); margin-top: 4px; line-height: 1.4;
}
.tarea-problema b{ color: #fcd34d }
.tarea-botones{
  flex: 0 0 82px; display: flex; flex-direction: column;
  gap: 5px; justify-content: center;
}
.tarea-botones .btn-mini{
  font-size: 9px; padding: 6px 4px; width: 100%;
}
.btn-tarea-off{ color: var(--texto3) !important }
html[data-tema="dia"] .tareas-card{ background: rgba(234,179,8,.04) !important }
html[data-tema="dia"] .tarea-row{ border-bottom-color: rgba(0,0,0,.06) }


/* ==========================================================================
   EL BOTÓN DE CÁMARA EN LOS CAMPOS
   --------------------------------------------------------------------------
   Vuelve el botoncito 📷 al lado derecho del campo.
   Abre la cámara con cuadro AMARILLO y línea ROJA.
   Hay que tocar DISPARAR: no lee sola.
   ========================================================================== */
.cam-caja{
  display: flex !important;
  align-items: stretch;
  gap: 6px;
  width: 100%;
  min-width: 0;
}
.cam-caja > input,
.cam-caja > select,
.cam-caja > textarea{
  flex: 1 1 auto !important;
  min-width: 0 !important;
  width: auto !important;
  margin: 0 !important;
}
.cam-mini{
  flex: 0 0 auto;
  width: 42px;
  min-width: 42px;
  min-height: 42px;
  padding: 0;
  margin: 0;
  border-radius: 9px;
  background: rgba(234,179,8,.14);
  border: 1px solid rgba(234,179,8,.45);
  color: #fcd34d;
  font-size: 17px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .13s, transform .1s;
}
.cam-mini:active{
  background: rgba(234,179,8,.34);
  transform: scale(.93);
}
.cam-caja label{ display: none }

/* ---- en PC un poco más chico ---- */
@media (min-width: 820px){
  .cam-mini{ width: 38px; min-width: 38px; font-size: 15px }
}

html[data-tema="dia"] .cam-mini{
  background: rgba(202,138,4,.10);
  border-color: rgba(202,138,4,.35);
  color: #a16207;
}
/* ==========================================================================
   EL MARCO DE LA CÁMARA: AMARILLO, MÁS VISIBLE
   ========================================================================== */
#camara .marco{
  border: 3px solid var(--amarillo, #eab308) !important;
  border-radius: 8px !important;
  box-shadow: 0 0 0 100vmax rgba(0,0,0,.55),
              0 0 22px rgba(234,179,8,.45) !important;
}
#camara .marco .linea{
  height: 3px !important;
  background: linear-gradient(90deg, transparent, #ef4444, #ef4444, transparent) !important;
  box-shadow: 0 0 12px rgba(239,68,68,.9) !important;
}


/* ==========================================================================
   EL CUADRO DE LA CÁMARA: MÁS ANCHO Y MÁS ALTO
   --------------------------------------------------------------------------
   El usuario dijo: "haz más ancho el cuadro amarillo y no veo los botones"
   ========================================================================== */
#camara .marco{
  width: 92% !important;
  max-width: 560px !important;
  height: 42% !important;
  max-height: 320px !important;
  min-height: 160px !important;
}

/* ---- los botones de abajo: que NUNCA queden tapados ---- */
#camara .controles{
  padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 22px) !important;
  padding-top: 12px !important;
  gap: 10px !important;
  flex-shrink: 0 !important;
}
#camara .controles button{
  min-height: 52px !important;
  font-size: 14px !important;
  font-weight: 900 !important;
}

/* ---- el cuadro de enfoque: que deje lugar arriba y abajo ---- */
#camara .enfoque{
  flex: 1 1 auto !important;
  min-height: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 14px !important;
  padding: 10px !important;
}

/* ---- en el celular, un poco menos alto para que entren los botones ---- */
@media (max-height: 700px){
  #camara .marco{
    height: 34% !important;
    max-height: 240px !important;
  }
}


/* ==========================================================================
   LAS "OTRAS OPCIONES" DE UBICACIÓN
   --------------------------------------------------------------------------
   Antes eran texto plano y se repetían. Ahora son tocables y sin repetir.
   ========================================================================== */
.cc-op{
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 11px 10px;
  margin-bottom: 5px;
  border-radius: 9px;
  background: rgba(255,255,255,.035);
  border: 1px solid rgba(255,255,255,.07);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .13s, border-color .13s;
}
.cc-op:active{
  background: rgba(59,130,246,.22);
  border-color: rgba(59,130,246,.55);
}
.cc-op-u{
  font-family: ui-monospace, monospace;
  font-size: 15px;
  font-weight: 900;
  color: #93c5fd;
}
.cc-op-z{
  font-size: 11.5px;
  color: var(--texto3);
  font-weight: 700;
}
html[data-tema="dia"] .cc-op{ background: rgba(0,0,0,.025); border-color: rgba(0,0,0,.08) }


/* ==========================================================================
   LA PANTALLA POR CLASIFICAR
   --------------------------------------------------------------------------
   Antes el título, el botón y el checkbox estaban apretados en una fila
   mal armada. Ahora cada cosa en su lugar.
   ========================================================================== */
.pc-cab{
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}
.pc-tt{
  font-size: 16px;
  font-weight: 900;
  letter-spacing: .3px;
}
.pc-resumen{
  font-size: 12px;
  color: var(--texto3);
  font-weight: 700;
}
.pc-check{
  display: flex;
  align-items: center;
  gap: 9px;
  margin-top: 12px;
  padding: 9px 11px;
  border-radius: 9px;
  background: rgba(255,255,255,.028);
  border: 1px solid rgba(255,255,255,.06);
  font-size: 12px;
  color: var(--texto2);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.pc-check input{
  width: 18px !important;
  min-width: 18px;
  height: 18px;
  accent-color: #3b82f6;
}
html[data-tema="dia"] .pc-check{ background: rgba(0,0,0,.02); border-color: rgba(0,0,0,.07) }

/* ---- el chip del cliente: no tan ancho ---- */
.quien-cliente{
  max-width: 130px !important;
  font-size: 9px !important;
}


/* ==========================================================================
   EL BOTÓN DE ESCANEAR EN EL BUSCADOR DE UBICAR
   --------------------------------------------------------------------------
   El buscador tiene la ✕ a la derecha. Le reservo lugar para la cámara.
   ========================================================================== */
.buscador-cam input{
  padding-right: 104px !important;
}
.buscador-cam .limpiar{
  right: 54px !important;
}
.bus-cam{
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  width: 42px;
  height: 42px;
  border-radius: 9px;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(234,179,8,.16);
  border: 1px solid rgba(234,179,8,.48);
  color: #fcd34d;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  z-index: 3;
}
.bus-cam:active{
  background: rgba(234,179,8,.36);
  transform: translateY(-50%) scale(.93);
}
html[data-tema="dia"] .bus-cam{
  background: rgba(202,138,4,.10);
  border-color: rgba(202,138,4,.35);
  color: #a16207;
}

/* ==========================================================================
   EL CAMPO "¿NO ES ESTE PALLET?" — QUE EL BOTÓN NO SE SALGA
   --------------------------------------------------------------------------
   ⚠️  EL PROBLEMA: el campo tenía width:100%, entonces el botón de la
   cámara quedaba FUERA del recuadro y no se veía (el círculo vacío).

   ARREGLO: dentro de .cam-caja, el campo se achica solo y el botón entra.
   ========================================================================== */
.cam-caja .esc-otro-inp,
.cam-caja input.esc-otro-inp{
  width: auto !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
  margin-top: 6px !important;
}
.cam-caja > .cam-mini{
  margin-top: 6px !important;
}

/* ---- y que el botón del campo LPN sea bien visible ---- */
#ubiOtroLpn + .cam-mini,
.cam-caja .cam-mini{
  width: 46px !important;
  min-width: 46px !important;
  min-height: 46px !important;
  font-size: 18px;
}


/* ==========================================================================
   EL MODULO DE DESPACHO
   --------------------------------------------------------------------------
   Fluido y sencillo: elegir transporte -> leer pallets -> confirmar
   ========================================================================== */
.desp-tt{
  font-size: 14px; font-weight: 900; letter-spacing: .4px;
  display: flex; align-items: center; justify-content: space-between;
}
.desp-cont{
  font-size: 22px; font-weight: 900; color: #4ade80;
  font-family: ui-monospace, monospace;
}
.desp-lista{ display: flex; flex-direction: column; gap: 6px; max-height: 46vh; overflow-y: auto }
.desp-cargando, .desp-vacio{
  padding: 18px; text-align: center; font-size: 13px; color: var(--texto3)
}
.desp-t{
  display: grid;
  grid-template-columns: 92px 76px 1fr 52px;
  align-items: center;
  gap: 8px;
  padding: 11px 12px;
  border-radius: 10px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .12s, border-color .12s, transform .08s;
}
.desp-t:active{ background: rgba(59,130,246,.22); border-color: rgba(59,130,246,.5); transform: scale(.99) }
.desp-t-num{ font-family: ui-monospace, monospace; font-size: 14px; font-weight: 900; color: #93c5fd }
.desp-t-placa{ font-family: ui-monospace, monospace; font-size: 13px; font-weight: 800; color: var(--texto) }
.desp-t-dest{ font-size: 12px; color: var(--texto2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.desp-t-tipo{ font-size: 9px; font-weight: 900; text-align: center; padding: 2px 0; border-radius: 6px }
.desp-t-tipo.DESP{ background: rgba(34,197,94,.22); color: #86efac }
.desp-t-tipo.TRAS{ background: rgba(234,179,8,.22); color: #fcd34d }
.desp-transporte{
  margin-top: 12px; padding: 9px 12px; border-radius: 9px;
  background: rgba(59,130,246,.14); border: 1px solid rgba(59,130,246,.35);
  font-family: ui-monospace, monospace; font-size: 13px; font-weight: 900; color: #93c5fd;
  text-align: center;
}
.desp-p{
  display: grid;
  grid-template-columns: 1fr auto 34px;
  grid-template-areas: "num ubi x" "desc desc desc";
  gap: 3px 8px;
  padding: 10px 11px;
  margin-bottom: 6px;
  border-radius: 9px;
  background: rgba(34,197,94,.10);
  border: 1px solid rgba(34,197,94,.28);
}
.desp-p-num{ grid-area: num; font-family: ui-monospace, monospace; font-size: 13.5px; font-weight: 900; color: #86efac }
.desp-p-ubi{ grid-area: ubi; font-family: ui-monospace, monospace; font-size: 11.5px; font-weight: 800; color: #93c5fd; text-align: right }
.desp-p-desc{ grid-area: desc; font-size: 11px; color: var(--texto2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.desp-p-x{
  grid-area: x; width: 30px; height: 30px; min-height: 30px; padding: 0;
  border-radius: 7px; background: rgba(239,68,68,.2); border: 1px solid rgba(239,68,68,.4);
  color: #fca5a5; font-size: 13px; font-weight: 900; cursor: pointer;
}
html[data-tema="dia"] .desp-t{ background: rgba(0,0,0,.025); border-color: rgba(0,0,0,.08) }
html[data-tema="dia"] .desp-p{ background: rgba(34,197,94,.08) }

/* ==========================================================================
   LOS CODIGOS DE BARRAS Y LAS ETIQUETAS
   ========================================================================== */
.cb39{ display: block; width: 100% }
.et-sku, .et-lpn{
  background: #fff; color: #000; border-radius: 6px;
}
.et-lpn{
  display: inline-block; width: 100%; max-width: 340px; padding: 12px;
  border: 2px solid #cbd5e1; text-align: center;
}
/* ==========================================================================
   LAS ETIQUETAS 100 x 60 mm  (vista previa en pantalla)
   ========================================================================== */
.et-lpn{
  display: inline-block; width: 100%; max-width: 380px; padding: 10px;
  background: #fff; color: #000; border: 2px solid #cbd5e1; border-radius: 6px;
  text-align: center;
}
.et-lpn .et-cb svg{ width: 100%; height: 70px; display: block }
.et-lpn .et-big{
  font-family: ui-monospace, monospace; font-size: 17px; font-weight: 900;
  letter-spacing: 1px; margin-top: 8px;
}
.et-lpn .et-med{
  font-size: 11px; font-weight: 900; margin-top: 6px;
  border-top: 1px solid #000; border-bottom: 1px solid #000; padding: 3px 0;
}
.et-lpn .et-chico{
  font-size: 10px; font-weight: 700; margin-top: 5px; color: #111;
}

/* ==========================================================================
   LA PANTALLA DE TRANSFORMACION
   ========================================================================== */

/* ==========================================================================
   LAS 4 PESTAÑAS DE TRANSFORMAR
   --------------------------------------------------------------------------
   ⚠️  EL PROBLEMA: las 4 pestañas no entraban en el ancho del celular.
   Al no entrar, empujaban TODO el contenido y las tarjetas quedaban
   cortadas a la izquierda. La pantalla se veía "descuadrada".

   EL ARREGLO:
      · si no entran, se deslizan (scroll horizontal)
      · no se estiran (flex: 0 0 auto)
      · el texto no se parte en 2 líneas
      · la pantalla no se desborda
   ========================================================================== */
.tf-tabs{
  display: flex;
  gap: 6px;
  margin-bottom: 11px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding-bottom: 2px;
  max-width: 100%;
}
.tf-tabs::-webkit-scrollbar{ display: none }

.tf-tab{
  flex: 0 0 auto;            /* NO se estiran */
  width: auto;
  min-width: 70px;
  padding: 11px 13px;
  border-radius: 9px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.09);
  color: var(--texto2);
  font-size: 10.5px;
  font-weight: 900;
  letter-spacing: .2px;
  white-space: nowrap;       /* el texto NO se parte */
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.tf-tab.activa{
  background: rgba(59,130,246,.22);
  border-color: rgba(59,130,246,.55);
  color: #93c5fd;
}

/* ---- que la pantalla NO se desborde a lo ancho ---- */
#v-transformar{
  overflow-x: hidden;
  max-width: 100%;
}
#v-transformar .card{
  max-width: 100%;
  overflow: hidden;
}
#v-transformar .tf-tt{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;           /* si no entra, baja de linea */
}
#v-transformar .tf-lpn,
#v-transformar .tf-tot{
  flex: 0 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- los inputs que no se salen ---- */
#v-transformar input,
#v-transformar select,
#v-transformar .buscador{
  max-width: 100%;
}

.tf-tt{
  font-size: 14px; font-weight: 900; letter-spacing: .3px;
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.tf-lpn{
  font-family: ui-monospace, monospace; font-size: 13px; color: #93c5fd;
  font-weight: 800;
}
.tf-tot{
  font-family: ui-monospace, monospace; font-size: 17px; font-weight: 900;
  color: #4ade80;
}
.tf-vacio{ padding: 15px; text-align: center; font-size: 12px; color: var(--texto3) }
.tf-item{
  display: grid;
  grid-template-columns: 1fr auto 32px;
  grid-template-areas: "sku cant x" "desc lote x";
  gap: 2px 8px;
  padding: 9px 10px; margin-bottom: 6px; border-radius: 9px;
  background: rgba(34,197,94,.09); border: 1px solid rgba(34,197,94,.26);
}
.tf-item-sku{ grid-area: sku; font-family: ui-monospace, monospace; font-size: 13px;
  font-weight: 900; color: #86efac }
.tf-item-cant{ grid-area: cant; font-family: ui-monospace, monospace; font-size: 13.5px;
  font-weight: 900; color: var(--texto); text-align: right }
.tf-item-desc{ grid-area: desc; font-size: 10.5px; color: var(--texto2);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.tf-item-lote{ grid-area: lote; font-size: 10px; color: var(--texto3); text-align: right }
.tf-item-x{
  grid-area: x; width: 30px; height: 30px; min-height: 30px; padding: 0;
  border-radius: 7px; background: rgba(239,68,68,.2);
  border: 1px solid rgba(239,68,68,.4); color: #fca5a5;
  font-size: 13px; font-weight: 900; cursor: pointer;
}
.tf-nuevo{
  padding: 10px 12px; border-radius: 9px; text-align: center;
  background: rgba(59,130,246,.13); border: 1px solid rgba(59,130,246,.35);
  font-size: 12px; color: #93c5fd;
}
.tf-nuevo b{ font-family: ui-monospace, monospace; font-size: 14px }
.tf-partir{
  display: grid;
  grid-template-columns: 1fr auto 90px;
  grid-template-areas: "sku tot inp" "lote lote inp";
  gap: 3px 8px; align-items: center;
  padding: 10px; margin-bottom: 7px; border-radius: 9px;
  background: rgba(255,255,255,.035); border: 1px solid rgba(255,255,255,.08);
}
.tf-partir-sku{ grid-area: sku; font-family: ui-monospace, monospace; font-size: 13px;
  font-weight: 900; color: #93c5fd }
.tf-partir-tot{ grid-area: tot; font-size: 11px; color: var(--texto3); font-weight: 700 }
.tf-partir-lote{ grid-area: lote; font-size: 10px; color: var(--texto3) }
.tf-partir-inp{ grid-area: inp; font-size: 17px !important; font-weight: 900 !important;
  text-align: center; font-family: ui-monospace, monospace }
html[data-tema="dia"] .tf-tab{ background: rgba(0,0,0,.03); border-color: rgba(0,0,0,.09) }
html[data-tema="dia"] .tf-item{ background: rgba(34,197,94,.07) }
html[data-tema="dia"] .tf-partir{ background: rgba(0,0,0,.025) }

/* ==========================================================================
   LOS GRUPOS DE BOTONES DEL INICIO
   --------------------------------------------------------------------------
   INGRESO · GUARDADO · DESPACHO · OPERACIONES · DASHBOARD
   ========================================================================== */
.grupo{ margin-bottom: 15px }
.grupo:last-child{ margin-bottom: 0 }
.acciones.tres{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 7px;
}
.acciones.tres button{
  font-size: 10px;
  padding: 10px 4px;
  min-height: 44px;
}
/* ---- en PC los grupos van en 2 columnas ---- */
@media (min-width: 820px){
  .grupo .acciones.dos{ grid-template-columns: repeat(2, 1fr) }
}

/* ==========================================================================
   LA PANTALLA DE METRICAS
   ========================================================================== */
.met-cab{ display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap }
.met-tt{ font-size: 15px; font-weight: 900; letter-spacing: .3px }
.met-dias{ display: flex; gap: 5px }
.met-d{
  padding: 6px 11px; border-radius: 7px; font-size: 10.5px; font-weight: 900;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.09);
  color: var(--texto2); cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.met-d.activa{ background: rgba(59,130,246,.22); border-color: rgba(59,130,246,.55); color: #93c5fd }
.met-nota{ font-size: 10.5px; color: var(--texto3); margin-top: 8px }
.met-cargando, .met-vacio{ padding: 20px; text-align: center; font-size: 12.5px; color: var(--texto3) }

.met-grid{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 9px;
  margin-bottom: 11px;
}
@media (min-width: 820px){ .met-grid{ grid-template-columns: repeat(4, 1fr) } }

.met-card{
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 11px;
  padding: 11px 12px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .12s, border-color .12s;
}
.met-card:active{ background: rgba(59,130,246,.16); border-color: rgba(59,130,246,.45) }
.met-card-top{ display: flex; align-items: center; justify-content: space-between }
.met-sigla{ font-size: 10px; font-weight: 900; letter-spacing: 1.2px; color: var(--texto3) }
.met-semaforo{ font-size: 11px }
.met-card-val{
  font-family: ui-monospace, monospace;
  font-size: 24px; font-weight: 900; line-height: 1.1;
  margin: 5px 0 3px 0;
}
.met-card-nombre{ font-size: 9.5px; font-weight: 700; color: var(--texto2); line-height: 1.25 }
.met-card-meta{ font-size: 9px; color: var(--texto3); margin-top: 3px; font-weight: 700 }

.met-det-tt{ font-size: 17px; font-weight: 900; font-family: ui-monospace, monospace }
.met-det-nombre{ font-size: 13px; font-weight: 800; margin-top: 3px }
.met-det-preg{ font-size: 11.5px; color: var(--texto2); margin-top: 6px; line-height: 1.4 }
.met-det-form{
  font-size: 10.5px; color: var(--texto3); margin-top: 8px;
  padding: 7px 9px; border-radius: 7px;
  background: rgba(59,130,246,.09); border: 1px solid rgba(59,130,246,.22);
}
.met-det-nums{ display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px }
.met-num{
  font-size: 10.5px; padding: 4px 9px; border-radius: 6px;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.07);
  color: var(--texto2);
}
.met-num b{ color: var(--texto); font-family: ui-monospace, monospace }

.met-sub{ font-size: 11px; font-weight: 900; letter-spacing: .6px; color: var(--texto2); margin-bottom: 10px }
.met-barra-fila{ display: flex; align-items: center; gap: 9px; margin-bottom: 5px }
.met-barra-dia{ font-family: ui-monospace, monospace; font-size: 10px; color: var(--texto3); width: 42px }
.met-barra-pista{
  flex: 1 1 auto; height: 16px; border-radius: 4px;
  background: rgba(255,255,255,.04); position: relative; overflow: hidden;
}
.met-barra1{ position: absolute; left: 0; top: 0; bottom: 0; background: rgba(59,130,246,.55); border-radius: 4px }
.met-barra2{ position: absolute; left: 0; top: 0; bottom: 0; background: rgba(34,197,94,.55); border-radius: 4px }
.met-barra-num{ font-family: ui-monospace, monospace; font-size: 10.5px; font-weight: 900; width: 34px; text-align: right }
.met-leyenda{ display: flex; gap: 14px; margin-top: 9px; font-size: 9.5px; color: var(--texto3) }
.met-leyenda .l1{ color: #93c5fd }
.met-leyenda .l2{ color: #86efac }
html[data-tema="dia"] .met-card{ background: rgba(0,0,0,.025); border-color: rgba(0,0,0,.08) }
html[data-tema="dia"] .met-num{ background: rgba(0,0,0,.025) }


/* ==========================================================================
   ⚠️⚠️  ESTANDAR FINAL DE BOTONES  ⚠️⚠️
   --------------------------------------------------------------------------
   EL PROBLEMA:
      Habia ~30 reglas distintas que le ponian altura a los botones con
      !important, repartidas en distintas pantallas:
         button{ height:34px !important }
         button{ height:36px }
         button{ height:30px !important }
         button{ height:40px !important }
         button{ height:42px !important }
         button{ height:48px !important }
         ... y 20 mas
      Se pisaban entre si: cada pantalla se veia distinta.

   LA CURA:
      Estas reglas van AL FINAL del archivo, entonces ganan.
      Solo tocan los BOTONES DE ACCION (no la barra de abajo,
      no los iconos, no las pestañas).
   ========================================================================== */

.acciones > button,
.acciones.dos > button,
.acciones.tres > button,
.btn-primario,
.btn-ok,
.btn-ancho {
  height: 46px !important;
  min-height: 46px !important;
  max-height: 46px !important;
  padding: 0 14px !important;
  font-size: 12.5px !important;
  font-weight: 800 !important;
  border-radius: 10px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  line-height: 1.15 !important;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  box-sizing: border-box;
}

/* ---- los botones de la barra de abajo NO se tocan ---- */
nav > button{
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  padding: 10px 6px 9px !important;
  font-size: 10px !important;
  border-radius: 0 !important;
}

/* ---- los iconos chicos (camara, limpiar, ✕) tampoco ---- */
.cam-mini, .bus-cam, .limpiar, .desp-p-x, .tf-item-x{
  height: auto !important;
  min-height: unset !important;
  max-height: none !important;
}

/* ==========================================================================
   3) LOS BOTONES DE DATOS ENCIMADOS
   --------------------------------------------------------------------------
   En DATOS habia 5 botones (TABLAS · SALUD · GRÁFICOS · REPORTES · COMPARAR)
   en un flex que no los repartia bien y se encimaban.

   ARREGLO: grilla que reparte sola.
   ========================================================================== */
#fusPanelDatos .acciones{
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)) !important;
  gap: 7px !important;
}
#fusPanelDatos .acciones > button{
  width: 100% !important;
  min-width: 0 !important;
  flex: none !important;
}

/* ---- lo mismo para OPERACIONES (4 pestañas) ---- */
#v-operaciones .tabs-row{
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(104px, 1fr)) !important;
  gap: 7px !important;
}
#v-operaciones .tabs-row > button{
  width: 100% !important;
  min-width: 0 !important;
}

/* ==========================================================================
   5) LOS BOTONES DE ABAJO TAPADOS POR LA BARRA
   --------------------------------------------------------------------------
   La barra de abajo es fija (position:fixed) y tapaba el final del contenido.
   Se le deja aire al final de cada pantalla.
   ========================================================================== */
main{
  padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px)) !important;
}
.vista{
  padding-bottom: 24px !important;
}
/* ---- y el ultimo boton de cada pantalla que no quede debajo ---- */
.vista > .card:last-child{
  margin-bottom: 18px !important;
}

/* ==========================================================================
   2) EL BOTON DE ESCANER: que se vea y se pueda tocar
   ========================================================================== */
.cam-caja{
  display: flex !important;
  align-items: stretch !important;
  gap: 6px !important;
  width: 100% !important;
  min-width: 0 !important;
}
.cam-caja > input,
.cam-caja > select{
  flex: 1 1 auto !important;
  min-width: 0 !important;
  width: auto !important;
  margin: 0 !important;
}
.cam-caja > .cam-mini{
  flex: 0 0 46px !important;
  width: 46px !important;
  min-width: 46px !important;
  height: 46px !important;
  min-height: 46px !important;
  max-height: 46px !important;
  font-size: 19px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  z-index: 2 !important;
}


/* ==========================================================================
   ⚠️  EL BOTON DE CAMARA (.cam-mini) — DEFINICION FINAL
   --------------------------------------------------------------------------
   EL PROBLEMA:
      Habia 13 reglas distintas para .cam-mini repartidas en el archivo.
      Cada pantalla le ponia su propio tamaño y color:
         width: 42px / 38px / 46px / 48px ...
         font-size: 17px / 15px / 19px / 18px ...
      Resultado: el boton de camara se veia DISTINTO en cada pantalla.

   LA CURA:
      Esta regla va AL FINAL, gana sobre las 13 anteriores.
      UN solo tamaño, UN solo color, en TODAS las pantallas.
   ========================================================================== */
.cam-mini{
  flex: 0 0 auto !important;
  width: 46px !important;
  min-width: 46px !important;
  max-width: 46px !important;
  height: 46px !important;
  min-height: 46px !important;
  max-height: 46px !important;
  padding: 0 !important;
  margin: 0 !important;
  border-radius: 10px !important;
  background: rgba(234,179,8,.16) !important;
  border: 1px solid rgba(234,179,8,.48) !important;
  color: #fcd34d !important;
  font-size: 19px !important;
  line-height: 1 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  -webkit-tap-highlight-color: transparent;
  transition: background .13s, transform .1s;
  box-shadow: none !important;
}
.cam-mini:active{
  background: rgba(234,179,8,.38) !important;
  transform: scale(.93);
}
html[data-tema="dia"] .cam-mini{
  background: rgba(202,138,4,.12) !important;
  border-color: rgba(202,138,4,.40) !important;
  color: #a16207 !important;
}

/* ---- el buscador: la camara es otra (bus-cam), tambien una sola ---- */
.bus-cam{
  flex: 0 0 auto !important;
  width: 44px !important;
  min-width: 44px !important;
  max-width: 44px !important;
  height: 44px !important;
  min-height: 44px !important;
  max-height: 44px !important;
  border-radius: 10px !important;
  background: rgba(234,179,8,.16) !important;
  border: 1px solid rgba(234,179,8,.48) !important;
  color: #fcd34d !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
}
html[data-tema="dia"] .bus-cam{
  background: rgba(202,138,4,.12) !important;
  border-color: rgba(202,138,4,.40) !important;
  color: #a16207 !important;
}

/* ==========================================================================
   EL DESPACHO PARCIAL
   ========================================================================== */
.desp-t-conteo{
  grid-column: 1 / -1;
  font-size: 9.5px;
  color: var(--texto3);
  font-weight: 800;
  margin-top: 3px;
  letter-spacing: .3px;
}
.desp-t-conteo b{
  color: #fcd34d;
  font-size: 9px;
}
.desp-t-parcial{
  border-color: rgba(234,179,8,.45) !important;
  background: rgba(234,179,8,.07) !important;
}

/* ---- el saldo que falta despachar ---- */
.desp-saldo{
  margin-top: 11px;
  padding: 11px;
  border-radius: 10px;
  background: rgba(234,179,8,.09);
  border: 1px solid rgba(234,179,8,.30);
}
.saldo-cab{
  font-size: 11.5px;
  font-weight: 800;
  color: var(--texto2);
  margin-bottom: 8px;
}
.saldo-cab b{ color: var(--texto); font-family: ui-monospace, monospace }
.saldo-parcial{ color: #fcd34d }
.saldo-item{
  display: grid;
  grid-template-columns: 78px 1fr auto;
  gap: 8px;
  align-items: center;
  padding: 6px 8px;
  margin-bottom: 4px;
  border-radius: 7px;
  background: rgba(255,255,255,.04);
  font-size: 10.5px;
}
.saldo-item.ok{ opacity: .55 }
.saldo-item.ok .saldo-num{ color: #86efac }
.saldo-sku{
  font-family: ui-monospace, monospace;
  font-weight: 900;
  color: #93c5fd;
  font-size: 11px;
}
.saldo-desc{
  color: var(--texto2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.saldo-num{
  font-family: ui-monospace, monospace;
  font-weight: 900;
  color: #fcd34d;
  font-size: 10.5px;
  text-align: right;
}
html[data-tema=dia] .desp-saldo{ background: rgba(202,138,4,.08) }
html[data-tema=dia] .saldo-item{ background: rgba(0,0,0,.03) }


/* ==========================================================================
   REDUCCION DEL 4% EN TODAS LAS PANTALLAS
   --------------------------------------------------------------------------
   El usuario pidio: "reduce todo un 4% menos la pantalla de recibir"

   POR QUE CON zoom:
      El CSS tiene 49 alturas de boton distintas y 30 tamanos de letra.
      Tocarlas una por una es imposible y quedaria desparejo.
      `zoom` escala TODO junto (letras, botones, margenes)
      manteniendo las proporciones.

   RECIBIR QUEDA IGUAL: ese flujo tiene campos grandes a proposito
   (el operador esta en el muelle, con guantes, apurado).
   ========================================================================== */

.vista{
  zoom: 0.96;
}

/* ---- RECIBIR no se toca ---- */
#v-recibir{
  zoom: 1 !important;
}

/* ---- la cabecera y la barra tampoco (son fijas) ---- */
header{
  zoom: 1 !important;
}
nav{
  zoom: 1 !important;
}


/* ==========================================================================
   EL SCROLL: QUE TODOS LOS BOTONES SE VEAN
   --------------------------------------------------------------------------
   Habia 4 reglas distintas de padding-bottom que se pisaban:
      84px · 92px · 96px · (env safe-area)
   Se deja UNA sola y con el aire suficiente.
   ========================================================================== */

main{
  padding-bottom: calc(92px + env(safe-area-inset-bottom, 0px)) !important;
  padding-top: 14px !important;
  overflow-x: hidden !important;
}

/* ---- cada pantalla deja aire abajo ---- */
.vista{
  padding-bottom: 20px !important;
}

/* ---- el ultimo elemento de cada pantalla no queda pegado ---- */
.vista > *:last-child{
  margin-bottom: 22px !important;
}

/* ---- la barra de abajo: siempre visible y por encima ---- */
nav{
  z-index: 60 !important;
}


/* ==========================================================================
   LOS BOTONES: que ninguno se corte
   ========================================================================== */
.acciones > button{
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex-shrink: 0;
}

/* ---- en pantallas chicas, los botones de a 2 bajan a 1 ---- */
@media (max-width: 340px){
  .acciones.dos{
    grid-template-columns: 1fr !important;
  }
}


/* ==========================================================================
   LOS TRANSPORTES INCOMPLETOS
   ========================================================================== */
.desp-inc-cab{
  display:flex;justify-content:space-between;align-items:center;gap:10px
}
.desp-inc-tt{
  font-size:14px;font-weight:900;letter-spacing:.3px
}
.desp-inc-sub{
  font-size:10.5px;color:var(--texto3);font-weight:700;margin-top:3px
}
.inc-t{
  padding:10px;margin-bottom:8px;border-radius:9px;
  background:rgba(234,179,8,.06);
  border:1px solid rgba(234,179,8,.22)
}
.inc-cab{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap
}
.inc-num-t{
  font-family:ui-monospace,monospace;font-size:13px;font-weight:900;color:#fcd34d
}
.inc-placa{
  font-family:ui-monospace,monospace;font-size:10.5px;color:var(--texto2);
  background:rgba(255,255,255,.07);padding:2px 6px;border-radius:5px
}
.inc-pct{
  font-family:ui-monospace,monospace;font-size:11px;font-weight:900;
  color:#fcd34d;margin-left:auto
}
.inc-dias{
  font-size:9.5px;font-weight:800;color:var(--texto3);
  background:rgba(255,255,255,.07);padding:2px 6px;border-radius:5px
}
.inc-dest{
  font-size:10px;color:var(--texto3);margin:4px 0 7px
}
.inc-item{
  display:grid;grid-template-columns:74px 1fr auto;gap:7px;
  align-items:center;padding:4px 6px;font-size:10px;
  background:rgba(255,255,255,.035);border-radius:6px;margin-bottom:3px
}
.inc-sku{
  font-family:ui-monospace,monospace;font-weight:900;color:#93c5fd;font-size:10.5px
}
.inc-desc{
  color:var(--texto2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.inc-num{
  font-family:ui-monospace,monospace;font-weight:900;color:#fcd34d;font-size:10px
}
.inc-abrir{
  width:100%;margin-top:8px;padding:11px;border-radius:8px;
  background:rgba(59,130,246,.20);border:1px solid rgba(59,130,246,.45);
  color:#bfdbfe;font-size:11px;font-weight:900;letter-spacing:.3px;cursor:pointer
}
.inc-abrir:active{ background:rgba(59,130,246,.35) }
html[data-tema=dia] .inc-t{ background:rgba(202,138,4,.07) }
html[data-tema=dia] .inc-sku{ color:#1d4ed8 }
html[data-tema=dia] .inc-abrir{ color:#1e40af }

/* ---- las lineas de la prueba de la camara ---- */
.prueba-ok{color:#86efac;font-weight:800;padding:3px 0}
.prueba-mal{color:#fca5a5;font-weight:800;padding:3px 0}
.prueba-info{color:#93c5fd;font-weight:700;padding:2px 0;font-size:11px}


/* ==========================================================================
   EL PICKING POR UNIDADES
   ========================================================================== */
.pick-t{
  padding:10px;margin-bottom:8px;border-radius:9px;
  background:rgba(59,130,246,.06);
  border:1px solid rgba(59,130,246,.22);
  cursor:pointer
}
.pick-t:active{ background:rgba(59,130,246,.14) }
.pick-t.parcial{
  background:rgba(234,179,8,.07);
  border-color:rgba(234,179,8,.30)
}
.pick-t-num{font-family:ui-monospace,monospace;font-size:13px;font-weight:900;color:#93c5fd}
.pick-t-placa{font-family:ui-monospace,monospace;font-size:10px;color:var(--texto3);margin-top:2px}
.pick-t-dest{font-size:10px;color:var(--texto2);margin-top:2px}
.pick-t-cnt{font-family:ui-monospace,monospace;font-size:11px;font-weight:900;color:var(--texto);margin-top:4px}
.pick-t-cnt b{color:#fcd34d;font-size:9px}
.pick-t-fal{font-size:10px;color:var(--texto3);margin-top:2px}
.pick-t-fal b{color:#fcd34d;font-family:ui-monospace,monospace}

.pick-sku{
  padding:9px 10px;margin-bottom:7px;border-radius:8px;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.06)
}
.pick-sku.ok{opacity:.55}
.pick-sku-cab{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pick-sku-cod{
  font-family:ui-monospace,monospace;font-weight:900;font-size:12px;color:#93c5fd
}
.pick-sku-desc{font-size:10px;color:var(--texto3);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pick-sku-num{font-family:ui-monospace,monospace;font-size:11px;font-weight:900;color:#fcd34d}
.pick-sku.ok .pick-sku-num{color:#86efac}
.pick-sku-sub{font-size:10px;color:var(--texto2);margin-top:4px}
.pick-sku-sub b{color:#fcd34d;font-family:ui-monospace,monospace;font-size:11.5px}


/* ==========================================================================
   UX MOVIL: CONEXION Y TRABAJANDO
   ========================================================================== */

/* ---- 1) SIN CONEXION: banner rojo arriba, bien visible ---- */
#sinConexion{
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 95;
  background: linear-gradient(180deg, #dc2626, #991b1b);
  color: #fff;
  padding: 9px 14px calc(9px + env(safe-area-inset-top, 0px));
  padding-top: calc(9px + env(safe-area-inset-top, 0px));
  font-size: 12px;
  font-weight: 900;
  text-align: center;
  letter-spacing: .4px;
  box-shadow: 0 4px 16px rgba(220,38,38,.5);
  animation: entra .18s ease;
}
#sinConexion b{
  display: block;
  font-size: 13px;
  margin-bottom: 2px;
}
#sinConexion span{
  display: block;
  font-size: 10px;
  font-weight: 700;
  opacity: .92;
  letter-spacing: .1px;
}

/* ---- cuando no hay red, el contenido baja un poco ---- */
body.sin-red main{
  padding-top: 58px !important;
}

/* ---- 2) LA BARRA DE TRABAJANDO: fina, arriba ---- */
#barraTrabajando{
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 3px;
  z-index: 96;
  background: linear-gradient(90deg,
    transparent 0%,
    #3b82f6 20%,
    #60a5fa 50%,
    #3b82f6 80%,
    transparent 100%);
  background-size: 200% 100%;
  animation: correrBarra 1s linear infinite;
}
@keyframes correrBarra{
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ---- 3) LOS BOTONES EN ACCIONES LENTAS ---- */
button:disabled{
  opacity: .55 !important;
  cursor: wait !important;
}

/* ---- 4) TOUCH TARGETS: nada menor a 44px ---- */
.acciones > button,
.btn-primario,
.btn-ok,
.btn-fantasma{
  min-height: 44px;
}

/* ---- 5) EL TEXTO DE LOS AVISOS: legible ---- */
.aviso{
  line-height: 1.5;
  font-size: 12.5px;
}
.aviso b{ font-weight: 900 }


/* ==========================================================================
   EL CICLO DE CONTEO
   ========================================================================== */
.cnt-t{
  padding:11px;margin-bottom:8px;border-radius:9px;
  background:rgba(59,130,246,.06);
  border:1px solid rgba(59,130,246,.22);
  cursor:pointer
}
.cnt-t:active{ background:rgba(59,130,246,.14) }
.cnt-t.vencido{
  background:rgba(220,38,38,.10);
  border-color:rgba(220,38,38,.40)
}
.cnt-t.porvencer{
  background:rgba(234,179,8,.08);
  border-color:rgba(234,179,8,.32)
}
.cnt-t-nombre{font-size:13px;font-weight:900;color:var(--texto)}
.cnt-t-info{font-size:10px;color:var(--texto3);margin-top:3px}
.cnt-t-pie{display:flex;justify-content:space-between;align-items:center;margin-top:6px;gap:8px}
.cnt-t-ubi{font-size:10px;color:var(--texto2);font-family:ui-monospace,monospace}
.cnt-t-cuando{font-size:10px;font-weight:900;color:#93c5fd}
.cnt-t.vencido .cnt-t-cuando{color:#fca5a5}
.cnt-t.porvencer .cnt-t-cuando{color:#fcd34d}

.cnt-p{
  display:grid;grid-template-columns:1fr 78px 82px 52px;
  gap:7px;align-items:center;
  padding:6px 9px;margin-bottom:4px;border-radius:7px;
  background:rgba(255,255,255,.04);
  font-size:10px
}
.cnt-p-lpn{font-family:ui-monospace,monospace;font-weight:900;color:#93c5fd;font-size:10.5px}
.cnt-p-sku{font-family:ui-monospace,monospace;color:var(--texto2);font-size:10px}
.cnt-p-ubi{font-family:ui-monospace,monospace;color:var(--texto3);font-size:9.5px}
.cnt-p-cant{font-family:ui-monospace,monospace;font-weight:900;color:#fcd34d;text-align:right;font-size:10.5px}


/* ==========================================================================
   EL PICKING PARCIAL POR SKU
   ========================================================================== */
.pick-sku-btn{
  width:100%;margin-top:8px;padding:10px;border-radius:8px;
  background:rgba(59,130,246,.20);
  border:1px solid rgba(59,130,246,.45);
  color:#bfdbfe;font-size:11px;font-weight:900;letter-spacing:.3px;
  cursor:pointer
}
.pick-sku-btn:active{ background:rgba(59,130,246,.38) }

.pp-cab{
  display:grid;grid-template-columns:1fr 82px 74px 78px;
  gap:6px;padding:4px 6px;border-bottom:1px solid rgba(255,255,255,.12);
  font-size:8.5px;font-weight:900;color:var(--texto3);letter-spacing:.4px;
  margin-bottom:4px
}
.pp-fila{
  display:grid;grid-template-columns:1fr 82px 74px 78px;
  gap:6px;padding:5px 6px;font-size:10px;
  background:rgba(255,255,255,.035);border-radius:6px;margin-bottom:3px
}
.pp-lpn{font-family:ui-monospace,monospace;font-weight:900;color:#93c5fd;font-size:9.5px}
.pp-ubi{font-family:ui-monospace,monospace;color:var(--texto2);font-size:9.5px}
.pp-fefo{font-family:ui-monospace,monospace;color:var(--texto3);font-size:9px}
.pp-sacar{font-family:ui-monospace,monospace;font-weight:900;color:#fcd34d;font-size:9.5px;text-align:right}


/* ==========================================================================
   UX MOVIL 10/10
   ========================================================================== */

/* ---- 1) LOS TOASTS: aviso rapido que NO bloquea ---- */
#toastCaja{
  position: fixed;
  left: 12px; right: 12px;
  bottom: calc(84px + env(safe-area-inset-bottom, 0px));
  z-index: 92;
  display: flex;
  flex-direction: column;
  gap: 7px;
  pointer-events: none;
}
.toast{
  padding: 12px 15px;
  border-radius: 11px;
  font-size: 12.5px;
  font-weight: 800;
  line-height: 1.35;
  color: #fff;
  box-shadow: 0 6px 22px rgba(0,0,0,.45);
  transform: translateY(18px);
  opacity: 0;
  transition: transform .22s ease, opacity .22s ease;
  pointer-events: auto;
}
.toast-on{ transform: translateY(0); opacity: 1 }
.toast-ok{ background: linear-gradient(180deg,#15803d,#166534); border: 1px solid #22c55e }
.toast-error{ background: linear-gradient(180deg,#b91c1c,#991b1b); border: 1px solid #ef4444 }
.toast-alerta{ background: linear-gradient(180deg,#a16207,#854d0e); border: 1px solid #eab308 }
.toast-info{ background: linear-gradient(180deg,#1d4ed8,#1e40af); border: 1px solid #3b82f6 }

/* ---- 2) PULL TO REFRESH ---- */
#pullRefresco{
  position: fixed;
  top: calc(6px + env(safe-area-inset-top, 0px));
  left: 50%;
  transform: translateX(-50%);
  z-index: 91;
  padding: 7px 15px;
  border-radius: 999px;
  background: rgba(15,22,38,.92);
  border: 1px solid rgba(69,85,112,.6);
  color: #93c5fd;
  font-size: 10.5px;
  font-weight: 900;
  letter-spacing: .3px;
  opacity: 0;
  transition: transform .12s ease-out, opacity .2s ease;
  pointer-events: none;
  white-space: nowrap;
}
html[data-tema=dia] #pullRefresco{
  background: rgba(255,255,255,.96);
  color: #1d4ed8;
  border-color: rgba(0,0,0,.12);
}

/* ---- 3) SKELETONS ---- */
.skeleton{ animation: skelEntra .2s ease }
@keyframes skelEntra{ from{opacity:0} to{opacity:1} }
.skeleton-fila{
  padding: 11px;
  margin-bottom: 7px;
  border-radius: 9px;
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.05);
}
.skeleton-barra{
  height: 11px;
  border-radius: 5px;
  margin-bottom: 7px;
  background: linear-gradient(90deg,
    rgba(255,255,255,.05) 0%,
    rgba(255,255,255,.13) 50%,
    rgba(255,255,255,.05) 100%);
  background-size: 200% 100%;
  animation: skelCorre 1.15s linear infinite;
}
.skeleton-barra:last-child{ margin-bottom: 0 }
@keyframes skelCorre{
  0%   { background-position: 200% 0 }
  100% { background-position: -200% 0 }
}
html[data-tema=dia] .skeleton-fila{ background: rgba(0,0,0,.025) }
html[data-tema=dia] .skeleton-barra{
  background: linear-gradient(90deg,
    rgba(0,0,0,.04) 0%, rgba(0,0,0,.10) 50%, rgba(0,0,0,.04) 100%);
  background-size: 200% 100%;
}

/* ---- 4) ESTADOS VACIOS UTILES ---- */
.vacio-util{
  padding: 26px 18px;
  text-align: center;
}
.vacio-util-tt{
  font-size: 14px;
  font-weight: 900;
  color: var(--texto2);
  margin-bottom: 8px;
}
.vacio-util-que{
  font-size: 11.5px;
  color: var(--texto3);
  line-height: 1.55;
  margin-bottom: 14px;
}
.vacio-util-btn{
  padding: 11px 20px;
  border-radius: 9px;
  background: rgba(59,130,246,.20);
  border: 1px solid rgba(59,130,246,.45);
  color: #bfdbfe;
  font-size: 11.5px;
  font-weight: 900;
  cursor: pointer;
}
.vacio-util-btn:active{ background: rgba(59,130,246,.38) }
html[data-tema=dia] .vacio-util-btn{ color: #1e40af }

/* ---- 5) TECLADO: que no se coma la pantalla ---- */
input, select, textarea{
  font-size: 16px !important;   /* iOS hace zoom si es menor a 16px */
}
input[inputmode=numeric],
input[inputmode=decimal]{
  text-align: right;
  font-family: ui-monospace, monospace;
  font-weight: 800;
  letter-spacing: .5px;
}

/* ---- 6) EL AREA DE TOQUE MINIMA EN TODA LA APP ---- */
button, [role=button], .cam-mini, .bus-cam, .limpiar{
  touch-action: manipulation;   /* sin el zoom de doble toque */
}
input, select, textarea{
  touch-action: manipulation;
}
a, button{
  -webkit-tap-highlight-color: transparent;
}

/* ---- 7) LOS SCROLLS SUAVES ---- */
html{
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
}
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto }
  .skeleton-barra{ animation: none }
}
/* ==========================================================================
   LA CALIDAD: CUARENTENA Y DEVOLUCIONES
   ========================================================================== */
.qc-t{
  padding:11px;margin-bottom:8px;border-radius:9px;
  background:rgba(220,38,38,.07);
  border:1px solid rgba(220,38,38,.30)
}
.qc-cab{display:flex;align-items:center;justify-content:space-between;gap:8px}
.qc-lpn{font-family:ui-monospace,monospace;font-size:12px;font-weight:900;color:#93c5fd}
.qc-estado{
  font-size:9px;font-weight:900;padding:3px 8px;border-radius:5px;
  background:rgba(220,38,38,.18);color:#fca5a5
}
.qc-estado.aprobado{background:rgba(34,197,94,.18);color:#86efac}
.qc-estado.rechazado{background:rgba(107,114,128,.25);color:#d1d5db}
.qc-info{font-size:11px;color:var(--texto2);margin-top:5px}
.qc-quien{font-size:9.5px;color:var(--texto3);margin-top:3px}

.dev-t{
  padding:11px;margin-bottom:8px;border-radius:9px;
  background:rgba(59,130,246,.06);
  border:1px solid rgba(59,130,246,.22);
  cursor:pointer
}
.dev-t:active{ background:rgba(59,130,246,.14) }
.dev-cab{display:flex;align-items:center;justify-content:space-between;gap:8px}
.dev-num{font-family:ui-monospace,monospace;font-size:12.5px;font-weight:900;color:#93c5fd}
.dev-estado{
  font-size:9px;font-weight:900;padding:3px 8px;border-radius:5px;
  background:rgba(59,130,246,.18);color:#bfdbfe
}
.dev-estado.merma{background:rgba(220,38,38,.18);color:#fca5a5}
.dev-estado.rechazada{background:rgba(107,114,128,.25);color:#d1d5db}
.dev-info{font-size:11px;color:var(--texto2);margin-top:5px}
.dev-pie{font-size:9.5px;color:var(--texto3);margin-top:3px}

.dev-l{
  display:grid;grid-template-columns:1fr 78px 74px;gap:7px;align-items:center;
  padding:7px 9px;margin-bottom:4px;border-radius:7px;
  background:rgba(255,255,255,.04);font-size:10px
}
.dev-l-lpn{font-family:ui-monospace,monospace;font-weight:900;color:#93c5fd;font-size:10px}
.dev-l-sku{font-family:ui-monospace,monospace;color:var(--texto2);font-size:10px}
.dev-l-cant{font-family:ui-monospace,monospace;font-weight:900;color:#fcd34d;text-align:right;font-size:10px}


/* ==========================================================================
   LA DEVOLUCION CON ESCANEO
   ========================================================================== */
.dev-esc-cab{
  display:grid;grid-template-columns:1fr 74px 52px 32px;
  gap:6px;padding:4px 7px;font-size:8.5px;font-weight:900;
  color:var(--texto3);letter-spacing:.4px;
  border-bottom:1px solid rgba(255,255,255,.10);margin-bottom:5px
}
.dev-esc{
  display:grid;grid-template-columns:1fr 74px 52px 32px;
  gap:6px;align-items:center;padding:6px 7px;margin-bottom:3px;
  background:rgba(255,255,255,.04);border-radius:7px
}
.dev-esc-lpn{font-family:ui-monospace,monospace;font-weight:900;color:#93c5fd;font-size:9.5px}
.dev-esc-sku{font-family:ui-monospace,monospace;color:var(--texto2);font-size:9.5px}
.dev-esc-cant{font-family:ui-monospace,monospace;font-weight:900;color:#fcd34d;font-size:10px;text-align:right}
.dev-esc-x{
  width:26px;height:26px;border-radius:6px;padding:0;
  background:rgba(220,38,38,.16);border:1px solid rgba(220,38,38,.35);
  color:#fca5a5;font-size:12px;font-weight:900;cursor:pointer;
  display:flex;align-items:center;justify-content:center
}
.dev-esc-x:active{ background:rgba(220,38,38,.34) }


/* ==========================================================================
   EL LEVANTAMIENTO DE UBICACIONES
   ========================================================================== */
.lev-cab{display:flex;justify-content:space-between;align-items:center;gap:8px}
.lev-nombre{font-size:12px;font-weight:900;color:var(--texto2)}
.lev-cont{font-family:ui-monospace,monospace;font-size:12px;font-weight:900;color:#93c5fd}
.lev-barra{height:7px;border-radius:4px;background:rgba(255,255,255,.09);margin-top:7px;overflow:hidden}
.lev-barra-in{height:100%;border-radius:4px;background:linear-gradient(90deg,#3b82f6,#60a5fa);transition:width .25s ease}
.lev-stats{display:flex;justify-content:space-between;gap:8px;margin-top:7px;font-size:9.5px;color:var(--texto3)}
.lev-stats b{color:var(--texto2);font-family:ui-monospace,monospace}

.lev-pos{
  margin:10px 0;padding:16px 14px;border-radius:12px;
  background:linear-gradient(180deg,rgba(59,130,246,.14),rgba(59,130,246,.06));
  border:1px solid rgba(59,130,246,.35);
  text-align:center
}
.lev-pos-tt{font-size:9.5px;font-weight:900;color:#93c5fd;letter-spacing:1.2px}
.lev-pos-num{
  font-family:ui-monospace,monospace;font-size:26px;font-weight:900;
  color:#fff;margin-top:4px;letter-spacing:1px
}

.lev-lpn-caja{display:flex;gap:7px;margin-bottom:10px}
.lev-lpn-caja input{
  flex:1;min-width:0;height:58px !important;
  font-family:ui-monospace,monospace;font-size:17px !important;
  font-weight:900;text-align:center;letter-spacing:1px;
  border-radius:11px !important;border:2px solid rgba(59,130,246,.45) !important;
  background:rgba(59,130,246,.08) !important;color:#fff !important
}
.lev-lpn-caja input:focus{
  border-color:#3b82f6 !important;
  box-shadow:0 0 0 3px rgba(59,130,246,.20)
}
.lev-cam{
  flex:0 0 58px;width:58px;height:58px;border-radius:11px;
  background:rgba(234,179,8,.16);border:1px solid rgba(234,179,8,.48);
  color:#fcd34d;font-size:24px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;padding:0
}
.lev-botones{display:flex;gap:7px;margin-top:8px}
.lev-btn-chico{
  flex:1;height:46px;border-radius:10px;
  background:rgba(71,85,105,.35);border:1px solid rgba(100,116,139,.45);
  color:var(--texto2);font-size:11px;font-weight:900;cursor:pointer
}
.lev-btn-chico:active{ background:rgba(71,85,105,.55) }

.lev-card{padding:12px;border-radius:11px;margin-bottom:9px}
.lev-card-ok{background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.32)}
.lev-card-nuevo{background:rgba(234,179,8,.08);border:1px solid rgba(234,179,8,.32)}
.lev-lpn-tt{font-family:ui-monospace,monospace;font-size:14px;font-weight:900;color:#93c5fd}
.lev-desc{font-size:12px;color:var(--texto);margin-top:4px;font-weight:700}
.lev-info{font-size:10.5px;color:var(--texto3);margin-top:3px}

.lev-cant{margin-top:11px;padding-top:11px;border-top:1px solid rgba(255,255,255,.10)}
.lev-cant-tt{font-size:9.5px;font-weight:900;color:var(--texto3);letter-spacing:.8px;margin-bottom:8px}
.lev-cant-fila{
  display:grid;grid-template-columns:70px 70px 1fr;gap:8px;align-items:center;
  margin-bottom:7px
}
.lev-cant-fila span:first-child{font-size:11px;font-weight:900;color:var(--texto2)}
.lev-cant-fila input{
  height:44px !important;text-align:center;
  font-family:ui-monospace,monospace;font-size:16px !important;font-weight:900;
  border-radius:9px !important;border:1px solid var(--borde) !important;
  background:rgba(255,255,255,.05) !important;color:#fff !important
}
.lev-cant-uni{font-size:10px;color:var(--texto3);font-family:ui-monospace,monospace}
.lev-cant-total{
  display:flex;justify-content:space-between;align-items:center;
  margin-top:10px;padding:11px;border-radius:9px;
  background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.30)
}
.lev-cant-total span:first-child{font-size:11px;font-weight:900;color:var(--texto2)}
.lev-total-num{font-family:ui-monospace,monospace;font-size:18px;font-weight:900;color:#86efac}

.lev-tarea-btn{
  width:100%;padding:13px;margin-bottom:7px;border-radius:9px;
  background:rgba(71,85,105,.30);border:1px solid rgba(100,116,139,.40);
  color:var(--texto2);font-size:11.5px;font-weight:800;cursor:pointer;text-align:left
}
.lev-tarea-btn:active{ background:rgba(71,85,105,.50) }


/* ==========================================================================
   ⚠️⚠️  LOS ARREGLOS FINALES  ⚠️⚠️
   --------------------------------------------------------------------------
   1) EL SCROLL: que TODOS los botones se vean en TODAS las pantallas
   2) INICIO: +8% a las fuentes (SOLO fuentes, no campos)
   3) MODO PC: que se vea como un WMS de verdad
   ========================================================================== */


/* ==========================================================================
   1) EL SCROLL  ·  UNA SOLA REGLA QUE GANA SOBRE TODAS
   --------------------------------------------------------------------------
   Habia 6 reglas de padding-bottom distintas peleando.
   Esta va al final y gana.
   ========================================================================== */
main,
main.vista,
body > main{
  padding-bottom: calc(110px + env(safe-area-inset-bottom, 0px)) !important;
  padding-top: 12px !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
  box-sizing: border-box;
}

/* ---- cada pantalla deja aire extra ---- */
section.vista{
  padding-bottom: 36px !important;
}

/* ---- el ultimo elemento de cada pantalla NO queda pegado ---- */
section.vista > *:last-child{
  margin-bottom: 28px !important;
}

/* ---- la barra de abajo SIEMPRE visible y por encima ---- */
nav{
  z-index: 70 !important;
}

/* ---- en las pantallas muy largas, un respiro mas ---- */
#v-recibir,
#v-datos,
#v-fiscal,
#v-transformar,
#v-levantamiento,
#v-calidad,
#v-picking,
#v-conteo,
#v-despacho{
  padding-bottom: 48px !important;
}


/* ==========================================================================
   2) INICIO  ·  +8% A LAS FUENTES  (solo fuentes, NO campos)
   --------------------------------------------------------------------------
   El usuario pidio: "en pantalla inicio reponer 8% de tamano a las
   fuentes solo fuentes no campos"
   ========================================================================== */
#v-inicio{
  --inicio-esc: 1.08;
}
/* ---- las tarjetas de botones ---- */
#v-inicio .acciones > button,
#v-inicio .acciones.dos > button,
#v-inicio .acciones.tres > button,
#v-inicio .btn-primario,
#v-inicio .btn-fantasma,
#v-inicio .btn-ok{
  font-size: calc(12.5px * var(--inicio-esc)) !important;
}

/* ---- el titulo de la tarjeta ---- */
#v-inicio h3,
#v-inicio .dash-tt{
  font-size: calc(15px * var(--inicio-esc)) !important;
}

/* ---- el chip de arriba ---- */
#v-inicio .dash-chip{
  font-size: calc(10.5px * var(--inicio-esc)) !important;
}
/* ⚠️ LOS CAMPOS NO SE TOCAN (ya estan bien) */


/* ==========================================================================
   3) MODO PC  ·  QUE SE VEA COMO UN WMS DE VERDAD
   --------------------------------------------------------------------------
   Referencias: SAP Fiori, Manhattan Active, Blue Yonder.
   Paleta sobria, tipografia clara, botones rectangulares, mucho aire.
   ========================================================================== */

@media (min-width: 900px){

  /* ---- 3.1 EL FONDO Y LA TIPOGRAFIA ---- */
  html{
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI',
                 Roboto, 'Helvetica Neue', Arial, sans-serif !important;
  }
  body{
    background:
      radial-gradient(1200px 600px at 10% -10%, rgba(56,120,255,.10), transparent 60%),
      radial-gradient(900px 500px at 90% 0%, rgba(56,120,255,.06), transparent 55%),
      #0b1220 !important;
  }
  html[data-tema="dia"] body{
    background:
      radial-gradient(1000px 500px at 10% -10%, rgba(37,99,235,.06), transparent 60%),
      #f1f5f9 !important;
  }

  /* ---- 3.2 EL CONTENEDOR PRINCIPAL ---- */
  main{
    max-width: 1440px !important;
    margin: 0 auto !important;
    padding: 24px 32px calc(110px + env(safe-area-inset-bottom, 0px)) !important;
  }

  /* ---- 3.3 LA CABECERA ---- */
  header{
    max-width: 1440px !important;
    margin: 0 auto !important;
    padding: 14px 32px !important;
  }

  /* ---- 3.4 LA NAVEGACION: barra horizontal arriba, tipo aplicacion ---- */
  nav{
    position: fixed !important;
    top: 0 !important;
    bottom: auto !important;
    left: 0 !important;
    right: 0 !important;
    min-height: 58px !important;
    padding: 0 26px !important;
    display: flex !important;
    align-items: stretch !important;
    justify-content: center !important;
    gap: 2px !important;
    background: rgba(11,18,32,.92) !important;
    backdrop-filter: blur(14px);
    border-top: none !important;
    border-bottom: 1px solid rgba(69,85,112,.45) !important;
    box-shadow: 0 2px 20px rgba(0,0,0,.35) !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    z-index: 90 !important;
  }
  html[data-tema="dia"] nav{
    background: rgba(255,255,255,.94) !important;
    border-bottom: 1px solid rgba(0,0,0,.08) !important;
    box-shadow: 0 2px 14px rgba(0,0,0,.06) !important;
  }
  nav > button{
    min-width: 0 !important;
    max-width: none !important;
    padding: 0 16px !important;
    height: 58px !important;
    font-size: 12.5px !important;
    font-weight: 700 !important;
    letter-spacing: .2px !important;
    border-radius: 0 !important;
    background: transparent !important;
    border: none !important;
    border-bottom: 2px solid transparent !important;
    color: #94a3b8 !important;
    white-space: nowrap !important;
    transition: color .14s, border-color .14s, background .14s !important;
  }
  nav > button:hover{
    color: #e2e8f0 !important;
    background: rgba(148,163,184,.08) !important;
  }
  nav > button.activo{
    color: #fff !important;
    border-bottom-color: #3b82f6 !important;
    background: rgba(59,130,246,.10) !important;
  }
  html[data-tema="dia"] nav > button{ color: #64748b !important }
  html[data-tema="dia"] nav > button:hover{ color: #0f172a !important; background: rgba(15,23,42,.05) !important }
  html[data-tema="dia"] nav > button.activo{ color: #1d4ed8 !important; background: rgba(37,99,235,.08) !important }

  /* ---- 3.5 LAS TARJETAS ---- */
  .card{
    border-radius: 12px !important;
    padding: 20px 22px !important;
    margin-bottom: 16px !important;
    box-shadow: 0 1px 3px rgba(0,0,0,.20), 0 8px 28px rgba(0,0,0,.13);
    border: 1px solid rgba(69,85,112,.42) !important;
  }
  html[data-tema="dia"] .card{
    border: 1px solid rgba(15,23,42,.09) !important;
    box-shadow: 0 1px 2px rgba(15,23,42,.05), 0 6px 20px rgba(15,23,42,.05);
  }

  /* ---- 3.6 LOS BOTONES: rectangulares, sobrios, con aire ---- */
  .acciones > button,
  .btn-primario,
  .btn-ok,
  .btn-fantasma,
  .btn-ancho{
    height: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
    border-radius: 8px !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    letter-spacing: .15px !important;
    padding: 0 18px !important;
    transition: background .13s, border-color .13s, transform .06s !important;
  }
  .acciones > button:active,
  .btn-primario:active,
  .btn-ok:active{
    transform: translateY(1px) !important;
  }

  /* ---- 3.7 LAS GRILLAS: 2, 3 o 4 columnas segun el ancho ---- */
  .acciones.dos{
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }
  .acciones.tres{
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }

  /* ---- 3.8 LOS GRUPOS DE INICIO: grilla de 3 ---- */
  #v-inicio .acciones{
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
    gap: 10px !important;
  }
  #v-inicio .acciones > button{
    width: 100% !important;
    min-width: 0 !important;
    height: 46px !important;
    min-height: 46px !important;
    max-height: 46px !important;
  }

  /* ---- 3.9 LAS TABLAS ---- */
  table{
    width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 12.5px !important;
  }
  thead th{
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: .5px !important;
    text-transform: uppercase !important;
    color: #64748b !important;
    padding: 10px 12px !important;
    border-bottom: 1px solid rgba(69,85,112,.42) !important;
    text-align: left !important;
  }
  tbody td{
    padding: 10px 12px !important;
    border-bottom: 1px solid rgba(69,85,112,.20) !important;
  }
  tbody tr:hover{
    background: rgba(59,130,246,.06) !important;
  }

  /* ---- 3.10 LOS CAMPOS ---- */
  input, select, textarea{
    height: 40px !important;
    border-radius: 8px !important;
    font-size: 13px !important;
    padding: 0 12px !important;
  }
  label{
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: .5px !important;
    text-transform: uppercase !important;
    color: #64748b !important;
    margin-bottom: 5px !important;
  }

  /* ---- 3.11 LAS PANTALLAS EN 2 COLUMNAS CUANDO SE PUEDE ---- */
  .vista > .card{
    max-width: none !important;
  }

  /* ---- 3.12 LOS FONDOS DE LAS CARDS ---- */
  :root{
    --panel: #131c2e;
    --panel2: #0f1726;
    --borde: rgba(69,85,112,.42);
    --texto: #e2e8f0;
    --texto2: #94a3b8;
    --texto3: #64748b;
  }
  html[data-tema="dia"]{
    --panel: #ffffff;
    --panel2: #f8fafc;
    --borde: rgba(15,23,42,.10);
    --texto: #0f172a;
    --texto2: #475569;
    --texto3: #94a3b8;
  }

  /* ---- 3.13 LA BARRA DE TRABAJANDO ---- */
  #barraTrabajando{ height: 2px }

  /* ---- 3.14 LOS TOASTS: arriba a la derecha, tipo notificacion ---- */
  #toastCaja{
    left: auto !important;
    right: 24px !important;
    top: 74px !important;
    bottom: auto !important;
    max-width: 380px !important;
    align-items: flex-end !important;
  }
  .toast{
    border-radius: 9px !important;
    font-size: 12.5px !important;
    padding: 12px 16px !important;
  }
}


/* ==========================================================================
   3.15  PANTALLAS GRANDES (>1400px): mas aire todavia
   ========================================================================== */
@media (min-width: 1400px){
  main{ max-width: 1560px !important }
  header{ max-width: 1560px !important }
}


/* ==========================================================================
   BUG 3 · SOLO UNA PANTALLA VISIBLE A LA VEZ
   --------------------------------------------------------------------------
   Habia contenido de otra pantalla que se colaba (ej: CLIENTES mostraba
   el REPORTE NUEVO de DATOS).
   Esta regla fuerza que solo la .activa se vea.
   ========================================================================== */
section.vista:not(.activa){
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  overflow: hidden !important;
}
section.vista.activa{
  display: block !important;
  visibility: visible !important;
  height: auto !important;
}
.ava-part{
  display:grid;grid-template-columns:1fr auto auto;gap:9px;align-items:center;
  padding:8px 10px;margin-bottom:5px;border-radius:8px;
  background:rgba(255,255,255,.035);font-size:10.5px
}
.ava-part-nom{font-weight:900;color:#93c5fd;font-family:ui-monospace,monospace}
.ava-part-num{color:var(--texto2);font-size:10px}
.ava-part-fecha{color:var(--texto3);font-size:9px;font-family:ui-monospace,monospace}

.ava-tar{
  display:flex;justify-content:space-between;align-items:center;
  padding:10px 12px;margin-bottom:6px;border-radius:9px;
  background:rgba(234,179,8,.09);border:1px solid rgba(234,179,8,.28)
}
.ava-tar-tipo{font-size:11px;font-weight:900;color:#fcd34d;letter-spacing:.3px}
.ava-tar-n{font-family:ui-monospace,monospace;font-size:15px;font-weight:900;color:#fcd34d}

.ava-log{
  display:grid;grid-template-columns:52px 72px 1fr;gap:7px;
  padding:6px 8px;margin-bottom:3px;border-radius:6px;
  background:rgba(255,255,255,.025);font-size:9.5px
}
.ava-log-fecha{font-family:ui-monospace,monospace;color:var(--texto3)}
.ava-log-usu{font-family:ui-monospace,monospace;font-weight:900;color:#93c5fd}
.ava-log-acc{font-weight:800;color:var(--texto2)}
.ava-log-det{grid-column:1/-1;color:var(--texto3);font-size:9px;padding-left:4px}


/* ==========================================================================
   EL AVANCE  ·  LETRAS GRANDES Y CONTRASTE
   ========================================================================== */
.ava-hero{text-align:center;padding:22px 16px !important}
.ava-hero-tt{font-size:12px;font-weight:900;color:#cbd5e1;letter-spacing:1.4px}
.ava-hero-pct{
  font-size:64px;font-weight:900;font-family:ui-monospace,monospace;
  line-height:1;margin:10px 0 4px;letter-spacing:-2px;
  text-shadow:0 0 30px currentColor;
}
.ava-hero-sub{font-size:14px;color:#e2e8f0;font-weight:800}
.ava-hero-barra{
  height:16px;border-radius:8px;background:rgba(255,255,255,.10);
  margin:16px 0 14px;overflow:hidden
}
.ava-hero-in{height:100%;border-radius:8px;transition:width .6s ease}
.ava-hero-datos{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:6px}
.ava-d{
  padding:12px 6px;border-radius:11px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12)
}
.ava-d b{
  display:block;font-size:19px;font-weight:900;color:#fff;
  font-family:ui-monospace,monospace
}
.ava-d span{display:block;font-size:10px;color:#cbd5e1;font-weight:800;margin-top:3px;letter-spacing:.4px}

.ava-tt{font-size:15px !important;font-weight:900 !important;letter-spacing:.5px}

/* ---- por nave ---- */
.ava-nave{padding:13px;margin-bottom:10px;border-radius:11px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10)}
.ava-nave-toldo{background:rgba(234,179,8,.09);border-color:rgba(234,179,8,.35)}
.ava-nave-top{display:flex;justify-content:space-between;align-items:baseline;gap:9px}
.ava-nave-nom{font-size:16px;font-weight:900;color:#fff;letter-spacing:.5px}
.ava-nave-pct{font-size:22px;font-weight:900;font-family:ui-monospace,monospace}
.ava-nave-barra{height:11px;border-radius:6px;background:rgba(255,255,255,.10);margin:9px 0 7px;overflow:hidden}
.ava-nave-in{height:100%;border-radius:6px;transition:width .5s}
.ava-nave-sub{font-size:12px;color:#cbd5e1;font-weight:700}

/* ---- por rack ---- */
.ava-rack{padding:12px;margin-bottom:9px;border-radius:11px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10)}
.ava-rack.hecho{background:rgba(34,197,94,.10);border-color:rgba(34,197,94,.35)}
.ava-rack-top{display:flex;justify-content:space-between;align-items:baseline;gap:9px}
.ava-rack-nom{font-size:15px;font-weight:900;color:#e2e8f0}
.ava-rack-pct{font-size:20px;font-weight:900;font-family:ui-monospace,monospace}
.ava-rack-barra{height:9px;border-radius:5px;background:rgba(255,255,255,.10);margin:8px 0 8px;overflow:hidden}
.ava-rack-in{height:100%;border-radius:5px;transition:width .5s}
.ava-rack-datos{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:#cbd5e1;font-weight:700}
.ava-rack-datos b{color:#fff;font-family:ui-monospace,monospace;font-size:13px}
.ava-rack-mat{color:#fcd34d}
.ava-rack-fecha{font-size:10.5px;color:#94a3b8;margin-top:6px;font-family:ui-monospace,monospace}

/* ---- el toldo ---- */
.ava-tol-area{
  display:grid;grid-template-columns:44px 1fr auto;gap:10px;align-items:center;
  padding:10px 12px;margin-bottom:6px;border-radius:9px;
  background:rgba(234,179,8,.10);border:1px solid rgba(234,179,8,.30)
}
.ava-tol-letra{
  font-size:18px;font-weight:900;color:#fcd34d;font-family:ui-monospace,monospace;
  text-align:center
}
.ava-tol-pal{font-size:14px;font-weight:900;color:#fff}
.ava-tol-uni{font-size:11px;color:#cbd5e1;font-family:ui-monospace,monospace}

/* ---- participantes ---- */
.ava-part{
  display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;
  padding:11px 12px;margin-bottom:6px;border-radius:9px;
  background:rgba(255,255,255,.05);font-size:12.5px
}
.ava-part-nom{font-weight:900;color:#93c5fd;font-family:ui-monospace,monospace;font-size:13px}
.ava-part-num{color:#e2e8f0;font-size:12px;font-weight:700}
.ava-part-fecha{color:#94a3b8;font-size:10.5px;font-family:ui-monospace,monospace}

/* ---- tareas ---- */
.ava-tar{
  display:flex;justify-content:space-between;align-items:center;
  padding:12px 14px;margin-bottom:7px;border-radius:10px;
  background:rgba(234,179,8,.10);border:1px solid rgba(234,179,8,.30)
}
.ava-tar-tipo{font-size:13px;font-weight:900;color:#fcd34d;letter-spacing:.4px}
.ava-tar-n{font-family:ui-monospace,monospace;font-size:18px;font-weight:900;color:#fcd34d}

/* ---- log ---- */
.ava-log{
  display:grid;grid-template-columns:58px 76px 1fr;gap:8px;
  padding:8px 10px;margin-bottom:4px;border-radius:7px;
  background:rgba(255,255,255,.035);font-size:11px
}
.ava-log-fecha{font-family:ui-monospace,monospace;color:#94a3b8}
.ava-log-usu{font-family:ui-monospace,monospace;font-weight:900;color:#93c5fd}
.ava-log-acc{font-weight:800;color:#e2e8f0}
.ava-log-det{grid-column:1/-1;color:#94a3b8;font-size:10px;padding-left:4px}

/* ==========================================================================
   EL TOLDO  ·  LETRAS GRANDES
   ========================================================================== */
.toldo-nota{
  margin-top:9px;padding:12px;border-radius:9px;font-size:12.5px;line-height:1.7;
  background:rgba(59,130,246,.09);border:1px solid rgba(59,130,246,.28);color:#cbd5e1
}
.toldo-nota b{color:#fff}

.toldo-area{
  display:grid;grid-template-columns:52px 1fr 24px;gap:12px;align-items:center;
  padding:14px;margin-bottom:9px;border-radius:12px;cursor:pointer;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12)
}
.toldo-area:active{background:rgba(59,130,246,.12)}
.toldo-area.hecha{background:rgba(34,197,94,.10);border-color:rgba(34,197,94,.35)}
.toldo-area-letra{
  font-size:26px;font-weight:900;color:#93c5fd;font-family:ui-monospace,monospace;
  text-align:center;text-shadow:0 0 18px rgba(59,130,246,.5)
}
.toldo-area.hecha .toldo-area-letra{color:#86efac;text-shadow:0 0 18px rgba(34,197,94,.5)}
.toldo-area-n{font-size:16px;font-weight:900;color:#fff}
.toldo-area-sub{font-size:11.5px;color:#cbd5e1;font-weight:700;margin-top:3px}
.toldo-area-flecha{font-size:24px;color:#64748b;font-weight:900}

.toldo-lin{
  padding:12px;margin-bottom:8px;border-radius:10px;position:relative;
  background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.28)
}
.toldo-lin-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.toldo-lin-sku{font-family:ui-monospace,monospace;font-size:15px;font-weight:900;color:#93c5fd}
.toldo-lin-pal{font-family:ui-monospace,monospace;font-size:20px;font-weight:900;color:#86efac}
.toldo-lin-desc{font-size:12px;color:#e2e8f0;font-weight:700;margin-top:4px}
.toldo-lin-sub{font-size:10.5px;color:#94a3b8;margin-top:3px;font-family:ui-monospace,monospace}
.toldo-lin-x{
  position:absolute;right:10px;bottom:10px;
  padding:6px 10px;border-radius:7px;font-size:10px;font-weight:900;
  background:rgba(220,38,38,.18);border:1px solid rgba(220,38,38,.40);
  color:#fca5a5;cursor:pointer
}

.toldo-auto{font-size:12px;color:#86efac;font-weight:800;margin-top:6px;min-height:16px}

.toldo-total{
  display:flex;justify-content:space-between;align-items:center;
  padding:14px;border-radius:11px;
  background:rgba(34,197,94,.14);border:1px solid rgba(34,197,94,.38)
}
.toldo-total span{font-size:11px;font-weight:900;color:#cbd5e1;letter-spacing:.6px}
.toldo-total b{font-size:15px;font-weight:900;color:#86efac;font-family:ui-monospace,monospace}


/* ==========================================================================
   EL CONSOLIDADO DE INVENTARIO
   ========================================================================== */
.cons-hero{text-align:center;padding:20px 16px !important}
.cons-hero-tt{font-size:13px;font-weight:900;color:#cbd5e1;letter-spacing:1.2px}
.cons-t{display:grid;grid-template-columns:1fr;gap:2px;padding:12px;margin-bottom:8px;
  border-radius:10px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10)}
.cons-t.ok{background:rgba(34,197,94,.10);border-color:rgba(34,197,94,.32)}
.cons-t.dif{background:rgba(234,179,8,.10);border-color:rgba(234,179,8,.32)}
.cons-t-cab{font-size:10px;font-weight:900;color:#94a3b8;letter-spacing:.7px}
.cons-t-num{font-size:22px;font-weight:900;color:#fff;font-family:ui-monospace,monospace}
.cons-t-num small{font-size:11px;color:#94a3b8;font-weight:700}
.cons-t-uni{font-size:11px;color:#cbd5e1;font-family:ui-monospace,monospace}

.cons-check{display:flex;align-items:center;gap:9px;margin-top:12px;padding:11px;
  border-radius:9px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09);
  cursor:pointer;font-size:12px;font-weight:800;color:#e2e8f0}
.cons-check input{width:20px;height:20px;accent-color:#3b82f6}

.cons-lin{padding:12px;margin-bottom:9px;border-radius:11px;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09)}
.cons-lin.ok{border-color:rgba(34,197,94,.30);background:rgba(34,197,94,.06)}
.cons-lin.dif{border-color:rgba(234,179,8,.35);background:rgba(234,179,8,.07)}
.cons-lin-top{display:flex;justify-content:space-between;align-items:baseline;gap:9px}
.cons-lin-sku{font-family:ui-monospace,monospace;font-size:15px;font-weight:900;color:#93c5fd}
.cons-lin-pct{font-family:ui-monospace,monospace;font-size:15px;font-weight:900;color:#cbd5e1}
.cons-lin-desc{font-size:11.5px;color:#e2e8f0;font-weight:700;margin:4px 0 8px}
.cons-lin-nums{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.cons-lin-nums > div{padding:7px 4px;border-radius:7px;background:rgba(0,0,0,.22);text-align:center}
.cons-lin-nums span{display:block;font-size:8.5px;font-weight:900;color:#94a3b8;letter-spacing:.5px}
.cons-lin-nums b{display:block;font-size:12px;font-weight:900;color:#e2e8f0;
  font-family:ui-monospace,monospace;margin-top:2px}
.cons-lin-nums .ok-num b{color:#86efac}
.cons-lin-nums .dif-num b{color:#fcd34d}

/* ==========================================================================
   LA COLA DE TAREAS  ·  CON UBICACION
   ========================================================================== */
.tar-nota{margin-top:9px;padding:12px;border-radius:9px;font-size:12px;line-height:1.65;
  background:rgba(59,130,246,.09);border:1px solid rgba(59,130,246,.26);color:#cbd5e1}
.tar-nota b{color:#fff}

.tar-tipos{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.tar-tipo-chip{padding:8px 12px;border-radius:9px;font-size:11px;font-weight:900;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);color:#e2e8f0}
.tar-tipo-chip b{margin-left:5px;font-size:13px;font-family:ui-monospace,monospace}
.tar-tipo-chip.rojo{background:rgba(220,38,38,.14);border-color:rgba(220,38,38,.36);color:#fca5a5}
.tar-tipo-chip.ambar{background:rgba(234,179,8,.14);border-color:rgba(234,179,8,.36);color:#fcd34d}
.tar-tipo-chip.azul{background:rgba(59,130,246,.14);border-color:rgba(59,130,246,.36);color:#93c5fd}
.tar-tipo-chip.gris{background:rgba(148,163,184,.10);border-color:rgba(148,163,184,.26);color:#cbd5e1}

.tar-tabs{display:flex;gap:6px;margin-top:12px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tar-tab{flex:0 0 auto;padding:10px 14px;border-radius:9px;font-size:11px;font-weight:900;
  letter-spacing:.4px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);
  color:#94a3b8;cursor:pointer;white-space:nowrap}
.tar-tab.activa{background:rgba(59,130,246,.18);border-color:rgba(59,130,246,.50);color:#93c5fd}

.tar-card{padding:14px;margin-bottom:11px;border-radius:12px;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.10)}
.tar-card.rojo{border-color:rgba(220,38,38,.42);background:rgba(220,38,38,.07)}
.tar-card.ambar{border-color:rgba(234,179,8,.42);background:rgba(234,179,8,.06)}
.tar-card.azul{border-color:rgba(59,130,246,.42);background:rgba(59,130,246,.06)}

.tar-card-top{display:flex;justify-content:space-between;align-items:center;gap:9px;margin-bottom:10px}
.tar-badge{padding:6px 11px;border-radius:7px;font-size:10px;font-weight:900;letter-spacing:.5px}
.tar-badge.rojo{background:rgba(220,38,38,.24);color:#fca5a5}
.tar-badge.ambar{background:rgba(234,179,8,.24);color:#fcd34d}
.tar-badge.azul{background:rgba(59,130,246,.24);color:#93c5fd}
.tar-badge.gris{background:rgba(148,163,184,.18);color:#cbd5e1}
.tar-estado{padding:5px 9px;border-radius:6px;font-size:9.5px;font-weight:900;letter-spacing:.4px}
.tar-estado.pend{background:rgba(234,179,8,.20);color:#fcd34d}
.tar-estado.ok{background:rgba(34,197,94,.20);color:#86efac}

/* ---- LA UBICACION GRANDE ---- */
.tar-ubic{display:grid;grid-template-columns:1fr;gap:2px;padding:12px;border-radius:10px;
  background:rgba(59,130,246,.14);border:2px solid rgba(59,130,246,.46);cursor:pointer;margin-bottom:10px}
.tar-ubic:active{background:rgba(59,130,246,.24)}
.tar-ubic-lbl{font-size:9px;font-weight:900;color:#94a3b8;letter-spacing:1.2px}
.tar-ubic-cod{font-size:22px;font-weight:900;color:#93c5fd;font-family:ui-monospace,monospace;
  letter-spacing:1px;text-shadow:0 0 16px rgba(59,130,246,.5)}
.tar-ubic-sub{font-size:10.5px;font-weight:800;color:#cbd5e1;font-family:ui-monospace,monospace}

.tar-dato{display:flex;justify-content:space-between;align-items:baseline;gap:9px;
  padding:7px 2px;border-bottom:1px solid rgba(255,255,255,.06)}
.tar-dato span{font-size:9.5px;font-weight:900;color:#94a3b8;letter-spacing:.6px}
.tar-dato b{font-size:12px;font-weight:900;color:#e2e8f0;font-family:ui-monospace,monospace}
.tar-desc{font-size:11.5px;color:#e2e8f0;font-weight:700;margin-top:8px}
.tar-meta{display:flex;justify-content:space-between;gap:9px;margin-top:8px;
  font-size:9.5px;color:#94a3b8;font-family:ui-monospace,monospace}
.tar-motivo{margin-top:7px;padding:8px 10px;border-radius:7px;font-size:10.5px;
  background:rgba(0,0,0,.20);color:#cbd5e1}
.tar-res{margin-top:7px;padding:8px 10px;border-radius:7px;font-size:10.5px;
  background:rgba(34,197,94,.10);color:#86efac}

.tar-botones{display:grid;grid-template-columns:1fr;gap:7px;margin-top:12px}
.tar-btn{height:46px;border-radius:9px;font-size:12px;font-weight:900;letter-spacing:.5px;
  cursor:pointer;border:1px solid transparent}
.tar-btn.ok{background:linear-gradient(180deg,rgba(34,197,94,.30),rgba(34,197,94,.16));
  border-color:rgba(34,197,94,.55);color:#86efac}
.tar-btn.ok:active{background:rgba(34,197,94,.44)}
.tar-btn.ir{background:rgba(59,130,246,.14);border-color:rgba(59,130,246,.42);color:#93c5fd}
.tar-btn.ir:active{background:rgba(59,130,246,.28)}
.tar-btn.rojo{background:rgba(220,38,38,.16);border-color:rgba(220,38,38,.46);color:#fca5a5}
.tar-btn.rojo:active{background:rgba(220,38,38,.30)}
.tar-btn.gris{background:rgba(148,163,184,.12);border-color:rgba(148,163,184,.30);color:#cbd5e1}


/* ==========================================================================
   LOS PARTICIPANTES DEL INVENTARIO
   ========================================================================== */
.par-nota{margin-top:9px;padding:12px;border-radius:9px;font-size:12px;line-height:1.65;
  background:rgba(59,130,246,.09);border:1px solid rgba(59,130,246,.26);color:#cbd5e1}
.par-nota b{color:#fff}

.par-card{padding:14px;margin-bottom:11px;border-radius:12px;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.10)}
.par-card.azul{border-color:rgba(59,130,246,.42);background:rgba(59,130,246,.07)}
.par-card.ambar{border-color:rgba(234,179,8,.42);background:rgba(234,179,8,.06)}
.par-card-top{display:flex;justify-content:space-between;align-items:center;gap:9px;margin-bottom:9px}
.par-badge{padding:6px 11px;border-radius:7px;font-size:10px;font-weight:900;letter-spacing:.5px}
.par-badge.azul{background:rgba(59,130,246,.24);color:#93c5fd}
.par-badge.ambar{background:rgba(234,179,8,.24);color:#fcd34d}
.par-badge.gris{background:rgba(148,163,184,.18);color:#cbd5e1}
.par-ux{font-family:ui-monospace,monospace;font-size:11px;font-weight:900;color:#94a3b8}

.par-nombre{font-size:15px;font-weight:900;color:#fff;margin-bottom:10px}
.par-datos{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.par-datos > div{padding:9px;border-radius:8px;background:rgba(0,0,0,.22)}
.par-datos span{display:block;font-size:8.5px;font-weight:900;color:#94a3b8;letter-spacing:.6px}
.par-datos b{display:block;font-size:12.5px;font-weight:900;color:#e2e8f0;
  font-family:ui-monospace,monospace;margin-top:3px}
.par-meta{margin-top:9px;font-size:9.5px;color:#94a3b8;font-family:ui-monospace,monospace}
.par-botones{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:11px}
.par-btn{height:42px;border-radius:8px;font-size:11px;font-weight:900;letter-spacing:.3px;
  cursor:pointer;background:rgba(59,130,246,.13);border:1px solid rgba(59,130,246,.36);
  color:#93c5fd}
.par-btn.rojo{background:rgba(220,38,38,.13);border-color:rgba(220,38,38,.40);color:#fca5a5}
.par-btn:active{filter:brightness(1.3)}


/* ==========================================================================
   LA CONCILIACION SAP
   ========================================================================== */
.cons-nota{margin-top:10px;padding:12px;border-radius:9px;font-size:11.5px;line-height:1.7;
  background:rgba(234,179,8,.09);border:1px solid rgba(234,179,8,.28);color:#e2e8f0}
.cons-nota b{color:#fff}

.cons-sap-vacio{text-align:center;padding:20px 14px;border-radius:10px;
  background:rgba(255,255,255,.04);border:1px dashed rgba(255,255,255,.16)}
.cons-sap-icono{font-size:34px;margin-bottom:8px;opacity:.55}
.cons-sap-tt{font-size:14px;font-weight:900;color:#e2e8f0;letter-spacing:.3px}
.cons-sap-sub{font-size:11.5px;color:#94a3b8;font-weight:700;margin-top:7px;line-height:1.6}

.cons-sap-ok{padding:14px;border-radius:10px;
  background:rgba(34,197,94,.10);border:1px solid rgba(34,197,94,.34)}
.cons-sap-ok .cons-sap-tt{color:#86efac;margin-bottom:10px}
.cons-sap-fila{display:flex;justify-content:space-between;gap:10px;padding:6px 0;
  border-bottom:1px solid rgba(255,255,255,.07);font-size:11.5px}
.cons-sap-fila:last-child{border-bottom:none}
.cons-sap-fila span{color:#94a3b8;font-weight:800;letter-spacing:.3px}
.cons-sap-fila b{color:#e2e8f0;font-family:ui-monospace,monospace;font-weight:900}

.cons-lin.gris{border-color:rgba(148,163,184,.24);background:rgba(148,163,184,.05)}
.cons-lin.sobra{border-color:rgba(34,197,94,.34);background:rgba(34,197,94,.06)}
.cons-lin.falta{border-color:rgba(234,179,8,.38);background:rgba(234,179,8,.07)}


/* ==========================================================================
   CERRAR Y AJUSTAR
   ========================================================================== */
.ava-cierre{border:2px solid rgba(34,197,94,.34) !important;
  background:rgba(34,197,94,.06) !important}
.ava-cierre-chip.ok{background:rgba(34,197,94,.24) !important;color:#86efac !important}
.ava-cierre-chip.alerta{background:rgba(234,179,8,.24) !important;color:#fcd34d !important}
.ava-cierre-nota{margin-top:10px;padding:12px;border-radius:9px;font-size:11.5px;
  line-height:1.7;background:rgba(0,0,0,.20);color:#cbd5e1}
.ava-cierre-nota b{color:#fff}
.ava-cf{padding:12px;border-radius:10px;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.09)}
.ava-cf-fila{display:flex;justify-content:space-between;align-items:baseline;
  gap:10px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:11.5px}
.ava-cf-fila:last-child{border-bottom:none}
.ava-cf-fila span{color:#94a3b8;font-weight:800}
.ava-cf-fila b{color:#e2e8f0;font-family:ui-monospace,monospace;font-weight:900;font-size:13px}
.ava-cf-fila b.ok{color:#86efac}
.ava-cf-fila b.alerta{color:#fcd34d}
.ava-cf-resumen{margin-top:10px;padding:10px 12px;border-radius:8px;font-size:10.5px;
  background:rgba(59,130,246,.10);border:1px solid rgba(59,130,246,.28);color:#93c5fd;
  font-weight:700;line-height:1.6}


/* ==========================================================================
   LA NAVEGACIÓN PROFESIONAL  (v281)
   --------------------------------------------------------------------------
   5 módulos. 6 tarjetas. Sin 29 botones.
   ========================================================================== */

/* ---- 4.1 LA BARRA DE 5 MODULOS ---- */
nav{
  display: flex !important;
  align-items: stretch !important;
  justify-content: space-around !important;
  min-height: 62px !important;
  padding: 0 !important;
  gap: 0 !important;
}
nav .nav-btn{
  flex: 1 1 0 !important;
  min-width: 0 !important;
  max-width: none !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 2px !important;
  height: 62px !important;
  padding: 6px 2px !important;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: #8b9bb4 !important;
  font-size: 9.5px !important;
  font-weight: 800 !important;
  letter-spacing: .2px !important;
  cursor: pointer !important;
  transition: color .13s, background .13s !important;
  position: relative !important;
}
nav .nav-txt{
  font-size: 9.5px !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}
nav .nav-btn.nav-activo{
  color: #fff !important;
  background: rgba(59,130,246,.16) !important;
}
html[data-tema="dia"] nav .nav-btn{ color: #64748b !important }
html[data-tema="dia"] nav .nav-btn.nav-activo{ color: #1d4ed8 !important; background: rgba(37,99,235,.10) !important }
/* ---- 4.3 LAS 6 TARJETAS ---- */
.ini-grid{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.ini-tile{
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  padding: 15px 14px !important;
  min-height: 108px;
  border-radius: 14px !important;
  border: 1px solid rgba(255,255,255,.10) !important;
  background: rgba(255,255,255,.045) !important;
  cursor: pointer;
  text-align: left;
  transition: transform .07s, background .13s, border-color .13s;
}
.ini-tile:active{ transform: scale(.975) !important }
.ini-tile-ico{ font-size: 22px; line-height: 1; opacity: .95 }
.ini-tile-nom{
  font-size: 11px; font-weight: 900; letter-spacing: .7px;
  color: #cbd5e1; margin-top: 4px;
}
.ini-tile-kpi{
  font-size: 23px; font-weight: 900; line-height: 1.05;
  font-family: ui-monospace, monospace; color: #fff;
  margin-top: auto;
}
.ini-tile-sub{ font-size: 9.5px; font-weight: 800; color: #8b9bb4; letter-spacing: .4px }

/* ---- los colores de cada tarjeta ---- */
.ini-tile.t-ingreso{ background: rgba(34,197,94,.10) !important; border-color: rgba(34,197,94,.30) !important }
.ini-tile.t-ingreso .ini-tile-kpi{ color: #86efac }
.ini-tile.t-guardado{ background: rgba(59,130,246,.10) !important; border-color: rgba(59,130,246,.30) !important }
.ini-tile.t-guardado .ini-tile-kpi{ color: #93c5fd }
.ini-tile.t-despacho{ background: rgba(249,115,22,.10) !important; border-color: rgba(249,115,22,.30) !important }
.ini-tile.t-despacho .ini-tile-kpi{ color: #fdba74 }
.ini-tile.t-inventario{ background: rgba(168,85,247,.10) !important; border-color: rgba(168,85,247,.30) !important }
.ini-tile.t-inventario .ini-tile-kpi{ color: #d8b4fe }
.ini-tile.t-consultar{ background: rgba(6,182,212,.10) !important; border-color: rgba(6,182,212,.30) !important }
.ini-tile.t-consultar .ini-tile-kpi{ color: #67e8f9 }
.ini-tile.t-dashboard{ background: rgba(234,179,8,.10) !important; border-color: rgba(234,179,8,.30) !important }
.ini-tile.t-dashboard .ini-tile-kpi{ color: #fcd34d }

/* ---- 4.4 ACCESOS RÁPIDOS ---- */
.ini-rapidos{ padding: 14px 16px !important }
.ini-rap-tt{ font-size: 10px; font-weight: 900; letter-spacing: 1px; color: #8b9bb4; margin-bottom: 10px }
.ini-rap-grid{ display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px }
.ini-rap{
  height: 42px; border-radius: 9px; font-size: 11.5px; font-weight: 800;
  background: rgba(255,255,255,.055); border: 1px solid rgba(255,255,255,.10);
  color: #cbd5e1; cursor: pointer;
}
.ini-rap:active{ background: rgba(59,130,246,.16) }

/* ---- 4.5 LAS ALERTAS ---- */
.ini-alerta{
  display: flex; align-items: center; gap: 10px;
  padding: 13px 15px; border-radius: 12px; margin-bottom: 10px;
  background: rgba(234,179,8,.12); border: 1px solid rgba(234,179,8,.34);
  font-size: 12px; font-weight: 800; color: #fcd34d; cursor: pointer;
}
.ini-alerta b{ font-family: ui-monospace, monospace; font-size: 14px }
.ini-alerta-ico{ font-size: 17px }
.ini-alerta-flecha{ margin-left: auto; font-size: 19px; opacity: .75 }

/* ---- 4.6 LOS MODULOS (hub) ---- */
.hub-cab{ padding: 4px 2px 14px }
.hub-tt{ display: block; font-size: 22px; font-weight: 900; color: var(--texto); letter-spacing: -.3px }
.hub-sub{ display: block; font-size: 11.5px; font-weight: 700; color: #8b9bb4; margin-top: 3px }

.hub-card{ padding: 15px 16px !important }
.hub-grupo{
  font-size: 9.5px; font-weight: 900; letter-spacing: 1.2px;
  color: #8b9bb4; margin-bottom: 10px;
}
.hub-grid{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.hub-btn{
  min-height: 52px; height: auto; padding: 10px 12px !important;
  border-radius: 10px !important;
  font-size: 12px !important; font-weight: 800 !important;
  line-height: 1.30 !important;
  text-align: left !important;
  background: rgba(255,255,255,.055) !important;
  border: 1px solid rgba(255,255,255,.11) !important;
  color: #e2e8f0 !important;
  cursor: pointer;
  transition: background .12s, border-color .12s;
}
.hub-btn:active{ background: rgba(59,130,246,.20) !important }
.hub-btn.pri{
  background: rgba(59,130,246,.14) !important;
  border-color: rgba(59,130,246,.38) !important;
  color: #93c5fd !important;
}

/* ---- 4.7 EN PC: la nav arriba y las tarjetas en 3 columnas ---- */
@media (min-width: 900px){
  nav{
    justify-content: center !important;
    gap: 4px !important;
    padding: 0 22px !important;
  }
  nav .nav-btn{
    flex: 0 0 auto !important;
    flex-direction: row !important;
    gap: 9px !important;
    height: 58px !important;
    padding: 0 22px !important;
    font-size: 13px !important;
    border-bottom: 2px solid transparent !important;
  }  nav .nav-txt{ font-size: 13px !important; font-weight: 800 !important }
  nav .nav-btn.nav-activo{
    background: rgba(59,130,246,.10) !important;
    border-bottom-color: #3b82f6 !important;
  }
  .ini-grid{ grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 14px !important }
  .ini-tile{ min-height: 128px !important; padding: 20px 18px !important }
  .ini-tile-ico{ font-size: 27px !important }
  .ini-tile-nom{ font-size: 12.5px !important }
  .ini-tile-kpi{ font-size: 29px !important }
  .hub-grid{ grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 10px !important }
  .hub-btn{ min-height: 56px !important; font-size: 13px !important }
  .ini-rap-grid{ grid-template-columns: repeat(4, 1fr) !important }
}

@media (min-width: 1400px){
  .ini-grid{ grid-template-columns: repeat(6, minmax(0, 1fr)) !important }
}


/* ==========================================================================
   EL LOGO FLOW
   ========================================================================== */
header .logo{
  display: flex;
  align-items: center;
  gap: 7px;
  text-decoration: none;
  flex-shrink: 0;
  margin-right: 2px;
}
header .logo-mark{
  width: 27px;
  height: 27px;
  display: block;
  flex-shrink: 0;
  filter: drop-shadow(0 0 8px rgba(56,189,248,.35));
}
header .logo-nom{
  font-size: 15px;
  font-weight: 900;
  letter-spacing: 1.6px;
  color: #f1f5f9;
  line-height: 1;
  font-family: Inter, -apple-system, 'Segoe UI', Roboto, sans-serif;
  display: flex;
  align-items: baseline;
  gap: 3px;
}
header .logo-wms{
  font-size: 8px;
  font-weight: 800;
  letter-spacing: 1px;
  color: #7dd3fc;
  opacity: .95;
}
header #titulo{
  margin-left: 4px !important;
}

/* ---- en pantallas chicas el nombre se esconde, queda el isotipo ---- */
@media (max-width: 380px){
  header .logo-nom{ display: none }
  header .logo-mark{ width: 29px; height: 29px }
}

/* ---- en PC se ve completo y mas grande ---- */
@media (min-width: 900px){
  header .logo{ gap: 10px; margin-right: 12px }
  header .logo-mark{ width: 32px; height: 32px }
  header .logo-nom{ font-size: 18px; letter-spacing: 2px }
  header .logo-wms{ font-size: 9.5px }
  header #titulo{
    font-size: 15px !important;
    padding-left: 14px;
    border-left: 1px solid rgba(255,255,255,.12);
    margin-left: 6px !important;
  }
}


/* ==========================================================================
   EL LOGIN CON EL LOGO FLOW
   ========================================================================== */
.login-marca{
  display:flex;justify-content:center;align-items:center;
  padding:8px 0 18px;
}
.login-logo{
  width:100%;max-width:300px;height:auto;display:block;
  filter:drop-shadow(0 8px 26px rgba(56,189,248,.28));
}
.login-cab{text-align:center;margin-bottom:18px}
.login-cab h2{
  margin:0;font-size:19px;font-weight:900;letter-spacing:1.6px;
  color:#f1f5f9;text-transform:uppercase;
}
.login-cab p{
  margin:5px 0 0;font-size:11px;font-weight:700;color:#8b9bb4;
  letter-spacing:.5px;
}




/* ==========================================================================
   FLOW WMS  ·  SHELL EMPRESARIAL  (v285)
   --------------------------------------------------------------------------
   ARREGLOS v285:
      · NO uso grid en el body (rompia el render)
      · El sidebar es fixed y el contenido tiene margin-left
      · "body > nav" en vez de "nav" (el sidebar tambien es <nav>)
   ========================================================================== */

/* ---- 1. OCULTO POR DEFECTO (solo PC) ---- */
#sidebar,
#appBreadcrumb,
#appPie{
  display: none;
}


/* ==========================================================================
   2. EN PC (>=900px)
   ========================================================================== */
@media (min-width: 900px){

  :root{
    --sb-w: 232px;
    --sb-bg: #0a111e;
    --sb-borde: rgba(255,255,255,.065);
    --bc-h: 38px;
    --hd-h: 52px;
    --pie-h: 30px;
  }
  html[data-tema="dia"]{
    --sb-bg: #ffffff;
    --sb-borde: rgba(15,23,42,.08);
  }

  /* ---- 2.1 EL FONDO ---- */
  html, body{
    background: #070d18 !important;
  }
  html[data-tema="dia"] body{
    background: #f4f6f9 !important;
  }

  /* ==========================================================================
     2.2 EL SIDEBAR  (fijo a la izquierda)
     ========================================================================== */
  #sidebar{
    display: flex !important;
    position: fixed !important;
    top: 0;
    left: 0;
    bottom: 0;
    width: var(--sb-w);
    flex-direction: column;
    background: var(--sb-bg);
    border-right: 1px solid var(--sb-borde);
    overflow-y: auto;
    overflow-x: hidden;
    z-index: 200;
  }

  .sb-marca{
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 16px 18px 15px;
    border-bottom: 1px solid var(--sb-borde);
    flex-shrink: 0;
  }
  .sb-mark{ width: 32px; height: 32px; flex-shrink: 0; display: block }
  .sb-marca-txt{ display: flex; align-items: baseline; gap: 5px; line-height: 1 }
  .sb-marca-txt b{
    font-size: 16px; font-weight: 900; letter-spacing: 2px; color: #f1f5f9;
  }
  html[data-tema="dia"] .sb-marca-txt b{ color: #0f172a }
  .sb-marca-txt span{
    font-size: 8.5px; font-weight: 800; letter-spacing: 1.4px; color: #7dd3fc;
  }

  /* ---- ⚠️  ESTE es el nav del sidebar: NO se esconde ---- */
  #sidebar .sb-nav,
  nav.sb-nav{
    display: block !important;
    flex: 1 1 auto !important;
    position: static !important;
    padding: 12px 10px !important;
    height: auto !important;
    min-height: 0 !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }  .sb-item{
    display: flex !important;
    align-items: center;
    gap: 11px;
    width: 100%;
    height: 38px;
    padding: 0 11px;
    margin: 0 0 2px;
    border: none !important;
    border-radius: 5px !important;
    background: transparent !important;
    color: #8b9bb4 !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    text-align: left;
    cursor: pointer;
    box-shadow: none !important;
  }
  .sb-item i{
    font-style: normal; font-size: 14px; width: 17px;
    text-align: center; opacity: .85; flex-shrink: 0;
  }
  .sb-item:hover{
    background: rgba(148,163,184,.10) !important;
    color: #e2e8f0 !important;
  }
  .sb-item.activo{
    background: rgba(37,99,235,.18) !important;
    color: #fff !important;
    box-shadow: inset 2px 0 0 #3b82f6 !important;
  }
  .sb-item.activo i{ color: #60a5fa; opacity: 1 }
  html[data-tema="dia"] .sb-item{ color: #64748b !important }
  html[data-tema="dia"] .sb-item:hover{ background: rgba(15,23,42,.055) !important; color: #0f172a !important }
  html[data-tema="dia"] .sb-item.activo{ background: rgba(37,99,235,.10) !important; color: #1d4ed8 !important }

  .sb-pie{
    padding: 11px 18px;
    border-top: 1px solid var(--sb-borde);
    font-size: 9.5px;
    line-height: 1.6;
    color: #4b5c73;
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
    flex-shrink: 0;
  }
  .sb-version{ font-weight: 800; color: #64748b; letter-spacing: .5px }
  .sb-build{ opacity: .75 }

  /* ==========================================================================
     2.3 EL CONTENIDO: se corre a la derecha del sidebar
     ========================================================================== */
  body{
    margin-left: var(--sb-w) !important;
    padding: 0 !important;
    min-height: 100vh;
  }

  /* ---- EL HEADER ---- */
  header{
    position: sticky !important;
    top: 0 !important;
    bottom: auto !important;
    left: auto !important;
    right: auto !important;
    display: flex !important;
    align-items: center;
    gap: 12px;
    height: var(--hd-h) !important;
    min-height: var(--hd-h) !important;
    padding: 0 22px !important;
    margin: 0 !important;
    max-width: none !important;
    background: rgba(10,17,30,.96) !important;
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--sb-borde) !important;
    border-top: none !important;
    z-index: 90;
  }
  html[data-tema="dia"] header{
    background: rgba(255,255,255,.96) !important;
    border-bottom: 1px solid rgba(15,23,42,.08) !important;
  }
  header .logo{ display: none !important }
  header #titulo{
    font-size: 13.5px !important;
    font-weight: 800 !important;
    color: #e2e8f0 !important;
    padding: 0 0 0 10px !important;
    border-left: 2px solid #3b82f6;
    margin: 0 !important;
    text-transform: none !important;
  }
  html[data-tema="dia"] header #titulo{ color: #0f172a !important }
  header .quien{ margin-left: auto; text-align: right; line-height: 1.25 }
  header .quien b{ font-size: 11.5px; font-weight: 800; color: #e2e8f0 }
  header .quien span{ font-size: 9px; font-weight: 700; color: #64748b; letter-spacing: .4px }
  header #btnTema,
  header #btnSalir{
    height: 30px !important;
    min-height: 30px !important;
    font-size: 10px !important;
    font-weight: 800 !important;
    padding: 0 13px !important;
    border-radius: 5px !important;
  }

  /* ---- EL BREADCRUMB ---- */
  #appBreadcrumb{
    display: flex !important;
    align-items: center;
    gap: 8px;
    height: var(--bc-h);
    padding: 0 22px;
    margin: 0 !important;
    max-width: none !important;
    background: #0c1526;
    border-bottom: 1px solid var(--sb-borde);
    font-size: 11px;
    font-weight: 600;
    position: sticky;
    top: var(--hd-h);
    z-index: 80;
  }
  html[data-tema="dia"] #appBreadcrumb{
    background: #fafbfd;
    border-bottom: 1px solid rgba(15,23,42,.07);
  }
  .bc-raiz{ font-weight: 800; color: #60a5fa; letter-spacing: .8px; font-size: 9.5px }
  .bc-sep{ color: #34445c; font-weight: 400 }
  .bc-mod{ color: #cbd5e1; font-weight: 700 }
  html[data-tema="dia"] .bc-mod{ color: #334155 }
  .bc-act{ color: #8b9bb4 }
  .bc-flex{ flex: 1 }
  .bc-fecha{
    font-family: ui-monospace, monospace; font-size: 9.5px;
    color: #475a73; font-weight: 700;
  }

  /* ---- EL MAIN ---- */
  main{
    max-width: none !important;
    margin: 0 !important;
    padding: 18px 22px calc(30px + var(--pie-h)) !important;
    background: transparent !important;
    overflow-x: hidden !important;
  }

  /* ---- EL PIE (fijo abajo) ---- */
  #appPie{
    display: flex !important;
    position: fixed !important;
    bottom: 0;
    left: var(--sb-w);
    right: 0;
    align-items: center;
    gap: 9px;
    height: var(--pie-h);
    padding: 0 22px;
    background: #0a111e;
    border-top: 1px solid var(--sb-borde);
    font-size: 9.5px;
    font-weight: 600;
    color: #475a73;
    z-index: 85;
  }
  html[data-tema="dia"] #appPie{
    background: #fafbfd;
    border-top: 1px solid rgba(15,23,42,.07);
    color: #94a3b8;
  }
  #appPie .p-nom{ font-weight: 800; color: #60a5fa; letter-spacing: 1px; font-size: 9px }
  #appPie .p-sep{ color: #2d3b50 }
  #appPie .p-flex{ flex: 1 }
  #appPie .p-txt{ font-family: ui-monospace, monospace; font-size: 9px }

  /* ==========================================================================
     2.4 LA NAV DE ABAJO SE OCULTA  (⚠️  solo la del body, no la del sidebar)
     ========================================================================== */
  body > nav{ display: none !important }

  /* ==========================================================================
     2.5 LA DENSIDAD EMPRESARIAL
     ========================================================================== */
  body{ font-size: 12.5px !important }

  .card{
    background: #0d1626 !important;
    border: 1px solid rgba(255,255,255,.075) !important;
    border-radius: 7px !important;
    padding: 16px 18px !important;
    margin-bottom: 12px !important;
    box-shadow: 0 1px 2px rgba(0,0,0,.35) !important;
  }
  html[data-tema="dia"] .card{
    background: #ffffff !important;
    border: 1px solid rgba(15,23,42,.09) !important;
    box-shadow: 0 1px 2px rgba(15,23,42,.05) !important;
  }

  .dash-tt{
    font-size: 12px !important;
    font-weight: 800 !important;
    letter-spacing: .7px !important;
    text-transform: uppercase !important;
    color: #94a3b8 !important;
  }
  html[data-tema="dia"] .dash-tt{ color: #475569 !important }
  .dash-chip{
    font-size: 9.5px !important; font-weight: 800 !important;
    padding: 3px 8px !important; border-radius: 3px !important;
  }
  .hub-tt{ font-size: 17px !important }
  .hub-sub{ font-size: 10.5px !important }
  .hub-grupo{ font-size: 8.5px !important; letter-spacing: 1.5px !important }
  .hub-card{ padding: 13px 15px !important }
  .hub-btn{
    min-height: 42px !important; border-radius: 5px !important;
    font-size: 11.5px !important; font-weight: 700 !important;
    padding: 8px 12px !important;
    background: rgba(255,255,255,.03) !important;
    border: 1px solid rgba(255,255,255,.08) !important;
  }
  .hub-btn.pri{
    background: rgba(37,99,235,.14) !important;
    border-color: rgba(37,99,235,.40) !important;
    color: #93c5fd !important;
  }

  .ini-grid{ gap: 10px !important }
  .ini-tile{
    border-radius: 7px !important;
    min-height: 92px !important;
    padding: 13px 14px !important;
    border: 1px solid rgba(255,255,255,.08) !important;
    background: rgba(255,255,255,.028) !important;
  }
  .ini-tile-ico{ font-size: 17px !important; opacity: .75 }
  .ini-tile-nom{ font-size: 9.5px !important; letter-spacing: 1.1px !important; color: #8b9bb4 !important }
  .ini-tile-kpi{
    font-size: 24px !important; font-weight: 800 !important;
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace !important;
    color: #e2e8f0 !important;
  }
  .ini-tile-sub{ font-size: 8.5px !important; color: #54687f !important }

  .acciones > button,
  .btn-primario, .btn-ok, .btn-fantasma, .btn-ancho{
    height: 33px !important;
    min-height: 33px !important;
    max-height: 33px !important;
    border-radius: 5px !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    padding: 0 15px !important;
  }
  .btn-grande{ height: 37px !important; min-height: 37px !important; max-height: 37px !important }

  input, select, textarea{
    height: 32px !important;
    border-radius: 5px !important;
    font-size: 12px !important;
    padding: 0 10px !important;
  }
  label{
    font-size: 9px !important;
    font-weight: 800 !important;
    letter-spacing: 1.1px !important;
    text-transform: uppercase !important;
    color: #64748b !important;
  }

  table{ font-size: 11.5px !important }
  thead th{
    font-size: 9px !important;
    font-weight: 800 !important;
    letter-spacing: 1.1px !important;
    text-transform: uppercase !important;
    color: #64748b !important;
    padding: 8px 11px !important;
    background: rgba(255,255,255,.035) !important;
    border-bottom: 1px solid rgba(255,255,255,.09) !important;
    text-align: left !important;
  }
  html[data-tema="dia"] thead th{ background: #f8fafc !important; color: #475569 !important }
  tbody td{
    padding: 8px 11px !important;
    border-bottom: 1px solid rgba(255,255,255,.045) !important;
  }
  tbody tr:nth-child(even){ background: rgba(255,255,255,.018) }
  tbody tr:hover{ background: rgba(59,130,246,.09) !important }
}


/* ==========================================================================
   3. PANTALLAS GRANDES
   ========================================================================== */
@media (min-width: 1300px){
  :root{ --sb-w: 246px }
  .sb-item{ height: 40px !important; font-size: 13px !important }
}


/* ##########################################################################
   ##########################################################################
   ##                                                                      ##
   ##   OVERRIDE DEFINITIVO  ·  v286                                        ##
   ##   Este bloque va AL FINAL y gana sobre TODO lo anterior.             ##
   ##                                                                      ##
   ##########################################################################
   ########################################################################## */

/* ==========================================================================
   1. EL SIDEBAR: SIEMPRE VISIBLE EN PC
   ========================================================================== */
@media (min-width: 900px){

  /* ---- el sidebar ---- */
  #sidebar{
    display: flex !important;
    visibility: visible !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    right: auto !important;
    width: 232px !important;
    max-width: 232px !important;
    min-width: 232px !important;
    flex-direction: column !important;
    background: #0a111e !important;
    border-right: 1px solid rgba(255,255,255,.07) !important;
    border-top: none !important;
    border-bottom: none !important;
    border-left: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    z-index: 300 !important;
    transform: none !important;
    opacity: 1 !important;
    zoom: 1 !important;
  }
  html[data-tema="dia"] #sidebar{
    background: #ffffff !important;
    border-right: 1px solid rgba(15,23,42,.09) !important;
  }

  /* ---- el nav DEL SIDEBAR: visible SI o SI ---- */
  #sidebar > nav,
  #sidebar .sb-nav,
  nav.sb-nav,
  #sbNav{
    display: block !important;
    visibility: visible !important;
    position: static !important;
    top: auto !important;
    bottom: auto !important;
    left: auto !important;
    right: auto !important;
    width: auto !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    flex: 1 1 auto !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 12px 10px !important;
    margin: 0 !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    z-index: auto !important;
    zoom: 1 !important;
    transform: none !important;
  }

  /* ---- cada item del sidebar ---- */
  #sbNav .sb-item{
    display: flex !important;
    visibility: visible !important;
    align-items: center !important;
    justify-content: flex-start !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    height: 38px !important;
    min-height: 38px !important;
    max-height: 38px !important;
    padding: 0 11px !important;
    margin: 0 0 2px 0 !important;
    border: none !important;
    border-radius: 5px !important;
    background: transparent !important;
    color: #8b9bb4 !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0 !important;
    text-align: left !important;
    line-height: 1 !important;
    cursor: pointer !important;
    box-shadow: none !important;
    transform: none !important;
    opacity: 1 !important;
    zoom: 1 !important;
    gap: 11px !important;
  }
  #sbNav .sb-item i{
    font-style: normal !important;
    font-size: 14px !important;
    width: 17px !important;
    text-align: center !important;
    opacity: .85 !important;
    flex: 0 0 17px !important;
  }
  #sbNav .sb-item span{
    display: inline !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    color: inherit !important;
    white-space: nowrap !important;
  }
  #sbNav .sb-item:hover{
    background: rgba(148,163,184,.10) !important;
    color: #e2e8f0 !important;
  }
  #sbNav .sb-item.activo{
    background: rgba(37,99,235,.18) !important;
    color: #ffffff !important;
    box-shadow: inset 2px 0 0 #3b82f6 !important;
  }
  html[data-tema="dia"] #sbNav .sb-item{ color: #64748b !important }
  html[data-tema="dia"] #sbNav .sb-item:hover{ background: rgba(15,23,42,.055) !important; color: #0f172a !important }
  html[data-tema="dia"] #sbNav .sb-item.activo{ background: rgba(37,99,235,.10) !important; color: #1d4ed8 !important }
  /* ---- la marca ---- */
  #sidebar .sb-marca{
    display: flex !important;
    align-items: center !important;
    gap: 11px !important;
    padding: 16px 18px 15px !important;
    border-bottom: 1px solid rgba(255,255,255,.07) !important;
    flex: 0 0 auto !important;
  }
  #sidebar .sb-mark{ width: 32px !important; height: 32px !important; display: block !important; flex: 0 0 32px !important }
  #sidebar .sb-marca-txt{ display: flex !important; align-items: baseline !important; gap: 5px !important }
  #sidebar .sb-marca-txt b{
    font-size: 16px !important; font-weight: 900 !important;
    letter-spacing: 2px !important; color: #f1f5f9 !important; line-height: 1 !important;
  }
  html[data-tema="dia"] #sidebar .sb-marca-txt b{ color: #0f172a !important }
  #sidebar .sb-marca-txt span{
    font-size: 8.5px !important; font-weight: 800 !important;
    letter-spacing: 1.4px !important; color: #7dd3fc !important;
  }

  /* ---- el pie del sidebar ---- */
  #sidebar .sb-pie{
    display: block !important;
    flex: 0 0 auto !important;
    padding: 11px 18px !important;
    border-top: 1px solid rgba(255,255,255,.07) !important;
    font-size: 9.5px !important;
    line-height: 1.6 !important;
    color: #4b5c73 !important;
    font-family: ui-monospace, Consolas, monospace !important;
  }

  /* ==========================================================================
     2. EL CUERPO: corrido a la derecha
     ========================================================================== */
  body{
    display: block !important;
    margin-left: 232px !important;
    padding: 0 !important;
  }

  /* ---- el header ---- */
  header{
    display: flex !important;
    position: sticky !important;
    top: 0 !important;
    bottom: auto !important;
    left: auto !important;
    right: auto !important;
    height: 52px !important;
    min-height: 52px !important;
    padding: 0 22px !important;
    margin: 0 !important;
    background: rgba(10,17,30,.97) !important;
    border-bottom: 1px solid rgba(255,255,255,.07) !important;
    border-top: none !important;
    z-index: 100 !important;
  }
  html[data-tema="dia"] header{
    background: rgba(255,255,255,.97) !important;
    border-bottom: 1px solid rgba(15,23,42,.08) !important;
  }
  header .logo{ display: none !important }
  header #titulo{
    font-size: 13.5px !important;
    font-weight: 800 !important;
    color: #e2e8f0 !important;
    padding: 0 0 0 10px !important;
    border-left: 2px solid #3b82f6 !important;
    margin: 0 !important;
    text-transform: none !important;
  }
  html[data-tema="dia"] header #titulo{ color: #0f172a !important }
  header .quien{ margin-left: auto !important; text-align: right !important; line-height: 1.25 !important }
  header #btnTema,
  header #btnSalir{
    height: 30px !important; min-height: 30px !important;
    font-size: 10px !important; font-weight: 800 !important;
    padding: 0 13px !important; border-radius: 5px !important;
  }

  /* ---- el breadcrumb ---- */
  #appBreadcrumb{
    display: flex !important;
    position: sticky !important;
    top: 52px !important;
    align-items: center !important;
    gap: 8px !important;
    height: 38px !important;
    padding: 0 22px !important;
    margin: 0 !important;
    background: #0c1526 !important;
    border-bottom: 1px solid rgba(255,255,255,.07) !important;
    font-size: 11px !important;
    z-index: 90 !important;
  }
  html[data-tema="dia"] #appBreadcrumb{
    background: #fafbfd !important;
    border-bottom: 1px solid rgba(15,23,42,.07) !important;
  }
  .bc-raiz{ font-weight: 800 !important; color: #60a5fa !important; letter-spacing: .8px !important; font-size: 9.5px !important }
  .bc-sep{ color: #34445c !important }
  .bc-mod{ color: #cbd5e1 !important; font-weight: 700 !important }
  html[data-tema="dia"] .bc-mod{ color: #334155 !important }
  .bc-act{ color: #8b9bb4 !important }
  .bc-flex{ flex: 1 !important }
  .bc-fecha{ font-family: ui-monospace, monospace !important; font-size: 9.5px !important; color: #475a73 !important; font-weight: 700 !important }

  /* ---- el main ---- */
  main{
    display: block !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 18px 22px 48px !important;
    background: transparent !important;
    overflow-x: hidden !important;
  }

  /* ---- el pie ---- */
  #appPie{
    display: flex !important;
    position: fixed !important;
    bottom: 0 !important;
    left: 232px !important;
    right: 0 !important;
    align-items: center !important;
    gap: 9px !important;
    height: 30px !important;
    padding: 0 22px !important;
    background: #0a111e !important;
    border-top: 1px solid rgba(255,255,255,.07) !important;
    font-size: 9.5px !important;
    color: #475a73 !important;
    z-index: 95 !important;
  }
  html[data-tema="dia"] #appPie{
    background: #fafbfd !important;
    border-top: 1px solid rgba(15,23,42,.07) !important;
    color: #94a3b8 !important;
  }
  #appPie .p-nom{ font-weight: 800 !important; color: #60a5fa !important; letter-spacing: 1px !important; font-size: 9px !important }
  #appPie .p-sep{ color: #2d3b50 !important }
  #appPie .p-flex{ flex: 1 !important }
  #appPie .p-txt{ font-family: ui-monospace, monospace !important; font-size: 9px !important }

  /* ---- la barra de abajo del body: OCULTA en PC ---- */
  body > nav{ display: none !important }

  /* ---- la densidad ---- */
  body{ font-size: 12.5px !important }
  .card{
    background: #0d1626 !important;
    border: 1px solid rgba(255,255,255,.075) !important;
    border-radius: 7px !important;
    padding: 16px 18px !important;
    margin-bottom: 12px !important;
    box-shadow: 0 1px 2px rgba(0,0,0,.35) !important;
  }
  html[data-tema="dia"] .card{
    background: #ffffff !important;
    border: 1px solid rgba(15,23,42,.09) !important;
    box-shadow: 0 1px 2px rgba(15,23,42,.05) !important;
  }
  .acciones > button,
  .btn-primario, .btn-ok, .btn-fantasma, .btn-ancho{
    height: 33px !important;
    min-height: 33px !important;
    max-height: 33px !important;
    border-radius: 5px !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    padding: 0 15px !important;
  }
  .btn-grande{ height: 37px !important; min-height: 37px !important; max-height: 37px !important }
  input, select, textarea{
    height: 32px !important; border-radius: 5px !important;
    font-size: 12px !important; padding: 0 10px !important;
  }
  label{
    font-size: 9px !important; font-weight: 800 !important;
    letter-spacing: 1.1px !important; text-transform: uppercase !important;
    color: #64748b !important;
  }
  table{ font-size: 11.5px !important }
  thead th{
    font-size: 9px !important; font-weight: 800 !important;
    letter-spacing: 1.1px !important; text-transform: uppercase !important;
    color: #64748b !important; padding: 8px 11px !important;
    background: rgba(255,255,255,.035) !important;
    border-bottom: 1px solid rgba(255,255,255,.09) !important;
    text-align: left !important;
  }
  html[data-tema="dia"] thead th{ background: #f8fafc !important; color: #475569 !important }
  tbody td{ padding: 8px 11px !important; border-bottom: 1px solid rgba(255,255,255,.045) !important }
  tbody tr:nth-child(even){ background: rgba(255,255,255,.018) }
  tbody tr:hover{ background: rgba(59,130,246,.09) !important }

  /* ---- el login: sin sidebar ---- */
  body:has(#login:not([style*="display: none"])){
    margin-left: 0 !important;
  }
  body:has(#login:not([style*="display: none"])) #sidebar,
  body:has(#login:not([style*="display: none"])) #appBreadcrumb,
  body:has(#login:not([style*="display: none"])) #appPie,
  body:has(#login:not([style*="display: none"])) header{
    display: none !important;
  }
}

@media (min-width: 1300px){
  body{ margin-left: 246px !important }
  #sidebar{ width: 246px !important; max-width: 246px !important; min-width: 246px !important }
  #appPie{ left: 246px !important }
  #sbNav .sb-item{ height: 40px !important; font-size: 13px !important }
}




/* ##########################################################################
   ##                                                                      ##
   ##   v289  ·  TARJETAS LEGIBLES EN DÍA Y NOCHE                          ##
   ##   Este bloque va al final y gana sobre todo.                         ##
   ##                                                                      ##
   ########################################################################## */

/* ==========================================================================
   1. LAS 6 TARJETAS DEL INICIO  ·  CONTRASTE GARANTIZADO
   ========================================================================== */
.ini-tile{
  border-radius: 8px !important;
  min-height: 104px !important;
  padding: 14px 15px !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 3px !important;
  border: 1px solid !important;
  border-left-width: 4px !important;
  cursor: pointer !important;
  text-align: left !important;
}

/* ---- el icono ---- */
.ini-tile-ico{
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  height: 22px !important;
  margin-bottom: 1px !important;
  font-size: 0 !important;
  line-height: 0 !important;
}
.ini-tile-ico svg.it{
  width: 21px !important;
  height: 21px !important;
  display: block !important;
  stroke-width: 1.8 !important;
}

/* ---- el nombre ---- */
.ini-tile-nom{
  font-size: 10px !important;
  font-weight: 900 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  margin: 0 !important;
}

/* ---- el numero: EL PROBLEMA PRINCIPAL ---- */
.ini-tile-kpi{
  font-size: 26px !important;
  font-weight: 900 !important;
  line-height: 1 !important;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace !important;
  margin: auto 0 2px 0 !important;
  letter-spacing: -.5px !important;
}

/* ---- el subtexto ---- */
.ini-tile-sub{
  font-size: 9px !important;
  font-weight: 800 !important;
  letter-spacing: .7px !important;
  text-transform: uppercase !important;
}

/* ==========================================================================
   2. TEMA DÍA  (fondo claro)  ·  COLORES OSCUROS
   ========================================================================== */
html[data-tema="dia"] .ini-tile.t-ingreso{
  background: #e8f7ee !important;
  border-color: #a7e0be !important;
  border-left-color: #16a34a !important;
}
html[data-tema="dia"] .ini-tile.t-ingreso .ini-tile-ico{ color: #16a34a !important }
html[data-tema="dia"] .ini-tile.t-ingreso .ini-tile-nom{ color: #166534 !important }
html[data-tema="dia"] .ini-tile.t-ingreso .ini-tile-kpi{ color: #14532d !important }
html[data-tema="dia"] .ini-tile.t-ingreso .ini-tile-sub{ color: #4d7c5f !important }

html[data-tema="dia"] .ini-tile.t-guardado{
  background: #e8f0fe !important;
  border-color: #a9c5f5 !important;
  border-left-color: #2563eb !important;
}
html[data-tema="dia"] .ini-tile.t-guardado .ini-tile-ico{ color: #2563eb !important }
html[data-tema="dia"] .ini-tile.t-guardado .ini-tile-nom{ color: #1e40af !important }
html[data-tema="dia"] .ini-tile.t-guardado .ini-tile-kpi{ color: #1e3a8a !important }
html[data-tema="dia"] .ini-tile.t-guardado .ini-tile-sub{ color: #4a689f !important }

html[data-tema="dia"] .ini-tile.t-despacho{
  background: #fdeee3 !important;
  border-color: #f6c9a5 !important;
  border-left-color: #ea580c !important;
}
html[data-tema="dia"] .ini-tile.t-despacho .ini-tile-ico{ color: #ea580c !important }
html[data-tema="dia"] .ini-tile.t-despacho .ini-tile-nom{ color: #9a3412 !important }
html[data-tema="dia"] .ini-tile.t-despacho .ini-tile-kpi{ color: #7c2d12 !important }
html[data-tema="dia"] .ini-tile.t-despacho .ini-tile-sub{ color: #a86a45 !important }

html[data-tema="dia"] .ini-tile.t-inventario{
  background: #f3e8fd !important;
  border-color: #d8b4fe !important;
  border-left-color: #9333ea !important;
}
html[data-tema="dia"] .ini-tile.t-inventario .ini-tile-ico{ color: #9333ea !important }
html[data-tema="dia"] .ini-tile.t-inventario .ini-tile-nom{ color: #6b21a8 !important }
html[data-tema="dia"] .ini-tile.t-inventario .ini-tile-kpi{ color: #581c87 !important }
html[data-tema="dia"] .ini-tile.t-inventario .ini-tile-sub{ color: #7e5c96 !important }

html[data-tema="dia"] .ini-tile.t-consultar{
  background: #e0f5f9 !important;
  border-color: #9ad9e6 !important;
  border-left-color: #0891b2 !important;
}
html[data-tema="dia"] .ini-tile.t-consultar .ini-tile-ico{ color: #0891b2 !important }
html[data-tema="dia"] .ini-tile.t-consultar .ini-tile-nom{ color: #155e75 !important }
html[data-tema="dia"] .ini-tile.t-consultar .ini-tile-kpi{ color: #164e63 !important }
html[data-tema="dia"] .ini-tile.t-consultar .ini-tile-sub{ color: #457b8a !important }

html[data-tema="dia"] .ini-tile.t-dashboard{
  background: #fdf6dd !important;
  border-color: #ecd48f !important;
  border-left-color: #ca8a04 !important;
}
html[data-tema="dia"] .ini-tile.t-dashboard .ini-tile-ico{ color: #ca8a04 !important }
html[data-tema="dia"] .ini-tile.t-dashboard .ini-tile-nom{ color: #854d0e !important }
html[data-tema="dia"] .ini-tile.t-dashboard .ini-tile-kpi{ color: #713f12 !important }
html[data-tema="dia"] .ini-tile.t-dashboard .ini-tile-sub{ color: #8a744093 !important }

/* ==========================================================================
   3. TEMA NOCHE (por defecto)  ·  COLORES CLAROS
   ========================================================================== */
html:not([data-tema="dia"]) .ini-tile.t-ingreso{
  background: rgba(22,163,74,.11) !important;
  border-color: rgba(22,163,74,.30) !important;
  border-left-color: #22c55e !important;
}
html:not([data-tema="dia"]) .ini-tile.t-ingreso .ini-tile-ico{ color: #4ade80 !important }
html:not([data-tema="dia"]) .ini-tile.t-ingreso .ini-tile-nom{ color: #86efac !important }
html:not([data-tema="dia"]) .ini-tile.t-ingreso .ini-tile-kpi{ color: #4ade80 !important }
html:not([data-tema="dia"]) .ini-tile.t-ingreso .ini-tile-sub{ color: #5b8f74 !important }

html:not([data-tema="dia"]) .ini-tile.t-guardado{
  background: rgba(37,99,235,.11) !important;
  border-color: rgba(37,99,235,.30) !important;
  border-left-color: #3b82f6 !important;
}
html:not([data-tema="dia"]) .ini-tile.t-guardado .ini-tile-ico{ color: #60a5fa !important }
html:not([data-tema="dia"]) .ini-tile.t-guardado .ini-tile-nom{ color: #93c5fd !important }
html:not([data-tema="dia"]) .ini-tile.t-guardado .ini-tile-kpi{ color: #60a5fa !important }
html:not([data-tema="dia"]) .ini-tile.t-guardado .ini-tile-sub{ color: #5b7ba8 !important }

html:not([data-tema="dia"]) .ini-tile.t-despacho{
  background: rgba(234,88,12,.11) !important;
  border-color: rgba(234,88,12,.30) !important;
  border-left-color: #f97316 !important;
}
html:not([data-tema="dia"]) .ini-tile.t-despacho .ini-tile-ico{ color: #fb923c !important }
html:not([data-tema="dia"]) .ini-tile.t-despacho .ini-tile-nom{ color: #fdba74 !important }
html:not([data-tema="dia"]) .ini-tile.t-despacho .ini-tile-kpi{ color: #fb923c !important }
html:not([data-tema="dia"]) .ini-tile.t-despacho .ini-tile-sub{ color: #a87a5e !important }

html:not([data-tema="dia"]) .ini-tile.t-inventario{
  background: rgba(147,51,234,.11) !important;
  border-color: rgba(147,51,234,.30) !important;
  border-left-color: #a855f7 !important;
}
html:not([data-tema="dia"]) .ini-tile.t-inventario .ini-tile-ico{ color: #c084fc !important }
html:not([data-tema="dia"]) .ini-tile.t-inventario .ini-tile-nom{ color: #d8b4fe !important }
html:not([data-tema="dia"]) .ini-tile.t-inventario .ini-tile-kpi{ color: #c084fc !important }
html:not([data-tema="dia"]) .ini-tile.t-inventario .ini-tile-sub{ color: #8f7aa8 !important }

html:not([data-tema="dia"]) .ini-tile.t-consultar{
  background: rgba(8,145,178,.11) !important;
  border-color: rgba(8,145,178,.30) !important;
  border-left-color: #06b6d4 !important;
}
html:not([data-tema="dia"]) .ini-tile.t-consultar .ini-tile-ico{ color: #22d3ee !important }
html:not([data-tema="dia"]) .ini-tile.t-consultar .ini-tile-nom{ color: #67e8f9 !important }
html:not([data-tema="dia"]) .ini-tile.t-consultar .ini-tile-kpi{ color: #22d3ee !important }
html:not([data-tema="dia"]) .ini-tile.t-consultar .ini-tile-sub{ color: #5e8a94 !important }

html:not([data-tema="dia"]) .ini-tile.t-dashboard{
  background: rgba(202,138,4,.11) !important;
  border-color: rgba(202,138,4,.30) !important;
  border-left-color: #eab308 !important;
}
html:not([data-tema="dia"]) .ini-tile.t-dashboard .ini-tile-ico{ color: #facc15 !important }
html:not([data-tema="dia"]) .ini-tile.t-dashboard .ini-tile-nom{ color: #fde047 !important }
html:not([data-tema="dia"]) .ini-tile.t-dashboard .ini-tile-kpi{ color: #facc15 !important }
html:not([data-tema="dia"]) .ini-tile.t-dashboard .ini-tile-sub{ color: #9a8a4a !important }

/* ==========================================================================
   4. LOS ACCESOS RÁPIDOS  ·  LEGIBLES
   ========================================================================== */
.ini-rapidos{
  background: #ffffff !important;
  border: 1px solid #e2e8f0 !important;
}
html:not([data-tema="dia"]) .ini-rapidos{
  background: #0d1626 !important;
  border: 1px solid rgba(255,255,255,.075) !important;
}
.ini-rap-tt{
  font-size: 9px !important;
  font-weight: 900 !important;
  letter-spacing: 1.4px !important;
  color: #64748b !important;
  text-transform: uppercase !important;
  margin-bottom: 10px !important;
}
.ini-rap{
  height: 40px !important;
  border-radius: 6px !important;
  font-size: 11.5px !important;
  font-weight: 800 !important;
  letter-spacing: .3px !important;
  cursor: pointer !important;
  background: #f1f5f9 !important;
  border: 1px solid #cbd5e1 !important;
  color: #1e293b !important;
}
.ini-rap:hover{ background: #e2e8f0 !important; border-color: #94a3b8 !important }
html:not([data-tema="dia"]) .ini-rap{
  background: rgba(255,255,255,.055) !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  color: #e2e8f0 !important;
}
html:not([data-tema="dia"]) .ini-rap:hover{ background: rgba(59,130,246,.18) !important }

/* ==========================================================================
   5. LA ALERTA DE TAREAS  ·  LEGIBLE
   ========================================================================== */
.ini-alerta{
  background: #fefce8 !important;
  border: 1px solid #fde047 !important;
  color: #854d0e !important;
  font-weight: 800 !important;
}
html:not([data-tema="dia"]) .ini-alerta{
  background: rgba(234,179,8,.12) !important;
  border: 1px solid rgba(234,179,8,.36) !important;
  color: #fcd34d !important;
}


/* ==========================================================================
   PRE-PICKING
   ========================================================================== */
.pp-nota{margin-top:9px;padding:12px;border-radius:8px;font-size:11.5px;line-height:1.65;
  background:rgba(59,130,246,.09);border:1px solid rgba(59,130,246,.26);color:#cbd5e1}
.pp-nota b{color:#fff}
.pp-pal{color:#86efac !important}
.pp-sal{color:#93c5fd !important}
.pp-aviso-fisico{margin-top:10px;padding:11px;border-radius:8px;font-size:11.5px;line-height:1.6;
  background:rgba(234,179,8,.10);border:1px solid rgba(234,179,8,.30);color:#fcd34d}

/* ---- los planes ---- */
.pp-plan{position:relative;padding:13px;margin-bottom:9px;border-radius:10px;cursor:pointer;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.10)}
.pp-plan:active{background:rgba(59,130,246,.12)}
.pp-plan.ok{border-color:rgba(34,197,94,.34);background:rgba(34,197,94,.06)}
.pp-plan.curso{border-color:rgba(59,130,246,.38);background:rgba(59,130,246,.07)}
.pp-plan-top{display:flex;justify-content:space-between;align-items:center;gap:9px}
.pp-plan-trans{font-family:ui-monospace,monospace;font-size:14px;font-weight:900;color:#93c5fd}
.pp-plan-est{font-size:9px;font-weight:900;padding:3px 8px;border-radius:3px;
  background:rgba(255,255,255,.10);color:#cbd5e1;letter-spacing:.4px}
.pp-plan-datos{display:flex;flex-wrap:wrap;gap:10px;margin-top:7px;font-size:10.5px;color:#94a3b8}
.pp-plan-datos b{color:#64748b;font-weight:800}
.pp-plan-nums{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:9px}
.pp-plan-nums > div{padding:7px 4px;border-radius:6px;background:rgba(0,0,0,.20);text-align:center}
.pp-plan-nums b{display:block;font-size:15px;font-weight:900;font-family:ui-monospace,monospace;color:#e2e8f0}
.pp-plan-nums span{display:block;font-size:8.5px;font-weight:800;color:#64748b;margin-top:1px}
.pp-plan-nums .pal b{color:#86efac}
.pp-plan-nums .sal b{color:#93c5fd}
.pp-plan-aviso{margin-top:8px;font-size:9.5px;font-weight:800;color:#fcd34d}
.pp-plan-flecha{position:absolute;right:12px;bottom:50%;transform:translateY(50%);
  font-size:20px;color:#475569;font-weight:900}

/* ---- el detalle ---- */
.pp-hero{border:1px solid rgba(59,130,246,.30) !important}
.pp-hero-pick{border:1px solid rgba(34,197,94,.30) !important;background:rgba(34,197,94,.05) !important}
.pp-hero-marc{border:1px solid rgba(168,85,247,.30) !important;background:rgba(168,85,247,.05) !important}
.pp-fila{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding:6px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:11.5px}
.pp-fila:last-child{border-bottom:none}
.pp-fila span{color:#94a3b8;font-weight:800}
.pp-fila b{color:#e2e8f0;font-family:ui-monospace,monospace;font-weight:900}
.pp-fila b.alerta{color:#fcd34d}
.pp-av{margin-bottom:10px}
.pp-av-cab{display:flex;justify-content:space-between;font-size:10.5px;font-weight:800;
  color:#94a3b8;margin-bottom:5px}
.pp-av-cab b{font-family:ui-monospace,monospace;font-size:12px;color:#e2e8f0}
.pp-av-barra{height:9px;border-radius:5px;background:rgba(255,255,255,.08);overflow:hidden}
.pp-av-in{height:100%;border-radius:5px;transition:width .4s}
.pp-av-in.pal{background:linear-gradient(90deg,#16a34a,#22c55e)}
.pp-av-in.sal{background:linear-gradient(90deg,#2563eb,#60a5fa)}

/* ---- las lineas del plan ---- */
.pp-lin{padding:12px;margin-bottom:9px;border-radius:10px;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09)}
.pp-lin-top{display:flex;justify-content:space-between;align-items:baseline;gap:9px}
.pp-lin-sku{font-family:ui-monospace,monospace;font-size:14px;font-weight:900;color:#93c5fd}
.pp-lin-zona{font-size:9.5px;font-weight:800;color:#64748b;letter-spacing:.3px}
.pp-lin-desc{font-size:11px;color:#e2e8f0;margin-top:4px}
.pp-lin-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:9px}
.pp-lin-nums > div{padding:6px 3px;border-radius:6px;background:rgba(0,0,0,.20);text-align:center}
.pp-lin-nums b{display:block;font-size:13px;font-weight:900;font-family:ui-monospace,monospace;color:#e2e8f0}
.pp-lin-nums span{display:block;font-size:8px;font-weight:800;color:#64748b;margin-top:1px}
.pp-lin-nums .pal b{color:#86efac}
.pp-lin-nums .sal b{color:#93c5fd}
.pp-lin-nums .tot b{color:#fcd34d;font-size:11px}
.pp-lin-des{margin-top:8px;padding:7px 9px;border-radius:6px;font-size:10.5px;
  background:rgba(255,255,255,.04);color:#cbd5e1;font-family:ui-monospace,monospace}
/* ---- el picker ---- */
.pp-pick{padding:13px;margin-bottom:9px;border-radius:10px;
  background:rgba(34,197,94,.07);border:1px solid rgba(34,197,94,.30)}
.pp-pick-top{display:flex;justify-content:space-between;align-items:center;gap:9px}
.pp-pick-zona{font-size:10px;font-weight:900;padding:3px 9px;border-radius:4px;
  background:rgba(59,130,246,.20);color:#93c5fd;letter-spacing:.5px}
.pp-pick-cant{font-family:ui-monospace,monospace;font-size:19px;font-weight:900;color:#86efac}
.pp-pick-sku{font-family:ui-monospace,monospace;font-size:14px;font-weight:900;color:#93c5fd;margin-top:7px}
.pp-pick-desc{font-size:11px;color:#e2e8f0;margin-top:3px}
.pp-pick-lpn{margin-top:7px;font-size:10.5px;color:#94a3b8}
.pp-pick-bot{margin-top:11px}
.pp-btn{width:100%;height:44px;border-radius:8px;font-size:12px;font-weight:900;
  letter-spacing:.5px;cursor:pointer;border:1px solid transparent}
.pp-btn.ok{background:linear-gradient(180deg,rgba(34,197,94,.30),rgba(34,197,94,.16));
  border-color:rgba(34,197,94,.55);color:#86efac}
.pp-btn.pri{background:rgba(168,85,247,.18);border-color:rgba(168,85,247,.48);color:#d8b4fe}
.pp-btn:active{filter:brightness(1.3)}

/* ---- el marcador ---- */
.pp-marc{padding:13px;margin-bottom:9px;border-radius:10px;
  background:rgba(168,85,247,.07);border:1px solid rgba(168,85,247,.30)}
.pp-marc-top{display:flex;justify-content:space-between;align-items:center;gap:9px}
.pp-marc-zona{font-size:10px;font-weight:900;padding:3px 9px;border-radius:4px;
  background:rgba(59,130,246,.20);color:#93c5fd}
.pp-marc-sku{font-family:ui-monospace,monospace;font-size:14px;font-weight:900;color:#d8b4fe;margin-top:7px}
.pp-marc-desc{font-size:11px;color:#e2e8f0;margin-top:3px}
.pp-marc-bot{margin-top:11px}


/* ==========================================================================
   EL PROGRESO DE LA OLA
   ========================================================================== */
.pp-prog-big{text-align:center;padding:8px 0 12px}
.pp-prog-pct{font-size:44px;font-weight:900;font-family:ui-monospace,monospace;color:#86efac;line-height:1}
.pp-prog-sub{font-size:11px;font-weight:800;color:#94a3b8;margin-top:5px}
.pp-prog-barra{height:12px;border-radius:6px;background:rgba(255,255,255,.08);margin-top:12px;overflow:hidden}
.pp-prog-in{height:100%;border-radius:6px;background:linear-gradient(90deg,#16a34a,#22c55e);transition:width .5s}

.pp-prog-3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.pp-p3{padding:11px 6px;border-radius:8px;text-align:center;border:1px solid}
.pp-p3 b{display:block;font-size:20px;font-weight:900;font-family:ui-monospace,monospace}
.pp-p3 span{display:block;font-size:8.5px;font-weight:900;letter-spacing:.8px;margin-top:2px}
.pp-p3.ok{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.32)}
.pp-p3.ok b{color:#86efac}
.pp-p3.ok span{color:#4d7c5f}
.pp-p3.pen{background:rgba(148,163,184,.10);border-color:rgba(148,163,184,.26)}
.pp-p3.pen b{color:#cbd5e1}
.pp-p3.pen span{color:#64748b}
.pp-p3.fal{background:rgba(234,179,8,.12);border-color:rgba(234,179,8,.32)}
.pp-p3.fal b{color:#fcd34d}
.pp-p3.fal span{color:#8a7440}

.pp-falt-lista{margin-top:12px;padding:10px;border-radius:8px;
  background:rgba(234,179,8,.07);border:1px solid rgba(234,179,8,.26)}
.pp-falt{display:flex;justify-content:space-between;gap:9px;padding:6px 4px;
  font-size:10.5px;border-bottom:1px solid rgba(255,255,255,.05)}
.pp-falt:last-child{border-bottom:none}
.pp-falt b{font-family:ui-monospace,monospace;color:#fcd34d}
.pp-falt span{color:#94a3b8;font-size:9.5px}

/* ---- los estados de las tareas ---- */
.pp-pick-est{font-size:8.5px;font-weight:900;padding:3px 8px;border-radius:3px;letter-spacing:.4px}
.pp-pick-est.pendiente{background:rgba(148,163,184,.18);color:#cbd5e1}
.pp-pick-est.hecho{background:rgba(34,197,94,.22);color:#86efac}
.pp-pick-est.faltante{background:rgba(234,179,8,.22);color:#fcd34d}
.pp-pick.hecho{background:rgba(34,197,94,.10) !important;border-color:rgba(34,197,94,.38) !important}
.pp-pick.falta{background:rgba(234,179,8,.09) !important;border-color:rgba(234,179,8,.36) !important}
.pp-marc.hecho{background:rgba(34,197,94,.10) !important;border-color:rgba(34,197,94,.38) !important}
.pp-marc.falta{background:rgba(234,179,8,.09) !important;border-color:rgba(234,179,8,.36) !important}
.pp-pick-nota{margin-top:6px;font-size:10px;color:#fcd34d;font-weight:700}

/* ---- los botones nuevos ---- */
.pp-btn.fal{background:rgba(234,179,8,.16);border-color:rgba(234,179,8,.46);color:#fcd34d;margin-top:7px}
.pp-btn.undo{background:rgba(148,163,184,.14);border-color:rgba(148,163,184,.40);color:#cbd5e1}


/* ==========================================================================
   EL BUSCADOR DE OLAS
   ========================================================================== */
.pp-busca{position:relative;display:flex;align-items:center;margin-top:14px}
.pp-busca-ico{position:absolute;left:12px;width:18px;height:18px;color:#64748b;pointer-events:none}
.pp-busca input{width:100%;height:46px;padding:0 40px 0 40px;border-radius:10px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  color:#e2e8f0;font-size:14px;font-weight:600;outline:none}
.pp-busca input:focus{border-color:rgba(59,130,246,.60);background:rgba(59,130,246,.08)}
.pp-busca input::placeholder{color:#64748b;font-weight:500}
.pp-busca-x{position:absolute;right:8px;width:30px;height:30px;border-radius:6px;
  background:rgba(255,255,255,.08);border:none;color:#cbd5e1;font-size:18px;
  font-weight:900;cursor:pointer;line-height:1}
.pp-busca-hint{margin-top:7px;font-size:10.5px;color:#94a3b8;font-weight:600}

/* ==========================================================================
   EL DIAGNOSTICO
   ========================================================================== */
.pp-diag{border-radius:8px;background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.08);padding:10px 12px}
.pp-diag summary{cursor:pointer;font-size:11px;font-weight:800;color:#94a3b8;
  letter-spacing:.3px;outline:none}
.pp-diag summary::-webkit-details-marker{display:none}
.pp-diag summary::before{content:"\25B8 ";color:#64748b}
.pp-diag[open] summary::before{content:"\25BE "}
.pp-diag-t{width:100%;border-collapse:collapse;font-size:10.5px}
.pp-diag-t td{padding:4px 6px;border-bottom:1px solid rgba(255,255,255,.05);
  color:#94a3b8;vertical-align:top}
.pp-diag-t td:first-child{width:52%;font-weight:700}
.pp-diag-t td:last-child{font-family:ui-monospace,monospace;color:#e2e8f0;text-align:right}
.pp-diag-t tr:last-child td{border-bottom:none}


/* ==========================================================================
   EL HUB DEL PISO  ·  5 FLUJOS GRANDES
   ========================================================================== */
.piso-cab{text-align:center;padding:18px 14px}
.piso-tt{font-size:21px;font-weight:900;letter-spacing:-.4px;color:#e2e8f0}
.piso-sub{font-size:11.5px;color:#64748b;font-weight:700;margin-top:5px}

.flujos{display:flex;flex-direction:column;gap:9px;margin-top:12px}
.flujo{display:flex;align-items:center;gap:13px;width:100%;padding:16px 15px;
  border-radius:13px;text-align:left;cursor:pointer;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.11);
  transition:transform .12s, background .12s}
.flujo:active{transform:scale(.985);background:rgba(59,130,246,.14)}
.flujo-pri{background:linear-gradient(135deg,rgba(59,130,246,.18),rgba(59,130,246,.07));
  border-color:rgba(59,130,246,.52)}
.flujo-n{flex:0 0 34px;height:34px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:14px;font-weight:900;font-family:ui-monospace,monospace;
  background:rgba(255,255,255,.09);color:#94a3b8}
.flujo-pri .flujo-n{background:rgba(59,130,246,.30);color:#bfdbfe}
.flujo-ico{flex:0 0 30px;font-size:23px;line-height:1;text-align:center}
.flujo-txt{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.flujo-txt b{font-size:15px;font-weight:900;letter-spacing:.5px;color:#e2e8f0}
.flujo-txt span{font-size:11px;font-weight:700;color:#64748b}
.flujo-flecha{font-size:24px;font-weight:900;color:#475569;line-height:1}

/* ---- las herramientas ---- */
.herr-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:11px}
.herr{display:flex;flex-direction:column;gap:2px;padding:13px 11px;border-radius:10px;
  text-align:left;cursor:pointer;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.09)}
.herr:active{background:rgba(59,130,246,.13)}
.herr b{font-size:12.5px;font-weight:900;color:#e2e8f0}
.herr span{font-size:9.5px;font-weight:700;color:#64748b}

@media (min-width:700px){
  .flujos{display:grid;grid-template-columns:1fr 1fr;gap:11px}
  .flujo:last-child{grid-column:span 2}
  .herr-grid{grid-template-columns:repeat(3,1fr)}
}


/* ==========================================================================
   LA BARRA DE CONTAR  (Racks · Toldo · Conteo · Avance)
   ========================================================================== */
.contar-nav{display:flex;gap:5px;margin-bottom:11px;padding:5px;
  border-radius:11px;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.09);overflow-x:auto}
.contar-tab{flex:1;min-width:70px;padding:10px 8px;border-radius:8px;cursor:pointer;
  font-size:11px;font-weight:900;letter-spacing:.3px;white-space:nowrap;
  background:transparent;border:none;color:#64748b}
.contar-tab.activa{background:rgba(59,130,246,.22);color:#93c5fd}
.contar-tab:active{background:rgba(59,130,246,.15)}


/* el icono SVG del flujo */
.flujo-ico{flex:0 0 30px;display:flex;align-items:center;justify-content:center;color:#94a3b8}
.flujo-svg{width:25px;height:25px}
.flujo-pri .flujo-ico{color:#93c5fd}
/* los botones de camara ahora son SVG */
.lev-cam svg,.cam-mini svg{width:21px;height:21px}

.nav-svg{width:22px;height:22px;display:block}


/* ==========================================================================
   EL TITULO DEL HEADER: que no se parta en varias lineas
   ========================================================================== */
#titulo{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw}
@media (max-width:430px){
  #titulo{font-size:15px !important;max-width:38vw}
}
/* los botones de accion en 2 columnas: que el texto entre */
.acciones.dos{gap:8px}
.acciones.dos > button{font-size:11.5px;padding:11px 8px;letter-spacing:.2px}


/* ==========================================================================
   LOS BOTONES: QUE EL TEXTO NUNCA SE CORTE
   ========================================================================== */
/* ---- los botones de los candados y fiscal son chicos ---- */
.btn-mini, .cfg-btn, .cand-btn, .fis-btn {
  white-space: normal !important;
  word-break: break-word;
  line-height: 1.25;
  height: auto !important;
  min-height: 34px;
  padding: 8px 10px !important;
  font-size: 11px !important;
}
/* ---- regla general: ningun boton corta el texto ---- */
button {
  white-space: normal;
  overflow-wrap: break-word;
}
/* ---- excepcion: los de icono solo ---- */
.btn-icono, .nav-btn, .sb-item, .contar-tab, .flujo, .herr, .ini-tile {
  white-space: nowrap;
}
/* ---- los botones de accion en fila ---- */
.acciones.dos > button, .acciones.tres > button {
  white-space: normal;
  line-height: 1.2;
}


/* ==========================================================================
   FISCAL: los botones que no cortan el texto
   ========================================================================== */
#v-fiscal button,
#v-fiscal .btn,
#v-fiscal .btn-mini {
  white-space: normal !important;
  word-break: break-word !important;
  height: auto !important;
  min-height: 40px;
  padding: 10px 12px !important;
  font-size: 11px !important;
  line-height: 1.3 !important;
  letter-spacing: .2px !important;
}
#v-fiscal .acciones.dos{gap:9px}


/* ==========================================================================
   EL HEADER MAS COMPACTO
   El titulo se cortaba a "Co..." en el celular.
   Achico el bloque del usuario y el boton DIA.
   ========================================================================== */
#titulo{
  font-size:16px !important;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  min-width:0;
  flex:1 1 auto;
}
.quien{max-width:92px;flex:0 1 auto;overflow:hidden}
#btnTema{font-size:10.5px !important;padding:7px 9px !important}
#btnSalir{font-size:10.5px !important;padding:7px 10px !important}
header{gap:6px !important;padding-left:8px !important;padding-right:8px !important}

@media (max-width:430px){
  #titulo{font-size:15px !important}
  .quien{max-width:76px}}

/* ==========================================================================
   CONTAR: la instruccion, el boton VACIO chico, el SKU esperado
   ========================================================================== */
.lev-instr{
  margin-top:9px;padding:9px 11px;border-radius:8px;
  font-size:11px;font-weight:700;line-height:1.45;
  background:rgba(59,130,246,.10);border:1px solid rgba(59,130,246,.26);
  color:#bfdbfe;
}
.lev-esperado{
  margin-top:9px;padding:11px;border-radius:9px;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.10);
}
.lev-esperado .le-top{display:flex;justify-content:space-between;gap:8px;
  font-size:9px;font-weight:900;letter-spacing:.7px;color:#64748b}
.lev-esperado .le-sku{font-family:ui-monospace,monospace;font-size:17px;font-weight:900;
  color:#93c5fd;margin-top:3px}
.lev-esperado .le-desc{font-size:11px;color:#e2e8f0;margin-top:2px}
.lev-esperado .le-nums{display:flex;gap:11px;margin-top:7px;flex-wrap:wrap}
.lev-esperado .le-nums span{font-size:10px;color:#94a3b8;font-weight:700}
.lev-esperado .le-nums b{color:#86efac;font-family:ui-monospace,monospace}
.lev-esperado.vacio{background:rgba(234,179,8,.08);border-color:rgba(234,179,8,.28)}
.lev-esperado.vacio .le-sku{color:#fcd34d}

/* ---- la fila de acciones del levantamiento: VACIO mas chico ---- */
.lev-acciones{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.lev-acciones > button{margin:0 !important}
.lev-acciones .lev-vacio{
  background:rgba(234,179,8,.13) !important;
  border:1px solid rgba(234,179,8,.40) !important;
  color:#fcd34d !important;
  font-size:12px !important;font-weight:900;
  min-height:46px;height:auto !important;
}
.lev-acciones .lev-merma{
  background:rgba(220,38,38,.13) !important;
  border:1px solid rgba(220,38,38,.40) !important;
  color:#fca5a5 !important;
  font-size:12px !important;font-weight:900;
  min-height:46px;height:auto !important;
}

.sb-ico{display:flex;align-items:center;justify-content:center;width:20px}
.sb-ico svg{width:18px;height:18px}

.flujo-flecha svg{width:19px;height:19px;display:block}


/* ==========================================================================
   LISTAS LARGAS: scroll propio dentro de la pantalla
   --------------------------------------------------------------------------
   candados (5388px), dashboard (5136px), usuarios (3161px)
   -> la pagina queda corta, la lista scrollea adentro
   ========================================================================== */
#candLista, #candListaCaja, #usuLista, #consLista{
  max-height:64vh;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding-right:3px;
}
#candLista::-webkit-scrollbar, #usuLista::-webkit-scrollbar,
#consLista::-webkit-scrollbar{width:5px}
#candLista::-webkit-scrollbar-thumb, #usuLista::-webkit-scrollbar-thumb,
#consLista::-webkit-scrollbar-thumb{background:rgba(148,163,184,.35);border-radius:3px}
/* ---- CONTAR: la instruccion y el esperado ---- */
.lev-instr{margin-top:11px;margin-bottom:0}
.lev-esperado{margin-top:10px}
.lev-lpn-caja{margin-top:11px}
.lev-acciones{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:11px}
.lev-acciones > button{
  width:100%;min-height:48px;height:auto;padding:12px 8px;
  border-radius:10px;font-size:13px;font-weight:900;cursor:pointer;border:1px solid;
}
.lev-acciones .lev-vacio{
  background:rgba(234,179,8,.14);border-color:rgba(234,179,8,.42);color:#fcd34d;
}
.lev-acciones .lev-merma{
  background:rgba(220,38,38,.14);border-color:rgba(220,38,38,.42);color:#fca5a5;
}
.lev-acciones > button:active{filter:brightness(1.35)}


/* ---- las listas que faltaban ---- */
#tarLista, #toldoAreas, #toldoLista, #avanceLista, #participantesLista, #fiscalLista{
  max-height:62vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-right:3px;
}
#tarLista::-webkit-scrollbar,#toldoAreas::-webkit-scrollbar,
#toldoLista::-webkit-scrollbar{width:5px}
#tarLista::-webkit-scrollbar-thumb,#toldoAreas::-webkit-scrollbar-thumb,
#toldoLista::-webkit-scrollbar-thumb{background:rgba(148,163,184,.35);border-radius:3px}
/* ---- la camara chica que se inyecta en los campos de LPN ---- */
.cam-mini{
  flex:0 0 auto;width:42px;height:42px;min-width:42px;
  display:inline-flex;align-items:center;justify-content:center;
  margin-left:7px;border-radius:9px;cursor:pointer;
  background:rgba(234,179,8,.13);border:1px solid rgba(234,179,8,.40);color:#fcd34d;
}
.cam-mini svg{width:21px;height:21px;display:block}
.cam-mini:active{filter:brightness(1.4)}


/* ==========================================================================
   PODA DE FLUJOS — el operador ve SOLO lo que necesita
   --------------------------------------------------------------------------
   Se oculta por CSS para que no vuelva cuando el hub se re-renderiza.
   Para revertir: borrar estas reglas.
   ========================================================================== */
/* INICIO: los 5 flujos */
#v-inicio button[data-ir]:not([data-ir="recibir"]):not([data-ir="ubicar"]):not([data-ir="waves"]):not([data-ir="despacho"]):not([data-ir="levantamiento"]) {
  display: none !important;
}
/* PISO: 5 flujos + consultar + calidad (y volver al inicio) */
#v-operar button[data-ir]:not([data-ir="recibir"]):not([data-ir="pallet"]):not([data-ir="waves"]):not([data-ir="despacho"]):not([data-ir="levantamiento"]):not([data-ir="consultar"]):not([data-ir="calidad"]):not([data-ir="inicio"]) {
  display: none !important;
}
/* CONTROL: tareas · avance del conteo · metricas · conciliar SAP */
#v-analizar button[data-ir="descuadres"],
#v-analizar button[data-ir="consultar"],
#v-analizar button[data-ir="dashboard"],
#v-analizar button[data-ir="auditar"],
#v-analizar button[data-ir="participantes"] {
  display: none !important;
}
/* SISTEMA: usuarios · candados · datos · cargas */
#v-sistema button[data-ir]:not([data-ir="usuarios"]):not([data-ir="candados"]):not([data-ir="datos"]):not([data-ir="cargas"]) {
  display: none !important;
}


/* ==========================================================================
   FLUJO ESTANDAR DE PICKING (6 pasos)
   ========================================================================== */
.pick-steps{
  display:grid;grid-template-columns:repeat(6,1fr);gap:6px;
  margin:0 0 12px;padding:10px 9px;border-radius:12px;
  background:rgba(59,130,246,.07);border:1px solid rgba(59,130,246,.25);
}
.pick-step{display:flex;flex-direction:column;align-items:center;gap:4px}
.pick-step span{
  width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:900;background:rgba(59,130,246,.18);border:1px solid rgba(59,130,246,.45);color:#93c5fd;
}
.pick-step b{font-size:9.5px;letter-spacing:.4px;color:#94a3b8;text-transform:uppercase}
@media (max-width:380px){ .pick-step b{font-size:8.5px} }

/* ==========================================================================
   F3 · LA BARRA DE PASOS DE LA OLA SE PUEDE TOCAR
   --------------------------------------------------------------------------
   Los pasos pasaron de <div> a <button> para poder navegar.
   Aca se saca el estilo de boton y se marca el paso activo.
   ========================================================================== */
button.pick-step{
  background:none !important;border:0 !important;border-radius:0 !important;
  padding:0 !important;color:inherit;font:inherit;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:4px;
}
.pick-step.activo span{
  background:rgba(59,130,246,.55);border-color:#93c5fd;color:#fff;
}
.pick-step.activo b{color:#93c5fd}

/* ==========================================================================
   F3 · LOS MODOS DE CONTAR (una sola pantalla, 5 modos)
   ========================================================================== */
.contar-modo{display:block;margin:0;padding:0}
/* los pasos 4 y 5 de la ola se arman adentro de la misma pantalla */
.ola-paso{margin:0;padding:0}


/* ==========================================================================
   PLANTILLAS DE PDF
   ========================================================================== */
.pl-fila{
  display:block;width:100%;text-align:left;cursor:pointer;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.10);
  border-radius:11px;padding:11px 12px;margin-bottom:9px;color:inherit;font:inherit;
}
.pl-fila:active{background:rgba(59,130,246,.16)}
.pl-nom{display:block;font-size:13px;font-weight:900;color:#e2e8f0}
.pl-meta{display:block;font-size:10.5px;color:#64748b;margin-top:3px}
.pl-ver{display:block;margin-top:7px;text-align:center;font-size:10px;font-weight:900;
  letter-spacing:.8px;color:#60a5fa;border-top:1px solid rgba(255,255,255,.08);padding-top:6px}

/* ==========================================================================
   F3-B · LAS PANTALLAS CONSOLIDADAS (una sola pantalla, varias pestanas)
   --------------------------------------------------------------------------
   Mismo patron que la barra de modos de CONTAR y los pasos de la OLA.
   El contenido de cada pantalla vieja vive en un .fusion-panel con su id
   de siempre: el CSS viejo (#v-fiscal, #v-transformar...) lo sigue tomando.
   ========================================================================== */
.fusion-nav{
  display:flex;flex-wrap:wrap;gap:5px;margin:0 0 11px;padding:5px;
  border-radius:11px;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.09);
}
.fusion-tab{
  flex:1 1 auto;min-width:0;padding:9px 7px;border-radius:8px;cursor:pointer;
  font-size:10px;font-weight:900;letter-spacing:.2px;white-space:nowrap;
  background:transparent;border:none;color:#64748b;font-family:inherit;
}
.fusion-tab.activa{background:rgba(59,130,246,.22);color:#93c5fd}
/* ---- las reglas globales "main button" tienen !important: mando yo ---- */
main .fusion-nav .fusion-tab{
  min-height:34px !important;height:auto !important;max-height:none !important;
  font-size:10.5px !important;letter-spacing:.2px !important;
  padding:9px 7px !important;border-radius:8px !important;
  background:transparent !important;color:#64748b !important;border:none !important;
}
main .fusion-nav .fusion-tab.activa{
  background:rgba(59,130,246,.22) !important;color:#93c5fd !important;
}
.fusion-panel{display:block;margin:0;padding:0}

/* ==========================================================================
   F4 · EL CHIP DEL TIPO DE UBICACION
   --------------------------------------------------------------------------
   UBICACION (rack, almacena) · TOLDO · MUELLE · PATIO · AREA
   ========================================================================== */
.tipo-ubi-barra{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin:0 0 10px;padding:8px 10px;border-radius:11px;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09);
}
.tipo-ubi-tit{
  font-size:9.5px;font-weight:900;letter-spacing:.8px;color:#64748b;
  text-transform:uppercase;white-space:nowrap;
}
.tipo-ubi-chips{
  display:flex;gap:6px;align-items:center;flex-wrap:wrap;flex:1;min-width:0;
}
.tipo-ubi-nota{flex-basis:100%;font-size:10px;color:#64748b;line-height:1.45}
.chip-tipo{
  display:inline-block;padding:3px 9px;border-radius:99px;
  font-size:9.5px;font-weight:900;letter-spacing:.4px;white-space:nowrap;
  border:1px solid transparent;vertical-align:middle;
}
.chip-tipo b{font-weight:900;margin-left:4px;opacity:.85}
.chip-tipo.t-ubicacion{background:rgba(34,197,94,.16);color:#4ade80;border-color:rgba(34,197,94,.35)}
.chip-tipo.t-toldo{background:rgba(245,158,11,.16);color:#fbbf24;border-color:rgba(245,158,11,.35)}
.chip-tipo.t-muelle{background:rgba(59,130,246,.16);color:#93c5fd;border-color:rgba(59,130,246,.35)}
.chip-tipo.t-patio{background:rgba(168,85,247,.16);color:#d8b4fe;border-color:rgba(168,85,247,.35)}
.chip-tipo.t-area{background:rgba(239,68,68,.16);color:#fca5a5;border-color:rgba(239,68,68,.35)}
.chip-tipo.t-sin{background:rgba(148,163,184,.16);color:#cbd5e1;border-color:rgba(148,163,184,.35)}

/* ==========================================================================
   F6 · SIMULADOR DE TARIFAS Y MARGEN  (solo ADMIN)
   --------------------------------------------------------------------------
   Solo se agregan clases nuevas; todo lo demas reutiliza .card, .fila-datos,
   .conf-tabla, .dash-kpis/.dash-kpi, .met-det-form y .aviso ya existentes.
   ========================================================================== */
.sim-vivos{
  display:flex; flex-wrap:wrap; gap:6px; margin-top:10px;
}
.sim-vivo{
  display:inline-flex; align-items:baseline; gap:6px;
  padding:5px 9px; border-radius:8px;
  background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.10);
  font-size:10px; font-weight:800; color:#cbd5e1; letter-spacing:.2px;
}
.sim-vivo b{
  font-size:9px; font-weight:900; letter-spacing:.8px; color:#64748b;
  text-transform:uppercase;
}
/* ---- los sliders (ocupacion y margen) ---- */
.sim-range{
  width:100% !important;
  min-height:28px !important; height:28px !important;
  padding:0 !important; border:none !important;
  background:transparent !important;
  accent-color:var(--info);
  cursor:pointer;
}
.sim-range::-webkit-slider-runnable-track{
  height:6px; border-radius:99px;
  background:rgba(148,163,184,.30);
}
.sim-range::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none;
  width:20px; height:20px; border-radius:50%;
  margin-top:-7px; background:var(--info);
  border:2px solid #0b1220;
}
.sim-range::-moz-range-track{
  height:6px; border-radius:99px; background:rgba(148,163,184,.30);
}
.sim-range::-moz-range-thumb{
  width:20px; height:20px; border-radius:50%;
  background:var(--info); border:2px solid #0b1220;
}
/* ---- los 3 escenarios ---- */
.sim-escenarios{
  display:grid; grid-template-columns:1fr; gap:9px; margin-top:8px;
}
@media (min-width:620px){
  .sim-escenarios{ grid-template-columns:repeat(3, minmax(0, 1fr)); }
}
.sim-esc{
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.09);
  border-radius:11px; padding:11px 12px;
}
.sim-esc-cab{
  display:flex; align-items:baseline; justify-content:space-between; gap:6px;
  margin-bottom:8px; padding-bottom:7px;
  border-bottom:1px solid rgba(255,255,255,.09);
}
.sim-esc-cab b{ font-size:11px; font-weight:900; letter-spacing:.8px; color:#e2e8f0; }
.sim-esc-cab span{ font-size:9px; font-weight:800; color:#64748b; letter-spacing:.3px; }
.sim-esc-linea{
  display:flex; justify-content:space-between; align-items:baseline; gap:8px;
  padding:3px 0; font-size:11px; color:var(--texto2);
}
.sim-esc-linea b{
  font-family:ui-monospace, monospace; font-size:11.5px; font-weight:900; color:#e2e8f0;
}
/* ---- la tabla de conceptos del resultado ---- */
#simConceptos{ margin-top:8px; overflow-x:auto; }
#simConceptos .conf-tabla td{
  padding:7px 6px; font-size:11.5px; border-bottom:1px solid rgba(255,255,255,.06);
}
#simConceptos .conf-tabla td.num,
#simConceptos .conf-tabla th.num{ text-align:right; font-family:ui-monospace, monospace; }
#simResCard{ margin-top:12px; }
