:root{
  --fondo:#f4f5f7;
  --panel:#ffffff;
  --borde:#e3e5ea;
  --texto:#1d2126;
  --suave:#6b7280;
  --tenue:#9aa1ab;

  --verde:#0f8a4a;      --verde-bg:#e6f6ec;  --verde-bd:#aadcbd;
  --amarillo:#9a6700;   --amarillo-bg:#fff6dc; --amarillo-bd:#e8cf8a;
  --naranja:#b14b00;    --naranja-bg:#ffeede;  --naranja-bd:#f0bd8e;
  --rojo:#b3251e;       --rojo-bg:#fdeae8;     --rojo-bd:#f0b0ab;
  --gris:#5b6470;       --gris-bg:#eef0f3;     --gris-bd:#d3d8df;

  --radio:10px;
  --sombra:0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.04);
}

*{box-sizing:border-box}
body{
  margin:0;
  background:var(--fondo);
  color:var(--texto);
  font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:#1a56c4}

.contenedor{max-width:1360px;margin:0 auto;padding:24px 20px 72px}

/* ---------- Encabezado ---------- */
.cabecera{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;justify-content:space-between;margin-bottom:22px}
.cabecera h1{margin:0;font-size:23px;letter-spacing:-.3px}
.cabecera .sub{color:var(--suave);font-size:13px;margin-top:4px}
.acciones{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

.btn{
  display:inline-block;border:1px solid var(--borde);background:var(--panel);
  color:var(--texto);padding:8px 14px;border-radius:8px;text-decoration:none;
  font-size:13px;font-weight:600;cursor:pointer;line-height:1.4;
}
.btn:hover{background:#f9fafb}
.btn-primario{background:#1d2126;border-color:#1d2126;color:#fff}
.btn-primario:hover{background:#000}

/* ---------- Tarjetas de resumen ---------- */
.tarjetas{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:22px}
.tarjeta{
  background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);
  padding:14px 16px;box-shadow:var(--sombra);border-left-width:4px;cursor:pointer;
  text-align:left;width:100%;font-family:inherit;
}
.tarjeta:hover{border-color:#c9ced7}
.tarjeta.activa{outline:2px solid #1d2126;outline-offset:-1px}
.tarjeta .n{font-size:30px;font-weight:700;letter-spacing:-1px;line-height:1.1}
.tarjeta .e{font-size:13px;font-weight:650;margin-top:2px}
.tarjeta .d{font-size:11.5px;color:var(--tenue);margin-top:2px}

.c-al_dia{border-left-color:var(--verde)}    .c-al_dia .n,.c-al_dia .e{color:var(--verde)}
.c-pendiente{border-left-color:#d6a419}      .c-pendiente .n,.c-pendiente .e{color:var(--amarillo)}
.c-atrasado{border-left-color:#e07a2b}       .c-atrasado .n,.c-atrasado .e{color:var(--naranja)}
.c-critico{border-left-color:var(--rojo)}    .c-critico .n,.c-critico .e{color:var(--rojo)}
.c-sin_pagos{border-left-color:var(--gris)}  .c-sin_pagos .n,.c-sin_pagos .e{color:var(--gris)}
.c-todos{border-left-color:#1d2126}

/* ---------- Barra de filtros ---------- */
.barra{
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);
  padding:12px 14px;margin-bottom:14px;box-shadow:var(--sombra);
}
.buscador{
  flex:1 1 240px;min-width:200px;padding:9px 12px;border:1px solid var(--borde);
  border-radius:8px;font-size:14px;font-family:inherit;
}
.buscador:focus{outline:2px solid #1d2126;outline-offset:-1px;border-color:#1d2126}
.conteo{color:var(--suave);font-size:13px;white-space:nowrap}

/* ---------- Tabla ---------- */
.marco{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra);overflow:hidden}
.scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
thead th{
  text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--suave);font-weight:700;padding:11px 14px;background:#fafbfc;
  border-bottom:1px solid var(--borde);white-space:nowrap;
}
tbody td{padding:13px 14px;border-bottom:1px solid #f0f1f4;vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:#fcfcfd}

.nombre{font-weight:650;font-size:14.5px}
.nombre .meta{display:block;font-weight:400;font-size:11.5px;color:var(--tenue);margin-top:2px}

/* La casilla grande de la última fecha de pago */
.casilla-fecha{
  display:inline-block;min-width:168px;padding:8px 12px;border-radius:9px;
  border:1px solid var(--borde);background:#fafbfc;
}
.casilla-fecha .f{font-size:19px;font-weight:700;letter-spacing:-.4px;line-height:1.15;white-space:nowrap}
.casilla-fecha .h{font-size:11.5px;margin-top:2px;opacity:.8}
.f-al_dia{background:var(--verde-bg);border-color:var(--verde-bd)}      .f-al_dia .f,.f-al_dia .h{color:var(--verde)}
.f-pendiente{background:var(--amarillo-bg);border-color:var(--amarillo-bd)} .f-pendiente .f,.f-pendiente .h{color:var(--amarillo)}
.f-atrasado{background:var(--naranja-bg);border-color:var(--naranja-bd)} .f-atrasado .f,.f-atrasado .h{color:var(--naranja)}
.f-critico{background:var(--rojo-bg);border-color:var(--rojo-bd)}        .f-critico .f,.f-critico .h{color:var(--rojo)}
.f-sin_pagos{background:var(--gris-bg);border-color:var(--gris-bd)}     .f-sin_pagos .f,.f-sin_pagos .h{color:var(--gris)}

.pastilla{
  display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;
  border:1px solid transparent;white-space:nowrap;
}
.p-al_dia{background:var(--verde-bg);color:var(--verde);border-color:var(--verde-bd)}
.p-pendiente{background:var(--amarillo-bg);color:var(--amarillo);border-color:var(--amarillo-bd)}
.p-atrasado{background:var(--naranja-bg);color:var(--naranja);border-color:var(--naranja-bd)}
.p-critico{background:var(--rojo-bg);color:var(--rojo);border-color:var(--rojo-bd)}
.p-sin_pagos{background:var(--gris-bg);color:var(--gris);border-color:var(--gris-bd)}

/* ---------- Tira de meses ---------- */
.tira{display:flex;gap:3px}
.mescelda{
  width:30px;text-align:center;border-radius:6px;padding:4px 0;
  border:1px solid var(--borde);background:#fafbfc;
}
.mescelda .mm{font-size:9px;font-weight:700;color:var(--tenue);letter-spacing:.02em;line-height:1.3}
.mescelda .mp{font-size:11px;font-weight:700;color:var(--tenue);line-height:1.3}
.mescelda.pag{background:var(--verde-bg);border-color:var(--verde-bd)}
.mescelda.pag .mm{color:#3f8a60}
.mescelda.pag .mp{color:var(--verde)}
.mescelda.actual{box-shadow:inset 0 0 0 2px #1d2126}
.tira-leyenda{font-size:11px;color:var(--tenue);margin-top:6px}

.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- Avisos y vacíos ---------- */
.aviso{
  background:#fff;border:1px solid var(--borde);border-left:4px solid #d6a419;
  border-radius:var(--radio);padding:14px 16px;margin-bottom:16px;box-shadow:var(--sombra);
}
.aviso.ok{border-left-color:var(--verde)}
.aviso.mal{border-left-color:var(--rojo)}
.aviso h3{margin:0 0 4px;font-size:14px}
.aviso p{margin:0;font-size:13.5px;color:var(--suave)}
.aviso ul{margin:8px 0 0;padding-left:20px;font-size:13.5px;color:var(--suave)}

.vacio{padding:56px 24px;text-align:center;color:var(--suave)}
.vacio h2{margin:0 0 8px;font-size:18px;color:var(--texto)}
.vacio p{margin:0 auto 18px;max-width:460px;font-size:14px}

.pie{margin-top:18px;font-size:12px;color:var(--tenue);text-align:center}

/* ---------- Entrada ---------- */
.login-caja{
  max-width:360px;margin:12vh auto;background:var(--panel);border:1px solid var(--borde);
  border-radius:14px;padding:30px 28px;box-shadow:0 4px 16px rgba(16,24,40,.07);
}
.login-caja h1{margin:0 0 4px;font-size:19px}
.login-caja p{margin:0 0 20px;color:var(--suave);font-size:13px}
.login-caja input[type=password]{
  width:100%;padding:11px 13px;border:1px solid var(--borde);border-radius:8px;
  font-size:15px;font-family:inherit;margin-bottom:12px;
}
.login-caja button{width:100%;padding:11px;font-size:14px}
.error{background:var(--rojo-bg);border:1px solid var(--rojo-bd);color:var(--rojo);
  padding:9px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}

/* ---------- Subir archivo ---------- */
.subir-caja{max-width:620px;margin:0 auto;background:var(--panel);border:1px solid var(--borde);
  border-radius:var(--radio);padding:26px 26px 22px;box-shadow:var(--sombra)}
.subir-caja h1{margin:0 0 6px;font-size:19px}
.subir-caja .pasos{font-size:13.5px;color:var(--suave);margin:0 0 20px;padding-left:20px}
.subir-caja .pasos li{margin-bottom:4px}
.campo{margin-bottom:16px}
.campo label{display:block;font-size:13px;font-weight:650;margin-bottom:6px}
.campo input[type=file]{width:100%;font-size:13px}
.opcion{display:flex;gap:9px;align-items:flex-start;margin-bottom:8px;font-size:13.5px}
.opcion input{margin-top:3px}
.opcion .t{font-weight:600}
.opcion .d{color:var(--suave);font-size:12.5px}

@media (max-width:760px){
  .casilla-fecha{min-width:0}
  .cabecera h1{font-size:20px}
}

/* ---------- Estado "pagado completo" ---------- */
:root{ --azul:#1a56c4; --azul-bg:#e8efff; --azul-bd:#aec4ee; }
.c-completo{border-left-color:var(--azul)}  .c-completo .n,.c-completo .e{color:var(--azul)}
.f-completo{background:var(--azul-bg);border-color:var(--azul-bd)}
.f-completo .f,.f-completo .h{color:var(--azul)}
.p-completo{background:var(--azul-bg);color:var(--azul);border-color:var(--azul-bd)}
tbody tr[data-estado="completo"]{background:#fbfcfe}
tbody tr[data-estado="completo"] .nombre{color:var(--suave)}

/* ---------- Celdas del historial con monto ---------- */
.mescelda{width:46px;padding:4px 2px}
.mescelda .mp{font-size:11px;font-variant-numeric:tabular-nums}
.mescelda.pag .mp{font-weight:700}

/* ---------- Controles dentro de la tabla ---------- */
form.ficha{display:inline;margin:0}
.sel-tipo{
  max-width:150px;padding:5px 7px;border:1px solid var(--borde);border-radius:7px;
  font-size:12.5px;font-family:inherit;background:#fff;color:var(--texto);
}
.sel-tipo:focus{outline:2px solid #1d2126;outline-offset:-1px}
.completo-caja{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:4px}
.completo-caja input{width:17px;height:17px;cursor:pointer;accent-color:var(--azul)}

/* ---------- Importador de tipos ---------- */
.dos-cajas{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;align-items:start}

/* ---------- Saldo en meses ---------- */
.saldo{display:block;font-size:11.5px;color:var(--suave);margin-top:5px;line-height:1.45}
.saldo .mal{color:var(--rojo)}
.saldo .bien{color:var(--verde)}
.cob{display:block;font-size:10.5px;color:var(--tenue);margin-top:2px}
.num .cob{font-weight:400}
td.num.mal{color:var(--rojo)}
td.num.bien{color:var(--verde)}

/* ---------- Abrir detalle ---------- */
.abrir{
  display:inline-flex;align-items:baseline;gap:6px;background:none;border:0;padding:0;
  cursor:pointer;font-family:inherit;text-align:left;color:var(--texto);
}
.abrir:hover .nombre{text-decoration:underline}
.abrir .flecha{color:var(--tenue);font-size:11px;transition:transform .12s}
tr.abierta .abrir .flecha{transform:rotate(90deg)}
tr.abierta{background:#f7f9fc}
.fila-detalle > td{background:#f7f9fc;padding:0 14px 18px}
.detalle{padding-top:4px}

/* ---------- Línea de tiempo de pagos ---------- */
.linea-titulo{font-size:12px;font-weight:700;color:var(--texto);margin-bottom:8px}
.linea-titulo span{font-weight:400;color:var(--tenue);margin-left:8px}
.linea{position:relative;height:30px;background:#fff;border:1px solid var(--borde);border-radius:8px;overflow:hidden}
.linea-mes{position:absolute;top:0;bottom:0;border-right:1px solid #eef0f3}
.punto{
  position:absolute;top:50%;transform:translateY(-50%);border-radius:50%;
  background:var(--verde);border:2px solid #fff;box-shadow:0 0 0 1px var(--verde-bd);
}
.linea-pies{display:flex;justify-content:space-between;font-size:10.5px;color:var(--tenue);margin-top:4px}

/* ---------- Tabla de detalle ---------- */
.tabla-detalle{width:100%;background:#fff;border:1px solid var(--borde);border-radius:8px;font-size:13px}
.tabla-detalle thead th{background:#fff;font-size:10.5px;padding:8px 10px}
.tabla-detalle tbody td{padding:7px 10px;border-bottom:1px solid #f3f4f7}
.tabla-detalle tfoot td{padding:8px 10px;border-top:2px solid var(--borde);font-size:12.5px;color:var(--suave)}
.chip{
  display:inline-block;background:var(--verde-bg);border:1px solid var(--verde-bd);color:var(--verde);
  border-radius:999px;padding:2px 8px;font-size:11.5px;margin:1px 3px 1px 0;white-space:nowrap;
}

/* ---------- Controles de la fila ---------- */
.controles{display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.cuota-caja{display:inline-flex;align-items:center;gap:2px;font-size:12px;color:var(--suave)}
.inp-cuota{
  width:58px;padding:4px 6px;border:1px solid var(--borde);border-radius:6px;
  font-size:12.5px;font-family:inherit;font-variant-numeric:tabular-nums;
}
.inp-cuota:focus{outline:2px solid #1d2126;outline-offset:-1px}
.completo-caja{gap:5px;font-size:11.5px;color:var(--suave)}
.completo-caja input{width:15px;height:15px}
