:root{
  --bg:#f4f6f2; --surface:#fff; --fg:#1c2620; --muted:#5f6d65; --rule:#d8ded6;
  --ink:#1f3d31; --accent:#a8641f; --accent-soft:#f4e9dc;
  --ok:#2f7a4f; --ok-soft:#e3f1e8; --alta:#a33a2b; --alta-soft:#f9e3df;
  --media:#9a6b00; --media-soft:#fbf1d6; --info:#31566f; --info-soft:#e2ecf3;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--ink)}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:12px 24px;background:var(--ink);color:#fff}
.marca{color:#fff;text-decoration:none;font-weight:600;font-size:17px;display:flex;align-items:center;gap:10px}
.marca small{font-weight:400;opacity:.75;font-size:13px;margin-left:4px}
.punto{width:10px;height:10px;border-radius:50%;background:var(--accent);display:inline-block}
.top nav{display:flex;gap:4px;flex-wrap:wrap}
.top nav a{color:#fff;text-decoration:none;padding:6px 12px;border-radius:6px;opacity:.85}
.top nav a:hover{background:rgba(255,255,255,.1);opacity:1}
.top nav a.activo{background:rgba(255,255,255,.18);opacity:1}
.wrap{max-width:1180px;margin:0 auto;padding:24px 20px 60px}
.panel{background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:22px 24px;margin-bottom:20px}
h1{font-size:24px;margin:0 0 10px;color:var(--ink);line-height:1.2}
h2{font-size:18px;margin:0 0 12px;color:var(--ink)}
.eyebrow{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
.intro{max-width:70ch;color:var(--fg);margin:0 0 16px}
.muted{color:var(--muted)}
.nota{font-size:13px;color:var(--muted);max-width:80ch}
.mono{font-family:var(--mono);font-size:13px;white-space:nowrap}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.neg{color:var(--alta)}
.pie{text-align:center;color:var(--muted);font-size:12px;padding:20px}

.btn{display:inline-block;padding:10px 16px;border-radius:8px;border:1px solid var(--rule);background:#fff;color:var(--ink);font-weight:600;text-decoration:none;cursor:pointer;font-size:14px}
.btn:hover{border-color:var(--ink)}
.btn.primario{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.primario:hover{background:#163026}
.btn:disabled{opacity:.6;cursor:wait}
button.link{background:none;border:0;color:var(--ink);text-decoration:underline;cursor:pointer;padding:0;font:inherit}
form.inline{display:inline}

.subir{display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.zona{display:block;width:100%;border:2px dashed var(--rule);border-radius:10px;padding:26px;text-align:center;cursor:pointer;background:var(--bg)}
.zona:hover{border-color:var(--ink)}
.zona input{position:absolute;opacity:0;width:1px;height:1px}
.zona-txt{display:block;color:var(--fg)}
.zona-lista{display:block;margin-top:10px;font-family:var(--mono);font-size:13px;color:var(--accent)}

.aviso{padding:10px 14px;border-radius:8px;background:var(--media-soft);border-left:4px solid var(--media);margin:0 0 14px;font-size:14px}
.aviso.error{background:var(--alta-soft);border-color:var(--alta)}
.aviso.ok{background:var(--ok-soft);border-color:var(--ok)}

.cab{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:flex-start;margin-bottom:12px}
.descargas{display:flex;flex-direction:column;gap:8px;min-width:260px}
.kpis{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}
.kpi{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:10px;min-width:170px;border:1px solid var(--rule)}
.kpi b{font-size:30px;line-height:1}
.kpi span{font-size:13px;line-height:1.25}
.kpi.alta{background:var(--alta-soft);border-color:transparent}.kpi.alta b{color:var(--alta)}
.kpi.media{background:var(--media-soft);border-color:transparent}.kpi.media b{color:var(--media)}
.kpi.info{background:var(--info-soft);border-color:transparent}.kpi.info b{color:var(--info)}

.chip{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--rule);color:var(--fg);border:1px solid transparent;line-height:1.6;vertical-align:middle}
.chip.alta{background:var(--alta-soft);color:var(--alta)}
.chip.media{background:var(--media-soft);color:var(--media)}
.chip.info{background:var(--info-soft);color:var(--info)}
.chip.ok{background:var(--ok-soft);color:var(--ok)}
.chip.grande{font-size:12px;padding:3px 10px;margin-left:8px}
.filtros{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.filtros button.chip{cursor:pointer;opacity:.45;font:inherit;font-size:11px;font-weight:700}
.filtros button.chip.sel{opacity:1;border-color:currentColor}
.filtros input[type=search]{margin-left:auto;padding:7px 10px;border:1px solid var(--rule);border-radius:8px;min-width:240px;font:inherit}
.filtros select{padding:6px 8px;border:1px solid var(--rule);border-radius:8px;font:inherit}

.scroll{overflow-x:auto}
.tabla{border-collapse:collapse;width:100%;font-size:14px}
.tabla th,.tabla td{padding:8px 10px;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}
.tabla th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--bg);position:sticky;top:0}
.tabla.compacta td,.tabla.compacta th{padding:6px 8px}
.tabla td.detalle{max-width:520px;font-size:13px}
.tabla tr.otra td{color:var(--muted)}
.tabla.editable input{width:100%;min-width:90px;padding:5px 6px;border:1px solid var(--rule);border-radius:5px;font:inherit;font-size:13px}
.tabla.editable input:focus{border-color:var(--ink);outline:none}
.tabla.editable td{padding:4px}
.borrar{font-size:12px;color:var(--muted);white-space:nowrap}

.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--rule);margin:0 0 16px}
.tabs a{padding:8px 14px;text-decoration:none;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:600;font-size:14px}
.tabs a.activo{color:var(--ink);border-color:var(--accent)}
.ayuda{margin:0 0 14px;font-size:13px;color:var(--muted)}
.ayuda summary{cursor:pointer;color:var(--ink);font-weight:600}
.ayuda ul{margin:6px 0 0;padding-left:20px}
.acciones{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
textarea.json{width:100%;min-height:520px;font-family:var(--mono);font-size:13px;padding:12px;border:1px solid var(--rule);border-radius:8px;line-height:1.45}
code{font-family:var(--mono);background:var(--bg);padding:1px 5px;border-radius:4px;font-size:.92em}
@media (max-width:640px){.wrap{padding:14px 12px 40px}.panel{padding:16px}.descargas{min-width:0;width:100%}.filtros input[type=search]{margin-left:0;width:100%}}

.top nav a.salir{opacity:.6;margin-left:8px}
.panel.login{max-width:420px;margin:48px auto}
.form-login{display:flex;flex-direction:column;gap:14px}
.form-login label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:14px}
.form-login input{padding:10px 12px;border:1px solid var(--rule);border-radius:8px;font:inherit;font-size:15px}
.form-login input:focus{border-color:var(--ink);outline:none}
.form-login .btn{align-self:flex-start}
