/* ============================================================
   TRACEHOLD — Screen-specific styles
   Incidentes · Threat hunting · Enforcement · Listas
   Simulador · Mapa · Mi panel
   ============================================================ */

.searchbox.sm{max-width:none;flex:1;padding:6px 11px;}
.sev-rail-critical{background:var(--coral-500);}
.sev-rail-high{background:var(--amber-500);}
.sev-rail-medium{background:var(--blue-500);}
.sev-rail-low{background:var(--teal-500);}
.spin{animation:kl-spin .7s linear infinite;}
.row-flash-once{animation:kl-rowfade .5s var(--ease-out) both;}
@keyframes kl-rowfade{from{opacity:0;transform:translateY(-3px);}to{opacity:1;transform:none;}}

/* ====================== INCIDENTES ====================== */
.inc-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px;}
/* minmax(0,1fr) y min-width:0 en todo el detalle: con `1fr` a secas la columna
   crece hasta el ancho mínimo de su contenido, y un correo sintético de ~90
   caracteres sin cortes ensanchaba el detalle fuera de la pantalla y movía
   botones como «Cerrar» (hoja de Iker 29-09-2026, IN-12/IN-15). */
.inc-layout{display:grid;grid-template-columns:380px minmax(0,1fr);gap:16px;align-items:start;}
.inc-list-pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--sh-sm);position:sticky;top:72px;max-height:calc(100vh - 92px);}
.inc-list-tools{padding:12px;border-bottom:1px solid var(--divider);}
.inc-list{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:7px;}
.inc-card{position:relative;text-align:left;width:100%;cursor:pointer;flex-shrink:0;padding:11px 12px 11px 15px;border-radius:11px;border:1px solid var(--border);background:var(--surface);transition:border-color .14s,background .14s,transform .1s;overflow:hidden;}
.inc-card:hover{border-color:var(--border-strong);background:var(--surface-hover);}
.inc-card.sel{border-color:var(--accent);background:var(--accent-softer);box-shadow:0 0 0 1px var(--accent) inset;}
/* Cabeza de grupo que no casa con el filtro: se enseña solo como contexto de
   sus incidencias correlacionadas que sí casan (IN-16). */
.inc-card.ctx{opacity:.72;border-style:dashed;}
.inc-cluster-toggle{display:flex;align-items:center;gap:6px;width:100%;margin:-2px 0 2px;padding:4px 10px;cursor:pointer;background:transparent;border:none;color:var(--accent-strong);font-size:11.5px;font-weight:700;text-align:left;}
.inc-cluster-toggle:disabled{cursor:default;color:var(--text-subtle);font-weight:600;}
.inc-cluster-caret{display:inline-block;transition:transform .15s;}
.inc-cluster-caret.open{transform:rotate(90deg);}
.inc-more{align-self:center;margin-top:4px;}
.inc-more-hint{margin-top:6px;}
.inc-sev-rail{position:absolute;left:0;top:0;bottom:0;width:4px;}
.inc-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;}
.inc-card-title{font-size:13px;font-weight:600;color:var(--text-strong);line-height:1.35;margin-bottom:9px;}
.inc-card-foot{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.inc-card-foot .meta{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted);}
.inc-card-foot .meta.time{margin-left:auto;color:var(--text-subtle);font-family:var(--font-mono);font-size:10.5px;}
.inc-status{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill);}
.inc-status .dot{width:6px;height:6px;border-radius:50%;}
.inc-detail{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-sm);min-width:0;overflow-wrap:break-word;}
/* Aviso de éxito/error de las acciones del detalle: FIJO arriba a la derecha
   de la pantalla, debajo de la barra superior (56 px). Antes se pintaba al
   principio del panel y, con el detalle desplazado hasta la barra de
   acciones, no se veía (IN-45). Fixed y no sticky: el armazón de la consola
   (.main overflow:hidden + .content overflow-y:auto, styles.css) hace que un
   sticky dentro de la página no se pegue nunca mientras se desplaza el
   documento. Por debajo de los modales (z 90+). */
.inc-notice{position:fixed;top:68px;right:24px;z-index:60;display:flex;align-items:center;gap:10px;max-width:min(520px,calc(100vw - 48px));font-weight:600;box-shadow:var(--sh-lg);}
.inc-page-notice{margin-bottom:12px;font-weight:600;}
.inc-kpi-note{margin:-6px 0 14px;}
.inc-mini-sub{font-size:11px;color:var(--text-muted);margin-top:2px;}
.inc-detail.empty-detail{display:grid;place-items:center;min-height:420px;}
.inc-detail-head{border-bottom:1px solid var(--divider);padding-bottom:16px;margin-bottom:18px;}
.inc-metarow{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:12px;}
.inc-metarow>span{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted);}
.inc-metarow svg{color:var(--text-subtle);}
.inc-scoregrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px;}
/* Incidentes de seguridad: seis casillas en un detalle de ~620 px (portátil al
   100 %) no caben a cuatro por fila sin partir «Extension» o dejar el usuario
   en «Device wit…»: tantas columnas de ≥170 px como quepan. */
.inc-scoregrid.fit{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));}
.inc-mini{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:13px 14px;min-width:0;}
.inc-mini-lbl{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-subtle);}
.inc-mini-ico{width:30px;height:30px;border-radius:9px;display:none;place-items:center;background:var(--surface-sunken);color:var(--text-muted);flex-shrink:0;}
.inc-score-bar{margin-top:10px;height:6px;border-radius:999px;background:var(--surface-sunken);overflow:hidden;}
.inc-score-bar span{display:block;height:100%;border-radius:999px;transition:width 1s var(--ease-out);}
.inc-sec{margin-bottom:20px;}
/* Excepciones unificadas (WP5): sección + formularios por tipo + recomendación. */
.exc-feedback{display:flex;align-items:center;gap:8px;}
.exc-grow{flex:1;}
.exc-gap{margin-left:8px;}
/* Lista de excepciones sobre el kit dx-*: celda principal de dos líneas, tipo, caducidad y acciones de fila. */
.exc-main{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;}
.exc-title{font-weight:600;color:var(--text-strong);overflow-wrap:anywhere;}
.exc-sub{font-size:var(--fs-xs);font-weight:400;color:var(--text-muted);overflow-wrap:anywhere;}
.exc-type{display:inline-flex;align-items:center;gap:6px;color:var(--text);white-space:nowrap;}
.exc-created{display:flex;flex-direction:column;gap:2px;}
.exc-expiry{font-size:var(--fs-sm);color:var(--text-muted);white-space:nowrap;}
.exc-expiry.is-soon{color:var(--warn-fg);}
.exc-expiry.is-expired{color:var(--danger-fg);}
.exc-c-actions{width:1%;white-space:nowrap;}
.exc-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);}
.exc-seg{display:flex;gap:4px;}
.exc-seg .btn{flex:1;}
.exc-check{display:flex;align-items:flex-start;gap:8px;cursor:pointer;font-size:var(--text-sm);color:var(--text);}
.exc-check input{margin-top:3px;}
.exc-check .dx-field-hint{display:block;margin-top:2px;}
.exc-pat-row{display:flex;gap:6px;align-items:center;}
.exc-pat-row .input:first-child{flex:1;min-width:0;}
.exc-pat-row select{width:170px;}
.exc-warn-note{padding:8px 10px;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border);}
.exc-del{color:var(--text-muted);}
.exc-del:hover:not(:disabled){color:var(--danger-fg);}
.exc-foot-gap{flex:1;}
.exc-foot-note{font-size:var(--fs-xs);color:var(--text-muted);}
.exc-what,.exc-reason{margin:0 0 var(--sp-2);line-height:1.5;}
.exc-pats{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--sp-2);}
.exc-field{margin-bottom:12px;}
.exc-footer{display:flex;gap:8px;justify-content:flex-end;}
.exc-back{margin-bottom:10px;}
.exc-error{padding:8px;margin-bottom:12px;}
.exc-types{display:grid;gap:var(--sp-3);}
.exc-type-card{display:flex;flex-direction:column;gap:4px;text-align:left;padding:12px 14px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);color:var(--text);cursor:pointer;}
.exc-type-card:hover{border-color:var(--accent);}
.exc-rec{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 14px;margin-bottom:14px;}
.exc-rec-title{font-size:var(--fs-xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-subtle);}
.exc-rec-reason{margin:6px 0 10px;color:var(--text-strong);}
.exc-rec-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);}
.exc-rec-opt{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text);cursor:pointer;}
.exc-rec-opt.recommended{border-color:var(--accent);background:var(--accent-soft);}
.exc-rec-opt.on{border-color:var(--accent-strong);}
.exc-policy{padding:4px 0 12px;}
@media (max-width:640px){.exc-rec-opts{grid-template-columns:minmax(0,1fr);}}
.inc-summary{font-size:13.5px;line-height:1.65;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:14px 16px;}
.inc-summary b{color:var(--text-strong);font-weight:650;}
.inc-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;}
.inc-lbl-gap{margin-bottom:6px;}
.ev-chip{align-items:center;display:inline-flex;gap:6px;}
.ev-chip .iconbtn{display:inline-flex;padding:0;margin-left:2px;}
.inc-related-actions{display:flex;flex-wrap:wrap;gap:8px;}
.inc-related{display:flex;align-items:center;gap:10px;padding:9px 11px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;min-width:0;}
button.inc-related{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;}
button.inc-related:hover{border-color:var(--accent);}
button.inc-related:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.ev-log-toggle{display:inline-flex;align-items:center;gap:6px;}
.inc-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;border-top:1px solid var(--divider);padding-top:18px;}
.inc-detail.inc-has-side{display:grid;grid-template-columns:minmax(0,1fr) 272px;gap:22px;align-items:start;}
.inc-main{min-width:0;}
.inc-has-side .inc-cols{grid-template-columns:minmax(0,1fr);}
/* Panel de gestión (revisión 3-oct, INC3): a la derecha, pegado mientras se
   desplaza el detalle; secciones <details> nativas. */
.inc-side{position:sticky;top:72px;display:flex;flex-direction:column;gap:10px;min-width:0;max-height:calc(100vh - 92px);overflow-y:auto;}
.inc-side-sec{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;}
.inc-side-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;cursor:pointer;list-style:none;font-size:var(--fs-2xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-subtle);}
.inc-side-h::-webkit-details-marker{display:none;}
.inc-side-h::after{content:"+";font-size:var(--fs-md);font-weight:500;color:var(--text-muted);}
.inc-side-sec[open]>.inc-side-h::after{content:"\2212";}
.inc-side-h:focus-visible{outline:none;box-shadow:var(--focus);border-radius:12px;}
.inc-side-body{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:0 12px 12px;min-width:0;}
.inc-side-body .select,.inc-side-body .input{width:100%;}
/* INC3: en tema claro `.btn.danger` (texto --danger sobre --surface-2, borde coral-100) casi no se veía; texto -fg y borde con cuerpo. */
.inc-side-body .btn.danger{color:var(--danger-fg);border-color:color-mix(in srgb, var(--danger) 55%, transparent);}
.inc-side-body .btn.danger:hover{background:var(--danger-soft);border-color:var(--danger);}
/* Selector de cluster (INC4) */
.inc-picker{display:flex;flex-direction:column;gap:8px;min-width:0;}
.inc-picker-list{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto;}
.inc-opt{display:flex;flex-direction:column;gap:4px;width:100%;padding:8px 10px;text-align:left;font:inherit;color:inherit;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:10px;min-width:0;}
.inc-opt:hover{border-color:var(--border-strong);background:var(--surface-hover);}
.inc-opt:focus-visible{outline:none;box-shadow:var(--focus);}
.inc-opt:disabled{cursor:default;opacity:.6;}
.inc-opt-top{display:flex;align-items:center;flex-wrap:wrap;gap:6px;}
.inc-opt-title{font-size:var(--fs-xs);color:var(--text);line-height:1.35;overflow-wrap:anywhere;}
/* Equipos contenibles (INC2) */
.inc-cand{display:flex;flex-direction:column;gap:6px;padding:10px;background:var(--surface);border:1px solid var(--border);border-radius:10px;min-width:0;}
.inc-cand-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.inc-cand-host{min-width:0;overflow-wrap:anywhere;}
.inc-cand-act{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;}
.inc-cdraw{display:flex;flex-direction:column;gap:12px;}
.inc-cdraw-box{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--surface-sunken);border-radius:var(--r-md);}
.inc-req{color:var(--danger);}
/* Detección — el incidente en el cajón común (kit dx-*, entrega 3): cajón
   extra ancho con la historia (.inc-main) y la gestión (.inc-side) en dos
   columnas; con el cajón abierto la página le deja sitio a ≥ 1280 px. */
.drawer.dx-drawer.dx-wide.dx-xwide{width:clamp(min(100vw,720px),calc(100vw - 520px),980px);}
@media (min-width:1280px){.kl-content.dx-dockable:has(.dx-drawer.dx-xwide.open){padding-right:calc(clamp(720px,calc(100vw - 520px),980px) + 26px);}
  .kl-content.dx-dockable:has(.dx-drawer.dx-xwide.open) .fd-kpis{display:flex;flex-wrap:wrap;column-gap:20px;}
  .kl-content.dx-dockable:has(.dx-drawer.dx-xwide.open) .fd-kpis>.kpi{flex:1 1 112px;max-width:176px;}}
.dx-inc{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px;align-items:start;}
.dx-inc .inc-main{display:flex;flex-direction:column;gap:28px;min-width:0;container:dxmain / inline-size;}
.dx-inc .inc-main > .inc-sec{margin:0;}
.dx-inc .inc-side{position:static;order:0;max-height:none;overflow:visible;}
.dx-inc .fd-sec-h{margin-bottom:10px;font-size:var(--text-base);font-weight:600;letter-spacing:0;text-transform:none;color:var(--text-strong);}
.dx-inc-risk{display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;align-items:start;padding:14px 16px;border-radius:var(--r-xl);background:var(--surface-sunken);border:1px solid var(--border);}
.dx-inline{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;}
.dx-inc-clsum{margin-bottom:12px;}
.dx-inc-clsum-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:var(--text-xs);font-weight:500;color:var(--text-muted);}
.dx-inc-members{display:flex;flex-direction:column;border-radius:var(--r-lg);border:1px solid var(--border);overflow:hidden;}
button.dx-inc-member{width:100%;margin:0;border:0;border-left:3px solid var(--dx-f);text-align:left;font:inherit;color:inherit;cursor:pointer;transition:background .14s;}
button.dx-inc-member + button.dx-inc-member{border-top:1px solid var(--divider);}
.dx-inc-member:hover:not(.cur){background:var(--surface-hover);}
.dx-inc-member.cur{cursor:default;background:var(--accent-softer);}
.dx-inc-member .dx-finding-t .dx-chip{margin-left:6px;}
.dx-inc-events{display:flex;flex-direction:column;gap:6px;}
.dx-inc-brief-block{margin-top:12px;}
.dx-inc-brief-h{margin-bottom:6px;font-size:var(--text-xs);font-weight:500;color:var(--text-muted);}
.dx-inc-brief-note{margin:0 0 8px;font-size:var(--text-xs);color:var(--text-muted);}
.inc-group{display:flex;flex-direction:column;gap:7px;min-width:0;}
.inc-layout.is-solo .inc-list > .fd-loading,.inc-layout.is-solo .inc-list > .kl-placeholder,.inc-layout.is-solo .inc-list > .inc-more{grid-column:1 / -1;}
.dx-tl-note,.dx-tl-who{display:block;}
.dx-tl-who{color:var(--text-subtle);}
.dx-drawer .inc-notice{top:auto;bottom:16px;right:16px;}
@media (max-width:1100px){.dx-inc{grid-template-columns:minmax(0,1fr);}.dx-inc .inc-side{order:-1;}}
@container dxmain (max-width:540px){.dx-inc-risk{grid-template-columns:minmax(0,1fr);}}
@media(max-width:1200px){
  .inc-layout{grid-template-columns:minmax(0,1fr);}
  .inc-list-pane{position:static;max-height:none;}
  .inc-list{max-height:420px;}
  .inc-cols{grid-template-columns:minmax(0,1fr);}
  .inc-detail.inc-has-side{grid-template-columns:minmax(0,1fr);}
  .inc-side{position:static;max-height:none;order:-1;}
  .inc-kpis{grid-template-columns:repeat(2,1fr);}
  .inc-scoregrid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .inc-scoregrid.fit{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));}
}

/* ====================== THREAT HUNTING ====================== */

/* ====================== ENFORCEMENT ====================== */
.enf-stance{display:flex;gap:18px;align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--sh-sm);flex-wrap:wrap;}
.enf-stance-main{display:flex;align-items:center;gap:14px;flex:1;min-width:340px;}
.enf-stance-ico{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-strong);flex-shrink:0;}
.enf-stance .seg button{display:inline-flex;align-items:center;gap:5px;}
.enf-stance-stats{display:flex;gap:26px;align-items:center;padding-left:18px;border-left:1px solid var(--divider);}
.enf-stance-stats .es .v{font-size:22px;font-weight:700;color:var(--text-strong);letter-spacing:-.02em;}
.enf-stance-stats .es .l{font-size:11.5px;color:var(--text-muted);margin-top:1px;}
.enf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.enf-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;box-shadow:var(--sh-sm);transition:border-color .15s,transform .15s;}
.enf-card:hover{border-color:var(--border-strong);transform:translateY(-2px);}
.enf-card-head{display:flex;align-items:flex-start;gap:11px;margin-bottom:14px;}
.enf-card-ico{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--surface-sunken);color:var(--text-muted);flex-shrink:0;}
.enf-cov{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.enf-cov-bar{flex:1;height:7px;border-radius:999px;background:var(--surface-sunken);overflow:hidden;}
.enf-cov-bar span{display:block;height:100%;border-radius:999px;transition:width .9s var(--ease-out);}
.enf-cov-val{font-size:12.5px;font-weight:700;color:var(--text-strong);min-width:38px;text-align:right;}
.enf-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.enf-fail{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:4px 9px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface-2);color:var(--text-muted);cursor:pointer;transition:all .14s;}
.enf-fail.closed{color:var(--green-700);background:var(--green-100);border-color:transparent;}
@media(max-width:1100px){.enf-grid{grid-template-columns:1fr;}.enf-stance-stats{border-left:none;padding-left:0;}}

/* ====================== INFORMES DE USUARIOS ====================== */
/* Dato SIN redactar de un reporte («Dato detectado», revelado efímero y
   auditado): valores y fragmento de la conversación en monoespaciada, con el
   valor detectado resaltado dentro del fragmento. Tope de alto con scroll
   propio: un fragmento puede rondar los 8 KB. */
.inc-raw{font-family:var(--font-mono);font-size:11.5px;line-height:1.55;color:var(--text-strong);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;white-space:pre-wrap;word-break:break-word;max-height:280px;overflow:auto;}
.inc-raw mark{background:var(--warn-soft);color:var(--warn-fg);border-radius:3px;padding:0 2px;font-weight:600;}

/* ====================== LISTAS ====================== */
.list-ico{width:30px;height:30px;border-radius:8px;display:none;place-items:center;background:var(--surface-sunken);color:var(--text-muted);flex-shrink:0;}
.list-type{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:var(--r-pill);}
.list-type .dot{width:6px;height:6px;border-radius:50%;}

/* ====================== SIMULADOR ====================== */
.sim-layout{display:grid;grid-template-columns:1fr 1.15fr;gap:18px;align-items:start;}
.sim-input{width:100%;border-radius:11px;border:1px solid var(--border-strong);background:var(--surface-sunken);color:var(--text-strong);font-size:13px;line-height:1.6;padding:13px 15px;resize:vertical;transition:border-color .15s,box-shadow .15s;}
.sim-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent);background:var(--surface);}
.sim-ctx{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;}
.sim-ctx label{display:block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);margin-bottom:5px;}
.sim-ctx .kl-select{width:100%;}
.sim-verdict{display:flex;align-items:center;gap:14px;border-radius:var(--r-lg);padding:16px 18px;margin-bottom:14px;border:1px solid;}
.sim-verdict .sv-ico{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;flex-shrink:0;color:#fff;}
.sim-verdict .sv-action{font-size:16px;font-weight:650;color:var(--text-strong);letter-spacing:-.01em;}
.sim-verdict .sv-sub{font-size:12.5px;color:var(--text-muted);margin-top:2px;}
.sim-verdict .sv-sub b{color:var(--text-strong);}
.sim-verdict.block{background:var(--coral-100);border-color:color-mix(in srgb,var(--coral-500) 30%,transparent);}
.sim-verdict.block .sv-ico{background:var(--coral-500);}
.sim-verdict.redact{background:var(--violet-100);border-color:color-mix(in srgb,var(--violet-500) 30%,transparent);}
.sim-verdict.redact .sv-ico{background:var(--violet-500);}
.sim-verdict.warn{background:var(--amber-100);border-color:color-mix(in srgb,var(--amber-500) 30%,transparent);}
.sim-verdict.warn .sv-ico{background:var(--amber-500);}
.sim-verdict.allow{background:var(--green-100);border-color:color-mix(in srgb,var(--green-500) 30%,transparent);}
.sim-verdict.allow .sv-ico{background:var(--green-500);}
.sim-preview{font-size:12.5px;line-height:1.85;color:var(--text);background:var(--surface-sunken);border-radius:10px;padding:13px 15px;white-space:pre-wrap;word-break:break-word;}
.sim-hl{padding:1px 4px;border-radius:4px;font-weight:600;}
.sim-hl.sev-critical{background:var(--coral-200);color:var(--coral-700);}
.sim-hl.sev-high{background:var(--amber-100);color:var(--amber-700);}
.sim-hl.sev-medium{background:var(--blue-100);color:var(--blue-600);}
.sim-hl.sev-low{background:var(--teal-100);color:var(--teal-700);}
@media(max-width:1100px){.sim-layout{grid-template-columns:1fr;}}

/* ====================== MAPA DE DATOS ====================== */
.map-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;}
.map-grid{display:grid;grid-template-columns:1fr 300px;gap:16px;align-items:stretch;}
.map-canvas{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px;box-shadow:var(--sh-sm);overflow:hidden;min-height:480px;background-image:radial-gradient(var(--bg-grid) 1px,transparent 1px);background-size:22px 22px;}
.map-colhdr{position:absolute;top:16px;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);z-index:2;}
.map-colhdr.left{left:20px;}
.map-colhdr.center{left:50%;transform:translateX(-50%);color:var(--accent-strong);}
.map-colhdr.right{right:20px;}
.map-svg{width:100%;height:auto;display:block;margin-top:6px;}
.map-flow{stroke-dasharray:5 11;animation:map-dash 1s linear infinite;}
@keyframes map-dash{to{stroke-dashoffset:-16;}}
@media(prefers-reduced-motion:reduce){.map-flow{animation:none;stroke-dasharray:none;}}
.map-glow{animation:map-pulse 3s ease-in-out infinite;transform-origin:center;transform-box:fill-box;}
@keyframes map-pulse{0%,100%{opacity:.5;}50%{opacity:1;}}
.map-engine{filter:drop-shadow(0 4px 14px rgba(var(--accent-rgb),.4));}
.map-node{transition:r .2s;}
.map-node.prov{animation:map-bob 3s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
@keyframes map-bob{0%,100%{transform:scale(1);}50%{transform:scale(1.12);}}
.map-label{font-family:var(--font-sans);font-size:12px;font-weight:600;fill:var(--text-strong);}
.map-scan{transform-box:fill-box;transform-origin:center;animation:map-scan 3.4s ease-out infinite;}
@keyframes map-scan{0%{transform:scale(.7);opacity:.35;}70%{transform:scale(1.5);opacity:0;}100%{opacity:0;}}
.map-legend{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:16px;z-index:2;padding:7px 14px;background:color-mix(in srgb,var(--surface) 88%,transparent);border:1px solid var(--border);border-radius:var(--r-pill);box-shadow:var(--sh-sm);backdrop-filter:blur(4px);}
.map-leg-item{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--text-muted);white-space:nowrap;}
.map-leg-item .dot{width:8px;height:8px;border-radius:50%;box-shadow:0 0 5px currentColor;}
.map-feed{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px;box-shadow:var(--sh-sm);display:flex;flex-direction:column;max-height:480px;}
.map-feed-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;flex:1;min-height:0;scrollbar-width:thin;scrollbar-color:var(--border) transparent;}
.map-feed-list::-webkit-scrollbar{width:4px;}.map-feed-list::-webkit-scrollbar-track{background:transparent;}.map-feed-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
.map-feed-item{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border);}
.map-feed-item.fresh{animation:kl-rowfade .5s var(--ease-out) both;border-color:var(--accent-soft);background:var(--accent-softer);}
@media(max-width:1100px){.map-grid{grid-template-columns:1fr;}.map-kpis{grid-template-columns:repeat(2,1fr);}}

/* ====================== FUNNEL ====================== */
.funnel{display:flex;flex-direction:column;gap:14px;padding:8px 0;}
.fn-bar{height:40px;border-radius:9px;display:flex;align-items:center;justify-content:flex-end;padding:0 12px;min-width:60px;transition:width 1s var(--ease-out);}
.fn-val{color:#fff;font-size:14px;font-weight:700;}
.fn-lbl{font-size:12px;color:var(--text-muted);margin-top:5px;}

/* ====================== MI PANEL ====================== */
.mp-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap;}
.mp-head-actions{display:flex;gap:8px;flex-wrap:wrap;}
.mp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;align-items:start;}
.mp-widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:18px;box-shadow:var(--sh-sm);transition:box-shadow .2s,transform .15s,border-color .15s;overflow:hidden;}
.mp-widget.span-1{grid-column:span 1;}
.mp-widget.span-2{grid-column:span 2;}
.mp-grid.editing .mp-widget{border-style:dashed;border-color:var(--border-strong);cursor:grab;}
.mp-grid.editing .mp-widget:active{cursor:grabbing;transform:scale(.99);}
.mp-widget-head{display:flex;align-items:center;gap:8px;margin-bottom:14px;}
.mp-widget-head .wh-ico{color:var(--accent);flex-shrink:0;}
.mp-widget-head .wh-title{font-size:13px;font-weight:650;color:var(--text-strong);flex:1;}
.mp-grip{color:var(--text-subtle);cursor:grab;}
.mp-remove{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;border:none;background:var(--coral-100);color:var(--coral-600);cursor:pointer;transition:background .12s;}
.mp-remove:hover{background:var(--coral-200);}
.mp-stat{position:relative;}
.mp-stat-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.mp-stat-ico{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;flex-shrink:0;}
.mp-stat-label{font-size:12.5px;font-weight:600;color:var(--text-muted);}
.mp-stat-val{font-size:var(--fs-4xl);font-weight:650;letter-spacing:-.035em;color:var(--text-strong);line-height:1;font-variant-numeric:tabular-nums;}
.mp-stat-foot{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;}
.mp-stat-foot .since{color:var(--text-subtle);}
.mp-stat-spark{margin:14px -18px -18px;height:38px;opacity:.9;}
.mp-feed{display:flex;flex-direction:column;gap:6px;}
.mp-feed-item{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:9px;background:var(--surface-2);border:1px solid var(--border);}
.mp-feed-item.fresh{animation:kl-rowfade .5s var(--ease-out) both;border-color:var(--accent-soft);background:var(--accent-softer);}
.mp-gallery{display:flex;flex-direction:column;gap:8px;}
.mp-gallery-item{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;text-align:left;transition:border-color .14s,background .14s;}
.mp-gallery-item:hover{border-color:var(--accent);background:var(--accent-softer);}
.mp-gallery-item .mg-ico{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--surface-sunken);color:var(--accent);flex-shrink:0;}
.mp-gallery-item .mg-title{font-size:13.5px;font-weight:600;color:var(--text-strong);}
.mp-gallery-item .mg-meta{font-size:11.5px;color:var(--text-muted);margin-top:1px;}
.mp-gallery-item .mg-add{color:var(--text-subtle);flex-shrink:0;}
.mp-gallery-item:hover .mg-add{color:var(--accent);}
@media(max-width:1200px){.mp-grid{grid-template-columns:repeat(2,1fr);}.mp-widget.span-2{grid-column:span 2;}}
@media(max-width:680px){.mp-grid{grid-template-columns:1fr;}.mp-widget.span-2{grid-column:span 1;}}

/* ====================== DESCARGAS — NUEVA UI ====================== */
.token-field{display:flex;align-items:center;gap:9px;padding:9px 10px 9px 12px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface-sunken);}
.token-field .tk-ico{color:var(--accent);flex-shrink:0;}
.token-field .tk-val{flex:1;font-family:var(--font-mono);font-size:13.5px;font-weight:600;color:var(--text-strong);letter-spacing:.06em;}
.token-field .tk-copy{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:var(--r-xs);background:var(--surface);border:1px solid var(--border);font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .14s;flex-shrink:0;}
.token-field .tk-copy:hover{color:var(--accent);border-color:var(--accent);}
.code-block{position:relative;background:var(--navy-900,#0f1730);border:1px solid var(--border);border-radius:var(--r-sm);padding:14px 15px;overflow:hidden;}
[data-theme="dark"] .code-block{background:#0a1020;}
.code-block pre{margin:0;font-family:var(--font-mono);font-size:12.5px;line-height:1.7;color:#d7e0f2;white-space:pre-wrap;word-break:break-word;}
.code-copy{position:absolute;top:10px;right:10px;display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:var(--r-xs);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.13);font-size:11.5px;font-weight:600;color:#b0bcd4;cursor:pointer;transition:all .14s;}
.code-copy:hover{background:rgba(255,255,255,.14);color:#fff;}
.code-actions{position:absolute;top:10px;right:10px;display:flex;gap:6px;}
.code-actions .code-copy{position:static;}
/* Descargas (DxPage): bloques bajo el catálogo y pasos de las guías de despliegue. */
.dl-stack{display:flex;flex-direction:column;gap:var(--sp-6);margin-top:var(--sp-6);}
.dl-stack .dx-sec-aside a{font-size:var(--text-xs);}
.dl-guide-btns{display:flex;gap:var(--sp-2);flex-wrap:wrap;}
.dl-steps{margin:0;padding-left:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3);font-size:var(--text-sm);line-height:1.5;color:var(--text);}
.dl-steps li::marker{color:var(--text-subtle);font-weight:600;}

/* DLP Policies Redesign */
.pol-back{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-muted);cursor:pointer;margin-bottom:18px;padding:0;}
.pol-back:hover{color:var(--text-strong);}
.crumb-sep{color:var(--divider);margin:0 2px;}
.crumb-now{color:var(--text-strong);font-weight:600;}
.pol-detail-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg,12px);box-shadow:var(--sh-sm);}
.pol-detail-ico{width:46px;height:46px;border-radius:10px;background:var(--surface-sunken);display:grid;place-items:center;color:var(--accent);flex-shrink:0;}
.pol-detail-titles{flex:1;min-width:0;}
.pol-detail-titles h1{margin:0 0 4px;font-size:18px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.pol-detail-desc{font-size:13px;color:var(--text-muted);margin-bottom:8px;}
.pol-detail-metarow{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--text-subtle);}
.pol-detail-metarow span{display:flex;align-items:center;gap:4px;}
.pol-detail-toggle{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.pol-onstate{font-size:12px;font-weight:600;}
.pol-onstate.on{color:var(--green-600);}
.pol-onstate.off{color:var(--text-subtle);}
.pol-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;}
.subpol-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.subpol-section-head h2{margin:0;font-size:15px;display:flex;align-items:center;gap:8px;}
.spd-layout{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:start;}
.spd-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg,12px);overflow:hidden;box-shadow:var(--sh-sm);}
.spd-list-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--divider);}
.spd-lh-t{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--text-strong);}
.spd-list-hint{display:flex;align-items:flex-start;gap:6px;padding:8px 14px;font-size:11.5px;color:var(--text-muted);border-bottom:1px solid var(--divider);background:var(--surface-sunken);}
.spd-rows{display:flex;flex-direction:column;}
.spd-row{display:flex;align-items:center;gap:8px;padding:9px 10px;border-bottom:1px solid var(--divider);cursor:pointer;transition:background .12s;}
.spd-row:hover{background:var(--surface-hover);}
.spd-row.sel{background:color-mix(in srgb,var(--accent) 8%,transparent);border-left:3px solid var(--accent);}
.spd-row.off{opacity:0.5;}
.spd-reorder{display:flex;flex-direction:column;gap:1px;}
.spd-rbtn{background:none;border:none;cursor:pointer;color:var(--text-subtle);padding:1px;line-height:1;border-radius:3px;}
.spd-rbtn:hover:not(:disabled){color:var(--text-strong);background:var(--surface-hover);}
.spd-rbtn:disabled{opacity:0.3;cursor:default;}
.spd-ord{font-size:10px;font-weight:700;color:var(--text-subtle);font-variant-numeric:tabular-nums;width:18px;flex-shrink:0;}
.spd-rmain{flex:1;min-width:0;}
.spd-rname{display:flex;align-items:center;gap:5px;font-size:12.5px;font-weight:500;color:var(--text-strong);}
.spd-health{width:7px;height:7px;border-radius:50%;flex-shrink:0;display:inline-block;}
.spd-rsub{display:flex;align-items:center;gap:6px;margin-top:2px;}
.spd-fallback-row{display:flex;align-items:center;gap:8px;padding:9px 12px;border-top:2px dashed var(--divider);font-size:12px;color:var(--text-muted);}
.spd-fb-ico{width:22px;height:22px;border-radius:6px;background:var(--surface-sunken);display:grid;place-items:center;color:var(--text-subtle);flex-shrink:0;}
.spd-fb-t{font-size:12px;font-weight:500;color:var(--text-muted);}
.spd-fb-s{font-size:11px;color:var(--text-subtle);}
.spd-fb-sel{width:auto;flex-shrink:0;padding:3px 6px;font-size:11.5px;}
.spd-newbtn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:10px;background:none;border:none;border-top:1px solid var(--divider);color:var(--accent);font-size:12.5px;cursor:pointer;font-weight:500;}
.spd-newbtn:hover{background:var(--surface-hover);}
.spd-detail{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg,12px);padding:20px;display:flex;flex-direction:column;gap:16px;box-shadow:var(--sh-sm);}
.spd-dhead{display:flex;align-items:flex-start;gap:12px;}
.spd-dord{font-size:11px;font-weight:700;color:var(--text-subtle);width:22px;flex-shrink:0;padding-top:2px;}
.spd-dtitle{font-size:15px;font-weight:600;color:var(--text-strong);display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:4px;}
.spd-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.spd-mode{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:2px 7px;border-radius:5px;background:var(--surface-sunken);}
.spd-mode.enforce{color:var(--green-600);background:color-mix(in srgb,var(--green-500) 10%,transparent);}
.spd-mode.shadow,.spd-mode.monitor{color:var(--blue-600);background:color-mix(in srgb,var(--blue-500) 10%,transparent);}
.spd-mode.paused{color:var(--text-subtle);}
.spd-healthpill{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted);}
.hdot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0;}
.spd-id{font-size:10px;color:var(--text-subtle);}
.spd-dtoggle{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0;}
.spd-onlbl{font-size:11.5px;font-weight:600;}
.spd-note,.subpol-except{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:7px;font-size:12.5px;color:var(--text-muted);background:color-mix(in srgb,var(--blue-500) 8%,transparent);border:1px solid color-mix(in srgb,var(--blue-500) 20%,transparent);}
.spd-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;}
.spd-stat{background:var(--surface-sunken);border-radius:8px;padding:10px 12px;}
.spd-stat .l{font-size:11px;color:var(--text-subtle);margin-bottom:3px;}
.spd-stat .v{font-size:17px;font-weight:700;color:var(--text-strong);font-variant-numeric:tabular-nums;}
.spd-stat .s{font-size:10.5px;color:var(--text-muted);margin-top:1px;}
.spd-stat-spark{margin-top:4px;}
.spd-sec{display:flex;flex-direction:column;gap:8px;}
.sec-lbl{font-size:11.5px;font-weight:600;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.05em;}
.bb{background:var(--surface-sunken);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;}
.bb-kw{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--text-subtle);}
.bb-kw.si{color:var(--blue-600);}
.bb-kw.then{color:var(--accent);}
.spd-rule{display:flex;flex-wrap:wrap;align-items:center;gap:6px;}
.spd-rule-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px;}
.cond-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:5px;background:var(--surface);border:1px solid var(--border);font-size:12px;color:var(--text-strong);}
.cc-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;display:inline-block;}
.cond-join{font-size:11px;font-weight:700;color:var(--text-subtle);padding:0 2px;}
.cond-ctx{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-muted);}
.rule-kw{font-size:11.5px;font-weight:700;color:var(--text-subtle);}
.rule-arrow{color:var(--text-subtle);}
.action-seg{display:flex;gap:6px;flex-wrap:wrap;}
.action-opt{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:6px;border:1.5px solid var(--border-strong);background:var(--surface);font-size:12.5px;cursor:pointer;color:var(--text-muted);transition:all .15s;}
.action-opt:hover{border-color:var(--accent);color:var(--accent);}
.action-opt.block.on{border-color:var(--coral-500);background:color-mix(in srgb,var(--coral-500) 10%,transparent);color:var(--coral-600);}
.action-opt.redact.on{border-color:var(--violet-500);background:color-mix(in srgb,var(--violet-500) 10%,transparent);color:var(--violet-600,#7c3aed);}
.action-opt.warn.on{border-color:var(--amber-500);background:color-mix(in srgb,var(--amber-500) 10%,transparent);color:var(--amber-600);}
.action-opt.monitor.on{border-color:var(--blue-500);background:color-mix(in srgb,var(--blue-500) 10%,transparent);color:var(--blue-600);}
.spd-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.spd-chips{display:flex;flex-wrap:wrap;gap:6px;}
.spd-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:5px;border:1px solid var(--divider);font-size:12px;color:var(--text-muted);background:var(--surface-sunken);}
.spd-chip.incl{border-color:color-mix(in srgb,var(--green-500) 30%,transparent);color:var(--green-600);background:color-mix(in srgb,var(--green-500) 8%,transparent);}
.spd-chip.excl{border-color:color-mix(in srgb,var(--amber-500) 30%,transparent);color:var(--amber-600);background:color-mix(in srgb,var(--amber-500) 8%,transparent);}
.spd-scopemeta{font-size:12px;color:var(--text-muted);}
.spd-link{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:3px;padding:0;}
.spd-link:hover{text-decoration:underline;}
.spd-switchrow{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:var(--text-muted);cursor:pointer;padding:3px 0;}
.spd-msgbox{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:7px;background:var(--surface-sunken);border:1px solid var(--divider);font-size:12.5px;color:var(--text-muted);font-style:italic;}
.spd-audit{display:flex;flex-wrap:wrap;gap:14px;font-size:11.5px;color:var(--text-subtle);padding-top:8px;border-top:1px solid var(--divider);}
.spd-audit span{display:inline-flex;align-items:center;gap:4px;}
.spd-foot{display:flex;align-items:center;gap:8px;padding-top:4px;}
.pol-caret{display:inline-flex;align-items:center;cursor:pointer;color:var(--text-subtle);transition:transform .18s;}
.pol-caret.open{transform:rotate(90deg);}
.pol-subchip{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;color:var(--text-subtle);background:var(--surface-sunken);border:1px solid var(--divider);border-radius:4px;padding:1px 5px;}
.pol-subtree td{padding:0;}
.pol-subtree-inner{padding:4px 12px 8px 50px;display:flex;flex-direction:column;gap:4px;}
.subrow{display:grid;grid-template-columns:28px 1fr auto auto 56px;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;background:var(--surface-sunken);font-size:12.5px;}
.subrow.off{opacity:0.5;}
.sr-ord{font-size:10px;font-weight:700;color:var(--text-subtle);}
.sr-name{font-weight:500;color:var(--text-strong);margin-bottom:2px;}
.sr-rule{display:flex;flex-wrap:wrap;align-items:center;gap:5px;font-size:11.5px;}
.sr-scope{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-muted);}
.sr-trig{font-size:12px;font-weight:700;color:var(--text-muted);text-align:right;font-variant-numeric:tabular-nums;}
.pol-subtree-add{display:flex;align-items:center;gap:5px;padding:6px 10px;background:none;border:1.5px dashed var(--divider);border-radius:7px;color:var(--accent);font-size:12px;cursor:pointer;width:100%;justify-content:center;margin-top:4px;}
.pol-subtree-add:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent);}
.act-mini-stack{display:flex;flex-wrap:wrap;gap:4px;}
.act{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:600;}
.act.act-block{background:color-mix(in srgb,var(--coral-500) 12%,transparent);color:var(--coral-600);}
.act.act-redact{background:color-mix(in srgb,var(--violet-500) 12%,transparent);color:var(--violet-600,#7c3aed);}
.act.act-warn{background:color-mix(in srgb,var(--amber-500) 12%,transparent);color:var(--amber-600);}
.act.act-confirm{background:color-mix(in srgb,var(--blue-500) 12%,transparent);color:var(--blue-600);}
@media(max-width:1100px){.pol-kpis{grid-template-columns:repeat(2,1fr);}.spd-layout{grid-template-columns:1fr;}.spd-stats{grid-template-columns:repeat(3,1fr);}.spd-cols{grid-template-columns:1fr;}}
@media(max-width:720px){.pol-detail-head{flex-direction:column;}.pol-kpis{grid-template-columns:1fr 1fr;}.spd-stats{grid-template-columns:1fr 1fr;}}

/* ── PolDetectorBuilder ── */
.det-builder{display:flex;flex-direction:column;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px;}
.det-search-wrap{position:relative;}
.det-search-row{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:7px 11px;transition:border-color .14s;}
.det-search-row:focus-within{border-color:var(--accent);}
.det-search-ico{color:var(--text-subtle);flex-shrink:0;}
.det-search-input{flex:1;border:0;background:transparent;font-size:13px;color:var(--text);outline:none;}
.det-search-input::placeholder{color:var(--text-subtle);}
.det-dropdown{position:absolute;top:calc(100% + 5px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:0 8px 24px rgba(0,0,0,.14);z-index:40;max-height:240px;overflow-y:auto;}
.det-opt{display:flex;align-items:center;gap:7px;padding:8px 11px;width:100%;border:0;background:transparent;cursor:pointer;font-size:12.5px;color:var(--text);text-align:left;}
.det-opt:hover,.det-opt:focus{background:var(--surface-sunken);}
.det-opt.sel{color:var(--text-muted);}
.det-opt-label{flex:1;min-width:0;font-weight:550;}
.det-opt-cat{font-size:10.5px;color:var(--text-subtle);background:var(--surface-sunken);border:1px solid var(--border);border-radius:5px;padding:1px 6px;white-space:nowrap;}
.det-opt-empty{padding:12px 14px;font-size:12px;color:var(--text-muted);text-align:center;}
.det-list{display:flex;flex-direction:column;gap:0;border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.det-row{display:flex;align-items:center;gap:7px;padding:8px 10px;background:var(--surface);border-bottom:1px solid var(--divider);transition:background .12s;}
.det-row:last-child{border-bottom:0;}
.det-row:hover{background:var(--surface-sunken);}
.det-reorder{display:flex;flex-direction:column;gap:1px;flex-shrink:0;}
.det-ord{font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--text-subtle);width:20px;text-align:center;flex-shrink:0;}
.det-row-label{flex:1;min-width:0;font-size:12.5px;font-weight:550;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.det-row-cat{font-size:10.5px;color:var(--text-subtle);background:var(--surface-sunken);border:1px solid var(--border);border-radius:5px;padding:1px 6px;flex-shrink:0;white-space:nowrap;}
.det-logic-badge{font-family:var(--font-mono);font-size:9.5px;font-weight:800;letter-spacing:.06em;padding:2px 7px;border-radius:5px;background:var(--accent-soft);color:var(--accent-strong);flex-shrink:0;}
.det-sev-sel{font-size:11px;padding:2px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);cursor:pointer;flex-shrink:0;}
.det-remove{width:22px;height:22px;display:grid;place-items:center;border:0;background:transparent;color:var(--text-subtle);cursor:pointer;border-radius:6px;font-size:16px;line-height:1;flex-shrink:0;padding:0;}
.det-remove:hover{background:var(--danger-soft);color:var(--coral-600);}
.det-custom-row{display:flex;align-items:center;gap:7px;padding:4px 2px;}
.det-empty{display:flex;align-items:center;gap:8px;padding:14px 10px;font-size:12px;color:var(--text-muted);justify-content:center;}
.det-empty svg{color:var(--text-subtle);}
.det-footer{display:flex;align-items:center;justify-content:space-between;padding-top:4px;}
.det-mode-toggle{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--text-muted);background:none;border:0;cursor:pointer;padding:3px 0;}
.det-mode-toggle:hover{color:var(--accent-strong);}
.det-advanced{display:flex;flex-direction:column;gap:0;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px;}

/* ── PolConditionBuilder v2 (multi-type) ── */
.cond-builder{display:flex;flex-direction:column;gap:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:10px 10px 8px;}
.cond-row-wrap{display:flex;flex-direction:column;}
.cond-row{display:flex;align-items:flex-start;gap:7px;padding:9px 8px;background:var(--surface);border:1px solid var(--border);border-radius:10px;position:relative;transition:box-shadow .12s;}
.cond-row:hover{box-shadow:0 0 0 2px var(--accent-soft);}
.cond-reorder{display:flex;flex-direction:column;gap:1px;flex-shrink:0;padding-top:1px;}
.cond-ord{font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--text-subtle);width:20px;text-align:center;flex-shrink:0;padding-top:2px;}
.cond-type-sel{flex-shrink:0;position:relative;}
.cond-type-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:7px;border:1px solid var(--border);background:var(--surface-2);font-size:11.5px;font-weight:650;cursor:pointer;white-space:nowrap;transition:border-color .12s;}
.cond-type-btn:hover{border-color:var(--border-strong);}
.cond-type-menu{position:absolute;top:calc(100% + 4px);left:0;min-width:190px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.14);z-index:50;padding:4px;}
.cond-type-menu.standalone{top:calc(100% + 4px);left:0;}
.cond-type-opt{display:flex;align-items:center;gap:8px;padding:8px 10px;border:0;background:transparent;cursor:pointer;font-size:12.5px;color:var(--text);border-radius:7px;width:100%;text-align:left;}
.cond-type-opt:hover,.cond-type-opt.on{background:var(--surface-sunken);}
.cond-type-opt.on{font-weight:650;}
.cond-editor-slot{flex:1;min-width:0;}
.cond-logic-sep{display:flex;align-items:center;justify-content:center;padding:3px 0;}
.cond-logic-pill{font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.07em;background:var(--accent-soft);color:var(--accent-strong);padding:2px 9px;border-radius:var(--r-pill,999px);}
.cond-logic-toggle{font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.07em;background:var(--accent-soft);color:var(--accent-strong);padding:2px 12px;border-radius:var(--r-pill,999px);border:1.5px solid transparent;cursor:pointer;transition:background .12s,border-color .12s,transform .1s;}
.cond-logic-toggle:hover{background:var(--accent);color:#fff;border-color:var(--accent);transform:scale(1.08);}
.cond-logic-toggle:active{transform:scale(.96);}
.cond-add-wrap{position:relative;margin-top:4px;}
.cond-add-btn{display:flex;align-items:center;gap:7px;padding:8px 13px;border-radius:9px;border:1.5px dashed var(--border-strong);background:transparent;color:var(--text-muted);font-size:12.5px;font-weight:600;cursor:pointer;width:100%;justify-content:center;transition:border-color .14s,color .14s,background .14s;}
.cond-add-btn:hover{border-color:var(--accent);color:var(--accent-strong);background:var(--accent-soft);}

/* search-based editors (user, endpoint) */
.cond-search-wrap{position:relative;}
.cond-search-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface-raised,var(--surface));border:1px solid var(--border);border-radius:9px;box-shadow:0 6px 20px rgba(0,0,0,.12);z-index:60;max-height:200px;overflow-y:auto;}
.cond-search-opt{display:flex;align-items:center;gap:8px;width:100%;padding:7px 11px;background:transparent;border:0;cursor:pointer;font-size:12.5px;color:var(--text);text-align:left;}
.cond-search-opt:hover{background:var(--accent-soft);}

/* pattern editor */
.cond-pattern-wrap{position:relative;}
.cond-search-row{display:flex;align-items:center;gap:7px;background:var(--surface-sunken);border:1px solid var(--border);border-radius:7px;padding:5px 9px;}
.cond-search-row:focus-within{border-color:var(--accent);}
.cond-search-input{flex:1;border:0;background:transparent;font-size:12.5px;color:var(--text);outline:none;}
.cond-search-input::placeholder{color:var(--text-subtle);}
.cond-sev-sel{font-size:11px;padding:2px 5px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);cursor:pointer;flex-shrink:0;}

/* destination editor */
.cond-dest-editor{display:flex;flex-direction:column;gap:7px;}
.cond-pills{display:flex;flex-wrap:wrap;gap:5px;}
.cond-pill{padding:4px 10px;border-radius:var(--r-pill,999px);border:1.5px solid var(--border);background:var(--surface-sunken);font-size:11.5px;font-weight:550;color:var(--text-muted);cursor:pointer;transition:border-color .12s,background .12s,color .12s;}
.cond-pill:hover{border-color:var(--accent);color:var(--accent-strong);}
.cond-pill.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong);font-weight:650;}
.cond-pill.custom{display:inline-flex;align-items:center;gap:5px;}
.cond-pill-rm{font-size:15px;line-height:1;color:var(--text-subtle);cursor:pointer;background:none;border:0;padding:0;margin-left:2px;}
.cond-pill-rm:hover{color:var(--coral-600);}
.cond-custom-mini{display:flex;gap:7px;align-items:center;}

/* schedule editor */
.cond-sched-editor{display:flex;flex-direction:column;gap:8px;}
.cond-days-row{display:flex;gap:4px;}
.cond-day{width:28px;height:28px;border-radius:7px;border:1.5px solid var(--border);background:var(--surface-sunken);font-size:12px;font-weight:700;color:var(--text-muted);cursor:pointer;display:grid;place-items:center;transition:border-color .12s,background .12s,color .12s;}
.cond-day:hover{border-color:var(--accent);}
.cond-day.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong);}
.cond-time-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.cond-time-input{border:1px solid var(--border);border-radius:7px;padding:4px 8px;font-size:12.5px;background:var(--surface-sunken);color:var(--text);cursor:pointer;width:100px;}
.cond-time-input:focus{outline:none;border-color:var(--accent);}
.cond-invert-lbl{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-muted);cursor:pointer;}

/* file type editor */
.cond-ft-editor{display:flex;flex-direction:column;gap:6px;}

/* group editor */
.cond-group-editor{display:flex;align-items:center;gap:8px;}

/* chip in detail view */
.cond-chip-typed{display:inline-flex;align-items:center;gap:4px;}
.cond-chip-type{display:flex;align-items:center;opacity:.75;}


/* ============================================================
   TRACEHOLD — Flota · Grupos (lista y cajón de detalle; ver también «idn-*» al final)
   ============================================================ */
.grp-name { font-size:14px; font-weight:650; color:var(--text-strong); letter-spacing:-.01em; }
.grp-desc { font-size:11.5px; color:var(--text-muted); line-height:1.4;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* pila de avatares */
.grp-memrow { display:flex; align-items:center; gap:11px; }
.grp-avstack { display:flex; align-items:center; }
.grp-av { border:2px solid var(--surface); margin-left:-8px; }
.grp-av:first-child { margin-left:0; }
.grp-memcount { font-size:12px; color:var(--text-muted); font-weight:550; white-space:nowrap; }

/* miembros en el cajón */
.gd-members { display:flex; flex-direction:column; gap:7px; }
.gd-member {
  display:flex; align-items:center; gap:10px; padding:8px 10px;
  background:var(--surface-2); border:1px solid var(--border); border-radius:10px;
  transition:border-color .12s, background .12s;
}
.gd-member:hover { border-color:var(--border-strong); background:var(--surface-hover); }

/* usado-en */
.gd-usedlist { display:flex; flex-direction:column; gap:7px; }
.gd-used {
  display:flex; align-items:center; gap:10px; padding:9px 11px;
  background:var(--surface-2); border:1px solid var(--border); border-radius:10px;
  font-size:12.5px; color:var(--text-strong); font-weight:550;
  transition:border-color .12s, background .12s;
}
.gd-used:hover { border-color:var(--border-strong); background:var(--surface-hover); }
.gd-used .grow { flex:1; min-width:0; }

/* ------------------------------------------------------------
   Identidad unificada (mig 323): identificadores/sesiones en la ficha y cola de duplicados de Usuarios
   ------------------------------------------------------------ */
.usr-dev.usr-ident .dname { overflow-wrap:anywhere; }
.usr-chip .dx-chip { margin-left:var(--sp-1); }
.idq-list { display:flex; flex-direction:column; gap:var(--sp-4); }
.usr-actions { display:inline-flex; gap:var(--sp-2); justify-content:flex-end; flex-wrap:wrap; }
.idq-card { display:flex; flex-direction:column; gap:var(--sp-3); padding:var(--pad-card); }
.idq-head { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--sp-3); flex-wrap:wrap; }
.idq-why strong { color:var(--text-strong); font-size:var(--text-md); }
.idq-pair { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-3); }
.idq-person { min-width:0; display:flex; flex-direction:column; gap:var(--sp-2); padding:var(--sp-3);
  background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); }
.idq-person.is-keep { border-color:var(--accent); background:var(--accent-softer); }
.idq-role { font-size:var(--text-xs); font-weight:650; color:var(--text-muted); letter-spacing:.02em; }
.idq-name { font-size:var(--text-md); font-weight:650; color:var(--text-strong); overflow-wrap:anywhere; }
.idq-mail { font-size:var(--text-xs); color:var(--text-muted); font-family:var(--font-mono); }
.idq-chips { display:flex; flex-wrap:wrap; gap:var(--sp-2); }
.idq-meta { display:flex; flex-direction:column; gap:var(--sp-1); font-size:var(--text-xs); color:var(--text-muted); }
.idq-ev { display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-2); }
.idq-actions { display:flex; flex-wrap:wrap; gap:var(--sp-2); }
@media (max-width:760px) { .idq-pair { grid-template-columns:1fr; } }

/* ============================================================
   Prevention Policies — rediseño premium (page-scoped .pp-*)
   Construido sobre tokens semánticos + clases .act-*, .badge.*, .switch
   ya existentes (theme-safe light/dark/clasico). NO usa `.seg`
   (inexistente): la segmentación es `.pp-seg`.
   ============================================================ */

/* ---- segmented control ---- */
.pp-seg{display:inline-flex;background:var(--surface-sunken);border:1px solid var(--border);
  border-radius:var(--r-sm);padding:2px;gap:2px;flex-wrap:wrap;}
.pp-seg button{appearance:none;border:none;background:transparent;cursor:pointer;
  font:inherit;font-size:12px;font-weight:600;color:var(--text-muted);
  padding:5px 12px;border-radius:var(--r-xs);transition:background .12s,color .12s;
  display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}
.pp-seg button:hover:not(:disabled):not(.on){color:var(--text-strong);}
.pp-seg button:disabled{opacity:.5;cursor:default;}
.pp-seg button.on{background:var(--surface);color:var(--text-strong);box-shadow:var(--sh-1,0 1px 2px rgba(0,0,0,.08));}
.pp-seg button:focus-visible{outline:none;box-shadow:var(--focus);}

/* SIGNATURE: columna de "postura" — el modo seleccionado se colorea por
   semántica de acción (reusa la paleta .act-*; dark vía overrides propios). */
.pp-modeseg button{padding:4px 10px;font-size:11px;}
.pp-modeseg button.on.mode-observe{background:var(--ok-soft);color:var(--ok-fg);box-shadow:none;}
.pp-modeseg button.on.mode-warn{background:var(--amber-100);color:var(--amber-700);box-shadow:none;}
.pp-modeseg button.on.mode-block{background:var(--coral-100);color:var(--coral-600);box-shadow:none;}
.pp-modeseg button.on.mode-redact{background:var(--violet-100);color:var(--violet-600);box-shadow:none;}
.pp-modeseg button.on.mode-inherit{background:var(--surface);color:var(--text-strong);}
[data-theme="dark"] .pp-modeseg button.on.mode-warn{background:#2f2410;color:#f5cb7a;}
[data-theme="dark"] .pp-modeseg button.on.mode-block{background:#3a1916;color:#fca99e;}
[data-theme="dark"] .pp-modeseg button.on.mode-redact{background:#211a3e;color:#c4aef7;}

/* ---- policy list (left rail) ---- */
.pp-row{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:var(--r-sm);
  background:transparent;border:1px solid transparent;cursor:pointer;transition:background .12s,border-color .12s;}
.pp-row:hover{background:var(--surface-hover);}
.pp-row.sel{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent);}
.pp-row:focus-visible{outline:none;box-shadow:var(--focus);}
.pp-row-off{opacity:.6;}
.pp-grip{color:var(--text-subtle);cursor:grab;opacity:0;transition:opacity .12s;display:inline-flex;width:14px;flex:0 0 auto;}
.pp-row:hover .pp-grip,.pp-row:focus-within .pp-grip{opacity:1;}
.pp-grip-spacer{cursor:default;}
.pp-rank{flex:0 0 auto;width:22px;height:22px;display:grid;place-items:center;border-radius:var(--r-xs);
  background:var(--surface-sunken);color:var(--text-muted);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;}
.pp-rank-fallback{background:transparent;color:var(--text-subtle);}
.pp-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.pp-row-title{display:flex;align-items:center;gap:6px;min-width:0;}
.pp-name{font-weight:600;color:var(--text-strong);font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pp-row-meta{display:flex;align-items:center;gap:6px;min-width:0;}
.pp-scope{font-size:11.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px;}
.pp-status{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;color:var(--text-muted);margin-left:auto;}
.pp-status .dot{width:6px;height:6px;border-radius:50%;background:var(--text-subtle);}
.pp-status.on .dot{background:var(--ok);}
.pp-default-wrap{margin-top:6px;padding-top:8px;border-top:1px dashed var(--border);}
.pp-row-default,.pp-row-default:hover{background:var(--surface-2);}
.pp-list-hint{font-size:11px;color:var(--text-subtle);margin:2px 4px 6px;}
.pp-empty{padding:22px 14px;text-align:center;color:var(--text-muted);display:flex;flex-direction:column;align-items:center;gap:7px;}
.pp-empty-t{font-weight:600;color:var(--text-strong);font-size:13px;}
.pp-empty-s{font-size:12px;max-width:34ch;line-height:1.4;}

/* ---- editor header + dirty save bar ---- */
.pp-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px;}
.pp-editor-id{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;}
.pp-name-input{border:none;background:transparent;font-size:var(--fs-xl);font-weight:700;color:var(--text-strong);
  padding:2px 0;outline:none;max-width:420px;border-bottom:1px solid transparent;}
.pp-name-input:focus{border-bottom-color:var(--accent);}
.pp-desc-input{max-width:560px;font-size:12.5px;}
.pp-editor-tools{display:flex;align-items:center;gap:6px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;}
.pp-active-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);cursor:pointer;}
.pp-tabs{margin-bottom:16px;}
.pp-dirty-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-left:6px;}
.pp-savebar{position:sticky;bottom:0;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:16px;padding:11px 12px;
  background:var(--surface);border-top:1px solid var(--border);border-radius:0 0 var(--r-lg) var(--r-lg);z-index:2;}
.pp-savebar-msg{flex:1 1 220px;min-width:0;font-size:var(--text-xs,12px);color:var(--text-muted);display:inline-flex;align-items:center;gap:6px;}
.pp-savebar-msg.dx-edit-dirty{color:var(--warn-fg);}
.pp-savebar-msg.pp-banner-err{font-size:var(--text-sm,12.5px);color:var(--danger-fg);}

/* ---- Políticas → Transferencia de ficheros: tarjetas fluidas con secciones del kit + barra de guardado ---- */
.pol-files-card{display:flex;flex-direction:column;gap:18px;width:100%;max-width:none;}
.pol-files-title{margin:0;font-size:var(--text-md);font-weight:600;color:var(--text-strong);}
.pol-files-lede{margin:4px 0 0;max-width:96ch;font-size:var(--text-sm);line-height:1.5;color:var(--text-muted);}
.pol-files-head2{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.pol-files-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:14px;}
.pol-files-opt{display:flex;align-items:flex-start;gap:12px;}
.pol-files-opt .dx-toggle-wrap{flex:0 0 auto;margin-top:1px;}
.pol-files-opt-t{display:flex;flex-direction:column;gap:3px;min-width:0;}
.pol-files-opt-t strong{font-size:var(--text-base);font-weight:500;color:var(--text-strong);}
.pol-files-select{max-width:360px;width:100%;}
.pol-files-note{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2);font-size:var(--text-sm);line-height:1.5;color:var(--text-muted);}
.pol-files-note strong{color:var(--text-strong);font-weight:600;}
.pol-files-card .pp-savebar{margin-top:0;border-radius:var(--r-lg);}
.pol-files-ok{color:var(--ok-fg);}
.pol-files-ops{display:flex;gap:4px;justify-content:flex-end;}
.pol-files-card .dx-tbl td.pol-files-c-dir,.pol-files-card .dx-tbl td.pol-files-c-act{min-width:130px;}
.pol-files-card .dx-tbl td.pol-files-c-ops{width:84px;}
.pol-files-card .dx-tbl td .input{width:100%;min-width:0;}

/* ---- capability cards + module rows ---- */
.pp-capcard{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px;}
.pp-capcard + .pp-capcard{margin-top:14px;}
.pp-capcard-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:8px;}
.pp-eyebrow{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-subtle);}
.pp-capcard-count{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;}
.pp-mod-list{display:flex;flex-direction:column;gap:6px;}
.pp-mod{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:var(--r-sm);background:var(--surface);border:1px solid var(--border);}
.pp-mod-switch{flex:0 0 auto;}
.pp-mod-text{flex:1;min-width:0;}
.pp-mod-label{font-weight:600;color:var(--text-strong);font-size:13px;display:flex;align-items:center;flex-wrap:wrap;gap:3px;}
.pp-mod-desc{font-size:11.5px;color:var(--text-muted);margin-top:2px;line-height:1.35;}
/* ---- editor de perfil (rediseño 2026-10-04): techo + exigencia, secciones, avanzado, staff ---- */
.pp-section-title{font-size:13px;font-weight:700;color:var(--text-strong);margin-top:6px;}
.pp-apply .pp-field + .pp-field{margin-top:14px;}
.pp-ceilseg{flex-wrap:wrap;}
.pp-ladder{margin-top:14px;padding-top:12px;border-top:1px solid var(--divider);font-size:12px;color:var(--text-muted);line-height:1.5;display:flex;align-items:center;flex-wrap:wrap;gap:6px;}
.pp-appliesto{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px;}
.pp-appliesto .pp-scope{max-width:none;white-space:normal;}
.pp-help{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;margin-left:4px;border-radius:var(--r-pill);border:1px solid var(--border-strong);color:var(--text-muted);font-size:10px;font-weight:700;cursor:help;}
.pp-help:hover,.pp-help:focus-visible{color:var(--text-strong);border-color:var(--accent);outline:none;}
.pp-appblocks{align-items:flex-start;}
.pp-applist{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px;}
/* ---- Shadow AI: productos locales a cerrar (reutiliza el panel de categorías de antes) ---- */
.pp-llmcat{display:flex;flex-direction:column;gap:8px;margin-left:22px;padding:10px 12px;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--border);}
.pp-llmcat-title{font-size:12px;font-weight:700;color:var(--text-strong);}
.pp-llmcat-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:6px 0;border-top:1px solid var(--divider);}
.pp-llmcat-text{flex:1 1 220px;min-width:0;}
.pp-llmcat-label{font-size:12.5px;font-weight:600;color:var(--text-strong);}
.pp-appcheck{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-strong);cursor:pointer;}
.pp-appcheck input{accent-color:var(--accent);}
.pp-advanced > summary{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;list-style:none;margin-bottom:0;}
.pp-advanced > summary::-webkit-details-marker{display:none;}
.pp-advanced > summary::before{content:'▸';margin-right:8px;color:var(--text-subtle);font-size:11px;}
.pp-advanced[open] > summary::before{content:'▾';}
.pp-advanced[open] > summary{margin-bottom:10px;}
.pp-advanced > summary .pp-eyebrow{flex:1;}
/* ---- vista simple del piloto (WP-3 2026-10-16): «Avanzado» por secciones, Linux aparte, aviso de USB, ajustes de la org ---- */
.pp-adv-sec + .pp-adv-sec{margin-top:14px;}
.pp-adv-eyebrow{margin:0 0 8px;}
.pp-adv-linux{margin-top:14px;padding:10px 12px;border:1px dashed var(--border);border-radius:var(--r-sm);}
.pp-adv-linux-off{display:flex;align-items:center;flex-wrap:wrap;gap:8px;}
.pp-adv-linux-off .pp-mod-desc{flex:1 1 220px;margin-top:0;}
.pp-usb-hint{margin:-2px 0 0 22px;padding:8px 12px;font-size:11.5px;line-height:1.4;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);}
.pp-usb-hint .btn{margin-left:4px;}
/* ---- Protección del cliente (rediseño MVP 2026-10-25): bloques con tarjetas de un nivel; el detalle técnico es solo de staff ---- */
.pp-intro{margin:0;font-size:12.5px;line-height:1.45;}
.pp-block{display:flex;flex-direction:column;gap:10px;}
.pp-block + .pp-block{margin-top:8px;}
.pp-block-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.pp-block-text{min-width:0;}
.pp-block-title{margin:0;font-size:15px;font-weight:700;color:var(--text-strong);}
.pp-block-lede{margin-top:2px;font-size:12.5px;color:var(--text-muted);}
.pp-block-list{display:flex;flex-direction:column;gap:8px;}
.pp-grp{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);}
.pp-grp-text{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:3px;}
.pp-grp-title{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:13.5px;font-weight:600;color:var(--text-strong);}
.pp-grp-scope{font-size:12px;color:var(--text-subtle);line-height:1.4;}
.pp-grp-note{margin-top:4px;font-size:12px;line-height:1.4;color:var(--text);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-sm);padding:6px 9px;}
.pp-assign-how{margin:0;font-size:12.5px;line-height:1.45;}
.pp-tech{margin-top:16px;}
.pp-tech > .pp-section-title{margin:0 0 12px;}
.pp-staff{border-style:dashed;}

/* ---- sensitivity ---- */
.pp-reco{margin-left:6px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--accent-strong);background:var(--accent-soft);padding:1px 5px;border-radius:var(--r-pill);}
.pp-sens-hint{margin-top:8px;font-size:12px;color:var(--text-muted);line-height:1.4;}

.pp-classfloor-warn{margin-top:10px;display:flex;align-items:flex-start;gap:8px;font-size:12px;line-height:1.45;
  color:var(--coral-600);background:var(--coral-100);border:1px solid var(--coral-600);border-radius:var(--r-sm);padding:9px 11px;}
[data-theme="dark"] .pp-classfloor-warn{background:#3a1916;color:#fca99e;border-color:#7a3a30;}

/* ---- assignment chips ---- */
.pp-field{display:flex;flex-direction:column;gap:6px;}
.pp-field-label{font-size:11px;font-weight:600;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.05em;}
.pp-filter-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:12px;}
.pp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
.pp-chip{font-size:11.5px;padding:3px 9px;border-radius:var(--r-pill);background:var(--surface-sunken);color:var(--text);border:1px solid var(--border);}
.pp-chip-stale{color:var(--text-subtle);font-style:italic;}
.pp-filter-empty{margin-top:6px;font-size:12px;color:var(--text-muted);display:inline-flex;align-items:center;gap:6px;}

/* ---- assign-mode banner ---- */
.pp-banner{border:1px solid var(--accent)!important;background:var(--accent-soft)!important;padding:14px;margin-bottom:14px;}
.pp-banner-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap;}
.pp-banner-ico{color:var(--accent-strong);display:inline-flex;}
.pp-target-lock{display:inline-flex;align-items:center;gap:4px;}
.pp-banner-foot{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap;}
.pp-banner-err{color:var(--coral-600);font-size:12.5px;}
.pp-chiptoggle{cursor:pointer;font-size:11.5px;padding:4px 10px;border-radius:var(--r-pill);
  background:var(--surface);border:1px solid var(--border);color:var(--text-muted);transition:all .12s;}
.pp-chiptoggle.on{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);}

/* ---- Perfiles de prevención sobre el kit dx-* (vistas, página, avisos y formularios sin estilo en línea) ---- */
.pp-layout{display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:18px;align-items:start;margin-top:4px;}
@media (max-width:1100px){.pp-layout{grid-template-columns:minmax(0,1fr);}}
.pp-rows{display:flex;flex-direction:column;gap:2px;}
.pp-list-pad{padding:12px;}
.pp-card-pad{padding:18px;}
.pp-list-hint .btn{margin-left:4px;}
.pp-row-title .badge{flex:0 0 auto;white-space:nowrap;}
.pp-list-warn{margin:2px 4px 8px;padding:8px 10px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--warn-soft);
  color:var(--warn-fg);font-size:var(--text-xs,12px);line-height:1.45;}
.pp-create{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:14px;margin-bottom:14px;}
.pp-create-name{flex:1 1 280px;min-width:220px;}
.pp-name-row{display:flex;align-items:center;gap:8px;}
.pp-badge-gap{margin-left:4px;}
.pp-note{margin-top:4px;line-height:1.4;}
.pp-stack{display:flex;flex-direction:column;gap:14px;}
.pp-stack-lg{gap:16px;}
.pp-banner-lede{margin:0 0 10px;line-height:1.4;}
.pp-banner-cols{display:flex;flex-wrap:wrap;gap:12px;}
.pp-banner-cols-lg{gap:14px;}
.pp-banner-col{min-width:0;}
.pp-banner-col-240{flex:1 1 240px;}
.pp-banner-col-260{flex:1 1 260px;}
.pp-banner-col-220{flex:1 1 220px;}
.pp-w-full{width:100%;}
.pp-chip-scroll{display:flex;flex-wrap:wrap;gap:6px;max-height:120px;overflow-y:auto;}
.pp-role-label{display:block;margin:10px 0 4px;}
.pp-role-row{display:flex;gap:6px;}
.pp-match-row{display:flex;align-items:center;gap:8px;}


/* ============================================================
   BARRIDO DS MINIMALISTA (PR3, 2026-10-02) — una región por familia.
   Cada familia añade sus reglas SOLO dentro de su región, justo encima de
   su línea «fin», para que los merges en paralelo no se pisen.
   ============================================================ */

/* ====================== BARRIDO · FAMILIA A ====================== */
/* pages-main.jsx — Eventos, Incidentes (clásica), Políticas, Medios extraíbles, feedback */
/* Interruptor de políticas (PolToggle): CSS puro, role="switch", sin SVG. */
.pm-switch{--knob:var(--text-muted);position:relative;flex-shrink:0;width:36px;height:20px;padding:0;border:0;border-radius:var(--r-pill);background:var(--border-strong);cursor:pointer;transition:background .18s;}
.pm-switch.sm{width:30px;height:17px;}
.pm-switch[aria-checked="true"]{--knob:var(--accent-fg);background:var(--accent);}
.pm-switch-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--knob);transition:transform .18s;}
.pm-switch.sm .pm-switch-knob{width:13px;height:13px;}
.pm-switch[aria-checked="true"] .pm-switch-knob{transform:translateX(16px);}
.pm-switch.sm[aria-checked="true"] .pm-switch-knob{transform:translateX(13px);}
.pm-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
/* Nota de estado bajo la cabecera (modo observación): una línea de texto, sin caja, como la portada. */
.pm-note{margin:0 0 var(--sp-4);font-size:var(--fs-sm);line-height:1.5;color:var(--text-muted);}
.pm-note strong{font-weight:500;color:var(--danger-fg);}
/* Punto de tono en la etiqueta de un KPI (polStatCard). */
.pm-dot{display:inline-block;width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--accent);}
.pm-dot.danger{background:var(--danger);}
.pm-dot.warn{background:var(--warn);}
.pm-dot.info{background:var(--info);}
.pm-dot.ok{background:var(--ok);}
/* KPI clicable (filtro rápido): sin cajas ni desplazamientos; el activo se marca con subrayado de acento. */
.kpi.pm-kpi-click{cursor:pointer;user-select:none;}
.kpi.pm-kpi-click:hover .k-label{color:var(--text-strong);}
.kpi.pm-kpi-click.on .k-label{color:var(--text-strong);}
.kpi.pm-kpi-click.on::after{content:"";position:absolute;left:0;right:0;bottom:10px;height:2px;border-radius:2px;background:var(--accent);}
/* Chip conmutable (selector múltiple de condiciones): activo = acento suave, sin relleno sólido. */
.pm-chip{padding:3px 9px;border:1px solid var(--divider);border-radius:14px;background:transparent;color:var(--text);font-size:var(--fs-sm);cursor:pointer;}
.pm-chip:hover{border-color:var(--border-strong);}
.pm-chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-strong);}
/* Fila seleccionable de una lista maestra (árbol de rulesets). */
.pm-pick{padding:8px 10px;margin-bottom:2px;border-radius:7px;color:var(--text);cursor:pointer;}
.pm-pick:hover{background:var(--surface-2);}
.pm-pick.on{background:var(--accent-soft);color:var(--text-strong);}
/* Selector de filtro (<select>) con chevrón; .on = filtro aplicado. El fondo activo es OPACO (mezcla
   del acento sobre la superficie): el desplegable nativo pinta la lista con el fondo del propio <select>
   y, con un rgba translúcido, salía claro con texto claro (ilegible). Las <option> tienen su regla en styles.css. */
.pm-select{appearance:none;-webkit-appearance:none;font:inherit;font-size:var(--fs-sm);padding:6px 26px 6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface);background-image:linear-gradient(45deg,transparent 50%,var(--text-muted) 50%),linear-gradient(135deg,var(--text-muted) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%;background-size:5px 5px;background-repeat:no-repeat;color:var(--text);cursor:pointer;outline:none;}
.pm-select:focus-visible{border-color:var(--accent);}
.pm-select.on{border-color:var(--accent);background-color:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent-strong);font-weight:600;}
/* Hallazgo de un reporte (FindingsBlock_): fila con casilla opcional; seleccionado = tono de peligro suave. */
/* Telón de un diálogo modal: cubre la ventana y centra su contenido. */
.pm-scrim{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,black 50%,transparent);}
/* Lista seleccionada en una tabla maestra-detalle. */
.tbl tbody tr.pm-sel{background:var(--surface-2);box-shadow:inset 2px 0 0 var(--accent);}
/* Pestañas del panel lateral de una lista; campo de solo lectura. */
.pm-ptab{padding:6px 10px;margin-bottom:-1px;border:0;border-bottom:2px solid transparent;background:none;color:var(--text-muted);font-size:var(--fs-sm);font-weight:500;cursor:pointer;}
.pm-ptab:hover{color:var(--text-strong);}
.pm-ptab.on{color:var(--text-strong);font-weight:600;border-bottom-color:var(--accent);}
.pm-flabel{display:block;margin-bottom:4px;font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);}
.pm-roval{padding:6px 0;font-size:var(--fs-base);color:var(--text-strong);}
/* BEGIN pm-utilidades (generado por el barrido; !important a propósito: sustituyen style inline) */
.pm-bb-border{border-bottom:1px solid var(--border) !important;}
.pm-bb-divider{border-bottom:1px solid var(--divider) !important;}
.pm-bc-accent{border-color:var(--accent) !important;}
.pm-bc-border-strong{border-color:var(--border-strong) !important;}
.pm-bc-border{border-color:var(--border) !important;}
.pm-bc-danger-fg{border-color:var(--danger-fg) !important;}
.pm-bc-transparent{border-color:transparent !important;}
.pm-bd-1px-dashed-brand{border:1px dashed var(--brand) !important;}
.pm-bd-1px-solid{border-width:1px !important;border-style:solid !important;}
.pm-bd-accent{border:1px solid var(--accent) !important;}
.pm-bd-border{border:1px solid var(--border) !important;}
.pm-bd-divider{border:1px solid var(--divider) !important;}
.pm-bd-warn-fg{border:1px solid var(--warn-fg) !important;}
.pm-bg-accent-soft{background:var(--accent-soft) !important;}
.pm-bg-accent{background:var(--accent) !important;}
.pm-bg-danger-soft{background:var(--danger-soft) !important;}
.pm-bg-danger{background:var(--danger) !important;}
.pm-bg-ok-soft{background:var(--ok-soft) !important;}
.pm-bg-ok{background:var(--ok) !important;}
.pm-bg-surface-2{background:var(--surface-2) !important;}
.pm-bg-surface-sunken{background:var(--surface-sunken) !important;}
.pm-bg-surface{background:var(--surface) !important;}
.pm-bg-transparent{background:transparent !important;}
.pm-bg-warn-soft{background:var(--warn-soft) !important;}
.pm-bg-warn{background:var(--warn) !important;}
.pm-bl-3px-solid-accent{border-left:3px solid var(--accent) !important;}
.pm-bl-4px-solid-brand{border-left:4px solid var(--brand) !important;}
.pm-bt-divider{border-top:1px solid var(--divider) !important;}
.pm-bw-2{border-width:2px !important;}
.pm-c-accent-strong{color:var(--accent-strong) !important;}
.pm-c-accent{color:var(--accent) !important;}
.pm-c-danger-fg{color:var(--danger-fg) !important;}
.pm-c-danger{color:var(--danger) !important;}
.pm-c-ok-fg{color:var(--ok-fg) !important;}
.pm-c-text-muted{color:var(--text-muted) !important;}
.pm-c-text-strong{color:var(--text-strong) !important;}
.pm-c-text-subtle{color:var(--text-subtle) !important;}
.pm-c-text{color:var(--text) !important;}
.pm-c-warn-fg{color:var(--warn-fg) !important;}
.pm-c-warn{color:var(--warn) !important;}
.pm-chips{display:flex !important;flex-wrap:wrap !important;gap:4px !important;}
.pm-dialog{width:600px !important;max-width:96vw !important;max-height:92vh !important;overflow:auto !important;padding:22px !important;}
.pm-err{padding:8px !important;margin-bottom:10px !important;border-radius:var(--r-md) !important;background:var(--danger-soft) !important;color:var(--danger-fg) !important;font-size:var(--fs-sm) !important;}
.pm-ff-font-mono{font-family:var(--font-mono) !important;}
.pm-ff-font-sans{font-family:var(--font-sans) !important;}
.pm-ff-inherit{font-family:inherit !important;}
.pm-filter-label{display:inline-flex !important;align-items:center !important;gap:6px !important;font-size:var(--fs-sm) !important;font-weight:600 !important;color:var(--text-muted) !important;}
.pm-foot{display:flex !important;gap:8px !important;justify-content:flex-end !important;padding-top:12px !important;border-top:1px solid var(--divider) !important;}
.pm-fst-italic{font-style:italic !important;}
.pm-fw-500{font-weight:500 !important;}
.pm-fw-600{font-weight:600 !important;}
.pm-fw-650{font-weight:650 !important;}
.pm-fw-700{font-weight:700 !important;}
.pm-grid2{display:grid !important;gap:10px !important;grid-template-columns:1fr 1fr !important;}
.pm-kpis-4{display:grid !important;gap:12px !important;grid-template-columns:repeat(4,1fr) !important;}
.pm-kpis{display:grid !important;gap:12px !important;grid-template-columns:repeat(auto-fit,minmax(152px,1fr)) !important;}
.pm-lh-1_2{line-height:1.2 !important;}
.pm-lh-1_3{line-height:1.3 !important;}
.pm-lh-1_45{line-height:1.45 !important;}
.pm-lh-1_5{line-height:1.5 !important;}
.pm-lh-1_6{line-height:1.6 !important;}
.pm-ls-05em{letter-spacing:.05em !important;}
.pm-ls-06em{letter-spacing:.06em !important;}
.pm-op-0_3{opacity:0.3 !important;}
.pm-op-0_45{opacity:0.45 !important;}
.pm-op-0_55{opacity:0.55 !important;}
.pm-op-0_6{opacity:0.6 !important;}
.pm-op-0_75{opacity:0.75 !important;}
.pm-op-0_8{opacity:0.8 !important;}
.pm-op-0_9{opacity:0.9 !important;}
.pm-op-0{opacity:0 !important;}
.pm-op-1{opacity:1 !important;}
.pm-r-2{border-radius:2px !important;}
.pm-r-3{border-radius:3px !important;}
.pm-r-lg{border-radius:var(--r-lg) !important;}
.pm-r-md{border-radius:var(--r-md) !important;}
.pm-r-pill{border-radius:var(--r-pill) !important;}
.pm-r-sm{border-radius:var(--r-sm) !important;}
.pm-r-xl{border-radius:var(--r-xl) !important;}
.pm-r-xs{border-radius:var(--r-xs) !important;}
.pm-row{display:flex !important;align-items:center !important;gap:8px !important;}
.pm-sec-label{font-size:var(--fs-xs) !important;font-weight:600 !important;letter-spacing:.06em !important;text-transform:uppercase !important;color:var(--text-muted) !important;}
.pm-text-2xs{font-size:var(--fs-2xs) !important;}
.pm-text-base{font-size:var(--fs-base) !important;}
.pm-text-lg{font-size:var(--fs-lg) !important;}
.pm-text-md{font-size:var(--fs-md) !important;}
.pm-text-sm{font-size:var(--fs-sm) !important;}
.pm-text-xs{font-size:var(--fs-xs) !important;}
.pm-th{padding:10px 14px !important;text-align:left !important;font-weight:600 !important;color:var(--text-subtle) !important;border-bottom:1px solid var(--border) !important;}
.pm-title{font-size:var(--text-md) !important;font-weight:600 !important;color:var(--text-strong) !important;}
.pm-tt-uppercase{text-transform:uppercase !important;}
/* END pm-utilidades */
/* Detalle de un evento operacional (aviso de versión de Claude Code, pages-main.jsx). */
/* — fin familia A — */



/* ====================== BARRIDO · FAMILIA B ====================== */
/* pages-extra.jsx — Endpoints, Descargas, Threat hunting, DLP, Equipo, Perfil, Orgs, Logs… */
/* fb-utilidades:inicio (generado; ordenado por nombre) */
/* Utilidades de ASPECTO (color, fondo, borde, radio, tipografia) de pages-extra.jsx. Llevan !important para conservar la
   precedencia que tenia el estilo en linea sobre las reglas de componente (.card, .badge…). El layout NO va aqui: se queda en style. */
.fb-b-none{border:none !important}
.fb-bb-none{border-bottom:none !important}
.fb-bc-accent{border-color:var(--accent) !important}
.fb-bc-danger{border-color:var(--danger) !important}
.fb-bc-ok{border-color:var(--ok) !important}
.fb-bc-warn{border-color:var(--warn) !important}
.fb-bg-accent{background:var(--accent) !important}
.fb-bg-accent-soft{background:var(--accent-soft) !important}
.fb-bg-accent-softer{background:var(--accent-softer) !important}
.fb-bg-border{background:var(--border) !important}
.fb-bg-danger{background:var(--danger) !important}
.fb-bg-danger-soft{background:var(--danger-soft) !important}
.fb-bg-info{background:var(--info) !important}
.fb-bg-info-soft{background:var(--info-soft) !important}
.fb-bg-none{background:none !important}
.fb-bg-ok{background:var(--ok) !important}
.fb-bg-ok-soft{background:var(--ok-soft) !important}
.fb-bg-surface{background:var(--surface) !important}
.fb-bg-surface-2{background:var(--surface-2) !important}
.fb-bg-surface-alt{background:var(--surface-alt) !important}
.fb-bg-surface-sunken{background:var(--surface-sunken) !important}
.fb-bg-text-subtle{background:var(--text-subtle) !important}
.fb-bg-transparent{background:transparent !important}
.fb-bg-violet-soft{background:var(--violet-soft) !important}
.fb-bg-warn-soft{background:var(--warn-soft) !important}
.fb-bw-1_5px{border-width:1.5px !important}
.fb-bw-2px{border-width:2px !important}
.fb-c-accent{color:var(--accent) !important}
.fb-c-accent-strong{color:var(--accent-strong) !important}
.fb-c-danger{color:var(--danger) !important}
.fb-c-info{color:var(--info) !important}
.fb-c-text{color:var(--text) !important}
.fb-c-text-muted{color:var(--text-muted) !important}
.fb-c-text-strong{color:var(--text-strong) !important}
.fb-c-text-subtle{color:var(--text-subtle) !important}
.fb-c-violet{color:var(--violet) !important}
.fb-divider-b{border-bottom:1px solid var(--divider) !important}
.fb-divider-box{border:1px solid var(--divider) !important}
.fb-divider-t{border-top:1px solid var(--divider) !important}
.fb-edge-danger{border-left:3px solid var(--danger) !important}
.fb-ff-font-sans{font-family:var(--font-sans) !important}
.fb-ff-inherit{font-family:inherit !important}
.fb-fs-2xl{font-size:var(--fs-2xl) !important}
.fb-fs-2xs{font-size:var(--fs-2xs) !important}
.fb-fs-base{font-size:var(--fs-base) !important}
.fb-fs-lg{font-size:var(--fs-lg) !important}
.fb-fs-md{font-size:var(--fs-md) !important}
.fb-fs-sm{font-size:var(--fs-sm) !important}
.fb-fs-xl{font-size:var(--fs-xl) !important}
.fb-fs-xs{font-size:var(--fs-xs) !important}
.fb-fst-italic{font-style:italic !important}
.fb-fvn-tabular-nums{font-variant-numeric:tabular-nums !important}
.fb-fw-400{font-weight:400 !important}
.fb-fw-500{font-weight:500 !important}
.fb-fw-600{font-weight:600 !important}
.fb-fw-700{font-weight:700 !important}
.fb-hairline{border:1px solid var(--border) !important}
.fb-hairline-b{border-bottom:1px solid var(--border) !important}
.fb-hairline-t{border-top:1px solid var(--border) !important}
.fb-hairline-t-dashed{border-top:1px dashed var(--border) !important}
.fb-lh-1{line-height:1 !important}
.fb-lh-1_2{line-height:1.2 !important}
.fb-lh-1_3{line-height:1.3 !important}
.fb-lh-1_4{line-height:1.4 !important}
.fb-lh-1_45{line-height:1.45 !important}
.fb-lh-1_5{line-height:1.5 !important}
.fb-lh-1_55{line-height:1.55 !important}
.fb-lh-1_7{line-height:1.7 !important}
.fb-lh-2{line-height:2 !important}
.fb-ls-_01em{letter-spacing:.01em !important}
.fb-ls-_04em{letter-spacing:.04em !important}
.fb-ls-_05em{letter-spacing:.05em !important}
.fb-ls-_06em{letter-spacing:.06em !important}
.fb-ls-_07em{letter-spacing:.07em !important}
.fb-ls-_5px{letter-spacing:.5px !important}
.fb-ls-_6px{letter-spacing:.6px !important}
.fb-op-0_3{opacity:0.3 !important}
.fb-op-0_35{opacity:0.35 !important}
.fb-op-0_5{opacity:0.5 !important}
.fb-op-0_55{opacity:0.55 !important}
.fb-op-0_6{opacity:0.6 !important}
.fb-op-0_7{opacity:0.7 !important}
.fb-op-0_9{opacity:0.9 !important}
.fb-op-1{opacity:1 !important}
.fb-r-14px{border-radius:14px !important}
.fb-r-2px{border-radius:2px !important}
.fb-r-3px{border-radius:3px !important}
.fb-r-50p{border-radius:50% !important}
.fb-r-lg{border-radius:var(--r-lg) !important}
.fb-r-md{border-radius:var(--r-md) !important}
.fb-r-pill{border-radius:var(--r-pill) !important}
.fb-r-sm{border-radius:var(--r-sm) !important}
.fb-r-top-2px{border-radius:2px 2px 0 0 !important}
.fb-r-xl{border-radius:var(--r-xl) !important}
.fb-r-xs{border-radius:var(--r-xs) !important}
.fb-rail-l{border-left:2px solid var(--border) !important}
.fb-ring-accent{border:1px solid var(--accent) !important}
.fb-ring-danger{border:1px solid var(--danger) !important}
.fb-ring-info{border:1px solid var(--info) !important}
.fb-ring-ok{border:1px solid var(--ok) !important}
.fb-ring-violet{border:1px solid var(--violet) !important}
.fb-ring-warn{border:1px solid var(--warn) !important}
.fb-shadow-xl{box-shadow:var(--shadow-xl) !important}
.fb-tt-uppercase{text-transform:uppercase !important}
.fb-modal-title{margin:0 0 14px;font-size:var(--fs-lg);}
/* fb-utilidades:fin */
/* ── Biblioteca de detección · Patrones (pages-library.jsx, prefijo lib-) ─────────────────────────
   Solo tokens, sin estilo en línea. La tabla, las vistas, la barra y el cajón son del kit dx-*. */
.dx-tbl .c-on{width:56px;}
.dx-tbl td.lib-c-on,.dx-tbl th.lib-c-on{padding-right:4px;}
.dx-tbl td.lib-c-act{width:40px;text-align:right;}
.lib-pat-name{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;text-align:left;}
.lib-pat-t{display:inline-flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:var(--text-sm);font-weight:600;color:var(--text-strong);line-height:1.3;}
.lib-pat-kind{font-weight:500;}
.lib-pat-id{font-size:var(--text-2xs);color:var(--text-subtle);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lib-expr{display:block;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);color:var(--text-muted);}
.lib-sevcell{display:inline-flex;align-items:center;gap:6px;}
.lib-adj{width:7px;height:7px;border-radius:var(--r-pill);background:var(--accent);flex-shrink:0;}
.lib-m30{display:inline-flex;flex-direction:column;align-items:flex-end;gap:4px;}
.lib-m30-n{font-size:var(--text-xs);font-weight:600;}
.lib-bar{display:block;width:48px;height:3px;border-radius:var(--r-xs);background:var(--border);overflow:hidden;}
.lib-bar-f{display:block;height:100%;width:var(--lib-w,0%);border-radius:var(--r-xs);background:var(--text-subtle);}
.lib-tone-quiet{color:var(--text-subtle);}
.lib-tone-ok{color:var(--text-muted);}
.lib-tone-warn{color:var(--warn-fg);}
.lib-tone-danger{color:var(--danger-fg);}
.lib-bar-f.lib-tone-ok{background:var(--ok);}
.lib-bar-f.lib-tone-warn{background:var(--warn);}
.lib-bar-f.lib-tone-danger{background:var(--danger);}
.lib-bar-f.lib-tone-quiet{background:var(--text-subtle);}
.lib-chips{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;}
.lib-note{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:12px;font-size:var(--text-sm);}
.lib-note-m{flex:1;min-width:0;}
.lib-banner{margin:0 0 12px;padding:10px 14px;border-radius:var(--r-lg);background:var(--info-soft);color:var(--text-muted);font-size:var(--text-sm);line-height:1.5;}
.lib-banner strong{color:var(--text-strong);}
.lib-code{font-family:var(--font-mono);font-size:var(--text-xs);padding:1px 6px;border-radius:var(--r-sm);background:var(--surface-sunken);color:var(--text-strong);}
.lib-pat-d{font-weight:400;font-size:var(--text-2xs);color:var(--text-subtle);max-width:56ch;line-height:1.35;white-space:normal;}
.lib-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;white-space:nowrap;}
.lib-clip{display:inline-block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;}
.dx-tbl td.lib-c-act-w{width:1%;white-space:nowrap;text-align:right;}
.lib-dom-n{font-weight:600;color:var(--text-muted);margin-right:2px;}
.lib-usage{display:flex;flex-direction:column;gap:4px;font-size:var(--text-sm);}
.lib-usage-h{margin-top:6px;font-size:var(--text-xs);font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;}
.lib-usage-r{padding:4px 0;border-bottom:1px solid var(--border);color:var(--text-strong);}
/* Biblioteca de detección · Entidades sensibles (pages-gazetteer.jsx, prefijo gz-) */
.gz-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px;}
.gz-chip-x{margin-left:6px;border:0;background:transparent;color:var(--text-subtle);cursor:pointer;font-size:var(--text-sm);line-height:1;padding:0 2px;}
.gz-chip-x:hover{color:var(--text-strong);}
.gz-addalias{display:flex;gap:8px;align-items:center;}
.gz-addalias .input{flex:1;min-width:0;}
.gz-import{display:flex;flex-direction:column;gap:14px;padding:16px;}
.gz-import-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.gz-import-t{color:var(--text-strong);}
.gz-import-act{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;}
.gz-seg{align-self:flex-start;}
.gz-maprow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1.4fr) auto;gap:8px;align-items:center;margin-bottom:8px;}
.gz-secret{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;}
.gz-secret-code{font-family:var(--font-mono);font-size:var(--text-xs);padding:2px 8px;border-radius:var(--r-sm);background:var(--surface-sunken);color:var(--text-strong);word-break:break-all;}
/* Cajón del patrón */
.lib-sev-row{display:flex;align-items:center;flex-wrap:wrap;gap:14px;}
.lib-hint{margin:8px 0 0;font-size:var(--text-xs);line-height:1.5;color:var(--text-muted);}
.lib-act{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;}
.lib-act-n{font-size:var(--text-2xl);font-weight:600;color:var(--text-strong);line-height:1;}
.lib-desc{margin:0 0 10px;font-size:var(--text-sm);line-height:1.55;color:var(--text);max-height:9.5em;overflow:auto;}
.lib-expr-full{margin:10px 0 0;padding:10px 12px;border-radius:var(--r-md);background:var(--surface-sunken);border:1px solid var(--border);font-size:var(--text-xs);line-height:1.5;white-space:pre-wrap;word-break:break-all;max-height:12em;overflow:auto;color:var(--text);}
.lib-tester{display:flex;flex-direction:column;gap:8px;}
.lib-tester-l{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.lib-tester-ta,.lib-bench-ta{width:100%;resize:vertical;font-size:var(--text-xs);}
.lib-tester-act{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin-top:4px;}
.lib-tester-act .lib-hint{margin:0;}
.lib-tester-res{display:flex;flex-direction:column;gap:6px;}
.lib-tester-ok{font-size:var(--text-sm);font-weight:600;color:var(--ok-fg);}
.lib-tester-none{font-size:var(--text-sm);color:var(--text-muted);}
.lib-hits{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;}
.lib-hits li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 8px;border-radius:var(--r-md);background:var(--surface-sunken);font-size:var(--text-xs);}
.lib-hits code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lib-rel{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:var(--text-sm);}
.lib-rel-b{color:var(--accent-strong);text-decoration:underline;text-underline-offset:2px;}
.lib-rel-b:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.lib-exc{display:flex;flex-direction:column;gap:2px;}
.lib-exc-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--divider);}
.lib-exc-main{flex:1;min-width:0;}
.lib-exc-add{padding-top:8px;}
/* Banco de pruebas global */
.lib-bench{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;}
.lib-bench .card{display:flex;flex-direction:column;gap:10px;}
.lib-redacted{padding:10px;border-radius:var(--r-lg);background:var(--ok-soft);}
.lib-redacted-t{font-size:var(--text-xs);font-weight:600;color:var(--ok-fg);margin-bottom:4px;}
.lib-redacted-b{font-size:var(--text-xs);white-space:pre-wrap;word-break:break-word;}
.lib-finding{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--border);border-radius:var(--r-lg);}
.lib-finding-m{flex:1;min-width:0;}
.lib-finding-t{font-size:var(--text-sm);font-weight:600;}
@media (forced-colors:active){
  .lib-adj{background:Highlight;forced-color-adjust:none;}
  .lib-bar-f{background:ButtonText;forced-color-adjust:none;}
}
/* Editor de patrones custom (DlpCustomEditor): antes un <style> embebido con azules fijos. Acotado a .dce.
   Las tres .badge-* de tipo se usan tambien en la tabla del catalogo, asi que van sin acotar. */
.fb-overlay{position:fixed;inset:0;background:color-mix(in srgb,black 50%,transparent);display:flex;align-items:center;justify-content:center;z-index:90;}
.badge-amber{background:var(--warn-soft);color:var(--warn-fg);}
.badge-green{background:var(--ok-soft);color:var(--ok-fg);}
.badge-purple{background:var(--accent-soft);color:var(--accent-strong);}
.dce .dce-eyebrow{font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;}
.dce .dce-help{margin-bottom:6px;color:var(--text-subtle);font-size:var(--fs-xs);}
.dce .dce-pos{color:var(--ok-fg);}
.dce .dce-neg{color:var(--danger-fg);}
.dce .dce-del{color:var(--text-subtle);cursor:pointer;font-size:var(--fs-xl);line-height:1;}
.dce .type-selector{display:flex;gap:8px;margin-bottom:18px;}
.dce .type-card{flex:1;font:inherit;color:inherit;border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 8px;cursor:pointer;text-align:center;
  transition:border-color .15s,background .15s;background:var(--surface-sunken);}
.dce .type-card:hover{border-color:var(--accent);background:var(--accent-softer);}
.dce .type-card.selected{border-color:var(--accent);background:var(--accent-soft);}
.dce .type-card.locked{opacity:.45;pointer-events:none;cursor:default;}
.dce .type-card:focus-visible{outline:none;box-shadow:var(--focus);}
.dce-body{display:flex;flex-direction:column;gap:0;}
.dce .type-card-label{font-size:var(--fs-sm);font-weight:600;color:var(--text-muted);margin-bottom:2px;}
.dce .type-card.selected .type-card-label{color:var(--text-strong);}
.dce .type-card-desc{font-size:var(--fs-xs);color:var(--text-subtle);line-height:1.3;}
.dce .example-list{display:flex;flex-direction:column;gap:5px;margin-bottom:8px;}
.dce .example-row{display:flex;align-items:center;gap:8px;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 10px;}
.dce .example-badge{font-size:var(--fs-2xs);font-weight:600;border-radius:var(--r-sm);padding:2px 6px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;}
.dce .badge-pos{background:var(--ok-soft);color:var(--ok-fg);}
.dce .badge-neg{background:var(--danger-soft);color:var(--danger-fg);}
.dce .add-example-row{display:flex;gap:6px;margin-top:4px;}
.dce .add-example-row input{flex:1;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 10px;
  color:var(--text-strong);font-size:var(--fs-sm);font-family:var(--font-mono);outline:none;}
.dce .add-example-row input:focus{border-color:var(--accent);}
.dce .btn-example-pos,.dce .btn-example-neg{border:1px solid var(--border);background:transparent;border-radius:var(--r-md);padding:5px 10px;font-size:var(--fs-xs);cursor:pointer;white-space:nowrap;}
.dce .btn-example-pos{color:var(--ok-fg);}
.dce .btn-example-neg{color:var(--danger-fg);}
.dce .btn-example-pos:hover{background:var(--ok-soft);}
.dce .btn-example-neg:hover{background:var(--danger-soft);}
.dce .inferred-panel{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 14px;margin-top:10px;}
.dce .inferred-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.dce .inferred-lbl{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);}
.dce .conf-badge{font-size:var(--fs-2xs);padding:2px 7px;border-radius:var(--r-sm);}
.dce .conf-high{background:var(--ok-soft);color:var(--ok-fg);}
.dce .conf-mid{background:var(--warn-soft);color:var(--warn-fg);}
.dce .conf-low{background:var(--danger-soft);color:var(--danger-fg);}
.dce .conf-edit{background:var(--surface-2);color:var(--text-muted);}
.dce .inferred-regex{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--accent-strong);background:var(--surface);border:1px solid var(--border-strong);
  border-radius:var(--r-md);padding:7px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.dce .inferred-regex input{background:transparent;border:none;outline:none;color:var(--accent-strong);font-family:var(--font-mono);font-size:var(--fs-sm);flex:1;}
.dce .edit-regex-link{font-size:var(--fs-2xs);color:var(--accent);cursor:pointer;text-decoration:underline;white-space:nowrap;}
.dce .test-pills{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px;}
.dce .pill-ok,.dce .pill-fail{font-size:var(--fs-xs);font-family:var(--font-mono);border-radius:var(--r-sm);padding:2px 7px;}
.dce .pill-ok{background:var(--ok-soft);color:var(--ok-fg);}
.dce .pill-fail{background:var(--danger-soft);color:var(--danger-fg);}
.dce .tag-wrap{display:flex;flex-wrap:wrap;gap:5px;align-items:center;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-md);
  padding:7px 8px;min-height:42px;cursor:text;transition:border-color .15s;}
.dce .tag-wrap:focus-within{border-color:var(--accent);}
.dce .tag-item{display:inline-flex;align-items:center;gap:4px;background:var(--ok-soft);color:var(--ok-fg);border-radius:var(--r-sm);
  padding:2px 8px;font-size:var(--fs-xs);font-family:var(--font-mono);white-space:nowrap;}
.dce .tag-x{cursor:pointer;font-size:var(--fs-md);line-height:1;opacity:.7;}
.dce .tag-x:hover{opacity:1;}
.dce .tag-input-el{background:transparent;border:none;outline:none;color:var(--text-strong);font-size:var(--fs-sm);min-width:100px;flex:1;}
.dce .dict-summary-chip{background:var(--ok-soft);color:var(--ok-fg);border-radius:var(--r-sm);padding:3px 10px;font-size:var(--fs-xs);font-family:var(--font-mono);}
.dce .dict-overflow-list{max-height:120px;overflow-y:auto;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:6px;
  display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;}
.dce .dict-actions{display:flex;gap:6px;margin-top:8px;align-items:center;}
.dce .dict-hint{color:var(--text-subtle);font-size:var(--fs-2xs);margin-left:auto;}
/* Paneles de log (Logs del sistema): superficie hundida y tonos por token, igual en claro y oscuro. */
.fb-log{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px;font-family:var(--font-mono);font-size:var(--fs-xs);
  line-height:1.6;overflow-y:auto;color:var(--text);}
.fb-log-h420{height:420px;line-height:1.5;}
.fb-log-h460{height:460px;}
.fb-log-line{display:flex;gap:10px;padding-bottom:1px;}
.fb-log-stream{flex-shrink:0;font-weight:700;width:50px;}
.fb-log-ts{color:var(--text-subtle);flex-shrink:0;min-width:92px;}
.fb-log-trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fb-tone-ok{color:var(--ok-fg) !important;}
.fb-tone-warn{color:var(--warn-fg) !important;}
.fb-tone-danger{color:var(--danger-fg) !important;}
.fb-tone-info{color:var(--info-fg) !important;}
.fb-tone-accent{color:var(--accent-strong);}
.fb-tone-muted{color:var(--text-muted);}
/* Metadatos JSON de un evento (Threat hunting) */
.th-meta{margin:0;padding:12px;background:var(--surface-sunken);color:var(--text);border:1px solid var(--border);border-radius:var(--r-md);
  font-family:var(--font-mono);font-size:var(--fs-xs);overflow:auto;max-height:180px;}
/* Interruptor de patrones DLP: role="switch" sin SVG ni estilo en linea (mismo aspecto que .switch). */
.fb-switch{position:relative;display:inline-flex;align-items:center;width:36px;height:20px;border-radius:var(--r-xl);border:none;cursor:pointer;padding:0;
  flex-shrink:0;outline:none;background:var(--border-strong);transition:background .2s;}
.fb-switch::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--text-muted);
  transition:left .2s,background .2s;pointer-events:none;}
.fb-switch[aria-checked="true"]{background:var(--accent);}
.fb-switch[aria-checked="true"]::after{left:18px;background:var(--accent-fg);}
.fb-switch:focus-visible{box-shadow:var(--focus);}
.fb-preview{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:10px;font-size:var(--fs-xs);white-space:pre-wrap;
  word-break:break-word;max-height:240px;overflow:auto;}
/* Modo de enforcement (override): tres botones tonales */
.fb-mode{border:1px solid var(--border);background:transparent;color:var(--text-muted);border-radius:var(--r-sm);padding:5px 14px;cursor:pointer;font-weight:500;}
.fb-mode.redact{background:var(--warn-soft);color:var(--warn-fg);}
.fb-mode.block{background:var(--danger-soft);color:var(--danger-fg);}
.fb-mode.on{font-weight:700;box-shadow:0 0 0 2px currentColor;}
.fb-qr{width:180px;height:180px;border-radius:var(--r-lg);background:white;padding:4px;margin-bottom:10px;display:block;}
.fb-toast{position:fixed;top:16px;right:16px;z-index:9999;padding:10px 18px;border-radius:var(--r-lg);background:var(--surface-2);border:1px solid var(--border-strong);
  color:var(--text-strong);font-weight:500;box-shadow:var(--shadow-lg);}
.fb-toast.ok{border-color:var(--ok);}
.fb-toast.err{border-color:var(--danger);}
/* Notas/avisos en tarjeta: tinte suave del tono + borde fino del mismo tono */
.fb-note{border:1px solid var(--border);}
.fb-note.info{background:var(--info-soft);border-color:color-mix(in srgb,var(--info) 25%,transparent);}
.fb-note.danger{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 25%,transparent);}
.fb-note.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent);}
.fb-note.accent{background:var(--accent-softer);border-color:color-mix(in srgb,var(--accent) 20%,transparent);}
.fb-note.ok{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 25%,transparent);}
/* Barrido B · tonos dinamicos (clase en vez de style=) */
.fb-fill{height:100%;border-radius:2px;background:var(--text-muted);}
.fb-fill.ok{background:var(--ok);}
.fb-fill.warn{background:var(--warn);}
.fb-fill.danger{background:var(--danger);}
.fb-fill.info{background:var(--info);}
.fb-fill.accent{background:var(--accent);}
.fb-bgt-info{background:var(--info);}
.fb-bgt-warn{background:var(--warn);}
.fb-bgt-muted{background:var(--text-subtle);}
.fb-stat-v{font-size:var(--fs-xl);font-weight:600;color:var(--text-strong);}
.fb-stat-v.danger{color:var(--danger-fg);}
.fb-stat-v.warn{color:var(--warn-fg);}
.fb-cov-v{font-size:var(--fs-xl);font-weight:700;line-height:1.1;color:var(--text-strong);}
.fb-m30{font-weight:600;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;line-height:1;}
.fb-btn-badge{margin-left:5px;font-size:var(--fs-2xs);}
.btn.primary .fb-btn-badge{background:color-mix(in srgb,currentColor 25%,transparent);color:inherit;}
.kpi.kpi-active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface));}
.fb-row-link{cursor:pointer;}
.fb-row-link.open,.fb-row-detail{background:color-mix(in srgb,var(--accent) 4%,var(--surface));}
.badge.fb-sig{cursor:pointer;border:1px solid transparent;}
.badge.fb-sig.on{font-weight:700;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);}
.fb-chip{display:inline-block;font-size:var(--fs-xs);font-weight:700;padding:2px 8px;border-radius:var(--r-pill);color:var(--text-muted);background:var(--surface-2);}
.fb-chip.ok{color:var(--ok-fg);background:var(--ok-soft);}
.fb-chip.warn{color:var(--warn-fg);background:var(--warn-soft);}
.fb-chip.danger{color:var(--danger-fg);background:var(--danger-soft);}
.fb-chip.info{color:var(--info-fg);background:var(--info-soft);}
.fb-chip.accent{color:var(--accent-strong);background:var(--accent-softer);}
/* casilla (role=switch) con marca de texto: sin SVG */
.fb-cb{width:18px;height:18px;border-radius:var(--r-sm);border:1.5px solid var(--border-strong);background:var(--surface);color:var(--accent-fg);
  display:inline-grid;place-items:center;cursor:pointer;padding:0;font-size:var(--fs-sm);line-height:1;font-weight:700;vertical-align:middle;}
.fb-cb[aria-checked="true"]{border-color:var(--accent);background:var(--accent);}
.fb-cb[aria-checked="true"]::after{content:"\2713";}
.fb-cb[data-state="mixed"]{border-color:var(--accent);background:var(--accent);}
.fb-cb[data-state="mixed"]::after{content:"\2212";}
.fb-cb:focus-visible{box-shadow:var(--focus);outline:none;}
.fb-swatch{width:10px;height:10px;border-radius:3px;display:inline-block;background:var(--accent);}
.fb-tile{width:38px;height:38px;border-radius:var(--r-lg);display:grid;place-items:center;font-weight:700;font-size:var(--fs-md);flex-shrink:0;background:var(--accent-soft);color:var(--accent-strong);}
.fb-tile.sm{width:28px;height:28px;border-radius:var(--r-md);font-size:var(--fs-sm);background:var(--surface-sunken);color:var(--text-muted);}
.fb-tile.sm.self{background:var(--accent);color:var(--accent-fg);}
.fb-tile.ok{background:var(--ok-soft);color:var(--ok-fg);}
.fb-tile.danger{background:var(--danger-soft);color:var(--danger-fg);}
.fb-tile.info{background:var(--info-soft);color:var(--info-fg);}
.fb-tile.warn{background:var(--warn-soft);color:var(--warn-fg);}
.fb-vdot{position:absolute;left:-23px;top:3px;width:10px;height:10px;border-radius:var(--r-pill);background:var(--surface-sunken);border:2px solid var(--border);}
.fb-vdot.on{background:var(--ok);}
.fb-tester{margin-top:5px;font-size:var(--fs-sm);font-weight:600;}
.fb-note-l{border-left:3px solid var(--accent);}
.fb-note-l.err{border-left-color:var(--danger);}
.fb-dz{border:2px dashed var(--border-strong);background:var(--surface-sunken);border-radius:var(--r-sm);transition:border-color .2s;}
.fb-dz.on{border-color:var(--accent);background:var(--accent-softer);}
.fb-ta{width:100%;min-height:130px;padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);
  font-size:var(--fs-base);font-family:var(--font-mono);resize:vertical;box-sizing:border-box;transition:opacity .15s;}
.fb-ta:disabled{background:var(--surface-sunken);color:var(--text-subtle);opacity:.5;}
.fb-banner{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface-2);}
.fb-banner.ok{background:var(--ok-soft);border-color:var(--ok);}
.fb-banner.warn{background:var(--warn-soft);border-color:var(--warn);}
.fb-banner.danger{background:var(--danger-soft);border-color:var(--danger);}
.fb-banner-t{font-weight:700;font-size:var(--fs-md);}
.fb-banner.ok .fb-banner-t{color:var(--ok-fg);}
.fb-banner.warn .fb-banner-t{color:var(--warn-fg);}
.fb-banner.danger .fb-banner-t{color:var(--danger-fg);}
.btn.fb-pg{min-width:28px;padding:3px 6px;font-size:var(--fs-xs);line-height:1;font-weight:400;background:transparent;color:var(--text-muted);border:1px solid var(--border);}
.btn.fb-pg.on{font-weight:700;background:var(--accent);color:var(--accent-fg);border-color:var(--accent);}
/* Tarjeta de propuesta (IA en la sombra): borde y titulo del tono */
.fb-proposal{border-width:1.5px;}
.fb-proposal.ok{border-color:var(--ok);}
.fb-proposal.info{border-color:var(--info);}
.fb-proposal.danger{border-color:var(--danger);}
.fb-proposal.warn{border-color:var(--warn);}
.fb-proposal.ok .fb-proposal-title{color:var(--ok-fg);}
.fb-proposal.info .fb-proposal-title{color:var(--info-fg);}
.fb-proposal.danger .fb-proposal-title{color:var(--danger-fg);}
/* ---- Versiones de Claude Code (staff y tenant: Actualizaciones y Equipos, pages-extra.jsx) — solo tokens, sin hex ---- */
.ccv-pad{padding:var(--sp-4) var(--sp-5) var(--sp-5);}
.ccv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4);}
.ccv-section{margin-bottom:var(--sp-5);}
.ccv-section>h3{margin:0 0 var(--sp-2);font-size:var(--text-md);font-weight:600;color:var(--text-strong);}
.ccv-card{padding:var(--pad-card);}
.ccv-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-top:var(--sp-2);}
.ccv-muted{color:var(--text-muted);font-size:var(--text-sm);}
.ccv-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--sp-3);margin:var(--sp-3) 0;}
.ccv-form label{display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--text-sm);color:var(--text-muted);}
.ccv-form .input[aria-invalid="true"]{border-color:var(--danger);}
.ccv-note{padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2);margin:var(--sp-2) 0 var(--sp-3);font-size:var(--text-sm);}
/* `.tablewrap` de styles.css lleva margen NEGATIVO (-pad-card) para tablas dentro de una `.card` con relleno: aquí las
   tablas van sueltas en la sección, así que ese margen negativo se come la última fila y hace que el texto que sigue
   (nota o «Con manifiesto atrasado…») la pise. Margen propio, positivo, y sin desbordar la sección por los lados. */
.ccv-section .tablewrap{margin:0 0 var(--sp-3);}
.ccv-note.warn{border-color:var(--warn);}
.ccv-note.danger{border-color:var(--danger);}
.ccv-mono{font-family:var(--font-mono);font-size:var(--text-sm);}
/* — fin familia B — */



/* ====================== BARRIDO · FAMILIA C ====================== */
/* pages-reporting*.jsx — Informes y paneles personalizados */

/* ---- Informes: cabecera, filtros, selectores (pages-reporting.jsx) ---- */
.rpt-live{display:inline-flex;align-items:center;gap:10px;}
.rpt-live-pill{display:inline-flex;align-items:center;gap:7px;padding:4px 11px;border-radius:var(--r-pill);font-size:12px;font-weight:500;background:var(--surface-sunken);color:var(--text-muted);border:1px solid var(--border);transition:color .2s,border-color .2s;}
.rpt-live-pill.on{color:var(--text);}
.rpt-live-pill.pulse{border-color:var(--accent);}
.rpt-live-dot{width:6px;height:6px;border-radius:50%;background:var(--text-subtle);flex-shrink:0;}
.rpt-live-pill.on .rpt-live-dot{background:var(--ok);animation:rptpulse 1.6s ease-in-out infinite;}
@keyframes rptpulse{0%,100%{opacity:1}50%{opacity:.35}}
.rpt-sel{appearance:none;-webkit-appearance:none;font:inherit;font-size:12.5px;padding:6px 26px 6px 10px;border:1px solid var(--border);border-radius:var(--r-md);background-color:var(--surface-sunken);color:var(--text);cursor:pointer;outline:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--text-muted) 50%),linear-gradient(135deg,var(--text-muted) 50%,transparent 50%);
  background-position:calc(100% - 14px) 52%,calc(100% - 9px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;}
.rpt-sel:hover{border-color:var(--border-strong);}
.rpt-sel:focus-visible{border-color:var(--accent);box-shadow:var(--focus);}
.rpt-sel.on{border-color:var(--accent);color:var(--text-strong);}
.rpt-period{display:flex;flex-direction:column;gap:6px;min-width:0;}
.rpt-period-seg{flex-wrap:wrap;}
.rpt-period-custom{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.rpt-period-arrow{color:var(--text-subtle);font-size:13px;}
.input.rpt-date{padding:4px 8px;font-size:12.5px;}
.rpt-filterbar{padding:10px 14px;margin-bottom:14px;}
.rpt-filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.rpt-filter-row-extra{margin-top:8px;padding-top:8px;border-top:1px solid var(--divider);}
.rpt-filter-sep{width:1px;height:18px;background:var(--border);margin:0 2px;flex-shrink:0;}
.rpt-filter-fill{flex:1;}
.rpt-filter-slot,.world-exec .exec-inner.rpt-filter-slot{padding-top:20px;}
.btn.rpt-on,.btn.ghost.rpt-on{border-color:var(--accent);color:var(--accent-strong);background:var(--accent-softer);}
.rpt-combo{position:relative;display:inline-block;}
.input.rpt-combo-input{width:100%;box-sizing:border-box;padding:6px 24px 6px 10px;font-size:12.5px;}
.input.rpt-combo-input.on{border-color:var(--accent);color:var(--text-strong);}
.rpt-combo-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;cursor:pointer;color:var(--text-muted);padding:0 2px;font-size:15px;line-height:1;}
.rpt-combo-clear:hover{color:var(--text-strong);}
.rpt-combo-menu{position:absolute;z-index:50;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);box-shadow:var(--sh-lg);max-height:260px;overflow-y:auto;padding:4px;}
.rpt-combo-opt{padding:7px 9px;border-radius:var(--r-md);cursor:pointer;font-size:12.5px;display:flex;justify-content:space-between;align-items:center;gap:8px;}
.rpt-combo-opt.hi{background:var(--surface-2);}
.rpt-combo-opt.apply{justify-content:flex-start;gap:6px;color:var(--accent-strong);}
.rpt-combo-sub{font-size:11px;flex-shrink:0;}
.rpt-pop-wrap{position:relative;display:inline-block;}
.rpt-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:40;padding:12px;box-shadow:var(--sh-lg);overflow-y:auto;}
.rpt-pop-sm{width:188px;padding:10px;}
.rpt-pop-md{width:300px;max-height:380px;}
.rpt-pop-label{margin-bottom:6px;}
.rpt-pop-row{display:flex;gap:6px;margin-bottom:10px;}
.rpt-pop-row .btn{flex:1;padding:0;}
.rpt-pop-block{margin-bottom:10px;}
.rpt-pop-block .rpt-pop-row{margin-bottom:0;}
.input.rpt-pop-input{flex:1;min-width:0;padding:6px 9px;font-size:12.5px;}
.rpt-pop-sub{font-size:11px;margin-top:5px;}
.rpt-pop-sep{border-top:1px solid var(--divider);margin:0 -12px 8px;}
.rpt-pop-pad{padding:6px;}
.rpt-pop-empty{font-size:12px;padding:6px 2px;}
.rpt-spin-sm{width:12px;height:12px;border-width:2px;margin-right:0;vertical-align:middle;}
.rpt-view-list{display:flex;flex-direction:column;gap:2px;}
.rpt-view-row{display:flex;align-items:center;gap:8px;padding:6px;border-radius:var(--r-md);}
.rpt-view-apply{flex:1;min-width:0;text-align:left;background:none;border:0;cursor:pointer;padding:0;}
.rpt-view-name{font-size:13px;font-weight:500;color:var(--text-strong);}
.rpt-view-sub{font-size:11px;}
.rpt-view-del{flex-shrink:0;}
.rpt-error{margin-bottom:14px;background:var(--danger-soft);}
.rpt-error-msg{color:var(--danger-fg);font-size:13px;}
.rpt-back{display:inline-flex;align-items:center;gap:5px;margin-right:10px;padding:0;border:0;background:transparent;color:var(--text-muted);font:inherit;font-size:12px;cursor:pointer;transition:color .15s ease;}
.rpt-back:hover{color:var(--accent);}
.rpt-back:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.rpt-apex{width:100%;}
.rpt-skel-num{display:inline-block;width:64px;height:32px;}
.rpt-skel-hub{display:inline-block;width:52px;height:22px;}
.exec-kpi .ek-dot{background:var(--text-subtle);}
.exec-kpi .ek-dot.tint-accent,.rpt-hub-dot.tint-accent{background:var(--accent);}
.exec-kpi .ek-dot.tint-teal,.rpt-hub-dot.tint-teal{background:var(--accent);}
.exec-kpi .ek-dot.tint-blue,.rpt-hub-dot.tint-blue{background:var(--info);}
.exec-kpi .ek-dot.tint-violet,.rpt-hub-dot.tint-violet{background:var(--violet);}
.exec-kpi .ek-dot.tint-coral,.rpt-hub-dot.tint-coral{background:var(--danger);}
.exec-kpi .ek-dot.tint-amber,.rpt-hub-dot.tint-amber{background:var(--warn);}
.exec-kpi .ek-dot.tint-green,.rpt-hub-dot.tint-green{background:var(--ok);}
/* ---- Informes: portada de bloques ---- */
.rpt-hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:14px;padding-top:20px;}
.rpt-hub-block{display:flex;flex-direction:column;gap:8px;text-align:left;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:16px 18px;cursor:pointer;transition:border-color .15s ease;font:inherit;color:inherit;}
.rpt-hub-block:hover{border-color:var(--border-strong);}
.rpt-hub-block:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.rpt-hub-head{display:flex;align-items:center;gap:9px;}
.rpt-hub-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--text-subtle);}
.rpt-hub-title{font-weight:600;font-size:14.5px;color:var(--text-strong);}
.rpt-hub-arrow{margin-left:auto;color:var(--accent);opacity:0;transition:opacity .15s ease;}
.rpt-hub-block:hover .rpt-hub-arrow,.rpt-hub-block:focus-visible .rpt-hub-arrow{opacity:1;}
.rpt-hub-ask{font-size:12.5px;color:var(--text-muted);line-height:1.45;}
.rpt-hub-metric{display:flex;align-items:baseline;gap:7px;margin-top:2px;}
.rpt-hub-num{font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1;color:var(--text-strong);}
.rpt-hub-unit{font-size:11.5px;color:var(--text-muted);}
.rpt-hub-sep{margin:26px 0 -6px;font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);}
.rpt-hub-sep.first{margin-top:4px;}
/* WP-2 piloto-reporting-simple 2026-10-16: «Más informes», nota de observación, estados vacíos tranquilos */
.rpt-more{margin-top:28px;padding-top:14px;border-top:1px solid var(--border);}
.rpt-more > summary{padding:6px 0;}
.rpt-more > .rpt-hub-sep.first{margin-top:12px;}
.rpt-note-calm{margin:0 0 var(--sp-4);padding:10px 14px;border-radius:var(--r-lg);background:var(--surface-sunken);font-size:var(--text-sm);line-height:1.5;color:var(--text-muted);}
.rpt-note-calm strong{font-weight:600;color:var(--text-strong);}
.rpt-compliance-empty{margin-top:var(--sp-4);}
.inc-calm{margin:0 0 var(--sp-4);padding:14px 16px;border-radius:var(--r-lg);background:var(--surface-sunken);font-size:var(--text-sm);line-height:1.5;color:var(--text-muted);}
.map-note{margin:-4px 0 16px;padding:10px 14px;border-radius:var(--r-lg);background:var(--surface-sunken);font-size:var(--text-sm);line-height:1.5;color:var(--text-muted);}
@media (max-width:720px){.rpt-hub-grid{grid-template-columns:1fr;}}

/* ---- Informes: utilidades de maquetación y texto ---- */
.rpt-mb{margin-bottom:18px;}
.rpt-mt{margin-top:18px;}
.rpt-mb-sm{margin-bottom:8px;}
.rpt-flex{display:flex;align-items:center;gap:8px;}
.rpt-cell{display:inline-flex;align-items:center;gap:8px;}
.rpt-fill{flex:1;}
.rpt-grow{flex:1;}
.rpt-ml-auto{margin-left:auto;}
.rpt-tc{text-align:center;}
.rpt-fixed{table-layout:fixed;}
.rpt-stack-12{display:flex;flex-direction:column;gap:12px;}
.rpt-card-col{display:flex;flex-direction:column;}
.rpt-card-center{flex:1;display:grid;place-items:center;padding:8px 0;}
.rpt-strong{font-weight:500;color:var(--text-strong);}
.rpt-b{font-weight:600;}
.rpt-ucell{line-height:1.2;min-width:0;}
.rpt-uname{font-weight:500;color:var(--text-strong);font-size:13px;}
.rpt-usub{font-size:11px;}
.rpt-danger{color:var(--danger-fg);}
.exec-statrow .es .v.rpt-ok{color:var(--ok-fg);}
.exec-statrow .es .v.rpt-danger{color:var(--danger-fg);}
.rank .ri .rk-val.rpt-danger{color:var(--danger-fg);}
.rank .ri .rk-val.rpt-ok{color:var(--ok-fg);}
.rank .ri .rk-val.rpt-accent{color:var(--accent);}
.rpt-ok{color:var(--ok-fg);}
.rpt-warn{color:var(--warn-fg);}
.rpt-err-line{color:var(--danger-fg);font-size:12.5px;margin-top:8px;}
.rpt-legend-col{flex-direction:column;gap:7px;margin-top:8px;}
.rpt-li-full{width:100%;}
.rpt-statrow-split{justify-content:space-around;border-top:1px solid var(--divider);padding-top:14px;}
.rpt-statrow-split .es{text-align:center;}
.rpt-band{margin-bottom:18px;}
.rpt-band-row{display:flex;align-items:center;gap:22px;flex-wrap:wrap;}
.rpt-band-main{display:flex;align-items:center;gap:14px;flex:1;min-width:240px;}
.rpt-band-title{font-size:22px;font-weight:500;color:var(--text-strong);letter-spacing:-.01em;}
.rpt-band-sub{font-size:13px;margin-top:2px;}
.rpt-drawer-title{font-size:16px;margin:0;display:flex;align-items:center;gap:8px;}
.rpt-drawer-sub{font-size:12px;color:var(--text-muted);margin-top:3px;}

/* ---- Informes: controles, tablas, paneles, modales ---- */
.rpt-accent{color:var(--accent);}
.rpt-sm{font-size:12px;}
.rpt-h3-sm,.exec-card-head h3.rpt-h3-sm{font-size:13px;}
.rpt-mb-md{margin-bottom:14px;}
.rpt-mb-xs{margin-bottom:4px;}
.rpt-mt-sm{margin-top:4px;}
.world-exec .exec-inner.rpt-pt-24{padding-top:24px;}
.rpt-w100{width:100%;}
.rpt-w90{width:90px;}
.rpt-resize-v{resize:vertical;}
.rpt-span-2{grid-column:span 2;}
.rpt-span-all{grid-column:1 / -1;}
.rpt-donut-wrap{display:grid;place-items:center;margin-bottom:4px;}
.rpt-donut-wrap.rpt-mb-md{margin-bottom:14px;}
.rpt-center-grid{display:grid;place-items:center;padding:6px 0;gap:10px;}
.rpt-legend-list{display:flex;flex-direction:column;gap:6px;}
.rpt-legend-item{display:flex;align-items:center;gap:8px;font-size:12.5px;}
.rpt-sw{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.rpt-in-card{padding:0 0 14px;}
.rpt-in-head{padding:4px 0 6px;}
.rpt-in-card-sm{padding:0 0 6px;}
.rpt-foot-note{padding:12px 0 0;border-top:1px solid var(--border);margin-top:8px;}
.rpt-recs{margin:4px 0 0;padding-left:18px;font-size:12.5px;line-height:1.8;}
.rpt-recs-code{margin-right:6px;}
.rpt-note{background:var(--surface-sunken);}
.rpt-note-body{font-size:12.5px;color:var(--text-muted);line-height:1.5;}
.rpt-msg{margin:12px 0 4px;padding:8px 11px;font-size:12.5px;}
.rpt-msg.err{background:var(--danger-soft);color:var(--danger-fg);border-color:transparent;}
.rpt-msg.ok{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent;}
.rpt-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px;}
.rpt-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;}
.tbl thead th.rpt-th-90{width:90px;text-align:center;}
.rpt-th-150{width:150px;}
.rpt-th-180{width:180px;}
.tbl thead th.rpt-th-280{width:280px;text-align:right;}
.rpt-col-90{width:90px;}
.rpt-col-100{width:100px;}
.rpt-col-220{width:220px;}
.rpt-link-title{background:none;border:0;padding:0;cursor:pointer;font:inherit;font-size:13.5px;font-weight:500;color:var(--text-strong);text-align:left;}
.rpt-link-title:hover{color:var(--accent);}
.rpt-span-ctl{display:flex;align-items:center;gap:3px;}
.rpt-span-ctl .btn{padding:0 6px;min-height:22px;font-size:11px;}
.rpt-gallery-group{margin-bottom:8px;}
.rpt-layoutbar{padding:10px 14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.input.rpt-layout-name{min-width:160px;padding:5px 9px;font-size:12.5px;}
.rpt-layout-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;}
.rpt-chip-btn{background:none;border:0;cursor:pointer;color:var(--text-strong);font:inherit;padding:0;}
.rpt-chip-btn.rpt-chip-x{color:var(--text-subtle);}
.rpt-chip-btn.rpt-chip-x:hover{color:var(--danger);}
.world-exec .exec-inner.rpt-edit-slot{padding-top:16px;padding-bottom:4px;}
.rpt-field{margin-bottom:12px;}
.rpt-check{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:13px;}
.rpt-check-row{display:flex;gap:16px;}
.rpt-modal-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;border-top:1px solid var(--divider);padding-top:12px;}
.rpt-modal-foot{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap;border-top:1px solid var(--divider);padding-top:14px;}
.rpt-modal-foot.rpt-modal-foot-sm{margin-top:8px;border-top:0;padding-top:0;}
.kl-drawer.rpt-drawer-380{width:380px;}
.kl-drawer.rpt-drawer-420{width:420px;}
.kl-drawer.rpt-drawer-540{width:min(540px,96vw);}
.kl-drawer.rpt-drawer-880{width:min(880px,96vw);}
.rpt-export-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:4px 0 2px;}
.rpt-fw-seg{flex:1;min-width:260px;flex-wrap:wrap;}
/* Estado de cobertura de un control */
.rpt-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap;color:var(--text-muted);}
.rpt-status-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0;}
.rpt-status.st-covered{color:var(--ok-fg);}
/* Barras finas (descargas, cobertura) y embudo */
.rpt-track{flex:1;height:5px;border-radius:3px;background:var(--surface-sunken);overflow:hidden;}
.rpt-track-fill{height:100%;border-radius:3px;background:var(--accent);}
.rpt-track-fill.info{background:var(--info);}
.rpt-track-n{font-size:12px;min-width:30px;text-align:right;}
.rpt-cov-head{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:4px;}
.rpt-cov-track{height:8px;border-radius:99px;background:var(--surface-sunken);overflow:hidden;}
.rpt-cov-fill{height:100%;border-radius:99px;}
.rpt-funnel{display:flex;flex-direction:column;gap:14px;padding:8px 0;}
.rpt-funnel-head{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;margin-bottom:5px;}
.rpt-funnel-head b{font-size:14px;color:var(--text-strong);font-weight:600;}
.rpt-funnel-track{height:6px;border-radius:3px;background:var(--surface-sunken);overflow:hidden;}
.rpt-funnel-fill{height:100%;border-radius:3px;transition:width 1s ease;}

/* ---- Paneles personalizados (pages-reporting-custom.jsx) ---- */
.rcb-kpis{display:flex;flex-wrap:wrap;gap:10px;}
.rcb-kpi{flex:1 1 120px;min-width:110px;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 14px;}
.rcb-kpi-l{font-size:11px;color:var(--text-muted);}
.rcb-kpi-v{font-size:24px;font-weight:600;color:var(--text-strong);margin-top:4px;letter-spacing:-.02em;}
.rcb-donut{display:flex;gap:16px;align-items:center;flex-wrap:wrap;}
.rcb-donut-legend{flex:1;min-width:150px;}
.rcb-donut-row{display:flex;align-items:center;gap:7px;font-size:12px;padding:2px 0;}
.rcb-donut-name{flex:1;color:var(--text);}
.rcb-hrow{display:flex;align-items:center;gap:8px;margin:5px 0;}
.rcb-hlabel{width:130px;font-size:12px;color:var(--text);}
.rcb-htrack{flex:1;background:var(--surface-sunken);border-radius:3px;height:6px;overflow:hidden;}
.rcb-hfill{height:100%;min-width:2px;border-radius:3px;background:var(--accent);}
.rcb-hval{width:56px;text-align:right;font-size:12px;}
.rcb-vbars{display:flex;align-items:flex-end;gap:6px;height:178px;padding-top:6px;}
.rcb-vcol{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;}
.rcb-vval{font-size:10px;}
.rcb-vbar{width:78%;background:var(--accent);border-radius:3px 3px 0 0;}
.rcb-vlabel{font-size:9.5px;color:var(--text);margin-top:3px;max-width:100%;}
.rcb-line{display:block;}
.rcb-line-axis{display:flex;justify-content:space-between;font-size:10.5px;color:var(--text-muted);}
.rcb-table-wrap{max-height:320px;overflow:auto;}
.rcb-compact{max-height:160px;overflow-x:hidden;overflow-y:auto;}
.rcb-compact .rcb-kpi{padding:8px 12px;}
.rcb-compact .rcb-kpi-v{font-size:20px;margin-top:2px;}
.rcb-compact .rcb-donut{flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:6px;}
.rcb-compact .rcb-donut svg{width:64px;height:64px;align-self:center;}
.rcb-compact .rcb-donut-row{padding:0;font-size:11px;}
.rcb-compact .rcb-hrow{margin:2px 0;}
.rcb-compact .rcb-vbars{height:120px;}
.rcb-compact .rcb-line{height:100px;}
.rcb-compact .rcb-table-wrap{max-height:none;}
.rcb-compact .rcb-more{font-size:11px;padding:2px 0;}
.rcb-empty{padding:18px;text-align:center;color:var(--text-muted);font-size:12.5px;}
.rcb-hint{color:var(--text-muted);font-size:13px;padding:30px;text-align:center;}
.rcb-frow{display:flex;gap:6px;margin-bottom:6px;align-items:center;}
.rpt-sel.rcb-w140{flex:0 0 140px;}
.rpt-sel.rcb-w90{flex:0 0 90px;}
.rpt-sel.rpt-w100{width:100%;box-sizing:border-box;}
.rpt-sel.rpt-fill{min-width:0;}
.rcb-builder{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:18px;align-items:start;}
@media (max-width:900px){.rcb-builder{grid-template-columns:1fr;}}
.rcb-chips{display:flex;flex-wrap:wrap;gap:6px;}
.rcb-chips .btn{font-size:12px;}
.rcb-pair{display:flex;gap:10px;}
.rcb-w90-col{flex:0 0 90px;}
.rcb-preview{border:1px solid var(--border);border-radius:var(--r-xl);padding:16px;min-height:280px;background:var(--surface);}
.rcb-preview-title{font-size:13px;font-weight:600;color:var(--text-strong);margin-bottom:10px;}
.rcb-wcard{padding:14px;display:flex;flex-direction:column;min-height:220px;}
.rcb-whead{display:flex;align-items:center;gap:6px;margin-bottom:8px;}
.rcb-wtitle{flex:1;font-size:13px;font-weight:600;color:var(--text-strong);}
.rcb-wsub{font-size:12px;color:var(--text-muted);margin:-4px 0 8px;}
.rcb-grid12{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;}
.rcb-fields{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.rcb-f2{flex:2 1 260px;}
.rcb-f3{flex:3 1 320px;}
.rcb-optbar{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-bottom:12px;border-top:1px solid var(--divider);padding-top:12px;}
.rcb-share{margin-top:16px;color:var(--text);}
.rcb-globalf{margin-bottom:14px;background:var(--surface-sunken);border-radius:var(--r-xl);padding:12px;}
.rcb-addbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.rcb-sched-row{display:flex;gap:10px;flex-wrap:wrap;}
.rcb-sched-cell{flex:1;min-width:120px;}
.rcb-sched-cell.rcb-sched-cell-sm{min-width:100px;}
.kl-drawer.rcb-drawer-560{width:min(560px,96vw);}
.kl-drawer.rcb-drawer-1040{width:min(1040px,97vw);}
.kl-drawer.rcb-drawer-1180{width:min(1180px,98vw);}
.tbl thead th.rcb-th-80{width:80px;text-align:center;}
.rcb-th-120{width:120px;}
.rcb-th-160{width:160px;}
.tbl thead th.rcb-th-320{width:320px;text-align:right;}

.rpt-funnel-row{min-width:0;}
.rpt-hbar-row{transition:background .12s;}
.rpt-hbar-row:hover{background:var(--surface-2);}
.fw-bar{margin:2px 0;}
@media print{.rpt-noprint{display:none!important;}}
/* — fin familia C — */



/* ====================== BARRIDO · FAMILIA D ====================== */
/* pages-rest.jsx + pages-incidents.jsx — Alertas, Extensiones, Ajustes, SIEM, SSO, Usuarios, Incidentes de seguridad */
/* ---- Escala tipográfica, peso y tono de la familia (Usuarios, Grupos, Extensiones, Alertas, SIEM, SSO, Ajustes, Incidentes de seguridad) ---- */
.fd-caption{font-size:var(--fs-2xs);}
.fd-inc .inc-card-foot .badge{font-size:var(--fs-2xs);} .fd-small{font-size:var(--fs-xs);} .fd-body{font-size:var(--fs-base);}
.fd-regular{font-weight:400;} .fd-medium{font-weight:500;} .fd-semibold,.fd-oidc-state>div>span:first-child{font-weight:600;}
.fd-text-sm{font-size:var(--text-sm);} .fd-text-md{font-size:var(--text-md);}
.fd-c-strong{color:var(--text-strong);} .fd-c-text{color:var(--text);} 
.fd-danger,.fd-stage-when.overdue{color:var(--danger-fg);} .fd-warn-txt{color:var(--warn-fg);} .fd-ok-txt{color:var(--ok-fg);} .fd-accent-txt{color:var(--accent-strong);}
.fd-dim{opacity:.6;}
.row-unenrolled>td:not(:last-child){opacity:.6;}
.row-unenrolled-tag{margin-left:var(--sp-3);vertical-align:middle;}
/* UR2: lista en recarga (filtro cambiado): se atenúa y un aviso fino la encabeza. */
.card.is-refreshing .tbl{opacity:.45;transition:opacity .15s;}
.refresh-note{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);}
/* maquetación */
.fd-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(152px,1fr));gap:12px;margin-bottom:16px;}
/* Incidentes: casillas de ancho acotado y pegadas a la izquierda; con pantallas grandes (2K) no se estiran ni se separan. */
.fd-kpis.inc-kpis{display:flex;flex-wrap:wrap;column-gap:20px;}
.fd-kpis.inc-kpis>.kpi{flex:1 1 132px;max-width:184px;}
.fd-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:var(--sp-4);}
.fd-cards.narrow{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));}
/* KPI: punto de color en la etiqueta (sin raíl ni caja de icono) */
.kpi[class*="fd-k-"] .k-label::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--fd-k,var(--accent));flex-shrink:0;}
.fd-k-accent{--fd-k:var(--accent);} .fd-k-ok{--fd-k:var(--ok);} .fd-k-danger{--fd-k:var(--danger);} .fd-k-warn{--fd-k:var(--warn);} .fd-k-info{--fd-k:var(--info);}
.fd-kpis .k-foot{margin-top:2px;font-size:var(--fs-xs);}
/* avisos */
.fd-banner{display:flex;align-items:center;gap:8px;margin-bottom:12px;}
/* Fallo de una acción en línea (sustituye a alert()): mensaje + «Cerrar». Lo usan Paneles personalizados y la extensión FREE. */
.th-action-err{display:flex;align-items:center;gap:8px;margin:12px 0;}
.th-action-err>span{flex:1;min-width:0;}
.fd-reveal{margin-bottom:var(--sp-4);background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent);}
.fd-reveal-title{font-weight:600;color:var(--warn-fg);margin-bottom:var(--sp-1);}
.fd-note{padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-4);font-size:var(--fs-sm);color:var(--text-muted);}
.fd-bar{padding:12px var(--sp-4);margin-bottom:var(--sp-4);}
.fd-promo{margin-bottom:var(--sp-4);display:flex;align-items:center;gap:var(--sp-4);}
.fd-pre{margin:0;padding:var(--sp-4);background:var(--surface-sunken);border-radius:var(--r-lg);font-family:var(--font-mono);font-size:var(--fs-xs);overflow:auto;line-height:1.55;}
.fd-actions{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;}
/* Extensiones → Distribución y tokens (guías por método) y cajón de baja */
.fd-dist-intro{margin-bottom:var(--sp-4);display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;}
.fd-dist-values,.fd-dist-guides{margin-bottom:var(--sp-4);}
.fd-dist-profile{margin-bottom:var(--sp-4);}
.fd-dist-profile .check-row{align-items:center;margin-bottom:var(--sp-3);}
.fd-dist-profile-err{margin-top:var(--sp-2);}
.fd-dist-values .card-head p,.fd-dist-values>p{margin:0 0 var(--sp-3);}
.fd-dist-kv{display:grid;gap:var(--sp-2);margin-top:var(--sp-3);}
.fd-dist-kv>div{display:grid;grid-template-columns:150px 1fr;gap:var(--sp-3);align-items:baseline;}
.fd-dist-kv code{word-break:break-all;color:var(--text-strong);}
.fd-dist-seg{margin:var(--sp-3) 0 var(--sp-4);flex-wrap:wrap;}
.fd-dist-note{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-4);border-radius:var(--r-lg);background:var(--surface-sunken);}
.fd-dist-note p{margin:0;font-size:var(--text-sm);color:var(--text);line-height:1.55;}
.fd-dist-foot{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--divider);}
.fd-steps{margin:0;padding:0;list-style:none;counter-reset:fd-step;display:flex;flex-direction:column;gap:var(--sp-3);}
.fd-steps>li{counter-increment:fd-step;position:relative;padding-left:34px;font-size:var(--text-sm);line-height:1.55;color:var(--text);}
.fd-steps>li::before{content:counter(fd-step);position:absolute;left:0;top:0;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--surface-sunken);color:var(--text-muted);font-size:var(--fs-xs);font-weight:600;}
.fd-steps .fd-code{margin-top:var(--sp-2);}
.fd-code pre{padding-right:76px;word-break:break-all;}
.fd-impact{margin:0 0 var(--sp-3);padding-left:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--text-sm);line-height:1.55;color:var(--text);}
.fd-impact-lede{margin:var(--sp-2) 0 var(--sp-3);}
.fd-impact-reason{display:flex;flex-direction:column;gap:var(--sp-1);margin-top:var(--sp-3);}
.fd-t-danger{color:var(--danger-fg);font-weight:600;} .fd-t-warn{color:var(--warn-fg);font-weight:600;} .fd-t-violet{color:var(--violet);font-weight:600;} .fd-t-ok{color:var(--ok-fg);font-weight:600;}
.fd-t-muted{color:var(--text-muted);font-weight:600;} .fd-t-strong,.fd-ident.canon,.fd-bd-row>:last-child,.fd-chip-l{color:var(--text-strong);font-weight:600;}
/* etiquetas pequeñas */
.fd-tag{display:inline-flex;align-items:center;padding:1px var(--sp-2);border-radius:var(--r-sm);font-size:var(--fs-2xs);font-weight:600;background:var(--surface-sunken);color:var(--text-muted);border:1px solid var(--border);}
.fd-tag.warn{background:var(--warn-soft);color:var(--warn-fg);border-color:transparent;}
.fd-tag.accent{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent;}
.fd-tag.quiet{background:transparent;border-color:transparent;color:var(--text-subtle);padding:0;}
.fd-swatch{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0;}
/* bandas de riesgo: el color sale del data-band global (--oc-band) */
.fd-band{color:color-mix(in srgb,var(--oc-band,var(--text-muted)) 72%,var(--text-strong));}
.usr-risk .bar>span,.inc-score-bar span{background:var(--oc-band,var(--accent));}
.usr-ai-row .bar>span{background:var(--accent);}
/* estado de agente / usuario */
.fd-mini-msg.ok,.inc-status.fd-st-ok{background:var(--ok-soft);color:var(--ok-fg);}
.fd-mini-msg.err,.inc-status.fd-st-danger{background:var(--danger-soft);color:var(--danger-fg);}
.inc-status .dot{background:currentColor;}
.sdot.fd-on{background:var(--ok);}
/* diálogos propios de Alertas y SIEM */
.fd-overlay{position:fixed;inset:0;background:color-mix(in srgb,black 50%,transparent);display:flex;align-items:center;justify-content:center;z-index:90;}
.fd-modal{width:500px;max-width:92vw;padding:22px;}
.fd-modal.scroll{max-height:92vh;overflow:auto;}
.fd-modal-title{margin:0 0 var(--sp-4);font-size:var(--fs-lg);font-weight:600;color:var(--text-strong);}
.fd-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:var(--sp-4);padding-top:12px;border-top:1px solid var(--divider);}
.fd-check{display:flex;align-items:center;gap:8px;font-size:var(--text-sm);}
.fd-check.muted{gap:var(--sp-2);color:var(--text-muted);cursor:pointer;}
/* drawers de usuario / grupo / instalación */
.fd-title{margin:0;font-size:var(--fs-lg);font-weight:600;color:var(--text-strong);}
.fd-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:var(--sp-2);}
.fd-kvrow{display:grid;grid-template-columns:130px 1fr;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);}
.fd-kvrow>:last-child{font-size:var(--text-sm);color:var(--text-strong);word-break:break-word;}
.fd-bd-grid{display:grid;gap:2px;}
.fd-bd-row{display:grid;grid-template-columns:90px 1fr auto;gap:var(--sp-3);padding:var(--sp-1) 0;font-size:var(--text-sm);border-bottom:1px solid var(--border);}
.fd-picker{max-height:320px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-lg);}
.fd-picker label{display:flex;align-items:center;gap:var(--sp-3);padding:8px 12px;border-bottom:1px solid var(--divider);cursor:pointer;}
.fd-picker .api-empty{padding:var(--sp-4);}
.fd-colors{display:flex;gap:5px;}
.fd-colors button{width:26px;height:26px;border-radius:var(--r-md);border:1px solid var(--border);cursor:pointer;}
.fd-colors button.on{border:2px solid var(--text-strong);}
.fd-field-row{padding:var(--sp-3) 0;border-bottom:1px solid var(--divider);}
.fd-field-row .field-label{margin:0;display:inline-flex;align-items:center;gap:5px;}
.fd-spec-l{font-size:var(--fs-2xs);color:var(--text-subtle);font-weight:600;text-transform:uppercase;letter-spacing:.06em;}
.fd-spec{display:flex;flex-direction:column;gap:var(--sp-1);}
.fd-logo-drop{width:100%;min-height:110px;border:2px dashed var(--border-strong);border-radius:var(--r-xl);display:grid;place-items:center;background:var(--surface-sunken);padding:16px;margin-bottom:12px;}
.fd-logo-drop img{max-height:80px;max-width:100%;}
.fd-logo-empty{text-align:center;color:var(--text-subtle);}
.fd-logo-pick{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);background:var(--surface);border-radius:var(--r-md);margin-top:var(--sp-2);cursor:pointer;border:1px solid var(--border);color:var(--text);}
.fd-mini-msg{font-size:var(--fs-xs);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);margin-bottom:8px;}
.fd-danger-row{padding:var(--sp-3) 12px;border-radius:var(--r-lg);background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--danger) 25%,transparent);}
.fd-setting{padding:8px 0;border-bottom:1px solid var(--divider);}
.fd-smtp{border-top:1px solid var(--border);margin-top:var(--sp-5);padding-top:var(--sp-5);}
.fd-tab-flush{margin:0 -18px -18px;}
.fd-exc{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--divider);}
.fd-exc:last-child,.fd-tl.last{border-bottom:0;}
.fd-oidc-state{display:flex;gap:var(--sp-6);padding:20px 30px var(--sp-1);flex-wrap:wrap;}
.fd-oidc-state>div{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-base);}
.fd-result{margin-top:var(--sp-3);border:0;}
.fd-result.ok{background:var(--ok-soft);} .fd-result.err{background:var(--danger-soft);} .fd-result.neutral{background:var(--surface-sunken);}
.fd-foot{font-size:var(--fs-xs);margin:var(--sp-3) 0 0;}
.fd-sum{font-size:var(--text-sm);line-height:1.6;margin:0;}
.fd-extimg{border-radius:var(--r-sm);object-fit:cover;}
.usr-dev .dname.fd-sans{font-family:inherit;}
.fd-intro{margin:2px 0 8px;}
.kpi .k-value.fd-k-text{font-size:var(--fs-md);font-weight:600;padding-top:var(--sp-2);}
.fd-more{text-align:center;padding:var(--sp-2) 0;}
.fd-spec-row{padding:12px 0;border-top:1px solid var(--divider);border-bottom:1px solid var(--divider);}
.fd-spec-top{border-top:1px solid var(--divider);padding-top:12px;}
.fd-card-foot-row{display:flex;gap:var(--sp-2);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--divider);}
.fd-op8{opacity:.8;}
/* grupos: el punto de pertenencia y la etiqueta de fuente en tono apagado */
.sdot.fd-off{background:var(--text-subtle);}
.fd-ident{font-size:var(--fs-sm);font-family:var(--font-mono);color:var(--text-muted);}
/* ---- Incidentes de seguridad ---- */
.fd-info-txt{color:var(--info-fg);}
.fd-t-subtle{color:var(--text-subtle);font-weight:600;}
.fd-btn-sm{height:26px;font-size:var(--fs-xs);} .fd-btn-xs{height:24px;font-size:var(--fs-xs);}
.fd-clip80{display:inline-block;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;}
.fd-loading{padding:var(--sp-6) 0;text-align:center;color:var(--text-muted);font-size:var(--fs-base);}
.inc-detail.empty-detail .fd-loading{padding:0;font-size:var(--fs-base);}
.fd-sec-h{font-size:var(--fs-xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-subtle);margin-bottom:8px;display:flex;align-items:center;gap:var(--sp-2);}
.fd-sec-h.nomb{margin-bottom:0;}
.fd-sec-h.sm{font-size:var(--fs-2xs);letter-spacing:.04em;}
.fd-filters-lbl{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--text-muted);font-size:var(--fs-sm);font-weight:600;}
.fd-clus-sec{border-left:2px solid var(--accent);padding-left:12px;}
.fd-legal{font-size:var(--fs-2xs);color:var(--text-subtle);margin-top:8px;line-height:1.5;}
.fd-narr{font-size:var(--fs-sm);line-height:1.6;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-3) 12px;white-space:pre-wrap;}
.fd-inc-ta{width:100%;resize:vertical;padding:11px var(--sp-4);border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface-2);font-size:13.5px;line-height:1.65;color:var(--text);box-sizing:border-box;font-family:inherit;}
.fd-inc-ta:focus{border-color:var(--accent);box-shadow:var(--focus);outline:none;}
.fd-inc-h{margin:0 0 var(--sp-2);font-size:var(--fs-lg);font-weight:600;letter-spacing:-.02em;color:var(--text-strong);line-height:1.3;}
.fd-inc-id{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600;}
.fd-inc-risk{font-size:var(--fs-2xl);font-weight:600;margin-top:var(--sp-1);letter-spacing:-.03em;}
.fd-mini-row{display:flex;gap:9px;align-items:center;}
.fd-mini-v{font-size:var(--fs-sm);font-weight:600;color:var(--text-strong);margin-top:3px;}
.fd-mini-v.dim{color:var(--text-subtle);}
/* píldoras de origen / actor / categoría: variantes de .badge, sin colores propios */
.badge.fd-inc-badge{gap:5px;max-width:220px;overflow:hidden;}
.fd-inc-host{font-weight:500;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* estado y raíl de severidad: tono por clase / atributo, no por color en línea */
.inc-status.fd-st-warn{background:var(--warn-soft);color:var(--warn-fg);}
.inc-status.fd-st-info{background:var(--info-soft);color:var(--info-fg);}
.inc-status.fd-st-muted{background:var(--surface-sunken);color:var(--text-muted);}
.inc-sev-rail{background:var(--border);}
.inc-sev-rail[data-sev="critical"]{background:var(--coral-500);} .inc-sev-rail[data-sev="high"]{background:var(--amber-500);}
.inc-sev-rail[data-sev="medium"]{background:var(--blue-500);} .inc-sev-rail[data-sev="low"]{background:var(--teal-500);}
.inc-card-nested{margin-left:16px;border-left:2px solid var(--accent-soft);}
.fd-inc-stale{padding:2px 8px;border-radius:var(--r-pill);font-weight:600;background:var(--surface-sunken);border:1px dashed var(--border);}
/* filtros */
.select.fd-inc-sel{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:var(--sp-2) 26px var(--sp-2) var(--sp-3);}
.select.fd-inc-sel.on{border-color:var(--accent);background-color:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent-strong);font-weight:600;}
.fd-inc .inc-list-tools .searchbox input{font-size:var(--fs-sm);color:var(--text-strong);}
/* cronología, cadena, telemetría, informe regulatorio */
.fd-tl{display:flex;gap:var(--sp-3);padding:7px 0;border-bottom:1px solid var(--divider);}
.fd-tl-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);margin-top:5px;flex-shrink:0;}
.fd-tl-title{font-size:var(--fs-sm);color:var(--text-strong);font-weight:600;}
.fd-tl-note{font-size:var(--fs-xs);color:var(--text-muted);margin-top:1px;}
.fd-tl-when{font-size:var(--fs-2xs);color:var(--text-subtle);margin-top:2px;font-family:var(--font-mono);}
.fd-chain-rail{display:flex;flex-direction:column;align-items:center;flex-shrink:0;}
.fd-chain-num{width:18px;height:18px;border-radius:50%;flex-shrink:0;background:var(--accent-soft);color:var(--accent-strong);font-size:var(--fs-2xs);font-weight:600;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);}
.fd-chain-line{flex:1;width:2px;background:var(--divider);margin-top:2px;min-height:8px;}
.fd-mitre{font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:600;padding:1px var(--sp-2);border-radius:var(--r-sm);color:var(--text-muted);background:var(--surface-sunken);border:1px solid var(--border);}
.fd-mitre.danger{color:var(--danger-fg);background:var(--danger-soft);border-color:transparent;padding:2px 7px;}
.fd-inc-rel-title{font-size:var(--fs-sm);font-weight:600;color:var(--text-strong);}
.fd-inc-rel-sub{font-size:var(--fs-xs);color:var(--text-muted);display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-top:2px;}
.fd-inc-member{cursor:pointer;text-align:left;width:100%;}
.fd-inc-member.cur{cursor:default;border-color:var(--accent);background:var(--accent-soft);}
.fd-stage{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);}
.fd-stage-when{font-size:var(--fs-xs);font-family:var(--font-mono);color:var(--text-muted);}
.fd-chip{display:inline-flex;align-items:center;gap:7px;padding:var(--sp-2) 11px;border-radius:var(--r-lg);background:var(--surface-2);border:1px solid var(--border);font-size:var(--fs-sm);max-width:100%;}
.fd-chip-s{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--fs-xs);}
.fd-tele-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;}
/* el color de estado gana a las reglas de contenedor (.inc-metarow>span, .usr-stat .v, .gd-stat .v) */
.inc-metarow>.fd-t-danger{color:var(--danger-fg);} .inc-metarow>.fd-t-ok{color:var(--ok-fg);} .inc-metarow>.fd-t-subtle{color:var(--text-subtle);}
/* — fin familia D — */



/* ====================== BARRIDO · FAMILIA E ====================== */
/* resto de pages-*.jsx — FREE, LLM, escáner local, MCP, correlación, evidencias, observabilidad, onboarding, telemetría */
/* Clases de rol (aspecto) con tokens; el layout puntual vive en línea. Prefijos: fe- compartido, fx- FREE, llm-, scn- escáner,
   cr- correlación, evd- evidencias, es- seguridad de extensiones, prv- prevención, tel- telemetría, onb- registro. */

/* — tipografía: escala --fs-* ; color con las primitivas .muted/.subtle/.strong */
.fe-eyebrow{font-size:var(--fs-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;}
.fe-caption{font-size:var(--fs-xs);letter-spacing:.03em;text-transform:uppercase;}
.fe-heading{font-size:var(--fs-md);font-weight:600;}
.fe-subheading{font-size:var(--fs-base);font-weight:600;}
.fe-subtitle{font-size:var(--fs-sm);font-weight:600;}
.fe-metric{font-size:var(--fs-xl);font-weight:700;}
/* dentro de .tbl, `.mono` fija 12.5px (especificidad 0,2,0/0,2,1): estas escalas igualan ese peso en las celdas */
.fe-fine,.tbl .fe-fine,.tbl td.fe-fine{font-size:var(--fs-2xs);}
.fe-meta,.tbl .fe-meta,.tbl td.fe-meta{font-size:var(--fs-xs);}
.fe-detail,.tbl .fe-detail,.tbl td.fe-detail{font-size:var(--fs-sm);}
.fe-body,.tbl .fe-body,.tbl td.fe-body{font-size:var(--fs-base);}
.fe-title{font-size:var(--fs-md);}
.fe-headline{font-size:var(--fs-lg);}
.fe-display{font-size:var(--fs-xl);}
.fe-regular{font-weight:400;}
.fe-medium{font-weight:500;}
.fe-semibold{font-weight:600;}
.fe-bold{font-weight:700;}
.fe-ink{color:var(--text-strong);}
.fe-text{color:var(--text);}
.fe-accent{color:var(--accent);}
.fe-accent-strong{color:var(--accent-strong);}
.fe-ok{color:var(--ok-fg);}
.fe-warn{color:var(--warn-fg);}
.fe-err{color:var(--danger-fg);}
.fe-dim{opacity:.65;}
.fe-card-title{margin:0;color:var(--text-strong);font-size:var(--fs-md);}
.fe-label-block{display:block;margin-bottom:var(--sp-1);}
.fe-flush{margin:0;}

/* — superficies, controles y avisos */
.fe-ctl{padding:var(--sp-2) var(--sp-3);background:transparent;border:1px solid var(--border);border-radius:var(--r-lg);}
.fe-ctl-sm{border-radius:var(--r-md);}
.fe-well{background:var(--surface-sunken);border-radius:var(--r-lg);}
.fe-well-edged{border:1px solid var(--border);}
.fe-code{background:var(--surface-sunken);border-radius:var(--r-md);}
.fe-inset{background:var(--surface-2);border-radius:var(--r-sm);}
.fe-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);}
.fe-panel-sunken{background:var(--surface-sunken);}
.fe-box{border:1px solid var(--border);border-radius:var(--r-sm);}
.fe-rule-t{border-top:1px solid var(--border);}
.fe-rule-b{border-bottom:1px solid var(--border);}
.fe-rule-l{border-left:1px solid var(--border);}
.fe-hairline{background:var(--border);}
.fe-callout{border-radius:var(--r-lg);}
.fe-callout-warn{background:var(--warn-soft);color:var(--warn-fg);}
.fe-callout-danger{background:var(--danger-soft);color:var(--danger-fg);}
.fe-callout-accent{background:var(--accent-soft);border:1px solid var(--accent);}
.fe-tone-accent{background:var(--accent);}
.fe-tone-brand{background:var(--brand);}
.fe-tone-danger{background:var(--danger);}
.fe-tone-info{background:var(--info);}
.fe-tone-muted{background:var(--text-muted);}
.fe-tone-ok{background:var(--ok);}
.fe-tone-warn{background:var(--warn);}
.fe-edge-accent{border-color:var(--accent);}
.fe-edge-danger{border-color:var(--danger);}
.fe-tint-ok{border-color:var(--ok);color:var(--ok-fg);}
.fe-tint-warn{border-color:var(--warn);color:var(--warn-fg);}
.fe-spinner-thin{border-width:2px;}

/* — estado de mensajes (escáner local, nodo LLM, prevención) y filas con interruptor */
.fe-flash{margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);}
.fe-flash.ok{background:var(--accent-soft);color:var(--accent-strong);}
.fe-flash.warn{background:var(--warn-soft);color:var(--warn-fg);}
.fe-flash.err{background:var(--danger-soft);color:var(--danger-fg);}
.fe-toggle-row{display:flex;align-items:center;gap:var(--sp-3);cursor:default;}
.fe-toggle-row.rw{cursor:pointer;}
.llm-effective{font-size:var(--fs-base);color:var(--text-muted);word-break:break-all;}
.llm-effective.on{color:var(--text);}
.llm-lim-card{padding:var(--sp-5);}
.llm-lim-lede{margin-top:var(--sp-2);margin-bottom:var(--sp-4);}
.llm-lim{display:flex;flex-direction:column;gap:var(--sp-5);}
.llm-lim-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--sp-4);}
.llm-lim-emergency{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3);padding-top:var(--sp-4);}
.llm-lim-meter{display:block;width:100%;max-width:420px;height:6px;border:0;border-radius:var(--r-xs);background:var(--surface-sunken);appearance:none;-webkit-appearance:none;overflow:hidden;margin:var(--sp-3) 0 var(--sp-2);}
.llm-lim-meter::-webkit-progress-bar{background:var(--surface-sunken);}
.llm-lim-meter::-webkit-progress-value{background:var(--accent);}
.llm-lim-meter::-moz-progress-bar{background:var(--accent);}
.llm-lim-meter.is-warn::-webkit-progress-value{background:var(--warn);}
.llm-lim-meter.is-warn::-moz-progress-bar{background:var(--warn);}
.llm-lim-meter.is-exceeded::-webkit-progress-value,.llm-lim-meter.is-off::-webkit-progress-value{background:var(--danger);}
.llm-lim-meter.is-exceeded::-moz-progress-bar,.llm-lim-meter.is-off::-moz-progress-bar{background:var(--danger);}
.scn-row-selected,.tbl tbody tr.scn-row-selected,.tbl tbody tr.scn-row-selected:hover{background:var(--accent-soft);}
.prv-reorder{padding:var(--sp-3);}
.prv-reorder.busy{opacity:.7;}

/* — correlación: chips, conmutadores y estado de reglas */
.cr-pill{padding:var(--sp-1) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-pill);background:transparent;color:var(--text);font-size:var(--fs-sm);cursor:pointer;}
.cr-pill.on{border-color:var(--accent);background:var(--accent);color:var(--accent-fg);}
.cr-pill-ico{display:inline-flex;align-items:center;gap:var(--sp-2);}
.cr-tog{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:transparent;color:var(--text-muted);font-size:var(--fs-sm);font-weight:600;cursor:pointer;}
.cr-tog-wide{padding:var(--sp-1) var(--sp-4);}
.cr-tog.on{background:var(--accent);color:var(--accent-fg);}
.cr-move{padding:0 var(--sp-1);border:none;background:transparent;font-size:var(--fs-md);opacity:.8;cursor:pointer;}
.cr-move:disabled{opacity:.3;cursor:default;}
.cr-onoff{padding:var(--sp-2) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-lg);background:transparent;color:var(--text-muted);font-size:var(--fs-base);font-weight:600;cursor:pointer;}
.cr-onoff.on{background:var(--ok-soft);color:var(--ok-fg);}
.cr-rt{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0;min-width:56px;padding:2px var(--sp-2);border:1px solid var(--border);border-radius:var(--r-pill);background:transparent;cursor:pointer;}
.cr-rt:focus-visible{outline:none;box-shadow:var(--focus);}
.cr-rt:disabled{cursor:progress;opacity:.7;}
.cr-rt.on{background:var(--ok-soft);}
.cr-rt-dot{width:8px;height:8px;border-radius:50%;background:var(--border);}
.cr-rt.on .cr-rt-dot{background:var(--ok);}
.cr-rt-text{font-size:var(--fs-xs);font-weight:700;color:var(--text-muted);}
.cr-rt.on .cr-rt-text{color:var(--ok-fg);}
.cr-lastago{display:none;font-size:var(--fs-sm);color:var(--text-muted);}
.cr-msg{font-size:var(--fs-sm);font-weight:600;}
.cr-msg.ok{color:var(--ok-fg);}
.cr-msg.err{color:var(--danger-fg);}
.cr-field{width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:transparent;font-size:var(--fs-base);}
.cr-tag{border-radius:var(--r-pill);font-weight:700;}
.cr-tag-accent{background:color-mix(in srgb, var(--accent) 10%, transparent);border:1px solid color-mix(in srgb, var(--accent) 20%, transparent);color:var(--accent);}
.cr-tag-warn{background:color-mix(in srgb, var(--warn) 10%, transparent);border:1px solid color-mix(in srgb, var(--warn) 20%, transparent);color:var(--warn-fg);}

/* — FREE: versión, categorías, filtros y valoración */
.fx-ver{font-weight:600;color:var(--text-strong);}
.fx-ver.warn{color:var(--warn-fg);}
.fx-cat{padding:var(--sp-1) var(--sp-2);border-radius:var(--r-md);background:transparent;cursor:pointer;}
.fx-cat.on{background:var(--surface-sunken);box-shadow:inset 0 0 0 1px var(--accent);}
.fx-cat-name{font-weight:400;color:var(--text-strong);}
.fx-cat-name.on{font-weight:600;color:var(--accent);}
.fx-chip{display:inline-flex;align-items:center;gap:var(--sp-2);}
.fx-chip.on{border-color:var(--accent);}
.fx-valtile{flex:1;padding:var(--sp-3);border-radius:var(--r-lg);background:var(--surface-sunken);cursor:pointer;}
.fx-valtile.on{box-shadow:inset 0 0 0 1px var(--accent);}
.fx-rate{color:var(--text-muted);}
.fx-rate.ok{color:var(--ok);}
.fx-rate.warn{color:var(--warn);}
.fx-rate.bad{color:var(--danger);}
td.fx-rate{font-weight:600;}

/* — telemetría, observabilidad, seguridad de extensiones y registro */
.tel-row{display:flex;align-items:center;gap:var(--sp-3);}
.tel-find{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.tel-row.sn,.tel-find.sn{margin-bottom:var(--sp-3);}
.tel-bar-fill{height:100%;background:var(--accent);}
/* Extensiones de terceros (pages-extension-security.jsx) */
.es-ext{display:inline-flex;align-items:center;gap:var(--sp-3);min-width:0;}
.es-ext-ico{flex:none;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);font-size:var(--fs-xs);font-weight:600;overflow:hidden;}
.es-ext-ico img{display:block;width:20px;height:20px;border-radius:var(--r-sm);}
.es-factors{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2);}
.es-factor{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-sm);}
.es-factor-pts{flex:none;min-width:40px;justify-content:center;}
.es-factor-t{min-width:0;}
.es-perms{display:flex;flex-direction:column;gap:var(--sp-2);}
.es-foot-note{color:var(--text-muted);font-size:var(--fs-xs);margin-right:var(--sp-2);}
.es-foot-gap{flex:1;}
.es-ctls{display:flex;flex-direction:column;margin-bottom:var(--sp-5);}
.es-ctl{display:flex;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-3) 0;border-top:1px solid var(--border);}
.es-ctl:first-child{border-top:0;}
.es-notes{margin:0;padding-left:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-2);color:var(--text-muted);font-size:var(--fs-sm);}
.onb-strength-bar{flex:1;height:4px;border-radius:2px;background:var(--border);transition:background .2s;}
.onb-strength-text{font-size:var(--fs-xs);}
.onb-strength.s1 .onb-strength-bar.on{background:var(--danger);}
.onb-strength.s2 .onb-strength-bar.on,.onb-strength.s3 .onb-strength-bar.on{background:var(--warn);}
.onb-strength.s4 .onb-strength-bar.on,.onb-strength.s5 .onb-strength-bar.on{background:var(--ok);}
.onb-strength.s1 .onb-strength-text{color:var(--danger-fg);}
.onb-strength.s2 .onb-strength-text,.onb-strength.s3 .onb-strength-text{color:var(--warn-fg);}
.onb-strength.s4 .onb-strength-text,.onb-strength.s5 .onb-strength-text{color:var(--ok-fg);}

/* — aspecto propio de una sola pantalla */
.cr-add-step{border-radius:var(--r-lg);border:1px dashed var(--border);background:transparent;color:var(--accent);}
.cr-backdrop{background:color-mix(in srgb, black 50%, transparent);}
.cr-btn-danger{border-radius:var(--r-lg);border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);background:transparent;color:var(--danger-fg);}
.cr-btn-delete{border-radius:var(--r-lg);border:none;background:var(--danger);color:var(--accent-fg);}
.cr-code-chip{border-radius:var(--r-sm);background:var(--surface-sunken);border:1px solid var(--border);}
.cr-dialog{background:var(--surface);border-radius:var(--r-xl);}
.cr-dialog-edit{display:flex;flex-direction:column;width:620px;max-width:calc(100vw - 32px);max-height:90vh;position:relative;overflow:hidden;}
.cr-dialog-head{margin:0;padding:24px 30px 16px;flex:0 0 auto;}
.cr-dialog-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 30px 8px;}
.cr-dialog-err{flex:0 0 auto;margin:8px 30px 0;padding:8px 12px;}
.cr-dialog-foot{flex:0 0 auto;display:flex;gap:var(--sp-3);justify-content:flex-end;padding:14px 30px;border-top:1px solid var(--border);background:var(--surface);}
.cr-step-remove{border:none;background:transparent;color:var(--danger-fg);}
/* Detección — la regla de correlación en el cajón común (kit dx-*, entrega 4).
   La regla se lee como una frase en cuatro pasos unidos por un hilo: qué
   detecciones cuentan → cómo se agrupan → cuándo se dispara → qué incidente
   abre (este último tintado con la severidad que abre). */
.cr-row{--dx-r:var(--border-strong);display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;border-left:3px solid var(--dx-r);transition:border-color .15s,box-shadow .15s,background-color .15s;}
.cr-row[data-sev=critical]{--dx-r:var(--danger);}
.cr-row[data-sev=high]{--dx-r:var(--warn);}
.cr-row[data-sev=medium]{--dx-r:var(--info);}
.cr-row[data-sev=low]{--dx-r:var(--ok);}
.cr-row:hover{border-top-color:var(--accent);border-right-color:var(--accent);border-bottom-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 8%,transparent);}
.cr-row:focus-visible{outline:none;box-shadow:var(--focus);}
.cr-row:has(.cr-row-main:focus-visible){box-shadow:var(--focus);}
/* Reglas: fila = interruptor + botón principal hermanos (sin controles anidados). */
.cr-row-main{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;}
.cr-row-main:focus-visible{outline:none;}
.cr-row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.cr-row-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;}
.cr-row-cat{display:block;}
.cr-row-mitre{margin-left:8px;}
.cr-row-side{display:flex;align-items:center;gap:12px;flex-shrink:0;}
.cr-row-go{margin-left:4px;}
.cr-tag-sm{padding:1px 6px;}
.cr-kpis{margin-bottom:16px;}
.cr-auto{padding:16px;margin-bottom:16px;}
.cr-auto-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.cr-auto-title{display:flex;align-items:center;gap:9px;flex:1 1 260px;min-width:220px;}
.cr-auto-fields{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;align-items:flex-end;}
.cr-auto-k{margin-bottom:4px;}
.cr-auto-col{display:flex;flex-direction:column;gap:4px;}
.cr-check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;}
.cr-num{width:90px;}
.cr-list{display:flex;flex-direction:column;gap:8px;container-type:inline-size;}
.cr-search{flex:1 1 220px;max-width:420px;}
.cr-count{margin-left:auto;font-size:var(--text-xs);color:var(--text-subtle);font-variant-numeric:tabular-nums;}
.cr-err{padding:20px;}
/* Columna estrecha (cajón acoplado a 1280 o móvil): severidad y disparos bajan bajo el nombre. */
@container (max-width:620px){.cr-row-main{flex-wrap:wrap;gap:6px 12px;}.cr-row-side{flex-basis:100%;}.cr-row-go{margin-left:auto;}}
.cr-row.is-sel{background:var(--accent-softer);border-top-color:var(--accent);border-right-color:var(--accent);border-bottom-color:var(--accent);}
.dx-stack-lg{display:flex;flex-direction:column;gap:26px;}
.dx-rule-desc{margin:8px 0 0;font-size:var(--text-sm);line-height:1.5;color:var(--text-muted);text-wrap:pretty;}
.dx-rule-case{margin:0;font-size:var(--text-sm);line-height:1.6;color:var(--text);text-wrap:pretty;}
.dx-rule{list-style:none;margin:0;padding:0;}
.dx-rule-step{--dx-n:var(--text-muted);position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding-bottom:18px;}
.dx-rule-step::before{content:'';position:absolute;left:13.5px;top:32px;bottom:4px;width:1px;background:var(--border-strong);}
.dx-rule-step:last-child{padding-bottom:0;}
.dx-rule-step:last-child::before{display:none;}
.dx-rule-node{width:28px;height:28px;border-radius:var(--r-md);display:grid;place-items:center;color:var(--dx-n);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border-strong);}
.dx-rule-body{min-width:0;padding-top:5px;}
.dx-rule-k{margin-bottom:7px;font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.dx-rule-v{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:var(--text-sm);color:var(--text-strong);}
.dx-rule-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;}
.dx-rule-line + .dx-rule-line,.dx-rule-v + .dx-rule-line,.dx-chain + .dx-rule-line{margin-top:8px;}
.dx-rule-l{min-width:124px;font-size:var(--text-xs);color:var(--text-subtle);}
.dx-rule-chips{display:flex;flex-wrap:wrap;gap:5px;min-width:0;}
.dx-rule-sep{width:3px;height:3px;border-radius:50%;background:var(--text-subtle);}
.dx-rule-out.dx-sev-critical{--dx-n:var(--danger);}
.dx-rule-out.dx-sev-high{--dx-n:var(--warn);}
.dx-rule-out.dx-sev-medium{--dx-n:var(--info);}
.dx-rule-out.dx-sev-low{--dx-n:var(--ok);}
.dx-rule-out .dx-rule-node{background:color-mix(in srgb,var(--dx-n) 16%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dx-n) 45%,transparent);}
.dx-rule-out .dx-rule-body{margin-top:-4px;padding:9px 12px 10px;border-radius:var(--r-lg);background:color-mix(in srgb,var(--dx-n) 7%,var(--surface-sunken));}
.dx-rule-cat{font-weight:500;}
.dx-chain{list-style:none;margin:0;padding:0;border-radius:var(--r-lg);border:1px solid var(--border);overflow:hidden;}
.dx-chain-step{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 12px;background:var(--surface);}
.dx-chain-step + .dx-chain-step{border-top:1px dashed var(--divider);}
.dx-chain-n{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:var(--text-2xs);font-weight:600;font-variant-numeric:tabular-nums;background:var(--accent-soft);color:var(--accent-strong);}
.dx-chain-t{font-size:var(--text-sm);font-weight:500;color:var(--text-strong);}
.dx-chain-m{font-size:var(--text-xs);color:var(--text-subtle);text-align:right;overflow-wrap:anywhere;}
.dx-rule-extra{margin-top:16px;padding-top:12px;border-top:1px dashed var(--divider);}
.dx-rule-meta{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:10px;font-size:var(--text-xs);color:var(--text-subtle);}
.dx-rule-json{margin:10px 0 0;padding:12px 14px;max-height:280px;overflow:auto;border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface-sunken);font-size:var(--text-xs);line-height:1.6;color:var(--text);white-space:pre;}
.dx-rule-err{font-size:var(--text-xs);color:var(--danger-fg);}
.dx-rule-gap{flex:1;}
.dx-hold.danger .dx-hold-fill{background:color-mix(in srgb,var(--danger) 30%,transparent);}
@media (prefers-reduced-motion:reduce){.cr-row{transition:none;}}
@media (max-width:640px){.dx-rule-l{min-width:0;width:100%;}.dx-chain-step{grid-template-columns:22px minmax(0,1fr);}.dx-chain-m{grid-column:2;text-align:left;}}
.es-favicon{border-radius:var(--r-sm);}
.fx-error-box{background:var(--danger-soft);border:1px solid var(--danger);border-radius:var(--r-lg);}
.llm-model-badge{background:var(--surface-2);color:var(--text);}
.llm-slider{accent-color:var(--accent);}
.onb-note{border-radius:var(--r-md);background:var(--surface-2);}
.onb-subdomain-input{border-radius:var(--r-md) 0 0 var(--r-md);}
.onb-subdomain-suffix{background:var(--surface-2);border:1px solid var(--border);border-left:none;border-radius:0 var(--r-md) var(--r-md) 0;color:var(--text-muted);}
.onb-warn-box{border-radius:var(--r-lg);background:color-mix(in srgb, var(--warn) 8%, transparent);border:1px solid color-mix(in srgb, var(--warn) 35%, transparent);}
.tel-alert-card{border-left:3px solid var(--danger-fg);}
.tel-bar-track{background:var(--surface-sunken);border-radius:var(--r-pill);}
.tel-reveal-warn{border:1px solid var(--warn-fg);border-radius:var(--r-md);}
/* dentro de .card-head, `h3` fija tamaño/peso/color (0,1,1): la etiqueta de sección conserva su escala */
.card-head .fe-eyebrow{display:block;font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);}

/* — fin familia E — */



/* ====================== BARRIDO · FAMILIA F ====================== */
/* compartidos — app.jsx (páginas propias), ui.jsx, auth.jsx, charts.jsx, tweaks-panel.jsx */
/* ── Primitivos compartidos (ui.jsx · charts.jsx) ───────────────────── */
.ui-logo{display:block;}
.ta-right,.tbl th.ta-right,.tbl td.ta-right{text-align:right;}
.ta-center,.tbl thead th.ta-center,.tbl td.ta-center{text-align:center;}

/* Badges por banda: el naranja de «Alto» no tiene token semántico. */
.badge.orange{background:color-mix(in srgb,var(--orange-500) 16%,transparent);color:var(--orange-500);}
.bd-num{font-family:var(--font-mono);font-weight:600;opacity:.85;}
.bd-clip{max-width:200px;white-space:nowrap;}
.risk-badge{white-space:nowrap;}

/* Tabs (window.Tabs): subrayado fino, sin pastillas */
.th-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:18px;}
.th-tab{display:flex;align-items:center;gap:6px;padding:10px 14px;margin-bottom:-1px;
  font-size:var(--text-base);font-weight:500;color:var(--text-muted);
  border-bottom:2px solid transparent;transition:color .12s,border-color .12s;}
.th-tab:hover{color:var(--text-strong);}
.th-tab.on{color:var(--text-strong);border-bottom-color:var(--accent);}
.th-tab-count{font-size:10.5px;font-weight:600;padding:1px 6px;border-radius:var(--r-sm);
  background:var(--surface-sunken);color:var(--text-muted);}
.th-tab.on .th-tab-count{background:var(--accent-soft);color:var(--accent-strong);}

/* Barras apiladas por hora */
.shb{position:relative;}
.shb-slot{display:flex;flex-direction:column;justify-content:flex-end;background:transparent;}
.shb-stack{display:flex;flex-direction:column;border-radius:2px 2px 0 0;overflow:hidden;background:var(--surface-sunken);position:relative;}
.shb-seg{min-height:0;}
.shb-block{background:var(--danger);}
.shb-warn{background:var(--warn);}
.shb-log{background:var(--bar-neutral);}
.shb-axis{display:flex;justify-content:space-between;margin-top:8px;font-size:10.5px;color:var(--text-subtle);font-family:var(--font-mono);}

/* Barra horizontal de lista (ui.HBar) */
.ui-hbar{display:flex;align-items:center;gap:12px;padding:8px 0;}
.ui-hbar-main{flex:1;min-width:0;}
.ui-hbar-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;}
.ui-hbar-label{font-size:var(--text-sm);font-weight:500;color:var(--text-strong);}
.ui-hbar-val{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-mono);}
.ui-hbar-sub{margin-left:6px;color:var(--danger-fg);}
.ui-hbar-track{height:4px;background:var(--surface-sunken);border-radius:999px;overflow:hidden;}
.ui-hbar-fill{height:100%;border-radius:999px;transition:width .4s ease;}

/* Mapa de calor 7×24 */
.hm{display:flex;gap:6px;}
.hm-days{display:grid;grid-template-rows:repeat(7,1fr);gap:3px;padding-top:14px;}
.hm-day{display:flex;align-items:center;height:100%;font-size:10px;color:var(--text-subtle);font-family:var(--font-mono);}
.hm-main{flex:1;}
.hm-hours{display:flex;justify-content:space-between;margin-bottom:4px;font-size:10px;color:var(--text-subtle);font-family:var(--font-mono);}
.hm-grid{display:grid;grid-template-rows:repeat(7,1fr);gap:3px;}
.hm-row{display:grid;grid-template-columns:repeat(24,1fr);gap:3px;}
.hm-cell{aspect-ratio:1.2;border-radius:3px;background:var(--surface-sunken);transform-origin:center;}
.hm-cell.on{background:color-mix(in srgb,var(--accent) var(--heat),transparent);}

/* Heatmap app de IA × dimensión de riesgo */
.arh{overflow-x:auto;}
.arh-tbl{min-width:560px;}
.arh-click{cursor:pointer;}
.arh-sel{background:var(--accent-softer);}
.arh-deep{background:var(--danger-soft);}
.arh-app{font-weight:600;}
.arh-name{display:flex;align-items:center;gap:6px;}
.arh-name .badge{font-size:9.5px;}
.arh-cellwrap{padding:4px;}
.arh-cell{margin:0 auto;min-width:30px;height:22px;padding:0 4px;border-radius:var(--r-sm);
  display:flex;align-items:center;justify-content:center;
  font-size:10.5px;font-family:var(--font-mono);color:var(--text-muted);background:var(--surface-sunken);}
.arh-cell.on{background:color-mix(in srgb,var(--danger) var(--heat),transparent);}
.arh-cell.hot{color:var(--text-strong);}
.arh-pct{font-size:11.5px;color:var(--text-muted);}

/* Cambio porcentual (charts.Delta) */
.delta{display:inline-flex;align-items:center;gap:2px;font-size:11px;font-weight:600;}
.delta-flat{color:var(--text-subtle);}
.delta-good{color:var(--ok-fg);}
.delta-bad{color:var(--danger-fg);}

/* Donut / Área / Barras / Gauge (gráficos de datos: svg con data-chart) */
.donut-svg{transform:rotate(-90deg);}
.donut-seg{transition:stroke-dasharray 1s var(--ease-out),stroke-width .15s;cursor:pointer;}
.ac{position:relative;}
.ac-grid{stroke:var(--border);stroke-width:.6;stroke-opacity:.6;}
.ac-area{opacity:0;transition:opacity .9s ease .3s;}
.ac-area.on{opacity:1;}
.ac-cursor{stroke:var(--text-subtle);stroke-width:1;stroke-dasharray:3 3;}
.ac-point{fill:var(--surface);stroke-width:2;}
.ac-xaxis{position:relative;overflow:hidden;}
.ac-xl{position:absolute;top:5px;font-size:9.5px;color:var(--text-subtle);font-family:var(--font-mono);white-space:nowrap;line-height:1;}
.ac-tipwrap{position:absolute;top:0;pointer-events:none;z-index:4;}
.ac-tip{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);padding:8px 11px;min-width:120px;}
.ac-tip-head{font-size:11px;color:var(--text-muted);margin-bottom:5px;font-weight:600;}
.ac-tip-row{display:flex;align-items:center;gap:7px;font-size:12px;padding:1px 0;}
.ac-tip-sw{width:9px;height:9px;border-radius:3px;}
.ac-tip-name{color:var(--text-muted);flex:1;}
.ac-tip-row b{color:var(--text-strong);}
.bc{position:relative;}
.bc-col{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;cursor:pointer;}
.bc-bar{width:74%;}
.bc-label{font-size:9.5px;color:var(--text-subtle);margin-top:6px;font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:center;}
.bc-tip{position:absolute;top:-6px;transform:translate(-50%,-100%);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);padding:6px 10px;pointer-events:none;white-space:nowrap;z-index:2;}
.bc-tip-label{font-size:11px;color:var(--text-muted);}
.bc-tip-val{font-size:14px;font-weight:700;color:var(--text-strong);}
.gauge{position:relative;}
.gauge-arc{transition:stroke-dashoffset 1.2s var(--ease-out);}
.gauge-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;}
.gauge-val{font-size:28px;font-weight:650;color:var(--text-strong);}
.gauge-lbl{font-size:11px;color:var(--text-muted);}

/* Popup de histórico (KpiHistoryModal) */
.kpim-titles{flex:1;}
.kpim-title{font-weight:600;font-size:17px;color:var(--text-strong);}
.kpim-sub{font-size:12px;color:var(--text-muted);margin-top:2px;}
.kpim-chart{padding:14px 0 0;margin-top:20px;}
.kpim-legend{padding:0 16px 10px;}
.kpim-empty{margin-top:20px;padding:28px 20px;text-align:center;background:var(--surface-sunken);border-radius:var(--r-xl);color:var(--text-muted);font-size:13px;}

/* Desglose del riesgo de una persona (UserRiskBreakdown) */
.urb-headline{font-size:13px;color:var(--text-strong);line-height:1.55;}
.urb-note{font-size:12px;color:var(--text-muted);}
.urb-gap{margin-top:6px;}
.urb-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.urb-foot{font-size:11px;color:var(--text-subtle);margin-top:8px;}
.urb-toggle{margin-top:10px;}
.urb-method{font-size:12px;color:var(--text-muted);margin-top:8px;line-height:1.6;background:var(--surface-sunken);border-radius:var(--r-xl);padding:10px 12px;}
.urb-method>*+*{margin-top:6px;}
.urd{border:1px solid var(--border);border-radius:var(--r-xl);padding:10px 12px;}
.urd.muted{opacity:.72;}
.urd-head{display:flex;align-items:center;gap:8px;}
.urd-label{font-weight:600;font-size:13px;}
.urd-meta{font-size:11px;color:var(--text-subtle);}
.urd-score{margin-left:auto;display:inline-flex;align-items:center;gap:8px;}
.urd-pts{font-weight:700;font-size:13px;color:var(--text-subtle);}
.urd-pts.on{color:var(--text-strong);}
.urd-level{display:inline-flex;gap:2px;}
.urd-level i{width:14px;height:5px;border-radius:999px;background:var(--surface-sunken);display:inline-block;}
.urd-level i.on{background:var(--accent);}
.urd-detail{font-size:12px;color:var(--text-muted);margin-top:6px;}
.urd-advice{font-size:12px;color:var(--text-subtle);margin-top:4px;}
.urd-advice b{font-weight:600;}

/* Selector de idioma (login) */
.lang-switcher{display:inline-flex;align-items:center;gap:6px;cursor:pointer;position:relative;color:var(--text-muted);}
.lang-switcher.on-dark{color:var(--text-muted);}
.lang-switcher-select{appearance:none;-webkit-appearance:none;border:1px solid var(--border);border-radius:var(--r-md);
  background:var(--surface);color:var(--text);font:inherit;cursor:pointer;padding:4px 10px;outline:none;}
.lang-switcher-select{padding-right:22px;background-image:linear-gradient(45deg,transparent 50%,var(--text-muted) 50%),linear-gradient(135deg,var(--text-muted) 50%,transparent 50%);background-size:4px 4px,4px 4px;background-repeat:no-repeat;background-position:calc(100% - 12px) 50%,calc(100% - 8px) 50%;}
.lang-switcher.compact .lang-switcher-select{padding:2px 20px 2px 6px;}
.lang-switcher-select:hover{border-color:var(--border-strong);}
.lang-switcher-select:focus-visible{border-color:var(--accent);}
.lang-switcher-select option{background:var(--surface);color:var(--text);}

/* ── Acceso (auth.jsx): enlaces, ayuda de desarrollo y diálogo de verificación ── */
.login-back{display:block;width:100%;margin-top:12px;color:var(--text-muted);font-size:13px;text-decoration:underline;text-align:center;}
.login-back:hover{color:var(--accent);}
.login-hint{text-align:center;font-size:12px;color:var(--text-muted);margin:2px 0 6px;}
.login-sso{margin:4px 0 8px;}
.login-alt-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:6px;}
.login-alt-actions .login-server-toggle{align-self:auto;}
.login-alt-stack{margin-top:16px;display:flex;flex-direction:column;gap:8px;align-items:center;}
.login-dev{margin:4px 0 16px;padding:14px;border:1px dashed var(--border-strong);border-radius:var(--r-lg);background:var(--warn-soft);text-align:left;}
.login-dev-title{font-size:12px;font-weight:600;color:var(--warn-fg);margin-bottom:8px;}
.login-dev-link{font-size:12px;word-break:break-all;color:var(--accent);}
.login-dev-cta{margin-top:10px;}
.login-ok{font-size:13px;color:var(--ok-fg);margin:0 0 16px;}
.login-modal-bd{position:fixed;inset:0;background:color-mix(in srgb,black 55%,transparent);display:flex;align-items:center;justify-content:center;z-index:100;}
.login-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:32px 28px;max-width:400px;width:100%;margin:0 16px;text-align:center;position:relative;}
.login-modal-x{position:absolute;top:12px;right:14px;color:var(--text-muted);font-size:18px;line-height:1;padding:4px 6px;}
.login-modal-x:hover{color:var(--text-strong);}
.login-modal-title{margin:0 0 8px;font-size:18px;}
.login-modal-text{color:var(--text-muted);margin:0 0 22px;font-size:14px;line-height:1.5;}
.login-modal-gap{margin-bottom:10px;}

/* ── Páginas propias de app.jsx: Entidades sensibles, Severidad DLP y Etiquetas de documentos ── */
.fx-end{display:flex;gap:6px;justify-content:flex-end;align-items:center;}
.fx-end .iconbtn{font-size:14px;}
.fx-foot{display:flex;gap:8px;justify-content:flex-end;align-items:center;}
.fx-form{display:flex;flex-direction:column;gap:14px;}
.fx-stack{display:flex;flex-direction:column;gap:8px;}
.fx-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.fx-bar .fx-search{margin-left:auto;}
.fx-search{width:220px;}
.fx-mb{margin-bottom:12px;}
.fx-mb10{margin-bottom:10px;}
.fx-nomb{margin-bottom:0;}
.fx-nomargin{margin:0;}
.fx-mt6{margin-top:6px;}
.fx-mt8{margin-top:8px;}
.fx-mt12{margin-top:12px;}
.fx-mt14{margin-top:14px;}
.fx-mt18{margin-top:18px;}
.fx-flush{padding:0;}
.fx-flush.fx-mt6{padding:0;}
.fx-grow{flex:1;}
.fx-push{margin-left:auto;}
.fx-self-start{align-self:flex-start;}
.fx-selectall{user-select:all;}
.fx-w60{width:60px;}
.fx-w120{width:120px;}
.fx-w170{width:170px;}
.fx-w180{width:180px;}
.fx-w280{max-width:280px;}
.fx-f1{flex:1;min-width:180px;}
.fx-f2{flex:2;min-width:260px;}
.fx-req{color:var(--danger-fg);}
.fx-opt{color:var(--text-muted);font-weight:400;}
.fx-off{opacity:.55;}
.fx-dim{opacity:.6;}
.fx-hint{font-size:12px;color:var(--text-muted);margin-bottom:6px;}
.fx-hint-top{margin:4px 0 0;font-size:11.5px;}
.fx-sub{font-size:11.5px;color:var(--text-muted);margin-top:2px;}
.fx-sub0{margin-top:0;font-size:12px;}
.fx-none{font-size:12px;color:var(--text-subtle);}
.fx-cell-sm{font-size:12px;color:var(--text-muted);}
.fx-clip{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fx-code-sm{font-size:12px;}
.fx-code{font-family:var(--font-mono,monospace);font-size:12.5px;resize:vertical;width:100%;}
.fx-note{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-muted);}
.fx-note-block{display:block;}
.fx-note-block.has-next{margin-bottom:10px;}
.fx-cardrow{display:flex;align-items:center;gap:8px;}
.fx-howto{font-size:12.5px;line-height:1.55;}
.fx-variant{display:inline-flex;align-items:center;gap:6px;}
.fx-inline-field{flex-direction:row;align-items:center;gap:10px;}
.api-spinner.sm{width:12px;height:12px;border-width:2px;}

/* aviso de resultado (alta, error, copiado) */
.fx-feedback{display:flex;align-items:center;gap:8px;margin-bottom:12px;}
.fx-feedback-msg{flex:1;}
.fx-secret{display:flex;align-items:center;gap:8px;margin:12px;flex-wrap:wrap;}
.fx-secret-code{user-select:all;}

/* alias como etiquetas quitables */
.fx-chips.has{margin-bottom:8px;}
.fx-chips{display:flex;flex-wrap:wrap;gap:6px;}
.fx-chip{display:inline-flex;align-items:center;gap:5px;}
.fx-chip-x{appearance:none;border:0;background:transparent;color:var(--text-muted);cursor:pointer;font-size:14px;line-height:1;padding:0 2px;border-radius:var(--r-sm);}
.fx-chip-x:hover{color:var(--text-strong);background:var(--surface-2);}
.fx-addalias{display:flex;gap:6px;}
.fx-maprow{display:flex;gap:6px;margin-bottom:6px;align-items:center;}
.fx-maprow .fx-f1,.fx-maprow .fx-f2{min-width:0;}
.fx-addrow{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;}

/* paginador */
.fx-pager{display:flex;gap:8px;justify-content:center;align-items:center;padding:12px;}
.fx-pager-info{font-size:12.5px;color:var(--text-muted);}

/* importación en bloque */
.fx-import{max-width:860px;}
.fx-sect-head{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.fx-sect-bar{padding:14px 16px;margin-bottom:0;border-bottom:1px solid var(--border);gap:8px;}
.fx-sect-title{font-size:14px;}
.fx-lede{margin-top:2px;}
.fx-seg-gap{margin-bottom:14px;}
.fx-drop{border:2px dashed var(--border);border-radius:var(--r-xl);padding:32px;text-align:center;cursor:pointer;background:transparent;color:var(--text-muted);}
.fx-drop:hover{border-color:var(--border-strong);}
.fx-drop.has-file{background:var(--surface-sunken);}
.fx-stats{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.fx-stat{text-align:center;min-width:70px;}
.fx-stat-n{font-size:16px;padding:4px 12px;}
.fx-stat-l{font-size:11px;margin-top:4px;color:var(--text-muted);}
.fx-sum{cursor:pointer;}
.fx-sum.err{color:var(--danger-fg);}
.fx-err-note{font-size:11.5px;color:var(--danger-fg);text-align:right;margin-top:6px;}

/* etiquetas de documentos */
.fx-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle;box-shadow:0 0 0 1px var(--border-strong);}
.fx-colorrow{display:flex;align-items:center;gap:8px;}
.fx-colorpick{width:44px;height:32px;padding:2px;border:1px solid var(--border);border-radius:var(--r-md);background:transparent;}
.fx-settings{max-width:640px;display:flex;flex-direction:column;gap:18px;}
.fx-check{display:flex;align-items:center;gap:10px;cursor:default;}
.fx-check.can{cursor:pointer;}

/* ── Armazón de app.jsx: arranque con error, error de render, raíl y vista previa de la extensión ── */
.boot-err{color:var(--danger-fg);}
.fx-errbox{padding:32px;background:var(--surface-2);border-radius:var(--r-xl);border:1px solid var(--border);margin:24px;font-family:var(--font-mono);font-size:12.5px;}
.fx-errbox-title{color:var(--danger-fg);font-weight:700;font-size:15px;margin-bottom:12px;}
.fx-errbox-msg{color:var(--text-strong);margin-bottom:8px;}
.fx-errbox-stack{font-size:11px;color:var(--text-muted);white-space:pre-wrap;overflow-wrap:break-word;margin:8px 0 0;max-height:300px;overflow-y:auto;}
.fx-errbox-retry{margin-top:16px;}
.nav-live{width:6px;height:6px;margin-left:auto;flex-shrink:0;}
.ts-item.ts-d0{padding-left:10px;}
.ts-item.ts-d1{padding-left:26px;}
.ts-item.ts-d2{padding-left:42px;}
.ts-item.ts-d3{padding-left:58px;}
.ts-item.ts-d4{padding-left:74px;}
.ts-item.ts-d5{padding-left:90px;}
.ts-item.ts-d6{padding-left:106px;}
.kl-rail-brand img.logo-console{height:26px;}
.kl-nav-sep{margin:6px 10px;border-top:1px solid var(--border);}
.tenant-banner .kl-tenant-back{margin-left:auto;color:var(--info);}

/* vista previa de la extensión (Apariencia → Demos): ventana, popup, bloqueo y aviso */
.ext-mock{position:fixed;inset:0;background:color-mix(in srgb,black 55%,transparent);backdrop-filter:blur(4px);z-index:80;display:flex;align-items:center;justify-content:center;padding:40px;}
.ext-mock-row{display:flex;gap:32px;align-items:center;}
.ext-mock-tabs{display:flex;gap:8px;margin-bottom:14px;justify-content:center;}
.ext-mock-note{color:var(--text-strong);font-size:13px;max-width:320px;text-align:center;margin:0 auto;}
.ext-mock-x{width:36px;height:36px;font-size:20px;line-height:1;}
.ext-sm{font-size:11.5px;}
.ext-cap{font-size:10px;font-weight:600;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.07em;margin-bottom:7px;}
.ext-pop,.ext-card{background:var(--surface);overflow:hidden;box-shadow:var(--sh-lg);border:1px solid var(--border);}
.ext-pop{width:340px;border-radius:var(--r-xl);}
.ext-pop-head{background:var(--accent-strong);color:var(--accent-fg);padding:14px 16px;display:flex;align-items:center;gap:10px;}
.ext-pop-who{flex:1;}
.ext-pop-name{font-size:14px;font-weight:700;letter-spacing:-.01em;}
.ext-pop-org{font-size:11px;opacity:.75;}
.ext-pop-state{display:inline-flex;align-items:center;gap:5px;background:var(--surface-2);color:var(--text-strong);font-size:10px;font-weight:600;padding:3px 8px;border-radius:999px;letter-spacing:.04em;}
.ext-pop-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);}
.ext-pop-mode{padding:11px 16px;background:var(--accent-soft);border-bottom:1px solid var(--divider);}
.ext-pop-modes{display:flex;gap:6px;}
.ext-pop-m{flex:1;text-align:center;padding:5px 6px;border-radius:var(--r-md);font-size:10.5px;font-weight:500;color:var(--text-subtle);background:var(--surface);border:1px solid var(--border);}
.ext-pop-m.on{font-weight:700;color:var(--accent-fg);background:var(--accent-strong);border-color:var(--accent-strong);}
.ext-pop-sec{padding:13px 16px;border-bottom:1px solid var(--divider);}
.ext-pop-site{display:flex;align-items:center;gap:10px;}
.ext-pop-host{font-size:13px;font-weight:600;color:var(--text-strong);}
.ext-pop-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.ext-pop-n{font-size:20px;font-weight:600;color:var(--text-strong);}
.ext-pop-foot{padding:12px 16px;display:flex;gap:8px;}
.ext-pop-foot .btn{flex:1;}
.ext-block{width:520px;border-radius:var(--r-xl);}
.ext-block-head{padding:20px 24px;background:var(--danger-soft);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;}
.ext-block-title{font-size:16px;font-weight:600;color:var(--text-strong);}
.ext-block-sub{font-size:13px;color:var(--text-muted);}
.ext-block-body{padding:20px 24px;}
.ext-block-body>.ext-cap{margin-bottom:10px;}
.ext-block-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;}
.ext-block-hit{display:flex;align-items:center;gap:12px;padding:10px;background:var(--surface-sunken);border-radius:var(--r-md);}
.ext-block-hit-name{font-size:13px;font-weight:600;color:var(--text-strong);}
.ext-block-snip{background:var(--surface-sunken);border-radius:var(--r-md);padding:12px;margin-bottom:16px;}
.ext-block-code{font-size:11.5px;color:var(--text-strong);line-height:1.5;margin-top:6px;}
.ext-hit{background:var(--danger-soft);padding:0 2px;}
.ext-block-policy{font-size:12.5px;line-height:1.55;}
.ext-block-policy strong{color:var(--text-strong);}
.ext-block-foot{padding:14px 24px;border-top:1px solid var(--border);display:flex;gap:10px;}
.ext-toast{width:380px;border-radius:var(--r-xl);padding:16px;display:flex;gap:12px;align-items:flex-start;}
.ext-toast-title{font-size:14px;font-weight:600;color:var(--text-strong);margin-bottom:2px;}
.ext-toast-text{font-size:12.5px;line-height:1.5;margin-bottom:8px;}
.ext-toast-actions{justify-content:flex-start;}

/* — fin familia F — */

/* ====================== INCIDENTES · CUMPLIMIENTO REGULATORIO ====================== */
/* pages-incidents-regulatory.jsx — DORA / AI Act / GDPR como atributo de cada incidencia
   (marcas en la tarjeta, recuadros clicables y sección del detalle). Sustituye a la
   antigua pestaña «Observabilidad regulatoria IA» y a su drawer (.airo-*). */
.inc-reg-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px;}
.inc-reg-chip{display:inline-flex;align-items:center;padding:1px var(--sp-2);border-radius:var(--r-sm);font-size:var(--fs-2xs);font-weight:600;border:1px solid transparent;background:var(--surface-sunken);color:var(--text-muted);flex-shrink:0;}
.inc-reg-chip.warn{background:var(--warn-soft);color:var(--warn-fg);}
.inc-reg-chip.ok{background:var(--ok-soft);color:var(--ok-fg);}
.inc-reg-chip.off{background:transparent;border-color:var(--border);color:var(--text-subtle);text-decoration:line-through;}
.inc-reg-due{margin-left:auto;font-size:var(--fs-2xs);font-weight:600;font-family:var(--font-mono);color:var(--text-muted);}
.inc-reg-due[data-tone="danger"]{color:var(--danger-fg);}
.inc-reg-due[data-tone="warn"]{color:var(--warn-fg);}
.inc-reg-due[data-tone="ok"]{color:var(--ok-fg);}
/* recuadros regulatorios: botones con el aspecto de .kpi */
.inc-reg-kpi-h{margin:0 0 var(--sp-2);}
/* Énfasis sutil de los recuadros de Incidentes (revisión 3-oct, INC5): solo lo
   que pide actuar se tiñe (alert) o se distingue un poco (notice); a cero se
   atenúa (muted). Van ANTES de .on para que el filtro activo gane el borde. */
.kpi.inc-kpi-alert{border-color:var(--danger-soft);}
.kpi.inc-kpi-alert .k-value{color:var(--danger-fg)!important;}
.kpi.inc-kpi-notice .k-value{color:var(--warn-fg)!important;}
.kpi.inc-kpi-muted .k-value{color:var(--text-subtle)!important;font-weight:500;}
.kpi.inc-kpi-muted .k-label{color:var(--text-subtle);}
.kpi.inc-kpi-btn{width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;}
/* Etiqueta partida en dos líneas en una celda estrecha: el valor baja al pie y queda a la misma altura en toda la fila. */
.kpi.inc-kpi-btn{display:flex;flex-direction:column;}
.kpi.inc-kpi-btn .k-value{margin-top:auto;}
.kpi.inc-kpi-btn:hover{border-color:var(--border-strong);}
.kpi.inc-kpi-btn:focus-visible{outline:none;box-shadow:var(--focus);}
.kpi.inc-kpi-btn.on{border-color:var(--accent);background:var(--accent-softer);}
/* sección del detalle */
.inc-reg-lede{margin-bottom:var(--sp-3);}
.inc-reg-fw{padding:var(--sp-3) 0;border-bottom:1px solid var(--divider);}
.inc-reg-fw:last-of-type{border-bottom:0;}
.inc-reg-fw-head{display:flex;align-items:center;gap:var(--sp-3);}
.inc-reg-fw-state{font-size:var(--fs-sm);font-weight:600;color:var(--text-strong);}
.inc-reg-dl{margin-left:auto;flex-shrink:0;}
.inc-reg-fw-hint{margin-top:var(--sp-1);font-size:var(--fs-xs);color:var(--text-muted);}
.inc-reg-why{display:flex;align-items:flex-start;gap:var(--sp-2);margin-top:var(--sp-2);}
.inc-reg-why code{flex:1;min-width:0;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-muted);word-break:break-word;}
.inc-reg-lbl{flex-shrink:0;font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);}
.inc-reg-review{margin-top:var(--sp-2);font-size:var(--fs-xs);color:var(--text-muted);}
.inc-reg-review.muted{color:var(--text-subtle);}
.inc-reg-note{display:block;margin-top:var(--sp-1);color:var(--text-subtle);}
.inc-reg-form{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2);}
.inc-reg-form .input{flex:1 1 180px;min-width:0;height:28px;padding:0 var(--sp-3);font-size:var(--fs-sm);}
.inc-reg-block{margin-top:var(--sp-4);}
.inc-reg-stage{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--divider);font-size:var(--fs-sm);}
.inc-reg-stage:last-child{border-bottom:0;}
.inc-reg-stage-label{flex:1;min-width:0;color:var(--text-strong);}
.inc-reg-stage-when{flex-shrink:0;font-weight:600;color:var(--text-muted);}
.inc-reg-stage-when[data-tone="danger"]{color:var(--danger-fg);}
.inc-reg-stage-when[data-tone="warn"]{color:var(--warn-fg);}
.inc-reg-stage-date{flex-shrink:0;font-size:var(--fs-2xs);font-family:var(--font-mono);color:var(--text-subtle);}
.inc-reg-more{margin-top:var(--sp-4);}
.inc-reg-more>summary{cursor:pointer;font-size:var(--fs-xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-subtle);list-style:none;}
.inc-reg-more>summary::-webkit-details-marker{display:none;}
.inc-reg-more>summary::before{content:"▸";display:inline-block;margin-right:var(--sp-2);transition:transform .15s;}
.inc-reg-more[open]>summary::before{transform:rotate(90deg);}
.inc-reg-more>summary:hover{color:var(--text-muted);}
.inc-reg-more>summary:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.inc-reg-count{margin-left:var(--sp-3);font-size:var(--fs-2xs);font-weight:500;letter-spacing:0;text-transform:none;color:var(--text-muted);}
.inc-reg-fwblock{margin-top:var(--sp-3);}
.inc-reg-fwblock-head{margin-bottom:var(--sp-1);font-size:var(--fs-sm);font-weight:600;color:var(--text-strong);}
.inc-reg-ctrl{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0 var(--sp-1) var(--sp-4);border-bottom:1px solid var(--divider);font-size:var(--fs-xs);}
.inc-reg-ctrl:last-child{border-bottom:0;}
.inc-reg-ctrl-code{flex-shrink:0;min-width:64px;font-family:var(--font-mono);color:var(--text-muted);}
.inc-reg-ctrl-name{flex:1;min-width:0;color:var(--text-strong);}
.inc-reg-ctrl-ev{flex-shrink:0;color:var(--text-muted);}
.inc-reg-empty{margin-top:var(--sp-2);font-size:var(--fs-2xs);line-height:1.5;color:var(--text-subtle);}
.inc-reg-evi{width:100%;margin-top:var(--sp-3);}
.inc-reg-nowrap{white-space:nowrap;}

/* ====================== EVIDENCIAS DE DESARROLLO IA (ade-*) ====================== */
/* pages-ai-dev-evidence.jsx — sesiones de agentes de código y packs AI Act / NIS2 sobre el kit dx-*.
   Solo lo que el kit no da: celdas de dos líneas, raíl de estado de los controles, selector de sesiones
   del formulario y la fila de aviso. Solo tokens. */
.ade-cell{display:flex;flex-direction:column;gap:2px;min-width:0;}
.ade-sub{display:block;font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere;}
.ade-over{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);}
.ade-c-seq{width:3.5em;}
.ade-ev{display:flex;flex-direction:column;gap:2px;min-width:0;}
.ade-ev-h{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);}
.ade-ev-t{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);color:var(--text-muted);}
.ade-attn{display:flex;flex-direction:column;gap:var(--sp-2);margin:0 0 var(--sp-4);}
.ade-alert{display:flex;align-items:flex-start;gap:var(--sp-3);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);}
.ade-alert > svg{flex-shrink:0;margin-top:2px;}
.ade-banner{margin:0 0 var(--sp-4);}
.ade-tabs{margin:var(--sp-4) 0;border-bottom:1px solid var(--divider);}
.ade-tabs .dx-tabs{margin:0 0 -1px;}
.ade-subh{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.ade-foot{margin:var(--sp-3) 0 0;font-size:var(--text-xs);color:var(--text-muted);}
.ade-hash{overflow-wrap:anywhere;}
.ade-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-3);font-size:var(--text-xs);}
.ade-files{list-style:none;margin:0 0 var(--sp-3);padding:0;display:flex;flex-direction:column;gap:2px;font-size:var(--text-xs);}
.ade-files li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);}
.ade-sum{margin:0 0 var(--sp-3);}
.ade-rationale{margin:var(--sp-2) 0 0;font-size:var(--text-xs);line-height:1.5;color:var(--text-muted);overflow-wrap:anywhere;}
.dx-finding.ade-ctl-ok{--dx-f:var(--ok);}
.dx-finding.ade-ctl-warn{--dx-f:var(--warn);}
.dx-finding.ade-ctl-bad{--dx-f:var(--danger);}
.dx-finding.ade-ctl-quiet{--dx-f:var(--border-strong);}
/* formulario «Nuevo pack» */
.ade-period{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);}
.ade-checks{display:flex;flex-wrap:wrap;gap:var(--sp-5);}
.ade-check{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);cursor:pointer;}
.ade-picks{list-style:none;margin:0 0 var(--sp-3);padding:0;max-height:280px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);}
.ade-picks li + li{border-top:1px solid var(--divider);}
.ade-pick{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);cursor:pointer;}
.ade-pick:hover{background:var(--surface-hover);}
.ade-pick input{margin:0;accent-color:var(--accent);}
.ade-pick-b{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:var(--text-sm);}
.ade-pick-d{font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;}
@media (max-width:640px){
  .ade-period{grid-template-columns:1fr;}
}

/* ---- Exportar y exportaciones programadas (pages-reporting-schedules.jsx) ---- */
.rxs-body{display:flex;flex-direction:column;gap:var(--sp-4);}
.rxs-field{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0;}
.rxs-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;}
.rxs-row-between{justify-content:space-between;}
.rxs-grow{flex:1 1 140px;min-width:0;}
.rxs-links{display:flex;gap:var(--sp-1);}
.rxs-fmts{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);}
.rxs-meta{font-size:var(--fs-xs);color:var(--text-muted);}
.rxs-strong{font-weight:600;color:var(--text-strong);}
.rxs-nowrap{white-space:nowrap;}
.rxs-note-err{font-size:var(--fs-xs);color:var(--danger-fg);}
.rxs-date{width:150px;}
.rxs-time{width:140px;}
.rxs-num{width:84px;}
.rxs-foot{display:flex;justify-content:flex-end;gap:var(--sp-2);width:100%;}
.rxs-tree{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-sunken);max-height:300px;overflow-y:auto;}
.rxs-sec{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--divider);}
.rxs-sec:last-child{border-bottom:0;}
.rxs-sec-head{display:flex;align-items:center;gap:var(--sp-3);}
.rxs-sec-title{color:var(--text-strong);}
.rxs-cols{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-4);padding:var(--sp-2) 0 var(--sp-1) var(--sp-5);}
.rxs-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.rxs-chip{display:inline-flex;align-items:center;gap:var(--sp-1);max-width:100%;padding:2px 4px 2px 10px;border-radius:99px;background:var(--accent-soft);color:var(--accent-strong);font-size:var(--fs-xs);}
.rxs-chip-x{border:0;background:transparent;color:inherit;cursor:pointer;font-size:14px;line-height:1;padding:0 6px;border-radius:99px;}
.rxs-chip-x:hover{background:var(--accent-softer);}
.rxs-chip-x:focus-visible{outline:none;box-shadow:var(--focus);}
.rxs-err-line{max-width:280px;margin-top:2px;font-size:var(--fs-xs);color:var(--danger-fg);overflow-wrap:anywhere;}
.rxs-file{margin-right:var(--sp-1);}
.rxs-cell-narrow{max-width:220px;overflow-wrap:anywhere;}
.rxs-done{padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--ok-soft);}
.rxs-done h3{margin:0 0 var(--sp-2);color:var(--text-strong);font-size:var(--fs-md);}
.rxs-done p{margin:0 0 var(--sp-2);}
.rxs-toolbar .th-tabs{margin:0;}
.rxs-policy .rxs-body{padding:0 var(--pad-card) var(--pad-card);}

/* ── AI Tool Permissions (consola): panel de cobertura, historial, anfitriones y explicación ── */
.ait-mb8{margin-bottom:8px}
.ait-mb14{margin-bottom:14px}
.ait-card0{padding:0}
.ait-head{padding:10px 16px}
.ait-h3{margin:0}
.ait-mt2{margin-top:2px}
.ait-mt6{margin-top:6px}
.ait-cov-row{display:flex;gap:10px;align-items:baseline;padding:8px 16px;flex-wrap:wrap}
.ait-cov-text{flex:1 1 260px}
.ait-line{padding:6px 16px}
.ait-note{padding:6px 8px;margin-bottom:8px}
.ait-note-in{margin:0 16px 10px;padding:6px 8px}
.ait-note-top{margin-top:8px;padding:6px 8px}
.ait-list{margin:0;padding-left:16px}
.ait-title{margin-bottom:4px}
.ait-box{padding:6px 10px}
.ait-hist-line{padding:4px 0}
.ait-pre{white-space:pre-wrap}
.ait-pager{display:flex;gap:6px;align-items:center;padding-top:4px}
.ait-cell{padding:3px 6px}
.ait-cell-sm{padding:2px 6px}
.ait-cell-r{text-align:right;padding:2px 6px}
.ait-w100{width:100%}
.ait-expl-text{padding:8px 10px;white-space:pre-wrap}
.ait-foot{display:flex;gap:8px;justify-content:flex-end}
.ait-p{margin:0 0 10px}
.ait-form{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}
.ait-form-main{flex:2 1 180px}
.ait-form-wide{flex:3 1 220px}
.ait-input{width:100%;padding:5px 8px}
.ait-noshrink{flex-shrink:0}
.ait-grow{flex:1}
.ait-managed-row{display:flex;align-items:center;gap:8px;padding:8px 16px;flex-wrap:wrap}
.ait-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:8px 16px;cursor:pointer;text-align:left}
.ait-derived{padding:4px 16px 10px}
.ait-chips{display:flex;flex-wrap:wrap;gap:5px}
.ait-bulk{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:6px 16px}
.ait-bulk-all{cursor:pointer}
.ait-bulk-actions{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
/* ── AI Tool Permissions: resumen visual, qué hacer y detalle (ATP4) ── */
.ait-ov{margin-bottom:14px}
.ait-ov-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.ait-ov-total{display:flex;align-items:baseline;gap:6px;flex-shrink:0}
.ait-ov-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-5)}
.ait-ov-k,.ait-sub{font-size:var(--text-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-subtle);margin-bottom:6px}
.ait-bar{display:flex;gap:2px;height:14px;margin-bottom:10px}
.ait-bar-empty{flex:1;border-radius:4px;background:var(--surface-sunken)}
.ait-seg{display:block;flex-basis:0;min-width:6px;height:100%;border-radius:4px;cursor:pointer;background:var(--text-muted);opacity:.92}
.ait-seg:hover{opacity:1}
.ait-seg.on{outline:2px solid var(--text-strong);outline-offset:1px;opacity:1}
.ait-seg.accent,.ait-dot.accent{background:var(--accent)}
.ait-seg.info,.ait-dot.info{background:var(--info)}
.ait-seg.danger,.ait-dot.danger{background:var(--danger)}
.ait-seg.ok,.ait-dot.ok{background:var(--ok)}
.ait-seg.warn,.ait-dot.warn{background:var(--warn)}
.ait-seg.muted,.ait-dot.muted{background:var(--text-muted)}
.ait-seg.faint,.ait-dot.faint{background:var(--border-strong)}
.ait-legend{display:flex;flex-wrap:wrap;gap:4px 12px}
.ait-leg{display:inline-flex;align-items:center;gap:6px;padding:2px 6px;border:0;border-radius:var(--radius-sm);background:none;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer}
.ait-leg:hover,.ait-leg.on{background:var(--surface-hover);color:var(--text-strong)}
.ait-leg b{color:var(--text-strong)}
.ait-dot{display:inline-block;flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--text-muted)}
.ait-todo{margin-bottom:14px}
.ait-todo-row{display:flex;align-items:flex-start;gap:10px;padding:10px 16px;flex-wrap:wrap}
.ait-todo-row>.ait-dot{margin-top:6px}
.ait-todo-main{flex:1 1 260px;min-width:0}
.ait-todo-acts{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ait-wrap{flex-wrap:wrap;gap:8px}
.ait-bench{text-align:right;max-width:260px}
.ait-activef{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ait-expl-list{display:flex;flex-direction:column;padding:4px 10px}
.ait-expl-row{display:grid;grid-template-columns:150px 1fr;gap:10px;padding:6px 0;border-bottom:1px solid var(--divider)}
.ait-expl-row:last-child{border-bottom:0}
.ait-expl-k{font-size:var(--text-xs);font-weight:600;color:var(--text-muted)}
.ait-det{margin-bottom:8px}
.ait-det-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--sp-5);margin-bottom:10px}
.ait-sig-row{margin-bottom:8px}
.ait-sig-top{display:flex;justify-content:space-between;gap:8px;margin-bottom:4px}
.ait-sig-bar{height:4px;border-radius:2px;background:var(--border)}
.ait-kv{display:grid;grid-template-columns:1fr 1fr;gap:3px 12px}
.ait-kv-row{display:flex;justify-content:space-between;padding:3px 0}
.ait-prop{margin-bottom:8px}
.ait-prop-row{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}
.ait-det-acts{display:flex;gap:8px}
.ait-foot-info{display:flex;gap:12px;flex-wrap:wrap;align-items:center;padding:0 2px 14px}
@media (max-width:640px){.ait-expl-row{grid-template-columns:1fr;gap:2px}}

/* — Notificaciones (pages-notifications.jsx): reglas de alerta, destinos e historial — solo tokens — */
.al-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-2);}
.al-chip{display:inline-flex;align-items:center;gap:var(--sp-2);padding:2px 8px;border:1px solid var(--border-strong);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-strong);font-size:var(--fs-xs);cursor:pointer;}
.al-chip:hover{border-color:var(--accent);}
.ntf-tabs{margin-bottom:var(--sp-4);}
.ntf-empty{padding:var(--sp-4);}
.ntf-picker{min-width:0;}
.ntf-name{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left;}
.ntf-name-t{display:inline-flex;align-items:center;gap:var(--sp-2);font-weight:600;color:var(--text-strong);}
.ntf-name-s{max-width:36ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-xs);font-weight:400;color:var(--text-muted);}
.ntf-chan{display:flex;flex-direction:column;gap:2px;min-width:0;}
.ntf-chan-n{display:inline-flex;align-items:center;gap:var(--sp-2);font-weight:500;color:var(--text-strong);}
.ntf-target{max-width:28ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-xs);color:var(--text-muted);}
.ntf-last{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1);}
.ntf-acts{display:inline-flex;justify-content:flex-end;gap:var(--sp-1);}
.ntf-ico{padding:4px 6px;}
.ntf-state{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1);}
.ntf-err{max-width:28ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-xs);color:var(--danger-fg);}
.ntf-why{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0;}
.ntf-why-s{color:var(--text);}
.ntf-reasons,.ntf-evs,.ntf-templates{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.ntf-fs{min-width:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:24px;}
.ntf-after{margin-top:24px;}
.ntf-sum{margin-bottom:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius);background:var(--surface-sunken);}
.ntf-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3);}
.ntf-checks{display:flex;flex-direction:column;gap:var(--sp-2);}
.ntf-check{display:flex;align-items:center;gap:var(--sp-3);cursor:pointer;}
.ntf-code{margin:0;padding:var(--sp-4);overflow:auto;border-radius:var(--radius-lg);background:var(--surface-sunken);font-size:var(--fs-xs);line-height:1.55;color:var(--text-strong);}
@media (max-width:640px){.ntf-grid3{grid-template-columns:1fr;}}

/* ---- Grupos de equipos (pages-device-groups.jsx) — solo tokens ---- */
.dg-tab{display:flex;flex-direction:column;gap:var(--sp-4);}
.dg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);}
.dg-name-cell{display:flex;flex-direction:column;gap:var(--sp-1);}
.dg-rules{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.dg-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);}
.dg-form{display:flex;flex-direction:column;gap:var(--sp-4);}
.dg-preview{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);}
.dg-preview-head{color:var(--text-strong);}
.dg-warn{display:flex;align-items:flex-start;gap:var(--sp-2);color:var(--text);}
.dg-problems{margin:0 0 var(--sp-2);padding-left:var(--sp-5);color:var(--danger-fg);}
.dg-members{display:flex;flex-direction:column;gap:var(--sp-2);}
.dg-chosen{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.pca-tab{display:flex;flex-direction:column;gap:var(--sp-4);}
.pca-head{display:flex;flex-direction:column;gap:var(--sp-2);}
.pca-mode{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);}
.pca-mode-actions{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--sp-3);}
.pca-validity{display:flex;flex-direction:column;gap:var(--sp-1);min-width:160px;}
.pca-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--sp-2);}
.pca-fp{overflow-wrap:anywhere;font-size:var(--fs-sm);}
.dg-member-list{display:flex;flex-direction:column;max-height:180px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius-sm);}
.dg-member-row{display:flex;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:transparent;border:0;color:var(--text);text-align:left;cursor:pointer;}
.dg-member-row:hover{background:var(--surface-hover);}
.dg-filter{display:flex;gap:var(--sp-2);}
.dg-filter .input{flex:1;}
.dg-filter .dg-os{flex:0 0 auto;width:auto;min-width:150px;}
.dg-bulk{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;}
.dg-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1);margin-top:var(--sp-1);}
.dg-notices{display:flex;flex-direction:column;gap:var(--sp-2);}
.dg-device{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-4);}

/* ── Actualizaciones del agente (pages-agent-update.jsx) — kit dx-*, solo tokens ── */
.aup-tab{display:flex;flex-direction:column;gap:var(--sp-4);}
.aup-banner{display:flex;flex-direction:column;gap:var(--sp-2);border-left:3px solid var(--warn);}
.aup-refs{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);}
.aup-refs-t{font-size:var(--text-xs);font-weight:600;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.04em;}
.aup-ref{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--text-sm);}
.aup-ref-p{min-width:72px;font-weight:600;color:var(--text-strong);}
.aup-ref .dx-chip b{margin-right:var(--sp-1);color:var(--text-strong);}
.aup-resolves{font-size:var(--fs-sm);color:var(--text-muted);}
.aup-count{min-width:var(--sp-6);text-align:right;color:var(--text-strong);white-space:nowrap;}
.aup-switch-cell{display:inline-flex;align-items:center;}
.aup-move{display:inline-flex;flex-direction:column;flex:0 0 auto;}
.aup-move .iconbtn{width:22px;height:18px;}
.aup-tab .pp-row-meta{flex-wrap:wrap;}
.aup-check{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--text);cursor:pointer;}
.aup-status{display:inline-flex;align-items:center;gap:var(--sp-2);}
.aup-badge-btn{padding:0;background:transparent;border:0;cursor:pointer;}
.aup-detail{display:flex;flex-direction:column;gap:var(--sp-4);}
.aup-note{padding:var(--sp-3);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);}
.aup-trace{margin:0;padding-left:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-1);color:var(--text);}
.aup-groups,.aup-k{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-2);}
.aup-preview{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);}
.aup-reorder.busy{opacity:.7;}

/* ── Actualizaciones del agente: panel de staff y freno (pages-agent-update-staff.jsx) — solo tokens ── */
.aus-tab{display:flex;flex-direction:column;gap:var(--sp-4);}
.aus-card{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);}
.aus-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);}
.aus-h{margin:0;font-size:var(--fs-md);font-weight:500;color:var(--text-strong);}
.aus-h4{margin:var(--sp-3) 0 var(--sp-2);font-size:var(--fs-base);font-weight:500;color:var(--text-strong);}
.aus-note{padding:var(--sp-3);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);}
.aus-form{display:flex;flex-direction:column;gap:var(--sp-4);}
.aus-ack{display:flex;align-items:center;gap:var(--sp-2);color:var(--text-strong);}
.aus-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.aus-switch{display:flex;align-items:center;gap:var(--sp-3);}
.aus-distro{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);}
.aus-actions{text-align:right;white-space:nowrap;}
/* — Equipos de organizaciones suspendidas (WP11): aviso, migración y baja (solo staff) — */
.ot-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);margin-top:var(--sp-2);}
.ot-banner{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-4);}
.ot-drawer{display:flex;flex-direction:column;gap:var(--sp-4);}
.ot-scroll{max-height:260px;overflow:auto;border:1px solid var(--divider);border-radius:var(--r-md);}
.ot-list{margin:var(--sp-2) 0 0;padding-left:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-1);}
.ot-all{display:flex;align-items:center;gap:var(--sp-2);}
.ot-blk{display:block;white-space:normal;}

/* ======================================================================
   Detección — detalle (kit dx-*, ui.jsx: DetailDrawer, DxHead, DxFacts…)
   Un cajón común para detecciones, informes de usuarios, incidentes y
   reglas de correlación. Raíl de severidad a la izquierda (data-tone),
   cabecera que cuenta qué pasó, cuerpo por secciones, acciones en el pie.
   ====================================================================== */
.drawer.dx-drawer{width:min(640px,100vw);box-shadow:var(--sh-xl);--dx-tone:var(--border-strong);}
/* Un cajón CERRADO espera fuera de pantalla (translateX(100%)) pero su sombra (blur 32px) asomaba por el borde derecho de todas las pantallas. */
.drawer:not(.open),.drawer.dx-drawer:not(.open){box-shadow:none;}
.drawer.dx-drawer.dx-wide{width:min(820px,100vw);}
.dx-drawer[data-tone=critical]{--dx-tone:var(--danger);}
.dx-drawer[data-tone=high]{--dx-tone:var(--warn);}
.dx-drawer[data-tone=medium]{--dx-tone:var(--info);}
.dx-drawer[data-tone=low]{--dx-tone:var(--ok);}
.dx-drawer::before{content:'';position:absolute;left:-1px;top:0;bottom:0;width:3px;background:var(--dx-tone);z-index:1;}
.dx-drawer .drawer-head{padding:20px 24px 16px 26px;border-bottom:1px solid var(--divider);}
.dx-drawer .drawer-head.has-head > .iconbtn{margin:-6px -8px 0 0;}
.dx-drawer .drawer-body{padding:22px 24px 32px 26px;display:flex;flex-direction:column;gap:28px;}
.dx-drawer .drawer-foot{padding:12px 24px 12px 26px;align-items:center;}
.dx-drawer .btn{transition:transform .16s var(--ease-out),background .14s,color .14s,border-color .14s;}
.dx-drawer .btn:active:not(:disabled){transform:scale(.97);}
.dx-foot-meta{margin-right:auto;font-size:var(--text-xs);color:var(--text-subtle);display:inline-flex;align-items:center;gap:6px;min-width:0;}

/* cabecera */
.dx-head{min-width:0;}
.dx-kicker{display:flex;align-items:center;gap:7px;font-size:var(--text-xs);font-weight:500;color:var(--text-muted);min-height:22px;}
.dx-kicker > .th-ico{color:var(--dx-tone);}
.dx-id{display:inline-flex;align-items:center;gap:6px;margin-left:4px;padding:2px 6px;border-radius:var(--r-sm);color:var(--text-subtle);font-size:var(--text-xs);transition:background .14s,color .14s;}
.dx-id:hover{background:var(--surface-2);color:var(--text);}
.dx-id:focus-visible{outline:none;box-shadow:var(--focus);}
.dx-title{margin-top:8px;font-size:var(--text-xl);font-weight:600;line-height:1.3;letter-spacing:-.01em;color:var(--text-strong);text-wrap:balance;overflow-wrap:anywhere;}
.dx-title-sub{display:block;margin-top:3px;font-size:var(--text-sm);font-weight:400;letter-spacing:0;color:var(--text-muted);}
.dx-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px;}
.dx-chip{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:var(--r-md);font-size:var(--text-xs);font-weight:500;line-height:1;white-space:nowrap;background:var(--surface-2);color:var(--text);}
.dx-chip-quiet{background:transparent;color:var(--text-subtle);padding:0 4px;}
.dx-chip.dx-sev-critical,.dx-chip.dx-tone-danger{background:var(--danger-soft);color:var(--danger-fg);}
.dx-chip.dx-sev-high,.dx-chip.dx-tone-warn{background:var(--warn-soft);color:var(--warn-fg);}
.dx-chip.dx-sev-medium,.dx-chip.dx-tone-info{background:var(--info-soft);color:var(--info-fg);}
.dx-chip.dx-sev-low,.dx-chip.dx-tone-ok{background:var(--ok-soft);color:var(--ok-fg);}
.dx-chip.dx-tone-accent{background:var(--accent-soft);color:var(--accent-strong);}
.dx-chip.dx-outline{background:transparent;box-shadow:inset 0 0 0 1px var(--border-strong);color:var(--text-muted);}

/* hechos: quién / dónde / cuándo / por dónde */
.dx-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 18px;margin:16px 0 0;padding:14px 0 0;border-top:1px dashed var(--divider);}
.dx-fact{min-width:0;}
.dx-fact dt{display:flex;align-items:center;gap:5px;margin:0 0 3px;font-size:var(--text-xs);color:var(--text-subtle);}
.dx-fact dd{margin:0;font-size:var(--text-sm);font-weight:500;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dx-fact dd.dx-fact-sub{font-weight:400;font-size:var(--text-xs);color:var(--text-muted);margin-top:1px;}

/* pestañas del detalle (dentro de la cabecera) */
.dx-tabs{display:flex;gap:4px;margin:16px 0 -17px;overflow-x:auto;scrollbar-width:none;}
.dx-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 10px 10px;font-size:var(--text-sm);font-weight:500;color:var(--text-muted);border-bottom:2px solid transparent;white-space:nowrap;transition:color .14s;}
.dx-tab:hover{color:var(--text);}
.dx-tab.on{color:var(--text-strong);border-bottom-color:var(--accent);}
.dx-tab:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}

/* secciones */
.dx-sec{min-width:0;}
.dx-sec-h{display:flex;align-items:center;gap:8px;margin-bottom:10px;min-height:24px;}
.dx-sec-h h3{margin:0;font-size:var(--text-base);font-weight:600;color:var(--text-strong);}
.dx-sec-ico{display:inline-grid;place-items:center;color:var(--text-muted);}
.dx-sec-aside{margin-left:auto;display:flex;align-items:center;gap:6px;}
.dx-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-muted);font-size:var(--text-2xs);font-weight:600;font-variant-numeric:tabular-nums;}
.dx-lead{margin:0 0 10px;font-size:var(--text-xs);line-height:1.5;color:var(--text-muted);}

/* veredicto: qué decidió la política y cuánto riesgo */
.dx-verdict{--dx-v:var(--text-muted);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--r-xl);background:color-mix(in srgb,var(--dx-v) 8%,var(--surface-sunken));border:1px solid color-mix(in srgb,var(--dx-v) 26%,transparent);}
.dx-verdict.dx-tone-danger{--dx-v:var(--danger);}
.dx-verdict.dx-tone-warn{--dx-v:var(--warn);}
.dx-verdict.dx-tone-info{--dx-v:var(--info);}
.dx-verdict.dx-tone-ok{--dx-v:var(--ok);}
.dx-verdict-ico{width:40px;height:40px;border-radius:var(--r-lg);display:grid;place-items:center;background:color-mix(in srgb,var(--dx-v) 18%,transparent);color:var(--dx-v);}
.dx-verdict-t{font-size:var(--text-md);font-weight:600;color:var(--text-strong);line-height:1.3;}
.dx-verdict-d{margin-top:2px;font-size:var(--text-xs);line-height:1.45;color:var(--text-muted);}
.dx-verdict-x{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}

/* medidor de riesgo con las cuatro bandas canónicas */
.dx-risk{--dx-b:var(--text-muted);width:148px;}
.dx-risk.dx-band-low{--dx-b:var(--ok);}
.dx-risk.dx-band-medium{--dx-b:var(--warn);}
.dx-risk.dx-band-high{--dx-b:var(--orange-500);}
.dx-risk.dx-band-critical{--dx-b:var(--danger);}
.dx-risk-top{display:flex;align-items:flex-end;gap:8px;}
.dx-risk-n{font-size:var(--text-2xl);font-weight:600;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text-strong);}
.dx-risk-l{display:flex;flex-direction:column;font-size:var(--text-2xs);color:var(--text-muted);line-height:1.25;}
.dx-risk-l b{font-size:var(--text-xs);font-weight:600;color:var(--dx-b);}
.dx-risk-scale{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:2px;height:4px;margin-top:9px;}
.dx-risk-scale i{border-radius:2px;opacity:.4;}
.dx-risk-scale i:nth-child(1){background:var(--ok);}
.dx-risk-scale i:nth-child(2){background:var(--warn);}
.dx-risk-scale i:nth-child(3){background:var(--orange-500);}
.dx-risk-scale i:nth-child(4){background:var(--danger);}
.dx-risk-mark{position:absolute;top:-4px;left:var(--dx-pos);width:3px;height:12px;border-radius:2px;background:var(--text-strong);box-shadow:0 0 0 2px var(--surface-sunken);transform:translateX(-50%);}

/* hallazgos */
.dx-findings{list-style:none;margin:0;padding:0;border-radius:var(--r-lg);border:1px solid var(--border);overflow:hidden;}
.dx-finding{--dx-f:var(--border-strong);display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:10px 14px;border-left:3px solid var(--dx-f);background:var(--surface);}
.dx-finding + .dx-finding{border-top:1px solid var(--divider);}
.dx-finding.dx-sev-critical{--dx-f:var(--danger);}
.dx-finding.dx-sev-high{--dx-f:var(--warn);}
.dx-finding.dx-sev-medium{--dx-f:var(--info);}
.dx-finding.dx-sev-low{--dx-f:var(--ok);}
.dx-finding-t{font-size:var(--text-sm);font-weight:500;color:var(--text-strong);overflow-wrap:anywhere;}
.dx-finding-m{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:3px;font-size:var(--text-xs);color:var(--text-muted);}
.dx-finding-m .mono{overflow-wrap:anywhere;}
.dx-finding-r{display:flex;align-items:center;gap:8px;}
.dx-score{display:inline-flex;flex-direction:column;align-items:flex-end;font-size:var(--text-2xs);color:var(--text-subtle);line-height:1.15;}
.dx-score b{font-size:var(--text-sm);font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;}

/* evidencia: el fragmento redactado es el protagonista */
.dx-evidence{border-radius:var(--r-lg);background:var(--surface-sunken);border:1px solid var(--border);overflow:hidden;}
.dx-evidence-h{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px dashed var(--border-strong);font-size:var(--text-xs);color:var(--text-muted);}
.dx-evidence-h .dx-sec-aside{margin-left:auto;}
.dx-evidence-body{margin:0;padding:14px 16px;max-height:320px;overflow:auto;font-size:var(--text-md);line-height:1.75;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;}
.dx-redact{font-family:var(--font-mono);font-size:.86em;letter-spacing:0;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:1px 4px;border-radius:3px;background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn-fg);box-shadow:inset 0 -1px 0 color-mix(in srgb,var(--warn) 60%,transparent);}
.dx-evidence.is-raw{border-color:color-mix(in srgb,var(--warn) 50%,transparent);margin-top:10px;}
.dx-evidence.is-raw .dx-evidence-h{background:var(--warn-soft);color:var(--warn-fg);border-bottom-style:solid;border-bottom-color:color-mix(in srgb,var(--warn) 35%,transparent);font-weight:500;}
.dx-evidence-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid var(--divider);font-size:var(--text-xs);color:var(--text-subtle);}
.dx-evidence-foot .btn{margin-left:auto;}

/* mantener pulsado para confirmar (revelar sin redactar) */
.dx-hold{position:relative;overflow:hidden;isolation:isolate;user-select:none;-webkit-user-select:none;touch-action:none;}
.dx-hold-fill{position:absolute;inset:0;z-index:-1;background:color-mix(in srgb,var(--warn) 26%,transparent);clip-path:inset(0 100% 0 0);transition:clip-path .2s var(--ease-out);}
.dx-hold.is-holding .dx-hold-fill{clip-path:inset(0 0 0 0);transition:clip-path var(--dx-hold,900ms) linear;}
.dx-hold-label{display:inline-flex;align-items:center;gap:6px;}

/* cumplimiento, agrupado por marco */
.dx-frameworks{display:grid;gap:8px;}
.dx-fw{display:grid;grid-template-columns:96px 1fr;align-items:baseline;gap:10px;}
.dx-fw-n{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.dx-fw-c{display:flex;flex-wrap:wrap;gap:5px;}
.dx-code{display:inline-flex;align-items:center;padding:2px 7px;border-radius:var(--r-sm);font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text);box-shadow:inset 0 0 0 1px var(--border-strong);cursor:help;}

/* datos técnicos (plegables) */
.dx-more > summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;font-size:var(--text-base);font-weight:600;color:var(--text-strong);padding:2px 0;}
.dx-more > summary::-webkit-details-marker{display:none;}
.dx-more > summary .dx-chev{margin-left:auto;color:var(--text-subtle);transition:transform .2s var(--ease-out);}
.dx-more[open] > summary .dx-chev{transform:rotate(180deg);}
.dx-more > summary:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.dx-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px;margin:12px 0 0;}
.dx-kv dt{font-size:var(--text-xs);color:var(--text-subtle);margin-bottom:2px;}
.dx-kv dd{margin:0;font-size:var(--text-sm);color:var(--text-strong);overflow-wrap:anywhere;}
.dx-kv dd.mono{font-size:var(--text-xs);}
.dx-kv-sub{display:block;margin-top:2px;font-family:var(--font-sans);font-size:var(--text-xs);color:var(--text-muted);}

/* estado vacío con dirección */
.dx-empty{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border:1px dashed var(--border-strong);border-radius:var(--r-lg);}
.dx-empty-ico{flex-shrink:0;width:30px;height:30px;border-radius:var(--r-md);display:grid;place-items:center;background:var(--surface-2);color:var(--text-muted);}
.dx-empty-t{font-size:var(--text-sm);font-weight:500;color:var(--text);}
.dx-empty-h{margin-top:2px;font-size:var(--text-xs);line-height:1.5;color:var(--text-muted);}
.dx-empty-a{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;}

/* cronología */
.dx-tl{list-style:none;margin:0;padding:0;}
.dx-tl-item{--dx-n:var(--text-muted);position:relative;display:grid;grid-template-columns:24px 1fr;gap:10px;padding-bottom:14px;}
.dx-tl-item::before{content:'';position:absolute;left:11.5px;top:26px;bottom:2px;width:1px;background:var(--divider);}
.dx-tl-item:last-child{padding-bottom:0;}
.dx-tl-item:last-child::before{display:none;}
.dx-tl-item.dx-tone-danger{--dx-n:var(--danger);}
.dx-tl-item.dx-tone-warn{--dx-n:var(--warn);}
.dx-tl-item.dx-tone-info{--dx-n:var(--info);}
.dx-tl-item.dx-tone-ok{--dx-n:var(--ok);}
.dx-tl-item.dx-tone-accent{--dx-n:var(--accent);}
.dx-tl-node{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:var(--dx-n);background:color-mix(in srgb,var(--dx-n) 14%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dx-n) 40%,transparent);}
.dx-tl-body{min-width:0;padding-top:3px;}
.dx-tl-t{display:flex;align-items:baseline;gap:8px;font-size:var(--text-sm);font-weight:500;color:var(--text-strong);}
.dx-tl-t time{margin-left:auto;flex-shrink:0;font-size:var(--text-xs);font-weight:400;color:var(--text-subtle);font-variant-numeric:tabular-nums;}
.dx-tl-d{margin-top:2px;font-size:var(--text-xs);line-height:1.5;color:var(--text-muted);overflow-wrap:anywhere;}

/* fila seleccionada de una lista con su detalle abierto */
.th-icons-on tr.is-sel > td{background:var(--accent-softer);}
.th-icons-on tr.is-sel > td:first-child{box-shadow:inset 3px 0 0 var(--accent);}

@media (max-width:640px){
  .dx-drawer .drawer-head{padding:16px 16px 14px 18px;}
  .dx-drawer .drawer-body{padding:18px 16px 26px 18px;}
  .dx-drawer .drawer-foot{padding:10px 16px 10px 18px;flex-wrap:wrap;}
  .dx-verdict{grid-template-columns:auto 1fr;}
  .dx-verdict .dx-risk{grid-column:1 / -1;width:auto;}
  .dx-kv{grid-template-columns:1fr;}
  .dx-facts{grid-template-columns:repeat(2,minmax(0,1fr));}
  .dx-fw{grid-template-columns:1fr;gap:4px;}
}
.dx-frag + .dx-frag{margin-top:18px;}
.dx-frag-err{margin-top:8px;}
.dx-drawer .op-banner{margin:0;}
.dx-anchor{display:none;}

/* ---------- Detección — reportes de usuario y falsos negativos (entrega 2) ---------- */
/* La voz de la persona: su comentario como cita, firmado. Es el momento del detalle. */
.dx-quote{position:relative;margin:0;padding:16px 18px 14px 22px;border-radius:var(--r-xl);background:var(--surface-2);}
.dx-quote::before{content:'';position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 2px 2px 0;background:var(--accent);}
.dx-quote blockquote{margin:0;font-size:var(--text-lg);line-height:1.55;color:var(--text-strong);white-space:pre-wrap;overflow-wrap:anywhere;text-wrap:pretty;}
.dx-quote figcaption{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:var(--text-xs);color:var(--text-muted);}
.dx-quote figcaption time{margin-left:auto;color:var(--text-subtle);font-variant-numeric:tabular-nums;}
.dx-quote-av{width:22px;height:22px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;font-size:var(--text-xs);font-weight:600;background:var(--accent-soft);color:var(--accent-strong);}
.dx-masked{color:var(--danger-fg);letter-spacing:.02em;}
.dx-foot-field{display:inline-flex;align-items:center;gap:8px;margin-right:auto;font-size:var(--text-xs);color:var(--text-muted);}
.dx-foot-field .input{width:auto;min-width:96px;}
.dx-note-field{display:flex;flex-direction:column;gap:6px;margin-top:14px;font-size:var(--text-xs);font-weight:500;color:var(--text-muted);}
.dx-textarea{resize:vertical;width:100%;}
.dx-evidence-note{margin:0;padding:10px 16px 0;font-size:var(--text-xs);line-height:1.5;color:var(--text-muted);}
.dx-evidence-part{padding-bottom:4px;}
.dx-evidence-part + .dx-evidence-part{border-top:1px solid var(--divider);}
.dx-evidence-k{display:flex;align-items:center;gap:8px;padding:10px 16px 0;font-size:var(--text-xs);font-weight:500;color:var(--text-muted);}
.dx-evidence-k time{margin-left:auto;font-weight:400;color:var(--text-subtle);font-variant-numeric:tabular-nums;}
.dx-raw-line{display:flex;align-items:baseline;gap:10px;padding:6px 16px;font-size:var(--text-sm);color:var(--text-strong);overflow-wrap:anywhere;}
.dx-raw-k{flex-shrink:0;font-size:var(--text-xs);color:var(--text-subtle);}
.dx-evidence-part > .dx-raw-k{display:block;padding:8px 16px 0;}
.dx-inline-cta{display:flex;align-items:center;gap:10px;margin-top:12px;padding:10px 12px;border-radius:var(--r-lg);border:1px dashed var(--border-strong);font-size:var(--text-xs);line-height:1.45;color:var(--text-muted);}
.dx-inline-cta > svg{flex-shrink:0;color:var(--accent);}
.dx-inline-cta > span{flex:1;min-width:0;}
.dx-btnrow{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;}
.dx-tl-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;}
.dx-tl-row .btn{margin-left:auto;}
.dx-stack{display:flex;flex-direction:column;gap:16px;}
.dx-stack > .dx-note-field{margin-top:0;}
.dx-finding.dx-pick{grid-template-columns:auto 1fr auto;cursor:pointer;transition:background .14s;}
.dx-pick input{width:15px;height:15px;margin:0;accent-color:var(--danger);}
.dx-pick.on{background:color-mix(in srgb,var(--danger) 7%,var(--surface));}
/* Lista a ancho completo cuando el detalle vive en el cajón (Informes / FN). */
.inc-layout.is-solo{grid-template-columns:minmax(0,1fr);}
.inc-layout.is-solo .inc-list-pane{position:static;max-height:none;}
.inc-layout.is-solo .inc-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-content:start;overflow:visible;max-height:none;padding:10px;}
.inc-layout.is-solo .inc-list > .dx-empty{grid-column:1 / -1;}
.inc-card-cta{color:var(--accent);}
.inc-layout.is-solo .inc-card-title{overflow-wrap:anywhere;}
.inc-sev-rail[data-fn="open"]{background:var(--coral-500);}
.inc-sev-rail[data-fn="reviewed"]{background:var(--teal-500);}
/* Con el cajón abierto (no modal) la página deja sitio a su derecha: la lista
   sigue a la vista y se puede pasar de un elemento a otro sin cerrarlo. */
@media (min-width:1280px){.kl-content.dx-dockable:has(.dx-drawer.open){padding-right:calc(640px + 26px);}}
@media (max-width:640px){.dx-foot-field{margin-right:0;width:100%;}}
/* ── Incidentes en tabla + vistas de seguimiento (ronda 2 de Detección) ──────── */
.inc-tracks-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;margin:0 0 14px;border-bottom:1px solid var(--divider);}
.inc-tracks{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;min-width:0;}
@media (min-width:900px){.inc-tracks{flex-wrap:wrap;overflow-x:visible;}}
.inc-track{display:inline-flex;align-items:center;gap:6px;padding:8px 10px 10px;font-size:var(--text-sm);font-weight:500;color:var(--text-muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color .14s,border-color .14s;}
.inc-track:hover{color:var(--text);}
.inc-track.on{color:var(--text-strong);border-bottom-color:var(--accent);}
.inc-track:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.inc-track-n{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:0 6px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-muted);font-size:var(--text-2xs);font-weight:600;}
.inc-track.on .inc-track-n{background:var(--accent-soft);color:var(--accent-strong);}
/* «Críticos sin actividad»: la vista que más importa, siempre destacada. */
.inc-track.hot{font-weight:600;color:var(--text);}
.inc-track.hot.is-alert{color:var(--danger-fg);}
.inc-track.hot.is-alert .inc-track-n{background:var(--danger-soft);color:var(--danger-fg);}
.inc-track.hot.on{border-bottom-color:var(--danger);}
.inc-track-cfg{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-bottom:8px;}
.inc-track-cfg-f{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs);color:var(--text-subtle);}
.select.inc-track-sel{padding:4px 26px 4px 9px;font-size:var(--text-xs);background-position:right 7px center;}
.input.inc-track-num{width:72px;padding:4px 8px;font-size:var(--text-xs);}
.inc-fbar-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.inc-fbar-clear{margin-left:auto;}

.inc-tbl-card{padding:0;}
.inc-tbl-card > .inc-list-tools{display:flex;align-items:center;gap:12px;}
.inc-tbl-card > .inc-list-tools .searchbox{flex:1;max-width:420px;}
.inc-list-count{margin-left:auto;font-size:var(--text-xs);color:var(--text-subtle);}
.inc-tbl-wrap{container-type:inline-size;overflow-x:clip;}
.inc-tbl{width:100%;border-collapse:separate;border-spacing:0;}
.inc-tbl thead th{top:48px;z-index:2;padding:8px 10px;}
.inc-tbl thead th.c-title{padding-left:16px;}
.inc-tbl tbody td{padding:9px 10px;vertical-align:top;}
.inc-tbl tbody td.c-title{position:relative;padding-left:16px;min-width:260px;}
.inc-tbl thead th.c-title{width:34%;}
.inc-tbl tbody tr.inc-row{cursor:pointer;}
.inc-tbl .inc-sev-rail{width:3px;}
.inc-tbl .c-sel{width:34px;padding-right:0;}
.inc-tbl thead th.c-sel{padding-right:0;}
.inc-tbl .c-qa{width:1%;}
.inc-bulk{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-2) 16px;background:var(--accent-softer);border-bottom:1px solid var(--border);}
.inc-bulk-n{font-weight:600;color:var(--text-strong);}
.inc-tbl td:not(.c-title){white-space:nowrap;}
.inc-tbl .truncate{max-width:150px;display:inline-block;vertical-align:bottom;}
.inc-row-main{display:flex;align-items:baseline;gap:8px;width:100%;text-align:left;color:var(--text-strong);min-width:0;}
.inc-row-main:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.inc-row-id{flex-shrink:0;font-size:var(--text-2xs);color:var(--text-muted);font-weight:600;}
.inc-row-t{font-size:var(--text-sm);font-weight:600;line-height:1.35;overflow-wrap:anywhere;}
.inc-row-sub{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:5px;}
.inc-row-sub:empty{display:none;}
.inc-row-sub .badge{font-size:var(--fs-2xs);}
.inc-row-sub .inc-cluster-toggle{width:auto;margin:0;padding:0;font-size:var(--text-xs);}
.inc-row-stale{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:var(--r-pill);font-size:var(--text-2xs);font-weight:600;color:var(--danger-fg);background:var(--danger-soft);}
.inc-row.is-nested td.c-title{padding-left:34px;}
.inc-row.is-nested td.c-title::before{content:"";position:absolute;left:18px;top:0;bottom:0;border-left:2px solid var(--accent-soft);}
.inc-row.is-nested > td{background:var(--surface-sunken);}
.inc-row.is-ctx .inc-row-main{opacity:.72;}
.inc-cell-who,.inc-cell-ai{display:inline-flex;align-items:center;gap:6px;max-width:100%;}
.inc-cell-host{display:block;max-width:100%;font-size:var(--text-2xs);color:var(--text-muted);}
.dx-th-sort{display:inline-flex;align-items:center;gap:4px;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;}
.dx-th-sort:hover,.dx-th-sort.on{color:var(--text);}
.dx-th-sort:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.dx-th-caret{font-size:9px;opacity:.7;}
.inc-tbl tbody tr.inc-day > th{padding:14px 16px 5px;text-align:left;font-size:var(--text-xs);font-weight:600;color:var(--text-subtle);border-bottom:1px solid var(--divider);background:var(--surface);}
.inc-tbl tbody tr.inc-day:hover,.inc-tbl tbody tr.inc-tbl-msg:hover{background:transparent;}
.inc-tbl-more{display:flex;justify-content:center;padding:10px;border-top:1px solid var(--divider);}
.dx-when{display:inline-flex;flex-direction:column;line-height:1.3;font-variant-numeric:tabular-nums;}
.dx-when-main{font-size:var(--text-xs);color:var(--text);}
.dx-when-sub{font-size:var(--text-2xs);color:var(--text-subtle);}
.dx-when-none{color:var(--text-subtle);}
/* Columnas secundarias fuera según el ancho REAL de la tabla (con el cajón
   acoplado a 1280 px queda poco sitio): primero lo que se ve en el cajón. */
.inc-row-st{display:none;}
@container (max-width:1380px){.inc-tbl .c-n{display:none;}}
@container (max-width:1180px){.inc-tbl .c-asg{display:none;}}
@container (max-width:1020px){.inc-tbl .c-ai,.inc-tbl .c-risk{display:none;}}
@container (max-width:860px){.inc-tbl .c-who,.inc-tbl .c-sev{display:none;}}
@container (max-width:700px){.inc-tbl .c-open{display:none;}}
@container (max-width:560px){.inc-tbl .c-sla,.inc-tbl .c-st{display:none;}.inc-row-st{display:inline-flex;}.inc-tbl tbody td.c-title{min-width:0;}.inc-tbl thead th.c-title{width:auto;}.inc-tbl thead th.c-act{width:96px;}.inc-row-main{flex-wrap:wrap;gap:2px 8px;}.inc-tbl thead th.c-act{white-space:normal;}.inc-tbl .c-act{min-width:0;}}
.inc-track-l{line-height:1.2;}
.inc-tbl .c-act,.inc-tbl .c-open{min-width:88px;}
/* ── Detecciones: tabla en el mismo lenguaje que Incidentes (ronda 2 · entrega 2) ── */
.ev-tbl-card{overflow:clip;padding:0;}
.ev-tbl-wrap{container-type:inline-size;overflow-x:clip;border-radius:inherit;}
.uc-text{min-width:0;}
.uc-text .uc-line{max-width:160px;}
.ev-tbl .c-user{max-width:260px;}
.ev-tbl .c-find{min-width:120px;width:30%;}
.ev-tbl{width:100%;border-collapse:separate;border-spacing:0;}
.ev-tbl thead th{top:48px;z-index:2;padding:8px 10px;}
.ev-tbl tbody td{padding:9px 10px;}
.ev-tbl tbody tr.row-selectable{cursor:pointer;}
.ev-tbl tbody tr.sel > td{background:var(--accent-soft);}
.ev-tbl tbody tr.is-day-start > td{border-top:1px solid var(--border-strong);}
.ev-tbl tbody tr:first-child.is-day-start > td{border-top:0;}
.ev-tbl tbody tr > td:first-child{position:relative;}
.ev-tbl tbody tr[data-sev="critical"] > td:first-child{box-shadow:inset 3px 0 0 var(--danger);}
.ev-tbl tbody tr[data-sev="high"] > td:first-child{box-shadow:inset 3px 0 0 var(--warn);}
.ev-tbl tbody tr.is-sel > td:first-child{box-shadow:inset 3px 0 0 var(--accent);}
.ev-tbl .c-time{white-space:nowrap;}
.ev-day{display:block;margin-bottom:3px;font-size:var(--text-2xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);}
.ev-tbl .c-pick,.ev-tbl .c-go{width:30px;}
.ev-pick{cursor:pointer;}
.ev-pick.is-passive{pointer-events:none;}
.ev-cell-user,.ev-cell-ai,.ev-cell-actor{display:inline-flex;align-items:center;gap:6px;min-width:0;}
.ev-cell-actor{flex-wrap:wrap;}
.ev-cell-stack{display:inline-flex;flex-direction:column;min-width:0;}
.ev-find{gap:4px;}
/* Los chips no ensanchan la columna: el bloque no aporta ancho mínimo y recorta con «…». */
.ev-tbl .c-find .pm-chips{width:0;min-width:100%;}
.ev-tbl .c-find .badge{max-width:100%;min-width:0;white-space:nowrap;overflow:hidden;}
.ev-find-lbl{min-width:0;overflow:hidden;text-overflow:ellipsis;}
.ev-tbl .c-dev{max-width:160px;}
.ev-tbl .c-sev .dx-chip,.ev-tbl .c-act .dx-chip{height:20px;}
/* Columnas secundarias fuera según el ancho real de la tabla (con el cajón acoplado). */
@container (max-width:1260px){.ev-tbl .c-dev{display:none;}}
@container (max-width:1000px){.ev-tbl .c-actor{display:none;}}
@container (max-width:900px){.ev-tbl .c-intent{display:none;}}
@container (max-width:860px){.ev-tbl .c-risk,.ev-tbl .c-go{display:none;}}
@container (max-width:740px){.ev-tbl .c-ai .muted{display:none;}}
@container (max-width:620px){.ev-tbl .c-ai,.ev-tbl .c-sev{display:none;}.ev-tbl .c-user .kl-avatar{display:none;}.ev-tbl .uc-text .uc-line,.ev-tbl .ev-cell-stack > span{max-width:120px;}.ev-tbl .ev-cell-stack > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ev-tbl .c-find{min-width:96px;width:36%;}}
@container (max-width:480px){.ev-tbl .c-act{display:none;}}
@container (max-width:380px){.ev-tbl .c-user{display:none;}}
/* ── Informes de usuarios (Reportes y Falsos negativos): misma tabla (ronda 2 · entrega 3) ── */
.rp-tbl-card{overflow:clip;}
.rp-kpis{margin-bottom:16px;}
.rp-feedback{margin-bottom:12px;}
.rp-feedback.is-ok{border-color:color-mix(in srgb, var(--ok) 25%, transparent);}
.rp-feedback.is-err{border-color:color-mix(in srgb, var(--danger) 25%, transparent);}
.rp-feedback-msg{flex:1;}
.rp-clear{margin-left:auto;}
.rp-domain{padding:5px 10px;width:180px;}
.rp-count{margin-left:auto;font-size:var(--text-xs);color:var(--text-subtle);font-variant-numeric:tabular-nums;}
.rp-tbl-wrap{container-type:inline-size;overflow-x:clip;}
.rp-tbl{width:100%;border-collapse:separate;border-spacing:0;}
.rp-tbl thead th{top:48px;z-index:2;padding:8px 10px;}
.rp-tbl tbody td{padding:9px 10px;vertical-align:middle;}
.rp-tbl tbody tr.rp-row{cursor:pointer;}
.rp-tbl tbody tr.is-sel > td{background:var(--accent-softer);}
.rp-tbl tbody tr[data-sev="critical"] > td:first-child{box-shadow:inset 3px 0 0 var(--danger);}
.rp-tbl tbody tr[data-sev="high"] > td:first-child{box-shadow:inset 3px 0 0 var(--warn);}
.rp-tbl tbody tr.is-sel > td:first-child{box-shadow:inset 3px 0 0 var(--accent);}
.rp-tbl .c-time{white-space:nowrap;width:120px;}
.rp-tbl .c-title{min-width:160px;width:40%;}
.rp-tbl .c-pri,.rp-tbl .c-st,.rp-tbl .c-actor{white-space:nowrap;}
.rp-tbl .c-web{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);}
.rp-row-main{display:block;width:100%;padding:0;border:0;background:transparent;font:inherit;font-weight:600;color:var(--text-strong);text-align:left;cursor:pointer;overflow-wrap:anywhere;}
.rp-row-main.mono{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;}
.rp-row-main:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.rp-sub{display:block;margin-top:2px;font-size:var(--text-xs);color:var(--text-subtle);}
.rp-cta{color:var(--accent);}
/* Vistas de seguimiento (Reportes y Falsos negativos): subfila con el dominio y la marca de antigüedad,
   separadores de día como en Incidentes y columna «Última actividad». */
.rp-subrow{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;margin-top:3px;}
.rp-subrow .rp-sub{margin-top:0;}
.inc-row-stale.is-soft{color:var(--text-muted);background:var(--surface-2);}
.rp-tbl tbody tr.inc-day > th{padding:14px 10px 5px;text-align:left;font-size:var(--text-xs);font-weight:600;color:var(--text-subtle);border-bottom:1px solid var(--divider);background:var(--surface);}
.rp-tbl tbody tr.inc-day:hover{background:transparent;}
.rp-tbl .c-act{white-space:nowrap;min-width:88px;}
@container (max-width:900px){.rp-tbl .c-actor{display:none;}}
@container (max-width:700px){.rp-tbl .c-act{display:none;}}
@container (max-width:760px){.rp-tbl .c-pri{display:none;}}
@container (max-width:620px){.rp-tbl .c-who .kl-avatar{display:none;}.rp-tbl .uc-text .uc-line{max-width:110px;}.rp-tbl .c-web{max-width:120px;}.rp-tbl .c-title{min-width:120px;}}
@container (max-width:520px){.rp-tbl .c-who,.rp-tbl .c-web{display:none;}}
@container (max-width:380px){.rp-tbl .c-st{display:none;}}
/* ── Kit de listas (dx-*) — Políticas · Biblioteca de detección · Notificaciones ──────────────────
   Primitivos de ui.jsx (bloque «Kit de listas»): DxViews, DxToolbar, DxKpiBar, DxTable, DxToggle,
   DxModeChip, DxConditionSummary, DxFormSection/DxField, DxConfirm, DxEditDrawer. Solo tokens, sin
   estilo en línea. El kit pone `th-icons-on` en sus raíces: los iconos se ven fuera de Detección
   (D7 solo los oculta fuera del rail). Reglas base ANTES de las @container (misma especificidad). */

/* Cabecera de pantalla (DxPageHead): h1 + frase a la izquierda; acciones arriba a la derecha, la PRINCIPAL la última.
   Los huecos son `display:contents`: lo que se teletransporta (DxPrimaryAction/DxHeadAction) se alinea como hijo directo. */
.kl-page-head.dx-page-head{flex-wrap:wrap;align-items:flex-start;}
.dx-page-head-t{flex:1 1 340px;min-width:0;}
.dx-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-left:auto;}
.dx-head-sec,.dx-head-pri{display:contents;}
.dx-head-btn{white-space:nowrap;}
.kl-page-head .lede.ev-lede{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:none;}

/* Vistas con contador (DxViews) */
.dx-views-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;margin:0 0 14px;border-bottom:1px solid var(--divider);}
.dx-views{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;min-width:0;}
@media (min-width:900px){.dx-views{flex-wrap:wrap;overflow-x:visible;}}
.dx-view{display:inline-flex;align-items:center;gap:6px;padding:8px 10px 10px;font-size:var(--text-sm);font-weight:500;color:var(--text-muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color .14s,border-color .14s;}
.dx-view:hover{color:var(--text);}
.dx-view.on{color:var(--text-strong);border-bottom-color:var(--accent);}
.dx-view:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.dx-view:disabled{opacity:.45;cursor:not-allowed;}
.dx-view-l{line-height:1.2;}
.dx-view-n{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:0 6px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-muted);font-size:var(--text-2xs);font-weight:600;}
.dx-view.on .dx-view-n{background:var(--accent-soft);color:var(--accent-strong);}
.dx-view-danger .dx-view-n{background:var(--danger-soft);color:var(--danger-fg);}
.dx-view-warn .dx-view-n{background:var(--warn-soft);color:var(--warn-fg);}
.dx-view-info .dx-view-n{background:var(--info-soft);color:var(--info-fg);}
.dx-view-ok .dx-view-n{background:var(--ok-soft);color:var(--ok-fg);}
.dx-view-accent .dx-view-n{background:var(--accent-soft);color:var(--accent-strong);}
.dx-view.is-hot{font-weight:600;color:var(--text);}
.dx-view.is-hot.is-alert{color:var(--danger-fg);}
.dx-view.is-hot.is-alert .dx-view-n{background:var(--danger-soft);color:var(--danger-fg);}
.dx-view.is-hot.on{border-bottom-color:var(--danger);}
.dx-views-aside{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-bottom:8px;}
/* Tira desplazable: con vistas ocultas por el borde, degradado + flecha (la vista activa se revela sola, ver DxViews) */
.dx-views-scroll{position:relative;min-width:0;max-width:100%;--dx-fade-l:0px;--dx-fade-r:0px;}
.dx-views-scroll[data-edge-l="true"]{--dx-fade-l:40px;}
.dx-views-scroll[data-edge-r="true"]{--dx-fade-r:40px;}
.dx-views-scroll[data-edge-l="true"] .dx-views,.dx-views-scroll[data-edge-r="true"] .dx-views{-webkit-mask-image:linear-gradient(to right,transparent 0,black var(--dx-fade-l),black calc(100% - var(--dx-fade-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,black var(--dx-fade-l),black calc(100% - var(--dx-fade-r)),transparent 100%);}
.dx-views-more{position:absolute;top:0;bottom:1px;width:26px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--text-muted);cursor:pointer;z-index:1;padding:0;}
.dx-views-more:hover{color:var(--text-strong);}
.dx-views-more.is-l{left:0;}
.dx-views-more.is-r{right:0;}

/* Barra de lista (DxToolbar, DxFilterSelect) */
.dx-toolbar{display:flex;flex-direction:column;gap:10px;padding:12px;border-bottom:1px solid var(--divider);}
.dx-toolbar-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;}
.dx-search{flex:1 1 220px;min-width:160px;max-width:420px;}
/* `.searchbox.sm{flex:1}` (más específica) dejaba el buscador sin base ni suelo real: a ~820 px los filtros lo estrujaban a ~170 px. Con base 240 y suelo 220 salta a su propia fila antes de encogerse. */
.searchbox.sm.dx-search{flex:1 1 240px;min-width:min(100%,220px);}
.dx-toolbar-count{margin-left:auto;font-size:var(--text-xs);color:var(--text-subtle);}
.dx-toolbar-actions{display:flex;align-items:center;gap:6px;margin-left:auto;}
.dx-toolbar-count + .dx-toolbar-actions{margin-left:0;}
.dx-toolbar-clear{flex-shrink:0;}
.select.dx-fsel{width:auto;max-width:220px;padding:5px 26px 5px 10px;font-size:var(--text-xs);background-position:right 8px center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.select.dx-fsel.is-on{border-color:var(--accent);background-color:var(--accent-softer);color:var(--accent-strong);font-weight:600;}

/* Severidad editable en la fila (DxSevSelect): <select> nativo con aspecto de chip de DxSev */
.dx-sevsel{position:relative;cursor:pointer;}
.dx-sevsel-sel{appearance:none;-webkit-appearance:none;background-color:transparent;border:0;color:inherit;font:inherit;line-height:1;height:20px;margin:0;padding:0 14px 0 0;max-width:140px;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 7px) 50%,calc(100% - 3px) 50%;background-size:4px 4px,4px 4px;background-repeat:no-repeat;}
.dx-sevsel-sel:focus-visible{outline:none;}
.dx-sevsel:focus-within{box-shadow:var(--focus);}
.dx-sevsel:hover{filter:brightness(1.1);}
.dx-sevsel.is-busy{opacity:.55;}
.dx-sevsel-sel:disabled{cursor:not-allowed;}
.dx-sevsel-sel option{color:var(--text);background:var(--surface);}
.dx-fchips{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;}
.dx-fchip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 4px 0 10px;border-radius:var(--r-pill);border:1px solid var(--accent-soft);background:var(--accent-softer);font-size:var(--text-xs);color:var(--text);}
.dx-fchip-k{color:var(--text-muted);}
.dx-fchip-k::after{content:":";}
.dx-fchip-v{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--text-strong);}
.dx-fchip-x{display:inline-grid;place-items:center;min-width:18px;height:18px;border-radius:50%;color:var(--text-muted);cursor:pointer;}
.dx-fchip-x:hover{background:var(--accent-soft);color:var(--text-strong);}
.dx-fchip-x:focus-visible{outline:none;box-shadow:var(--focus);}

/* Cifras / filtros rápidos (DxKpiBar) */
.dx-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(152px,1fr));gap:12px;margin-bottom:16px;}
.dx-kpi .k-label::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--dx-k,var(--accent));flex-shrink:0;}
.dx-kpi-accent{--dx-k:var(--accent);}
.dx-kpi-danger{--dx-k:var(--danger);}
.dx-kpi-warn{--dx-k:var(--warn);}
.dx-kpi-info{--dx-k:var(--info);}
.dx-kpi-ok{--dx-k:var(--ok);}
.dx-kpi-alert .k-value{color:var(--danger-fg)!important;}
.dx-kpi-notice .k-value{color:var(--warn-fg)!important;}
.dx-kpi-muted .k-value{color:var(--text-subtle)!important;font-weight:500;}
.dx-kpi-muted .k-label{color:var(--text-subtle);}
.dx-kpi-btn{width:100%;padding:10px 12px 12px;border:1px solid transparent;border-radius:var(--r-lg);text-align:left;font:inherit;color:inherit;cursor:pointer;transition:border-color .14s,background .14s;}
.dx-kpi-btn:hover{border-color:var(--border-strong);}
.dx-kpi-btn:focus-visible{outline:none;box-shadow:var(--focus);}
.dx-kpi-btn.on{border-color:var(--accent);background:var(--accent-softer);}

/* Interruptor (DxToggle): role=switch, nombre accesible obligatorio */
.dx-toggle-wrap{display:inline-flex;align-items:center;gap:8px;vertical-align:middle;}
.dx-toggle{--dx-knob:var(--text-muted);position:relative;flex-shrink:0;width:36px;height:20px;padding:0;border:1px solid var(--border-strong);border-radius:var(--r-pill);background:var(--border-strong);cursor:pointer;transition:background .18s,border-color .18s;}
.dx-toggle.sm{width:30px;height:17px;}
.dx-toggle.on{--dx-knob:var(--accent-fg);border-color:var(--accent);background:var(--accent);}
.dx-toggle-knob{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--dx-knob);transition:transform .18s;}
.dx-toggle.sm .dx-toggle-knob{width:11px;height:11px;}
.dx-toggle.on .dx-toggle-knob{transform:translateX(16px);}
.dx-toggle.sm.on .dx-toggle-knob{transform:translateX(13px);}
.dx-toggle:focus-visible{outline:none;box-shadow:var(--focus);}
.dx-toggle:disabled{opacity:.45;cursor:not-allowed;}
.dx-toggle.is-busy{cursor:progress;}
.dx-toggle-text{font-size:var(--text-sm);color:var(--text);}

/* Modo / acción / estado (DxModeChip): los tonos de DxAction + «quiet» */
.dx-chip.dx-tone-quiet{background:var(--surface-2);color:var(--text-muted);}

/* Tabla de lista (DxTable / DxTh) */
.dx-tbl-card{padding:0;overflow:clip;}
.dx-tbl-wrap{container-type:inline-size;overflow-x:clip;border-radius:inherit;}
.dx-tbl{width:100%;border-collapse:separate;border-spacing:0;}
.dx-tbl thead th{top:48px;z-index:2;padding:8px 10px;}
.dx-tbl thead th:first-child,.dx-tbl tbody td:first-child{padding-left:16px;}
.dx-tbl tbody td{padding:9px 10px;vertical-align:middle;}
.dx-tbl tbody tr > td:first-child{position:relative;}
.dx-tbl tbody tr.is-click{cursor:pointer;}
.dx-tbl tbody tr.dx-row:focus-within > td{background:var(--surface-hover);}
.dx-tbl tbody tr.is-sel > td{background:var(--accent-softer);}
.dx-tbl tbody tr[data-tone="critical"] > td:first-child,.dx-tbl tbody tr[data-tone="danger"] > td:first-child{box-shadow:inset 3px 0 0 var(--danger);}
.dx-tbl tbody tr[data-tone="high"] > td:first-child,.dx-tbl tbody tr[data-tone="warn"] > td:first-child{box-shadow:inset 3px 0 0 var(--warn);}
.dx-tbl tbody tr[data-tone="medium"] > td:first-child,.dx-tbl tbody tr[data-tone="info"] > td:first-child{box-shadow:inset 3px 0 0 var(--info);}
.dx-tbl tbody tr[data-tone="low"] > td:first-child,.dx-tbl tbody tr[data-tone="ok"] > td:first-child{box-shadow:inset 3px 0 0 var(--ok);}
.dx-tbl tbody tr.is-sel > td:first-child{box-shadow:inset 3px 0 0 var(--accent);}
.dx-tbl tbody tr.is-day-start > td{border-top:1px solid var(--border-strong);}
.dx-tbl tbody tr:first-child.is-day-start > td{border-top:0;}
.dx-day-mark{display:block;margin-bottom:3px;font-size:var(--text-2xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);}
.dx-tbl tbody tr.dx-day > th{padding:14px 16px 5px;text-align:left;font-size:var(--text-xs);font-weight:600;color:var(--text-subtle);border-bottom:1px solid var(--divider);background:var(--surface);}
.dx-tbl tbody tr.dx-day:hover,.dx-tbl tbody tr.dx-tbl-msg:hover{background:transparent;}
.dx-row-main{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-width:0;font:inherit;font-weight:600;text-align:left;color:var(--text-strong);}
.dx-row-main:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm);}
.dx-tbl-loading{padding:18px 16px;font-size:var(--text-sm);color:var(--text-muted);}
.dx-tbl-msg .dx-empty{border:0;}
.dx-tbl tbody.is-refreshing{opacity:.62;transition:opacity .14s;}
.dx-tbl-more{display:flex;justify-content:center;padding:10px;border-top:1px solid var(--divider);}
.dx-empty.is-compact{border:0;padding:20px 16px;}
/* Columnas fuera según el ancho REAL de la tabla (el cajón acoplado le quita sitio). */
@container (max-width:1480px){.dx-tbl .dx-hide-1480{display:none;}}
@container (max-width:1380px){.dx-tbl .dx-hide-1380{display:none;}}
@container (max-width:1260px){.dx-tbl .dx-hide-1260{display:none;}}
@container (max-width:1180px){.dx-tbl .dx-hide-1180{display:none;}}
@container (max-width:1120px){.dx-tbl .dx-hide-1120{display:none;}}
@container (max-width:1020px){.dx-tbl .dx-hide-1020{display:none;}}
@container (max-width:980px){.dx-tbl .dx-hide-980{display:none;}}
@container (max-width:860px){.dx-tbl .dx-hide-860{display:none;}}
@container (max-width:760px){.dx-tbl .dx-hide-760{display:none;}}
@container (max-width:700px){.dx-tbl .dx-hide-700{display:none;}}
@container (max-width:620px){.dx-tbl .dx-hide-620{display:none;}}
@container (max-width:560px){.dx-tbl .dx-hide-560{display:none;}}
@container (max-width:480px){.dx-tbl .dx-hide-480{display:none;}}
@container (max-width:380px){.dx-tbl .dx-hide-380{display:none;}}

/* Condiciones / ámbito en frase (DxConditionSummary) */
.dx-cond{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px 6px;min-width:0;font-size:var(--text-sm);line-height:1.5;color:var(--text);}
.dx-cond-kw{font-size:var(--text-2xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);}
.dx-cond-then{margin-left:6px;}
.dx-cond-part{display:inline-block;max-width:100%;padding:1px 8px;border-radius:var(--r-md);background:var(--surface-2);font-size:var(--text-xs);color:var(--text);overflow-wrap:anywhere;}
.dx-cond-sep{font-size:var(--text-xs);text-transform:lowercase;color:var(--text-subtle);}
.dx-cond-more{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:var(--r-pill);background:var(--surface-2);font-size:var(--text-2xs);font-weight:600;color:var(--text-muted);}
.dx-cond-out{display:inline-flex;align-items:center;}
.dx-cond-empty{font-size:var(--text-xs);color:var(--text-subtle);}

/* Formularios en cajón (DxFormSection / DxField) */
.dx-fs{display:flex;flex-direction:column;gap:12px;}
.dx-fs-h{display:flex;align-items:center;gap:8px;min-height:24px;}
.dx-fs-h h3{margin:0;font-size:var(--text-base);font-weight:600;color:var(--text-strong);}
.dx-fs-hint{margin:0;font-size:var(--text-xs);line-height:1.5;color:var(--text-muted);}
.dx-fs-body{display:flex;flex-direction:column;gap:14px;}
.dx-field{display:flex;flex-direction:column;gap:6px;}
.dx-field.is-inline{flex-direction:row;align-items:center;gap:12px;}
.dx-field.is-inline .dx-field-l{flex:0 0 36%;}
.dx-field-l{font-size:var(--text-sm);font-weight:500;color:var(--text-strong);}
.dx-req{margin-left:3px;color:var(--danger-fg);}
.dx-field-c{display:flex;flex-direction:column;flex:1;gap:6px;min-width:0;}
.dx-field-hint{font-size:var(--text-xs);line-height:1.45;color:var(--text-muted);}
.dx-field-err{font-size:var(--text-xs);line-height:1.45;color:var(--danger-fg);}
.dx-field.has-error .input,.dx-field.has-error .select,.dx-field.has-error textarea{border-color:var(--danger);}

/* Confirmación y edición en cajón (DxConfirm / DxEditDrawer) */
.drawer.dx-confirm .drawer-body{padding:20px 22px;}
.dx-confirm-body{display:flex;flex-direction:column;gap:12px;font-size:var(--text-sm);line-height:1.5;color:var(--text);}
.drawer.dx-edit .drawer-foot{flex-wrap:wrap;}
.dx-edit-form{display:flex;flex-direction:column;gap:24px;}
.dx-edit-err{margin:0;}
.dx-edit-foot{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;width:100%;}
.dx-edit-del{flex-shrink:0;}
.dx-edit-left{display:flex;align-items:center;gap:10px;min-width:0;margin-right:auto;}
.dx-edit-dirty{font-size:var(--text-xs);color:var(--warn-fg);}
.dx-edit-discard{display:flex;align-items:center;justify-content:flex-end;flex:1;flex-wrap:wrap;gap:8px;font-size:var(--text-sm);color:var(--text);}
.dx-edit-discard > span{margin-right:auto;}

@media (prefers-reduced-motion:reduce){
  .dx-view,.dx-kpi-btn,.dx-toggle,.dx-toggle-knob,.dx-tbl tbody.is-refreshing{transition:none;}
}
@media (prefers-contrast:more){
  .dx-view.on{border-bottom-width:3px;}
  .dx-toggle{border-color:var(--text-muted);}
  .dx-fchip{border-color:var(--border-strong);}
  .dx-kpi-btn.on{border-width:2px;}
  .dx-cond-kw,.dx-cond-sep,.dx-cond-empty,.dx-toolbar-count,.dx-day-mark,.dx-tbl tbody tr.dx-day > th{color:var(--text-muted);}
}
@media (forced-colors:active){
  .dx-toggle{forced-color-adjust:none;border-color:ButtonText;background:ButtonFace;}
  .dx-toggle.on{background:Highlight;border-color:Highlight;}
  .dx-toggle-knob{background:ButtonText;}
  .dx-toggle.on .dx-toggle-knob{background:HighlightText;}
  .dx-view.on{border-bottom-color:Highlight;}
  .dx-tbl tbody tr.is-sel > td:first-child{box-shadow:inset 3px 0 0 Highlight;}
}

/* ── Dispositivos y salidas (Políticas → DLP): USB · Impresión · Pantalla en una lista ─────────────
   Solo composición sobre el kit dx-*: nombre con subtítulo, chip de tipo, prioridad con ▲/▼ y reglas pausadas. */
.dvo-root{min-width:0;}
.dvo-err{margin-bottom:12px;}
.dvo-more{margin:-4px 0 10px;}
.dvo-name{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;text-align:left;}
.dvo-name-t{font-weight:600;color:var(--text-strong);overflow-wrap:anywhere;}
.dvo-hint{font-size:var(--text-xs);font-weight:400;color:var(--text-subtle);}
.dvo-hint:empty{display:none;}
.dvo-hint-type{font-weight:500;color:var(--text-muted);}
/* A partir de 860 px de tabla el tipo tiene su columna; por debajo se resume en la línea de apoyo del nombre */
@container (min-width:861px){.dx-tbl .dvo-hint-type{display:none;}}
.dvo-type{background:var(--surface-2);color:var(--text);}
.dvo-order{display:inline-flex;align-items:center;gap:2px;}
.dvo-order-n{min-width:18px;margin-right:4px;font-size:var(--text-xs);color:var(--text-muted);text-align:right;}
.dvo-order .iconbtn:disabled{opacity:.35;cursor:not-allowed;}
.dx-tbl tbody tr.dvo-paused > td:not(:first-child){opacity:.6;}
.dvo-fs{border:0;margin:0;padding:0;min-width:0;display:flex;flex-direction:column;gap:20px;}
.dvo-fs:disabled{opacity:.85;}
.dvo-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
@media (max-width:640px){.dvo-grid2{grid-template-columns:minmax(0,1fr);}}
.dvo-num{width:140px;}
.dvo-sel{max-width:320px;}
.dvo-guarantee{padding:10px 12px;font-size:var(--text-sm);}
@media (prefers-contrast:more){
  .dvo-hint,.dvo-order-n{color:var(--text-muted);}
}

/* ── Políticas → Contenido (DLP): lista de políticas sobre el kit dx-* ─────────────────────────────
   Solo composición: nombre con subtítulo, chips de acción en fila y políticas pausadas atenuadas. */
.pol-root{min-width:0;}
.pol-err{margin-bottom:12px;}
.pol-name{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;text-align:left;}
.pol-name-t{font-weight:600;color:var(--text-strong);overflow-wrap:anywhere;}
.pol-name-h{font-size:var(--text-xs);font-weight:400;color:var(--text-subtle);}
.pol-acts{display:inline-flex;flex-wrap:wrap;gap:4px;}
.dx-tbl tbody tr.pol-paused > td:not(:first-child){opacity:.6;}

/* Simulador en cajón (SimulatorView) y mapa de reglas (PolicyMapView): sobre el kit dx-*. */
.pol-sim-lede{margin:0 0 10px;font-size:var(--text-sm);color:var(--text-muted);line-height:1.5;}
.pol-sim-user{position:relative;}
.pol-sim-user-row{display:flex;gap:6px;align-items:center;}
.pol-sim-user-row .input{flex:1;min-width:0;}
.pol-sim-user-list{list-style:none;margin:4px 0 0;padding:4px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);max-height:240px;overflow:auto;}
.pol-sim-user-list li{margin:0;}
.pol-sim-user-opt{display:flex;justify-content:space-between;gap:10px;width:100%;padding:6px 8px;border-radius:var(--r-sm);text-align:left;font-size:var(--text-sm);color:var(--text);}
.pol-sim-user-opt:hover,.pol-sim-user-opt:focus-visible{background:var(--surface-2);}
.pol-sim-user-dept{color:var(--text-subtle);font-size:var(--text-xs);}
.pol-sim-user-note{padding:6px 8px;font-size:var(--text-xs);color:var(--text-subtle);}
.pol-sim-verdict{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;padding:12px 14px;border-radius:var(--r-lg);background:var(--surface-2);}
.pol-sim-verdict.d-block{background:var(--danger-soft);}
.pol-sim-verdict.d-warn,.pol-sim-verdict.d-redact,.pol-sim-verdict.d-confirm{background:var(--warn-soft);}
.pol-sim-verdict.d-allow,.pol-sim-verdict.d-log{background:var(--ok-soft);}
.pol-sim-reason{flex:1;min-width:200px;font-size:var(--text-sm);color:var(--text);line-height:1.45;}
.pol-sim-who{margin-top:8px;font-size:var(--text-sm);font-weight:500;color:var(--text-strong);}
.pol-sim-who.other,.pol-sim-who.none{color:var(--text-muted);font-weight:400;}
.pol-sim-msg{padding:10px;border-radius:var(--r-md);background:var(--surface-2);font-style:italic;font-size:var(--text-sm);}
.pol-sim-rs{padding:10px;border-radius:var(--r-md);background:var(--surface-2);font-size:var(--text-xs);}
.pol-map{min-width:0;}
.pol-map-name{display:inline-flex;align-items:center;gap:6px;}
.pol-map-name.sub .pol-name-t{font-weight:400;color:var(--text-muted);}
.pol-map-elbow{color:var(--text-subtle);}
.pol-map-chips{display:inline-flex;flex-wrap:wrap;gap:4px;}
.pol-map-issues{margin-bottom:12px;}
.pol-map-issues ul{margin:6px 0 0;padding-left:18px;}
@media (prefers-contrast:more){
  .pol-name-h{color:var(--text-muted);}
}
.pol-drawer-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;}
.pol-drawer-actions-sep{flex:1;}
.pol-drawer .dx-facts{margin-top:0;}
.pol-drawer .spd-layout{grid-template-columns:300px minmax(0,1fr);}
@media(max-width:1100px){.pol-drawer .spd-layout{grid-template-columns:1fr;}}

/* Editores de política y subpolítica en cajón (DxEditDrawer): notas y estados sobre el kit. */
.pol-ed-note{margin-top:6px;font-size:var(--text-xs);color:var(--text-muted);}
.dx-fs.pol-ed-off .dx-fs-body{opacity:.45;pointer-events:none;}
.action-opt.pol-ed-veto{opacity:.38;cursor:not-allowed;}

/* pages-extra: cajones y avisos que sustituyen a modal-overlay / confirm() / alert() (confirm-extra) */
.extra-err{display:flex;align-items:center;gap:8px;}
.extra-err-msg{flex:1;min-width:0;overflow-wrap:anywhere;}
.extra-lede{margin:0;font-size:var(--text-sm);}
.extra-chips{display:flex;flex-wrap:wrap;gap:6px;}
.extra-chip{cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-xs);}
.extra-chip.accent{border-color:var(--accent);}
.extra-perm-col{width:90px;text-align:center;}
.extra-perm-cb{display:inline-flex;}
.extra-addrow{display:flex;gap:8px;margin-bottom:10px;}
.extra-addrow select{flex:1;min-width:0;}
.extra-cell-end{text-align:right;}
.extra-color{width:100px;padding:2px;}
.extra-err-float{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:90;width:max-content;max-width:min(560px,92vw);margin:0;box-shadow:var(--sh-lg);}

/* ChatPanel (chat-panel.jsx): panel de chat reutilizable — registro de mensajes, aviso fijo y cuadro de envío.
   Usado por el «Asistente» único (pages-assistant.jsx). */
.cp-panel{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0;}
.cp-log{display:flex;flex-direction:column;gap:var(--sp-3);min-height:220px;max-height:min(46vh,480px);overflow-y:auto;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-sunken);}
.cp-empty{margin:auto;max-width:46ch;text-align:center;font-size:var(--text-sm);color:var(--text-muted);}
.cp-start{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);margin:auto;max-width:60ch;}
.cp-start .cp-empty{margin:0;}
.cp-examples{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2);}
.cp-example{height:auto;min-height:30px;white-space:normal;text-align:start;}
.cp-msg{display:flex;flex-direction:column;gap:2px;max-width:min(92%,720px);}
.cp-msg.is-user{align-self:flex-end;align-items:flex-end;}
.cp-msg.is-assistant{align-self:flex-start;align-items:flex-start;}
.cp-who{font-size:var(--text-xs);color:var(--text-muted);}
.cp-bubble{min-width:0;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);color:var(--text);font-size:var(--text-sm);line-height:1.5;}
.cp-msg.is-user .cp-bubble{background:var(--accent-soft);border-color:transparent;color:var(--text-strong);}
.cp-bubble.is-notice{border-color:transparent;}
.cp-text{white-space:pre-wrap;overflow-wrap:anywhere;}
.cp-text.is-lines{white-space:pre-line;}
.cp-sources{margin-top:var(--sp-2);}
.cp-sources-h{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.cp-sources-l{margin:2px 0 0;padding-left:18px;font-size:var(--text-xs);}
.cp-sources-l a{color:var(--accent);overflow-wrap:anywhere;}
.cp-wait{margin:0;font-size:var(--text-xs);color:var(--text-muted);}
.cp-notice{font-size:var(--text-xs);color:var(--text-muted);}
.cp-form{display:flex;flex-direction:column;gap:var(--sp-2);}
.cp-label{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.cp-input{resize:vertical;min-height:64px;line-height:1.45;}
.cp-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);}
.cp-count{font-size:var(--text-xs);color:var(--text-muted);}
.cp-count.is-over{color:var(--danger-fg);font-weight:600;}
.cp-extra{margin-top:var(--sp-2);min-width:0;}
@media (prefers-reduced-motion:no-preference){.cp-log{scroll-behavior:smooth;}}
.cp-wait{display:inline-flex;align-items:center;gap:var(--sp-2);align-self:flex-start;padding:6px 10px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--border);}
.cp-dots{display:inline-flex;align-items:center;gap:3px;}
.cp-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);opacity:.35;animation:cp-bounce 1.2s var(--ease) infinite;}
.cp-dot:nth-child(2){animation-delay:.15s;}
.cp-dot:nth-child(3){animation-delay:.3s;}
@keyframes cp-bounce{0%,60%,100%{opacity:.35;transform:none;}30%{opacity:1;transform:translateY(-2px);}}
.cp-msg:last-child{animation:cp-in .22s var(--ease-out) both;}
@keyframes cp-in{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:reduce){.cp-dot{animation:none;opacity:.7;}.cp-msg:last-child{animation:none;}}


/* ── Asistente (pages-assistant.jsx): chat, tarjetas de cambios, consentimiento e historial ── */
.asi-stack{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0;}
.asi-card-chat{padding:0;display:flex;flex-direction:column;min-width:0;overflow:hidden;}
.asi-card-chat[hidden]{display:none;}
.asi-bdi{unicode-bidi:isolate;}
.asi-consent{display:flex;flex-direction:column;gap:var(--sp-3);max-width:720px;}
.asi-h{margin:0;font-size:var(--text-md);color:var(--text-strong);}
.asi-consent-l{margin:0;padding-left:18px;font-size:var(--text-sm);line-height:1.5;}
.asi-privacy{margin:0;}
.asi-sub{margin:0 0 var(--sp-1);font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.asi-card{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-sunken);}
.asi-target{min-width:0;}
.asi-risk{display:flex;align-items:center;gap:var(--sp-2);}
.asi-request{background:var(--surface);}
.asi-history{display:flex;flex-direction:column;gap:var(--sp-3);}
.asi-usage{display:flex;flex-direction:column;gap:var(--sp-5);}
.asi-usage-sec{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0;}
.asi-usage-fig{margin:0;font-size:var(--text-lg);}
.asi-usage-note{margin:0;font-size:var(--text-sm);}
.asi-target-l{margin:0;padding-left:18px;font-size:var(--text-sm);}
.asi-target-k{color:var(--text-muted);}
.asi-target-v{font-weight:600;overflow-wrap:anywhere;}
.asi-diff{width:100%;font-size:var(--text-sm);}
.asi-diff th,.asi-diff td{text-align:left;vertical-align:top;overflow-wrap:anywhere;}
.asi-diff-f{font-weight:600;}
.asi-diff-from{color:var(--text-muted);}
.asi-diff-to{font-weight:600;}
.asi-reduces{color:var(--danger-fg);font-weight:600;}
.asi-notes{margin:0;padding-left:18px;font-size:var(--text-xs);color:var(--text-muted);}
.asi-ack{align-items:flex-start;}
.asi-expiry{font-size:var(--text-xs);}
.asi-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.asi-options{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.asi-stale{font-size:var(--text-xs);}
.asi-link{margin-left:var(--sp-2);}
.asi-hist-msgs{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-3);}
.asi-hist-msg{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);}
.asi-hist-msg.is-user{background:var(--accent-soft);border-color:transparent;}
.asi-hist-who{font-size:var(--text-xs);color:var(--text-muted);}
.asi-hist-text{font-size:var(--text-sm);white-space:pre-wrap;overflow-wrap:anywhere;}
@media (max-width:640px){
  .asi-diff{display:block;overflow-x:auto;}
  .asi-actions .btn{flex:1 1 100%;}
}

/* ── Asistente: página completa (rediseño 9-oct-2026) — chat a la izquierda, «Qué puedo hacer» y consejos a la derecha ── */
.asi-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--sp-4);align-items:start;min-width:0;}
.asi-layout.is-consent{grid-template-columns:minmax(0,720px);}
.asi-main{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0;}
.asi-aside{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0;}
.asi-chat-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);
  background:linear-gradient(180deg,var(--accent-softer),transparent);}
.asi-chat-id{flex:1;min-width:min(160px,100%);display:flex;flex-direction:column;gap:2px;}
.asi-chat-id .asi-h{font-size:var(--text-sm);font-weight:600;}
.asi-card-chat .cp-panel{padding:var(--sp-4);}
.asi-card-chat .cp-log{height:max(320px,calc(100vh - 520px));min-height:0;max-height:none;}
.asi-avatar,.asib-avatar{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:var(--r-pill);
  background:var(--accent-soft);color:var(--accent-strong);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.28);}
.asi-state{display:inline-flex;align-items:center;gap:6px;min-width:0;font-size:var(--text-xs);color:var(--text-muted);line-height:1.3;}
.asi-state-dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--text-subtle);}
.asi-state[data-tone="ok"] .asi-state-dot{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft);}
.asi-state[data-tone="warn"] .asi-state-dot{background:var(--warn);box-shadow:0 0 0 3px var(--warn-soft);}
.asi-state[data-tone="wait"] .asi-state-dot{background:var(--accent);animation:asi-breathe 1.4s var(--ease) infinite;}
.asi-state[data-tone="off"] .asi-state-dot{background:var(--text-subtle);box-shadow:none;}
@keyframes asi-breathe{0%,100%{opacity:.4;}50%{opacity:1;}}
.asi-side{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);}
.asi-side-h{margin:0;font-size:var(--text-sm);font-weight:600;color:var(--text-strong);}
.asi-cap-group{display:flex;flex-direction:column;gap:var(--sp-1);}
.asi-cap-sec{margin:0;font-size:var(--fs-2xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-subtle);}
.asi-cap-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;}
.asi-cap{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:36px;padding:6px 8px;border:0;border-radius:var(--r);
  background:transparent;color:var(--text);font:inherit;font-size:var(--text-sm);line-height:1.35;text-align:start;cursor:pointer;
  transition:background-color .12s var(--ease),color .12s var(--ease);}
.asi-cap:hover:not(:disabled){background:var(--accent-softer);color:var(--text-strong);}
.asi-cap:focus-visible{outline:none;box-shadow:var(--focus);}
.asi-cap:disabled{opacity:.5;cursor:default;}
.asi-cap-t{flex:1;min-width:0;}
.asi-cap-go{flex:none;color:var(--text-subtle);transition:transform .15s var(--ease-out),color .12s var(--ease);}
.asi-cap:hover:not(:disabled) .asi-cap-go{transform:translateX(2px);color:var(--accent);}
.asi-tips-l{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--text-xs);line-height:1.6;color:var(--text-muted);}
.asi-tips-a{color:var(--accent);}
.asi-kbd{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:var(--r-xs);border:1px solid var(--border-strong);
  border-bottom-width:2px;background:var(--surface-2);font:500 var(--fs-2xs)/1 var(--font-mono);color:var(--text-strong);vertical-align:1px;}
.asi-skel{display:flex;flex-direction:column;gap:var(--sp-3);max-width:960px;}
.asi-skel-l{display:block;height:12px;width:56%;border-radius:var(--r-pill);
  background:linear-gradient(90deg,var(--surface-2) 0%,rgba(var(--accent-rgb),.14) 50%,var(--surface-2) 100%);background-size:220% 100%;
  animation:kl-shimmer 1.4s var(--ease) infinite;}
.asi-skel-l.is-short{width:34%;}
.asi-skel-box{display:block;height:320px;border-radius:var(--r-xl);border:1px solid var(--border);background:var(--surface-sunken);}
@media (max-width:1100px){.asi-layout{grid-template-columns:minmax(0,1fr);}}

/* ── Asistente: bot flotante (assistant-bot.jsx) — botón con la mascota abajo a la derecha y panel anclado ──
   Capa 45: por encima del contenido, la barra superior (30) y el rail (40); por DEBAJO del fondo de cajones y modales (50+).
   Con el bot presente la consola reserva el hueco (padding inferior del contenido y de la barra de guardar fija). */
.kl-app[data-asibot="on"] .kl-content{padding-bottom:104px;}
.kl-app[data-asibot="on"] .pp-savebar{padding-right:84px;}
.asib{position:fixed;right:20px;bottom:20px;z-index:45;width:56px;height:56px;}
body:has(.drawer.open) .asib[data-open="false"],body:has(.kl-kpi-modal-bd) .asib[data-open="false"],body:has(.sp-overlay) .asib[data-open="false"]{visibility:hidden;}
.asib-fab{position:relative;display:grid;place-items:center;width:56px;height:56px;padding:0;border:0;border-radius:var(--r-pill);cursor:pointer;
  background:var(--accent);color:var(--accent-fg);
  box-shadow:0 0 0 1px rgba(var(--accent-rgb),.6),0 10px 26px rgba(var(--accent-rgb),.30),0 2px 6px rgba(0,0,0,.22);
  transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out),background-color .15s var(--ease),color .15s var(--ease);
  animation:asib-in .34s var(--ease-out) .25s both;}
.asib-fab:hover{background:var(--accent-hover);transform:translateY(-2px);
  box-shadow:0 0 0 1px rgba(var(--accent-rgb),.7),0 14px 30px rgba(var(--accent-rgb),.38),0 3px 8px rgba(0,0,0,.24);}
.asib-fab:active{transform:scale(.96);transition-duration:.08s;}
.asib-fab:focus-visible{outline:none;box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--accent-strong),0 10px 26px rgba(var(--accent-rgb),.30);}
.asib[data-open="true"] .asib-fab{background:var(--surface-2);color:var(--text-strong);box-shadow:0 0 0 1px var(--border-strong),var(--sh-lg);transform:none;}
.asib-mascot{transition:transform .25s var(--ease-spring);}
.asib[data-open="true"] .asib-mascot{transform:scale(.88);}
.asib-fab .th-bot-eye{transform-box:fill-box;transform-origin:center;}
.asib-fab:hover .th-bot-eye{animation:asib-blink .34s var(--ease) .08s 1;}
.asib-fab[data-state="busy"] .th-bot-eye{animation:asib-look 1.8s var(--ease) infinite;}
@keyframes asib-in{from{opacity:0;transform:translateY(10px) scale(.9);}to{opacity:1;transform:none;}}
@keyframes asib-blink{0%,100%{transform:none;}50%{transform:scaleY(.15);}}
@keyframes asib-look{0%,100%{transform:none;}30%{transform:translateX(-1.2px);}70%{transform:translateX(1.2px);}}
/* Insignia: respuesta nueva (verde) o no disponible (gris). «Pensando» es un anillo que gira alrededor del botón. */
.asib-badge{position:absolute;top:2px;right:2px;width:13px;height:13px;border-radius:50%;border:2px solid var(--bg);background:var(--text-subtle);
  transform:scale(0);transition:transform .22s var(--ease-spring);pointer-events:none;}
.asib-fab[data-state="unread"] .asib-badge{background:var(--ok);transform:scale(1);}
.asib-fab[data-state="off"] .asib-badge{background:var(--text-subtle);transform:scale(1);}
.asib-fab[data-state="busy"]::after{content:"";position:absolute;inset:-5px;border-radius:inherit;border:2px solid transparent;
  border-top-color:var(--accent-strong);border-right-color:rgba(var(--accent-rgb),.35);animation:kl-spin 1.1s linear infinite;pointer-events:none;}
/* Etiqueta con el atajo: a la izquierda del botón, con retraso (no parpadea al pasar el ratón de largo) */
.asib-tip{position:absolute;right:calc(100% + 12px);top:50%;display:inline-flex;align-items:center;gap:var(--sp-2);white-space:nowrap;
  padding:6px 8px 6px 10px;border-radius:var(--r);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-strong);
  font-size:var(--text-xs);font-weight:500;box-shadow:var(--sh-lg);opacity:0;transform:translate(4px,-50%);pointer-events:none;
  transition:opacity .12s var(--ease),transform .12s var(--ease);}
.asib-fab:hover .asib-tip,.asib-fab:focus-visible .asib-tip{opacity:1;transform:translate(0,-50%);transition-delay:.45s;}
.asib[data-open="true"] .asib-tip{display:none;}
.asib-keys{display:inline-flex;gap:2px;}
@media (hover:none){.asib-tip{display:none;}}
/* Panel: popover anclado al botón, crece desde su esquina */
.asib-panel{position:absolute;right:0;bottom:calc(100% + 14px);display:flex;flex-direction:column;overflow:hidden;
  width:min(400px,calc(100vw - 32px));height:min(640px,calc(100vh - 120px));height:min(640px,calc(100dvh - 120px));
  border:1px solid var(--border-strong);border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--sh-xl);outline:none;
  transform-origin:bottom right;animation:asib-pop .2s var(--ease-out) both;}
@keyframes asib-pop{from{opacity:0;transform:translateY(8px) scale(.96);}to{opacity:1;transform:none;}}
.asib-head{flex:none;display:flex;align-items:center;gap:var(--sp-3);padding:10px 8px 10px 14px;border-bottom:1px solid var(--border);
  background:linear-gradient(180deg,var(--accent-softer),transparent);}
.asib-id{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.asib-title{margin:0;font-size:var(--text-md);font-weight:600;line-height:1.25;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.asib-tools{flex:none;display:flex;gap:2px;}
.asib-tool{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:var(--r);background:transparent;color:var(--text-muted);
  cursor:pointer;transition:background-color .12s var(--ease),color .12s var(--ease);}
.asib-tool:hover:not(:disabled){background:var(--surface-hover);color:var(--text-strong);}
.asib-tool:focus-visible{outline:none;box-shadow:var(--focus);}
.asib-tool:disabled{opacity:.45;cursor:default;}
@media (pointer:coarse){.asib-tool{width:44px;height:44px;}}
.asib-ending{flex:none;display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);background:var(--danger-soft);}
.asib-ending-t{margin:0;font-size:var(--text-sm);color:var(--text-strong);}
.asib-ending-a{display:flex;justify-content:flex-end;gap:var(--sp-2);}
.asib-body{flex:1;min-height:0;display:flex;flex-direction:column;}
.asib-scroll{flex:1;min-height:0;overflow-y:auto;padding:var(--sp-3);}
.asib-scroll .asi-consent{border:0;padding:0;}
.asib-wait{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-5) var(--sp-4);}
.asib-off{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-6) var(--sp-5);text-align:center;}
.asib-off-ico{display:grid;place-items:center;width:52px;height:52px;margin-bottom:var(--sp-2);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-muted);}
.asib-off-t{margin:0;font-size:var(--text-sm);font-weight:600;color:var(--text-strong);}
.asib-off-h{margin:0;max-width:34ch;font-size:var(--text-xs);color:var(--text-muted);}
.asib-off-a{display:flex;gap:var(--sp-2);margin-top:var(--sp-2);}
.asib-banner{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3) var(--sp-2) var(--sp-4);
  border-bottom:1px solid var(--border);background:var(--warn-soft);font-size:var(--text-xs);color:var(--text-strong);}
/* El chat dentro del panel: registro a toda altura, aviso y cuadro pegados abajo */
.asib-chat{flex:1;min-height:0;display:flex;flex-direction:column;}
.asib-chat .cp-panel{flex:1;min-height:0;gap:0;}
.asib-chat .cp-log{flex:1;min-height:0;max-height:none;padding:var(--sp-4) var(--sp-3);border:0;border-radius:0;background:var(--surface-sunken);}
.asib-chat .cp-start{align-items:stretch;max-width:none;}
.asib-chat .cp-empty{text-align:start;}
.asib-chat .cp-examples{flex-direction:column;align-items:stretch;}
.asib-chat .cp-example{justify-content:flex-start;width:100%;}
.asib-chat .cp-msg{max-width:94%;}
.asib-chat .cp-msg.is-assistant{max-width:100%;align-self:stretch;}
.asib-chat .cp-notice{padding:var(--sp-2) var(--sp-4) 0;border-top:1px solid var(--border);}
.asib-chat .cp-form{padding:var(--sp-2) var(--sp-3) var(--sp-3);border-top:1px solid var(--border);background:var(--surface);}
.asib-chat .cp-notice + .cp-form{border-top:0;}
.asib-chat .cp-label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.asib-chat .cp-input{min-height:56px;max-height:140px;resize:none;}
.asib-chat .asi-diff{font-size:var(--text-xs);}
.asib-chat .asi-card{padding:var(--sp-2) var(--sp-3);}
@media (max-width:640px){
  .asib{right:12px;bottom:12px;}
  .asib-panel{position:fixed;inset:8px;width:auto;height:auto;}
  .asib[data-open="true"] .asib-fab{visibility:hidden;}
}
@media (prefers-reduced-motion:reduce){
  .asib-fab,.asib-panel,.asib-tip,.asib-badge,.asib-mascot{animation:none;transition:none;}
  .asib-fab .th-bot-eye,.asib-fab:hover .th-bot-eye{animation:none;}
  .asib-fab[data-state="busy"]::after{animation:none;border-color:rgba(var(--accent-rgb),.6);}
  .asi-skel-l,.asi-state[data-tone="wait"] .asi-state-dot{animation:none;}
}
@media (forced-colors:active){
  .asib-fab{border:2px solid ButtonText;}
  .asib-panel{border:1px solid CanvasText;}
}
.asi-keys-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2);}
.asi-keys-r{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);font-size:var(--text-xs);color:var(--text);}
.asi-keys{flex:none;display:inline-flex;gap:3px;}
.asi-page{min-width:0;}
.asi-tips{gap:var(--sp-4);}
.asi-card-chat .cp-msg.is-assistant{max-width:100%;align-self:stretch;}
.asi-card-chat .cp-msg,.asib-chat .cp-msg{min-width:0;}
@media (max-width:640px){
  .asi-card-chat .cp-panel{padding:var(--sp-3);}
  .asi-card-chat .cp-log{padding:var(--sp-2);}
  .asi-chat-head{padding:var(--sp-3);}
  .asi-diff th,.asi-diff td{overflow-wrap:normal;}
}

/* ====================== LISTA DE ENDPOINTS (ep-*) ======================
   Lista de la flota con el kit Dx*: tabla de agentes / dispositivos / tokens y los cajones de dispositivo y de
   «Nuevo token de instalación». Solo tokens; lo demás son clases del kit y de la Biblioteca (lib-*). */
.ep-foot-gap{flex:1;}
.ep-quote{margin-top:var(--sp-1);font-style:italic;}
.ep-err{color:var(--danger-fg);}
.ep-cmd{margin:0 0 var(--sp-3);}
.ep-cmd .btn{margin-top:calc(var(--sp-2) * -1);}
.ep-idval-wrap{white-space:normal;word-break:break-all;user-select:all;}
.ep-dev-wsl-child .lib-pat-name{padding-left:var(--sp-4);}
.dx-tbl td.c-wsltoggle{width:1%;white-space:nowrap;padding-right:0;}

/* ====================== FICHA DE ENDPOINT (epd-*) ======================
   Detalle de un equipo con el kit Dx*: cabecera con la persona, franja de hechos,
   «Requiere atención» y tres pestañas (Resumen · Política y cobertura · Equipo).
   Solo tokens; los chips, secciones y pares clave/valor son los del kit. */
.epd-title{display:inline-flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;}
.epd-chips-head{margin-top:var(--sp-3);}
.epd-strip{margin:var(--sp-4) 0 var(--sp-4);padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-xl);background:var(--surface);}
.epd-strip .dx-facts{margin:0;padding:0;border-top:0;}
.epd-strip .dx-fact dd:not(.dx-fact-sub){font-size:var(--text-md);}
.epd-attn{display:flex;flex-direction:column;gap:var(--sp-2);margin:0 0 var(--sp-4);}
.epd-alert{display:flex;align-items:center;gap:var(--sp-3);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);}
.epd-alert-b{flex:1;min-width:0;overflow-wrap:anywhere;}
.epd-alert .btn{flex-shrink:0;}
.epd-tabs{margin:0 0 var(--sp-4);border-bottom:1px solid var(--divider);}
.epd-tabs .dx-tabs{margin:0 0 -1px;}
.epd-body{margin-top:0;}
.epd-card{padding:var(--pad-card);border:1px solid var(--border);border-radius:var(--r-xl);background:var(--surface);}
.epd-card .dx-sec-h{margin-bottom:var(--sp-3);}
.epd-muted{font-size:var(--text-xs);color:var(--text-muted);margin:0;}
.epd-good{color:var(--ok-fg);}
.epd-bad{color:var(--danger-fg);}
.epd-foot{margin:var(--sp-3) 0 0;}
.epd-block{width:100%;justify-content:center;}
.epd-sublbl{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.epd-override{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);}

/* enforcement agrupado por modo */
.epd-modes{display:flex;flex-direction:column;gap:var(--sp-4);}
.epd-mode{min-width:0;}
.epd-mode-h{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);}
.epd-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);}
.epd-tool{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:var(--r-md);background:var(--surface-2);color:var(--text);font-size:var(--text-xs);white-space:nowrap;}
.epd-tool .th-ico{color:var(--text-muted);}

/* filas: icono + texto + extremo */
.epd-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;}
.epd-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;}
.epd-row + .epd-row{border-top:1px solid var(--divider);}
.epd-row-ico{flex-shrink:0;width:28px;height:28px;border-radius:var(--r-md);display:grid;place-items:center;background:var(--surface-2);color:var(--text-muted);}
.epd-row-b{flex:1;min-width:0;}
.epd-row-t{font-size:var(--text-sm);font-weight:500;color:var(--text-strong);overflow-wrap:anywhere;}
.epd-row-d{margin-top:2px;font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere;}
.epd-row > .dx-chip,.epd-row > .usr-link{flex-shrink:0;}
.epd-act-ico{flex-shrink:0;width:30px;height:30px;border-radius:var(--r-md);display:grid;place-items:center;background:var(--surface-2);color:var(--text-muted);}
.epd-person{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2);}
.ep-headico{flex-shrink:0;width:40px;height:40px;border-radius:var(--r-xl);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-strong);font-weight:600;}

/* gravedad → acción */
.epd-sevs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2);}
.epd-sev{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-lg);background:var(--surface-sunken);}
.epd-sev .dx-chip:first-child{min-width:74px;}

/* nivel de registro */
.epd-seg{display:flex;gap:2px;padding:2px;border-radius:var(--r-lg);background:var(--surface-sunken);}
.epd-seg-b{flex:1;height:28px;border-radius:var(--r-md);font-size:var(--text-xs);font-weight:500;color:var(--text-muted);transition:background .14s,color .14s;}
.epd-seg-b:hover:not(:disabled){color:var(--text);}
.epd-seg-b.on{background:var(--surface-2);color:var(--text-strong);box-shadow:inset 0 0 0 1px var(--border-strong);}
.epd-seg-b:disabled:not(.on){opacity:.55;}
.epd-seg-b:focus-visible{outline:none;box-shadow:var(--focus);}

.epd-bullets{margin:var(--sp-3) 0 0;padding-left:18px;font-size:var(--text-xs);color:var(--text-muted);}
.epd-pre{margin:0 0 var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface-sunken);font-size:var(--text-xs);white-space:pre-wrap;word-break:break-all;user-select:all;}

@media (max-width:640px){
  .epd-sevs{grid-template-columns:1fr;}
  .epd-alert{flex-direction:column;align-items:flex-start;}
  .ep-idrow .k{width:96px;}
}
@media (prefers-reduced-motion:reduce){
  .epd-seg-b,.ep-action{transition:none;}
}

/* ── Flota · Usuarios, Grupos y Extensiones sobre el kit dx-* (rediseño 12-oct-2026) ──────────────────────
   Solo lo que el kit no trae: pequeños ajustes de disposición de las tres listas y de sus cajones.
   Las tablas, vistas, cifras, secciones, chips y cajones salen de dx-*; aquí no se redefine ninguno. */
.idn-grow{flex:1;min-width:0;}
.idn-spacer{flex:1;}
.idn-nowrap{white-space:nowrap;flex-shrink:0;}
.idn-break{word-break:break-word;}
.idn-gap{margin-left:6px;}
.idn-intro{margin:0 0 var(--sp-3);}
.idn-more{margin-top:var(--sp-2);}
.idn-why{margin-top:2px;}
.idn-cover{font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;}
.idn-cover b{color:var(--text-strong);font-weight:600;}
.idn-state{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.idn-host{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;}
.idn-ver{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;}
.idn-tokrow{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;}
.idn-tokrow + .idn-tokrow{border-top:1px solid var(--divider);}
.idn-attn{display:flex;flex-direction:column;gap:var(--sp-2);}
.idn-alert{display:flex;align-items:center;gap:var(--sp-3);}
.idn-alert-b{flex:1;min-width:0;}
.idn-risk{display:flex;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-3);}
.idn-risk .dx-risk{flex:1;min-width:0;}
.idn-spark{flex-shrink:0;}
.grp-cell{display:flex;align-items:center;gap:var(--sp-3);min-width:0;}
.grp-id{display:flex;flex-direction:column;align-items:flex-start;min-width:0;}
.grp-id .grp-desc{max-width:46ch;}
.dx-row-main .usr-cell{text-align:left;}
.fd-bd-row .dx-chip{justify-self:start;}

/* ── Threat Hunting (pages-threat-hunting.jsx) — Caza · Conversaciones · Registros brutos ─────────────────────────────
   Compone el kit dx-*; aquí solo lo propio: selector de ventana, consola de consulta, gráfico de actividad (SVG) y celdas.
   Solo tokens, sin estilo en línea. */
.thk-win{display:inline-flex;gap:2px;padding:2px;border-radius:var(--r-md);background:var(--surface-sunken);border:1px solid var(--border);}
.thk-win-b{height:26px;min-width:38px;padding:0 var(--sp-3);border:0;border-radius:var(--r-sm);background:transparent;color:var(--text-muted);font:inherit;font-size:var(--text-xs);font-weight:500;cursor:pointer;}
.thk-win-b:hover{color:var(--text-strong);background:var(--surface-hover);}
.thk-win-b.on{background:var(--surface);color:var(--text-strong);box-shadow:0 0 0 1px var(--border-strong);}
.thk-win-b:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}

.thk-console{margin:var(--sp-4) 0;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);}
.thk-qrow{display:flex;align-items:stretch;gap:var(--sp-3);}
.thk-prompt{display:flex;align-items:center;padding:0 var(--sp-3);border-radius:var(--r-md);background:var(--surface-sunken);color:var(--accent-strong);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;letter-spacing:.05em;border:1px solid var(--border);}
.thk-input{flex:1;min-width:0;height:38px;padding:0 var(--sp-4);border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface-sunken);color:var(--text-strong);font-size:var(--text-sm);}
.thk-input::placeholder{color:var(--text-subtle);}
.thk-input:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus);background:var(--surface);}
.thk-qrow .btn{height:38px;}
.thk-fields{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3);}
.thk-fields-l{font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle);}
.thk-field{padding:2px var(--sp-3);border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text-muted);font-family:var(--font-mono);font-size:var(--text-xs);cursor:pointer;}
.thk-field:hover{border-color:var(--accent);color:var(--accent-strong);background:var(--accent-softer);}
.thk-field:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}

.thk-legend{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--text-xs);color:var(--text-muted);}
.thk-key{display:inline-block;width:10px;height:10px;border-radius:2px;margin-left:var(--sp-3);}
.thk-key-all{background:var(--accent);}
.thk-key-crit{background:var(--danger);}
.thk-hint{margin-bottom:var(--sp-3);font-size:var(--text-xs);color:var(--text-muted);}
.thk-bars{display:block;width:100%;height:120px;}
.thk-bar{fill:var(--accent);}
.thk-bar-c{fill:var(--danger);}
.thk-bars-msg{padding:var(--sp-4);color:var(--text-muted);font-size:var(--text-sm);}
.thk-axis{display:flex;justify-content:space-between;margin-top:var(--sp-2);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-subtle);}

.thk-user{display:inline-flex;align-items:center;gap:var(--sp-3);min-width:0;text-align:left;}
.thk-user-t,.thk-hunt,.thk-risk{display:inline-flex;flex-direction:column;gap:2px;min-width:0;text-align:left;}
.thk-user-t b,.thk-hunt b{font-weight:600;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.thk-sub{font-size:var(--text-xs);font-weight:400;color:var(--text-muted);}
.thk-note{margin:var(--sp-2) 0;font-size:var(--text-sm);line-height:1.5;color:var(--text-muted);}
.thk-weight{display:inline-flex;align-items:center;gap:var(--sp-3);min-width:96px;}
.thk-meter{flex:1;min-width:40px;height:4px;border:0;border-radius:var(--r-xs);background:var(--surface-sunken);appearance:none;-webkit-appearance:none;overflow:hidden;}
.thk-meter::-webkit-progress-bar{background:var(--surface-sunken);}
.thk-meter::-webkit-progress-value{background:var(--accent);}
.thk-meter::-moz-progress-bar{background:var(--accent);}
.thk-c-crit{color:var(--danger-fg);}
.thk-c-high{color:var(--warn-fg);}
.thk-go{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--text-xs);color:var(--accent-strong);white-space:nowrap;}
.thk-code{display:inline-block;max-width:100%;padding:2px var(--sp-3);border-radius:var(--r-sm);background:var(--surface-sunken);border:1px solid var(--border);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;}
.thk-del{color:var(--danger-fg);}
.thk-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);}

.thk-evlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2);}
.thk-ev{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;}
.thk-ev:hover{background:var(--surface-hover);border-color:var(--border-strong);}
.thk-ev:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.thk-ev-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-strong);}
.thk-ev-d{color:var(--text-muted);font-size:var(--text-xs);}
.thk-con{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-sunken);}
.thk-snippet{margin:0;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-sunken);color:var(--text);font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.5;white-space:pre-wrap;word-break:break-word;}
.thk-flow{margin:var(--sp-3) 0;padding:var(--sp-2) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);}
.thk-flow summary{cursor:pointer;font-size:var(--text-sm);font-weight:600;color:var(--text-strong);}

@media (max-width:760px){
  .thk-qrow{flex-wrap:wrap;}
  .thk-input{flex-basis:100%;order:-1;}
}
@media (prefers-reduced-motion:reduce){
  .thk-ev,.thk-field,.thk-win-b{transition:none;}
}

/* Acceso de soporte con segunda aprobación (pages-support-access.jsx) */
.sa-mode{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;}
.sa-h{margin:var(--sp-2) 0 0;font-size:var(--text-sm);font-weight:600;color:var(--text-strong);}
.sa-empty{margin:0;font-size:var(--text-sm);color:var(--text-muted);}
.sa-row{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);}
.sa-row-head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;color:var(--text-strong);}
.sa-row-meta{margin:0;font-size:var(--text-xs);color:var(--text-muted);}
.sa-row-reason{margin:0;font-size:var(--text-sm);color:var(--text);white-space:pre-wrap;word-break:break-word;}

/* ── Navegación del asistente: resaltado de campo (.th-hl) y tarjeta de destino (F4-O0) ──
   Solo colores y tamaños de la paleta. El contorno usa --accent (≥ 3:1 sobre las superficies, lo comprueba th-hl-css.test.js); con
   prefers-reduced-motion no hay pulsos; con forced-colors el contorno es el del sistema. */
.th-hl{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--r-md);background:var(--accent-softer);animation:th-hl-pulse 1.1s var(--ease-out) 2;}
@keyframes th-hl-pulse{0%{outline-offset:3px;outline-width:2px;}50%{outline-offset:6px;outline-width:3px;}100%{outline-offset:3px;outline-width:2px;}}
.th-hl-tip{position:fixed;z-index:9100;max-width:min(320px,calc(100vw - 16px));padding:var(--sp-1) var(--sp-2);border:1px solid var(--accent);border-radius:var(--r-md);background:var(--surface);color:var(--text-strong);font-size:var(--text-xs);box-shadow:var(--sh-lg);pointer-events:none;overflow-wrap:anywhere;}
.th-hl-live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
@media (prefers-reduced-motion:reduce){.th-hl{animation:none;outline-width:2px;outline-offset:3px;}}
@media (forced-colors:active){.th-hl{outline:3px solid Highlight;background:transparent;animation:none;}.th-hl-tip{border-color:CanvasText;background:Canvas;color:CanvasText;}}
.th-navcard{display:flex;flex-direction:column;gap:var(--sp-1);align-items:flex-start;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);min-width:0;}
.th-navcard-title{font-weight:600;color:var(--text-strong);overflow-wrap:anywhere;}
.th-navcard-path{font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere;}
.th-navcard-notice{font-size:var(--text-sm);color:var(--text);overflow-wrap:anywhere;}
.th-navcard[data-tone="blocked"] .th-navcard-notice,.th-navcard[data-tone="missed"] .th-navcard-notice{color:var(--text-strong);}
/* Tarjeta de widget del asistente (assistant-widget.jsx, F5-wire): vista previa compacta con el kit de Paneles a medida */
.asi-wcard{display:flex;flex-direction:column;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);min-width:0;max-width:100%;}
.asi-wcard-head{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;}
.asi-wcard-title{font-weight:600;color:var(--text-strong);overflow-wrap:anywhere;}
.asi-wcard-echo{font-size:var(--text-sm);color:var(--text);overflow-wrap:anywhere;}
.asi-wcard-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1);align-items:center;}
.asi-wcard-diff{margin:0;padding-left:var(--sp-4);font-size:var(--text-xs);color:var(--text-muted);}
.asi-wcard-preview{align-self:stretch;min-width:0;}
.asi-wcard-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;}
.asi-wcard-label{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.asi-wcard-save{display:flex;flex-direction:column;gap:var(--sp-2);align-items:flex-start;align-self:stretch;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);}
.asi-wcard-savelist{display:flex;flex-wrap:wrap;gap:var(--sp-1);}
/* Barra de valoración de las respuestas del asistente explicativo (assistant-feedback-bar.jsx, F3-b) */
.asi-feedback{display:flex;flex-direction:column;gap:var(--sp-2);align-items:flex-start;min-width:0;margin-top:var(--sp-2);}
.asi-feedback-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;}
.asi-feedback-q{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);}
.asi-feedback-thanks{font-size:var(--text-xs);color:var(--text-muted);}
.asi-feedback-live{display:flex;flex-direction:column;gap:var(--sp-2);align-items:flex-start;min-width:0;}
