:root{
  --indigo:#4B0082;--indigo-d:#2D004D;--indigo-dd:#1E0036;--lime:#7FFF00;--lime-d:#5FCC00;
  --ink:#1C1024;--suave:#675A75;--fondo:#F6F4F9;--linea:#E5DFEC;--blanco:#fff;
  --error:#C4002B;--ok:#16813A;--aviso:#B26A00;
  --r:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Montserrat',system-ui,sans-serif;background:var(--fondo);color:var(--ink);
  font-size:17px;line-height:1.5;font-weight:500;-webkit-font-smoothing:antialiased}
a{color:var(--indigo)}
:focus-visible{outline:3px solid var(--lime);outline-offset:2px}
.wrap{width:min(1120px,94vw);margin-inline:auto}

/* ── barra ── */
.top{background:var(--indigo)}
.top .wrap{display:flex;align-items:center;gap:1rem;height:74px}
.top .logo img{height:34px;width:auto;display:block}
.pildoras{display:flex;gap:.5rem;margin-left:1.4rem}
.pildora{background:rgba(255,255,255,.1);color:#E9DDF6;border-radius:999px;padding:.35rem .85rem;
  font-size:.82rem;font-weight:600;white-space:nowrap}
.pildora b{color:#fff;font-weight:800}
.top form{margin-left:auto}
.salir{background:none;border:1.5px solid rgba(255,255,255,.3);color:#fff;border-radius:999px;
  padding:.45rem 1.05rem;font:inherit;font-size:.85rem;font-weight:700;cursor:pointer}
.salir:hover{border-color:var(--lime);color:var(--lime)}
@media(max-width:720px){.pildoras{display:none}}

.main{padding:2rem 0 4rem}
h1{font-size:clamp(1.7rem,3.4vw,2.3rem);font-weight:900;letter-spacing:-.035em;line-height:1.08}
.sub{color:var(--suave);margin-top:.4rem}

/* ── portada del inicio: la X de la marca como paisaje ── */
.portada{background:var(--indigo);color:#fff;position:relative;overflow:hidden;
  padding:2.6rem 0 6.2rem}
.portada .x{position:absolute;right:-4%;top:50%;transform:translateY(-50%);
  width:min(520px,52vw);opacity:.14;pointer-events:none}
.portada .wrap{position:relative}
.portada h1{font-size:clamp(2rem,4.6vw,3.2rem)}
.portada .fecha{color:#CDB7E6;font-weight:600;margin-top:.5rem}
.cifras{display:flex;gap:2.4rem;margin-top:1.6rem;flex-wrap:wrap}
.cifra span{display:block;font-size:.8rem;color:#CDB7E6;font-weight:700}
.cifra b{font-size:1.9rem;font-weight:900;letter-spacing:-.03em}

.acciones-grandes{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  margin-top:-4.4rem;position:relative}
.accion{background:#fff;border-radius:18px;padding:1.5rem 1.5rem 1.6rem;text-decoration:none;
  color:var(--ink);display:flex;flex-direction:column;gap:.9rem;
  box-shadow:0 1px 0 var(--linea),0 14px 34px -18px rgba(45,0,77,.45);
  transition:transform .15s ease}
.accion:hover{transform:translateY(-3px)}
.accion svg{width:42px;height:42px}
.accion strong{font-size:1.25rem;font-weight:900;letter-spacing:-.02em;display:block}
.accion span{color:var(--suave);font-size:.93rem}
.accion.principal{background:var(--lime);box-shadow:0 18px 38px -16px rgba(95,204,0,.7)}
.accion.principal span{color:#2C3A12}

/* ── cajas ── */
.caja{background:#fff;border:1px solid var(--linea);border-radius:var(--r);
  padding:clamp(1.2rem,2.4vw,1.8rem);margin-top:1.2rem}
.caja>h2{font-size:1.08rem;font-weight:800;margin-bottom:1.1rem;display:flex;gap:.7rem;align-items:center}
.caja>h2 .n{width:1.9rem;height:1.9rem;border-radius:9px;background:var(--indigo);color:var(--lime);
  display:grid;place-items:center;font-size:.9rem;font-weight:900;flex:none}

/* ── pasos: secuencia real ── */
.pasos{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);margin:0 0 1.8rem;counter-reset:p}
.pasos li{position:relative;text-align:center;font-size:.85rem;font-weight:700;color:var(--suave);
  padding-top:2.6rem}
.pasos li::before{counter-increment:p;content:counter(p);position:absolute;top:0;left:50%;
  transform:translateX(-50%);width:2.1rem;height:2.1rem;border-radius:999px;background:#fff;
  border:2px solid var(--linea);display:grid;place-items:center;font-weight:900;color:var(--suave);z-index:1}
.pasos li::after{content:"";position:absolute;top:1.02rem;left:-50%;width:100%;height:3px;background:var(--linea)}
.pasos li:first-child::after{display:none}
.pasos li.hecho{color:var(--ok)}
.pasos li.hecho::before{content:"✓";background:var(--ok);border-color:var(--ok);color:#fff}
.pasos li.hecho::after,.pasos li.actual::after{background:var(--indigo)}
.pasos li.actual{color:var(--indigo)}
.pasos li.actual::before{background:var(--indigo);border-color:var(--indigo);color:var(--lime)}

/* ── formularios ── */
.rejilla{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.ancho{grid-column:1/-1}
.campo label{display:block;font-size:.84rem;font-weight:800;margin-bottom:.38rem}
.campo input,.campo select,.campo textarea{width:100%;font:inherit;font-size:1.05rem;
  padding:.82rem .95rem;border:2px solid var(--linea);border-radius:11px;background:#fff;min-height:54px;color:var(--ink)}
.campo textarea{min-height:94px;resize:vertical}
.campo input:focus,.campo select:focus,.campo textarea:focus{border-color:var(--indigo);outline:none;
  box-shadow:0 0 0 4px rgba(75,0,130,.1)}
.campo.con-error input,.campo.con-error select,.campo.con-error textarea{border-color:var(--error)}
.err{color:var(--error);font-size:.85rem;margin-top:.35rem;font-weight:700}
.ayuda{color:var(--suave);font-size:.84rem;margin-top:.35rem}
.calculo{display:flex;gap:2rem;flex-wrap:wrap;margin-top:1.1rem;padding:1rem 1.1rem;
  background:var(--fondo);border-radius:11px;font-size:.95rem}
.calculo b{font-size:1.25rem;font-weight:900}

/* ── botones ── */
.acciones{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:1.6rem;justify-content:flex-end}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font:inherit;font-weight:800;
  font-size:1.05rem;padding:1rem 1.9rem;border-radius:999px;border:0;cursor:pointer;
  text-decoration:none;min-height:58px}
.btn-lime{background:var(--lime);color:var(--ink)}
.btn-lime:hover{background:#72E800}
.btn-lime:disabled{opacity:.6;cursor:wait}
.btn-linea{background:#fff;color:var(--indigo);border:2px solid var(--indigo)}
.btn-linea:hover{background:var(--fondo)}

/* ── tabla ── */
table{width:100%;border-collapse:collapse;font-size:.95rem}
th{text-align:left;font-size:.76rem;color:var(--suave);font-weight:800;padding:.6rem .6rem;
  border-bottom:2px solid var(--linea)}
td{padding:.85rem .6rem;border-bottom:1px solid var(--linea)}
tbody tr:hover{background:#FBFAFD}
.tabla-scroll{overflow-x:auto}
.folio{font-weight:800;text-decoration:none;font-variant-numeric:tabular-nums}
.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .7rem;border-radius:999px;
  font-size:.8rem;font-weight:700;background:var(--fondo);color:var(--suave)}
.chip::before{content:"";width:.5rem;height:.5rem;border-radius:999px;background:currentColor}
.chip.pagado,.chip.guia_solicitada{background:#FFF4DF;color:var(--aviso)}
.chip.guia_emitida,.chip.recolectado,.chip.consolidado,.chip.cerrado{background:#E4F5E9;color:var(--ok)}
.chip.reversa,.chip.cancelado{background:#FBE3E8;color:var(--error)}
.vacio{color:var(--suave);padding:1.4rem 0 .4rem}

/* ── resumen, firma, cobro ── */
.resumen{display:grid;grid-template-columns:auto 1fr;gap:.6rem 1.6rem;font-size:1rem;margin-top:1.1rem}
.resumen dt{color:var(--suave);font-weight:700}
.total{font-size:clamp(2.4rem,5.4vw,3.4rem);font-weight:900;letter-spacing:-.04em;color:var(--indigo);line-height:1}
.aviso{margin-top:1.1rem;padding:1rem 1.1rem;border-left:4px solid var(--lime);background:var(--fondo);
  border-radius:0 11px 11px 0;font-size:.95rem}
.pad{border:2px dashed var(--indigo);border-radius:var(--r);background:#FDFCFE;width:100%;height:240px;
  touch-action:none;display:block;cursor:crosshair}
.medios{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.medio{position:relative}
.medio input{position:absolute;opacity:0}
.medio span{display:block;padding:1.15rem;border:2px solid var(--linea);border-radius:var(--r);
  text-align:center;font-weight:800;cursor:pointer;background:#fff}
.medio input:checked+span{border-color:var(--indigo);background:var(--indigo);color:#fff}
.medio input:focus-visible+span{outline:3px solid var(--lime);outline-offset:2px}
.check{display:flex;gap:.7rem;align-items:center;font-weight:800;margin-top:1.1rem}
.check input{width:1.45rem;height:1.45rem;accent-color:var(--indigo)}

/* ── login ── */
.login{min-height:100svh;display:grid;place-items:center;position:relative;overflow:hidden;
  background:var(--indigo)}
.login .x{position:absolute;width:min(680px,90vw);right:-12%;bottom:-18%;opacity:.14}
.login form{position:relative;background:#fff;padding:2.4rem;border-radius:20px;width:min(430px,92vw);
  box-shadow:0 30px 60px -24px rgba(0,0,0,.5)}
.login .logo{height:44px;width:auto;display:block;margin-bottom:1.6rem}

/* ── ticket ── */
.ticket{background:#fff;width:min(390px,100%);margin:0 auto;padding:1.6rem 1.5rem;
  border:1px solid var(--linea);border-radius:var(--r);font-size:.92rem}
.ticket .logo{height:38px;width:auto;display:block;margin:0 auto}
.ticket .folio-t{text-align:center;font-size:1.12rem;font-weight:900;margin:.8rem 0 1.1rem;letter-spacing:.02em}
.ticket .fila{display:flex;justify-content:space-between;gap:1rem;padding:.35rem 0;border-bottom:1px dashed var(--linea)}
.ticket .fila span:last-child{text-align:right}
.ticket .pie{margin-top:1.1rem;font-size:.8rem;color:var(--suave);text-align:center}

@media print{
  @page{margin:0}
  .top,.pasos,.acciones,.no-imprimir{display:none!important}
  body{background:#fff}
  .main{padding:0}
  .wrap{width:auto}
  .ticket{border:0;border-radius:0;width:72mm;margin:0 auto;padding:4mm 2mm;font-size:11px}
  .ticket .fila{border-bottom:1px dashed #000}
  .ticket .pie{color:#000}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* ── avisos ── */
.avisos{list-style:none;margin-bottom:1rem}
.avisos li{padding:.9rem 1.1rem;border-radius:11px;font-weight:700;margin-bottom:.5rem}
.avisos .success{background:#E4F5E9;color:var(--ok)}
.avisos .error{background:#FBE3E8;color:var(--error)}

/* ── excepciones: fuera del flujo, discreto ── */
.discreto{display:block;text-align:center;margin-top:2.2rem;font-size:.8rem;color:var(--suave)}
.discreto:hover{color:var(--indigo)}
.chip.por_reemitir{background:#FFF4DF;color:var(--aviso)}
.historial td{font-size:.88rem}
.peligro{border:2px solid #F3C4CF;background:#FFFBFC}
.peligro>h2{color:var(--error)}
.btn-peligro{background:var(--error);color:#fff}
.btn-peligro:hover{filter:brightness(.92)}
.nota{color:var(--suave);font-size:.9rem;margin-top:.4rem}
.campo label.check{display:flex;margin:1rem 0 0;font-size:.95rem}

/* ── buscador de contenido ── */
#campo-contenido{position:relative}
.sugerencias{list-style:none;position:absolute;left:0;right:0;z-index:5;background:#fff;border:2px solid var(--indigo);
  border-top:0;border-radius:0 0 11px 11px;max-height:340px;overflow-y:auto;box-shadow:0 18px 30px -18px rgba(45,0,77,.4)}
.sugerencias li{padding:.7rem .95rem;cursor:pointer;display:flex;justify-content:space-between;gap:1rem;
  border-bottom:1px solid var(--linea)}
.sugerencias li:hover{background:var(--fondo)}
.sugerencias li small{color:var(--suave);white-space:nowrap}
.sugerencias li.no span{color:var(--error);text-decoration:line-through}
.sugerencias li.vacia{color:var(--suave);cursor:default}
.familias{margin-top:.6rem;font-size:.84rem;color:var(--suave);display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.chip-btn{font:inherit;font-size:.8rem;font-weight:700;border:1.5px solid var(--linea);background:#fff;color:var(--indigo);
  border-radius:999px;padding:.25rem .7rem;cursor:pointer}
.chip-btn:hover{border-color:var(--indigo)}

/* ── caja ── */
a.pildora{text-decoration:none}
.pildora.cerrada{background:rgba(255,120,140,.22)}
.pildora.abierta b{color:var(--lime)}
.denoms{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.denom{display:flex;flex-direction:column;gap:.35rem;font-weight:800}
.denom input{font:inherit;font-size:1.2rem;padding:.7rem .8rem;border:2px solid var(--linea);border-radius:11px;min-height:54px;text-align:center}
.denom input:focus{border-color:var(--indigo);outline:none}
.total-conteo{margin-top:1.4rem;font-size:1.1rem}
.total-conteo b{font-size:1.8rem;font-weight:900;color:var(--indigo)}

.opcional{font-size:.72rem;font-weight:700;color:var(--suave);background:var(--fondo);border-radius:999px;padding:.15rem .6rem}
.denom small{font-weight:600;font-size:.75rem;margin-top:.1rem}

/* ── tablero ── */
.encabezado-tablero{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
.filtros{display:flex;gap:.6rem;align-items:center}
.filtros select,.filtros input{font:inherit;font-size:.9rem;padding:.5rem .7rem;border:2px solid var(--linea);border-radius:10px;background:#fff}
.bloque{margin-top:1.6rem}
.kpis{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));margin-bottom:1.2rem}
.kpi{background:var(--fondo);border-radius:12px;padding:1rem 1.1rem;border-left:4px solid var(--indigo)}
.kpi span{display:block;font-size:.8rem;font-weight:800;color:var(--suave)}
.kpi b{display:block;font-size:1.7rem;font-weight:900;letter-spacing:-.03em;line-height:1.2}
.kpi small{color:var(--suave);font-size:.78rem}
.kpi.bueno{border-left-color:var(--ok)}
.kpi.malo{border-left-color:var(--error)}
.kpi.malo b{color:var(--error)}
.columnas{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}

/* Lo oculto se queda oculto: sin esto, display:grid le gana al atributo hidden. */
[hidden]{display:none!important}

.escaneo input{border-style:dashed}
.ayuda.exito{color:var(--ok);font-weight:700}
.denoms{align-items:end}

/* ── etiquetas de empaques ── */
.hoja-etiquetas{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.5rem;margin-top:1.4rem}
.etiqueta{border:1px dashed var(--linea);border-radius:8px;padding:.6rem;text-align:center;background:#fff}
.etiqueta strong{display:block;font-size:.8rem;line-height:1.2}
.etiqueta small{color:var(--suave);font-size:.7rem}
.etiqueta .codigo svg{width:100%;height:auto;max-height:60px}
@media print{.hoja-etiquetas{gap:2mm}.etiqueta{border:1px solid #ccc;break-inside:avoid}}
.chip.preparada,.chip.en_camino{background:#FFF4DF;color:var(--aviso)}
.chip.recibida,.chip.aplicado{background:#E4F5E9;color:var(--ok)}
.chip.con_diferencia,.chip.pendiente{background:#FFF4DF;color:var(--aviso)}
.chip.rechazado{background:#FBE3E8;color:var(--error)}
.atajos{display:flex;gap:1.2rem;flex-wrap:wrap;margin-top:1.6rem;font-size:.9rem;font-weight:700}

.aviso-fuerte{background:#FBE3E8;border-left:4px solid var(--error);border-radius:10px;padding:.9rem 1rem;margin-top:1rem;font-weight:700}
.firma-ticket{margin-top:.8rem;text-align:center}
.firma-ticket img{max-width:70%;max-height:70px}
.firma-ticket span{display:block;font-size:.72rem;color:var(--suave);border-top:1px solid var(--linea);padding-top:.25rem;margin:0 15%}

/* ── rastreo público ── */
body.publico .contenido{max-width:760px;margin:0 auto;padding:1.5rem 1.2rem 3rem}
.linea-tiempo{list-style:none;margin:1.2rem 0 0;padding-left:1.2rem;border-left:3px solid var(--linea)}
.linea-tiempo li{position:relative;padding:0 0 1.1rem 1rem}
.linea-tiempo li::before{content:"";position:absolute;left:-1.55rem;top:.35rem;width:.7rem;height:.7rem;
  border-radius:50%;background:var(--indigo)}
.linea-tiempo li:first-child::before{background:var(--lime);box-shadow:0 0 0 3px rgba(174,255,0,.25)}
.linea-tiempo b{display:block}
.linea-tiempo span{color:var(--suave);font-size:.85rem}
.linea-tiempo small{display:block;color:var(--suave);font-size:.8rem}

body.publico .barra{background:var(--indigo);padding:.9rem 1.2rem;display:flex;align-items:center}
body.publico .logo-barra{height:30px;width:auto}
