/* Estándar visual de toda la plataforma (2026-10-22, docs/DISENO_AJUSTES_PRESENTACION_PRICING.md §13; Angel: «un subidón a todo
   el entorno visual», José Pablo la vio básica). Capa central: se carga después de app.css y ui.css y antes de la hoja de cada
   módulo, así todas las pantallas suben de nivel juntas sin rehacerlas. Mejora el acabado, no cambia la estructura.
   Todo color sale de la marca (--navy, --navy-light, --accent) y los estados; la letra, las esquinas, los botones, la densidad
   y el menú salen del estilo de la marca (config/brand_style.py, Administración › Marca). Respaldo: git tag antes-estilo-v2. */
:root {
    --font-ui: -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    --radius-card: 12px;
    --radius-control: 8px;
    --radius-button: 8px;
    --radius: var(--radius-card);
    --bg: #f4f6fa;
    --border: #e1e6ee;
    --shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 8px 20px -10px rgba(16, 24, 40, .14);
    --shadow-pop: 0 12px 32px -8px rgba(16, 24, 40, .28);
    --focus-ring: 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);
    --sidebar-w: 15.5rem;
    --nav-dark: color-mix(in srgb, var(--navy) 86%, black);
    /* 2026-10-22 (Angel: «déjalo igual al menú, sin degradado… si no se ve como un sancocho de colores»): un solo color sólido,
       el del menú, para los íconos de título y los botones de elección marcados de toda la plataforma (antes en pricing.css) */
    --menu-solid: color-mix(in srgb, var(--navy) 93%, black);
    --nav-hover: rgba(255, 255, 255, .1);
    --nav-line: rgba(255, 255, 255, .12);
    --nav-shadow: 2px 0 14px rgba(16, 24, 40, .16);
    --sidebar-w-min: 4.25rem;
    /* 2026-10-22 (Angel: «el azul de los servicios y el verde al guardar no son colores corporativos»): el resaltado y los
       avisos informativos salen de la marca (antes un azul fijo de app.css) */
    --info-bg: color-mix(in srgb, var(--navy) 8%, var(--surface));
    --info-fg: var(--navy);
    /* 2026-10-24 (Angel, tras comparar seis paletas: «a la de la marca le puedes agregar grises y queda bien»): la marca en
       tonos — el color de resalte, el principal y el secundario (gris) de Administración › Marca, más claros y más oscuros,
       alternando claro y oscuro para que dos vecinos no se confundan. Sale sola de la marca de cada tenant. Los estados
       siguen aparte: verde, ámbar, rojo y gris */
    --chart-1: var(--accent);
    --chart-2: var(--navy);
    --chart-3: var(--navy-light);
    --chart-4: color-mix(in srgb, var(--navy) 50%, white);
    --chart-5: color-mix(in srgb, var(--navy) 75%, black);
    --chart-6: color-mix(in srgb, var(--navy-light) 45%, white);
    --chart-7: color-mix(in srgb, var(--accent) 55%, white);
    --chart-8: color-mix(in srgb, var(--navy-light) 65%, black);
    --chart-9: color-mix(in srgb, var(--navy) 28%, white);
    --chart-10: color-mix(in srgb, var(--accent) 70%, black);
    --chart-11: color-mix(in srgb, var(--navy-light) 25%, white);
    --chart-12: color-mix(in srgb, var(--navy) 60%, var(--navy-light));
    --chart-13: color-mix(in srgb, var(--accent) 30%, white);
    --chart-ok: #3f9b5a;
    --chart-warn: #e9b02b;
    --chart-bad: #d2483f;
    --chart-neutral: #a8a29e;
    --chart-neutral-soft: #d6d3d1;
}

/* ---- Letra y jerarquía ---- */
body { font-family: var(--font-ui); background: var(--bg); font-size: 0.95rem; }
h1 { font-size: 1.55rem; font-weight: 750; letter-spacing: -0.015em; }
h2 { font-size: 1.12rem; font-weight: 700; letter-spacing: -0.005em; color: var(--navy); }
h3 { letter-spacing: -0.005em; }
main { padding-top: 1.6rem; }

