:root{
  --papel:#F5F2EA; --papel-2:#EDE8DB; --tinta:#1B1B18; --tenue:#6B685E; --linea:#D8D2C2;
  --acento:#1F4D3A; --acento-tinta:#F5F2EA; --perdida:#9B2C1F; --aviso:#8A5A00;
  --serif:"Newsreader","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;
}
:root[data-theme="dark"]{
  --papel:#171612; --papel-2:#201F19; --tinta:#ECE8DC; --tenue:#9C978A; --linea:#38352C;
  --acento:#8FBF9F; --acento-tinta:#14130F; --perdida:#E07A6A; --aviso:#D9A441;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--papel);color:var(--tinta);font:15px/1.55 var(--sans);
  font-feature-settings:"tnum" 1}
a{color:var(--acento)}
:focus-visible{outline:2px solid var(--acento);outline-offset:3px}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}

/* Cabecera */
.cab{border-bottom:1px solid var(--tinta)}
.cab .wrap{display:flex;justify-content:space-between;align-items:baseline;padding-top:22px;padding-bottom:14px}
.marca{font:italic 500 21px var(--serif);text-decoration:none;color:var(--tinta);letter-spacing:.01em}
.marca span{font-style:normal;color:var(--tenue);font-family:var(--mono);font-size:12px;margin-left:10px;letter-spacing:.08em}
.cab nav a{font-size:13px;color:var(--tenue);text-decoration:none;margin-left:22px}
.cab nav a:hover{color:var(--tinta)}

/* Etiquetas */
.et{font:500 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--tenue)}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* Cargar */
.cargar{display:grid;grid-template-columns:5fr 7fr;gap:72px;padding:72px 0 96px}
.cargar h1{font:400 clamp(34px,4.6vw,54px)/1.08 var(--serif);letter-spacing:-.015em;margin:0 0 28px}
.cargar h1 em{color:var(--acento)}
.pasos{list-style:none;margin:0;padding:0;border-top:1px solid var(--linea)}
.pasos li{display:grid;grid-template-columns:34px 1fr;padding:14px 0;border-bottom:1px solid var(--linea);color:var(--tenue)}
.pasos li b{font:500 12px var(--mono);color:var(--tinta);padding-top:3px}
.pasos li strong{color:var(--tinta);font-weight:500}
.privado{margin-top:22px;font-size:13px;color:var(--tenue);max-width:42ch}
.form label.zona{display:block;border:1px solid var(--tinta);padding:44px 28px;cursor:pointer;background:transparent;transition:background .15s}
.form label.zona:hover,.form label.zona.sobre{background:var(--papel-2)}
.zona .titulo{font:400 24px var(--serif);display:block}
.zona .sub{color:var(--tenue);font-size:13px;display:block;margin-top:4px}
.zona input{position:absolute;opacity:0;pointer-events:none}
.zona:focus-within{outline:2px solid var(--acento);outline-offset:3px}
#lista{list-style:none;margin:0;padding:0}
#lista li{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--linea);font:13px var(--mono)}
#lista li span:last-child{color:var(--tenue)}
details.ap{margin-top:26px}
details.ap summary{cursor:pointer;color:var(--tenue);font-size:13px}
details.ap summary:hover{color:var(--tinta)}
details.ap p{font-size:13px;color:var(--tenue);margin:10px 0 8px;max-width:60ch}
textarea{width:100%;min-height:92px;font:13px var(--mono);background:var(--papel-2);color:var(--tinta);
  border:1px solid var(--linea);border-radius:2px;padding:10px}
.btn{display:inline-block;margin-top:28px;background:var(--acento);color:var(--acento-tinta);border:0;
  border-radius:2px;padding:13px 26px;font:500 14px var(--sans);letter-spacing:.02em;cursor:pointer;text-decoration:none}
.btn:hover{filter:brightness(1.12)}
.btn[disabled]{opacity:.6;cursor:progress}
.btn.linea{background:transparent;color:var(--tinta);border:1px solid var(--tinta)}

/* Resultado */
.cabecera-res{padding:56px 0 8px;display:grid;grid-template-columns:1fr auto;gap:24px;align-items:end}
.cabecera-res .fecha{color:var(--tenue);font-size:13px;margin-top:6px}
.cifra{padding:20px 0 36px;border-bottom:1px solid var(--tinta)}
.cifra.sec{padding-top:22px;border-top:0}
.cifra.sec .grande{font-size:clamp(30px,4.5vw,52px)}
.cifra.sec .desglose{margin-top:14px}
.cifra.sec .desglose .v{font-size:17px}
.cifra:not(.sec){border-bottom:0;padding-bottom:12px}
.cifra:last-of-type{border-bottom:1px solid var(--tinta)}
.cifra .grande{font:400 clamp(52px,9vw,112px)/1 var(--serif);letter-spacing:-.03em;font-variant-numeric:lining-nums tabular-nums}
.cifra .grande small{font:500 15px var(--mono);letter-spacing:.06em;color:var(--tenue);margin-left:12px}
.cifra .desglose{display:flex;gap:56px;margin-top:26px;flex-wrap:wrap}
.cifra .desglose div .v{font:400 22px var(--mono);margin-top:4px}
.neg{color:var(--perdida)}
.estado{font:13px var(--sans);color:var(--tenue);text-align:right}
.estado b{color:var(--tinta);font-weight:500}
.estado .e{color:var(--perdida)}.estado .a{color:var(--aviso)}

