/* Panel de clientes (NextSys · Gasparini Informática) — estilos.
   Rediseño «Opción A · sobria y densa» (20/10/2026, elegida por Luis entre las dos de la maqueta
   scratchpad/maqueta-panel-opciones): IBM Plex Sans 13 px, filas de 36 px, botones de 28 px,
   azul marino #17304f + dorado #d99a3b de NextSys, menú lateral de 216 px con buscador «/»,
   paneles con título en versalitas y modo oscuro. Celular (≤ 760 px): menú por hamburguesa y
   tablas en filas apiladas de 2 columnas, sin scroll horizontal; objetivos de 44 px (≤ 600 px).
   Los NOMBRES de los tokens son los de antes (--fondo, --sup, --texto…: los usan también
   permisos-espejo.html y estadisticas.js); cambian los valores. La letra va servida desde
   /vendor/ibm-plex-sans-5.1.1 (@fontsource/ibm-plex-sans 5.1.1, latin, licencia OFL al lado), sin CDN. */
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url(vendor/ibm-plex-sans-5.1.1/ibm-plex-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:500;font-display:swap;src:url(vendor/ibm-plex-sans-5.1.1/ibm-plex-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;src:url(vendor/ibm-plex-sans-5.1.1/ibm-plex-sans-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:700;font-display:swap;src:url(vendor/ibm-plex-sans-5.1.1/ibm-plex-sans-latin-600-normal.woff2) format("woff2")}
:root{
  --fondo:#f3f5f8; --sup:#ffffff; --sup-2:#f7f8fa; --sup-3:#eceff3; --borde:#d9dee6; --borde-2:#8794a6;
  --texto:#1b2532; --texto-2:#4f5b6b; --texto-3:#66717f;
  --navy:#17304f; --pri:#17304f; --pri-h:#22436b; --acento:#1d4f9c; --acento-suave:#e4ecf9; --oro:#d99a3b; --oro-tinta:#7a4f0e;
  --ok:#1a6e3a; --ok-s:#e2f3e8; --av:#8a5100; --av-s:#fcefd6; --mal:#b3261e; --mal-s:#fbe6e3; --info:#1d4f9c; --info-s:#e4ecf9; --neutro:#5a6676; --neutro-s:#e9edf2;
  --est-h:#1f7a43; --est-c:#a86200; --est-o:#4b5563; --est-tinta:#ffffff;
  --sombra:0 1px 2px rgba(23,48,79,.06),0 4px 14px rgba(23,48,79,.06);
  --r:5px; --r2:6px;
  --fuente:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;
  --alto-btn:28px; --alto-fila:36px; --alto-th:30px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --fondo:#0f141b; --sup:#171d26; --sup-2:#1c232e; --sup-3:#232c38; --borde:#2b3542; --borde-2:#75818f;
  --texto:#e7ebf1; --texto-2:#b2bcc9; --texto-3:#8f9aa8;
  --navy:#12263f; --pri:#12263f; --pri-h:#1b3759; --acento:#8db4f2; --acento-suave:#1b2d49; --oro:#e3a94c; --oro-tinta:#f0c57a;
  --ok:#6fd08f; --ok-s:#16311f; --av:#f2bb5c; --av-s:#3a2a0c; --mal:#f59a92; --mal-s:#40201d; --info:#8db4f2; --info-s:#1b2d49; --neutro:#aab4c1; --neutro-s:#262f3b;
  --est-h:#2f8a4f; --est-c:#d1912a; --est-o:#738093; --est-tinta:#0f141b; --est-tinta-h:#ffffff;
  --sombra:0 1px 2px rgba(0,0,0,.4),0 4px 14px rgba(0,0,0,.35);
  color-scheme:dark;
}}
:root[data-theme="dark"]{
  --fondo:#0f141b; --sup:#171d26; --sup-2:#1c232e; --sup-3:#232c38; --borde:#2b3542; --borde-2:#75818f;
  --texto:#e7ebf1; --texto-2:#b2bcc9; --texto-3:#8f9aa8;
  --navy:#12263f; --pri:#12263f; --pri-h:#1b3759; --acento:#8db4f2; --acento-suave:#1b2d49; --oro:#e3a94c; --oro-tinta:#f0c57a;
  --ok:#6fd08f; --ok-s:#16311f; --av:#f2bb5c; --av-s:#3a2a0c; --mal:#f59a92; --mal-s:#40201d; --info:#8db4f2; --info-s:#1b2d49; --neutro:#aab4c1; --neutro-s:#262f3b;
  --est-h:#2f8a4f; --est-c:#d1912a; --est-o:#738093; --est-tinta:#0f141b; --est-tinta-h:#ffffff;
  --sombra:0 1px 2px rgba(0,0,0,.4),0 4px 14px rgba(0,0,0,.35);
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--fuente);font-size:13px;line-height:1.45;color:var(--texto);background:var(--fondo);font-variant-numeric:tabular-nums;min-height:100vh;min-height:100dvh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}
a{color:var(--acento)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--oro);outline-offset:2px}
.sr{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
[hidden]{display:none !important}
h1,h2,h3,h4{margin:0;font-weight:600;color:var(--texto)}
h1{font-size:16px;line-height:22px}
h2{font-size:14px;line-height:20px}
h3{font-size:13px;line-height:18px}
small,.sec{font-size:12px;line-height:16px;color:var(--texto-3)}
code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;background:var(--sup-3);padding:1px 4px;border-radius:4px;overflow-wrap:anywhere}

