/* NEXO · interfaz local. Sin fuentes ni recursos externos (CSP: default-src 'self'). */
:root {
  color-scheme: light dark;
  --bg: #f3f5f8;
  --surf: #ffffff;
  --surf2: #eaeff4;
  --txt: #15212d;
  --mut: #475667;
  --bord: #c8d3de;
  --bord-fuerte: #8da0b3;
  --prim: #0f3d5e;
  --prim-h: #0a2e48;
  --on-prim: #ffffff;
  --acc: #c8873a;
  --acc-txt: #85500d;
  --link: #0a5aa6;
  --focus: #b45f06;
  --cab-bg: #0f3d5e;
  --cab-txt: #ffffff;
  --sombra: 0 1px 2px rgba(15, 40, 65, 0.08), 0 4px 14px rgba(15, 40, 65, 0.05);

  --ok-fg: #14532d; --ok-bg: #e3f4e8; --ok-bd: #1e7a44;
  --av-fg: #5e3600; --av-bg: #fff2d6; --av-bd: #b8780a;
  --er-fg: #8a1c1c; --er-bg: #fde8e8; --er-bd: #b42318;
  --in-fg: #0b3f6b; --in-bg: #e4eff9; --in-bd: #1f6fb2;
  --ne-fg: #36465a; --ne-bg: #edf1f5; --ne-bd: #7e8fa1;
  --rv-fg: #4b2273; --rv-bg: #f1e8fa; --rv-bd: #7a3eb1;

  --radio: 8px;
  --fuente: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0d1721;
    --surf: #14222f;
    --surf2: #1b2d3d;
    --txt: #e7edf3;
    --mut: #a8b7c6;
    --bord: #2c4155;
    --bord-fuerte: #5d7a94;
    --prim: #2a6fa8;
    --prim-h: #378bcc;
    --on-prim: #ffffff;
    --acc: #d99a4e;
    --acc-txt: #f0b970;
    --link: #8cc4f2;
    --focus: #ffc46b;
    --cab-bg: #0a2c44;
    --sombra: 0 1px 2px rgba(0, 0, 0, 0.4), 0 4px 14px rgba(0, 0, 0, 0.25);

    --ok-fg: #9be3b5; --ok-bg: #12301f; --ok-bd: #3fa56a;
    --av-fg: #ffd58a; --av-bg: #38290a; --av-bd: #c98a1b;
    --er-fg: #ffb4ac; --er-bg: #3a1512; --er-bd: #e0584a;
    --in-fg: #a9d3f5; --in-bg: #0f2d46; --in-bd: #4e97d6;
    --ne-fg: #c5d1dd; --ne-bg: #202f3e; --ne-bd: #6c8196;
    --rv-fg: #d9bbf5; --rv-bg: #2b1840; --rv-bd: #a072d1;
  }
}

*, *::before, *::after { box-sizing: border-box; }
html { font-size: 100%; -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--txt); font: 1rem/1.55 var(--fuente); min-width: 320px; }
h1, h2, h3, h4, h5 { line-height: 1.25; margin: 0 0 0.5rem; letter-spacing: -0.01em; }
h1 { font-size: 1.65rem; }
h2 { font-size: 1.3rem; }
h3 { font-size: 1.1rem; }
h4 { font-size: 1rem; }
h5 { font-size: 0.95rem; }
p { margin: 0 0 0.75rem; }
a { color: var(--link); text-underline-offset: 2px; }
a:hover { text-decoration-thickness: 2px; }
code, .mono { font-family: var(--mono); font-size: 0.9em; }
code { background: var(--surf2); padding: 0.05rem 0.3rem; border-radius: 4px; }
small { font-size: 0.85rem; }
hr { border: 0; border-top: 1px solid var(--bord); margin: 1rem 0; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; border-radius: 3px; }
.saltar { position: absolute; left: 0.5rem; top: -4rem; background: var(--surf); color: var(--txt); padding: 0.6rem 1rem; border-radius: 6px; z-index: 100; border: 2px solid var(--focus); }
.saltar:focus { top: 0.5rem; }