/* ---- Tarjetas: más aire, esquinas de la marca y sombra suave ---- */
fieldset.section, details.section, .ui-tree, .cot-card, .pr-card, .card, .ui-card, .role-card {
    border-color: var(--border); border-radius: var(--radius-card); }
fieldset.section, details.section, .cot-card, .pr-card, .card, .ui-card { box-shadow: var(--shadow); background: var(--surface); }
fieldset.section, details.section { padding: 1.2rem 1.4rem 1.35rem; }
fieldset.section legend, details.section summary { font-size: 0.98rem; color: var(--accent); }

/* ---- Cajas de captura: esquinas de la marca, borde suave que se ilumina en el color de la marca al escribir ---- */
input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]):not([type=range]):not([type=submit]):not([type=button]),
select, textarea {
    border-radius: var(--radius-control); border-color: var(--border); transition: border-color .12s ease, box-shadow .12s ease; }
input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]):not([type=range]):hover, select:hover, textarea:hover {
    border-color: color-mix(in srgb, var(--accent) 35%, var(--border)); }
input:focus, select:focus, textarea:focus, .field input:focus, .field select:focus, .field textarea:focus {
    outline: none; border-color: var(--accent); box-shadow: var(--focus-ring); }
input[type=checkbox], input[type=radio] { accent-color: var(--accent); }
.field label, .ui-form label { color: var(--ink); font-weight: 600; }

/* ---- Botones: principal lleno en el color de la marca, secundario con borde; esquinas de la marca ---- */
button, .btn-primary, .btn-secondary, .btn-small, .btn-small-quiet, .btn-danger { border-radius: var(--radius-button); }
.btn-primary { box-shadow: 0 1px 2px color-mix(in srgb, var(--accent) 35%, transparent); letter-spacing: 0.005em; }
.btn-primary:hover { box-shadow: 0 4px 12px -4px color-mix(in srgb, var(--accent) 60%, transparent); }
.btn-secondary, .btn-small { border-color: color-mix(in srgb, var(--navy) 18%, var(--border)); }
.btn-secondary:hover, .btn-small:hover { border-color: var(--accent); color: var(--accent); background: var(--ui-mark-soft); }
button:focus-visible, .btn-primary:focus-visible, .btn-secondary:focus-visible, a:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* ---- Tablas: contenedor con esquinas, encabezado claro, renglón resaltado al pasar ---- */
.ui-scroll, .table-scroll { border-radius: var(--radius-control); }
table.ui-table thead th, .data-table thead th { font-size: 0.74rem; letter-spacing: 0.03em; text-transform: uppercase; }
.data-table tbody tr:hover > td { background: var(--ui-hover); }
tr.ui-empty td, .ui-empty td { color: var(--muted); font-style: italic; padding: 1.4rem 0.75rem; text-align: center; }

/* ---- Pestañas, chips y avisos ---- */
.ui-tabs a { border-radius: var(--radius-control) var(--radius-control) 0 0; }
.chip { border-radius: 999px; }
p.ok, p.error, .ui-callout { border-radius: var(--radius-control); }
/* «Guardado»: en los colores de la marca, no en verde (Angel 22-oct) */
p.ok { box-shadow: inset 3px 0 0 var(--accent); background: var(--info-bg); color: var(--navy); }
p.error { box-shadow: inset 3px 0 0 var(--bad-fg); }

/* ---- Ventanas ---- */
dialog.ui-dialog, .modal-box { border-radius: var(--radius-card); box-shadow: var(--shadow-pop); border-color: var(--border); }
.nav-group-menu { border-radius: var(--radius-control); box-shadow: var(--shadow-pop); }

/* ---- Íconos del menú (ui.js los dibuja según data-nav-icon) ---- */
.nav-ico { display: inline-flex; width: 1.15rem; height: 1.15rem; flex: 0 0 auto; opacity: .92; }
.nav-ico svg { width: 100%; height: 100%; }
.nav-group-trigger { display: inline-flex; align-items: center; gap: 0.45rem; }
.nav-collapse { display: none; }