/* ─── barra superior: SÓLO en celular (≤ 760 px). En escritorio la marca vive en el menú ─── */
.top{display:none;background:var(--navy);color:#fff;height:48px;align-items:center;gap:10px;padding:0 max(12px,env(safe-area-inset-right,0px)) 0 max(12px,env(safe-area-inset-left,0px));position:sticky;top:0;z-index:30}
.top .marca{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none;font-weight:600;font-size:14px;line-height:18px;min-width:0}
.top .marca svg{width:24px;height:24px;flex:none}
.top .sp{flex:1}
.top .ib{background:transparent;border:0;color:#fff;width:44px;height:44px;border-radius:6px;cursor:pointer;display:grid;place-items:center;flex:none}
.top .ib:hover{background:rgba(255,255,255,.12)}
.top .avatar{width:26px;height:26px;font-size:10px;background:var(--oro);color:#1b2532;font-weight:700}

/* ─── estructura: menú lateral de 216 px + contenido ─── */
.shell{display:grid;grid-template-columns:216px minmax(0,1fr);min-height:100vh;min-height:100dvh;background:linear-gradient(to right,var(--sup) 215px,var(--borde) 215px,var(--borde) 216px,transparent 216px)}
.lat{background:var(--sup);border-right:1px solid var(--borde);position:sticky;top:0;height:100vh;height:100dvh;overflow:auto;display:flex;flex-direction:column;padding:10px;gap:2px;z-index:20}
.lat .marca{display:flex;align-items:center;gap:8px;padding:4px 6px 10px;color:var(--texto);text-decoration:none}
.lat .marca svg{width:22px;height:22px;flex:none}
.lat .marca b{font-size:13px;line-height:1.15;display:block;font-weight:600}
.lat .marca small{font-size:11px;line-height:1.2;color:var(--texto-3);display:block}
.lat .modo{font-size:11px;line-height:16px;background:var(--oro);color:#1b2532;font-weight:600;padding:2px 8px;border-radius:999px;margin:0 6px 8px;text-align:center}
.lat-busca{position:relative;margin-bottom:6px}
.lat-busca label{display:flex;align-items:center;gap:6px;height:28px;border:1px solid var(--borde-2);border-radius:var(--r);padding:0 6px 0 8px;background:var(--sup-2);color:var(--texto-3)}
.lat-busca label:focus-within{border-color:var(--acento);box-shadow:0 0 0 2px var(--acento-suave)}
.lat-busca svg{width:15px;height:15px;flex:none}
.lat-busca input{border:0;background:transparent;outline:0;min-width:0;flex:1;font-size:12.5px;color:var(--texto);height:26px;padding:0}
.lat-busca input::placeholder{color:var(--texto-3)}
.lat-busca kbd{font:500 10.5px ui-monospace,Menlo,monospace;border:1px solid var(--borde-2);border-radius:4px;padding:0 4px;color:var(--texto-3);flex:none}
.lat-res{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--sup);border:1px solid var(--borde-2);border-radius:var(--r2);box-shadow:var(--sombra);z-index:40;padding:4px;max-height:60vh;overflow:auto;min-width:240px}
.lat-res a{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--r);color:var(--texto);text-decoration:none;font-size:12.5px;line-height:1.3}
.lat-res a small{margin-left:auto;font-size:11px;color:var(--texto-3);white-space:nowrap}
.lat-res a .n{font-size:11px;color:var(--texto-3);min-width:18px;text-align:right}
.lat-res a[aria-selected="true"],.lat-res a:hover{background:var(--sup-3)}
.lat-res .vacio{padding:8px;font-size:12px;text-align:left}
.lat-res .gr{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--texto-3);font-weight:600;padding:6px 8px 2px}
.lat .sec-lat{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--texto-3);padding:10px 8px 3px;font-weight:600}
.nav{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0}
.nav a{display:flex;align-items:center;gap:8px;height:28px;padding:0 8px;border-radius:var(--r);color:var(--texto-2);text-decoration:none;font-weight:500;font-size:13px;position:relative}
.nav a svg{width:16px;height:16px;flex:none}
.nav a:hover{background:var(--sup-2);color:var(--texto)}
.nav a[aria-current="page"]{background:var(--sup-3);color:var(--texto);font-weight:600}
.nav a[aria-current="page"]::before{content:"";position:absolute;left:-10px;top:5px;bottom:5px;width:3px;border-radius:0 3px 3px 0;background:var(--oro)}
.nav a .n{margin-left:auto;font-size:11px;font-weight:600;color:var(--texto-3);font-variant-numeric:tabular-nums;line-height:16px}
.nav a .n.al{color:var(--oro-tinta);background:color-mix(in srgb,var(--oro) 25%,var(--sup));border-radius:999px;padding:0 6px}
.nav .pie{margin-top:auto;padding-top:8px}
.nav .pie a{font-size:12px;color:var(--texto-3);font-weight:400;height:auto;min-height:28px;line-height:1.3;padding:4px 8px}
.nav .pie a svg{width:14px;height:14px}
.lat-pie{border-top:1px solid var(--borde);padding:8px 2px 0;margin-top:8px;display:flex;align-items:center;gap:4px}
.lat-pie .quien{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--texto-3);min-width:0;flex:1}
.lat-pie .quien span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.lat-pie .avatar{width:22px;height:22px;font-size:10px;background:var(--oro);color:#1b2532;font-weight:700}
.lat-pie .ib{width:28px;height:28px;border:1px solid transparent;border-radius:var(--r);background:transparent;color:var(--texto-2);display:grid;place-items:center;cursor:pointer;flex:none}
.lat-pie .ib:hover{background:var(--sup-3);border-color:var(--borde)}
.lat-pie .ib svg{width:16px;height:16px}
main{padding:14px max(16px,env(safe-area-inset-right,0px)) 48px 16px;min-width:0;max-width:1760px;container-type:inline-size}
.migas{font-size:12px;line-height:16px;color:var(--texto-3);margin:0 0 4px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.migas a{color:var(--acento);text-decoration:underline}
.cab{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-bottom:10px}
.cab .tx{flex:1 1 320px;min-width:0;display:flex;align-items:baseline;gap:4px 12px;flex-wrap:wrap}
.cab .sub{color:var(--texto-3);font-size:12.5px;line-height:18px;min-width:0}
.cab .acc{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.volver{display:none}
h2.sec{margin:16px 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
h2.sec:first-child{margin-top:0}
h2.sec .sec{font-weight:400}

/* ─── paneles (antes «tarjetas»): borde fino, título en versalitas sobre fondo sombreado ─── */
.card{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r2);padding:12px;display:flex;flex-direction:column;min-width:0}
.card>*{flex:none}
.card>.pie{margin-top:auto}
.card.sin{padding:0;overflow:hidden}
.card .ayuda{color:var(--texto-3);margin:0 0 10px;font-size:12px;line-height:17px}
.card .pie{display:flex;gap:6px;justify-content:flex-end;align-items:center;flex-wrap:wrap;border-top:1px solid var(--borde);margin:12px -12px -12px;padding:8px 12px;background:var(--sup-2);border-radius:0 0 var(--r2) var(--r2)}
.card .pie .msg{margin-right:auto;color:var(--texto-3);font-size:12px;flex:1 1 200px}
.grid{display:grid;gap:12px;grid-template-columns:1fr}
.grid>*{min-width:0}
@container (min-width:860px){.grid.c2{grid-template-columns:1fr 1fr}.grid.c3{grid-template-columns:repeat(3,1fr)}.grid.c32{grid-template-columns:3fr 2fr}.grid.c13{grid-template-columns:380px 1fr}}
@container (min-width:900px){.grid.c4{grid-template-columns:repeat(4,1fr)}}
@container (max-width:899px){.grid.c4{grid-template-columns:1fr 1fr}}
.col{display:flex;flex-direction:column;gap:12px;min-width:0}
/* indicadores: una tira de celdas en una línea */
.kpis{display:flex;border:1px solid var(--borde);border-radius:var(--r2);background:var(--sup);margin-bottom:12px;overflow:hidden}
.kpis .kpi{flex:1 1 0;min-width:0;padding:8px 12px;display:grid;gap:1px;text-decoration:none;color:inherit;border-radius:0;border:0;background:transparent}
.kpis .kpi+.kpi{border-left:1px solid var(--borde)}
a.kpi{text-decoration:none;color:inherit}
a.kpi:hover{background:var(--sup-2)}
.card.kpi{padding:8px 12px;display:grid;gap:1px}
.kpi .l{font-size:11.5px;line-height:16px;color:var(--texto-3);font-weight:500}
.kpi .v{font-size:20px;line-height:24px;font-weight:600;display:flex;align-items:baseline;gap:6px}
.kpi .v.av{color:var(--av)}.kpi .v.mal{color:var(--mal)}.kpi .v.ok{color:var(--ok)}
.kpi .d{font-size:11.5px;line-height:16px;color:var(--texto-3);font-weight:400}
/* clave-valor con separadores */
.dl{display:grid;grid-template-columns:minmax(110px,150px) 1fr;margin:0 -12px}
.dl dt{display:flex;align-items:center;gap:4px;color:var(--texto-3);padding:6px 12px;border-bottom:1px solid var(--borde);font-size:12.5px;line-height:18px}
.dl dd{margin:0;padding:6px 12px 6px 0;border-bottom:1px solid var(--borde);overflow-wrap:anywhere;min-width:0;line-height:18px}
.dl dt:last-of-type,.dl dd:last-of-type{border-bottom:0}
.dl dd input,.dl dd select{max-width:220px}
.dl dt label{font-weight:400;color:inherit}
.dl dd .campo{max-width:220px}
.dl dd .barra{max-width:320px;margin:6px 0 2px}
.card>.dl:last-child,.card>h3+.dl:last-child{margin-bottom:-12px}
.chip{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 8px;border-radius:999px;font-size:11.5px;line-height:1;font-weight:600;letter-spacing:.01em;background:var(--neutro-s);color:var(--neutro);white-space:nowrap;flex:none;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.chip .pt{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.chip.ok{background:var(--ok-s);color:var(--ok)}.chip.av{background:var(--av-s);color:var(--av)}.chip.mal{background:var(--mal-s);color:var(--mal)}.chip.info{background:var(--info-s);color:var(--info)}
.chip.prueba{color:var(--oro-tinta);background:color-mix(in srgb,var(--oro) 22%,var(--sup));border:1px dashed color-mix(in srgb,var(--oro) 70%,transparent)}
.chip.borde{background:transparent;border:1px solid var(--borde-2);color:var(--texto)}
a.chip{text-decoration:none}
.aviso{display:flex;gap:10px;align-items:flex-start;padding:8px 12px;border-radius:var(--r2);margin:0 0 12px;border:1px solid var(--borde);flex-wrap:wrap;font-size:12.5px;line-height:18px;background:var(--sup-2)}
.aviso>span:not(.acc){flex:1 1 240px;min-width:0}
.aviso svg{width:16px;height:16px;flex:none;margin-top:1px}
.aviso.info{background:var(--info-s);border-color:color-mix(in srgb,var(--info) 35%,var(--borde));color:var(--texto)}.aviso.info svg{color:var(--info)}
.aviso.av{background:var(--av-s);border-color:color-mix(in srgb,var(--av) 40%,var(--borde));color:var(--texto)}.aviso.av svg{color:var(--av)}
.aviso.mal{background:var(--mal-s);border-color:color-mix(in srgb,var(--mal) 40%,var(--borde));color:var(--texto)}.aviso.mal svg{color:var(--mal)}
.aviso.ok{background:var(--ok-s);border-color:color-mix(in srgb,var(--ok) 35%,var(--borde));color:var(--texto)}.aviso.ok svg{color:var(--ok)}
.aviso.gris{background:var(--sup-2);color:var(--texto-2)}
.aviso .acc{margin-left:auto;flex:none;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
details.det{border:1px solid var(--borde);border-radius:var(--r2);background:var(--sup);margin-top:12px}
details.det summary{cursor:pointer;padding:6px 12px;font-weight:600;list-style:none;display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--texto-2);min-height:36px;flex-wrap:wrap}
details.det summary::-webkit-details-marker{display:none}
details.det summary::before{content:"";width:0;height:0;border-left:5px solid currentColor;border-top:4px solid transparent;border-bottom:4px solid transparent;transition:.15s;margin-right:2px}
details.det[open] summary::before{transform:rotate(90deg)}
details.det>div{padding:4px 12px 12px;border-top:1px solid var(--borde)}
.vacio{color:var(--texto-3);padding:24px 12px;text-align:center}
.sindatos{color:var(--texto-3);font-style:italic}

/* ─── botones: un solo alto (28 px) para todos ─── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--alto-btn);min-height:var(--alto-btn);padding:0 10px;border-radius:var(--r);border:1px solid var(--borde-2);background:var(--sup);color:var(--texto);font-weight:500;font-size:12.5px;line-height:1;cursor:pointer;text-decoration:none;white-space:nowrap;flex:none}
.btn:hover{background:var(--sup-2)}
.btn svg{width:15px;height:15px;flex:none}
.btn.pri,.btn.pri:hover{color:#fff;border-color:var(--pri)}
.btn.pri{background:var(--pri)}.btn.pri:hover{background:var(--pri-h)}
:root[data-theme="dark"] .btn.pri{border-color:#3a5a85}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .btn.pri{border-color:#3a5a85}}
.btn.texto{border-color:transparent;background:transparent;color:var(--acento);padding:0 6px}
.btn.texto:hover{background:var(--sup-3)}
.btn.peligro{color:var(--mal);border-color:color-mix(in srgb,var(--mal) 45%,var(--borde))}
.btn.peligro.lleno,.btn.peligro.lleno:hover{background:#b3261e;border-color:#b3261e;color:#fff}
.btn.chico{height:var(--alto-btn);min-height:var(--alto-btn);padding:0 10px;font-size:12.5px}
.btn.ico,.btn.mas{width:var(--alto-btn);padding:0;justify-content:center}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn.ancho{width:100%}
.menu-btn{position:relative;display:inline-block;vertical-align:middle}
.menu-btn .lista-menu{display:none;position:absolute;right:0;top:calc(100% + 4px);background:var(--sup);border:1px solid var(--borde-2);border-radius:8px;box-shadow:var(--sombra);min-width:240px;z-index:25;padding:4px;text-align:left;white-space:normal}
.menu-btn.on .lista-menu{display:block}
.menu-btn.on>[data-menu]{background:var(--sup-3)}
.lista-menu button,.lista-menu a{display:block;width:100%;text-align:left;border:0;background:transparent;padding:7px 10px;border-radius:5px;cursor:pointer;font-size:12.5px;line-height:1.35;color:var(--texto);text-decoration:none;font-weight:400}
.lista-menu button:hover,.lista-menu a:hover{background:var(--sup-2)}
.lista-menu button.peligro{color:var(--mal)}
.lista-menu button[disabled]{opacity:.5;cursor:not-allowed}
.lista-menu hr{border:0;border-top:1px solid var(--borde);margin:4px 0}
.lista-menu small{display:block;color:var(--texto-3);font-size:11.5px}
/* confirmación EN LA MISMA FILA (alertas de Inicio y filas de Empresas) */
.confirma{flex-basis:100%;grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:8px 10px;margin:6px 0 2px;border-radius:var(--r);background:var(--av-s);border:1px solid color-mix(in srgb,var(--av) 40%,var(--borde));font-size:12.5px;line-height:18px;white-space:normal;text-align:left}
.confirma.mal{background:var(--mal-s);border-color:color-mix(in srgb,var(--mal) 40%,var(--borde))}
.confirma .tx{flex:1 1 260px;min-width:0}
.confirma .tx small{display:block;color:var(--texto-2);font-size:12px}
.confirma input{height:var(--alto-btn);border:1px solid var(--borde-2);border-radius:var(--r);padding:0 8px;background:var(--sup);min-width:0;flex:1 1 200px;font-size:13px}
.confirma .acc{display:flex;gap:6px;flex-wrap:wrap}
tr.con-confirma td{border-bottom:0}
tr.fila-confirma td{padding-top:0;height:auto}
tr.fila-confirma:hover td{background:transparent !important}

/* ─── controles ─── */
.filtros{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-bottom:10px}
.campo{display:flex;flex-direction:column;gap:4px;min-width:0}
.campo>label{font-size:11.5px;line-height:16px;font-weight:600;color:var(--texto-2)}
.campo input,.campo select,.campo textarea{height:var(--alto-btn);min-height:var(--alto-btn);border:1px solid var(--borde-2);border-radius:var(--r);padding:0 8px;font:inherit;font-size:13px;background:var(--sup);color:var(--texto);min-width:0;width:100%}
.campo textarea{height:auto;padding:6px 8px;line-height:18px}
.campo input::placeholder,.campo textarea::placeholder{color:var(--texto-3)}
.campo input:focus,.campo select:focus,.campo textarea:focus{border-color:var(--acento);box-shadow:0 0 0 2px var(--acento-suave);outline:0}
.campo.busca{flex:0 1 260px;position:relative}
.campo.busca input{padding-left:28px}
.campo.busca svg{position:absolute;left:8px;bottom:7px;width:14px;height:14px;color:var(--texto-3)}
.campo.w160{width:160px}.campo.w200{width:200px}.campo.w240{width:240px}
.campo .ayuda{font-size:12px;line-height:17px;color:var(--texto-3)}
.seg{display:inline-flex;border:1px solid var(--borde-2);border-radius:var(--r);overflow:hidden;background:var(--sup);max-width:100%;height:var(--alto-btn)}
.seg button{border:0;background:transparent;padding:0 10px;height:100%;cursor:pointer;color:var(--texto-2);font-weight:500;font-size:12.5px;white-space:nowrap;border-right:1px solid var(--borde);display:inline-flex;align-items:center;gap:4px}
.seg button:last-child{border-right:0}
.seg button:hover{background:var(--sup-2)}
.seg button[aria-pressed="true"]{background:var(--pri);color:#fff}
.seg button b{font-weight:600;opacity:.9}
.seg.chica button{padding:0 8px}
.sw{display:inline-flex;align-items:center;gap:10px;cursor:pointer;min-height:28px}
.sw input{appearance:none;-webkit-appearance:none;width:38px;height:22px;border-radius:999px;background:var(--borde-2);position:relative;cursor:pointer;flex:none;margin:0;transition:.15s}
.sw input::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.sw input:checked{background:var(--ok)}
:root[data-theme="dark"] .sw input:checked{background:#2f8a4f}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .sw input:checked{background:#2f8a4f}}
.sw input:checked::after{left:19px}
.sw input:disabled{opacity:.5;cursor:not-allowed}
.sw .t{display:flex;flex-direction:column}
.sw .t b{font-weight:600}
.sw .t small{color:var(--texto-3);font-size:12px;line-height:17px}
/* interruptores de Ajustes como filas: texto a la izquierda, interruptor a la derecha (Opción A) */
.card>label.sw{display:flex;flex-direction:row-reverse;justify-content:space-between;align-items:center;gap:16px;margin:0 -12px;padding:8px 12px;border-top:1px solid var(--borde);min-height:44px}
.card>h3:first-child+label.sw,.card>h3:first-child+.ayuda+label.sw{border-top:0}
.card .sw+.campo,.card .campo+.sw{margin-top:8px}
.card .grid+label.sw{margin-top:8px}
.sync.apag .pt{background:var(--borde-2)}
.ck{display:flex;align-items:center;gap:8px;min-height:28px;cursor:pointer}
.ck input{width:16px;height:16px;accent-color:var(--pri);margin:0;flex:none}
/* Empresas › «Nota enviada» (21/10/2026): tilde en la fila y, debajo, el día; tildada en verde */
.ck.nota{display:inline-flex;min-height:18px}
.ck.nota input{accent-color:var(--ok)}
table.t td .sec.nota-dia{color:var(--ok);line-height:13px}
/* Empresas › «Contrato» (21/10/2026): estado al lado del tilde (Sin contrato / Cargado / Enviado dd/mm / Firmado dd/mm) */
table.t td .sec.nota-dia{display:block;white-space:nowrap;font-size:11.5px}
table.t td .sec.nota-dia.ct-sin{color:var(--texto-3)}
table.t td .sec.nota-dia.ct-cargado{color:var(--info)}
table.t td .sec.nota-dia.ct-firmado{font-weight:600}
/* Ficha › Contrato: acciones chicas dentro de una fila clave-valor */
.dl dd .acc-l{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.dl dd .nm{display:block;font-weight:500;overflow-wrap:anywhere}

/* ─── tablas: filas de 36 px, encabezado de 30 px ─── */
.tabla-wrap{overflow:auto;border:1px solid var(--borde);border-radius:var(--r2);background:var(--sup);max-width:100%}
.tabla-wrap.plano{border:0;border-radius:0}
table.t{border-collapse:separate;border-spacing:0;width:100%;min-width:600px;font-size:13px;line-height:1.25}
table.t th{position:sticky;top:0;background:var(--sup-2);color:var(--texto-2);font-weight:600;text-align:left;padding:0 7px;height:var(--alto-th);border-bottom:1px solid var(--borde-2);white-space:nowrap;font-size:11.5px;z-index:1}
table.t td{padding:2px 7px;height:var(--alto-fila);border-bottom:1px solid var(--borde);vertical-align:middle}
table.t tr:last-child td{border-bottom:0}
table.t th.num,table.t td.num{text-align:right}
table.t tbody tr:hover td{background:var(--sup-2)}
table.t tr.click{cursor:pointer}
table.t td .nm{font-weight:600;color:var(--texto)}
table.t td .sec{display:block;font-size:11.5px;line-height:14px}
table.t td .chip{height:18px}
table.t td.tp-nw .chip,table.t td .nw{white-space:nowrap}
table.t td .sec.ln{display:inline;margin-left:6px}
table.t tfoot td{background:var(--sup-2);font-weight:600;border-top:1px solid var(--borde-2);height:var(--alto-th)}
table.t td .acc{display:flex;gap:6px;justify-content:flex-end;flex-wrap:nowrap;align-items:center}
.pie-t{display:flex;gap:12px;align-items:center;flex-wrap:wrap;color:var(--texto-3);font-size:12px;margin-top:6px;padding:0 2px}
.pie-t .sp{flex:1}
/* listas de filas (Ajustes, Uso y tiempos…): ícono + texto + acciones, compactas */
.lista{display:flex;flex-direction:column}
.lista .it{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--borde);color:inherit;text-decoration:none;min-height:40px}
.lista .it:last-child{border-bottom:0}
.lista .it .ico{width:28px;height:28px;border-radius:6px;background:var(--neutro-s);color:var(--texto-2);display:grid;place-items:center;flex:none}
.lista .it .ico svg{width:16px;height:16px}
.lista .it.av .ico{background:var(--av-s);color:var(--av)}.lista .it.mal .ico{background:var(--mal-s);color:var(--mal)}.lista .it.ok .ico{background:var(--ok-s);color:var(--ok)}.lista .it.info .ico{background:var(--info-s);color:var(--info)}
.lista .it .tx{flex:1;min-width:0}
.lista .it .tx b{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;font-weight:600;overflow-wrap:anywhere;min-width:0}
.lista .it .tx small{display:block;color:var(--texto-3);font-size:12px;overflow-wrap:anywhere}
.lista .it .acc{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
a.it:hover{background:var(--sup-2)}
/* alertas de «Para atender hoy» (Opción A): lista plana, barra de severidad de 3 px a la izquierda */
.lista.alertas .it{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:0 10px;padding:5px 12px 5px 0;min-height:40px}
.lista.alertas .it .ico{width:3px;height:100%;min-height:26px;border-radius:2px;justify-self:center;background:var(--borde-2);overflow:hidden;color:transparent}
.lista.alertas .it .ico svg{display:none}
.lista.alertas .it.av .ico{background:var(--av)}.lista.alertas .it.mal .ico{background:var(--mal)}.lista.alertas .it.ok .ico{background:var(--ok)}.lista.alertas .it.info .ico{background:var(--info)}
.lista.alertas .it .tx{display:flex;gap:2px 8px;align-items:baseline;flex-wrap:wrap}
.lista.alertas .it .tx b{display:inline-flex}
.lista.alertas .it .tx small{display:inline}
.lista.alertas .it>.confirma{grid-column:2/-1}
.card.sin .lista{padding:0 12px}
.card.sin .lista.alertas{padding:0}
.panel-t{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0;font-size:12px;line-height:18px;text-transform:uppercase;letter-spacing:.05em;color:var(--texto-2);font-weight:600;padding:8px 12px;border-bottom:1px solid var(--borde);background:var(--sup-2)}
.panel-t .n{font-weight:500;text-transform:none;letter-spacing:0;color:var(--texto-3)}
.panel-t .sp{flex:1}
.panel-t a{text-transform:none;letter-spacing:0;font-weight:500}

/* ─── pestañas subrayadas ─── */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--borde);margin-bottom:12px;overflow-x:auto;scrollbar-width:none}
.tabs a{padding:6px 10px 8px;margin-bottom:-1px;border-bottom:2px solid transparent;color:var(--texto-2);text-decoration:none;white-space:nowrap;font-weight:500;font-size:13px;display:inline-flex;gap:6px;align-items:center}
.tabs a:hover{color:var(--texto)}
.tabs a[aria-current="page"]{color:var(--texto);border-bottom-color:var(--navy);font-weight:600}
:root[data-theme="dark"] .tabs a[aria-current="page"]{border-bottom-color:var(--oro)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .tabs a[aria-current="page"]{border-bottom-color:var(--oro)}}
.tabs a .n{font-size:10.5px;line-height:16px;background:color-mix(in srgb,var(--oro) 28%,var(--sup));color:var(--oro-tinta);padding:0 6px;border-radius:999px;font-weight:600}

/* ─── ficha de empresa: cabecera de 32 px ─── */
.emp-cab{display:flex;gap:6px 10px;align-items:center;flex-wrap:wrap;margin:4px 0 8px}
.emp-cab .logo{width:32px;height:32px;border-radius:6px;background:var(--navy);color:var(--oro);display:grid;place-items:center;font-weight:700;font-size:12px;flex:none}
.emp-cab .tx{flex:1 1 300px;min-width:0}
.emp-cab h1{font-size:17px;line-height:22px}
.emp-cab .m{color:var(--texto-3);font-size:12.5px;display:flex;gap:2px 10px;flex-wrap:wrap}
.emp-cab .m a{overflow-wrap:anywhere}
.emp-cab .chips{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.franja{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;padding:6px 12px;border:1px solid var(--borde);border-radius:var(--r2);background:var(--sup-2);font-size:12.5px;margin:0 0 10px;line-height:18px}
.franja>svg{width:16px;height:16px;color:var(--texto-2);flex:none}
.franja .tx{flex:1 1 300px;min-width:0}
.franja .tx b{font-weight:600}
.franja .tx small{color:var(--texto-3);font-size:12px}
.franja .acc{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.franja .paso{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.franja .paso .n{width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;background:var(--neutro-s);color:var(--neutro);font-size:11px}
.franja .paso.hecho .n{background:var(--ok-s);color:var(--ok)}
.franja .lin{width:16px;height:2px;background:var(--borde-2)}
.barra{height:6px;background:var(--sup-3);border-radius:3px;overflow:hidden;margin:6px 0}
.barra i{display:block;height:100%;background:var(--ok)}.barra i.av{background:#d99a3b}.barra i.mal{background:var(--mal)}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--pri);color:#fff;display:grid;place-items:center;font-weight:600;font-size:11px;flex:none}
.avatar.m{background:#3a8f45}.avatar.c{background:#b87a2a}.avatar.s{background:#1f4e9a}
.hechos{display:flex;gap:4px 16px;flex-wrap:wrap;color:var(--texto-3);font-size:12.5px;margin:4px 0 0}
.hechos b{color:var(--texto);font-weight:500}

/* ─── permisos ─── */
.perm{display:flex;align-items:center;gap:10px;padding:4px 0;border-bottom:1px solid var(--borde);min-height:36px}
.perm:last-child{border-bottom:0}
.perm .nom{flex:1;min-width:0}
.perm .nom b{font-weight:500;display:block}
.perm .nom small{display:block;color:var(--texto-3)}
.perm .nom small.nota{color:var(--av);font-weight:500}
.perm .mk{display:inline-flex;align-items:center;gap:4px;color:var(--texto-3);font-size:12px;flex:none;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.perm .mk svg{width:14px;height:14px;flex:none}
.perm .mk.rol{color:var(--acento)}
.perm .mk.quitado{color:var(--mal)}
.perm .mk.imp{color:var(--texto-3)}
.perm .mk.cambio{color:var(--av);font-weight:600}
.perm.apagado{opacity:.55}
.perm-grupo{margin:12px 0 2px;font-size:11.5px;line-height:16px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--texto-2);display:flex;gap:8px;align-items:center;background:var(--sup-3);padding:5px 10px;border-radius:4px}
.perm-grupo .chip{font-weight:500;text-transform:none;letter-spacing:0;background:var(--sup);color:var(--texto-2)}
.gr2{display:grid;grid-template-columns:1fr;column-gap:28px}
@container (min-width:1250px){.gr2{grid-template-columns:1fr 1fr}}
.sync{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--texto-2);white-space:nowrap}
.sync .pt{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}
.sync.pend .pt{background:#d99a3b}
.sync.env .pt{background:var(--info);animation:lat 1s infinite}
.sync.err .pt{background:var(--mal)}
@keyframes lat{50%{opacity:.3}}
.tip{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;border:1px solid var(--texto-3);color:var(--texto-3);font-size:10px;cursor:help;vertical-align:middle;margin-left:4px;font-weight:600;font-style:normal;line-height:1}
.barra-fija{position:sticky;bottom:0;background:var(--sup);border-top:1px solid var(--borde-2);padding:8px 16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:16px -16px -48px;box-shadow:0 -4px 14px rgba(0,0,0,.08);z-index:5}
.barra-fija .msg{margin-right:auto;color:var(--texto-2);font-size:12.5px;flex:1 1 220px}
.hoja{position:fixed;inset:0;background:rgba(10,16,24,.55);z-index:40;display:none;align-items:center;justify-content:center;padding:16px}
.hoja.on{display:flex}
.hoja .box{background:var(--sup);border:1px solid var(--borde);border-radius:10px;max-width:540px;width:100%;padding:18px;box-shadow:var(--sombra);max-height:90vh;max-height:90dvh;overflow:auto}
.hoja .box h3{margin-bottom:6px;font-size:16px;line-height:22px}
/* Encender permisos (21/10/2026): la vista previa necesita más ancho */
.hoja .box.ancha{max-width:720px}
.enc-lista{margin:4px 0 0;padding-left:18px;max-height:220px;overflow:auto}
.enc-lista li{margin:2px 0;overflow-wrap:anywhere}
.enc-op{display:flex;flex-direction:column;gap:4px;margin:0 0 12px}
.enc-op .ck{align-items:flex-start}
.enc-op .ck input{margin-top:3px}
.enc-mas{margin:4px 0 0;font-size:12.5px}
.enc-mas summary{cursor:pointer;color:var(--acento);font-weight:500;padding:4px 0}
.hoja .box p{margin:0 0 10px;color:var(--texto-2)}
.hoja .box .pie{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
.hoja .box .texto-largo{white-space:pre-line}
.toasts{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:50;display:flex;flex-direction:column;gap:8px;align-items:center;width:max-content;max-width:calc(100vw - 32px);pointer-events:none}
.toast{background:#1b2532;color:#fff;padding:9px 14px;border-radius:8px;font-size:13px;box-shadow:var(--sombra);text-align:center}
.toast.mal{background:#b3261e}
.recorte2{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;max-width:520px}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:grid;grid-template-columns:130px 1fr;gap:10px;padding:6px 0;border-bottom:1px solid var(--borde)}
.timeline li:last-child{border-bottom:0}
.timeline .f{color:var(--texto-3);font-size:12px;line-height:18px}
.timeline .q{display:block;color:var(--texto-3);font-size:12px;overflow-wrap:anywhere}
.mod{display:flex;align-items:center;gap:12px;padding:6px 0;border-bottom:1px solid var(--borde)}

/* ─── Empresa › Listados y módulos (Opción A): UNA tabla por sección, grupos como separadores
   y el control de tres estados (✓ habilitado · candado · oculto) en cada fila ─── */
.li-resumen{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;margin-bottom:10px}
.li-cuentas{display:flex;gap:4px 16px;flex-wrap:wrap;align-items:baseline;font-size:12.5px;color:var(--texto-2);margin-left:auto}
.li-cuentas b{font-weight:600;color:var(--texto)}
.li-aviso{margin:0;color:var(--texto-3);font-size:12px;line-height:17px}
.li-entrega{display:flex;gap:6px;align-items:flex-start;margin:0;font-size:12px;line-height:17px;color:var(--texto-2)}
.li-entrega .pt{width:7px;height:7px;border-radius:50%;background:var(--texto-3);flex:none;margin-top:5px}
.li-entrega.ok .pt{background:var(--ok)}.li-entrega.av .pt{background:#d99a3b}.li-entrega.mal .pt{background:var(--mal)}
.li-entrega.mal{color:var(--mal)}
.li-leyenda{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:12px;line-height:18px;color:var(--texto-2);padding:6px 12px;border:1px solid var(--borde);border-radius:var(--r2);background:var(--sup);margin-bottom:10px}
.li-leyenda .ley{display:inline-flex;align-items:center;gap:6px;min-width:0}
.li-filtros{margin-bottom:10px}
.li-ayuda{margin:0;padding:6px 12px;font-size:12px;line-height:17px;color:var(--texto-3);border-bottom:1px solid var(--borde)}
.li-panel{margin-bottom:12px}
.li-panel>.panel-t{background:var(--acento-suave);color:var(--acento);font-size:13px;font-weight:700;letter-spacing:.06em;padding:9px 12px;border-bottom:2px solid color-mix(in srgb,var(--acento) 45%,var(--borde));box-shadow:inset 4px 0 0 var(--acento)}
.li-panel>.panel-t .n{color:var(--texto-2);font-weight:600}
table.li-t{width:100%;border-collapse:collapse;font-size:13px}
table.li-t td{padding:3px 12px;height:var(--alto-fila);border-bottom:1px solid var(--borde);vertical-align:middle}
table.li-t tr:last-child td{border-bottom:0}
table.li-t tbody tr:not(.li-gr):hover td{background:var(--sup-2)}
/* tinte muy suave de la fila según su estado + una franja a la izquierda (28/10/2026) */
table.li-t tr[data-k]:has(.tri[data-estado="H"]) td:first-child{box-shadow:inset 3px 0 0 var(--est-h)}
table.li-t tr[data-k]:has(.tri[data-estado="C"]) td{background:color-mix(in srgb,var(--av-s) 55%,var(--sup))}
table.li-t tr[data-k]:has(.tri[data-estado="C"]) td:first-child{box-shadow:inset 3px 0 0 var(--est-c)}
table.li-t tr[data-k]:has(.tri[data-estado="O"]) td{background:color-mix(in srgb,var(--neutro-s) 55%,var(--sup))}
table.li-t tr[data-k]:has(.tri[data-estado="O"]) td:first-child{box-shadow:inset 3px 0 0 var(--est-o)}
table.li-t tr[data-k]:has(.tri[data-estado="O"]) .nom b{color:var(--texto-2)}
table.li-t tbody tr[data-k]:hover:has(.tri) td{background:var(--sup-2)}
table.li-t td.c{width:1%;white-space:nowrap;text-align:right}
table.li-t .nom b{font-weight:500;color:var(--texto);overflow-wrap:anywhere}
table.li-t .nom.nm-mod b{font-weight:600}
table.li-t .nom small{display:block;font-size:11.5px;line-height:15px;color:var(--texto-3)}
table.li-t .nom small.nota{color:var(--av);font-weight:500}
table.li-t .na b{color:var(--texto-2)}
table.li-t tr.li-gr td{height:var(--alto-th);background:color-mix(in srgb,var(--acento-suave) 70%,var(--sup-3));font-size:12px;font-weight:700;color:var(--acento);letter-spacing:.03em;border-bottom-color:color-mix(in srgb,var(--acento) 25%,var(--borde))}
table.li-t tr.li-gr td:first-child{box-shadow:inset 3px 0 0 var(--acento)}
table.li-t tr.li-gr .tit{text-transform:uppercase}
table.li-t tr.li-gr .cuenta{font-weight:500;color:var(--texto-3);margin-left:6px;text-transform:none}
table.li-t tr.li-gr .todo{font-weight:500;color:var(--texto-3);margin-right:8px;font-size:11.5px}
tr[data-k].cambiado .nom b::after{content:" ●";color:#d99a3b;font-size:10px;vertical-align:2px}
details.li-na{margin-top:0}
details.li-na>div{padding:0;border-top:1px solid var(--borde)}
/* control de tres estados (íconos de 24 px; el nombre del estado va en title y para lectores) */
.tri{display:inline-flex;border:1px solid var(--borde-2);border-radius:var(--r);overflow:hidden;height:24px;background:var(--sup);flex:none;vertical-align:middle}
.tri button{border:0;background:transparent;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;gap:4px;color:var(--texto-3);cursor:pointer;min-width:28px}
.tri button+button{border-left:1px solid var(--borde)}
.tri button svg{width:14px;height:14px}
.tri button:hover{background:var(--sup-2);color:var(--texto)}
/* 28/10/2026 (Luis: «cuesta diferenciar qué es qué»): el estado ACTIVO va relleno con su color fuerte
   (verde · ámbar · gris oscuro, los mismos de la leyenda), ícono contrastado y un anillo interior que lo
   marca también sin color (daltónicos); los inactivos quedan neutros y tenues. */
.tri button:not([aria-checked="true"]) svg{opacity:.55}
.tri button:not([aria-checked="true"]):hover svg{opacity:1}
.tri button[aria-checked="true"]{color:var(--est-tinta);box-shadow:inset 0 0 0 1px rgba(0,0,0,.28),inset 0 -2px 0 rgba(0,0,0,.25)}
.tri button[aria-checked="true"].e-H{background:var(--est-h);color:var(--est-tinta-h,var(--est-tinta))}
.tri button[aria-checked="true"].e-C{background:var(--est-c)}
.tri button[aria-checked="true"].e-O{background:var(--est-o);color:var(--est-tinta-h,var(--est-tinta))}
.tri:has(button[aria-checked="true"].e-H){border-color:var(--est-h)}
.tri:has(button[aria-checked="true"].e-C){border-color:var(--est-c)}
.tri:has(button[aria-checked="true"].e-O){border-color:var(--est-o)}
.tri button:focus-visible{outline:2px solid var(--oro);outline-offset:-2px}
.tri button[disabled]{cursor:not-allowed;opacity:.6}
.tri .lbl{display:none;font-size:11.5px;font-weight:600}
.pill-est{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 8px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;flex:none}
.pill-est svg{width:13px;height:13px;flex:none}
.pill-est.e-H{background:var(--est-h);color:var(--est-tinta-h,var(--est-tinta))}
.pill-est.e-C{background:var(--est-c);color:var(--est-tinta)}
.pill-est.e-O{background:var(--est-o);color:var(--est-tinta-h,var(--est-tinta))}

/* control de dos/tres opciones con texto (Catálogo › «Cuando está apagado») */
.seg3{display:inline-flex;border:1px solid var(--borde-2);border-radius:var(--r);overflow:hidden;background:var(--sup);flex:none;height:24px}
.seg3 button{display:inline-flex;align-items:center;gap:4px;border:0;border-right:1px solid var(--borde);background:transparent;color:var(--texto-2);cursor:pointer;padding:0 8px;font-size:11.5px;font-weight:600;white-space:nowrap}
.seg3 button:last-child{border-right:0}
.seg3 button svg{width:13px;height:13px;flex:none}
.seg3 button:hover{background:var(--sup-2);color:var(--texto)}
.seg3 button[aria-checked="true"]{box-shadow:inset 0 0 0 1px rgba(0,0,0,.28),inset 0 -2px 0 rgba(0,0,0,.25)}
.seg3 button.e-H[aria-checked="true"]{background:var(--est-h);color:var(--est-tinta-h,var(--est-tinta))}
.seg3 button.e-C[aria-checked="true"]{background:var(--est-c);color:var(--est-tinta)}
.seg3 button.e-O[aria-checked="true"]{background:var(--est-o);color:var(--est-tinta-h,var(--est-tinta))}
.seg3 button:focus-visible{outline:2px solid var(--oro);outline-offset:-2px}

/* ─── títulos de panel sombreados (en versalitas) ─── */
:root{--band-bg:var(--sup-2);--band-fg:var(--texto-2)}
.card>h3:first-child,.card.sin>div>h3:first-child{margin:-12px -12px 10px;padding:8px 12px;background:var(--band-bg);color:var(--band-fg);border-bottom:1px solid var(--borde);border-radius:var(--r2) var(--r2) 0 0;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;line-height:18px;text-transform:uppercase;letter-spacing:.05em}
.card>h3:first-child .chip,.card>h3:first-child .sec,.card>h3:first-child .btn,.card>h3:first-child label,.card>h3:first-child a{text-transform:none;letter-spacing:0}
.card>h3:first-child .btn{font-size:12.5px}
.card>h3:first-child .sec{font-weight:400}
.card>h3:first-child+.ayuda{margin-top:-2px}
.card.sin>div:first-child{padding:12px 12px 0 !important}
.card.sin>div:first-child+div{padding:0 12px 10px !important}
h2.sec{background:var(--band-bg);color:var(--band-fg);padding:6px 12px;border-radius:var(--r2);font-size:12px;text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--borde)}
h2.sec .sec{color:var(--texto-3);text-transform:none;letter-spacing:0}
.card>h3:first-child+.filtros,.card>h3:first-child+.perm-grupo{margin-top:2px}

/* ─── login ─── */
.login{max-width:380px;margin:12vh auto;padding:0 16px}
.login .card{padding:20px;gap:12px}
.login .marca-l{display:flex;align-items:center;gap:10px}
.login .marca-l svg{width:34px;height:34px;flex:none}

/* ─── activación por código ─── */
.desafio input{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:18px;letter-spacing:4px;text-align:center;height:36px}
.respuesta{margin-top:10px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:28px;line-height:38px;text-align:center;letter-spacing:4px;background:var(--ok-s);color:var(--ok);border-radius:var(--r);padding:6px;user-select:all;overflow-wrap:anywhere}

/* ─── equipos ─── */
.eq-nom{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.eq-nom .nm{overflow-wrap:anywhere}
.lapiz{background:transparent;border:1px solid transparent;color:var(--texto-3);cursor:pointer;border-radius:5px;padding:2px 5px;line-height:1}
.lapiz:hover{background:var(--sup-2);border-color:var(--borde)}
.eq-input{height:var(--alto-btn);border:1px solid var(--acento);border-radius:var(--r);padding:0 8px;font:inherit;font-size:13px;background:var(--sup);color:var(--texto);width:min(220px,100%)}
tr.uso td{background:var(--sup-2);font-size:12px;color:var(--texto-2)}
tr.de-baja td{opacity:.7}

/* ─── gráficos (SVG y Chart.js) ─── */
.graf-svg{width:100%;height:auto;display:block}
.fila-barra{display:block;margin:0 0 6px;color:inherit;text-decoration:none}
.fila-barra .r{display:flex;justify-content:space-between;gap:8px}
.fila-barra .r span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lienzo{position:relative;height:220px}
.lienzo.alto{height:300px}
.cargando{opacity:.55;transition:opacity .15s}
.st-kpis{display:grid;gap:0;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:12px;border:1px solid var(--borde);border-radius:var(--r2);background:var(--sup);overflow:hidden}
.kpi-t{background:transparent;border:0;border-right:1px solid var(--borde);border-bottom:1px solid var(--borde);margin:0 -1px -1px 0;border-radius:0;padding:8px 12px;min-width:0}
.kpi-t .l{font-size:11.5px;line-height:16px;color:var(--texto-3);font-weight:500}
.kpi-t .v{font-size:20px;line-height:26px;font-weight:600;overflow-wrap:anywhere}
.kpi-t .s{font-size:11.5px;line-height:16px;color:var(--texto-3);overflow-wrap:anywhere}
.calor{display:grid;grid-template-columns:34px repeat(24,minmax(0,1fr));gap:2px;font-size:11px}
.calor .et{color:var(--texto-3);display:flex;align-items:center}
.calor .hr{color:var(--texto-3);text-align:center}
.calor .c{aspect-ratio:1/1;border-radius:3px;min-height:8px}
.calor .c:hover,.calor .c:focus-visible{outline:2px solid var(--acento);outline-offset:0}
.escala{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:11.5px;color:var(--texto-3);flex-wrap:wrap}
.escala span.g{width:18px;height:10px;border-radius:2px;display:inline-block}
.st-tip{position:fixed;z-index:80;pointer-events:none;background:var(--sup);border:1px solid var(--borde-2);border-radius:var(--r);padding:6px 9px;font-size:12px;color:var(--texto-2);box-shadow:var(--sombra)}
.st-tip b{color:var(--texto);font-size:12.5px}
.tabla-alt table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:8px}
.tabla-alt th,.tabla-alt td{padding:4px 6px;border-bottom:1px solid var(--borde);text-align:left}
.tabla-alt .n{text-align:right}
.graf-cab{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.graf-cab .sp{flex:1}
table.ses{min-width:780px}
table.ses tr.ses-fila{cursor:pointer}
table.ses .sub,.ses table .sub{color:var(--texto-3);font-size:11.5px}
table.ses tr.det td{background:var(--sup-2);padding:8px 12px 12px}
.abierta{font-size:11px;font-weight:600;padding:0 6px;border-radius:999px;background:var(--ok-s);color:var(--ok);margin-left:6px}
.linea-ev{display:grid;grid-template-columns:62px 80px 1fr auto;gap:8px;font-size:12px;padding:3px 0;border-bottom:1px dashed var(--borde)}
.linea-ev .t,.linea-ev .m{color:var(--texto-3)}
.tabla-scroll{overflow:auto;max-height:560px}

/* ─── asistente (lógica en asistente.js): preguntas como filas ─── */
.as-g,.as-r{margin-bottom:0;border-radius:0;border-width:0 0 1px 0;padding:8px 12px}
#asLista>.as-g:first-child,#asRespuestas>.as-r:first-child{border-top:1px solid var(--borde)}
#asLista>.as-g,#asRespuestas>.as-r{border-left:1px solid var(--borde);border-right:1px solid var(--borde)}
#asLista>.as-g:first-child{border-radius:var(--r2) var(--r2) 0 0}
#asLista>.as-g:last-child{border-radius:0 0 var(--r2) var(--r2)}
.as-g.sel{background:var(--acento-suave)}
/* Opción A: cada pregunta es una fila; los botones a la derecha (en el celular, abajo) */
@media (min-width:761px){
  .as-g{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px;align-items:start}
  .as-g>*{grid-column:1}
  .as-g>.as-acc{grid-column:2;grid-row:1 / span 3;align-self:center;margin-top:0;justify-content:flex-end}
  .as-g>.as-form,.as-g>.as-det,.as-g>.as-resp{grid-column:1 / -1}
}
.as-preg{display:flex;gap:8px;align-items:flex-start}
.as-preg .txt{flex:1;min-width:0;font-weight:600;font-size:13px;overflow-wrap:anywhere}
.as-veces{flex:none;font-weight:600;font-size:11.5px;line-height:18px;padding:0 8px;border-radius:999px;background:var(--sup-3);color:var(--texto-2);white-space:nowrap}
.as-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.as-chip{font-size:11px;line-height:18px;font-weight:600;padding:0 7px;border-radius:999px;background:var(--neutro-s);color:var(--neutro);white-space:nowrap}
.as-chip.t-sin_respuesta,.as-chip.t-bloqueada{background:var(--mal-s);color:var(--mal)}
.as-chip.t-no_sirvio,.as-chip.t-guia_dudosa{background:var(--av-s);color:var(--av)}
.as-chip.t-modelo{background:var(--info-s);color:var(--info)}
.as-chip.e-reentrenada{background:var(--ok-s);color:var(--ok)}
.as-chip.a-trabajando,.as-chip.a-enviada{background:var(--info-s);color:var(--info)}
.as-chip.a-pr{background:var(--ok-s);color:var(--ok)}
.as-chip.a-espera,.as-chip.a-descartar,.as-chip.a-inexistente,.as-chip.a-sinpr{background:var(--av-s);color:var(--av)}
.as-chip.a-error,.as-chip.a-detenida{background:var(--mal-s);color:var(--mal)}
.as-ag .as-chips{align-items:center}
/* Asistente automático (21/10/2026): barra de interruptores, modo por empresa y estados de publicación */
.as-auto{flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px 22px;padding:8px 12px;margin-bottom:10px}
.as-auto .sw .t small{max-width:320px}
.as-auto .campo select{min-width:150px}
.as-auto .vuelta{flex:1 1 260px;font-size:12px;line-height:17px;color:var(--texto-3)}
.as-auto-emp{margin-bottom:10px;overflow-x:auto}
.as-auto-emp td{vertical-align:middle}
.as-auto-emp td.queda{white-space:nowrap;font-size:12px;color:var(--texto-3)}
.as-chip.p-borrador{background:var(--av-s);color:var(--av)}
.as-chip.p-auto{background:var(--info-s);color:var(--info)}
.as-chip.p-publicada{background:var(--ok-s);color:var(--ok)}
.as-motivos{margin:4px 0 0;padding-left:18px;font-size:12px;color:var(--texto-3)}
/* Barra de progreso del entrenamiento (21/10/2026): etapa real que devuelve el hub. */
.as-prog{margin-top:8px;border:1px solid var(--borde);border-radius:var(--r);padding:8px 10px;background:var(--sup-2)}
.as-prog .cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:12.5px;color:var(--texto)}
.as-prog .cab b{font-size:15px;color:var(--info)}
.as-prog .cab .n{margin-left:auto;font-size:11.5px;color:var(--texto-3)}
.as-prog .riel{margin-top:6px;height:8px;border-radius:999px;background:var(--sup-3);overflow:hidden}
.as-prog .riel span{display:block;height:100%;border-radius:999px;background:var(--info);transition:width .4s ease}
.as-prog.ok .cab b{color:var(--ok)}.as-prog.ok .riel span{background:var(--ok)}
.as-prog.av .cab b{color:var(--av)}.as-prog.av .riel span{background:var(--av)}
.as-prog.mal .cab b{color:var(--mal)}.as-prog.mal .riel span{background:var(--mal)}
.as-prog .etapas{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:2px 12px;font-size:11.5px;color:var(--texto-3)}
.as-prog .etapas li::before{content:'○ '}
.as-prog .etapas li.hecha{color:var(--texto-2)}.as-prog .etapas li.hecha::before{content:'✓ ';color:var(--ok)}
.as-prog .etapas li.actual{color:var(--texto);font-weight:600}.as-prog .etapas li.actual::before{content:'● ';color:var(--info)}
.as-aviso{margin-top:8px;border-radius:var(--r);padding:8px 10px;font-size:13px;border:1px solid transparent}
.as-aviso b{font-weight:600}.as-aviso div{margin-top:2px;font-size:12.5px;overflow-wrap:anywhere}
.as-aviso.ok{background:var(--ok-s);color:var(--ok);border-color:var(--ok)}
.as-aviso.av{background:var(--av-s);color:var(--av);border-color:var(--av)}
.as-aviso.mal{background:var(--mal-s);color:var(--mal);border-color:var(--mal)}
/* «Ya tiene entrenamiento» (22/10/2026): lista de lo existente + Reemplazar / Mejorar / Cancelar */
.as-existe{margin:6px 0 2px;padding-left:18px;font-size:12.5px;color:inherit}
.as-existe li{margin:2px 0;overflow-wrap:anywhere}
.as-aviso .as-acc{margin-top:8px}
/* Reentrenar: pedido de la última corrida (modo + comentario) y opciones del diálogo (22/10/2026) */
.as-pedido{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;margin-top:8px;font-size:12.5px;color:var(--texto-2)}
.as-pedido .rd-com{flex:1 1 240px;min-width:0;overflow-wrap:anywhere;white-space:pre-line}
.as-chip.a-modo{background:var(--info-s);color:var(--info)}
.rd-opciones{margin:8px 0 0;padding-left:18px;font-size:13px;line-height:19px}
.rd-opciones li{margin:3px 0}
.as-chip.a-existente,.as-chip.a-cancelada{background:var(--av-s);color:var(--av)}
.as-consola{margin-top:8px;max-height:320px;overflow:auto;background:var(--sup-2);border:1px solid var(--borde);border-radius:var(--r);padding:8px 10px;font:12.5px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--texto)}
.as-consola .paso{color:var(--texto-2)}
.as-consola .txt{white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0}
.as-consola .fin{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:6px;padding-top:6px;border-top:1px solid var(--borde);font-weight:500}
.as-consola .fin.mal{color:var(--mal)}
.as-meta{margin-top:4px;font-size:12px;color:var(--texto-3);display:flex;flex-wrap:wrap;gap:2px 12px}
.as-meta b{color:var(--texto-2);font-weight:600;overflow-wrap:anywhere}
.as-resp{margin-top:6px;background:var(--sup-2);border:1px solid var(--borde);border-radius:var(--r);padding:6px 10px;font-size:12.5px;color:var(--texto);white-space:pre-wrap;overflow-wrap:anywhere;max-height:9.5em;overflow:hidden}
.as-resp.abierta{max-height:none;background:var(--sup-2);color:var(--texto);margin-left:0;padding:6px 10px;font-size:12.5px;font-weight:400;border-radius:var(--r)}
.as-resp .et{display:block;font-size:11.5px;color:var(--texto-3);font-weight:600;margin-bottom:2px;white-space:normal}
.as-resp.aprendida{border-color:var(--ok);background:var(--ok-s)}
.as-mas{background:transparent;border:0;color:var(--acento);padding:2px 0;font-size:12px;font-weight:600;cursor:pointer}
.as-acc{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;align-items:center}
.as-form{margin-top:8px;padding:10px;border:1px solid var(--borde-2);border-radius:var(--r);background:var(--sup-2)}
.as-form .campos{display:flex;flex-wrap:wrap;gap:8px}
.as-form .campo{flex:1 1 220px}
.as-form .campo.ancho{flex-basis:100%}
.as-form .campo textarea.larga{min-height:140px}
.as-form .acciones{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.as-form label .hint,.hint{font-weight:400;color:var(--texto-3);font-size:12px}
.as-det{margin-top:8px;overflow:auto}
.as-det table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:640px}
.as-det th{font-size:11.5px;color:var(--texto-2);text-align:left;padding:5px 6px;border-bottom:1px solid var(--borde-2)}
.as-det td{padding:5px 6px;border-bottom:1px solid var(--borde);vertical-align:top;overflow-wrap:anywhere}
.as-r.inactiva{opacity:.6}
.as-vacio{color:var(--texto-3);padding:24px 0;text-align:center}
.as-resumen{margin:-2px 0 8px}

/* ─── tablas con las funciones de los listados de Angular (tabla.js, 20/10/2026) ─── */
.tp{min-width:0}
.tp-barra{align-items:flex-end}
.tp-herr{display:flex;gap:4px;flex-wrap:wrap;align-items:center;margin-left:auto}
.btn.tp-ib{width:var(--alto-btn);padding:0;color:var(--texto-2)}
.btn.tp-ib:hover{color:var(--texto)}
.btn.tp-ib.on,.btn.tp-ib[aria-pressed="true"],.btn.tp-ib[aria-expanded="true"]{background:var(--acento-suave);color:var(--acento);border-color:var(--acento)}
table.tp-t th{user-select:none}
table.tp-t th[draggable="true"]{cursor:grab}
table.tp-t th.arr{opacity:.5}
table.tp-t th.drop-izq{box-shadow:inset 3px 0 0 var(--acento)}
table.tp-t th.drop-der{box-shadow:inset -3px 0 0 var(--acento)}
.tp-ord{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;white-space:nowrap;text-align:inherit}
.tp-ord:hover{color:var(--texto)}
th.num .tp-ord{flex-direction:row-reverse}
.tp-ord:focus-visible{outline:2px solid var(--oro);outline-offset:2px;border-radius:4px}
.tp-hint{display:inline-flex;opacity:.45;color:var(--texto-3)}
.tp-hint svg{width:12px;height:12px}
th:hover .tp-hint,.tp-ord:focus-visible .tp-hint{opacity:1}
.tp-badge{display:inline-flex;align-items:center;gap:1px;font-size:10.5px;line-height:15px;padding:0 4px;border-radius:999px;background:var(--acento-suave);color:var(--acento);font-weight:700}
table.t th.tp-acc,table.t td.tp-acc{text-align:right;width:1%}
table.t td.tp-acc{white-space:nowrap}
table.t td.tp-nw{white-space:nowrap}
table.t td .sec.tp-1l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:340px}
table.t td .sec.tp-1l.angosto{max-width:130px}
/* 21/10/2026: con la columna «Nota» de Empresas, la tabla tiene que seguir entrando a 1366 (menú de 216 px) */
@media (max-width:1500px){table.t td .sec.tp-1l.angosto{max-width:96px}}
table.t tr.tp-filtros th{position:static;background:var(--sup);padding:4px 6px;border-bottom:1px solid var(--borde);height:auto}
.tp-fin{height:26px;width:100%;min-width:90px;border:1px solid var(--borde-2);border-radius:var(--r);padding:0 6px;font:inherit;font-size:12px;background:var(--sup);color:var(--texto)}
.tp-fin:focus{border-color:var(--acento);box-shadow:0 0 0 2px var(--acento-suave);outline:0}
.tp-fbtn{display:flex;align-items:center;justify-content:space-between;gap:4px;height:26px;width:100%;min-width:90px;max-width:220px;border:1px solid var(--borde-2);border-radius:var(--r);padding:0 4px 0 6px;font:inherit;font-size:12px;font-weight:400;background:var(--sup);color:var(--texto-2);cursor:pointer;text-align:left}
.tp-fbtn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.tp-fbtn svg{flex:none;color:var(--texto-3);width:14px;height:14px}
.tp-fbtn.on{border-color:var(--acento);color:var(--acento);background:var(--acento-suave);font-weight:600}
table.t tr.tp-grupo td{background:var(--sup-3);color:var(--texto-2);padding:0 10px;height:var(--alto-th);font-size:12px}
table.t tr.tp-grupo td span{color:var(--texto-3);margin-left:6px}
table.t tr.tp-grupo:hover td{background:var(--sup-3)}
table.t tr.tp-desp{cursor:pointer}
table.t tr.tp-desp[aria-expanded="true"] td{background:var(--acento-suave)}
table.t tr.tp-det td{background:var(--sup-2);padding:8px 12px 12px;font-size:12px;color:var(--texto-2);height:auto}
/* Opcionales de tabla.js (26/10/2026, Factura electrónica): cebra, alto propio con encabezado fijo y
   herramientas en dos grupos con rótulo. Una tabla que no los pide queda igual. */
table.t.tp-cebra tbody tr.tp-impar td{background:color-mix(in srgb,var(--sup-3) 65%,var(--sup))}
table.t.tp-cebra tbody tr:hover td,table.t.tp-cebra tbody tr.tp-impar:hover td{background:color-mix(in srgb,var(--acento-suave) 60%,var(--sup))}
table.t.tp-cebra tbody tr.tp-desp[aria-expanded="true"] td{background:var(--acento-suave)}
table.t.tp-cebra tbody tr.tp-desp[aria-expanded="true"] td:first-child{box-shadow:inset 3px 0 0 var(--navy)}
table.t.tp-cebra tbody tr.tp-det td{background:var(--acento-suave);box-shadow:inset 3px 0 0 var(--navy);border-bottom:1px solid var(--borde-2)}
.tabla-wrap.tp-alto{max-height:max(420px,calc(100vh - 150px));max-height:max(420px,calc(100dvh - 150px));overscroll-behavior:contain}
.tabla-wrap.tp-alto table.t thead th{z-index:2}
.tp-herr.tp-rot{gap:8px;align-items:flex-end}
.tp-gr{display:flex;flex-direction:column;align-items:center;gap:3px}
.tp-rotulo{font-size:10.5px;line-height:13px;color:var(--texto-3);font-weight:500}
.tp-btns{display:inline-flex}
.tp-btns .btn{border-radius:0;margin-left:-1px}
.tp-btns .btn:first-child{border-radius:var(--r) 0 0 var(--r);margin-left:0}
.tp-btns .btn:last-child,.tp-btns .btn:has(+ [hidden]):not(:first-child){border-radius:0 var(--r) var(--r) 0}
.tp-btns .btn:focus-visible,.tp-btns .btn:hover{position:relative;z-index:1}
.btn.tp-ib.tp-tx{width:auto;padding:0 9px;gap:5px;font-size:12.5px;font-weight:600;color:var(--texto)}
.btn.tp-ib.tp-tx svg{width:16px;height:16px}
.tp-pie{row-gap:6px}
.tp-pie .btn.texto{height:24px;min-height:24px}
.tp-pag{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tp-pp{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.tp-pp select{height:var(--alto-btn);border:1px solid var(--borde-2);border-radius:var(--r);background:var(--sup);color:var(--texto);font:inherit;font-size:12px;padding:0 6px}
.tp-nav{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.tp-nav .btn.chico{min-width:28px;padding:0 6px}
.tp-pop{position:fixed;z-index:46;background:var(--sup);border:1px solid var(--borde-2);border-radius:8px;box-shadow:var(--sombra);width:min(320px,calc(100vw - 16px));max-height:min(72vh,560px);overflow:auto;color:var(--texto)}
.tp-pop-tit{position:sticky;top:0;z-index:1;padding:7px 12px;background:var(--sup-2);color:var(--texto-2);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--borde)}
.tp-pop-cuerpo{padding:8px 10px 10px}
.tp-pop .tp-ayuda{margin:0 0 6px;font-size:12px;line-height:17px;color:var(--texto-3)}
.tp-pop .tp-ayuda:last-child{margin:6px 0 0}
.tp-pop-pie{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap;margin-top:8px;padding-top:8px;border-top:1px solid var(--borde)}
.tp-cols{list-style:none;margin:0;padding:0}
.tp-cols li{display:flex;align-items:center;gap:4px;padding:1px 0;border-radius:5px}
.tp-cols li.arr{opacity:.5}
.tp-cols li .ck{flex:1;min-width:0;min-height:28px}
.tp-cols li .ck span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tp-asa{color:var(--texto-3);cursor:grab;display:inline-flex;flex:none}
.tp-mv{width:26px;height:26px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--texto-2);cursor:pointer;display:grid;place-items:center;flex:none}
.tp-mv:hover{background:var(--sup-2);border-color:var(--borde)}
.tp-mv[disabled]{opacity:.3;cursor:default}
.tp-valores{display:flex;flex-direction:column;max-height:300px;overflow:auto}
.tp-valores .ck{min-height:28px}
.tp-lista-acc{display:flex;gap:4px;flex-wrap:wrap;margin:-4px 0 6px -6px}
.tp-rango{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tp-radios{display:flex;flex-direction:column}
/* ─── tablas «Opción C» (02/11/2026, Factura electrónica): barra de una fila, densidad, texto completo,
       ordenar por varias columnas, consolidar, plantillas y WhatsApp. Sólo las tablas con estilo:'c'. ─── */
.tp-herr.tp-herr-c{gap:2px;flex-wrap:nowrap}
.tp-c .tp-herr-c .btn.tp-ib{width:30px;height:28px;min-height:28px;border-color:transparent;background:transparent}
.tp-c .tp-herr-c .btn.tp-ib:hover{background:var(--sup-2);border-color:var(--borde)}
.tp-c .tp-herr-c .btn.tp-ib.on,.tp-c .tp-herr-c .btn.tp-ib[aria-pressed="true"],.tp-c .tp-herr-c .btn.tp-ib[aria-expanded="true"]{background:var(--acento-suave);color:var(--acento);border-color:color-mix(in srgb,var(--acento) 45%,transparent)}
.tp-c .tp-herr-c .btn.tp-ib svg{width:18px;height:18px}
.tp-c .tp-herr-c .btn.tp-wa{color:#1f8a4c}
:root[data-theme="dark"] .tp-c .tp-herr-c .btn.tp-wa{color:#5fd08f}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .tp-c .tp-herr-c .btn.tp-wa{color:#5fd08f}}
.tp-sep{width:1px;height:18px;background:var(--borde);margin:0 4px;flex:none}
.tp-dens{display:inline-flex}
.btn.tp-plant{height:28px;min-height:28px;gap:5px;padding:0 9px;font-weight:600;font-size:12.5px;max-width:190px}
.btn.tp-plant .tp-plant-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn.tp-plant.on{background:var(--acento-suave);color:var(--acento);border-color:var(--acento)}
.tp-c table.t td{padding:6px 8px;height:auto;vertical-align:top;line-height:1.35}
.tp-c table.t th{padding:0 8px;white-space:normal;line-height:14px;height:auto;min-height:var(--alto-th);padding-top:6px;padding-bottom:6px;vertical-align:bottom;font-size:12px}
.tp-c.tp-compacta table.t td{padding:3px 8px;font-size:12.5px;line-height:1.25}
.tp-c table.t td .sec{display:block;font-size:12px;line-height:16px;margin-top:1px}
.tp-c.tp-compacta table.t td .sec{display:inline;margin-left:6px}
.tp-c.tp-compacta table.t td .sec.blq{display:block;margin-left:0}
.tp-c table.t tr.tp-click{cursor:pointer}
.tp-c table.t tr.tp-click:focus-visible td{outline:0;background:var(--acento-suave)}
.tp-c table.t tr.tp-abierta td{background:var(--acento-suave) !important}
.tp-c table.t tr.tp-abierta td:first-child{box-shadow:inset 3px 0 0 var(--navy)}
:root[data-theme="dark"] .tp-c table.t tr.tp-abierta td:first-child{box-shadow:inset 3px 0 0 var(--acento)}
table.t tr.tp-cons{cursor:pointer}
table.t tr.tp-cons:hover td,table.t tr.tp-cons:focus-visible td{background:var(--acento-suave)}
table.t tfoot td{font-weight:600;background:var(--sup-2);border-top:1px solid var(--borde-2)}
/* textos largos: 2 renglones en cómoda, 1 en compacta, enteros con «Texto completo» */
.tp-c .tp-2l{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}
.tp-c .tp-1l{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tp-c.tp-compacta .tp-2l{-webkit-line-clamp:1}
.tp-c.tp-texto .tp-2l,.tp-c.tp-texto .tp-1l{display:block;-webkit-line-clamp:unset;white-space:normal;overflow:visible}
.tp-ord-l{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.tp-ord-l li{display:flex;align-items:center;gap:6px}
.tp-ord-l select{flex:1;min-width:0;height:28px;border:1px solid var(--borde-2);border-radius:var(--r);background:var(--sup);color:var(--texto);font:inherit;font-size:12.5px;padding:0 4px}
.tp-ord-l .btn.chico{white-space:nowrap;gap:3px}
.tp-ord-n{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--acento-suave);color:var(--acento);font-weight:700;font-size:11.5px;flex:none}
.tp-pl{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:2px}
.tp-pl li{display:flex;align-items:center;gap:4px;border-radius:5px}
.tp-pl li.act{background:var(--acento-suave)}
.tp-pl-ap{flex:1;min-width:0;display:flex;align-items:center;gap:5px;min-height:30px;padding:0 6px;border:0;background:transparent;color:var(--texto);text-align:left;cursor:pointer;font:inherit;border-radius:5px}
.tp-pl-ap:hover{background:var(--sup-2)}
.tp-pl-ap .sec{margin-left:auto}
.tp-pop .campo{margin-top:4px}
.tp-pop .campo label{display:block;font-size:12px;font-weight:600;color:var(--texto-2);margin-bottom:3px}
.tp-pop .campo input{width:100%;height:30px;border:1px solid var(--borde-2);border-radius:var(--r);padding:0 8px;background:var(--sup);color:var(--texto)}
@media (max-width:1100px){.tp-herr.tp-herr-c{flex-wrap:wrap}}

/* ─── versión nueva del panel (21/10/2026): franja fija arriba del contenido ─── */
.franja-version{position:fixed;top:8px;left:232px;right:16px;max-width:1728px;z-index:35;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 8px 6px 12px;border:1px solid color-mix(in srgb,var(--info) 45%,var(--borde));border-radius:var(--r2);background:var(--info-s);color:var(--info);box-shadow:var(--sombra);font-weight:500}
.franja-version span{flex:1 1 200px;min-width:0;color:var(--texto);overflow-wrap:anywhere}
.franja-version svg{flex:none}
body.con-franja main{padding-top:58px}

/* ─── adaptación: menú por hamburguesa (≤ 760 px), tablas apiladas sin scroll horizontal ─── */
@media (max-width:1000px){
  .grid.c13{grid-template-columns:1fr !important}
}
@media (max-width:760px){
  .top{display:flex}
  .shell{grid-template-columns:1fr;background:none}
  .lat{display:none;position:fixed;left:0;top:48px;bottom:0;height:auto;width:min(290px,86vw);box-shadow:4px 0 20px rgba(0,0,0,.25)}
  .lat.on{display:flex}
  .lat .marca{display:none}
  .lat-busca kbd{display:none}
  main{padding:12px max(16px,env(safe-area-inset-right,0px)) 40px max(16px,env(safe-area-inset-left,0px))}
  .barra-fija{margin:16px -16px -40px;padding:8px 16px}
  .kpis{display:grid;grid-template-columns:1fr 1fr}
  .kpis .kpi+.kpi{border-left:0}
  .kpis .kpi:nth-child(even){border-left:1px solid var(--borde)}
  .kpis .kpi:nth-child(n+3){border-top:1px solid var(--borde)}
  .lista.alertas .it{grid-template-columns:8px minmax(0,1fr);padding:8px 12px 8px 0}
  .lista.alertas .it .acc{grid-column:2;justify-content:flex-start;margin-top:6px}
  .lista .it{flex-wrap:wrap}
  .lista .it .acc{width:100%;justify-content:flex-start}
  .dl{grid-template-columns:1fr}
  .dl dt{border-bottom:0;padding-bottom:0}
  .dl dd{padding-left:12px}
  .emp-cab .chips{margin-left:0;width:100%}
  .tabs{flex-wrap:wrap;overflow:visible}
  .seg{flex-wrap:wrap;height:auto}
  .seg button{height:var(--alto-btn);border-bottom:1px solid var(--borde)}
  .li-cuentas{margin-left:0}
  /* tablas → filas apiladas de 2 columnas (cada dato con su título), sin scroll horizontal */
  .tabla-wrap{overflow:visible}
  table.tp-t{min-width:0 !important;display:block}
  table.tp-t thead{display:block}
  table.tp-t thead tr:first-child{display:flex;flex-wrap:wrap;gap:4px 10px;padding:6px 10px;background:var(--sup-2);border-bottom:1px solid var(--borde-2)}
  table.tp-t thead tr:first-child th{position:static;height:auto;padding:0;border:0;background:transparent;min-width:0 !important}
  table.tp-t thead tr:first-child th.tp-acc{display:none}
  table.tp-t thead tr.tp-filtros{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;padding:6px 10px;border-bottom:1px solid var(--borde)}
  table.tp-t thead tr.tp-filtros th{border:0;padding:0;display:block}
  table.tp-t thead tr.tp-filtros th:empty{display:none}
  table.tp-t thead tr.tp-filtros th[data-l]::before{content:attr(data-l);display:block;font-size:11px;color:var(--texto-3);font-weight:600}
  table.tp-t tbody,table.tp-t tfoot{display:block}
  table.tp-t tbody tr,table.tp-t tfoot tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px 12px;padding:8px 12px;border-bottom:1px solid var(--borde)}
  table.tp-t tbody tr:last-child{border-bottom:0}
  table.tp-t td{display:block;height:auto;padding:0;border:0 !important;min-width:0 !important;overflow-wrap:anywhere;white-space:normal !important;text-align:left !important}
  table.tp-t td[data-l]::before{content:attr(data-l);display:block;font-size:11px;line-height:15px;color:var(--texto-3);font-weight:600}
  table.tp-t td.tp-prim,table.tp-t td:has(.seg3),table.tp-t td:has(.tri){grid-column:1/-1}
  table.tp-t td.tp-prim{order:-1}
  table.tp-t td .seg3{max-width:100%;flex-wrap:wrap;height:auto}
  table.tp-t td.tp-prim::before{display:none !important}
  table.tp-t td.tp-acc{grid-column:1/-1;width:auto}
  table.tp-t td.tp-acc:empty{display:none}
  table.tp-t td .ck.nota{min-height:32px}
  table.tp-t td .ck.nota input{width:20px;height:20px}
  table.tp-t td .acc{justify-content:flex-start;flex-wrap:wrap}
  table.tp-t td.vacio{grid-column:1/-1}
  table.tp-t tr.tp-grupo,table.tp-t tr.tp-det,table.tp-t tr.fila-confirma{display:block;padding:6px 12px}
  table.tp-t tr.tp-grupo td,table.tp-t tr.tp-det td,table.tp-t tr.fila-confirma td{display:block}
  table.tp-t tbody tr:hover td{background:transparent}
  .tabla-wrap.tp-alto{max-height:none}
  table.tp-t.tp-cebra tbody tr.tp-impar{background:color-mix(in srgb,var(--sup-3) 65%,var(--sup))}
  table.tp-t.tp-cebra tbody tr td,table.tp-t.tp-cebra tbody tr.tp-impar td,table.tp-t.tp-cebra tbody tr:hover td{background:transparent;box-shadow:none}
  table.tp-t.tp-cebra tbody tr.tp-desp[aria-expanded="true"]{background:var(--acento-suave)}
  .tp-herr.tp-rot{width:100%;justify-content:space-between}
  table.t td .sec.tp-1l{white-space:normal;max-width:none}
  /* 21/10/2026: un chip largo («se cierra a los 30 min (de siempre)» en Usuarios) hace salto de línea
     dentro de la fila apilada en vez de cortarse con «…» */
  table.tp-t td .chip{white-space:normal;height:auto;min-height:18px;padding:2px 8px;line-height:14px;text-overflow:clip;overflow:visible}
  .franja-version{left:10px;right:10px;top:56px}
  body.con-franja main{padding-top:64px}
  table.li-t td{padding:4px 10px}
  table.li-t td.c{white-space:normal}
}
@media (max-width:600px){
  :root{--alto-btn:44px}
  .btn,.btn.chico{font-size:14px;padding:0 14px}
  .btn.tp-ib,.btn.ico,.btn.mas{width:44px}
  .campo.w160,.campo.w200,.campo.w240,.campo.busca{width:100%;flex:1 1 100%}
  .campo.busca svg{bottom:15px}
  .campo.busca input{padding-left:32px}
  .campo input,.campo select,.campo textarea,.confirma input,.eq-input{font-size:16px}
  .seg{width:100%}
  .seg button{flex:1 1 auto;font-size:14px}
  .tri{height:40px}
  .tri button{min-width:44px}
  .tri button svg{width:18px;height:18px}
  .seg3{height:40px}
  .seg3 button{font-size:13px;padding:0 10px;min-height:40px}
  .sw input{width:44px;height:26px}
  .sw input::after{width:20px;height:20px}
  .sw input:checked::after{left:21px}
  .ck{min-height:44px}
  .lista-menu button,.lista-menu a{padding:12px;font-size:14px}
  .nav a{height:44px;font-size:15px}
  .lat-busca label{height:44px}
  .lat-busca input{font-size:16px;height:42px}
  .timeline li{grid-template-columns:1fr}
  .kpi .v{font-size:18px}
  .card .pie{flex-wrap:wrap}
  .calor{font-size:9px;grid-template-columns:26px repeat(24,minmax(0,1fr));gap:1px}
  .calor .hr:nth-child(odd){visibility:hidden}
  .respuesta{font-size:24px}
  .tp-herr{margin-left:0}
  .tp-pag{width:100%;justify-content:space-between}
  .tp-pp select,.tp-fin,.tp-fbtn{height:40px;font-size:15px}
  .menu-btn .lista-menu{min-width:min(280px,calc(100vw - 32px))}
  body.con-franja main{padding-top:80px}
}
@media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}
@media print{.top,.lat,.barra-fija{display:none}.shell{display:block}}
#tpImpresion{display:none}
@media print{
  html.tp-imprimiendo body{min-height:0 !important;background:#fff !important}
  html.tp-imprimiendo body>*:not(#tpImpresion){display:none !important}
  html.tp-imprimiendo #tpImpresion{display:block;color:#1c2733;font:8.5pt/1.35 "IBM Plex Sans","Segoe UI",system-ui,sans-serif}
  #tpImpresion .tpi-cab{margin:0 0 6pt}
  #tpImpresion .tpi-marca{display:flex;justify-content:space-between;gap:12pt;font-size:7.5pt;color:#5b6675}
  #tpImpresion h1{font-size:14pt;line-height:1.2;margin:3pt 0 2pt;color:#17304f}
  #tpImpresion p{margin:0;font-size:8pt}
  #tpImpresion table{width:100%;border-collapse:collapse}
  #tpImpresion thead{display:table-header-group}
  #tpImpresion th{background:#17304f !important;color:#fff !important;-webkit-print-color-adjust:exact;print-color-adjust:exact;text-align:left;padding:3pt 4pt;font-size:8pt;font-weight:600}
  #tpImpresion td{border-bottom:.5pt solid #c8d0db;padding:2.5pt 4pt;vertical-align:top;font-size:8pt}
  #tpImpresion .n{text-align:right}
  #tpImpresion tr{break-inside:avoid}
  #tpImpresion tr.g td{background:#e6eefb !important;color:#1f4e9a;font-weight:600;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  #tpImpresion tr.t td{font-weight:700;border-top:1pt solid #17304f;border-bottom:0}
}

/* «Actualizar sistema» por instalación (23/10/2026, actualizar-sistema.js) */
.ar-versiones{display:flex;align-items:stretch;gap:10px;margin:10px 0 12px;flex-wrap:wrap}
.ar-versiones>div{flex:1 1 150px;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--borde);border-radius:var(--r2);background:var(--sup-2);min-width:0}
.ar-versiones .l{font-size:11.5px;color:var(--texto-3);text-transform:uppercase;letter-spacing:.04em}
.ar-versiones b{font-size:20px;line-height:26px;font-variant-numeric:tabular-nums}
.ar-flecha{align-self:center;font-size:20px;color:var(--texto-3)}
.ar-pasos{list-style:none;display:flex;flex-wrap:wrap;gap:4px;margin:8px 0 0;padding:0}
.ar-pasos li{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:999px;font-size:11.5px;background:var(--neutro-s);color:var(--texto-3)}
.ar-pasos li.hecho{background:var(--ok-s);color:var(--ok)}
.ar-pasos li.actual{background:var(--info-s);color:var(--info);font-weight:700;outline:2px solid color-mix(in srgb,var(--info) 40%,transparent)}
.ar-pasos li.mal{background:var(--mal-s);color:var(--mal);font-weight:700}
.ar-pasos li svg{width:12px;height:12px}
.chip svg{width:12px;height:12px;flex:none}
table.t td.ar-ver{white-space:nowrap}
#arBox details{min-width:0;max-width:100%}
#arBox details .tabla-wrap{max-width:100%;overflow-x:auto}
table.t td.ar-det{white-space:normal;min-width:180px;font-size:12px;line-height:16px}
@media (max-width:760px){.ar-versiones b{font-size:17px}.ar-flecha{display:none}}

/* ── Tarjeta «Acceso de soporte» (26/10/2026, public/soporte.js, docs/SOPORTE-REMOTO.md) ── */
.sp-wrap{margin-top:12px}
.sp-card h3 .sp-ins{height:28px;font-size:12.5px;max-width:240px;text-transform:none;letter-spacing:0}
.sp-card .dl{margin-bottom:0}
.sp-card .aviso.sp-in{margin:8px 0 0}
.sp-token{align-items:center}
/* 27/10/2026: el token en un campo de sólo lectura (se selecciona entero al tocarlo) que sobrevive a los re-render. */
.sp-token-cuerpo{flex:1 1 260px;min-width:0}
.sp-tok-et{display:block;margin-top:8px;font-size:12px;color:var(--texto-2)}
.sp-tok{display:block;box-sizing:border-box;width:100%;margin-top:4px;padding:8px 10px;border-radius:8px;background:var(--sup);border:1px dashed color-mix(in srgb,var(--ok) 55%,var(--borde));font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px;line-height:20px;height:38px;resize:none;overflow:hidden;word-break:break-all;white-space:pre-wrap;user-select:all;color:var(--texto)}
.sp-tok:focus{outline:0;border-style:solid;border-color:var(--ok);box-shadow:0 0 0 2px color-mix(in srgb,var(--ok) 25%,transparent)}
.sp-token .sp-token-cuerpo .acc{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.sp-copiar.hecho{background:var(--ok);border-color:var(--ok);color:#fff}
.sp-acc.izq{justify-content:flex-start;align-items:center}
.sp-acc.izq .sec{flex:1 1 220px}
.sp-permisos>div{flex:1 1 260px;min-width:0}
.sp-faltan{margin:6px 0 4px;padding-left:18px}
.sp-faltan li{margin:2px 0}
.sp-card .aviso.sp-in>div{flex:1 1 260px;min-width:0}
.sp-largo{overflow-wrap:anywhere;white-space:normal}
.sp-filas{margin-top:6px}
.sp-filas>div{max-height:420px;overflow:auto}
.sp-filas td.sp-amb{white-space:nowrap}
.sp-filas .tabla-wrap{max-width:100%;overflow-x:auto}
.sp-filas table.t{min-width:560px}
.sp-filas td.sp-obj{white-space:normal;overflow-wrap:anywhere;font-size:12px;line-height:16px}
.sp-resp{display:flex;gap:6px;align-items:flex-start;padding:2px 0}
.sp-resp svg{width:14px;height:14px;color:var(--ok);flex:none;margin-top:2px}
.sp-resp b{display:block;font-weight:600}
.sp-cmds{margin:12px -12px 0;padding:10px 12px 2px;border-top:1px solid var(--borde);background:color-mix(in srgb,var(--av-s) 45%,var(--sup))}
.sp-cmds h4{margin:0 0 8px;display:flex;align-items:center;gap:6px;font-size:13px;color:var(--texto)}
.sp-cmds h4 svg{width:16px;height:16px;color:var(--av)}
.sp-cmd{border:1px solid var(--borde);border-left:5px solid var(--borde-2);border-radius:var(--r2);background:var(--sup);padding:8px 10px;margin:0 0 10px;min-width:0}
.sp-cmd.activo{border-left-color:var(--av)}
.sp-cmd-cab{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sp-motivo{margin:6px 0 4px;font-size:13px;overflow-wrap:anywhere}
.sp-sql{margin:0;padding:8px 10px;max-height:260px;overflow:auto;background:var(--sup-2);border:1px solid var(--borde);border-radius:8px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;line-height:18px;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--texto)}
.sp-sha{margin:4px 0 0;font-size:12px}
.sp-prueba{display:flex;gap:6px;align-items:flex-start;margin:6px 0 0;font-size:13px}
.sp-prueba svg{width:14px;height:14px;flex:none;margin-top:2px;color:var(--ok)}
.sp-prueba.mal svg{color:var(--mal)}.sp-prueba.av svg{color:var(--av)}
.sp-acc{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;margin-top:8px}
.sp-aud td.sp-det code{font-size:12px;overflow-wrap:anywhere}
/* En celular las .tabla-wrap dejan de scrollear (tablas como tarjetas): la auditoría scrollea adentro, como #arBox. */
.sp-aud .tabla-wrap{max-width:100%;overflow-x:auto}
.sp-aud td .sec{display:block}
@media (max-width:760px){
  .sp-acc .btn{flex:1 1 auto}
  .sp-token .acc{width:100%}
  .sp-token .acc .btn{flex:1 1 auto}
  .sp-tok{height:60px}
  .sp-filas .tabla-wrap{overflow-x:auto}
}

/* ── Disco de cada instalación y botón «Actualizar» de Empresas (27/10/2026, public/disco-estado.js) ── */
.dk-celda{display:flex;flex-direction:column;align-items:flex-start;gap:3px;white-space:nowrap}
.dk-linea{display:flex;align-items:center;gap:6px}
.dk-celda + .dk-host{margin-top:6px}
.dk-host{display:block;font-size:11px;line-height:1.2}
.dk-barra.chica{width:44px;height:6px;margin:0;flex:none}
.dk-barra.sin{background:repeating-linear-gradient(45deg,var(--sup-3) 0 4px,transparent 4px 8px)}
.dk-barra i.av{background:var(--av)}
.dk-gb{font-size:12px;font-variant-numeric:tabular-nums;color:var(--texto)}
.dk-sd{font-size:11.5px}
.dd .dk-barra,.dk-dd .dk-barra{max-width:320px;height:8px;margin:6px 0 2px}
.dk-motivo.mal{color:var(--mal)}.dk-motivo.av{color:var(--av)}
.act-fila{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin-top:4px}
.act-fila .btn.chico{height:24px;min-height:24px;padding:0 8px;font-size:12px}
.act-fila .btn svg{width:13px;height:13px}
table.t td .act-fila .sec{font-size:11px;line-height:13px}
.btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
.btn[aria-disabled="true"]:hover{background:var(--sup)}
.dk-dd .sec.ln,.dk-dd .dk-motivo{display:block}

/* ── Progreso de «Actualizar sistema» (27/10/2026, public/progreso-orden.js): barra con %, fases en filas, banner ── */
.pr-barra{display:flex;align-items:center;gap:10px;margin:10px 0 6px}
.pr-pista{flex:1 1 auto;height:12px;border-radius:6px;background:var(--sup-3);overflow:hidden;min-width:0}
.pr-pista i{display:block;height:100%;background:var(--info);border-radius:6px;transition:width .4s ease}
.pr-pista i.ok{background:var(--ok)}.pr-pista i.mal{background:var(--mal)}
.pr-pct{font-size:15px;font-variant-numeric:tabular-nums;min-width:48px;text-align:right}
.pr-barra.chica{margin:0 0 3px;gap:6px;width:112px}
.pr-barra.chica .pr-pista{height:6px}.pr-barra.chica .pr-pct{font-size:11.5px;min-width:30px}
.pr-mini{display:block}
.pr-fases{list-style:none;margin:6px 0 4px;padding:0;border:1px solid var(--borde);border-radius:var(--r2);overflow:hidden}
.pr-fases li{display:grid;grid-template-columns:22px minmax(0,1fr) auto 64px;align-items:center;gap:10px;padding:6px 10px;border-top:1px solid var(--borde);color:var(--texto-3)}
.pr-fases li:first-child{border-top:0}
.pr-fases .pr-tx{display:flex;flex-direction:column;min-width:0}
.pr-fases .pr-tx b{font-weight:600;font-size:13px;color:inherit}
.pr-fases .pr-tx small{font-size:11.5px;line-height:15px;color:var(--texto-3);overflow-wrap:anywhere}
.pr-fases .pr-est{font-size:11.5px;font-weight:600;white-space:nowrap}
.pr-fases .pr-hora{font-size:12px;font-variant-numeric:tabular-nums;text-align:right;color:var(--texto-2)}
.pr-fases .pr-ico{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%}
.pr-fases .pr-ico svg{width:14px;height:14px}
.pr-fases li.hecha{color:var(--texto)}.pr-fases li.hecha .pr-ico{background:var(--ok-s);color:var(--ok)}.pr-fases li.hecha .pr-est{color:var(--ok)}
.pr-fases li.actual{background:var(--info-s);color:var(--texto)}.pr-fases li.actual .pr-est{color:var(--info)}
.pr-fases li.fallo{background:var(--mal-s);color:var(--texto)}.pr-fases li.fallo .pr-ico{background:var(--mal);color:#fff}.pr-fases li.fallo .pr-est{color:var(--mal)}
.pr-pt{width:8px;height:8px;border-radius:50%;background:var(--borde-2)}
.pr-spin{width:16px;height:16px;border-radius:50%;border:2px solid color-mix(in srgb,var(--info) 25%,transparent);border-top-color:var(--info);animation:prGira .9s linear infinite}
@keyframes prGira{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.pr-spin{animation-duration:3s}}
.pr-det{margin-top:8px}
.pr-det dd{overflow-wrap:anywhere}
.pr-banner{display:flex;gap:12px;align-items:flex-start;margin-top:12px;padding:14px 16px;border-radius:var(--r2);border:1px solid var(--borde)}
.pr-banner>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.pr-banner .pr-tit{font-size:16px}
.pr-banner small{color:var(--texto-3)}
.pr-banner .pr-motivo{font-size:12.5px;overflow-wrap:anywhere}
.pr-banner svg{flex:none;margin-top:1px}
.pr-banner.ok{background:var(--ok-s);border-color:color-mix(in srgb,var(--ok) 45%,var(--borde))}.pr-banner.ok svg{color:var(--ok)}
.pr-banner.mal{background:var(--mal-s);border-color:color-mix(in srgb,var(--mal) 45%,var(--borde))}.pr-banner.mal svg{color:var(--mal)}
.pr-banner.mal.grave{border-width:2px}
@media (max-width:560px){
  .pr-fases li{grid-template-columns:22px minmax(0,1fr) auto;gap:8px}
  .pr-fases .pr-hora{grid-column:2/-1;text-align:left;margin-top:-2px}
  .pr-fases .pr-hora:empty{display:none}
}

/* Rubro de la empresa (28/10/2026): franja de «Listados y módulos» y su hoja con vista previa. */
.rub-franja{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;padding:8px 12px;margin:0 0 10px;border:1px solid var(--borde);border-radius:8px;background:var(--fondo-2,transparent);font-size:13px}
.rub-franja .rub-t{display:inline-flex;align-items:center;gap:6px;color:var(--texto-2);font-weight:600;text-transform:uppercase;font-size:11.5px;letter-spacing:.04em}
.rub-franja .rub-t svg{width:16px;height:16px}
.rub-franja .rub-acc{margin-left:auto;display:flex;flex-wrap:wrap;gap:6px;min-width:0;max-width:100%}
.rub-franja .rub-acc .btn{white-space:normal;height:auto;min-height:var(--alto-btn);text-align:left;max-width:100%;min-width:0;flex:0 1 auto;padding:4px 10px;line-height:1.3}
.rub-ops{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:2px 12px;margin:4px 0 0 26px}
.rub-ops.apag{opacity:.55}
.rub-prev{margin-top:10px;max-height:min(46vh,420px);overflow:auto}
.rub-prev .aviso{margin:8px 0 0}
.rub-l{margin:4px 0 0;padding-left:18px;font-size:13px}
.rub-l li{margin:1px 0}
.li-t small.nota.mano{color:var(--av);font-weight:500}
/* Ficha de permisos (28/10/2026): lo que no aplica a la empresa va plegado al final de cada tarjeta. */
.perm-fuera{margin-top:10px;border-top:1px dashed var(--borde);padding-top:6px}
.perm-fuera>summary{cursor:pointer;color:var(--texto-2);font-size:13px}
.perm-fuera .perm{opacity:.7}
.perm-dash{border:1px solid var(--acento);border-radius:8px;padding:6px 10px}
.perm-dash .perm{border-bottom:0}

/* ── Sucursales y cajas del usuario (29/10/2026, acceso-usuario.js) ── */
.acc-card .acc-est{margin:6px 0 0}
.acc-card .acc-modo .seg{flex-wrap:wrap;height:auto;min-height:var(--alto-btn)}
.acc-card .acc-modo .seg button{min-height:var(--alto-btn);white-space:normal;text-align:left}
.acc-card .acc-busca{margin:8px 0 4px;flex:none;max-width:none}
.acc-lista{display:flex;flex-direction:column;max-height:420px;overflow:auto;border:1px solid var(--borde);border-radius:var(--r);background:var(--sup)}
.acc-suc{padding:6px 10px;border-bottom:1px solid var(--borde)}
.acc-suc:last-child{border-bottom:0}
.acc-suc.on{background:color-mix(in srgb,var(--acento) 6%,var(--sup))}
.acc-suc.sin-erp .acc-cab b{color:var(--texto-2)}
.acc-cab{display:flex;align-items:center;gap:8px;justify-content:space-between;min-height:32px;flex-wrap:wrap}
.acc-cab .chip{flex:none;font-size:11.5px}
.acc-ck{display:inline-flex;align-items:center;gap:8px;cursor:pointer;min-height:30px;min-width:0}
.acc-ck input{width:18px;height:18px;margin:0;flex:none;accent-color:var(--pri);cursor:pointer}
.acc-ck input:disabled{cursor:default}
.acc-ck b{font-weight:600;overflow-wrap:anywhere}
.acc-cajas{display:flex;flex-direction:column;gap:0;margin:2px 0 4px 26px;padding-left:10px;border-left:2px solid var(--borde)}
.acc-cajas .acc-ck{font-size:13px}
.acc-cajas .acc-todas span{font-weight:600}
.acc-cajas .acc-cj.apagada{opacity:.55}
.acc-cajas small.nota{color:var(--av);font-weight:500}
.acc-otras{padding:8px 10px;margin:0}
.acc-res{margin:8px 0 0}
@media (max-width:600px){.acc-lista{max-height:none}.acc-cajas{margin-left:14px}}

/* ── Empresas: columnas más angostas (27/10/2026, Luis: «hay columnas que se pueden achicar»).
   Objetivo: la tabla entra en 1366 sin scroll horizontal y sin ocultar columnas. Sólo #empTabla. ── */
#empTabla .tp-fbtn,#empTabla .tp-fin{min-width:0}
#empTabla table.t tr.tp-filtros th{padding:4px 3px}
@media (min-width:761px){
  #empTabla table.t th.emp-n,#empTabla table.t td.emp-n{width:1%;padding-left:6px;padding-right:6px;white-space:nowrap}
  #empTabla table.t th.emp-angosta,#empTabla table.t td.emp-angosta{width:1%}
}
#empTabla .emp-aprobar{height:24px;min-height:24px;padding:0 8px;font-size:12px;margin:0 0 3px}
#empTabla .emp-acc-estado{display:flex;height:24px;min-height:24px;padding:0 8px;font-size:12px;margin-top:4px;width:max-content}
#empTabla td .sec.tp-1l.emp-sub{max-width:200px}
/* De 761 a 1500 px (1366 con menú): celdas con menos relleno y el subtítulo de la empresa más corto (tooltip con todo).
   En el celular la tabla ya se apila en tarjetas: no se toca. */
@media (min-width:761px) and (max-width:1500px){
  #empTabla td .sec.tp-1l.emp-sub{max-width:132px}
  #empTabla td[data-l="Empresa"] .nm{white-space:normal;overflow-wrap:anywhere;max-width:150px}
  #empTabla table.t thead tr:first-child th,#empTabla table.t tbody td{padding-left:5px;padding-right:5px}
  /* chips de Estado y Guías: pueden ir en dos renglones («sin paquete / publicado») */
  #empTabla td:is([data-l="Estado"],[data-l="Guías"]) .chip{white-space:normal;height:auto;min-height:20px;padding:3px 8px;line-height:1.2;max-width:110px;text-overflow:clip}
  /* Disco: la barra y los GB debajo del estado, apilados */
  #empTabla td[data-l="Guías"]{min-width:100px}
  #empTabla .act-fila .btn svg{display:none}
  #empTabla .dk-linea{flex-direction:column;align-items:flex-start;gap:2px}
  #empTabla .dk-barra.chica{width:64px}
  #empTabla td .sec.tp-1l.angosto{max-width:76px}
}