section.blq{padding:56px 0 8px}
section.blq>header{display:grid;grid-template-columns:64px 1fr;align-items:baseline;margin-bottom:14px}
section.blq>header .n{font:500 12px var(--mono);color:var(--tenue)}
section.blq>header h2{margin:0;font:400 28px var(--serif);letter-spacing:-.01em}
section.blq>header p{grid-column:2;margin:4px 0 0;color:var(--tenue);font-size:13px;max-width:72ch}
.tabla{overflow-x:auto;border-top:1px solid var(--tinta)}
table{border-collapse:collapse;width:100%;font-size:12.5px}
th{font:500 10.5px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--tenue);text-align:right;
  padding:12px 9px 10px;border-bottom:1px solid var(--linea);white-space:nowrap;vertical-align:bottom;line-height:1.25}
td{padding:11px 9px;border-bottom:1px solid var(--linea);text-align:right;white-space:nowrap;font-family:var(--mono);
  font-variant-numeric:tabular-nums}
th:first-child,td:first-child{text-align:left;padding-left:0}
td:first-child{font-family:var(--sans);font-size:14px}
td:first-child small{display:block;color:var(--tenue);font-size:12px}
th.op{padding:12px 4px 10px;text-align:center;color:var(--tenue)}
td.op{padding:11px 4px;text-align:center;color:var(--linea)}
tr.total td{border-bottom:1px solid var(--tinta);font-weight:500}
.nota{font-size:12px;color:var(--tenue);margin:10px 0 0}
.marca-base{color:var(--aviso);font-family:var(--mono)}

/* Validaciones */
.val{list-style:none;padding:0;margin:0;border-top:1px solid var(--tinta)}
.val li{display:grid;grid-template-columns:76px 190px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--linea);font-size:13px}
.val .nv{font:500 11px var(--mono);letter-spacing:.08em}
.val .ERROR .nv{color:var(--perdida)}.val .AVISO .nv{color:var(--aviso)}
.val .arch{color:var(--tenue);font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis}
.ok{border-top:1px solid var(--tinta);padding:16px 0;color:var(--tenue)}
.ok b{color:var(--acento);font-weight:500}

.pie{margin-top:80px;border-top:1px solid var(--linea);padding:22px 0 48px;font-size:12px;color:var(--tenue)}
.acciones{display:flex;gap:12px;flex-wrap:wrap}

@media (max-width:820px){
  .cargar{grid-template-columns:1fr;gap:40px;padding:40px 0 64px}
  .cabecera-res{grid-template-columns:1fr}.estado{text-align:left}
  .val li{grid-template-columns:64px 1fr}.val .arch{grid-column:2}
  .cifra .desglose{gap:32px}
}
@media (max-width:480px){.wrap{padding:0 16px}}
@media print{.cab nav,.acciones,.pie{display:none}body{background:#fff}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

.grupo{margin-top:26px}
.gtit{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;margin-bottom:6px}
.gtit b{font:500 17px var(--serif)}
.gtit span{font-size:12px;color:var(--tenue)}
td.fuerte{font-weight:500;color:var(--tinta)}
td.fuerte.neg{color:var(--perdida)}
.grupo .tabla{border-top:1px solid var(--linea)}
.cifra>.et{margin-bottom:14px}
.ajuste{display:block;color:var(--aviso);font-size:11px;font-family:var(--sans)}
form.costo{margin-top:22px;border-top:1px solid var(--linea);padding-top:18px;max-width:640px}
form.costo label{display:grid;grid-template-columns:1fr 200px;gap:14px;align-items:center;padding:8px 0;border-bottom:1px solid var(--linea);font-size:14px}
form.costo label small{color:var(--tenue)}
form.costo input{font:14px var(--mono);text-align:right;background:var(--papel-2);color:var(--tinta);border:1px solid var(--linea);border-radius:2px;padding:8px 10px}
form.costo .btn{margin-top:16px}
form.costo{max-width:none;margin:40px 0 0;border:1px solid var(--tinta);background:var(--papel-2);padding:24px 28px}
form.costo h3{font:400 22px var(--serif);margin:6px 0 8px}
form.costo .nota{max-width:70ch;margin-bottom:14px}
form.costo label{max-width:720px}
.clase-tit{font:italic 500 26px var(--serif);margin:44px 0 0;padding-top:8px}
.clase-tit+.cifra{padding-top:10px}
td.cero{color:var(--linea)}
td.mot{white-space:normal;text-align:left;font-family:var(--sans);color:var(--tenue);max-width:280px}
tr.apertura td{color:var(--tenue)}
.total-gral{border-top:1px solid var(--tinta);margin-top:24px;padding-top:24px}

/* Almacén: clientes, selección y resumen */
.form .campo{display:block;margin-top:22px}
.form .campo input{display:block;width:100%;margin-top:6px;font:14px var(--sans);background:var(--papel-2);color:var(--tinta);
  border:1px solid var(--linea);border-radius:2px;padding:10px 12px}
.grupo .gtit label{cursor:pointer}
input[type=checkbox]{accent-color:var(--acento);width:15px;height:15px;vertical-align:-2px}
select{font:14px var(--sans);background:var(--papel-2);color:var(--tinta);border:1px solid var(--linea);border-radius:2px;padding:11px 12px}
.renombrar{display:flex;gap:10px;align-items:center}
.renombrar input{font:14px var(--sans);background:var(--papel-2);color:var(--tinta);border:1px solid var(--linea);border-radius:2px;padding:8px 10px;min-width:260px}
.renombrar .btn{margin:0;padding:8px 16px}
.val .OK .nv{color:var(--acento)}
.carga-res{padding-top:36px}
form.costo-inline input{font:13px var(--mono);text-align:right;background:var(--papel-2);color:var(--tinta);border:1px solid var(--linea);border-radius:2px;padding:6px 8px;width:160px}
td small{font-family:var(--sans)}