/* ---- Densidad compacta: más renglones por pantalla ---- */
body.dens-compacta { font-size: 0.9rem; --ui-control-h: 1.8rem; }
body.dens-compacta main { padding-top: 1.1rem; padding-bottom: 2.5rem; }
body.dens-compacta fieldset.section, body.dens-compacta details.section { padding: 0.85rem 1rem 1rem; margin-bottom: 1rem; }
body.dens-compacta table.ui-table td, body.dens-compacta .data-table td { padding-top: 0.25rem; padding-bottom: 0.25rem; }

/* ---- Menú lateral (estilo «lateral», el de Wideline): el mismo menú de siempre como columna fija a la izquierda, con
   íconos por módulo; los grupos se abren hacia la derecha. Se contrae a solo íconos. En celular vuelve a la barra de arriba. ---- */
@media (min-width: 901px) {
    body.menu-lateral { padding-left: var(--sidebar-w); }
    body.menu-lateral .top-nav {
        position: fixed; top: 0; bottom: 0; left: 0; width: var(--sidebar-w); z-index: 30;
        flex-direction: column; align-items: stretch; gap: 0.6rem; padding: 1rem 0.7rem 0.8rem;
        background: linear-gradient(180deg, var(--navy), var(--nav-dark));
        box-shadow: var(--nav-shadow); }
    body.menu-lateral .brand { padding: 0.15rem 0.45rem 0.7rem; border-bottom: 1px solid var(--nav-line) !important; }
    body.menu-lateral .brand-logo { max-width: 100%; height: 34px; }
    body.menu-lateral .top-nav-right { flex-direction: column; align-items: stretch; margin-left: 0; gap: 0.35rem; flex: 1; flex-wrap: nowrap; }
    body.menu-lateral .top-nav-links { flex-direction: column; align-items: stretch; gap: 2px; order: 0; width: 100%; flex-wrap: nowrap; }
    body.menu-lateral .top-nav-right > .nav-group > .nav-group-trigger,
    body.menu-lateral .top-nav-links > .nav-group > .nav-group-trigger,
    body.menu-lateral .top-nav-user > .nav-group > .nav-group-trigger,
    body.menu-lateral .top-nav-links > a {
        display: flex; width: 100%; align-items: center; gap: 0.65rem; padding: 0.55rem 0.65rem; border-radius: var(--radius-control);
        border-bottom: 0; text-align: left; font-size: 0.9rem; }
    body.menu-lateral .top-nav-links > .nav-group > .nav-group-trigger::after,
    body.menu-lateral .top-nav-right > .nav-group > .nav-group-trigger::after { content: "›"; margin-left: auto; font-size: 1em; }
    body.menu-lateral .top-nav-links > .nav-group:hover > .nav-group-trigger,
    body.menu-lateral .top-nav-links > .nav-group:focus-within > .nav-group-trigger,
    body.menu-lateral .top-nav-right > .nav-group:hover > .nav-group-trigger {
        background: var(--nav-hover); border-bottom-color: transparent; }
    /* el grupo se abre a la derecha de la columna, alineado con su renglón (los de abajo, hacia arriba) */
    body.menu-lateral .top-nav-links > .nav-group > .nav-group-menu,
    body.menu-lateral .top-nav-right > .nav-group > .nav-group-menu { top: 0; left: 100%; right: auto; margin-left: 0.2rem; }
    body.menu-lateral .top-nav-links > .nav-group:nth-last-child(-n+2) > .nav-group-menu,
    body.menu-lateral .top-nav-right > .nav-group > .nav-group-menu { top: auto; bottom: 0; }
    /* idioma y usuario al pie de la columna */
    body.menu-lateral .language-switcher { margin-top: auto; }
    body.menu-lateral .top-nav-user { flex-direction: column; align-items: stretch; gap: 0.35rem; border-left: 0; padding-left: 0; }
    body.menu-lateral .top-nav-user .nav-group > .nav-group-menu { top: auto; bottom: 0; left: 100%; right: auto; margin-left: 0.2rem; }
    /* la campana es un renglón más, como Idioma y Usuario: ícono, «Avisos» y los no leídos a la derecha */
    body.menu-lateral .nav-bell {
        display: flex; width: 100%; align-items: center; gap: 0.65rem; padding: 0.55rem 0.65rem;
        border-radius: var(--radius-control); font-size: 0.9rem; }
    body.menu-lateral .nav-bell:hover { background: var(--nav-hover); }
    body.menu-lateral .nav-bell svg { width: 1.15rem; height: 1.15rem; flex: 0 0 auto; }
    body.menu-lateral .nav-bell-label { display: inline; }
    body.menu-lateral .nav-bell-count { position: static; margin-left: auto; }
    body.menu-lateral.nav-min .nav-bell { justify-content: center; position: relative; }
    body.menu-lateral.nav-min .nav-bell-label { display: none; }
    body.menu-lateral.nav-min .nav-bell-count { position: absolute; top: 0.15rem; right: 0.1rem; margin-left: 0; }
    body.menu-lateral .nav-collapse {
        display: block; position: absolute; top: 1.2rem; right: -0.75rem; width: 1.5rem; height: 1.5rem; padding: 0;
        border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--navy); box-shadow: var(--shadow);
        font-size: 0.8rem; line-height: 1; cursor: pointer; }
    body.menu-lateral .nav-collapse::before { content: "‹"; }
    body.menu-lateral.help-open main, body.menu-lateral.help-open .top-nav { margin-right: 0; }
    /* contraído: solo íconos (el nombre sale al pasar el mouse, en el título del botón) */
    body.menu-lateral.nav-min { --sidebar-w: var(--sidebar-w-min); }
    body.menu-lateral.nav-min .nav-collapse::before { content: "›"; }
    body.menu-lateral.nav-min .brand span { display: none; }
    body.menu-lateral.nav-min .top-nav-links > .nav-group > .nav-group-trigger,
    body.menu-lateral.nav-min .top-nav-right > .nav-group > .nav-group-trigger,
    body.menu-lateral.nav-min .top-nav-user > .nav-group > .nav-group-trigger { font-size: 0; justify-content: center; gap: 0; }
    body.menu-lateral.nav-min .top-nav-links > .nav-group > .nav-group-trigger::after,
    body.menu-lateral.nav-min .top-nav-right > .nav-group > .nav-group-trigger::after,
    body.menu-lateral.nav-min .top-nav-user > .nav-group > .nav-group-trigger::after { content: none; }
    body.menu-lateral.nav-min .language-switcher .flag, body.menu-lateral.nav-min .language-switcher img { display: none; }
    body.menu-lateral.nav-min .nav-ico { width: 1.3rem; height: 1.3rem; }
}

