:root {
  --fondo: #f4f6f9;
  --tarjeta: #ffffff;
  --texto: #1f2933;
  --suave: #616e7c;
  --borde: #dde3ea;
  --primario: #0b5cab;
  --primario-oscuro: #08457f;
  --ok: #1a7f4b;
  --ok-fondo: #e6f4ec;
  --alerta: #9a6700;
  --alerta-fondo: #fff4d6;
  --error: #b42318;
  --error-fondo: #fdecea;
}
* { box-sizing: border-box; }
body {
  margin: 0; background: var(--fondo); color: var(--texto);
  font: 15px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
a { color: var(--primario); }
main { max-width: 1200px; margin: 0 auto; padding: 24px 16px 48px; }
footer { text-align: center; color: var(--suave); font-size: 13px; padding: 16px; }
h1 { font-size: 24px; margin: 0 0 4px; }
h2 { font-size: 18px; margin: 28px 0 10px; }
.sub { color: var(--suave); margin: 0 0 20px; }

.barra {
  display: flex; align-items: center; gap: 24px; flex-wrap: wrap;
  background: var(--primario); color: #fff; padding: 10px 16px;
}
.barra a { color: #fff; text-decoration: none; }
.marca { font-weight: 700; font-size: 17px; }
.marca span { opacity: .7; }
.barra nav { display: flex; gap: 18px; flex: 1; }
.barra nav a { opacity: .85; }
.barra nav a:hover { opacity: 1; text-decoration: underline; }
.salir { display: flex; align-items: center; gap: 10px; margin: 0; }
.quien { opacity: .85; font-size: 14px; }
.franja { background: var(--alerta-fondo); color: var(--alerta); text-align: center; padding: 6px 16px; font-size: 14px; }

.tarjeta { background: var(--tarjeta); border: 1px solid var(--borde); border-radius: 10px; padding: 20px; margin-bottom: 18px; }
.rejilla { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; margin-bottom: 18px; }
.cifra { background: var(--tarjeta); border: 1px solid var(--borde); border-radius: 10px; padding: 14px 16px; }
.cifra .n { font-size: 26px; font-weight: 700; }
.cifra .etiqueta { color: var(--suave); font-size: 13px; }
.cifra .valor { color: var(--suave); font-size: 13px; }
.cifra.ok { border-left: 4px solid var(--ok); }
.cifra.alerta { border-left: 4px solid var(--alerta); }
.cifra.gris { border-left: 4px solid var(--borde); }

.aviso { border-radius: 8px; padding: 10px 14px; margin-bottom: 14px; }
.aviso.ok { background: var(--ok-fondo); color: var(--ok); }
.aviso.error { background: var(--error-fondo); color: var(--error); }
.aviso.alerta { background: var(--alerta-fondo); color: var(--alerta); }

table { width: 100%; border-collapse: collapse; background: var(--tarjeta); font-size: 14px; }
th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--borde); vertical-align: top; }
th { background: #eef2f6; font-weight: 600; white-space: nowrap; }
td.num, th.num { text-align: right; white-space: nowrap; }
.tabla { overflow-x: auto; border: 1px solid var(--borde); border-radius: 10px; }
.tabla table { border: 0; }
tr:last-child td { border-bottom: 0; }

.estado { display: inline-block; border-radius: 999px; padding: 1px 10px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.estado.ok, .estado.CREADO { background: var(--ok-fondo); color: var(--ok); }
.estado.corriendo, .estado.en_cola, .estado.pendiente { background: #e8f0fb; color: var(--primario); }
.estado.error, .estado.ERROR, .estado.INCIERTO { background: var(--error-fondo); color: var(--error); }
.estado.interrumpida, .estado.OMITIDO, .estado.vencida { background: var(--alerta-fondo); color: var(--alerta); }

.boton, button {
  display: inline-block; background: var(--primario); color: #fff; border: 0; border-radius: 8px;
  padding: 9px 18px; font: inherit; font-weight: 600; cursor: pointer; text-decoration: none;
}
.boton:hover, button:hover { background: var(--primario-oscuro); }
.boton.secundario { background: #fff; color: var(--primario); border: 1px solid var(--primario); }
button.enlace { background: none; padding: 0; color: #fff; font-weight: 400; text-decoration: underline; }
button[disabled] { background: var(--borde); color: var(--suave); cursor: not-allowed; }
.acciones { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin: 14px 0; }

label { display: block; font-weight: 600; margin-bottom: 4px; }
input[type=text], input[type=password], input[type=date], select {
  width: 100%; max-width: 360px; padding: 8px 10px; border: 1px solid var(--borde); border-radius: 8px; font: inherit;
}
input[type=file] { font: inherit; }
.acciones label { display: flex; gap: 6px; align-items: center; margin: 0; }
details.tarjeta summary { cursor: pointer; }
details.tarjeta[open] summary { margin-bottom: 12px; }
.campo { margin-bottom: 14px; }
.filtros { display: flex; gap: 12px; align-items: end; flex-wrap: wrap; margin-bottom: 14px; }
.filtros .campo { margin: 0; }
.chequeo { display: flex; gap: 8px; align-items: flex-start; font-weight: 400; }

.acceso { max-width: 380px; margin: 8vh auto; }
.acceso h1 { text-align: center; margin-bottom: 18px; }
pre.bitacora {
  background: #0f1720; color: #d7e0ea; border-radius: 10px; padding: 14px; font-size: 13px;
  max-height: 520px; overflow: auto; white-space: pre-wrap;
}
.pasos { margin: 0 0 14px; padding-left: 20px; }
.pasos li { margin-bottom: 4px; }
.pequeno { font-size: 13px; color: var(--suave); }
code { background: #eef2f6; padding: 1px 5px; border-radius: 4px; font-size: 13px; }
