:root{
  --fondo:#f3f5f7; --papel:#fff; --texto:#1b2430; --suave:#5d6b7a; --borde:#d5dce3;
  --primario:#0b6b8a; --primario-osc:#08536b; --ok:#1d7a46; --ok-bg:#e4f4ea;
  --error:#b3261e; --error-bg:#fdeceb; --aviso-bg:#fff6dd; --oferta:#a15c00; --oferta-bg:#fff3e0;
  --radio:10px;
}
*{box-sizing:border-box}
html{font-size:17px}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--fondo);color:var(--texto);line-height:1.4}
h1{font-size:1.45rem;margin:.2rem 0 .8rem}
h2{font-size:1.1rem;margin:.2rem 0 .6rem}
a{color:var(--primario)}
main{max-width:980px;margin:0 auto;padding:1rem 1rem 6.5rem}
.sin-menu main{max-width:460px;padding-top:12vh}

/* barra superior y menú */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:.7rem;background:var(--primario);color:#fff;padding:.5rem .8rem}
.top .titulo-app{flex:1}
.top .quien{font-size:.85rem;opacity:.9}
.burger{background:none;border:0;color:#fff;font-size:1.6rem;min-width:48px;min-height:44px;cursor:pointer}
.menu{display:none;background:var(--papel);border-bottom:1px solid var(--borde);padding:.4rem 1rem .8rem}
.menu.abierto{display:block}
.menu a,.menu .link{display:block;width:100%;text-align:left;padding:.85rem .2rem;border:0;border-bottom:1px solid var(--borde);background:none;font:inherit;color:var(--texto);text-decoration:none;cursor:pointer}
.menu a.act{font-weight:700;color:var(--primario)}
.menu .version{padding-top:.7rem;color:var(--suave);font-size:.8rem}
@media(min-width:900px){
  .con-menu{display:grid;grid-template-columns:220px 1fr;grid-template-rows:auto 1fr}
  .top{grid-column:1 / 3}
  .burger{display:none}
  .menu{display:block;grid-column:1;grid-row:2;border-right:1px solid var(--borde);border-bottom:0;min-height:calc(100vh - 56px)}
  main{grid-column:2;grid-row:2;width:100%}
}

/* avisos */
.aviso{padding:.8rem 1rem;border-radius:var(--radio);margin-bottom:.8rem;font-weight:600}
.aviso.ok{background:var(--ok-bg);color:var(--ok)}
.aviso.error{background:var(--error-bg);color:var(--error)}
.nota{color:var(--suave);font-size:.92rem;margin:.3rem 0 .8rem}
.alerta{color:var(--error);font-weight:700}
.vacio{padding:2rem 0;text-align:center;color:var(--suave)}

/* tarjetas y formularios */
.tarjeta{background:var(--papel);border:1px solid var(--borde);border-radius:var(--radio);padding:1.1rem;margin-bottom:1rem}
.tarjeta.angosta{max-width:460px}
.login h1{text-align:center;margin-bottom:1rem}
label{display:block;font-weight:600;font-size:.92rem;margin-bottom:.8rem}
input,select{width:100%;min-height:48px;padding:.55rem .75rem;font:inherit;border:1.5px solid var(--borde);border-radius:8px;background:#fff;color:var(--texto);margin-top:.25rem}
input:focus,select:focus,.btn:focus-visible{outline:3px solid #8fd0e6;outline-offset:1px;border-color:var(--primario)}
.fila-form{display:flex;flex-wrap:wrap;gap:.7rem;align-items:flex-end}
.fila-form label{flex:1 1 170px;margin:0}
.fila-form .btn{flex:0 0 auto}
.check{display:flex;gap:.6rem;align-items:center;font-weight:500}
.check input{width:24px;min-height:24px;margin:0}
.check.chico{margin:0;font-size:.9rem}

.btn{display:inline-block;min-height:48px;padding:.65rem 1.1rem;border:0;border-radius:8px;background:var(--primario);color:#fff;font:inherit;font-weight:700;text-align:center;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--primario-osc)}
.btn.grande{min-height:56px;font-size:1.05rem;width:100%}
.btn.chico{min-height:40px;padding:.4rem .8rem;font-size:.9rem}
.btn.gris{background:#5d6b7a}
.btn.peligro{background:var(--error)}

/* toma física */
.chip{font-size:.75rem;vertical-align:middle;background:var(--aviso-bg);color:#7a5b00;border-radius:99px;padding:.15rem .6rem;font-weight:700}
.chip.ok{background:var(--ok-bg);color:var(--ok)}
.tabs{display:flex;gap:.5rem;margin-bottom:.6rem}
.tab{flex:1;display:flex;flex-direction:column;padding:.7rem .8rem;border:1.5px solid var(--borde);border-radius:var(--radio);background:var(--papel);color:var(--texto);text-decoration:none;font-weight:700}
.tab small{font-weight:500;color:var(--suave)}
.tab.act{border-color:var(--primario);background:#e6f3f8}
.barra-avance{height:10px;background:#dde3e8;border-radius:99px;overflow:hidden}
.barra-avance span{display:block;height:100%;background:var(--ok)}
.filtros{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:.6rem 0 1rem}
.filtros input[type=search]{flex:2 1 220px;margin:0}
.filtros select{flex:1 1 150px;margin:0}
.lista-conteo{list-style:none;margin:0;padding:0}
.lista-conteo .grupo{position:sticky;top:48px;background:var(--fondo);font-weight:800;font-size:.8rem;letter-spacing:.04em;color:var(--suave);padding:.7rem .2rem .3rem;text-transform:uppercase}
.item{display:flex;align-items:center;gap:.7rem;background:var(--papel);border:1.5px solid var(--borde);border-radius:var(--radio);padding:.55rem .7rem;margin-bottom:.45rem}
.item.contado{border-color:#9ccfb1;background:#f6fcf8}
.item.oferta{border-left:6px solid var(--oferta)}
.item label{flex:1;margin:0;min-width:0}
.item .nombre{display:block;font-weight:700;overflow-wrap:anywhere}
.item .cod{display:block;font-weight:500;font-size:.78rem;color:var(--suave)}
.item .cant{width:7.2rem;margin:0;text-align:right;font-size:1.25rem;font-weight:700}
.item .cant.cambiado{border-color:var(--oferta);background:var(--oferta-bg)}
.item .valor{font-size:1.25rem;font-weight:700;min-width:4rem;text-align:right}
.barra-fija{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;gap:.6rem;padding:.6rem 1rem;background:rgba(255,255,255,.96);border-top:1px solid var(--borde)}
.barra-fija .btn{flex:1}
@media(min-width:900px){.barra-fija{left:220px}.barra-fija .btn{flex:0 1 300px}}
.avance-lista{padding-left:1.2rem}

/* tablas */
.tabla-wrap{overflow-x:auto;background:var(--papel);border:1px solid var(--borde);border-radius:var(--radio)}
.tabla{width:100%;border-collapse:collapse;font-size:.92rem}
.tabla th,.tabla td{padding:.6rem .7rem;border-bottom:1px solid var(--borde);text-align:left;vertical-align:middle}
.tabla th{background:#eef2f5;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}
.tabla .num{text-align:right}
.tabla tr.oferta td:first-child{border-left:5px solid var(--oferta)}
.tabla tr.inactivo{opacity:.55}
.acciones{display:flex;flex-wrap:wrap;gap:.5rem}
.en-linea{display:flex;gap:.4rem}
.en-linea input{width:9rem;min-height:40px;margin:0}
.resumen{margin-top:1rem;padding:.8rem;background:#eef2f5;border-radius:8px}
.errores{margin:.5rem 0 0;color:var(--error)}
.pie{text-align:center;color:var(--suave);font-size:.8rem;padding-bottom:1rem}
@media(max-width:600px){.filtros select{flex:1 1 100%}.barra-fija .btn.grande{min-height:56px;display:flex;align-items:center;justify-content:center}}

/* selector de productos (entrada / traslado) */
.selector{margin:.4rem 0 1rem}
.resultados{list-style:none;margin:-.5rem 0 .8rem;padding:0;border:1.5px solid var(--primario);border-radius:8px;background:#fff;max-height:50vh;overflow:auto}
.resultados button{display:block;width:100%;min-height:48px;text-align:left;padding:.6rem .8rem;border:0;border-bottom:1px solid var(--borde);background:#fff;font:inherit;cursor:pointer}
.resultados button:hover,.resultados button:focus{background:#e6f3f8}
.resultados .sin{padding:.8rem;color:var(--suave)}
.lineas-form{list-style:none;margin:0;padding:0}
.lineas-form .item .cant{width:6.5rem}
.lineas-form .pista{display:block;font-size:.8rem;color:var(--primario);font-weight:600;min-height:1em}
.lineas-form .item.falta{border-color:var(--error);background:var(--error-bg)}
.lineas-form .item.falta .pista{color:var(--error)}
.quitar{min-width:44px;min-height:44px;border:0;border-radius:8px;background:#eef2f5;color:var(--suave);font-size:1.1rem;cursor:pointer}
.quitar:hover{background:var(--error-bg);color:var(--error)}
/* stock */
.item.stock{align-items:stretch}
.item.stock .datos{flex:1;min-width:0}
.item.stock .detalle{display:flex;flex-wrap:wrap;gap:.2rem .9rem;font-size:.85rem;color:var(--suave);margin-top:.15rem}
.item.stock .total{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;min-width:4.5rem}
.num-grande{font-size:1.5rem;font-weight:800}
.item.stock.cero{border-color:#e3b341;background:#fffaf0}
.item.stock.negativo{border-color:var(--error);background:var(--error-bg)}
.marca{font-size:.68rem;font-weight:800;letter-spacing:.04em;padding:.1rem .45rem;border-radius:99px}
.marca.cer{background:#ffe9a8;color:#6b4a00}
.marca.neg,.neg{color:var(--error)}
.marca.neg{background:var(--error-bg)}
.chip.err{background:var(--error-bg);color:var(--error)}
.tabla tr.anulado td{opacity:.6;text-decoration:line-through}
.tabla tr.anulado td:last-child,.tabla tr.anulado td:first-child{text-decoration:none}
.datos-mov{display:grid;grid-template-columns:max-content 1fr;gap:.35rem 1rem;margin:0}
.datos-mov dt{font-weight:700;color:var(--suave)}.datos-mov dd{margin:0}
.paginas{display:flex;gap:.8rem;align-items:center;justify-content:center;margin-top:1rem}
.filtros label{margin:0;font-size:.8rem}
.filtros label input[type=date]{min-width:9.5rem}

/* colores por bodega (siempre los mismos en todo el sistema) */
:root{--b1:#0b6b8a;--b1-bg:#e6f3f8;--b2:#a15c00;--b2-bg:#fff3e0;--mixta:#7b1fa2;--mixta-bg:#f3e5f5}
.marca.mixta{background:var(--mixta-bg);color:var(--mixta)}
.mixta-aviso{background:var(--mixta-bg);color:var(--mixta);border:1.5px solid var(--mixta)}
.grupo-bodega{margin-bottom:1rem;border-left:8px solid var(--b1);border-radius:var(--radio)}
.grupo-bodega.b-2{border-left-color:var(--b2)}
.grupo-bodega header{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.3rem;padding:.55rem .8rem;background:var(--b1-bg);font-weight:800;border-radius:0 var(--radio) 0 0}
.grupo-bodega.b-2 header{background:var(--b2-bg)}
.grupo-bodega .gb-total{font-weight:600;font-size:.9rem;color:var(--suave)}
/* salida por guía */
.resumen-bodegas{background:var(--papel);border:1.5px solid var(--borde);border-radius:var(--radio);padding:.8rem;margin-bottom:1rem}
@media(min-width:900px){.resumen-bodegas{position:sticky;top:50px;z-index:12}}
.rb-titulo{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--suave);margin-bottom:.4rem}
.rb-cajas{display:flex;gap:.5rem}
.rb-caja{flex:1;padding:.5rem .6rem;border-radius:8px;border:2px dashed var(--borde);opacity:.7}
.rb-caja.activa{opacity:1;border-style:solid}
.rb-caja.b-1.activa{border-color:var(--b1);background:var(--b1-bg)}.rb-caja.b-2.activa{border-color:var(--b2);background:var(--b2-bg)}
.rb-nombre{display:block;font-weight:800;font-size:.85rem}.rb-valor{display:block;font-size:.9rem}
.rb-estado{margin-top:.5rem;font-weight:700;font-size:.9rem}
.rb-estado.mixta{background:var(--mixta);color:#fff;border-radius:8px;padding:.45rem .6rem}
.lineas-guia{list-style:none;margin:0;padding:0}
.linea-guia{background:var(--papel);border:2px solid var(--borde);border-radius:var(--radio);padding:.7rem;margin-bottom:.8rem}
.linea-guia.bien{border-color:#9ccfb1}.linea-guia.mal{border-color:#e6a19c}
.lg-cab{display:flex;gap:.6rem;align-items:flex-start}
.lg-n{flex:none;width:1.8rem;height:1.8rem;border-radius:50%;background:#dde3e8;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:.85rem}
.lg-txt{flex:1;min-width:0}.lg-txt strong{display:block;overflow-wrap:anywhere}
.lg-cant{flex:none;text-align:right;line-height:1.1}.lg-cant span{display:block;font-size:.7rem;color:var(--suave);text-transform:uppercase}.lg-cant b{font-size:1.5rem}
.lg-prod{margin:.6rem 0;padding:.5rem;background:#f6f8fa;border-radius:8px}
.prod-sel{display:flex;flex-wrap:wrap;gap:.4rem .6rem;align-items:center}.prod-sel .prod-nombre{flex:1 1 100%;font-weight:700}
.prod-buscar input{margin:.3rem 0}
.lg-bodegas{display:flex;gap:.5rem;flex-wrap:wrap}
.asig{flex:1 1 150px;border:2px solid var(--borde);border-radius:8px;padding:.5rem;background:#fff}
.asig.b-1{border-left:8px solid var(--b1)}.asig.b-2{border-left:8px solid var(--b2)}
.asig.usada.b-1{background:var(--b1-bg)}.asig.usada.b-2{background:var(--b2-bg)}
.asig.exceso{border-color:var(--error);background:var(--error-bg)}
.asig-cab{display:flex;justify-content:space-between;gap:.4rem;font-size:.8rem;font-weight:800}.asig .disp{font-weight:600;color:var(--suave)}
.asig.exceso .disp{color:var(--error)}
.asig-fila{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-top:.3rem}.asig-fila input{margin:0;text-align:right;font-weight:800;font-size:1.2rem;flex:1 1 100%;min-width:0}.asig-fila .todo{flex:1 1 100%}
.lg-estado{margin-top:.5rem;font-size:.88rem;font-weight:700}.lg-estado.mal{color:var(--error)}.lg-estado.bien{color:var(--ok)}.lg-estado.mixta{color:var(--mixta)}
@media print{.top,.menu,.barra-fija,.filtros,.btn,.version{display:none!important}.con-menu{display:block}main{padding:0;max-width:none}}

/* oferta */
.marca.of{background:var(--b2-bg);color:var(--b2)}
.oferta-chip{color:var(--b2);font-weight:700}
.tabla tr.oferta td{background:#fffaf2}
.reing-fila{display:flex;gap:.5rem;flex:1 1 100%}
.reing-fila label{flex:1;margin:0;font-size:.75rem}
.reing-fila input{margin-top:.15rem;text-align:right;font-weight:800;font-size:1.15rem}
.reing-fila .danada input{border-color:var(--b2)}

/* Bodegas extra: módulo aparte, claramente distinto */
.selector-bodega{display:flex;gap:.5rem;align-items:flex-end;padding:.5rem 0 .8rem;border-bottom:2px solid var(--borde)}
.selector-bodega label{flex:1;margin:0;font-size:.8rem;font-weight:700;color:var(--suave)}
.selector-bodega select{margin-top:.15rem}
.ambito-extra .top{background:#2e5e1e}
.banner-ambito{margin:0 0 1rem;padding:.6rem .8rem;border-left:8px solid #2e5e1e;background:#eaf4e4;border-radius:8px;font-size:.9rem}
