:root {
  --bg: #f5f6f8; --panel: #fff; --texto: #1d2330; --suave: #667085; --borde: #e3e6ec;
  --primario: #1f5eff; --primario-osc: #1747c2;
  --rojo: #d92d20; --rojo-bg: #fdecea; --ambar: #b54708; --ambar-bg: #fff4dc;
  --verde: #067647; --verde-bg: #e3f7ec; --azul-bg: #e6efff; --gris-bg: #eef0f3; --manual-bg: #ffe08a;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--texto); font-size: 14px; }
a { color: var(--primario); text-decoration: none; }
a:hover { text-decoration: underline; }
header#topbar { display: flex; align-items: center; gap: 24px; padding: 0 20px; height: 54px; background: #101828; color: #fff; position: sticky; top: 0; z-index: 10; }
header .marca { color: #fff; font-weight: 700; font-size: 16px; }
header .marca small { color: #98a2b3; font-weight: 500; }
header nav { display: flex; gap: 4px; flex: 1; }
header nav a { color: #d0d5dd; padding: 6px 12px; border-radius: 6px; }
header nav a.activo, header nav a:hover { background: #1d2939; color: #fff; text-decoration: none; }
header .usuario { color: #d0d5dd; display: flex; gap: 8px; align-items: center; }
main { max-width: 1400px; margin: 0 auto; padding: 20px; }
h1 { font-size: 22px; margin: 0 0 4px; }
h2 { font-size: 16px; margin: 0 0 12px; }
.sub { color: var(--suave); margin-bottom: 16px; }
.fila { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.entre { justify-content: space-between; }
.grid { display: grid; gap: 16px; }
.g4 { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.g2 { grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); }
.card { background: var(--panel); border: 1px solid var(--borde); border-radius: 10px; padding: 16px; }
.kpi .valor { font-size: 24px; font-weight: 700; margin-top: 4px; font-variant-numeric: tabular-nums; }
.kpi .etiqueta { color: var(--suave); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
.kpi .nota { color: var(--suave); font-size: 12px; margin-top: 2px; }
table { width: 100%; border-collapse: collapse; background: var(--panel); }
th, td { padding: 7px 10px; border-bottom: 1px solid var(--borde); text-align: left; vertical-align: top; }
th { font-size: 12px; color: var(--suave); font-weight: 600; background: #fafbfc; }
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
tr:hover td { background: #fafbff; }
.tabla-wrap { overflow-x: auto; border: 1px solid var(--borde); border-radius: 10px; }
button, .btn { font: inherit; border: 1px solid var(--borde); background: #fff; color: var(--texto); border-radius: 7px; padding: 7px 14px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
button:hover, .btn:hover { background: #f2f4f7; text-decoration: none; }
button.primario, .btn.primario { background: var(--primario); border-color: var(--primario); color: #fff; }
button.primario:hover { background: var(--primario-osc); }
button.peligro { color: var(--rojo); border-color: #f5c2bd; }
button:disabled { opacity: .5; cursor: not-allowed; }
.btn-link { background: none; border: none; color: inherit; text-decoration: underline; padding: 0; cursor: pointer; }
input, select, textarea { font: inherit; border: 1px solid #d0d5dd; border-radius: 7px; padding: 7px 10px; background: #fff; color: var(--texto); }
label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--suave); }
label.check { flex-direction: row; align-items: center; color: var(--texto); font-size: 14px; }
.form { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.chip { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.chip.bloqueante, .chip.vencido, .chip.sustituida { background: var(--rojo-bg); color: var(--rojo); }
.chip.advertencia, .chip.calendario, .chip.en_revision, .chip.abierto, .chip.pendiente, .chip.revision { background: var(--ambar-bg); color: var(--ambar); }
.chip.informativa, .chip.borrador_listo, .chip.borrador { background: var(--azul-bg); color: var(--primario-osc); }
.chip.presentado, .chip.presentada, .chip.ok, .chip.VIGENTE { background: var(--verde-bg); color: var(--verde); }
.chip.SUSTITUIDA { background: var(--gris-bg); color: var(--suave); }
.tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--borde); margin: 16px 0; flex-wrap: wrap; }
.tabs a { padding: 9px 14px; color: var(--suave); border-bottom: 2px solid transparent; }
.tabs a.activo { color: var(--texto); border-color: var(--primario); font-weight: 600; text-decoration: none; }
.alerta-item { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--borde); align-items: flex-start; }
.alerta-item:last-child { border-bottom: none; }
.vacio { color: var(--suave); padding: 20px; text-align: center; }
.drop { border: 2px dashed #b2bccc; border-radius: 10px; padding: 32px; text-align: center; color: var(--suave); background: #fafbfc; cursor: pointer; }
.drop.sobre { border-color: var(--primario); background: var(--azul-bg); }
.login { max-width: 380px; margin: 10vh auto; }
.login .card { padding: 28px; display: grid; gap: 14px; }
#toast { position: fixed; bottom: 20px; right: 20px; background: #101828; color: #fff; padding: 12px 18px; border-radius: 8px; max-width: 480px; z-index: 50; box-shadow: 0 8px 24px rgba(0,0,0,.2); }
#toast.error { background: var(--rojo); }
dialog { border: none; border-radius: 12px; padding: 0; width: min(900px, 95vw); box-shadow: 0 20px 50px rgba(0,0,0,.25); }
dialog::backdrop { background: rgba(16,24,40,.5); }
#modal-contenido { padding: 22px; max-height: 85vh; overflow: auto; }
.f2011 td.cas { color: var(--suave); font-size: 11px; width: 40px; text-align: right; padding-right: 2px; }
.f2011 td.val { width: 120px; text-align: right; font-variant-numeric: tabular-nums; cursor: pointer; }
.f2011 td.precarga { background: var(--azul-bg); }
.f2011 td.calculada { background: var(--gris-bg); }
.f2011 td.manual_obligatoria { background: var(--manual-bg); font-weight: 700; outline: 2px solid #f0b400; outline-offset: -2px; }
.f2011 td.ajustado { box-shadow: inset 3px 0 0 var(--primario); }
.f2011 tr.total td { font-weight: 700; }
.f2011 tr.seccion td { background: #101828; color: #fff; font-weight: 700; letter-spacing: .03em; }
.leyenda span { display: inline-flex; align-items: center; gap: 6px; margin-right: 14px; font-size: 12px; color: var(--suave); }
.leyenda i { width: 14px; height: 14px; border-radius: 3px; display: inline-block; border: 1px solid var(--borde); }
.aviso { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; }
.aviso.ambar { background: var(--ambar-bg); color: var(--ambar); }
.aviso.rojo { background: var(--rojo-bg); color: var(--rojo); }
.aviso.verde { background: var(--verde-bg); color: var(--verde); }
.mono { font-family: ui-monospace, Consolas, monospace; font-size: 12px; }
.muted { color: var(--suave); }
canvas { max-height: 300px; }
@media (max-width: 700px) { .g2 { grid-template-columns: 1fr; } header nav { display: none; } main { padding: 12px; } }