/* ───────── Cabecera ───────── */
.cabecera { background: var(--cab-bg); color: var(--cab-txt); border-bottom: 3px solid var(--acc); padding: 0.6rem 1rem 0.7rem; position: sticky; top: 0; z-index: 30; }
.cab-fila { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.marca { display: flex; align-items: center; gap: 0.7rem; }
.marca-logo { display: inline-grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: 10px; background: #fff; color: var(--prim); font-weight: 800; font-size: 1.35rem; border-bottom: 4px solid var(--acc); }
.marca-nombre { display: block; font-size: 1.25rem; letter-spacing: 0.12em; line-height: 1.1; }
.marca-sub { display: block; font-size: 0.78rem; opacity: 0.85; }
.cab-estado { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.5rem; }
.cab-estado .etiqueta { background: rgba(255, 255, 255, 0.12); color: #fff; border-color: rgba(255, 255, 255, 0.55); }
.chip-demo { display: inline-flex; align-items: center; gap: 0.25rem; background: #ffd58a; color: #3a2400; font-weight: 800; padding: 0.15rem 0.7rem; border-radius: 999px; border: 2px dashed #7a4a00; font-size: 0.88rem; letter-spacing: 0.02em; }
.chip-real { display: inline-flex; gap: 0.25rem; background: rgba(255, 255, 255, 0.12); border: 2px solid #fff; color: #fff; font-weight: 700; padding: 0.15rem 0.7rem; border-radius: 999px; font-size: 0.88rem; }
.menu-btn { display: none; background: transparent; color: #fff; border: 2px solid rgba(255, 255, 255, 0.7); border-radius: 8px; padding: 0.4rem 0.8rem; font: inherit; font-weight: 600; min-height: 2.5rem; cursor: pointer; }

/* ───────── Estructura ───────── */
.shell { display: grid; grid-template-columns: 15.5rem minmax(0, 1fr); align-items: start; max-width: 96rem; margin: 0 auto; }
.nav { position: sticky; top: 6.4rem; padding: 1rem 0.75rem 1rem 1rem; align-self: start; max-height: calc(100vh - 6.4rem); overflow-y: auto; }
.nav-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.15rem; }
.nav-enlace { display: flex; align-items: center; gap: 0.6rem; padding: 0.55rem 0.7rem; border-radius: 8px; color: var(--txt); text-decoration: none; font-weight: 500; border-left: 4px solid transparent; }
.nav-enlace:hover { background: var(--surf2); }
.nav-enlace[aria-current="page"] { background: var(--surf); border-left-color: var(--acc); font-weight: 700; box-shadow: var(--sombra); color: var(--prim); }
@media (prefers-color-scheme: dark) { .nav-enlace[aria-current="page"] { color: var(--txt); } }
.nav-ico { display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 6px; background: var(--surf2); font-size: 0.95rem; color: var(--prim); }
@media (prefers-color-scheme: dark) { .nav-ico { color: var(--acc-txt); } }
.nav-pie { font-size: 0.78rem; color: var(--mut); margin: 1rem 0.5rem 0; line-height: 1.4; }
.principal { padding: 1.25rem 1.25rem 4rem; min-width: 0; outline: none; }
.vista { display: grid; gap: 1.1rem; max-width: 78rem; }
.vista-cab h1 { margin-bottom: 0.25rem; padding-bottom: 0.4rem; position: relative; }
.vista-cab h1::after { content: ""; position: absolute; left: 0; bottom: 0; width: 3rem; height: 4px; background: var(--acc); border-radius: 2px; }
.vista-cab h1:focus { outline: none; }
.vista-sub { color: var(--mut); max-width: 62rem; margin: 0.4rem 0 0; }
.subnav { display: flex; gap: 0.25rem; border-bottom: 2px solid var(--bord); }
.subnav a { padding: 0.5rem 1rem; text-decoration: none; color: var(--txt); font-weight: 600; border-bottom: 4px solid transparent; margin-bottom: -2px; }
.subnav a[aria-current="page"] { border-bottom-color: var(--acc); color: var(--prim); }
@media (prefers-color-scheme: dark) { .subnav a[aria-current="page"] { color: var(--acc-txt); } }

/* ───────── Tarjetas y bloques ───────── */
.tarjeta { background: var(--surf); border: 1px solid var(--bord); border-radius: var(--radio); padding: 1rem 1.1rem; box-shadow: var(--sombra); display: grid; gap: 0.75rem; align-content: start; }
.tarjeta-titulo { margin: 0; font-size: 1.05rem; color: var(--prim); padding-bottom: 0.3rem; border-bottom: 1px solid var(--bord); }
@media (prefers-color-scheme: dark) { .tarjeta-titulo { color: var(--txt); } }
.bloque { background: var(--surf); border: 1px solid var(--bord); border-radius: var(--radio); padding: 0.9rem 1.1rem; }
.bloque > h3 { font-size: 1rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--mut); margin-bottom: 0.5rem; }
.sub { margin: 1rem 0 0.4rem; font-size: 0.95rem; color: var(--prim); border-bottom: 1px solid var(--bord); padding-bottom: 0.2rem; }
@media (prefers-color-scheme: dark) { .sub { color: var(--acc-txt); } }
.ayuda { color: var(--mut); font-size: 0.875rem; margin: 0; }
.vacio { color: var(--mut); font-style: italic; margin: 0.25rem 0; }
.lista { margin: 0.25rem 0 0.5rem; padding-left: 1.2rem; display: grid; gap: 0.2rem; }
.lista.pendientes { list-style: none; padding-left: 0; }
.kv { display: grid; grid-template-columns: minmax(10rem, 17rem) 1fr; gap: 0.35rem 1rem; margin: 0; }
.kv dt { font-weight: 600; color: var(--mut); }
.kv dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 40rem) { .kv { grid-template-columns: 1fr; gap: 0; } .kv dd { margin-bottom: 0.5rem; } }
.grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 0.75rem 1.25rem; align-items: start; }
.grid-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(13.5rem, 1fr)); gap: 0.75rem 1rem; align-items: start; }
.cols { display: grid; gap: 0.75rem; }
.cols-3 { grid-template-columns: repeat(auto-fit, minmax(16.5rem, 1fr)); }
.pila { display: grid; gap: 0.75rem; align-content: start; }
.mini-tarjeta { border: 1px solid var(--bord); border-radius: var(--radio); padding: 0.75rem 0.9rem; background: var(--surf2); display: grid; gap: 0.4rem; align-content: start; min-width: 0; }
.mini-tarjeta h5 { margin: 0; text-transform: capitalize; }
.detalle { display: grid; gap: 0.6rem; }
.det { border: 1px solid var(--bord); border-radius: var(--radio); background: var(--surf); }
.det > summary { cursor: pointer; padding: 0.6rem 0.9rem; font-weight: 600; list-style: none; display: flex; gap: 0.5rem; align-items: center; min-height: 2.5rem; }
.det > summary::before { content: "▸"; transition: transform 0.15s; color: var(--acc-txt); }
.det[open] > summary::before { transform: rotate(90deg); }
.det > summary::-webkit-details-marker { display: none; }
.det-cuerpo { padding: 0.25rem 0.9rem 0.9rem; display: grid; gap: 0.6rem; }
.det .det { background: var(--bg); }

