/* ============================================================================
   Referencia de la API — /config/llaves-api-docs
   Diseño: docs/diseño.md §290. Tokens del sistema (§286): naranja #f69321 con
   letra SIEMPRE blanca, tinta #1f2227, texto secundario #4e535c, borde
   #e7e7ea, fondo sutil #fcfcfd, radio 8-10, botón 38px.

   Layout de tres columnas, como las referencias de API que la gente ya conoce:
   árbol a la izquierda, la operación al centro, el código a la derecha. A
   ancho de teléfono las tres se apilan: la columna de código va al final
   porque es lo último que se lee en una pantalla angosta.
   ========================================================================= */

.wiz-sr {
    position: absolute; width: 1px; height: 1px;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

/* Tipografía propia: la referencia no hereda la fuente del ERP — el lector
   compara con Stripe/Alegra, no con el grid de ventas. Sistema moderna, sin
   webfont que cargar. */
.wiz-apidoc, .wiz-apidoc input, .wiz-apidoc select, .wiz-apidoc button,
.wiz-apidoc-modal .modal-title, .wiz-apidoc-hq input {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, Helvetica, Arial, sans-serif;
}
.wiz-apidoc {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0;
    border: 1px solid #e7e7ea;
    border-radius: 10px;
    background: #fff;
    /* `clip` y NO `hidden`: un overflow hidden convierte a este contenedor
       en el ancestro de scroll de los sticky de adentro (la nav y el panel
       de código) y los deja INERTES — la barra lateral se iba con el
       contenido y quedaba en blanco en página Y modal. Refutado con harness
       el 10-oct-2026: con hidden la nav pasó de 35 a -1465 px al scrollear;
       sin contexto de scroll aquí, pega. `clip` recorta el border-radius
       igual pero no crea contexto de scroll; donde no exista (Safari viejo)
       cae a visible y solo se pierde el recorte de las esquinas. */
    overflow: clip;
}

/* ── Barra lateral ───────────────────────────────────────────────────────── */

.wiz-apidoc-nav {
    flex: 0 0 258px;
    min-width: 0;
    box-sizing: border-box;
    padding: 14px 0 28px;
    background: #fcfcfd;
    /* El borde vertical vive en el cuerpo y no aqui: esta nav es sticky con
       max-height, asi que su borde terminaba a media pagina y dejaba el riel
       cortado. El del cuerpo corre la altura completa. */
    /* Se queda a la vista mientras se recorre la referencia, que es larga.
       `max-height` y no `100vh`: dentro del ERP hay una barra arriba. */
    position: sticky;
    top: 0;
    max-height: calc(100vh - 60px);
    overflow-y: auto;
}

.wiz-apidoc-buscar { position: relative; padding: 0 14px 12px; }
.wiz-apidoc-buscar svg { position: absolute; left: 24px; top: 10px; color: #4e535c; }
.wiz-apidoc-buscar input {
    width: 100%; box-sizing: border-box; height: 35px;
    padding: 0 10px 0 32px;
    border: 1px solid #c9ced8; border-radius: 9px;
    font-size: 13px; color: #1f2227; background: #fff;
}
.wiz-apidoc-buscar input:focus { outline: 2px solid #f69321; outline-offset: 1px; border-color: #f69321; }

.wiz-apidoc-grupo-nav {
    padding: 15px 16px 5px;
    font-size: 11px; font-weight: 700; letter-spacing: .05em;
    text-transform: uppercase; color: #4e535c;
}

.wiz-apidoc-link {
    display: flex; gap: 10px; align-items: center;
    padding: 6px 14px; font-size: 13px;
    color: #4e535c; text-decoration: none;
}
/* ⚠️ SIN ESTO EL BUSCADOR NO ESCONDE NADA. El JS filtra con el atributo
   `hidden`, pero el `display:flex` de arriba tiene la misma especificidad que
   el `[hidden]{display:none}` de Bootstrap y esta hoja carga despues, asi que
   ganaba el flex: al teclear desaparecian los titulos de grupo y TODOS los
   enlaces se quedaban. Lo encontro una revision mirando el render, 9-oct. */
.wiz-apidoc-link[hidden],
.wiz-apidoc-grupo-nav[hidden] { display: none; }
.wiz-apidoc-link:hover,
.wiz-apidoc-link:focus { color: #1f2227; background: #f5f5f7; text-decoration: none; }
.wiz-apidoc-link.es-actual {
    color: #1f2227; font-weight: 600;
    background: #fff5e6;
    border-left: 3px solid #f69321;
    padding-left: 11px;
}
.wiz-apidoc-link-t { flex: 999 1 auto; min-width: 0; }
.wiz-apidoc-verbo  {
    flex: 0 0 auto; font-size: 9.5px; font-weight: 700; letter-spacing: .02em;
    color: #fff; border-radius: 4px; padding: 2px 6px;
}

.wiz-apidoc-vacio { margin: 10px 16px; font-size: 12.5px; line-height: 1.6; color: #4e535c; }

/* ── Centro ──────────────────────────────────────────────────────────────── */

.wiz-apidoc-cuerpo { flex: 999 1 540px; min-width: 0; border-left: 1px solid #e7e7ea; }
.wiz-apidoc-main   { padding: 26px 28px 48px; }

.wiz-apidoc-sec { padding-bottom: 26px; margin-bottom: 26px; border-bottom: 1px solid #eeeef1; }
.wiz-apidoc-sec:last-of-type { border-bottom: 0; }

.wiz-apidoc-main h1 { margin: 0 0 12px; font-size: 26px; font-weight: 700; color: #1f2227; }
.wiz-apidoc-main h2 { margin: 0 0 12px; font-size: 20px; font-weight: 700; color: #1f2227; }
.wiz-apidoc-h3 {
    margin: 24px 0 8px; font-size: 13px; font-weight: 700;
    text-transform: uppercase; letter-spacing: .05em; color: #4e535c;
}
.wiz-apidoc-p { margin: 0 0 12px; font-size: 14px; line-height: 1.65; color: #4e535c; max-width: 64ch; }
.wiz-apidoc-migas { font-size: 12.5px; color: #4e535c; margin-bottom: 8px; }

.wiz-apidoc-base {
    display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
    padding: 10px 13px; border: 1px solid #e7e7ea; border-radius: 9px; background: #fcfcfd;
}
.wiz-apidoc-base span { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #4e535c; }
.wiz-apidoc-base code { font-size: 13px; color: #1f2227; word-break: break-all; }

.wiz-apidoc-ruta {
    display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
    padding: 9px 12px; margin-bottom: 16px;
    border: 1px solid #e7e7ea; border-radius: 9px; background: #fcfcfd;
}
.wiz-apidoc-pill { font-size: 11px; font-weight: 700; letter-spacing: .04em; color: #fff; border-radius: 6px; padding: 4px 10px; }
.wiz-apidoc-ruta {
    display: flex; align-items: center; gap: 10px;
    border: 1px solid #e7e7ea; border-radius: 10px; background: #fafafb;
    padding: 9px 13px; margin: 12px 0 14px;
}
.wiz-apidoc-ruta code { font-size: 13.5px; word-break: break-all; background: none; padding: 0; }
.wiz-apidoc-base-gris { color: #4e535c; }
.wiz-apidoc-ruta code strong { color: #1f2227; }

.wiz-apidoc-tabla { width: 100%; border-collapse: collapse; margin: 0 0 6px; }
.wiz-apidoc-tabla th {
    text-align: left; padding: 8px 10px 8px 0;
    font-size: 11px; font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; color: #4e535c;
    border-bottom: 1px solid #e7e7ea;
}
.wiz-apidoc-tabla td {
    padding: 9px 10px 9px 0; font-size: 13px; color: #4e535c;
    border-bottom: 1px solid #f3f3f5; vertical-align: top;
}

/* ── Parámetros ──────────────────────────────────────────────────────────── */

.wiz-apidoc-params { border-top: 1px solid #e7e7ea; }
.wiz-apidoc-param  {
    padding: 12px 0; border-bottom: 1px solid #eeeef1;
    display: flex; gap: 16px; align-items: flex-start;
}
.wiz-apidoc-param-info { flex: 1 1 auto; min-width: 0; }
/* El campo de prueba junto al parametro, patron de Alegra: llenas donde lees. */
.wiz-apidoc-param-control {
    flex: 0 0 170px; box-sizing: border-box; width: 170px;
    border: 1px solid #dcdde1; border-radius: 7px; padding: 7px 10px;
    font-size: 12px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    color: #1f2227; background: #fff;
}
.wiz-apidoc-param-control:focus { outline: 2px solid #f69321; outline-offset: -1px; border-color: #f69321; }
.wiz-apidoc-oblig {
    font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
    color: #8a4600; background: #fff5e6; border-radius: 4px; padding: 2px 6px;
}
.wiz-apidoc-titulo-fila { display: flex; align-items: center; gap: 12px; }
.wiz-apidoc-titulo-fila h2 { flex: 1 1 auto; min-width: 0; }
.wiz-apidoc-copypage {
    flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px;
    border: 1px solid #dcdde1; background: #fff; border-radius: 8px;
    padding: 6px 12px; font-size: 12.5px; color: #4e535c; cursor: pointer;
    position: static; opacity: 1;
}
.wiz-apidoc-copypage:hover { color: #1f2227; border-color: #b9bdc4; }
.wiz-apidoc-copiaurl { position: static; opacity: 1; margin-left: auto; }
.wiz-apidoc-param-cab { display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
.wiz-apidoc-param-cab code { font-size: 13.5px; font-weight: 600; color: #1f2227; }
.wiz-apidoc-param-cab span { font-size: 12px; color: #4e535c; }
.wiz-apidoc-param p { margin: 4px 0 0; font-size: 13px; line-height: 1.55; color: #4e535c; }
.wiz-apidoc-param-nota { font-size: 12px; }
.wiz-apidoc-param-nota code {
    font-size: 11.5px; color: #1f2227; background: #f5f5f7;
    border: 1px solid #e7e7ea; border-radius: 5px; padding: 1px 5px;
}

.wiz-apidoc-resp { border-top: 1px solid #e7e7ea; }
.wiz-apidoc-resp-fila {
    display: flex; gap: 12px; align-items: baseline;
    padding: 9px 0; border-bottom: 1px solid #eeeef1; font-size: 13px; color: #4e535c;
}
.wiz-apidoc-resp-fila span:first-child { flex: 0 0 42px; font-weight: 700; }

/* ── Columna de código ───────────────────────────────────────────────────── */

.wiz-apidoc-op-cols { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; }
.wiz-apidoc-op-centro { flex: 999 1 420px; min-width: 0; }
.wiz-apidoc-codigo    {
    flex: 1 1 460px; min-width: 0; max-width: 560px;
    /* Pegajoso, como las referencias que la gente conoce: en una operacion
       larga el ejemplo acompaña al scroll en vez de quedarse arriba. El
       `align-self` es obligatorio: un hijo de flex estirado no tiene donde
       pegarse. */
    position: sticky; top: 16px; align-self: flex-start;
}

.wiz-apidoc-codigo-cab {
    font-size: 11px; font-weight: 700; letter-spacing: .05em;
    text-transform: uppercase; color: #4e535c; margin: 0 0 8px;
}
.wiz-apidoc-codigo-cab span { color: #14603b; }
.wiz-apidoc-codigo-cab + .wiz-apidoc-pre { margin-bottom: 18px; }

.wiz-apidoc-pre { position: relative; }
.wiz-apidoc-pre pre {
    margin: 0; padding: 14px 44px 14px 14px;
    border: 0; border-radius: 10px;
    background: #1f2227; color: #e8e8ea;
    font-size: 11.5px; line-height: 1.7;
    overflow-x: auto; white-space: pre;
}

/* Chiquito y sólo ícono, como pidió el diseño. 30px es menor que el mínimo de
   44 que usamos en controles principales: es deliberado — es una comodidad
   secundaria sobre un bloque de código, y a 44 tapa el texto que copia. */
/* Base NEUTRA y en flujo. La versión anterior era absoluta (flotaba sobre el
   panel oscuro viejo); al quitar ese panel, cualquier botón sin override se
   iba a la esquina de la página. Cada contexto pone su propio estilo. */
.wiz-apidoc-copiar {
    position: static; display: inline-flex; align-items: center; justify-content: center;
    gap: 6px; padding: 4px; border: 0; border-radius: 7px;
    background: transparent; color: #9aa0a8; cursor: pointer;
}
.wiz-apidoc-copiar:hover { color: #1f2227; }
.wiz-apidoc-copiar:focus { outline: 2px solid #f69321; outline-offset: 1px; }
.wiz-apidoc-copiar.es-copiado { border-color: #1f7a4d; color: #6ee7a8; }

.wiz-apidoc-aviso {
    padding: 16px 18px; border: 1px solid #f3d9a8; border-radius: 10px;
    background: #fff8ec; color: #8a4600; font-size: 13.5px; line-height: 1.65;
}
.wiz-apidoc-aviso code {
    background: #fff; border: 1px solid #f3d9a8; border-radius: 5px;
    padding: 1px 5px; font-size: 12.5px; color: #8a4600;
}

.wiz-apidoc-pie { margin: 8px 0 0; font-size: 12px; color: #4e535c; }

/* ── Teléfono ────────────────────────────────────────────────────────────── */

@media (max-width: 860px) {
    .wiz-apidoc-nav {
        flex: 1 1 100%;
        position: static;
        max-height: none;
        border-right: 0;
        border-bottom: 1px solid #e7e7ea;
    }
    .wiz-apidoc-main { padding: 20px 16px 36px; }
    /* Apiladas las columnas, el borde vertical del cuerpo seria una raya
       suelta en el margen y el panel pegajoso taparia la operacion. */
    .wiz-apidoc-cuerpo { border-left: 0; }
    .wiz-apidoc-codigo { position: static; }
    /* El código al final: en una pantalla angosta lo último que se lee. */
    .wiz-apidoc-op-cols { flex-direction: column; }
    /* ⚠️ SIN ESTO LA PÁGINA SCROLLEA HORIZONTAL EN EL TELÉFONO: en columna,
       el pre ancho del snippet estiraba a su aside y arrastraba toda la
       sección más allá del viewport (pills y panel cortados al borde,
       medido a 390 el 10-oct). Acotar los hijos obliga al overflow-x del
       pre a scrollear DENTRO de su caja, que es su trabajo. */
    .wiz-apidoc-op-cols > * { min-width: 0; width: 100%; max-width: 100%; box-sizing: border-box; }
    .wiz-apidoc-codigo { max-width: 100%; }
    .wiz-apidoc-req-pre, .wiz-apidoc-res-pre { max-width: 100%; }
    /* Cuatro tiles parejos, no 3+1. */
    .wiz-apidoc-langs { gap: 8px; }
    .wiz-apidoc-lang { flex: 1 1 0; min-width: 0; }
    /* La nav colapsada por omisión: dos pantallas de índice antes del
       contenido no es una portada. El botón la abre; tocar un enlace la
       cierra (apiDocs.js). */
    .wiz-apidoc-nav { display: none; }
    .wiz-apidoc-nav.es-abierta { display: block; }
    /* 0,2,0: la base display:none quedó DESPUÉS en el archivo y con
       0,1,0 ganaba por orden — el botón no aparecía nunca. */
    .wiz-apidoc .wiz-apidoc-nav-toggle { display: flex; }
}

/* El botón del índice: solo existe visualmente en angosto (arriba lo
   enciende el media); en escritorio ni se pinta. */
.wiz-apidoc-nav-toggle {
    display: none; align-items: center; gap: 8px; width: 100%;
    margin: 0 0 10px; padding: 11px 14px;
    border: 1px solid #e7e7ea; border-radius: 10px; background: #fff;
    font-size: 13.5px; font-weight: 600; color: #1f2227; cursor: pointer;
}
.wiz-apidoc-nav-toggle svg { color: #8a8f97; }
.wiz-apidoc-nav-toggle[aria-expanded="true"] svg { transform: rotate(90deg); }


/* ── Estado y salida del Probar (los usa la fila viva) ─────────────────── */
.wiz-apidoc-probar-estado { font-size: 12.5px; color: #4e535c; }
.wiz-apidoc-probar-estado.es-bien { color: #14603b; font-weight: 600; }
.wiz-apidoc-probar-estado.es-mal  { color: #b42318; font-weight: 600; }
.wiz-apidoc-probar-salida {
    margin: 0 14px 14px; padding: 12px;
    max-height: 320px; overflow: auto;
    border-radius: 9px; border: 0;
    background: #1f2227; color: #e8e8ea;
    font-size: 11.5px; line-height: 1.65; white-space: pre;
}

/* ── La referencia dentro de un modal ────────────────────────────────────────
   Casi a pantalla completa a propósito: una referencia de API en un modal
   chico no se puede leer, y quien lo abre está a medio generar una llave y no
   quiere perder el contexto de la pantalla de atrás. */

.wiz-apidoc-modal .modal-dialog {
    /* 97vw y no un tope de px: en una pantalla ancha el 1320 dejaba el
       contenido apachurrado con medio monitor vacío alrededor (feedback con
       captura, 10-oct). Bootstrap 3 fija width en sus media queries, por eso
       el width va explícito aquí. */
    width: 97vw;
    max-width: 1880px;
    margin: 1.5vh auto;
}
.wiz-apidoc-modal .modal-content { border-radius: 12px; overflow: hidden; }
.wiz-apidoc-modal .modal-header {
    display: flex; align-items: center; gap: 14px;
    border-bottom: 1px solid #e7e7ea; background: #fcfcfd;
}
.wiz-apidoc-modal .modal-title { flex: 999 1 auto; min-width: 0; font-size: 17px; font-weight: 700; color: #1f2227; }
.wiz-apidoc-modal .close { order: 3; margin: 0; }
.wiz-apidoc-modal-abrir { order: 2; flex: 0 0 auto; font-size: 12.5px; color: #4e535c; }

/* El cuerpo scrollea solo; la barra lateral de la referencia se queda pegada
   dentro de él gracias al `position: sticky` que ya tiene. */
.wiz-apidoc-modal .modal-body {
    padding: 0;
    max-height: calc(100vh - 150px);
    overflow-y: auto;
}
/* Dentro del modal la referencia no lleva su propio marco: el marco es el modal. */
.wiz-apidoc-modal .wiz-apidoc { border: 0; border-radius: 0; }
/* ⚠️ NO poner max-height:none aquí. Con la nav estirada a la altura del
   contenido el sticky no tiene a dónde pegarse: al scrollear, la parte vacía
   de su caja quedaba a la vista y la barra lateral se veía EN BLANCO (bug
   reportado con captura el 2026-10-10). Con tope, el sticky pega dentro del
   modal-body igual que en la página. */
.wiz-apidoc-modal .wiz-apidoc-nav { max-height: calc(96vh - 120px); }

.wiz-apidoc-modal-cargando { margin: 0; padding: 40px; text-align: center; font-size: 14px; color: #4e535c; }

@media (max-width: 1400px) {
    .wiz-apidoc-modal .modal-dialog { margin: 16px; max-width: none; }
}

/* ── Neutralización del CSS global, SOLO dentro de la referencia ─────────────
   La página vive dentro del ERP y Bootstrap 3 pinta cada `code` de rosa
   (#c7254e sobre #f9f2f4) y cada `pre` como caja gris con borde y
   `word-break: break-all`. Visto en render real el 2026-10-09: la referencia
   entera llena de chips rosas, nada que ver con el diseño. Todo se anula con
   el prefijo `.wiz-apidoc` para no tocar ninguna otra pantalla. */

.wiz-apidoc code {
    color: #1f2227;
    background: #f5f5f7;
    border: 1px solid #e7e7ea;
    border-radius: 5px;
    padding: 1px 6px;
    font-size: 12.5px;
}

/* Dentro de los paneles oscuros, el código es el panel: sin chip. */
.wiz-apidoc pre code,
.wiz-apidoc pre {
    color: inherit;
    background: transparent;
    border: 0;
    padding: 0;
    font-size: inherit;
    word-break: normal;
    word-wrap: normal;
}
.wiz-apidoc .wiz-apidoc-pre pre,
.wiz-apidoc .wiz-apidoc-probar-salida {
    background: #1f2227;
    color: #e8e8ea;
    white-space: pre;
}
.wiz-apidoc .wiz-apidoc-pre pre { padding: 14px 44px 14px 14px; font-size: 11.5px; }
.wiz-apidoc .wiz-apidoc-probar-salida { padding: 12px; font-size: 11.5px; }

/* La barra método + URL: la base en gris, la ruta en tinta, sin chip. */
.wiz-apidoc .wiz-apidoc-ruta code,
.wiz-apidoc .wiz-apidoc-base code {
    background: transparent;
    border: 0;
    padding: 0;
    font-size: 13px;
    color: #4e535c;
}
.wiz-apidoc .wiz-apidoc-ruta code strong { color: #1f2227; font-weight: 700; }
.wiz-apidoc .wiz-apidoc-base code { color: #1f2227; }

/* La pastilla del método: tipografía de pastilla, el color y el fondo vienen
   en línea porque dependen del método. */
.wiz-apidoc .wiz-apidoc-pill {
    padding: 3px 9px;
    border-radius: 6px;
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .03em;
}

/* El nombre de un parámetro es tinta en negritas, no un chip. */
.wiz-apidoc .wiz-apidoc-param-cab code {
    background: transparent;
    border: 0;
    padding: 0;
    font-size: 13.5px;
    font-weight: 600;
    color: #1f2227;
}
/* Los valores fijos de un parámetro sí son chips chicos. */
.wiz-apidoc .wiz-apidoc-param-nota code { font-size: 11.5px; padding: 1px 5px; }

/* El verbo del árbol lateral: texto pelón, lo pinta su color en línea. */

/* Encabezados dentro de la referencia: los del sistema traen otros márgenes. */
.wiz-apidoc h1, .wiz-apidoc h2, .wiz-apidoc h3 { border: 0; }
.wiz-apidoc .wiz-apidoc-tabla code { font-size: 12px; }

/* ── Proporción de las guías ─────────────────────────────────────────────────
   Las secciones de guía (Autenticación, Topes, Errores) no tienen columna de
   código, y a todo el ancho una tabla de dos columnas se ve rala — la fila
   del 400 cruzaba la pantalla entera. En el mockup iban acotadas; aquí igual.
   Las secciones de operación NO se acotan: sus dos columnas ya reparten. */
.wiz-apidoc-sec:not(.wiz-apidoc-op-sec) { max-width: 900px; }

/* Y un respiro más corto entre secciones: 26+26 del diseño original se veía
   como un hueco de pantalla en el render real. */
.wiz-apidoc-sec { padding-bottom: 22px; margin-bottom: 22px; }


/* ── Panel derecho v2: lenguajes, credenciales, petición oscura, pastillas ──
   El patrón es el de la referencia de Alegra (ReadMe): tiles de lenguaje con
   logo, credenciales a la vista, bloque de petición oscuro con Probar, y la
   respuesta con pastillas de ejemplo. Propuesta aprobada el 2026-10-10. */

.wiz-apidoc-sub {
    font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    color: #8a8f97; margin: 0 0 8px;
}
.wiz-apidoc-codigo > .wiz-apidoc-sub { margin-top: 14px; }
.wiz-apidoc-codigo > .wiz-apidoc-sub:first-child { margin-top: 0; }

.wiz-apidoc-langs { display: flex; gap: 8px; margin-bottom: 4px; }
.wiz-apidoc-lang {
    flex: 0 0 72px; display: flex; flex-direction: column; align-items: center; gap: 5px;
    border: 1px solid #e2e3e7; border-radius: 10px; padding: 9px 0 7px;
    background: #fff; cursor: pointer;
}
.wiz-apidoc-lang span { font-size: 11.5px; color: #4e535c; }
.wiz-apidoc-lang:hover { border-color: #b9bdc4; }
.wiz-apidoc-lang.es-activo { border: 2px solid #f69321; padding: 8px 0 6px; }
.wiz-apidoc-lang.es-activo span { font-weight: 700; color: #1f2227; }
.wiz-apidoc-lang:focus-visible { outline: 2px solid #f69321; outline-offset: 2px; }

.wiz-apidoc-creds { display: flex; flex-direction: column; gap: 7px; margin-bottom: 4px; }
.wiz-apidoc-creds input {
    box-sizing: border-box; width: 100%;
    border: 1px solid #dcdde1; border-radius: 8px; padding: 8px 11px;
    font-size: 12px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    color: #1f2227; background: #fff;
}
.wiz-apidoc-creds input:focus { outline: 2px solid #f69321; outline-offset: -1px; border-color: #f69321; }
.wiz-apidoc-creds-nota { margin: 0; font-size: 11px; line-height: 1.5; color: #8a8f97; }

/* Fondo material-palenight, el MISMO que Alegra (ReadMe usa CodeMirror
   cm-s-material-palenight). La paleta wzh-* de abajo es la de ese tema. */
.wiz-apidoc-req { background: #292d3e; border-radius: 12px; overflow: hidden; margin-top: 10px; }
.wiz-apidoc-req-cab {
    display: flex; align-items: center; padding: 9px 14px;
    border-bottom: 1px solid #3a3f58;
    font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    color: #8a8f97;
}
.wiz-apidoc-req-cab .wiz-apidoc-copiar { margin-left: auto; position: static; opacity: 1; }
.wiz-apidoc-copiar.es-oscuro { color: #8a8f97; background: transparent; border: 0; }
.wiz-apidoc-copiar.es-oscuro:hover { color: #d7dae0; }
/* Prefijadas con .wiz-apidoc (0,2,0) para GANARLE al reset anti-Bootstrap
   de arriba (`.wiz-apidoc pre`, 0,1,1): ese reset dejaba estos paneles en
   16px, texto negro y sin padding EN PRODUCCIÓN mientras tres harness míos
   medían un pre sin ancestro y juraban que todo estaba bien. Lo cazó la
   revisión del 10-oct midiendo la página completa servida por HTTP. */
.wiz-apidoc .wiz-apidoc-req-pre {
    margin: 0; padding: 14px 16px;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    /* 12px y no mas: con 12.5-13 el codigo dominaba el panel (feedback con
       captura, 10-oct). Alegra corre ~12. */
    font-size: 12px; line-height: 1.6; color: #babed8;
    overflow-x: auto; background: none; border: 0;
}
.wiz-apidoc-req-pie { padding: 4px 14px 14px; }
/* Naranja con letra BLANCA siempre (regla dura del sistema); hover #e08412. */
.wiz-apidoc-enviar {
    width: 100%; border: 0; border-radius: 8px; padding: 10px 0;
    background: #f69321; color: #ffffff; font-size: 14px; font-weight: 700; cursor: pointer;
}
.wiz-apidoc-enviar:hover:not(:disabled) { background: #e08412; color: #ffffff; }
.wiz-apidoc-enviar:disabled { opacity: .6; cursor: default; }
.wiz-apidoc-enviar:focus-visible { outline: 2px solid #1f2227; outline-offset: 2px; }

.wiz-apidoc-resp-panel { background: #fff; border: 1px solid #e7e7ea; border-radius: 12px; overflow: hidden; margin-top: 12px; }
.wiz-apidoc-resp-cab {
    display: flex; align-items: center; gap: 8px; padding: 9px 14px;
    border-bottom: 1px solid #eef0f2;
    font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    color: #8a8f97;
}
.wiz-apidoc-resp-cab em { font-style: normal; text-transform: none; letter-spacing: 0; font-weight: 400; font-size: 12px; color: #9aa0a8; }
.wiz-apidoc-resp-pills { display: flex; flex-wrap: wrap; gap: 7px; padding: 11px 14px 4px; }
.wiz-apidoc-pillres {
    display: inline-flex; align-items: center; gap: 6px;
    border: 1px solid #e2e3e7; border-radius: 999px; padding: 4px 11px;
    font-size: 12px; color: #4e535c; background: #fff; cursor: pointer;
}
.wiz-apidoc-pillres:hover { border-color: #b9bdc4; }
.wiz-apidoc-pillres.es-activo { border-color: #f69321; background: #fdf1e2; color: #1f2227; font-weight: 600; }
.wiz-apidoc-punto { width: 7px; height: 7px; border-radius: 50%; }
.wiz-apidoc-punto.es-bien { background: #2e8555; }
.wiz-apidoc-punto.es-mal { background: #c2452f; }
.wiz-apidoc .wiz-apidoc-res-pre {
    margin: 0; padding: 10px 16px 14px;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11.5px; line-height: 1.55; color: #3a3f47;
    overflow-x: auto; background: none; border: 0;
}

.wiz-apidoc-vivo { border-top: 1px solid #eef0f2; }
.wiz-apidoc-vivo-cab { display: flex; align-items: center; gap: 10px; padding: 9px 14px; }
.wiz-apidoc-vivo-http {
    font-size: 11px; font-weight: 700; color: #fff; border-radius: 6px; padding: 3px 9px;
}
.wiz-apidoc-vivo-http.es-bien { background: #2e8555; }
.wiz-apidoc-vivo-http.es-mal { background: #c2452f; }
.wiz-apidoc .wiz-apidoc-vivo .wiz-apidoc-probar-salida { margin: 0; border: 0; border-radius: 0; padding: 10px 16px 14px; font-size: 11.5px; color: #3a3f47; }

/* El subrayado del buscador en las coincidencias. */
.wiz-apidoc-link-t mark { background: #fde8c8; color: inherit; border-radius: 2px; padding: 0 1px; }

@media (max-width: 860px) {
    /* Dentro del modal mandaba el tope de escritorio por especificidad y la
       nav quedaba como caja con scroll propio de ~96vh; en angosto es
       estática igual que en la página. */
    .wiz-apidoc-modal .wiz-apidoc-nav { position: static; max-height: none; }
    .wiz-apidoc-langs { flex-wrap: wrap; }
    .wiz-apidoc-param { flex-direction: column; gap: 8px; }
    .wiz-apidoc-param-control { flex: 0 0 auto; width: 100%; }
    .wiz-apidoc-titulo-fila { flex-wrap: wrap; }
}


/* ── Buscador del header del modal (mockup: centrado, con atajo) ─────────── */
.wiz-apidoc-hq {
    flex: 1 1 320px; max-width: 460px; min-width: 0; margin: 0 auto;
    display: flex; align-items: center; gap: 8px;
    border: 1px solid #dcdde1; border-radius: 8px; padding: 6px 12px;
    background: #fafafb;
}
.wiz-apidoc-hq svg { flex: 0 0 auto; color: #9aa0a8; }
.wiz-apidoc-hq input {
    flex: 1 1 auto; min-width: 0; border: 0; background: none; outline: 0;
    font-size: 13px; color: #1f2227;
}
.wiz-apidoc-hq kbd {
    flex: 0 0 auto; font-family: inherit; font-size: 11px; color: #b4b8bf;
    border: 1px solid #e2e3e7; border-radius: 4px; padding: 1px 5px; background: #fff;
}
.wiz-apidoc-hq:focus-within { border-color: #f69321; }
.wiz-apidoc-modal .modal-title { flex: 0 1 auto; }

/* Colores del resaltado (claro y oscuro comparten clases; el fondo decide). */
.wiz-apidoc-res-pre .wzh-k, .wiz-apidoc-probar-salida .wzh-k { color: #3b6fb5; }
.wiz-apidoc-res-pre .wzh-s, .wiz-apidoc-probar-salida .wzh-s { color: #2e8555; }
.wiz-apidoc-res-pre .wzh-n, .wiz-apidoc-probar-salida .wzh-n { color: #b25d1e; }
.wiz-apidoc-res-pre .wzh-t, .wiz-apidoc-probar-salida .wzh-t { color: #2e8555; }
.wiz-apidoc-res-pre .wzh-f, .wiz-apidoc-probar-salida .wzh-f { color: #c2452f; }
/* material-palenight */
.wiz-apidoc-req-pre .wzh-s    { color: #c3e88d; }
.wiz-apidoc-req-pre .wzh-num  { color: #f78c6c; }
.wiz-apidoc-req-pre .wzh-kw   { color: #c792ea; }
.wiz-apidoc-req-pre .wzh-fn   { color: #82aaff; }
.wiz-apidoc-req-pre .wzh-var  { color: #f07178; }
.wiz-apidoc-req-pre .wzh-cons { color: #ffcb6b; }
.wiz-apidoc-req-pre .wzh-url  { color: #89ddff; }
.wiz-apidoc-req-pre .wzh-dim  { color: #676e95; }
.wiz-apidoc-meta { font-size: 12px; color: #9aa0a8; }
.wiz-apidoc-modal-abrir { display: inline-flex; padding: 6px; border-radius: 7px; color: #6a7078; }
.wiz-apidoc-modal-abrir:hover { color: #1f2227; background: #f0f1f3; }
.wiz-apidoc-creds input.es-falta { border-color: #f69321; background: #fffaf3; }
.wiz-apidoc-probar-estado.es-aviso { color: #8a4600; }

/* ── Descargas del contrato (Postman / OpenAPI) ─────────────────────────── */
.wiz-apidoc-descargas { display: flex; gap: 10px; flex-wrap: wrap; margin: 14px 0 4px; }
.wiz-apidoc-descargas a {
    display: inline-flex; align-items: center; gap: 7px;
    border: 1px solid #dcdde1; border-radius: 9px; padding: 8px 14px;
    font-size: 13px; color: #1f2227; background: #fff; text-decoration: none;
}
.wiz-apidoc-descargas a:hover { border-color: #f69321; color: #1f2227; background: #fffaf3; }

/* ── Peticiones recientes (de esta consola) ─────────────────────────────── */
.wiz-apidoc-recientes { margin: 14px 0 4px; border: 1px solid #e7e7ea; border-radius: 10px; background: #fff; }
.wiz-apidoc-recientes > summary {
    padding: 10px 14px; cursor: pointer; list-style: none;
    font-size: 13px; font-weight: 600; color: #1f2227;
}
.wiz-apidoc-recientes > summary::-webkit-details-marker { display: none; }
.wiz-apidoc-recientes > summary::before { content: '▸ '; color: #8a8f97; }
.wiz-apidoc-recientes[open] > summary::before { content: '▾ '; }
.wiz-apidoc-recientes > summary em { font-style: normal; font-weight: 400; font-size: 12px; color: #8a8f97; }
.wiz-apidoc-recientes table { width: 100%; border-collapse: collapse; }
.wiz-apidoc-recientes th {
    text-align: left; padding: 7px 14px; border-top: 1px solid #eef0f2;
    font-size: 10.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #8a8f97;
}
.wiz-apidoc-recientes td { padding: 7px 14px; border-top: 1px solid #f0f1f3; font-size: 12.5px; color: #3a3f47; }
.wiz-apidoc-rec-vacia td { color: #8a8f97; }
.wiz-apidoc-rec-http { font-size: 11px; font-weight: 700; color: #fff; border-radius: 5px; padding: 2px 7px; }
.wiz-apidoc-rec-http.es-bien { background: #2e8555; }
.wiz-apidoc-rec-http.es-mal { background: #c2452f; }
.wiz-apidoc-rec-acc { text-align: right; white-space: nowrap; }
.wiz-apidoc-rec-acc button {
    border: 1px solid #dcdde1; background: #fff; border-radius: 7px; padding: 4px 10px;
    font-size: 11.5px; color: #4e535c; cursor: pointer; margin-left: 6px;
}
.wiz-apidoc-rec-acc button:hover { border-color: #f69321; color: #1f2227; }

/* ── El ojo de la llave y limpiar ──────────────────────────────────────── */
.wiz-apidoc-llave-fila { display: flex; gap: 6px; }
.wiz-apidoc-llave-fila input { flex: 1 1 auto; min-width: 0; }
.wiz-apidoc-ojo {
    flex: 0 0 auto; border: 1px solid #dcdde1; background: #fff; border-radius: 8px;
    padding: 0 10px; color: #6a7078; cursor: pointer;
}
.wiz-apidoc-ojo:hover, .wiz-apidoc-ojo.es-abierto { color: #1f2227; border-color: #b9bdc4; }
.wiz-apidoc-ojo.es-abierto { background: #f0f1f3; }
.wiz-apidoc-limpiar { border: 0; background: none; padding: 3px; color: #9aa0a8; cursor: pointer; }
.wiz-apidoc-limpiar:hover { color: #c2452f; }
.wiz-sr-col { width: 1px; }
.wiz-apidoc-publico-nota { margin: 0; padding: 10px 14px 14px; font-size: 11.5px; line-height: 1.55; color: #8a8f97; }
.wiz-apidoc-topbar {
    display: flex; align-items: center; gap: 14px; padding: 12px 22px;
    border-bottom: 1px solid #e7e7ea; background: #fff;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
}
.wiz-apidoc-topbar strong { font-size: 16px; color: #1f2227; }
.wiz-apidoc-topbar strong span { color: #f69321; }
.wiz-apidoc-topbar em { font-style: normal; font-size: 13px; color: #6a7078; flex: 1 1 auto; }
.wiz-apidoc-topbar a { font-size: 13px; color: #4e535c; text-decoration: none; }
.wiz-apidoc-topbar a:hover { color: #1f2227; }
.wiz-apidoc-publico .wiz-apidoc { border: 0; border-radius: 0; }

/* ═══ Ajustes del portal público (los emite generar_contrato.php) ═══ */
:root { --wz-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, 'Liberation Mono', 'Courier New', monospace; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body.wiz-dev { margin: 0; background: #fafafb; }
.wiz-apidoc code, .wiz-apidoc pre, .wiz-apidoc kbd,
.wiz-apidoc-param-control, .wiz-apidoc-creds input,
.wiz-apidoc-req-pre, .wiz-apidoc-res-pre, .wiz-apidoc-probar-salida { font-family: var(--wz-mono); }
.wiz-apidoc .wiz-apidoc-req-pre { font-size: 11.5px; }
.wiz-apidoc .wiz-apidoc-res-pre, .wiz-apidoc .wiz-apidoc-vivo .wiz-apidoc-probar-salida { font-size: 11px; }

/* El header del portal: tinta, logo real y acciones. */
.wiz-dev-top {
    position: sticky; top: 0; z-index: 50;
    display: flex; align-items: center; gap: 18px;
    padding: 12px 26px; background: #16181d;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
}
.wiz-dev-logo { display: inline-flex; align-items: center; gap: 9px; text-decoration: none; }
.wiz-dev-logo img { display: block; height: 26px; width: auto; }
.wiz-dev-logo span { font-size: 11px; font-weight: 600; color: #b7bcc4; letter-spacing: .04em; text-transform: lowercase; align-self: flex-end; margin-bottom: 2px; }
.wiz-dev-top .wiz-apidoc-hq { background: #22262e; border-color: #343941; }
.wiz-dev-top .wiz-apidoc-hq input { color: #e8eaed; }
.wiz-dev-top .wiz-apidoc-hq input::placeholder { color: #8a8f97; }
.wiz-dev-top .wiz-apidoc-hq kbd { background: #16181d; border-color: #343941; color: #8a8f97; }
.wiz-dev-top .wiz-apidoc-hq:focus-within { border-color: #f69321; }
.wiz-dev-nav { display: flex; align-items: center; gap: 14px; margin-left: auto; }
.wiz-dev-nav a { font-size: 13.5px; color: #b7bcc4; text-decoration: none; }
.wiz-dev-nav a:hover { color: #fff; }
.wiz-dev-btn-ghost {
    border: 1px solid #3a3f47; border-radius: 9px; padding: 8px 14px; color: #e8eaed !important;
}
.wiz-dev-btn-ghost:hover { border-color: #6a7078; }
.wiz-dev-btn {
    background: #f69321; border-radius: 9px; padding: 9px 16px;
    color: #ffffff !important; font-weight: 700;
}
.wiz-dev-btn:hover { background: #e08412; color: #ffffff !important; }

/* El contenido pega su nav debajo del header sticky. */
.wiz-apidoc-publico { padding: 20px 22px 48px; }
.wiz-apidoc-publico .wiz-apidoc { border: 0; border-radius: 0; background: none; }
.wiz-apidoc-publico .wiz-apidoc-nav { top: 62px; max-height: calc(100vh - 78px); border-radius: 12px; border: 1px solid #e7e7ea; }
.wiz-apidoc-publico .wiz-apidoc-cuerpo { border-left: 0; }
.wiz-apidoc-publico .wiz-apidoc-sec:not(.wiz-apidoc-op-sec) h1 { font-size: 30px; }
.wiz-apidoc-publico .wiz-apidoc-codigo { top: 78px; }

/* En monitores anchos, el panel de código respira. */
@media (min-width: 1500px) {
    .wiz-apidoc-publico .wiz-apidoc-codigo { flex: 1 1 540px; max-width: 660px; }
    .wiz-apidoc-publico .wiz-apidoc-main { padding: 30px 40px 56px; }
}
@media (max-width: 900px) {
    .wiz-dev-top { flex-wrap: wrap; }
    .wiz-dev-top .wiz-apidoc-hq { order: 3; flex-basis: 100%; }
}
@media (max-width: 600px) {
    .wiz-apidoc-hq kbd { display: none; }
    .wiz-apidoc-publico { padding: 14px 12px 40px; }
}