:root {
  --fondo: #f5f6f4; --tarjeta: #ffffff; --texto: #1d2420; --suave: #5b6660; --borde: #d9ded9;
  --marca: #1f7a4d; --marca-fuerte: #145c39; --error: #b3261e; --error-fondo: #fdecea;
  --aviso: #8a5a00; --aviso-fondo: #fff4d6; --ok: #1f7a4d; --ok-fondo: #e3f3ea;
  color-scheme: light;
}
* { box-sizing: border-box; }
body { margin: 0; font: 16px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; background: var(--fondo); color: var(--texto); }
h1 { font-size: 1.35rem; margin: 0 0 .5rem; }
h2 { font-size: 1.05rem; margin: 1.2rem 0 .5rem; }
main { max-width: 1280px; margin: 0 auto; padding: 16px; }
[hidden] { display: none !important; }

.barra { display: flex; justify-content: space-between; align-items: center; padding: 10px 16px; background: var(--tarjeta); border-bottom: 1px solid var(--borde); }
.marca { font-weight: 700; color: var(--marca); }
.marca span { color: var(--texto); font-weight: 500; }
.quien { display: flex; gap: 10px; align-items: center; font-size: .95rem; }

.tarjeta { background: var(--tarjeta); border: 1px solid var(--borde); border-radius: 12px; padding: 20px; }
.angosta { max-width: 440px; margin: 24px auto; }
label { display: flex; flex-direction: column; gap: 4px; font-size: .9rem; color: var(--suave); margin-bottom: 10px; }
input, textarea { font: inherit; color: var(--texto); padding: 9px 10px; border: 1px solid var(--borde); border-radius: 8px; background: #fff; width: 100%; min-width: 0; }
input:focus, textarea:focus { outline: 2px solid var(--marca); outline-offset: 1px; border-color: var(--marca); }
input.vacio { background: var(--aviso-fondo); }
input.marcado { border-color: var(--error); background: var(--error-fondo); }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
fieldset:disabled input { background: #f1f3f1; color: var(--texto); border-color: transparent; }
fieldset:disabled .quitar { visibility: hidden; }

.boton { font: inherit; border-radius: 8px; padding: 9px 14px; border: 1px solid var(--borde); background: #fff; color: var(--texto); cursor: pointer; }
.boton.principal { background: var(--marca); border-color: var(--marca); color: #fff; font-weight: 600; }
.boton.principal:hover { background: var(--marca-fuerte); }
.boton.peligro { color: var(--error); border-color: #e7b7b3; }
.boton.suave:hover { background: #eef1ee; }
.boton:disabled { opacity: .55; cursor: wait; }

.error { color: var(--error); background: var(--error-fondo); padding: 8px 10px; border-radius: 8px; }
.aviso { color: var(--aviso); background: var(--aviso-fondo); padding: 8px 10px; border-radius: 8px; }
.nota { color: var(--suave); font-size: .88rem; margin: .2rem 0; }
.acuerdo p { margin: 0 0 .7rem; }

.encabezado-lista { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.mes { width: auto; font-size: 1.1rem; padding: 2px 6px; display: inline-block; }
.subir { display: inline-flex; align-items: center; margin: 0; color: #fff; }
.lista { display: flex; flex-direction: column; gap: 8px; }
.factura-fila { display: grid; grid-template-columns: 6.5rem 1fr auto auto; gap: 12px; align-items: center; background: var(--tarjeta); border: 1px solid var(--borde); border-radius: 10px; padding: 12px 14px; cursor: pointer; text-align: left; font: inherit; color: inherit; width: 100%; }
.factura-fila:hover { border-color: var(--marca); }
.factura-fila .proveedor { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.factura-fila .total { font-variant-numeric: tabular-nums; font-weight: 600; }
.chip { font-size: .78rem; padding: 2px 8px; border-radius: 99px; white-space: nowrap; }
.chip.aprobada { background: var(--ok-fondo); color: var(--ok); }
.chip.en_revision { background: var(--aviso-fondo); color: var(--aviso); }
.chip.correccion { background: #e8eefc; color: #2b4ea2; }
.vacia { color: var(--suave); padding: 24px; text-align: center; background: var(--tarjeta); border: 1px dashed var(--borde); border-radius: 10px; }

.revision { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 20px; margin-top: 12px; align-items: start; }
.lado-foto { position: sticky; top: 12px; }
.foto-marco { background: #2a2f2c; border-radius: 12px; overflow: auto; max-height: calc(100vh - 110px); cursor: zoom-in; }
.foto-marco img { display: block; width: 100%; height: auto; }
.foto-marco.cerca { cursor: zoom-out; }
.foto-marco.cerca img { width: 220%; max-width: none; }
.lado-datos { background: var(--tarjeta); border: 1px solid var(--borde); border-radius: 12px; padding: 16px; min-width: 0; }

.estado { font-weight: 600; margin-bottom: 8px; }
.estado .huella { font-family: ui-monospace, Menlo, monospace; font-weight: 400; font-size: .8rem; color: var(--suave); word-break: break-all; }
.cuadre { padding: 10px 12px; border-radius: 8px; margin-bottom: 8px; font-variant-numeric: tabular-nums; }
.cuadre.si { background: var(--ok-fondo); color: var(--ok); }
.cuadre.no { background: var(--error-fondo); color: var(--error); }
.marcas { margin: 0 0 8px; padding-left: 1.2rem; color: var(--error); font-size: .92rem; }

.fila-campos { display: flex; gap: 10px; flex-wrap: wrap; }
.fila-campos label { flex: 1 1 150px; }
.fila-campos label.ancho { flex: 3 1 240px; }
.renglon { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 1.3fr) minmax(0, 1.8fr) minmax(0, 1.8fr) 2.2rem; gap: 6px; margin-bottom: 6px; align-items: center; }
.renglon.titulos { font-size: .8rem; color: var(--suave); }
.renglon input { padding: 7px 8px; }
.renglon input[data-numero] { text-align: right; font-variant-numeric: tabular-nums; }
.quitar { border: 0; background: transparent; color: var(--error); font-size: 1.2rem; cursor: pointer; padding: 0; }
.impuesto { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr) 2.2rem; gap: 6px; margin-bottom: 6px; }
.acciones { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.historia { margin-top: 16px; color: var(--suave); font-size: .9rem; }
.historia li { margin-bottom: 6px; }

dialog { border: 0; border-radius: 12px; padding: 0; max-width: 460px; width: calc(100% - 32px); }
dialog::backdrop { background: rgba(0, 0, 0, .4); }
.dialogo { padding: 20px; }
.dialogo h2 { margin-top: 0; }

@media (max-width: 820px) {
  .revision { grid-template-columns: 1fr; }
  .lado-foto { position: static; }
  .foto-marco { max-height: 55vh; }
  .renglon.titulos { display: none; }
  .renglon { grid-template-columns: 1fr 1fr 1fr 2rem; padding: 8px; background: #f8faf8; border-radius: 8px; }
  .renglon input[data-campo-renglon="descripcion"] { grid-column: 1 / -1; }
  .factura-fila { grid-template-columns: 1fr auto; }
  .factura-fila .fecha { grid-column: 1 / -1; font-size: .85rem; color: var(--suave); }
  .barra { padding: 8px 16px; }
  .quien { font-size: .85rem; }
}