/* ───────── Insignias y etiquetas (texto + icono + estilo de borde; nunca solo color) ───────── */
.chips { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0.15rem 0; }
.ico { font-weight: 800; }
.insignia { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.18rem 0.65rem; border-radius: 6px; font-size: 0.8rem; font-weight: 800; letter-spacing: 0.03em; text-transform: uppercase; border: 2px solid; white-space: normal; line-height: 1.25; }
.e-listo { color: var(--ok-fg); background: var(--ok-bg); border-color: var(--ok-bd); border-style: solid; }
.e-limites { color: var(--av-fg); background: var(--av-bg); border-color: var(--av-bd); border-style: dashed; }
.e-borrador { color: var(--in-fg); background: var(--in-bg); border-color: var(--in-bd); border-style: dotted; border-width: 3px; }
.e-bloqueado { color: var(--er-fg); background: var(--er-bg); border-color: var(--er-bd); border-style: double; border-width: 4px; }
.e-revision { color: var(--rv-fg); background: var(--rv-bg); border-color: var(--rv-bd); border-style: solid; border-left-width: 8px; }
.e-error { color: var(--er-fg); background: var(--er-bg); border-color: var(--er-bd); border-style: solid; }
.e-neutro { color: var(--ne-fg); background: var(--ne-bg); border-color: var(--ne-bd); border-style: solid; }
.etiqueta { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.1rem 0.55rem; border-radius: 999px; font-size: 0.8rem; font-weight: 600; border: 1.5px solid; line-height: 1.35; }
.t-ok { color: var(--ok-fg); background: var(--ok-bg); border-color: var(--ok-bd); }
.t-aviso { color: var(--av-fg); background: var(--av-bg); border-color: var(--av-bd); border-style: dashed; }
.t-error { color: var(--er-fg); background: var(--er-bg); border-color: var(--er-bd); }
.t-info { color: var(--in-fg); background: var(--in-bg); border-color: var(--in-bd); }
.t-neutro { color: var(--ne-fg); background: var(--ne-bg); border-color: var(--ne-bd); }
.t-cab { background: rgba(255, 255, 255, 0.14); color: #fff; border-color: rgba(255, 255, 255, 0.6); }
.version { font-weight: 500; color: var(--mut); font-size: 0.9rem; }
mark.pendiente { background: #ffe38a; color: #3b2a00; padding: 0 0.25rem; border-radius: 3px; border: 1px dashed #8a5d00; font-weight: 600; }
@media (prefers-color-scheme: dark) { mark.pendiente { background: #4b3a08; color: #ffe38a; border-color: #c9a03a; } }

/* ───────── Alertas y avisos fijos ───────── */
.alerta { border: 1.5px solid; border-left-width: 8px; border-radius: var(--radio); padding: 0.65rem 0.9rem; display: grid; gap: 0.3rem; }
.alerta-cab { display: flex; gap: 0.5rem; align-items: baseline; }
.alerta-cab strong { font-size: 0.98rem; }
.alerta-cuerpo { font-size: 0.95rem; }
.alerta-cuerpo > :last-child { margin-bottom: 0; }
.a-error { color: var(--er-fg); background: var(--er-bg); border-color: var(--er-bd); }
.a-bloqueo { color: var(--er-fg); background: var(--er-bg); border-color: var(--er-bd); border-style: double; border-left-style: double; border-width: 4px 4px 4px 10px; }
.a-aviso { color: var(--av-fg); background: var(--av-bg); border-color: var(--av-bd); border-style: dashed; border-left-style: solid; }
.a-info { color: var(--in-fg); background: var(--in-bg); border-color: var(--in-bd); }
.a-ok { color: var(--ok-fg); background: var(--ok-bg); border-color: var(--ok-bd); }
.alerta ul { margin: 0.2rem 0 0; }
.aviso-fijo, .banda-contrato, .banda-aviso { margin: 0; padding: 0.55rem 0.9rem; border-radius: var(--radio); font-weight: 700; border: 2px solid; }
.aviso-valoracion, .aviso-inversion, .aviso-oportunidades { color: var(--in-fg); background: var(--in-bg); border-color: var(--in-bd); border-style: solid; }
.banda-contrato { color: var(--rv-fg); background: var(--rv-bg); border-color: var(--rv-bd); text-align: center; letter-spacing: 0.06em; font-size: 1.02rem; border-width: 3px; }
.banda-aviso { color: var(--av-fg); background: var(--av-bg); border-color: var(--av-bd); border-style: dashed; }

/* ───────── Tablas ───────── */
.tabla-wrap { overflow-x: auto; border: 1px solid var(--bord); border-radius: var(--radio); background: var(--surf); max-width: 100%; }
.tabla-wrap:focus-visible { outline-offset: 0; }
.tabla { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
.tabla th, .tabla td { text-align: left; padding: 0.5rem 0.7rem; border-bottom: 1px solid var(--bord); vertical-align: top; }
.tabla th { background: var(--surf2); font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--mut); white-space: nowrap; position: sticky; top: 0; }
.tabla tbody tr:last-child td { border-bottom: 0; }
.tabla tbody tr:hover td { background: color-mix(in srgb, var(--surf2) 55%, transparent); }
.tabla-num td:last-child, .tabla-num th:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.tabla-ancha { min-width: 62rem; }
.tabla td ul, .tabla td dl { margin: 0; }
.tabla td .kv { grid-template-columns: auto 1fr; gap: 0.1rem 0.5rem; font-size: 0.85rem; }
.tabla-edit { min-width: 54rem; }
.tabla-edit td { padding: 0.3rem 0.4rem; }
.tabla-edit input[type="text"], .tabla-edit input[type="date"], .tabla-edit select { min-height: 2.25rem; padding: 0.3rem 0.45rem; }
.tabla-edit-wrap.extra-oculto .extra { display: none; }
.btn-quitar { min-width: 2.25rem; }

/* ───────── Cifras ───────── */
.cifras { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 0.6rem; }
.cifra { border: 1px solid var(--bord); border-radius: var(--radio); padding: 0.6rem 0.8rem; background: var(--surf2); display: grid; gap: 0.1rem; align-content: start; }
.cifra-rot { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--mut); }
.cifra-val { font-size: 1.35rem; font-variant-numeric: tabular-nums; }
.cifra-nota { font-size: 0.8rem; color: var(--mut); }
.cifra-enf { border-color: var(--acc); border-width: 2px; background: var(--surf); }
.conclusion { margin: 0.25rem 0; }
.conclusion .insignia { font-size: 0.95rem; text-transform: none; padding: 0.35rem 0.8rem; }

/* ───────── Formularios ───────── */
label { font-weight: 600; font-size: 0.92rem; }
.campo { display: grid; gap: 0.25rem; align-content: start; min-width: 0; }
input[type="text"], input[type="search"], input[type="password"], input[type="date"], input[type="number"], input[type="email"], select, textarea, input:not([type]) { width: 100%; min-height: 2.6rem; padding: 0.45rem 0.65rem; border: 1.5px solid var(--bord-fuerte); border-radius: 6px; background: var(--surf); color: var(--txt); font: inherit; }
textarea { resize: vertical; line-height: 1.45; }
textarea.mono { font-family: var(--mono); font-size: 0.88rem; }
textarea.grande { font-size: 1.1rem; min-height: 6.5rem; padding: 0.75rem 0.85rem; }
input[readonly] { background: var(--surf2); color: var(--mut); }
input[type="file"] { max-width: 100%; font: inherit; padding: 0.4rem 0; }
input::placeholder, textarea::placeholder { color: var(--mut); opacity: 0.85; }
.casilla { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 500; min-height: 2.4rem; cursor: pointer; }
.casilla input { width: 1.2rem; height: 1.2rem; accent-color: var(--prim); }
.radios { border: 1.5px solid var(--bord); border-radius: var(--radio); padding: 0.5rem 0.8rem 0.75rem; display: grid; gap: 0.4rem; margin: 0; min-width: 0; }
.radios legend { font-weight: 700; padding: 0 0.3rem; font-size: 0.92rem; }
.radio { display: flex; gap: 0.6rem; align-items: flex-start; font-weight: 400; cursor: pointer; padding: 0.2rem 0; }
.radio input { margin-top: 0.3rem; width: 1.1rem; height: 1.1rem; accent-color: var(--prim); }
.radio span { display: grid; }
.radio small { color: var(--mut); }
.grupo { border: 1.5px solid var(--bord); border-radius: var(--radio); padding: 0.6rem 0.9rem 0.9rem; margin: 0 0 1rem; background: var(--surf); min-width: 0; display: grid; gap: 0.75rem; }
.grupo > legend { font-weight: 700; color: var(--prim); padding: 0 0.4rem; }
@media (prefers-color-scheme: dark) { .grupo > legend { color: var(--acc-txt); } }
.cifra-campo { border: 1.5px solid var(--bord); border-radius: var(--radio); padding: 0.4rem 0.7rem 0.7rem; margin: 0; min-width: 0; background: var(--surf); }
.cifra-campo legend { font-weight: 700; font-size: 0.92rem; padding: 0 0.3rem; }
.cifra-fila { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 0.5rem; }
.oblig { color: var(--er-bd); }
.chips-check { display: flex; flex-wrap: wrap; gap: 0.25rem 1.25rem; }
.fila-form { display: grid; grid-template-columns: minmax(12rem, 2fr) minmax(12rem, 1fr) auto; gap: 0.75rem; align-items: end; }
@media (max-width: 40rem) { .fila-form { grid-template-columns: 1fr; } }
.msg-json { font-size: 0.9rem; min-height: 1.3rem; font-weight: 600; }
.msg-json.ok { color: var(--ok-fg); }
.msg-json.mal { color: var(--er-fg); }
.ejemplos { display: grid; gap: 0.4rem; }
.chips-btn { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.chip-btn { border: 1.5px solid var(--bord-fuerte); background: var(--surf2); color: var(--txt); border-radius: 999px; padding: 0.35rem 0.85rem; font: inherit; font-size: 0.9rem; cursor: pointer; min-height: 2.2rem; text-align: left; }
.chip-btn:hover { border-color: var(--acc); background: var(--surf); }

/* ───────── Botones ───────── */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem; min-height: 2.6rem; padding: 0.5rem 1.1rem; border-radius: 6px; font: inherit; font-weight: 650; cursor: pointer; border: 2px solid transparent; text-decoration: none; line-height: 1.2; }
.btn:disabled { opacity: 0.55; cursor: not-allowed; }
.btn-prim { background: var(--prim); color: var(--on-prim); border-color: var(--prim); }
.btn-prim:hover:not(:disabled) { background: var(--prim-h); border-color: var(--prim-h); }
.btn-sec { background: var(--surf); color: var(--prim); border-color: var(--prim); }
.btn-sec:hover:not(:disabled) { background: var(--surf2); }
@media (prefers-color-scheme: dark) { .btn-sec { color: var(--txt); border-color: var(--bord-fuerte); } }
.btn-ter { background: transparent; color: var(--link); border-color: transparent; text-decoration: underline; text-underline-offset: 3px; }
.btn-peligro { background: #b42318; color: #fff; border-color: #b42318; }
.btn-peligro:hover:not(:disabled) { background: #8f1b12; }
.btn-peq { min-height: 2.1rem; padding: 0.25rem 0.7rem; font-size: 0.88rem; }
.btn-grande { min-height: 3rem; font-size: 1.05rem; padding: 0.6rem 1.6rem; }
.fila-botones { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.fila-botones.fin { justify-content: flex-end; }
.enlace-externo::after { content: " ↗"; font-size: 0.85em; }

/* ───────── Pestañas ───────── */
.pestanas { display: flex; flex-wrap: wrap; gap: 0.25rem; border-bottom: 2px solid var(--bord); margin-bottom: 1rem; }
.pestana { background: transparent; border: 0; border-bottom: 4px solid transparent; margin-bottom: -2px; padding: 0.6rem 1rem; font: inherit; font-weight: 600; color: var(--txt); cursor: pointer; min-height: 2.75rem; }
.pestana:hover { background: var(--surf2); }
.pestana[aria-selected="true"] { border-bottom-color: var(--acc); color: var(--prim); }
@media (prefers-color-scheme: dark) { .pestana[aria-selected="true"] { color: var(--acc-txt); } }
.panel-pestana { display: grid; gap: 1rem; outline-offset: 4px; }

/* ───────── Resultado de NEXO ───────── */
.resultado { display: grid; gap: 0.9rem; }
.titular { background: var(--surf); border: 1px solid var(--bord); border-left: 8px solid var(--prim); border-radius: var(--radio); padding: 1rem 1.2rem; box-shadow: var(--sombra); display: grid; gap: 0.5rem; }
.titular-texto { font-size: 1.3rem; margin: 0; outline: none; overflow-wrap: anywhere; }
.meta { display: grid; grid-template-columns: max-content 1fr; gap: 0.15rem 1rem; margin: 0.25rem 0 0; font-size: 0.9rem; }
.meta dt { color: var(--mut); font-weight: 600; }
.meta dd { margin: 0; }
.entregables { display: grid; gap: 0.7rem; }
.entregable { border: 1px solid var(--bord); border-radius: var(--radio); padding: 0.8rem 1rem; background: var(--surf); display: grid; gap: 0.5rem; min-width: 0; }
.entregable.desactualizado { border-style: dashed; border-color: var(--av-bd); border-width: 2px; }
.entregable-cab { display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; align-items: center; }
.entregable-cab h4 { margin: 0; font-size: 1.05rem; }
.proximo-paso { border: 2px solid var(--acc); border-radius: var(--radio); padding: 0.8rem 1.1rem; background: var(--surf); position: relative; }
.proximo-paso h3 { margin: 0 0 0.25rem; color: var(--acc-txt); text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.9rem; }
.proximo-paso p { margin: 0; font-weight: 600; font-size: 1.05rem; }
.pasos { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.2rem; }
.paso { display: flex; gap: 0.4rem; align-items: baseline; }
.paso-hecho .ico { color: var(--ok-fg); }
.paso-error .ico { color: var(--er-fg); }
.paso-omitido .ico { color: var(--av-fg); }
.texto-largo { white-space: pre-wrap; overflow-wrap: anywhere; background: var(--surf2); border: 1px solid var(--bord); border-radius: 6px; padding: 0.7rem 0.85rem; font: 0.9rem/1.5 var(--fuente); margin: 0; max-height: 34rem; overflow: auto; }
pre.mono, .texto-largo.mono { font-family: var(--mono); font-size: 0.84rem; }
.borrador { margin: 0; padding: 0.6rem 0.9rem; border-left: 6px dashed var(--av-bd); background: var(--surf2); border-radius: 6px; }
.clausulas { display: grid; gap: 0.5rem; }
.clausula { border: 1px solid var(--bord); border-radius: var(--radio); padding: 0.6rem 0.9rem; background: var(--surf); }
.clausula.origen-pendiente_decision { border-style: dashed; border-color: var(--av-bd); border-width: 2px; }
.clausula h5 { margin-bottom: 0.2rem; }

/* ───────── Procesando (sin porcentajes) ───────── */
.procesando { display: flex; align-items: center; gap: 0.7rem; padding: 0.8rem 1rem; border: 1.5px solid var(--bord); border-radius: var(--radio); background: var(--surf); font-weight: 600; }
.spinner { width: 1.2rem; height: 1.2rem; border-radius: 50%; border: 3px solid var(--bord); border-top-color: var(--acc); animation: giro 0.9s linear infinite; flex: none; }
@keyframes giro { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spinner { animation: none; border-top-color: var(--acc); border-right-color: var(--acc); } .det > summary::before { transition: none; } }
.salida:empty { display: none; }
.adjuntos { display: grid; gap: 0.5rem; margin-top: 0.4rem; }

/* ───────── Diálogos y avisos emergentes ───────── */
.dialogo { border: 2px solid var(--bord-fuerte); border-radius: 12px; padding: 0; width: min(34rem, calc(100vw - 2rem)); background: var(--surf); color: var(--txt); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35); }
.dialogo::backdrop { background: rgba(8, 18, 28, 0.6); }
.dialogo-cuerpo { padding: 1.2rem 1.3rem; display: grid; gap: 0.8rem; }
.dialogo-cuerpo h2 { margin: 0; }
.dialogo-msg > :last-child { margin-bottom: 0; }
.toasts { position: fixed; right: 1rem; bottom: 1rem; display: grid; gap: 0.5rem; z-index: 80; max-width: min(26rem, calc(100vw - 2rem)); }
.toast { display: flex; gap: 0.6rem; align-items: baseline; padding: 0.65rem 0.9rem; border-radius: var(--radio); border: 2px solid; background: var(--surf); box-shadow: var(--sombra); font-weight: 600; }
.toast-ok { border-color: var(--ok-bd); color: var(--ok-fg); background: var(--ok-bg); }
.toast-error { border-color: var(--er-bd); color: var(--er-fg); background: var(--er-bg); }
.toast-info { border-color: var(--in-bd); color: var(--in-fg); background: var(--in-bg); }

/* ───────── Responsive ───────── */
@media (max-width: 62rem) {
  .shell { grid-template-columns: 1fr; }
  .menu-btn { display: inline-flex; align-items: center; }
  .nav { display: none; position: static; max-height: none; padding: 0.75rem 1rem; background: var(--surf); border-bottom: 1px solid var(--bord); }
  .nav.abierto { display: block; }
  .cabecera { position: static; }
  .principal { padding: 1rem 1rem 3rem; }
}
@media (max-width: 30rem) {
  h1 { font-size: 1.4rem; }
  .titular-texto { font-size: 1.15rem; }
  .meta { grid-template-columns: 1fr; }
  .meta dd { margin-bottom: 0.35rem; }
  .btn-grande { width: 100%; }
  .marca-sub { display: none; }
}
@media (forced-colors: active) {
  .insignia, .etiqueta, .alerta { border-color: CanvasText; }
}

/* ───────── Anti-desbordamiento: las rejillas apiladas nunca crecen más que su contenedor ───────── */
.vista, .tarjeta, .resultado, .detalle, .entregables, .entregable, .det-cuerpo, .panel-pestana, .pila, .titular, .clausulas, .adjuntos, .ejemplos, .grupo, .mini-tarjeta, .alerta, .dialogo-cuerpo, .form-panel { grid-template-columns: minmax(0, 1fr); }
.pestanas-wrap, .editor-filas, .tabla-wrap, .det, .bloque, .alerta-cuerpo, .campo, .campo-wrap { min-width: 0; }
.editor-filas { display: grid; gap: 0.5rem; grid-template-columns: minmax(0, 1fr); }
.principal { overflow-x: clip; }

/* ───────── Identidad del logo (LISTO cian · NEXO cian→violeta · FÁCIL violeta) ───────── */
.marca-logo { width: 2.5rem; height: 2.5rem; object-fit: cover; border-radius: 10px; border: 0; padding: 0; background: #05060d; display: block; image-rendering: auto; }
.chip-agente { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.12rem 0.65rem; border-radius: 999px; font-size: 0.8rem; font-weight: 800; letter-spacing: 0.06em; border: 2px solid; line-height: 1.35; white-space: nowrap; }
.ag-punto { width: 0.55rem; height: 0.55rem; border-radius: 50%; background: currentColor; flex: none; }
.ag-listo { color: #0a5260; background: #dff6fa; border-color: #1fa7bd; }
.ag-facil { color: #5a1fa0; background: #f1e8ff; border-color: #9a4be0; }
.ag-nexo { color: #1d2b5e; border-color: transparent; background: linear-gradient(90deg, #dff6fa, #f1e8ff) padding-box, linear-gradient(90deg, #1fa7bd, #9a4be0) border-box; }
.bienvenida { display: flex; gap: 1.5rem; align-items: center; background: var(--surf); border: 1px solid var(--bord); border-radius: var(--radio); padding: 1rem 1.25rem; box-shadow: var(--sombra); }
.bienvenida-logo { width: 11rem; height: 11rem; border-radius: 18px; object-fit: cover; flex: none; background: #05060d; }
.bienvenida-texto h2 { margin-bottom: 0.25rem; }
.roles { list-style: none; margin: 0.5rem 0 0; padding: 0; display: grid; gap: 0.5rem; }
.roles li { display: flex; gap: 0.6rem; align-items: baseline; flex-wrap: wrap; }
.roles .chip-agente { min-width: 5.5rem; justify-content: center; }
.roles li > span:last-child { flex: 1 1 14rem; }
@media (max-width: 40rem) { .bienvenida { flex-direction: column; align-items: flex-start; } .bienvenida-logo { width: 6.5rem; height: 6.5rem; } }
@media (prefers-color-scheme: dark) {
  .ag-listo { color: #7fe9f8; background: #062a33; border-color: #35d6ee; box-shadow: 0 0 8px rgba(53, 214, 238, 0.35); }
  .ag-facil { color: #dcb8ff; background: #2a1245; border-color: #b66cff; box-shadow: 0 0 8px rgba(182, 108, 255, 0.35); }
  .ag-nexo { color: #ffffff; background: linear-gradient(90deg, #07303a, #2a1245) padding-box, linear-gradient(90deg, #35d6ee, #b66cff) border-box; box-shadow: 0 0 10px rgba(120, 160, 255, 0.35); }
  .bienvenida { border-color: #2c5a73; box-shadow: 0 0 0 1px rgba(53, 214, 238, 0.18), 0 6px 28px rgba(182, 108, 255, 0.14); }
  .marca-logo { box-shadow: 0 0 10px rgba(53, 214, 238, 0.4); }
  .cabecera { border-bottom-color: #35d6ee; }
}

/* ───────── Acceso (login) y usuario en cabecera ───────── */
.login { min-height: 100vh; display: grid; place-items: center; padding: 1.5rem 1rem; background: var(--bg); }
.login-caja { width: min(26rem, 100%); background: var(--surf); border: 1px solid var(--bord); border-top: 4px solid var(--acc); border-radius: 12px; padding: 1.5rem 1.4rem; box-shadow: var(--sombra); display: grid; gap: 0.9rem; justify-items: center; text-align: center; grid-template-columns: minmax(0, 1fr); }
.login-logo { width: 11rem; height: 11rem; border-radius: 22px; background: #05060d; object-fit: cover; max-width: 60%; height: auto; aspect-ratio: 1; }
.login-caja h1 { font-size: 1.3rem; margin: 0; }
.login-form { display: grid; gap: 0.8rem; width: 100%; text-align: left; grid-template-columns: minmax(0, 1fr); }
.login-form .btn { width: 100%; }
.login-msg { min-height: 1px; }
.login-caja .alerta { text-align: left; width: 100%; }
@media (prefers-color-scheme: dark) { .login-caja { box-shadow: 0 0 0 1px rgba(53, 214, 238, 0.18), 0 8px 34px rgba(182, 108, 255, 0.16); } .login-logo { box-shadow: 0 0 16px rgba(53, 214, 238, 0.35); } }
.cab-derecha { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; justify-content: flex-end; }
.cab-usuario { display: flex; align-items: center; gap: 0.6rem; font-size: 0.9rem; }
.btn-cab { background: transparent; color: #fff; border: 2px solid rgba(255, 255, 255, 0.75); }
.btn-cab:hover:not(:disabled) { background: rgba(255, 255, 255, 0.15); }
.solo-admin { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 0.1rem; }
.solo-admin small { font-size: 0.75rem; }

/* ───────── Asistente (chat) ───────── */
.chat { display: grid; grid-template-columns: 17rem minmax(0, 1fr); gap: 1rem; align-items: start; }
@media (max-width: 62rem) { .chat { grid-template-columns: minmax(0, 1fr); } }
.chat-main { display: grid; gap: 0.8rem; grid-template-columns: minmax(0, 1fr); min-width: 0; }
.conv-lista { list-style: none; margin: 0.4rem 0 0; padding: 0; display: grid; gap: 0.3rem; }
.conv-item { display: flex; gap: 0.3rem; align-items: stretch; border: 1px solid var(--bord); border-radius: 8px; background: var(--surf); }
.conv-abrir { flex: 1; text-align: left; background: transparent; border: 0; padding: 0.45rem 0.6rem; font: inherit; color: var(--txt); cursor: pointer; display: grid; min-width: 0; border-left: 4px solid transparent; border-radius: 8px 0 0 8px; }
.conv-abrir strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.9rem; }
.conv-abrir small { color: var(--mut); }
.conv-abrir[aria-current="true"] { border-left-color: var(--acc); background: var(--surf2); }
.conv-item .btn, .conv-item .solo-admin { align-self: center; margin-right: 0.3rem; }
.hilo { display: grid; gap: 0.8rem; max-height: 62vh; overflow-y: auto; padding: 0.3rem; min-height: 8rem; grid-template-columns: minmax(0, 1fr); align-content: start; }
.msg { border: 1px solid var(--bord); border-radius: 12px; padding: 0.65rem 0.9rem; display: grid; gap: 0.5rem; background: var(--surf); min-width: 0; grid-template-columns: minmax(0, 1fr); }
.msg-user { background: var(--surf2); margin-left: 12%; border-color: var(--bord-fuerte); }
.msg-asis { margin-right: 4%; border-left: 6px solid var(--acc); }
@media (max-width: 40rem) { .msg-user { margin-left: 0; } .msg-asis { margin-right: 0; } }
.msg-cab { display: flex; gap: 0.6rem; align-items: center; }
.msg-texto { white-space: pre-wrap; overflow-wrap: anywhere; }
.msg-extra { display: grid; gap: 0.6rem; grid-template-columns: minmax(0, 1fr); }
.asis-alertas { display: grid; gap: 0.4rem; }
.alerta-ia { border: 2px solid; border-left-width: 8px; border-radius: 8px; padding: 0.5rem 0.75rem; display: grid; gap: 0.2rem; }
.ia-alta { color: var(--er-fg); background: var(--er-bg); border-color: var(--er-bd); }
.ia-media { color: var(--av-fg); background: var(--av-bg); border-color: var(--av-bd); border-style: dashed; border-left-style: solid; }
.etiq-regla { font-size: 0.72rem; letter-spacing: 0.04em; opacity: 0.9; }
.asis-contraste, .asis-uso { margin: 0; }
.chip-fallo { border-style: dashed; text-decoration: line-through wavy transparent; }
.asis-chips { gap: 0.35rem; }
.ejec { border: 1px solid var(--bord); border-radius: var(--radio); padding: 0.7rem 0.9rem; background: var(--surf2); display: grid; gap: 0.5rem; grid-template-columns: minmax(0, 1fr); }
.ejec-titular { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.ejec-ents { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; }
.compositor { display: grid; gap: 0.7rem; background: var(--surf); border: 1px solid var(--bord); border-radius: var(--radio); padding: 0.8rem 1rem; grid-template-columns: minmax(0, 1fr); }
.aviso-privacidad { font-size: 0.85rem; font-weight: 500; color: var(--in-fg); background: var(--in-bg); border-color: var(--in-bd); }
.asis-espera:empty { display: none; }

/* ───────── Importar por enlace ───────── */
.imp-cuerpo { gap: 0.8rem; }
.imp-panel > summary .ayuda { font-weight: 400; }
.imp-form { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 0.75rem 1.25rem; align-items: start; }
.imp-form .fila-botones { grid-column: 1 / -1; }
.imp-seccion { display: grid; gap: 0.75rem; min-width: 0; }
.imp-titulo { margin: 0; font-size: 1.1rem; }
.imp-titulo:focus { outline: none; }
.imp-titulo:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
.imp-fichas { display: grid; gap: 0.9rem; min-width: 0; }
.imp-ficha { border: 1px solid var(--bord); border-radius: var(--radio); background: var(--surf2); padding: 0.8rem 0.95rem; display: grid; gap: 0.6rem; min-width: 0; }
.imp-ficha-cab { display: grid; gap: 0.3rem; }
.imp-ficha-cab h5 { margin: 0; font-size: 1rem; overflow-wrap: anywhere; }
.imp-datos { margin: 0; }
.imp-nota { border-left: 4px solid var(--bord-fuerte); padding-left: 0.7rem; }
.imp-barra { display: flex; flex-wrap: wrap; gap: 0.6rem 1rem; align-items: center; }
.imp-valor, .imp-url { overflow-wrap: anywhere; word-break: break-word; }
.tabla-imp { min-width: 0; }
.tabla-imp th { white-space: normal; }
.tabla-imp td:first-child { min-width: 6.5rem; }
@media (max-width: 40rem) { .imp-form { grid-template-columns: minmax(0, 1fr); } }
.imp-ref { font-weight: 400; font-size: 0.85rem; color: var(--mut); }
.imp-celda { display: grid; gap: 0.25rem; justify-items: start; min-width: 0; }
