/* El panel del engranaje de estilo (njs/g_uiknobs.js): salio de adm.css el 09-10-2026 para que lo pueda pedir
   rxsdit (el «Estilo del sitio»), que no carga el CSS del admin. En el admin sigue viajando en njs/app.css. */
/* ── El engranaje de estilo (njs/g_uiknobs.js) ───────────────────────────────
 * Un cajon a la DERECHA, colgado del topbar, y las dos cosas se decidieron
 * mirando la pantalla:
 *
 *   - a la derecha, y no del lado del boton, porque anclado a la izquierda tapaba
 *     el SIDEBAR ENTERO -- que es uno de los knobs (`ui_sidebar`), o sea justo lo
 *     que se vino a mirar. De este lado se pierden unas cards del contenido, que
 *     no las declara nadie.
 *   - desde abajo del topbar y no desde el pie de la ventana, porque el boton que
 *     lo abre vive EN el topbar: el panel se tapaba a si mismo la puerta y no
 *     habia con que cerrarlo mas que la X.
 *
 * El alto lo dan `top` y `bottom`; el cuerpo scrollea. Los colores salen de los
 * tokens de v2 con fallback, asi que el panel acompana al tema -- incluido el que
 * se esta probando adentro del propio panel, que es el unico lugar del admin donde
 * eso pasa de verdad. */
.rxs-knobs-panel {
    background: var(--rx-v2-panel, #fff);
    border: 1px solid var(--rx-v2-border, rgba(128, 128, 128, .25));
    border-radius: var(--rx-v2-r12, 12px);
    bottom: 12px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, .22);
    color: var(--rx-v2-text, inherit);
    display: none;
    right: 12px;
    /* 72px = la topbar (60 en v2 + aire). El panel crece con los knobs que haya
       —a los ocho de hoy ya pide 624— asi que el alto lo fijan top/bottom y el
       cuerpo scrollea, en vez de dejarlo crecer hasta taparle la puerta. */
    top: 72px;
    max-width: calc(100vw - 24px);
    /* fixed y declarado: `.card` de Bootstrap lo pone en `relative` y el panel se
       dibujaba EN EL FLUJO, 1182 px abajo del viewport -- con bottom/left puestos y
       sin efecto, que es la forma de no verse que no deja rastro en el DOM. */
    position: fixed;
    width: 320px;
    z-index: 1050;
}
.rxs-knobs-panel.rxs-knobs-on { display: flex; flex-direction: column; }
/* La tinta y los campos del panel salen de sus tokens y no de la pagina que lo hospeda: en rxsdit (el «Estilo del
   sitio») el editor es oscuro y el panel quedaba con texto claro sobre su fondo blanco de respaldo. */
.rxs-knobs-panel { color: var(--rx-v2-text, #1d242c); }
.rxs-knobs-panel select,
.rxs-knobs-panel .form-control { background-color: var(--rx-v2-field, #fff); color: var(--rx-v2-text, #1d242c); }
.rxs-knobs-head,
.rxs-knobs-foot {
    align-items: center;
    display: flex;
    flex: 0 0 auto;
    gap: .5rem;
    padding: .65rem .85rem;
}
.rxs-knobs-head { border-bottom: 1px solid var(--rx-v2-border, rgba(128, 128, 128, .2)); }
.rxs-knobs-head h6 { flex: 1; margin: 0; }
.rxs-knobs-foot {
    border-top: 1px solid var(--rx-v2-border, rgba(128, 128, 128, .2));
    flex-wrap: wrap;
    justify-content: flex-end;
}
/* La aclaracion de que probar no es aplicar toma el renglon entero: es lo unico
   que separa "estoy mirando" de "se lo cambie a todo el mundo". */
.rxs-knobs-hint {
    color: var(--rx-v2-muted, #6c757d);
    flex: 1 0 100%;
    font-size: .78rem;
    margin: 0 0 .35rem;
}
.rxs-knobs-body { flex: 1 1 auto; overflow-y: auto; padding: .5rem .85rem; }
.rxs-knobs-load { color: var(--rx-v2-muted, #6c757d); padding: 1.5rem 0; text-align: center; }
.rxs-knob { margin-bottom: .7rem; }
.rxs-knob-lbl {
    display: block;
    font-size: .8rem;
    font-weight: 600;
    margin-bottom: .2rem;
}
.rxs-knob-nota {
    color: var(--rx-v2-muted, #6c757d);
    font-size: .74rem;
    line-height: 1.3;
    margin-top: .25rem;
}
/* Un knob que es un SUBFORMULARIO (`ui_tokens`): una fila por override, con sus
   celdas en grilla. El ancho lo reparte la grilla y no un porcentaje por celda,
   asi que el dia que el campo declare un hijo mas no hay que tocar esto.

   La fila lleva su propio fondo tenue --- no un borde --- porque el panel ya vive
   adentro de una tarjeta y un borde adentro de otro borde a 300px de ancho se lee
   como una tabla. */
.rxs-knob-rows { display: flex; flex-direction: column; gap: .45rem; }
/* DOS columnas y no una por hijo: el panel mide ~300px, asi que con los cuatro
   hijos de `ui_tokens` en una linea cada select quedaba de 40px --- ilegible, y
   peor con un hijo mas. En dos columnas las celdas se acomodan solas sin que esto
   sepa cuantas son.

   Y la X va posicionada, no en una columna: como columna se comia el ancho de una
   celda en cada fila. */
.rxs-knob-row {
    align-items: end;
    background: var(--rx-v2-ghost, rgba(128, 128, 128, .05));
    border-radius: var(--rx-v2-r7, 7px);
    display: grid;
    gap: .35rem .4rem;
    grid-template-columns: 1fr 1fr;
    padding: .45rem 1.3rem .5rem .5rem;
    position: relative;
}
/* El aviso de una fila cruza la grilla entera: es de la fila, no de una celda. */
.rxs-knob-row .rxs-knob-nota { grid-column: 1 / -1; margin-top: .1rem; }
.rxs-knob-cell { min-width: 0; }
.rxs-knob-sub {
    color: var(--rx-v2-muted, #6c757d);
    display: block;
    font-size: .68rem;
    margin-bottom: .1rem;
    text-transform: uppercase;
}
.rxs-knob-cell .form-control,
.rxs-knob-cell select { font-size: .78rem; }
.rxs-knob-del {
    color: var(--rx-v2-faint, #8b94a1);
    font-size: 1.1rem;
    line-height: 1;
    padding: 0 .2rem;
    position: absolute;
    right: 0;
    top: .1rem;
}
.rxs-knob-del:hover { color: var(--rx-v2-text, #1d242c); }

/* En un telefono el sidebar es un cajon: el panel pasa a ocupar el ancho y se
   apoya abajo, donde esta el pulgar. */
@media (max-width: 767px) {
    .rxs-knobs-panel {
        bottom: 0;
        left: 0;
        max-height: 80vh;
        max-width: none;
        right: 0;
        /* en un telefono se apoya abajo, donde esta el pulgar, y no cuelga del
           topbar: `top` tiene que soltarse o el cajon toma la pantalla entera */
        top: auto;
        width: 100%;
    }
}