/* ---- Vista previa de la marca (Administración › Marca): letra, esquinas y botones elegidos, antes de guardar ---- */
.brand-preview { font-family: var(--bp-font, var(--font-ui)); border-radius: var(--bp-radius, var(--radius-card)); }
.brand-preview .bp-btn { border-radius: var(--bp-btn, var(--radius-button)); }

/* ---- Tablas de captura (2026-10-28, Angel: «se ve como de 1 semestre de ingeniería, muy blanda y plana»): estilo de la marca
   `tables` (config/brand_style.py). «clasica» = lo de siempre; las otras dos solo cambian el aspecto de table.ui-form-table.
   Las hojas de cada módulo dan su diseño a sus tablas de captura (p. ej. pricing.css .cot … table.pr-cargo) y cargan después:
   la clase repetida sube la prioridad para que el estilo de la marca gane sin !important. La clase va en el body y, en la
   página de ejemplos, en cada muestra. ---- */
/* Encabezado suave y cifras alineadas */
.tables-suave.tables-suave table.ui-form-table.ui-form-table { border-collapse: separate; border-spacing: 0; width: 100%; background: var(--surface);
    border: 1px solid var(--border); border-radius: var(--radius-control); overflow: hidden; }
.tables-suave.tables-suave table.ui-form-table.ui-form-table thead th { background: var(--surface-alt); color: var(--navy); font-size: 0.7rem;
    font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; text-align: left; padding: 0.55rem 0.6rem; border: 0;
    border-bottom: 1px solid var(--border); vertical-align: bottom; }
