/* Cuadre · Estanco Subirà — Clear Flow / Human First
   Paleta de estanco: granate y dorado sobre papel cálido. */
:root{
  --granate:#8C2A2E; --granate-osc:#6E1E23; --granate-cla:#A94A4E;
  --dorado:#C8922A;  --dorado-cla:#E8B33C;
  --papel:#FBF8F3;   --tarjeta:#FFFDFA;  --linea:#E8E1D6;
  --tinta:#211C1A;   --tinta-2:#5C544E;  --tinta-3:#8E857C;
  --ok:#0C7A44;      --ok-fondo:#EAF5EE;
  --alerta:#C0392B;  --alerta-fondo:#FBEDEB;
  --revisar:#B07A10; --revisar-fondo:#FBF3E0;
  --radio:14px;
  --sombra:0 1px 2px rgba(33,28,26,.05), 0 6px 20px rgba(33,28,26,.05);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--papel);color:var(--tinta);
  font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased}

/* ---------- cabecera ---------- */
.top{display:flex;align-items:center;gap:24px;padding:14px 24px;background:var(--granate);
  color:#fff;position:sticky;top:0;z-index:20;padding-top:max(14px,env(safe-area-inset-top))}
.marca{display:flex;align-items:center;gap:11px;text-decoration:none;color:#fff;flex:0 0 auto}
.marca .t{width:34px;height:34px;border-radius:9px;background:var(--dorado-cla);color:var(--granate-osc);
  display:grid;place-items:center;font:700 21px/1 Georgia,serif}
.marca .n{font-weight:600;font-size:17px;letter-spacing:-.01em;line-height:1.15}
.marca .n em{display:block;font-style:normal;font-weight:400;font-size:12px;opacity:.72}
.top nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
.top nav a{color:#fff;text-decoration:none;padding:8px 15px;border-radius:9px;font-size:15px;opacity:.82}
.top nav a:hover{background:rgba(255,255,255,.12);opacity:1}
.top nav a.on{background:rgba(255,255,255,.17);opacity:1;font-weight:600}
.salir{color:#fff;opacity:.6;text-decoration:none;font-size:14px}
.salir:hover{opacity:1}

main{max-width:1080px;margin:0 auto;padding:28px 20px 72px}
footer{max-width:1080px;margin:0 auto;padding:0 20px 40px}
footer p{color:var(--tinta-3);font-size:13px;margin:0}

h1{font-size:29px;letter-spacing:-.02em;margin:0 0 6px;font-weight:650}
h2{font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--tinta-3);
  margin:0 0 16px;font-weight:650}
.sub{color:var(--tinta-2);margin:0 0 26px;font-size:15px}

.tarjeta{background:var(--tarjeta);border:1px solid var(--linea);border-radius:var(--radio);
  padding:22px 24px;margin-bottom:18px;box-shadow:var(--sombra)}

/* ---------- semáforo ---------- */
.semaforo{border-radius:var(--radio);padding:26px 28px;margin-bottom:18px;border:1px solid;
  display:flex;gap:20px;align-items:flex-start}
.semaforo .icono{width:44px;height:44px;border-radius:50%;flex:0 0 44px;display:grid;place-items:center;
  font-size:23px;color:#fff}
.semaforo h3{margin:0 0 4px;font-size:22px;letter-spacing:-.015em;font-weight:650}
.semaforo p{margin:0;font-size:15px;color:var(--tinta-2)}
.semaforo.bien{background:var(--ok-fondo);border-color:#BCE0CB}
.semaforo.bien .icono{background:var(--ok)}
.semaforo.mal{background:var(--alerta-fondo);border-color:#F0C7C1}
.semaforo.mal .icono{background:var(--alerta)}
.semaforo.ojo{background:var(--revisar-fondo);border-color:#EBD9AC}
.semaforo.ojo .icono{background:var(--revisar)}
.semaforo .cifra{margin-left:auto;text-align:right;flex:0 0 auto}
.semaforo .cifra b{display:block;font-size:30px;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.semaforo .cifra span{font-size:12.5px;color:var(--tinta-2)}

/* ---------- cifras ---------- */
.cifras{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.cifra-tarjeta{background:var(--tarjeta);border:1px solid var(--linea);border-radius:var(--radio);
  padding:18px 20px;box-shadow:var(--sombra)}
.cifra-tarjeta .r{font-size:12.5px;color:var(--tinta-3);margin-bottom:7px;line-height:1.35}
.cifra-tarjeta .v{font-size:27px;font-weight:650;letter-spacing:-.025em;line-height:1.05;
  font-variant-numeric:tabular-nums}
.cifra-tarjeta .v small{font-size:16px;color:var(--tinta-3);font-weight:400}
.cifra-tarjeta .p{font-size:12.5px;color:var(--tinta-2);margin-top:7px;display:flex;align-items:center;gap:6px}
.punto{width:8px;height:8px;border-radius:50%;flex:0 0 8px}

/* ---------- avisos ---------- */
.aviso{display:flex;gap:15px;padding:17px 0;border-bottom:1px solid var(--linea);align-items:flex-start}
.aviso:last-child{border-bottom:none}
.aviso .marca-sev{flex:0 0 4px;align-self:stretch;border-radius:3px;min-height:44px}
.aviso.critica .marca-sev{background:var(--alerta)}
.aviso.aviso-sev .marca-sev{background:var(--revisar)}
.aviso .cuerpo{flex:1;min-width:0}
.aviso .tit{font-weight:600;font-size:15.5px;margin-bottom:3px}
.aviso .det{font-size:14px;color:var(--tinta-2);line-height:1.5}
.aviso .meta{font-size:12.5px;color:var(--tinta-3);margin-top:5px}
.aviso .dinero{flex:0 0 auto;text-align:right;font-variant-numeric:tabular-nums;font-weight:650;
  font-size:17px;white-space:nowrap;padding-left:10px}
.aviso .dinero small{display:block;font-size:11px;font-weight:400;color:var(--tinta-3);text-transform:uppercase;
  letter-spacing:.05em}

.etiqueta{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.05em}
.etiqueta.critica{background:var(--alerta-fondo);color:var(--alerta)}
.etiqueta.aviso{background:var(--revisar-fondo);color:var(--revisar)}
.etiqueta.info{background:#EFEBE4;color:var(--tinta-2)}
.etiqueta.ok{background:var(--ok-fondo);color:var(--ok)}

/* ---------- tablas ---------- */
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-weight:500;color:var(--tinta-3);font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;padding:0 12px 9px 0;border-bottom:1px solid var(--linea)}
td{padding:11px 12px 11px 0;border-bottom:1px solid var(--linea);font-variant-numeric:tabular-nums}
tr:last-child td{border-bottom:none}
.der{text-align:right}
.neg{color:var(--alerta)}

/* ---------- zona de subida ---------- */
.soltar{border:2px dashed #D8CEBE;border-radius:var(--radio);background:var(--tarjeta);
  padding:52px 28px;text-align:center;transition:.15s;cursor:pointer}
.soltar:hover,.soltar.activa{border-color:var(--granate);background:#FFF7F3}
.soltar .grande{font-size:20px;font-weight:600;margin-bottom:8px}
.soltar .chico{color:var(--tinta-2);font-size:14.5px}
.soltar input{display:none}

.proveedores{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0 0}
.prov{border:1px solid var(--linea);border-radius:12px;padding:16px 18px;background:var(--tarjeta)}
.prov h4{margin:0 0 6px;font-size:15px;font-weight:650;display:flex;align-items:center;gap:8px}
.prov h4 i{width:9px;height:9px;border-radius:50%;display:inline-block}
.prov p{margin:0;font-size:13.5px;color:var(--tinta-2);line-height:1.5}

.boton{display:inline-flex;align-items:center;gap:8px;background:var(--granate);color:#fff;
  border:none;border-radius:10px;padding:12px 22px;font-size:15px;font-weight:600;cursor:pointer;
  text-decoration:none;font-family:inherit}
.boton:hover{background:var(--granate-osc)}
.boton.suave{background:transparent;color:var(--granate);border:1px solid #E0CFC6}
.boton.suave:hover{background:#FBF1EC}
.boton.oro{background:var(--dorado);color:#3A2A05}
.boton.oro:hover{background:var(--dorado-cla)}
.boton[disabled]{opacity:.5;cursor:default}

.resultado{padding:13px 16px;border-radius:10px;margin-bottom:9px;font-size:14.5px;
  display:flex;gap:11px;align-items:flex-start}
.resultado b{font-weight:650}
.resultado.ok{background:var(--ok-fondo);color:#0A5B34}
.resultado.duplicado{background:#EFEBE4;color:var(--tinta-2)}
.resultado.error{background:var(--alerta-fondo);color:#8C231A}
.resultado.confirmar{background:var(--revisar-fondo);color:#7A5407}

/* ---------- confirmación de la llamada ---------- */
.filas{width:100%;border-collapse:collapse}
.filas th{padding-bottom:8px}
.filas td{padding:7px 10px 7px 0}
.filas input[type=number]{width:74px;padding:8px;border:1.5px solid var(--linea);border-radius:8px;
  font:inherit;text-align:center;font-variant-numeric:tabular-nums;background:#fff}
.filas input.duda{border-color:var(--dorado);background:#FFFBF0}
.filas .rec{color:var(--tinta-3);text-align:center;width:58px}
.mini{font-size:12px;color:var(--tinta-3)}

.barra-fija{position:sticky;bottom:0;background:linear-gradient(to top,var(--papel) 62%,rgba(251,248,243,0));
  padding:18px 0 8px;display:flex;gap:12px;align-items:center;margin-top:8px}

/* ---------- acceso ---------- */
.acceso{max-width:390px;margin:12vh auto;padding:0 20px}
.acceso .tarjeta{padding:32px}
.acceso input{width:100%;padding:13px 15px;border:1.5px solid var(--linea);border-radius:10px;
  font:inherit;margin-bottom:14px;background:#fff}
.acceso input:focus{outline:none;border-color:var(--granate)}
.acceso .boton{width:100%;justify-content:center}
.escudo{width:52px;height:52px;border-radius:13px;background:var(--granate);color:var(--dorado-cla);
  display:grid;place-items:center;font:700 30px/1 Georgia,serif;margin:0 auto 18px}

.vacio{text-align:center;padding:52px 20px;color:var(--tinta-3)}
.vacio .g{font-size:19px;color:var(--tinta-2);margin-bottom:8px;font-weight:600}

@media(max-width:820px){
  .cifras{grid-template-columns:repeat(2,1fr)}
  .proveedores{grid-template-columns:1fr}
  .top{flex-wrap:wrap;gap:10px;padding:12px 16px}
  .marca{flex:1 1 auto;min-width:0}
  .salir{order:2;flex:0 0 auto;padding:6px 10px;border:1px solid rgba(255,255,255,.28);border-radius:8px}
  .top nav{width:100%;margin-left:0;order:3}
  .top nav a{flex:1;text-align:center;padding:9px 6px;font-size:14px}
  main{padding:20px 14px 60px}
  .semaforo{flex-wrap:wrap}
  .semaforo .cifra{margin-left:0;text-align:left;width:100%;padding-top:6px}
  .aviso .dinero{font-size:15px}
  h1{font-size:24px}
}
@media print{
  .top,footer,.barra-fija,.boton{display:none}
  body{background:#fff}
  .tarjeta{box-shadow:none;break-inside:avoid}
}

/* ---------- proceso en cola ---------- */
.progreso{height:10px;border-radius:6px;background:#EFE8DC;overflow:hidden}
.progreso .barra{height:100%;width:0;background:var(--granate);border-radius:6px;transition:width .3s}
.progreso-txt{display:flex;justify-content:space-between;font-size:13px;color:var(--tinta-2);margin-top:10px}
.progreso-txt span:last-child{font-variant-numeric:tabular-nums;color:var(--tinta-3)}

/* ---------- cotejo ---------- */
.cotejo{display:grid;grid-template-columns:360px 1fr;gap:18px;align-items:start}
.cotejo .prueba{position:sticky;top:88px}
.hoja{width:100%;border-radius:9px;border:1px solid var(--linea);display:block;background:#fff}
.cotejo-tabla td{padding:9px 10px 9px 0}
.cotejo-tabla tr.cuadra td:last-child{color:var(--ok)}
.cotejo-tabla tr.falta{background:var(--alerta-fondo)}
.cotejo-tabla tr.pendiente{background:var(--revisar-fondo)}
.cotejo-tabla tr.solo-abono{background:#F3EFE8}
.cotejo-tabla tfoot td{border-top:2px solid var(--linea);padding-top:12px}
.aviso .tit a{color:inherit;text-decoration:none;border-bottom:1px solid rgba(140,42,46,.25)}
.aviso .tit a:hover{border-bottom-color:var(--granate)}
.aviso .meta a{color:var(--granate);text-decoration:none;font-weight:500}
@media(max-width:820px){
  .cotejo{grid-template-columns:1fr}
  .cotejo .prueba{position:static}
}

/* ---------- visor de la hoja ---------- */
.lupa{cursor:zoom-in}
.visor{position:fixed;inset:0;background:rgba(20,16,14,.92);display:none;z-index:60;
  padding:24px;overflow:auto;cursor:zoom-out}
.visor.on{display:block}
.visor img{display:block;margin:0 auto;max-width:min(1100px,100%);border-radius:8px;background:#fff}
.visor-x{position:fixed;top:18px;right:20px;background:rgba(255,255,255,.14);color:#fff;border:none;
  border-radius:9px;padding:9px 16px;font:inherit;font-size:14px;cursor:pointer}