.tables-suave.tables-suave table.ui-form-table.ui-form-table thead th.num { text-align: right; }
.tables-suave.tables-suave table.ui-form-table.ui-form-table tbody td { padding: 0.4rem 0.6rem; border: 0; border-bottom: 1px solid var(--ui-row-line);
    background: var(--surface); vertical-align: middle; }
.tables-suave.tables-suave table.ui-form-table.ui-form-table tbody tr:last-child td { border-bottom: 0; }
.tables-suave.tables-suave table.ui-form-table.ui-form-table tbody tr:hover td { background: var(--ui-hover); }
.tables-suave.tables-suave table.ui-form-table.ui-form-table :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]):not([type=range]):not([type=submit]):not([type=button]), select) {
    height: var(--ui-control-h); border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface);
    padding: 0 0.55rem; font-size: 0.85rem; }
.tables-suave.tables-suave table.ui-form-table.ui-form-table :is(input, select):focus { outline: none; border-color: var(--accent);
    box-shadow: var(--focus-ring); }
/* Compacta profesional: sin cajas hasta pasar el mouse; línea fuerte bajo el encabezado */
.tables-compacta.tables-compacta table.ui-form-table.ui-form-table { border-collapse: collapse; width: 100%; background: transparent; border: 0; }
.tables-compacta.tables-compacta table.ui-form-table.ui-form-table thead th { background: transparent; color: var(--muted); font-size: 0.76rem;
    font-weight: 500; text-transform: none; letter-spacing: 0; text-align: left; padding: 0.4rem 0.6rem; border: 0;
    border-bottom: 2px solid var(--navy); vertical-align: bottom; }
.tables-compacta.tables-compacta table.ui-form-table.ui-form-table thead th.num { text-align: right; }
.tables-compacta.tables-compacta table.ui-form-table.ui-form-table tbody td { padding: 0.15rem 0.25rem; border: 0;
    border-bottom: 1px solid var(--ui-row-line); background: transparent; vertical-align: middle; }
.tables-compacta.tables-compacta table.ui-form-table.ui-form-table :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]):not([type=range]):not([type=submit]):not([type=button]), select) {
    height: var(--ui-control-h); border: 1px solid transparent; background: transparent; border-radius: var(--radius-control);
    padding: 0 0.5rem; font-size: 0.88rem; }
.tables-compacta.tables-compacta table.ui-form-table.ui-form-table tbody tr:hover :is(input, select) { border-color: var(--border); background: var(--surface); }
.tables-compacta.tables-compacta table.ui-form-table.ui-form-table :is(input, select):focus { outline: none; border-color: var(--navy);
    background: var(--surface); box-shadow: var(--focus-ring); }
/* Renglones elevados: cada renglón es una tarjeta flotante; cajas rellenas sin borde; barra del color de la marca al pasar */
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table { border-collapse: separate; border-spacing: 0 0.45rem; width: 100%;
    background: transparent; border: 0; margin-top: -0.45rem; }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table thead th { background: transparent; color: var(--accent); font-size: 0.68rem;
    font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; text-align: left; padding: 0.5rem 0.7rem 0; border: 0; }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table thead th.num { text-align: right; }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table tbody td { background: var(--surface); padding: 0.55rem 0.5rem; border: 0;
    border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); vertical-align: middle;
    transition: background .12s ease, box-shadow .12s ease; }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table tbody td:first-child { border-left: 1px solid var(--border);
    border-radius: var(--radius-card) 0 0 var(--radius-card); padding-left: 0.8rem; box-shadow: inset 4px 0 0 transparent; }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table tbody td:last-child { border-right: 1px solid var(--border);
    border-radius: 0 var(--radius-card) var(--radius-card) 0; }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table tbody tr { filter: drop-shadow(0 1px 2px color-mix(in srgb, var(--navy) 10%, transparent)); }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table tbody tr:hover td:first-child { box-shadow: inset 4px 0 0 var(--accent); }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]):not([type=range]):not([type=submit]):not([type=button]), select) {
    width: 100%; min-width: 0; box-sizing: border-box;
    height: calc(var(--ui-control-h) + 0.2rem); border: 1px solid transparent; background: var(--surface-alt);
    border-radius: var(--radius-control); padding: 0 0.5rem; font-size: 0.85rem; font-weight: 500; color: var(--ink); }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table :is(input, select):hover { border-color: var(--border); }
.tables-elevada.tables-elevada table.ui-form-table.ui-form-table :is(input, select):focus { outline: none; background: var(--surface);
    border-color: var(--accent); box-shadow: var(--focus-ring); }
/* Rejilla tipo hoja: encabezado en el color principal, la celda es la caja, líneas finas; la celda que se escribe se marca */
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table { border-collapse: separate; border-spacing: 0; width: 100%; background: var(--surface);
    border: 1px solid color-mix(in srgb, var(--navy) 25%, var(--border)); border-radius: var(--radius-control); overflow: hidden; }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table thead th { background: var(--navy); color: var(--surface); font-size: 0.74rem;
    font-weight: 600; letter-spacing: 0.02em; text-transform: none; text-align: left; padding: 0.55rem 0.65rem; border: 0;
    border-right: 1px solid color-mix(in srgb, var(--surface) 18%, var(--navy)); }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table thead th:last-child { border-right: 0; }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table thead th.num { text-align: right; }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table tbody td { padding: 0; border: 0; border-right: 1px solid var(--ui-row-line);
    border-bottom: 1px solid var(--ui-row-line); background: var(--surface); vertical-align: middle; }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table tbody td:last-child { border-right: 0; text-align: center; }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table tbody tr:last-child td { border-bottom: 0; }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table tbody td:last-child button { border-color: transparent; background: transparent; }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table tbody tr:nth-child(even) td { background: var(--ui-zebra); }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]):not([type=range]):not([type=submit]):not([type=button]), select) {
    width: 100%; height: 2.4rem; border: 0; border-radius: 0; background: transparent; padding: 0 0.65rem; font-size: 0.88rem;
    box-shadow: none; }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table :is(input, select):hover { background: var(--ui-hover); }
.tables-rejilla.tables-rejilla table.ui-form-table.ui-form-table :is(input, select):focus { outline: none; background: var(--surface);
    box-shadow: inset 0 0 0 2px var(--accent); }
/* Página de ejemplos (Administración › Marca › Ejemplos de tablas) */
.tbl-demos { display: grid; gap: 1rem; }
.tbl-demos > * { min-width: 0; }   /* en celular cada muestra cabe y su tabla se desplaza dentro */
.tbl-wrap { overflow-x: auto; }
.tbl-wrap > table { min-width: 44rem; }   /* en celular la muestra se desplaza en vez de apretar sus columnas */
/* la «clásica» como se ve en las pantallas de captura (cada módulo le da su tamaño; aquí no hay módulo) */
.tbl-demo.tables-clasica table.ui-form-table { width: 100%; }
.tbl-demo.tables-clasica table.ui-form-table th { text-align: left; color: var(--muted); font-weight: 600; padding: 0.15rem 0.2rem; }
.tbl-demo.tables-clasica table.ui-form-table td { padding: 0.15rem 0.2rem; }
.tbl-demo.tables-clasica table.ui-form-table :is(input, select) { width: 100%; height: var(--ui-control-h); padding: 0 0.3rem;
    border: 1px solid var(--border); border-radius: 4px; box-sizing: border-box; }
.tbl-demo { border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); padding: 0.9rem 1rem; }
.tbl-demo.is-current { border-color: var(--accent); box-shadow: var(--focus-ring); }
.tbl-demo-head { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; align-items: center; justify-content: space-between; margin-bottom: 0.6rem; }
.tbl-demo-head h2 { margin: 0; font-size: 1rem; color: var(--accent); }
.tbl-demo-head p { margin: 0.15rem 0 0; color: var(--muted); font-size: 0.82rem; }
.tbl-demo-foot { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; margin-top: 0.5rem; font-size: 0.82rem; color: var(--muted); }
.tbl-demo-foot b { color: var(--ink); font-variant-numeric: tabular-nums; }
