/* NEIX Tableros — components.css
   Componentes de UI: barra/nav, tabs, tabla, chips (formales), drawer, modal, toasts, selector de
   cuenta Microsoft. Todo por clases + addEventListener (cero inline; lo revienta el gate de CI). */

/* ===== barra superior ===== */
.tbl-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;height:56px;padding:0 clamp(14px,2.2vw,30px);background:var(--tbl-surface);border-bottom:1px solid var(--tbl-border)}
.tbl-brand{display:flex;align-items:center;padding-right:20px;margin-right:6px;border-right:1px solid var(--tbl-border);flex:none}
.tbl-nav{display:flex;flex:1 1 0;min-width:0;margin-left:10px;overflow-x:auto;scrollbar-width:none}
.tbl-nav::-webkit-scrollbar{display:none}
.tbl-nav a{display:flex;align-items:center;height:56px;padding:0 15px;color:var(--tbl-muted);font-size:14px;font-weight:500;border-bottom:1.5px solid transparent;margin-bottom:-1px;white-space:nowrap;cursor:pointer;text-decoration:none;transition:color .14s}
.tbl-nav a:hover{color:var(--tbl-ink-soft)}
.tbl-nav a.is-active{color:var(--tbl-accent);font-weight:700;border-bottom-color:var(--tbl-accent);border-bottom-width:2.5px}
.tbl-nav a:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:-4px;border-radius:4px}
.tbl-bar__sp{display:none}
.tbl-userbtn{display:flex;align-items:center;gap:9px;background:none;border:0;cursor:pointer;padding:6px 8px;border-radius:var(--tbl-r);color:var(--tbl-ink)}
.tbl-userbtn:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.tbl-userbtn:hover{background:var(--tbl-surface-2)}
.tbl-av{width:28px;height:28px;border-radius:50%;background:var(--tbl-accent-soft);color:var(--tbl-accent);display:grid;place-items:center;font-weight:700;font-size:11px;flex:none}
.tbl-userbtn .tbl-un{font-weight:500;font-size:13.5px}
.tbl-rolechip{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted);border:1px solid var(--tbl-border-2);padding:3px 8px;border-radius:999px}
.tbl-umenu{position:absolute;top:52px;right:16px;z-index:30;width:232px;background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-lg);padding:8px;opacity:0;pointer-events:none;transform:translateY(-6px);visibility:hidden;transition:opacity .15s,transform .15s,visibility 0s linear .15s}
.tbl-umenu.is-open{opacity:1;pointer-events:auto;transform:none;visibility:visible;transition:opacity .15s,transform .15s}
.tbl-umenu__id{padding:10px 11px;border-bottom:1px solid var(--tbl-line);margin-bottom:6px}
.tbl-umenu__id .n{font-weight:600;font-size:13.5px}
.tbl-umenu__id .e{font-size:12px;color:var(--tbl-muted)}
.tbl-umenu button{width:100%;text-align:left;background:none;border:0;padding:9px 11px;border-radius:var(--tbl-r);font-size:13.5px;color:var(--tbl-ink);cursor:pointer}
.tbl-umenu button:hover{background:var(--tbl-surface-2)}

/* ===== tabs ===== */
.tbl-tabs{display:flex;gap:2px;border-bottom:1px solid var(--tbl-border);margin-bottom:22px}
.tbl-tab{background:none;border:0;cursor:pointer;padding:10px 14px;font-size:14px;font-weight:500;color:var(--tbl-muted);border-bottom:1.5px solid transparent;margin-bottom:-1px;transition:color .14s}
.tbl-tab:hover{color:var(--tbl-ink-soft)}
.tbl-tab[aria-selected="true"]{color:var(--tbl-ink);font-weight:600;border-bottom-color:var(--tbl-accent)}
.tbl-tab:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:3px;border-radius:3px}

/* ===== toolbar / botones / inputs ===== */
.tbl-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.tbl-filters{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.tbl-filters .tbl-search{flex:1}   /* el buscador va al costado de los filtros y ocupa el resto */
.tbl-search{flex:1;display:flex;align-items:center;gap:9px;background:var(--tbl-surface);border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);padding:0 12px;height:38px;transition:border-color .14s,box-shadow .14s}
.tbl-search:focus-within{border-color:var(--tbl-accent);box-shadow:0 0 0 3px var(--tbl-accent-soft)}
.tbl-search input{border:0;background:none;outline:none;color:var(--tbl-ink);font-size:14px;width:100%}
.tbl-search svg{color:var(--tbl-muted);flex:none}
.tbl-btn{cursor:pointer;font-size:13.5px;font-weight:600;border-radius:var(--tbl-r);height:38px;padding:0 15px;border:1px solid var(--tbl-border-2);background:var(--tbl-surface);color:var(--tbl-ink);display:inline-flex;align-items:center;gap:7px;white-space:nowrap;transition:background .14s,border-color .14s,color .14s}
.tbl-btn:hover{background:var(--tbl-surface-2)}
.tbl-btn:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.tbl-btn--primary{background:var(--tbl-accent-fill);border-color:var(--tbl-accent-fill);color:var(--tbl-accent-ink)}
.tbl-btn--primary:hover{filter:brightness(.92)}
.tbl-btn--sm{height:31px;padding:0 11px;font-size:12.5px}
.tbl-btn--ghost{border-color:transparent;background:transparent;color:var(--tbl-ink-soft)}
.tbl-btn--ghost:hover{background:var(--tbl-surface-2)}
.tbl-btn--ok{color:var(--tbl-ok);border-color:transparent;background:transparent}
.tbl-btn--ok:hover{background:var(--tbl-ok-bg)}
.tbl-btn--danger{color:var(--tbl-danger);border-color:transparent;background:transparent}
.tbl-btn--danger:hover{background:var(--tbl-danger-bg)}
select.tbl-select{appearance:none;background:var(--tbl-surface);border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);padding:0 32px 0 13px;height:38px;font-size:13.5px;color:var(--tbl-ink);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%238A929E' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}
select.tbl-select:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
/* Rango de fechas (Auditoría): dos inputs date con la misma caja que los selects, sin la flecha. */
.tbl-daterange{display:flex;align-items:center;gap:6px}
.tbl-daterange__sep{color:var(--tbl-muted)}
.tbl-datein{background:var(--tbl-surface);border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);padding:0 11px;height:38px;font-size:13.5px;color:var(--tbl-ink);cursor:pointer;font-family:inherit}
.tbl-datein:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}

/* ===== card + tabla ===== */
.tbl-card{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-sm);overflow:hidden}
.tbl-tablewrap{overflow-x:auto}
.tbl-table{width:100%;border-collapse:collapse;font-size:14px}
.tbl-table thead th{text-align:left;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--tbl-muted);padding:12px 18px;border-bottom:1px solid var(--tbl-border);white-space:nowrap}
.tbl-table tbody td{padding:13px 18px;border-bottom:1px solid var(--tbl-line);vertical-align:middle}
.tbl-table tbody tr:last-child td{border-bottom:0}
.tbl-table tr.is-row{cursor:pointer;transition:background .12s}
.tbl-table tr.is-row:hover{background:var(--tbl-surface-2)}
.tbl-table tr.is-row:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:-2px}
.tbl-uname{font-weight:600}
.tbl-umail{color:var(--tbl-muted);font-size:12.5px;margin-top:1px}
.tbl-empty{padding:44px 18px;text-align:center;color:var(--tbl-muted);font-size:13.5px}

/* ===== pills de estado/rol ===== */
.tbl-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:999px;white-space:nowrap}
.tbl-pill .dot{width:5px;height:5px;border-radius:50%;background:currentColor}
.tbl-pill--admin{color:var(--tbl-accent);background:var(--tbl-accent-soft)}
.tbl-pill--usuario{color:var(--tbl-ink-soft);background:var(--tbl-surface-2);border:1px solid var(--tbl-border)}
.tbl-pill--ok{color:var(--tbl-ok);background:var(--tbl-ok-bg)}
.tbl-pill--susp,.tbl-pill--denied{color:var(--tbl-danger);background:var(--tbl-danger-bg)}

/* ===== chips de páginas — versión formal (marcador cuadrado, borde sobrio, radio chico) ===== */
.tbl-chips{display:flex;flex-wrap:wrap;gap:6px}
.tbl-chip{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:500;letter-spacing:.005em;color:var(--tbl-ink-soft);background:var(--tbl-surface);border:1px solid var(--tbl-border-2);padding:3px 9px 3px 8px;border-radius:5px;line-height:1.45}
.tbl-chip .sw{width:7px;height:7px;border-radius:2px;flex:none}
.tbl-chip--all{color:var(--tbl-accent);background:var(--tbl-accent-soft);border-color:transparent;font-weight:600}
.tbl-chip--none{color:var(--tbl-muted);border-style:dashed}

/* ===== filas de área (Ajustes › Áreas) ===== */
.tbl-arearow{display:flex;align-items:center;gap:13px;padding:15px 18px;border-bottom:1px solid var(--tbl-line)}
.tbl-arearow:last-child{border-bottom:0}
.tbl-areadot{width:9px;height:9px;border-radius:2px;flex:none}
.tbl-arearow b{font-weight:600}
.tbl-arearow .cnt{margin-left:auto;color:var(--tbl-muted);font-size:12.5px;font-variant-numeric:tabular-nums}
.tbl-arearow .act{opacity:0;transition:opacity .12s}
.tbl-arearow:hover .act,.tbl-arearow:focus-within .act{opacity:1}
.tbl-fixedtag{font-size:10.5px;color:var(--tbl-muted);border:1px solid var(--tbl-border);border-radius:999px;padding:2px 8px;margin-left:auto}
.tbl-code{font-family:var(--tbl-mono);font-size:11.5px;font-weight:600;color:var(--tbl-ink-soft);background:var(--tbl-surface-2);border:1px solid var(--tbl-border);padding:2px 7px;border-radius:5px}

/* ===== selector de cuenta Microsoft (login) ===== */
.tbl-chooser{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:20px;background:var(--tbl-overlay);opacity:0;pointer-events:none;transition:opacity .16s}
.tbl-chooser.is-open{opacity:1;pointer-events:auto}
.tbl-chooser__card{width:388px;max-width:100%;background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:12px;box-shadow:var(--tbl-shadow-lg);overflow:hidden;transform:translateY(8px);transition:transform .18s}
.tbl-chooser.is-open .tbl-chooser__card{transform:none}
.tbl-chooser__h{display:flex;align-items:center;gap:10px;padding:18px 22px;border-bottom:1px solid var(--tbl-line);font-weight:600;font-size:15px}
.tbl-acct{display:flex;align-items:center;gap:13px;padding:13px 22px;cursor:pointer;border:0;border-bottom:1px solid var(--tbl-line);text-align:left;width:100%;background:none}
.tbl-acct:hover{background:var(--tbl-surface-2)}
.tbl-acct .tbl-av{width:34px;height:34px;font-size:12.5px}
.tbl-acct .an{font-weight:600;font-size:13.5px;display:block}
.tbl-acct .ae{font-size:12px;color:var(--tbl-muted);display:block}
.tbl-acct--other .tbl-av{background:var(--tbl-surface-2);color:var(--tbl-muted)}

/* ===== drawer (alta/edición de usuario) ===== */
.tbl-scrim{position:fixed;inset:0;background:var(--tbl-overlay);opacity:0;pointer-events:none;transition:opacity .18s;z-index:40}
.tbl-scrim.is-open{opacity:1;pointer-events:auto}
.tbl-drawer{position:fixed;top:0;right:0;height:100%;width:432px;max-width:93vw;z-index:50;background:var(--tbl-surface);border-left:1px solid var(--tbl-border);box-shadow:var(--tbl-shadow-lg);transform:translateX(100%);transition:transform .24s cubic-bezier(.22,.68,.2,1),visibility 0s linear .24s;display:flex;flex-direction:column;visibility:hidden}
/* cerrado: fuera del foco/lector (visibility) y sin la franja de sombra en el borde derecho */
.tbl-drawer:not(.is-open){box-shadow:none}
.tbl-drawer.is-open{transform:none;visibility:visible;transition:transform .24s cubic-bezier(.22,.68,.2,1)}
.tbl-drawer__head{padding:22px 24px 18px;border-bottom:1px solid var(--tbl-border);position:relative}
.tbl-eyebrow{font-size:10.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--tbl-muted)}
.tbl-idrow{display:flex;align-items:center;gap:13px;margin-top:13px}
.tbl-avatar{width:40px;height:40px;border-radius:50%;background:var(--tbl-accent-soft);color:var(--tbl-accent);display:grid;place-items:center;font-weight:600;font-size:14px;flex:none}
.tbl-xclose{position:absolute;top:18px;right:18px;width:30px;height:30px;border-radius:7px;border:1px solid var(--tbl-border);background:var(--tbl-surface);color:var(--tbl-muted);cursor:pointer;display:grid;place-items:center}
.tbl-xclose:hover{background:var(--tbl-surface-2);color:var(--tbl-ink)}
.tbl-drawer__body{padding:8px 24px 20px;overflow-y:auto;flex:1}
.tbl-step{font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--tbl-muted);margin:22px 0 9px;display:flex;align-items:center;gap:8px}
.tbl-step i{width:16px;height:16px;border-radius:50%;background:var(--tbl-accent-fill);color:var(--tbl-accent-ink);display:grid;place-items:center;font-size:9px;font-style:normal}
.tbl-field{display:block;margin:14px 0}
.tbl-field span{display:block;font-size:12px;font-weight:500;color:var(--tbl-ink-soft);margin-bottom:6px}
.tbl-inp{width:100%;height:40px;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font-size:14px;padding:0 12px;outline:none;transition:border-color .14s,box-shadow .14s}
.tbl-inp:focus{border-color:var(--tbl-accent);box-shadow:0 0 0 3px var(--tbl-accent-soft)}
.tbl-inp.is-err{border-color:var(--tbl-danger);box-shadow:0 0 0 3px var(--tbl-danger-bg)}
.tbl-fielderr{font-size:12px;color:var(--tbl-danger);margin-top:6px;display:none}
.tbl-fielderr.is-show{display:block}
.tbl-seg{display:flex;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);overflow:hidden}
.tbl-seg button{flex:1;border:0;background:var(--tbl-surface);color:var(--tbl-ink-soft);font-size:13px;font-weight:600;padding:9px 8px;cursor:pointer;border-right:1px solid var(--tbl-border-2);transition:background .12s,color .12s}
.tbl-seg button:last-child{border-right:0}
.tbl-seg button[aria-pressed="true"]{background:var(--tbl-accent-fill);color:var(--tbl-accent-ink)}
.tbl-pagechecks{display:flex;flex-direction:column;gap:6px}
.tbl-pcheck{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--tbl-border);border-radius:var(--tbl-r);cursor:pointer;transition:border-color .12s,background .12s}
.tbl-pcheck:hover{border-color:var(--tbl-border-2)}
.tbl-pcheck input{width:16px;height:16px;accent-color:var(--tbl-accent);cursor:pointer}
.tbl-pcheck .sw{width:8px;height:8px;border-radius:2px;flex:none}
.tbl-pcheck b{font-weight:500;font-size:13.5px}
.tbl-pcheck.is-dis{opacity:.5;pointer-events:none;background:var(--tbl-surface-2)}
.tbl-note{display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:10px 12px;background:var(--tbl-accent-soft);border-radius:var(--tbl-r);font-size:12.5px;color:var(--tbl-ink-soft)}
.tbl-note svg{flex:none;color:var(--tbl-accent);margin-top:1px}
.tbl-drawer__foot{padding:15px 24px;border-top:1px solid var(--tbl-border);display:flex;align-items:center;gap:10px}
.tbl-drawer__foot .sp{flex:1}

/* ===== modal ===== */
.tbl-modal{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:20px;background:var(--tbl-overlay);opacity:0;pointer-events:none;transition:opacity .16s}
.tbl-modal.is-open{opacity:1;pointer-events:auto}
.tbl-modal__card{width:400px;max-width:100%;background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-lg);padding:22px;transform:translateY(8px);transition:transform .18s}
.tbl-modal.is-open .tbl-modal__card{transform:none}
.tbl-modal__card h3{font-size:17px;font-weight:700;letter-spacing:-.01em}
.tbl-modal__card p.sub{font-size:13px;color:var(--tbl-muted);margin:5px 0 2px}
.tbl-swatches{display:flex;gap:9px;margin-top:4px}
/* Swatch del selector de color (modal Área): 26×26. Va SCOPEADO a .tbl-swatches para no colisionar con
   el swatch de leyenda de gráficos (.tbl-sw 12×12, más abajo) — misma clase, misma especificidad, ganaba
   el último → el picker quedaba a 12×12. El scope le sube la especificidad y restaura los 26×26. */
.tbl-swatches .tbl-sw{width:26px;height:26px;border-radius:6px;cursor:pointer;border:2px solid transparent}
.tbl-swatches .tbl-sw[aria-pressed="true"]{border-color:var(--tbl-ink);outline:2px solid var(--tbl-surface);outline-offset:-4px}
.tbl-modal__foot{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}

/* ===== toast ===== */
.tbl-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,18px);opacity:0;pointer-events:none;transition:all .22s;z-index:80;background:var(--tbl-ink);color:var(--tbl-surface);padding:10px 18px;border-radius:999px;font-size:13.5px;font-weight:500;box-shadow:var(--tbl-shadow-md);display:flex;align-items:center;gap:9px}
.tbl-toast.is-show{opacity:1;transform:translate(-50%,0)}
.tbl-toast .td{width:6px;height:6px;border-radius:50%;background:var(--tbl-ok)}

/* ===== responsive ===== */
/* RESP-02: pista de "hay más páginas" en la nav en CUALQUIER ancho (antes sólo ≤560px: entre 561 y ~1280px
   "Ajustes" y su aviso de Control quedaban fuera de vista sin ninguna señal). La marca .is-more-r/l la pone
   js/ui.js (EDGE_SEL) sólo cuando hay overflow real. */
.tbl-nav.is-more-r{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent)}
.tbl-nav.is-more-l{-webkit-mask-image:linear-gradient(to left,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to left,#000 calc(100% - 22px),transparent)}
.tbl-nav.is-more-l.is-more-r{-webkit-mask-image:linear-gradient(to right,transparent,#000 22px,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to right,transparent,#000 22px,#000 calc(100% - 22px),transparent)}
/* el nombre del usuario ocupa ~150px: por debajo de 1280 sale (queda el avatar + rol) y la nav entra entera a 1024 */
@media (max-width:1279px){ .tbl-un{display:none} }
/* tablet / pantallas medianas: dejar que las barras de herramientas envuelvan si no entran */
@media (max-width:820px){
  .tbl-nav a{padding:0 12px}
  .tbl-toolbar,.tbl-filters{flex-wrap:wrap}
}
/* celular: buscador arriba a todo el ancho, nav compacto, solo avatar + chip */
@media (max-width:560px){
  .tbl-brand{padding-right:12px;margin-right:2px}
  .tbl-nav{margin-left:2px}
  /* #6: pista de scroll — al haber varias páginas, la nav se desliza (scrollbar oculto). Un fundido en el
     borde derecho insinúa que hay más ítems. Sólo en celular, donde el espacio aprieta y el overflow es probable. */
  .tbl-nav a{padding:0 10px;font-size:13.5px}
  .tbl-un{display:none}
  .tbl-userbtn{padding:6px 4px;gap:6px}
  .tbl-toolbar .tbl-search,.tbl-filters .tbl-search{flex:1 1 100%;order:-1}
  .tbl-drawer__foot,.tbl-modal__foot{flex-wrap:wrap}
}
/* celular chico */
@media (max-width:380px){
  .tbl-rolechip{display:none}
}
/* iOS hace zoom al enfocar un input con font-size < 16px. Los controles de texto/selección de Ajustes y
   el drawer son 14/13.5px → en el teléfono el foco disparaba un zoom molesto. A ≤720px se suben a 16px
   (mismo criterio que la búsqueda de cartera, .cli-topq). Sólo mobile: no cambia el desktop. */
@media (max-width:720px){
  .tbl-search input,.tbl-inp,select.tbl-select{font-size:16px}
}

/* ===== estados async, skeleton ===== */
.tbl-skel{display:inline-block;height:11px;border-radius:5px;background:linear-gradient(90deg,var(--tbl-surface-2) 25%,var(--tbl-border) 37%,var(--tbl-surface-2) 63%);background-size:400% 100%;animation:tbl-shimmer 1.3s ease infinite}
@keyframes tbl-shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
.tbl-ref{font-size:12px;color:var(--tbl-muted);margin-top:6px}
.tbl-ref b{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:600;letter-spacing:.02em}
.tbl-state{padding:34px 18px;text-align:center;color:var(--tbl-muted);font-size:13.5px}
.tbl-state--err{color:var(--tbl-danger)}
.tbl-state--err .tbl-btn{margin-left:8px}

/* ===== selección / bulk ===== */
.tbl-cbcol{width:38px}
.tbl-table td.tbl-cbcol input,.tbl-table th.tbl-cbcol input{width:16px;height:16px;accent-color:var(--tbl-accent);cursor:pointer}
.tbl-sortbtn{background:none;border:0;cursor:pointer;font:inherit;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--tbl-muted);padding:0}
.tbl-sortbtn:hover{color:var(--tbl-ink-soft)}
.tbl-cell-user{cursor:pointer}
.tbl-bulkbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px;padding:9px 12px;background:var(--tbl-accent-soft);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);font-size:13px}
.tbl-bulkbar__n{font-weight:600;margin-right:4px}
.tbl-select--sm{height:31px;font-size:12.5px;padding:0 28px 0 10px}

/* ===== invitado / pills extra ===== */
.tbl-pill--pend{color:var(--tbl-warn);background:var(--tbl-warn-bg)}
.tbl-invited{font-size:11.5px;color:var(--tbl-warn);margin-top:3px}
.tbl-chip--more{color:var(--tbl-muted);cursor:default}

/* ===== confirm: impacto + botón peligro ===== */
.tbl-impact{margin-top:12px;padding:11px 13px;background:var(--tbl-danger-bg);color:var(--tbl-danger);border-radius:var(--tbl-r);font-size:12.8px}
.tbl-btn--dangerfill{background:var(--tbl-danger-fill);border-color:var(--tbl-danger-fill);color:#fff}
.tbl-btn--dangerfill:hover{filter:brightness(.94)}

/* ===== vista inversa "quién ve la página X" ===== */
.tbl-revhead{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tbl-muted);margin:6px 0 12px}
.tbl-revrow{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--tbl-line)}
.tbl-revrow:last-child{border-bottom:0}
.tbl-revrow__id{flex:1;min-width:0}
.tbl-via{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px}
.tbl-via--admin{color:var(--tbl-accent);background:var(--tbl-accent-soft)}
.tbl-via--asignada{color:var(--tbl-ink-soft);background:var(--tbl-surface-2);border:1px solid var(--tbl-border)}

/* ===== áreas: acciones por fila ===== */
.tbl-arearow__acts{display:inline-flex;gap:4px;margin-left:auto}
.tbl-arearow .cnt{margin-left:auto}
.tbl-arearow:hover .cnt,.tbl-arearow:focus-within .cnt{margin-left:0}

/* ===== auditoría: expand + diff + paginación ===== */
.tbl-expcol{width:34px;text-align:center}
.tbl-exp{background:none;border:0;cursor:pointer;color:var(--tbl-muted);font-size:12px;padding:2px 4px;border-radius:4px}
.tbl-exp:hover{color:var(--tbl-ink);background:var(--tbl-surface-2)}
.tbl-arow-detail td{background:var(--tbl-surface-2)}
.tbl-diff{font-family:var(--tbl-mono);font-size:12px;color:var(--tbl-ink-soft);padding:4px 0}
.tbl-pager{display:flex;align-items:center;gap:12px;justify-content:flex-end;margin-top:14px}
.tbl-pager__n{font-size:12.5px;color:var(--tbl-muted);font-variant-numeric:tabular-nums}
.tbl-retnote{margin-top:12px;font-size:12px;color:var(--tbl-muted);text-align:center}

/* ===== toast con acción ===== */
/* el toast usa fondo var(--tbl-ink) (invierte por tema); la acción debe invertir igual que el texto
   (var(--tbl-surface)) para no quedar ilegible en oscuro. Se distingue por subrayado + peso. */
.tbl-toast__act{background:none;border:0;color:var(--tbl-surface);font-weight:700;cursor:pointer;text-decoration:underline;font-size:13px;margin-left:4px}

/* ===== selector demo "Ver como" ===== */
.tbl-persona{position:fixed;left:20px;bottom:20px;z-index:70}
.tbl-persona__btn{display:flex;align-items:center;gap:9px;background:var(--tbl-surface);border:1px solid var(--tbl-border-2);border-radius:999px;padding:7px 8px 7px 13px;box-shadow:var(--tbl-shadow-md);cursor:pointer;font-weight:500;font-size:13px;color:var(--tbl-ink)}
.tbl-persona__btn .peye{color:var(--tbl-muted);font-size:11px;font-weight:600;letter-spacing:.03em}
.tbl-persona__btn .pav{width:24px;height:24px;border-radius:50%;background:var(--tbl-accent-soft);color:var(--tbl-accent);display:grid;place-items:center;font-size:10.5px;font-weight:700}
.tbl-persona__menu{position:absolute;bottom:calc(100% + 10px);left:0;width:290px;background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-lg);padding:7px;opacity:0;pointer-events:none;transform:translateY(8px);transition:all .16s}
.tbl-persona__menu.is-open{opacity:1;pointer-events:auto;transform:none}
.tbl-persona__menu .ph{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tbl-muted);padding:8px 10px 6px}
.tbl-pitem{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:var(--tbl-r);cursor:pointer}
.tbl-pitem:hover{background:var(--tbl-surface-2)}
.tbl-pitem.is-sel{background:var(--tbl-accent-soft)}
.tbl-pitem .pav{width:30px;height:30px;border-radius:50%;background:var(--tbl-surface-2);color:var(--tbl-ink-soft);display:grid;place-items:center;font-size:11px;font-weight:700;flex:none}
.tbl-pitem.is-sel .pav{background:var(--tbl-accent-fill);color:var(--tbl-accent-ink)}
.tbl-pitem .pnn{font-weight:600;font-size:13px}
.tbl-pitem .prr{font-size:11.5px;color:var(--tbl-muted)}
.tbl-failrow{display:flex;align-items:center;gap:8px;padding:9px 10px;margin-top:4px;border-top:1px solid var(--tbl-line);font-size:12px;color:var(--tbl-muted);cursor:pointer}

/* ===== tablero de Facturación (js/tablero.js) ===== */
.tbl-phead--dash{display:flex;flex-direction:column;gap:2px}
.tbl-phead__sub{margin:2px 0 0;color:var(--tbl-muted);font-size:13px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.tbl-sello{font-size:11px;font-weight:600;color:var(--tbl-ink-soft);background:var(--tbl-surface-2);border:1px solid var(--tbl-border);border-radius:999px;padding:2px 9px}

/* KPIs */
.tbl-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:clamp(14px,1.8vh,20px) 0}
.tbl-kpi{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-sm);padding:16px 18px;min-width:0}
.tbl-kpi__lbl{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--tbl-muted)}
.tbl-kpi__val{font-size:clamp(22px,1.4vw + 14px,30px);font-weight:700;letter-spacing:-.02em;margin-top:5px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl-kpi__sub{font-size:12px;color:var(--tbl-muted);margin-top:3px}
.tbl-kpi--cumpl.is-ok .tbl-kpi__val{color:var(--tbl-ok)}
.tbl-kpi--cumpl.is-warn .tbl-kpi__val{color:var(--tbl-warn)}
.tbl-kpi--cumpl.is-bad .tbl-kpi__val{color:var(--tbl-danger)}
.tbl-kpi--skel{display:flex;flex-direction:column;gap:9px;justify-content:center}

/* grilla de cards */
.tbl-dash{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}
.tbl-card__h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:15px 18px 0}
.tbl-card__h h2{font-size:14.5px;font-weight:600;letter-spacing:-.01em}
.tbl-card__hint{font-size:11.5px;color:var(--tbl-muted);white-space:nowrap}
.tbl-card{grid-column:span 6;display:flex;flex-direction:column}
.tbl-card--wide{grid-column:span 12}
.tbl-card--skel{min-height:120px;justify-content:center;align-items:center;padding:22px}

/* gráfico mensual (SVG) */
.tbl-ch{padding:14px 12px 2px}
.tbl-ch__svg{width:100%;height:auto;display:block}
.tbl-ch__bar{fill:var(--tbl-accent)}
.tbl-ch__line{fill:none;stroke:var(--tbl-ink-soft);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.tbl-ch__dot{fill:var(--tbl-surface);stroke:var(--tbl-ink-soft);stroke-width:1.6}
.tbl-ch__xlbl{fill:var(--tbl-muted);font-size:11px;text-anchor:middle}
.tbl-ch__axis{stroke:var(--tbl-border-2);stroke-width:1}
.tbl-legend{display:flex;gap:18px;padding:0 18px 16px;flex-wrap:wrap}
.tbl-legend__i{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--tbl-ink-soft)}
.tbl-sw{width:12px;height:12px;border-radius:3px;flex:none}
.tbl-sw--bar{background:var(--tbl-accent)}
.tbl-sw--line{height:0;border-top:2px solid var(--tbl-ink-soft);border-radius:0}

/* barras horizontales */
.tbl-hbars{padding:14px 18px 18px;display:flex;flex-direction:column;gap:11px}
.tbl-hbar{display:grid;grid-template-columns:minmax(90px,32%) 1fr auto;align-items:center;gap:12px}
.tbl-hbar__lbl{font-size:12.5px;font-weight:500;color:var(--tbl-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl-hbar__track{height:12px;background:var(--tbl-surface-2);border-radius:999px;overflow:hidden}
.tbl-hbar__fill{display:block;height:100%;border-radius:999px;min-width:2px;transition:width .5s cubic-bezier(.2,.7,.3,1)}
.tbl-hbar__fill--accent{background:var(--tbl-accent)}
.tbl-hbar__fill.is-neg{background:var(--tbl-danger)}
.tbl-hbar__val{font-size:12.5px;font-weight:600;color:var(--tbl-ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl-hbar__val.is-neg{color:var(--tbl-danger)}

/* ===== Pestaña "Uso" (adopción por herramienta): barras de adopción por página + tabla por usuario ===== */
#uso-host .tbl-card + .tbl-card{margin-top:16px}
.uso-hd{display:flex;align-items:baseline;gap:10px;padding:14px 18px;font-size:14px;font-weight:600;letter-spacing:-.01em;border-bottom:1px solid var(--tbl-line)}
.uso-hd__sub{font-size:11.5px;font-weight:500;color:var(--tbl-muted)}
.uso-list{padding:14px 18px 18px;display:flex;flex-direction:column;gap:15px}
.uso-row__hd{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.uso-dot{width:9px;height:9px;border-radius:3px;flex:none;background:var(--tbl-border-2)}
.uso-name{font-size:13px;font-weight:600;color:var(--tbl-ink)}
.uso-hits{margin-left:auto;font-size:13px;font-weight:700;color:var(--tbl-ink);font-variant-numeric:tabular-nums}
.uso-bar{height:8px;background:var(--tbl-surface-2);border:1px solid var(--tbl-line);border-radius:999px;overflow:hidden}
.uso-bar__fill{display:block;height:100%;border-radius:999px;min-width:2px;background:var(--tbl-accent);transition:width .5s cubic-bezier(.2,.7,.3,1)}
.uso-bar__fill--idle{background:var(--tbl-border-2)}
.uso-sub{margin-top:5px;font-size:11.5px;color:var(--tbl-muted)}
.uso-row--idle .uso-name{color:var(--tbl-ink-soft)}
@media (max-width:1000px){.tbl-card{grid-column:span 12}}
@media (max-width:720px){.tbl-kpis{grid-template-columns:repeat(2,1fr)}}
@media (max-width:420px){.tbl-kpis{grid-template-columns:1fr}.tbl-hbar{grid-template-columns:minmax(72px,40%) 1fr auto;gap:8px}}

/* ============ Ajustes → OKRs (administración estructural) ============ */
/* Dos niveles: GALERÍA de cards (una por área) → DETALLE del área. Full-width, sin grid lateral. */

/* anillo de progreso reutilizable (donut): color por CLASE → currentColor en el arco (CSP-limpio) */
.okra-ring{flex:none;display:block}
.okra-ring__trk{fill:none;stroke:var(--tbl-border)}
.okra-ring__val{fill:none;stroke:currentColor;transition:stroke-dasharray .5s cubic-bezier(.2,.7,.3,1)}
.okra-ring__t{text-anchor:middle;dominant-baseline:central;font-weight:700;fill:var(--tbl-ink);font-variant-numeric:tabular-nums;font-size:12.5px}
.okr-ring--c1{color:var(--okr-c1)}.okr-ring--c2{color:var(--okr-c2)}.okr-ring--c3{color:var(--okr-c3)}.okr-ring--c4{color:var(--okr-c4)}.okr-ring--c5{color:var(--okr-c5)}
.okr-ring--c6{color:var(--okr-c6)}.okr-ring--c7{color:var(--okr-c7)}.okr-ring--c8{color:var(--okr-c8)}.okr-ring--c9{color:var(--okr-c9)}.okr-ring--c10{color:var(--okr-c10)}
.okr-ring--st-ok{color:var(--tbl-ok)}.okr-ring--st-prog{color:var(--tbl-accent)}.okr-ring--st-na{color:var(--tbl-border-2)}
.okr-ring--st-na .okra-ring__t{fill:var(--tbl-muted)}

/* --- nivel 1: galería de áreas --- */
.okra-galhd{margin-bottom:18px}
.okra-galhd h2{font-size:16px;font-weight:700;letter-spacing:-.01em}
.okra-galhd p{margin:3px 0 0;color:var(--tbl-muted);font-size:13px}
.okra-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(256px,1fr));gap:14px}
.okra-card{position:relative;display:flex;flex-direction:row;align-items:center;gap:15px;text-align:left;padding:16px 18px;background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-sm);cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .12s;min-width:0}
.okra-card:hover{border-color:var(--tbl-border-2);box-shadow:var(--tbl-shadow-md);transform:translateY(-2px)}
.okra-card:focus-visible{outline:none;border-color:var(--tbl-accent);box-shadow:0 0 0 2px var(--tbl-accent-soft)}
.okra-card__info{min-width:0;display:flex;flex-direction:column;gap:4px}
.okra-card__name{font-size:15px;font-weight:700;color:var(--tbl-ink);letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.okra-card__meta{font-size:12px;color:var(--tbl-muted)}
.okra-card__meta b{color:var(--tbl-ink-soft);font-weight:700}
.okra-card__meta .dotsep{opacity:.5;margin:0 2px}
.okra-card__ord{position:absolute;top:8px;right:8px;display:flex;gap:2px;opacity:0;transition:opacity .12s}
.okra-card:hover .okra-card__ord,.okra-card:focus-within .okra-card__ord{opacity:1}
.okra-mini{cursor:pointer;width:24px;height:24px;border-radius:6px;border:1px solid var(--tbl-border-2);background:var(--tbl-surface);color:var(--tbl-ink-soft);font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:background .14s,color .14s}
.okra-mini:hover{background:var(--tbl-surface-2);color:var(--tbl-ink)}
.okra-mini:disabled{opacity:.3;cursor:default}
.okra-card--add{flex-direction:column;align-items:center;justify-content:center;gap:9px;min-height:96px;color:var(--tbl-muted);border-style:dashed;box-shadow:none;font-size:13.5px;font-weight:600}
.okra-card--add:hover{color:var(--tbl-accent);border-color:var(--tbl-accent);transform:none}
.okra-addico{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--tbl-surface-2);border:1px solid var(--tbl-border-2)}

/* --- nivel 2: detalle --- */
.okra-back{cursor:pointer;display:inline-flex;align-items:center;gap:5px;margin-bottom:16px;padding:6px 13px 6px 9px;font-size:13px;font-weight:600;color:var(--tbl-ink-soft);background:none;border:1px solid var(--tbl-border-2);border-radius:999px;transition:background .14s,color .14s,border-color .14s}
.okra-back:hover{background:var(--tbl-surface-2);color:var(--tbl-ink);border-color:var(--tbl-ink-soft)}
.okra-main{display:block}
.okra-main > *{margin-bottom:16px}
.okra-mainhd{align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:10px}
.okra-mtitle{display:flex;align-items:center;gap:11px;flex:1 1 240px;min-width:0}
.okra-mtitle h2{font-size:19px;font-weight:700;letter-spacing:-.015em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.okra-adot{width:11px;height:11px;border-radius:50%;flex:none}
.okra-mainacts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* hero de resumen del área */
.okra-hero{display:flex;flex-direction:row;align-items:center;gap:24px 44px;flex-wrap:wrap;padding:20px 24px}
.okra-hero__prog{display:flex;flex-direction:column;align-items:center;gap:8px;flex:none}
.okra-hero__lbl{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted)}
.okra-hero .okra-ring__t{font-size:17px}
.okra-hero__stats{display:flex;gap:44px}
.okra-heroc{display:flex;flex-direction:column;gap:2px}
.okra-heroc .v{font-size:27px;font-weight:700;color:var(--tbl-ink);font-variant-numeric:tabular-nums;line-height:1}
.okra-heroc .l{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--tbl-muted)}

.okra-obj{padding:0}
.okra-objhd{display:flex;align-items:center;gap:12px 16px;padding:15px 18px;border-bottom:1px solid var(--tbl-border);flex-wrap:wrap}
.okra-objid{font-size:10.5px;font-weight:700;letter-spacing:.05em;color:var(--tbl-accent);background:var(--tbl-accent-soft);border-radius:6px;padding:4px 9px;white-space:nowrap;flex:none}
.okra-objmain{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:3px}
.okra-objmain b{font-weight:600;font-size:14.5px}
.okra-objsub{font-size:12px;color:var(--tbl-muted);line-height:1.4}
.okra-objstat{display:inline-flex;align-items:center;gap:9px;flex:none}
.okra-objstat .okr-bar{width:88px;height:7px}
.okra-objstat .opc{font-size:13px;font-weight:700;min-width:38px;text-align:right}
.okra-krn{font-size:11px;font-weight:600;color:var(--tbl-ink-soft);background:var(--tbl-surface-2);border:1px solid var(--tbl-border-2);border-radius:999px;padding:2px 9px;white-space:nowrap}
.okra-objacts{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex:none}
.okra-krtable{width:100%;min-width:560px}
.okra-krtable thead th{padding-top:11px;padding-bottom:11px}
.okra-krtable td{padding:12px 18px;font-size:13px;border-bottom:1px solid var(--tbl-line);vertical-align:middle}
.okra-krtable tbody tr:last-child td{border-bottom:0}
.okra-krtable tbody tr:hover td{background:var(--tbl-surface-2)}
.okra-kpi{font-weight:700;color:var(--tbl-accent);width:40px}
.okra-krdet{font-weight:500;min-width:220px;color:var(--tbl-ink)}
.okra-cnowrap{white-space:nowrap}
.okra-avcol{width:158px}
.okra-prog{display:inline-flex;align-items:center;gap:10px}
.okra-prog .okr-bar{width:90px;height:7px}
.okra-prog .opc{font-size:12.5px;font-weight:700;min-width:34px}
.okra-acts{display:flex;gap:6px;align-items:center;justify-content:flex-end;white-space:nowrap}
.okra-ord{display:inline-flex;gap:2px}
.okra-ord .tbl-btn{width:30px;padding:0;justify-content:center}
.tbl-iconbtn{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--tbl-r);border:1px solid transparent;background:none;color:var(--tbl-muted);transition:background .14s,color .14s,border-color .14s}
.tbl-iconbtn:hover{background:var(--tbl-danger-bg);color:var(--tbl-danger);border-color:var(--tbl-danger-bg)}
.okra-objfoot{padding:12px 18px;border-top:1px solid var(--tbl-border);background:var(--tbl-surface-2)}
.okra-emptybig{display:flex;flex-direction:column;gap:5px;align-items:center;text-align:center;padding:38px 20px;color:var(--tbl-muted)}
.okra-emptybig b{color:var(--tbl-ink);font-size:14.5px;font-weight:600}

.tbl-note--inline{margin-top:6px;font-size:11.5px;color:var(--tbl-muted);background:none;border:0;padding:0}

@media (max-width:560px){
  .okra-mtitle h2{white-space:normal}
}

/* Ajustes → tab "Reglas": referencia de reglas de negocio y fórmulas (documentación viva) */
.tbl-rules-doc{max-width:900px}
.tbl-rules-intro{font-size:12.5px;color:var(--tbl-muted);line-height:1.55;margin:2px 0 16px}
.tbl-rules-intro code{font-family:var(--tbl-mono);font-size:11.5px}
.tbl-rules-sec{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-sm);padding:6px 18px 14px;margin-bottom:14px}
.tbl-rules-h{font-size:13px;font-weight:800;letter-spacing:.02em;color:var(--tbl-accent);margin:14px 0 4px}
.tbl-rules-sub{font-size:12px;color:var(--tbl-muted);margin:0 0 6px;line-height:1.5}
.tbl-rule{padding:11px 0;border-top:1px solid var(--tbl-line)}
.tbl-rule__n{font-size:13px;font-weight:700;color:var(--tbl-ink)}
.tbl-rule__f{margin:5px 0 4px}
.tbl-rule__f code{font-family:var(--tbl-mono);font-size:12px;font-weight:600;color:var(--tbl-ink);background:var(--tbl-surface-2);border:1px solid var(--tbl-border);border-radius:6px;padding:3px 8px;display:inline-block;white-space:normal;word-break:break-word}
.tbl-rule__d{font-size:12.5px;color:var(--tbl-ink-soft);line-height:1.55}

/* ============ Prospectos (módulo "Gestión del área", Middle Office · js/prospectos.js) ============
   Usa los tokens del design system (--tbl-*). Overlay/drawer espeja el modal de operaciones. */
.pr-wrap{display:flex;flex-direction:column;gap:14px}
.pr-load,.pr-err,.pr-empty{padding:22px;text-align:center;color:var(--tbl-muted);font-size:13px}
.pr-err{color:var(--tbl-danger)}
/* KPIs */
.pr-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media(max-width:640px){.pr-kpis{grid-template-columns:repeat(2,1fr)}}
.pr-kpi{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);padding:12px 14px}
.pr-kpi__n{font-size:22px;font-weight:800;color:var(--tbl-ink);font-variant-numeric:tabular-nums}
.pr-kpi__l{font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--tbl-muted);margin-top:2px}
/* Embudo */
.pr-funnel{display:flex;flex-wrap:wrap;gap:8px}
.pr-fstage{display:inline-flex;align-items:center;gap:7px;background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:999px;padding:6px 12px;cursor:pointer;font:inherit;font-size:12.5px;color:var(--tbl-ink-soft);transition:border-color var(--mo-fast),background var(--mo-fast)}
.pr-fstage:hover{background:var(--tbl-surface-2)}
.pr-fstage.on{border-color:var(--tbl-accent);background:var(--tbl-accent-soft);color:var(--tbl-ink)}
.pr-fdot{width:9px;height:9px;border-radius:50%;flex:none}
.pr-fn{font-weight:800;font-variant-numeric:tabular-nums}
/* Pendientes */
.pr-pend{background:var(--tbl-warn-bg);border:1px solid var(--tbl-warn);border-radius:var(--tbl-r);padding:9px 12px;font-size:12.5px;color:var(--tbl-ink);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pr-pchip{background:var(--tbl-surface);border:1px solid var(--tbl-border-2);border-radius:999px;padding:3px 10px;font:inherit;font-size:12px;cursor:pointer;color:var(--tbl-ink)}
.pr-pchip:hover{border-color:var(--tbl-accent)}
/* Toolbar */
.pr-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pr-spacer{flex:1}
.pr-input,.pr-sel{height:34px;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font:inherit;font-size:13px;padding:0 10px}
.pr-input{min-width:220px}
.pr-input.is-err{border-color:var(--tbl-danger)}
.pr-input:focus,.pr-sel:focus{outline:2px solid var(--tbl-focus);outline-offset:-1px}
.pr-btn{height:34px;display:inline-flex;align-items:center;gap:6px;padding:0 13px;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none}
.pr-btn:hover{background:var(--tbl-surface-2)}
.pr-btn--pri{background:var(--tbl-accent-fill);border-color:var(--tbl-accent-fill);color:var(--tbl-accent-ink,#fff)}
.pr-clr{background:none;border:0;color:var(--tbl-accent);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}
/* Tabla */
.pr-listw{overflow-x:auto}
.pr-table{width:100%;border-collapse:collapse;font-size:13px}
.pr-table th{text-align:left;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tbl-muted);padding:8px 10px;border-bottom:1px solid var(--tbl-border);white-space:nowrap}
.pr-table td{padding:9px 10px;border-bottom:1px solid var(--tbl-line);vertical-align:middle}
.pr-row{cursor:pointer}
.pr-row:hover{background:var(--tbl-surface-2)}
.pr-row:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:-2px}
.pr-name b{font-weight:600;color:var(--tbl-ink)}
.pr-sub{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;margin-top:3px;font-size:11px;color:var(--tbl-muted)}
.pr-tag{display:inline-block;padding:1px 7px;border-radius:999px;background:var(--tbl-surface-3);border:1px solid var(--tbl-border-2);color:var(--tbl-ink-soft);font-weight:500}
.pr-comp{white-space:nowrap}
.pr-last{color:var(--tbl-ink-soft);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-td-prox{white-space:nowrap}
.pr-prox.due{color:var(--tbl-danger);font-weight:600}
.pr-contact{white-space:nowrap;text-align:right}
.pr-ic{display:inline-block;margin-left:6px;color:var(--tbl-muted);text-decoration:none;font-size:15px}
.pr-ic:hover{color:var(--tbl-accent)}
.pr-chip{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:700;color:var(--tbl-cat-ink);white-space:nowrap}
.pr-count{padding:8px 2px;font-size:11.5px;color:var(--tbl-muted)}
/* Ficha (overlay + drawer) — espeja .cli-actov del modal de operaciones */
.pr-ov{position:fixed;inset:0;background:var(--tbl-overlay);display:flex;justify-content:flex-end;z-index:60}
.pr-card{background:var(--tbl-surface);width:min(560px,100%);height:100%;display:flex;flex-direction:column;box-shadow:var(--tbl-shadow-lg);overflow:hidden}
.pr-cardh{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--tbl-border)}
.pr-cardh b{font-size:15px;color:var(--tbl-ink)}
.pr-x{background:none;border:0;font-size:22px;line-height:1;color:var(--tbl-muted);cursor:pointer;padding:0 4px}
.pr-x:hover{color:var(--tbl-ink)}
.pr-cardb{padding:16px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}
.pr-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
@media(max-width:520px){.pr-form{grid-template-columns:1fr}}
.pr-field{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:600;color:var(--tbl-muted);text-transform:uppercase;letter-spacing:.03em}
.pr-field .pr-input,.pr-field .pr-sel{text-transform:none;font-weight:400;letter-spacing:0;color:var(--tbl-ink);width:100%;box-sizing:border-box}
.pr-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-top:1px solid var(--tbl-line);padding-top:14px}
/* Timeline */
.pr-timeline{border-top:1px solid var(--tbl-line);padding-top:14px}
.pr-tl-h{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.pr-tl-h b{font-size:13px;color:var(--tbl-ink)}
.pr-tl-add{display:flex;flex-wrap:wrap;gap:6px}
.pr-tl-add .pr-input{min-width:0;flex:1}
.pr-input--date{flex:none;min-width:0}
.pr-evlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.pr-ev{border-left:2px solid var(--tbl-border-2);padding:2px 0 2px 12px}
.pr-ev__h{display:flex;justify-content:space-between;gap:8px;font-size:11.5px}
.pr-ev__t{font-weight:700;color:var(--tbl-ink-soft)}
.pr-ev__w{font-size:11px}
.pr-ev__x{font-size:13px;color:var(--tbl-ink);margin-top:2px;white-space:pre-wrap}

/* ---- Prospectos · Fase 2 (gcard body, Kanban, badge de pestaña) ---- */
.pr-body{padding:clamp(11px,.9vw,15px);display:flex;flex-direction:column;gap:12px}
/* badge de atrasados en la pestaña "Prospectos" */
.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 5px;margin-left:6px;border-radius:999px;background:var(--tbl-danger-fill,var(--tbl-danger));color:#fff;font-size:10px;font-weight:800;line-height:1;vertical-align:middle}
/* Kanban */
.pr-kanban{display:flex;gap:8px;align-items:flex-start}
.pr-kcol{flex:1 1 0;min-width:0;background:var(--tbl-surface-2);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);display:flex;flex-direction:column;min-height:80px}
/* pantallas angostas: las columnas se vuelven scrolleables en vez de aplastarse ilegibles */
@media(max-width:860px){.pr-kanban{overflow-x:auto;padding-bottom:4px}.pr-kcol{flex:0 0 200px}}
.pr-kcol.pr-kover{border-color:var(--tbl-accent);background:var(--tbl-accent-soft)}
.pr-khead{display:flex;align-items:center;gap:7px;padding:9px 11px;border-bottom:1px solid var(--tbl-line);font-size:12px;font-weight:600;color:var(--tbl-ink)}
.pr-kh-l{flex:1}
.pr-kh-n{font-variant-numeric:tabular-nums;color:var(--tbl-muted)}
.pr-kbody{padding:8px;display:flex;flex-direction:column;gap:7px;min-height:40px}
.pr-kcard{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-sm,6px);padding:9px 10px;cursor:grab;box-shadow:var(--tbl-shadow-sm)}
.pr-kcard:hover{border-color:var(--tbl-border-2)}
.pr-kcard:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:1px}
.pr-kcard.pr-dragging{opacity:.5;cursor:grabbing}
.pr-kname{font-size:12.5px;font-weight:600;color:var(--tbl-ink)}
.pr-kmeta{font-size:11px;color:var(--tbl-muted);margin-top:1px}
.pr-kfoot{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:6px;font-size:11px}
.pr-kofi{color:var(--tbl-ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-kprox{color:var(--tbl-muted);white-space:nowrap}
.pr-kprox.due{color:var(--tbl-danger);font-weight:600}
.pr-kempty{color:var(--tbl-muted);font-size:11px;text-align:center;padding:6px}

/* ---- Prospectos · Aging (actividad / prospectos fríos) ---- */
.pr-age{font-size:11px;color:var(--tbl-muted);margin-top:2px}
.pr-age.cold{color:var(--tbl-warn,#B45309);font-weight:600}
.pr-row.is-cold td.pr-name{box-shadow:inset 3px 0 0 var(--tbl-warn,#B45309)}
.pr-kcard.is-cold{border-color:var(--tbl-warn,#B45309)}
.pr-kcold{display:inline-block;margin-left:6px;padding:0 5px;border-radius:999px;background:var(--tbl-warn-bg,#FEF3C7);color:var(--tbl-warn,#B45309);font-size:10px;font-weight:700;vertical-align:middle;white-space:nowrap}

/* ---- Prospectos · Reporte (documento imprimible + CSV) ---- */
.pr-rep-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.pr-rep-hint{font-size:12px}
.pr-rep-doc{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);padding:clamp(14px,1.6vw,22px);print-color-adjust:exact;-webkit-print-color-adjust:exact}
.pr-rep-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;border-bottom:2px solid var(--tbl-ink);padding-bottom:10px;margin-bottom:12px}
.pr-rep-title{font-size:18px;font-weight:800;color:var(--tbl-ink)}
.pr-rep-sub{font-size:12px;color:var(--tbl-muted);margin-top:2px}
.pr-rep-brand{font-size:11px;font-weight:700;color:var(--tbl-muted);letter-spacing:.02em;white-space:nowrap}
.pr-rep-funnel{display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:14px}
.pr-rep-fchip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--tbl-ink-soft)}
.pr-rep-table{width:100%;border-collapse:collapse;font-size:13px}
.pr-rep-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.02em;color:var(--tbl-muted);border-bottom:1px solid var(--tbl-border);padding:6px 8px}
.pr-rep-table td{padding:7px 8px;border-bottom:1px solid var(--tbl-border);vertical-align:top}
.pr-rep-table tbody tr:last-child td{border-bottom:none}
.pr-rep-table .pr-last{color:var(--tbl-ink-soft)}
.pr-rep-alta{white-space:nowrap;color:var(--tbl-muted);font-variant-numeric:tabular-nums}
.pr-rep-foot{margin-top:16px;padding-top:8px;border-top:1px solid var(--tbl-border);font-size:11px;color:var(--tbl-muted);text-align:right}
/* reporte de gestión: stats + secciones + tabla por oficial */
.pr-rep-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:2px 0 14px}
.pr-rep-stat{background:var(--tbl-surface-2);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-sm);padding:9px 12px}
.pr-rep-stat__n{font-size:19px;font-weight:800;color:var(--tbl-ink);font-variant-numeric:tabular-nums}
.pr-rep-stat__l{font-size:11px;color:var(--tbl-muted);margin-top:1px}
.pr-rep-pct{font-size:13px;font-weight:600;color:var(--tbl-muted)}
.pr-cold{color:var(--tbl-danger);font-weight:800}
.pr-rep-sec{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--tbl-ink-soft);border-bottom:1px solid var(--tbl-border);padding-bottom:5px;margin:16px 0 8px}
.pr-rep-sec .gmut{font-weight:500;text-transform:none;letter-spacing:0}
.pr-rep-ofi{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:4px;font-variant-numeric:tabular-nums}
.pr-rep-ofi th{font-size:11px;text-transform:uppercase;letter-spacing:.02em;color:var(--tbl-muted);border-bottom:1px solid var(--tbl-border);padding:6px 8px;text-align:right}
.pr-rep-ofi th.l{text-align:left}
.pr-rep-ofi td{padding:7px 8px;border-bottom:1px solid var(--tbl-line);text-align:right}
.pr-rep-ofi td.l{text-align:left;font-weight:600}
.pr-rep-ofi tbody tr:last-child td{border-bottom:none}
@media(max-width:640px){.pr-rep-stats{grid-template-columns:repeat(2,1fr)}}
.pr-rep-lead{font-size:14px;color:var(--tbl-ink);background:var(--tbl-surface-2);border:1px solid var(--tbl-border);border-left:3px solid var(--tbl-accent);border-radius:var(--tbl-r-sm);padding:9px 13px;margin:0 0 16px}
.pr-rep-secn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--tbl-accent);color:#fff;font-size:11px;font-weight:800;margin-right:7px;vertical-align:middle}
.pr-rep-tot td{border-top:2px solid var(--tbl-border-2);border-bottom:none!important;font-weight:800;color:var(--tbl-ink)}
.pr-rep-tipo{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--tbl-muted);background:var(--tbl-surface-3);border-radius:3px;padding:1px 5px;margin-right:2px;white-space:nowrap}
.pr-rep-edad{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--tbl-ink-soft)}
.pr-rep-brand{text-align:right;line-height:1.3}
.pr-rep-table tbody tr:nth-child(even){background:var(--tbl-surface-2)}

@media print{
  body.pr-printing *{visibility:hidden}
  body.pr-printing .pr-report,body.pr-printing .pr-report *{visibility:visible}
  body.pr-printing .pr-report{position:absolute;left:0;top:0;width:100%;padding:0}
  body.pr-printing .pr-noprint{display:none!important}
  body.pr-printing .pr-rep-doc{border:none;border-radius:0;padding:0}
  body.pr-printing .pr-rep-table{font-size:11px}
  body.pr-printing .pr-rep-table tr{page-break-inside:avoid}
  body.pr-printing .pr-rep-ofi{font-size:11px}
  body.pr-printing .pr-rep-ofi tr,body.pr-printing .pr-rep-stats,body.pr-printing .pr-rep-sec{page-break-inside:avoid}
}

/* ===== Control liquidación Mendoza (pestaña 'mendoza') — js/mendoza-liq.js. P&L + cuenta corriente. ===== */
.mliq-loading,.mliq-empty{padding:40px 8px;color:var(--tbl-muted)}
.mliq-empty h3{color:var(--tbl-ink);font-size:16px;margin-bottom:6px}
.mliq-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:4px 0 18px}
.mliq-title{font-size:20px;font-weight:800;letter-spacing:-.02em;color:var(--tbl-ink)}
.mliq-sub{font-size:13px;color:var(--tbl-muted);margin-top:2px}
.mliq-plus{width:38px;height:38px;flex:0 0 auto;border-radius:50%;border:0;background:var(--tbl-accent-fill);color:var(--tbl-accent-ink);display:grid;place-items:center;box-shadow:var(--tbl-shadow-md);cursor:pointer;transition:background .15s,transform .15s}
.mliq-plus svg{width:20px;height:20px}
.mliq-plus:hover{background:var(--tbl-accent-dark);transform:translateY(-1px)}
.mliq-plus:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:3px}

.mliq-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}
.mliq-kpi{position:relative;background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);padding:15px 17px;box-shadow:var(--tbl-shadow-sm);overflow:hidden}
.mliq-klbl{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--tbl-muted)}
.mliq-kval{font-size:26px;font-weight:800;letter-spacing:-.03em;margin-top:6px;line-height:1.05;font-variant-numeric:tabular-nums}
.mliq-kfoot{font-size:12px;color:var(--tbl-muted);margin-top:5px}
.mliq-kstripe{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--tbl-border-2)}
.mliq-kpi--corr .mliq-kstripe{background:var(--tbl-accent)}
.mliq-kpi--pag .mliq-kstripe{background:var(--tbl-ok)}
.mliq-kpi--debe{background:linear-gradient(160deg,var(--tbl-danger-bg),var(--tbl-surface) 55%)}
.mliq-kpi--debe .mliq-kstripe{background:var(--tbl-danger)}
.mliq-kpi--debe .mliq-kval{color:var(--tbl-danger)}
.mliq-spark{position:absolute;right:12px;top:12px;width:96px;height:34px}
.mliq-spark__a{fill:var(--tbl-danger);opacity:.12}
.mliq-spark__l{fill:none;stroke:var(--tbl-danger);stroke-width:1.6}
.mliq-spark__d{fill:var(--tbl-danger)}

.mliq-ctrls{display:flex;align-items:center;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.mliq-seg{display:inline-flex;background:var(--tbl-surface-3);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);padding:3px;gap:3px}
.mliq-seg button{background:none;border:0;padding:6px 15px;font-size:13px;font-weight:600;color:var(--tbl-ink-soft);border-radius:var(--tbl-r-sm);cursor:pointer}
.mliq-seg button.on{background:var(--tbl-surface);color:var(--tbl-ink);box-shadow:var(--tbl-shadow-sm)}
.mliq-years{display:inline-flex;gap:4px;align-items:center}
.mliq-yl{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--tbl-muted);margin-right:2px}
.mliq-yr{background:var(--tbl-surface);border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r-sm);padding:5px 12px;font-size:13px;font-weight:600;color:var(--tbl-ink-soft);cursor:pointer}
.mliq-yr.on{background:var(--tbl-accent);border-color:var(--tbl-accent);color:var(--tbl-accent-ink)}
.mliq-sp{flex:1}
.mliq-scale{font-size:11.5px;color:var(--tbl-muted)}

.mliq-card{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-sm);overflow:hidden}
.mliq-tw{overflow-x:auto}
.mliq-pl,.mliq-liq{border-collapse:collapse;width:100%;font-size:12.5px}
.mliq-pl th,.mliq-pl td,.mliq-liq th,.mliq-liq td{padding:7px 10px;text-align:right;white-space:nowrap}
.mliq-pl thead th,.mliq-liq thead th{font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--tbl-muted);background:var(--tbl-surface-2);border-bottom:1px solid var(--tbl-border);padding-top:11px;padding-bottom:11px}
.mliq-pl th:first-child,.mliq-pl td:first-child,.mliq-liq th:first-child,.mliq-liq td:first-child{text-align:left}
.mliq-num{font-variant-numeric:tabular-nums}
.mliq-unit{font-weight:500;text-transform:none;letter-spacing:0;color:var(--tbl-muted)}
.mliq-pl td:first-child{color:var(--tbl-ink-soft);font-weight:500;min-width:172px}
.mliq-mh{cursor:pointer}
.mliq-pl th.mliq-tot,.mliq-pl td.mliq-tot{background:var(--tbl-surface-2);font-weight:700;border-left:1px solid var(--tbl-border)}
.mliq-pl tbody tr:hover,.mliq-liq tbody tr:hover{background:var(--tbl-accent-soft)}
.mliq-liq tbody tr{cursor:pointer}
.mliq-pl tr.mliq-grp td{background:var(--tbl-surface-3);color:var(--tbl-accent);font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding-top:9px;padding-bottom:9px}
.mliq-pl tr.mliq-key td{font-weight:700;color:var(--tbl-ink);border-top:1px solid var(--tbl-border-2);border-bottom:1px solid var(--tbl-border-2)}
.mliq-pl tr.mliq-key td:first-child{position:relative;color:var(--tbl-ink)}
.mliq-pl tr.mliq-key td:first-child::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;background:var(--tbl-accent);border-radius:2px}
.mliq-pl .pos,.mliq-liq .pos{color:var(--tbl-ok)}
.mliq-pl .neg,.mliq-liq .neg{color:var(--tbl-danger)}
.mliq-liq td,.mliq-liq th{border-bottom:1px solid var(--tbl-line)}
.mliq-liq td.mliq-k{font-weight:600;color:var(--tbl-ink)}
.mliq-liq tfoot td{font-weight:800;background:var(--tbl-surface-2);border-top:2px solid var(--tbl-border-2)}
.mliq-zt{font-size:9.5px;font-weight:700;color:var(--tbl-warn);background:var(--tbl-warn-bg);border-radius:4px;padding:1px 5px;margin-left:6px;vertical-align:middle}
.mliq-hint{font-size:12px;color:var(--tbl-muted);margin:11px 2px 0;line-height:1.5}

.mliq-chartc{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-sm);padding:16px 18px 10px;margin-bottom:14px}
.mliq-ch-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:6px}
.mliq-chartc h3{font-size:13.5px;font-weight:700;color:var(--tbl-ink)}
.mliq-cs{font-size:12px;color:var(--tbl-muted);margin-top:2px}
.mliq-ch-now{text-align:right;display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}
.mliq-now-lbl{font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--tbl-muted)}
.mliq-now-val{font-size:18px;font-weight:800;color:var(--tbl-danger);font-variant-numeric:tabular-nums}
.mliq-ch-wrap{position:relative}
.mliq-chart{width:100%;height:auto;max-height:150px;display:block;overflow:visible}
.mliq-chart__grid{stroke:var(--tbl-line);stroke-width:1}
.mliq-chart__grid.zero{stroke:var(--tbl-border-2);stroke-width:1.2;stroke-dasharray:4 3}
.mliq-chart__ylab,.mliq-chart__xlab{fill:var(--tbl-muted);font-size:11px;font-variant-numeric:tabular-nums}
.mliq-chart__g0{stop-color:var(--tbl-danger);stop-opacity:.22}
.mliq-chart__g1{stop-color:var(--tbl-danger);stop-opacity:0}
.mliq-chart__a{stroke:none}
.mliq-chart__l{fill:none;stroke:var(--tbl-danger);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.mliq-chart__pt{fill:var(--tbl-surface);stroke:var(--tbl-danger);stroke-width:1.5}
.mliq-chart__d{fill:var(--tbl-danger);stroke:var(--tbl-surface);stroke-width:2}
.mliq-chart__worst{fill:var(--tbl-warn);stroke:var(--tbl-surface);stroke-width:1.5}
.mliq-chart__wlab{fill:var(--tbl-warn);font-size:10.5px;font-weight:700}
.mliq-chart__hline{stroke:var(--tbl-border-2);stroke-width:1;stroke-dasharray:3 3}
.mliq-chart__hdot{fill:var(--tbl-danger);stroke:var(--tbl-surface);stroke-width:2}
.mliq-tip{position:absolute;pointer-events:none;background:var(--tbl-ink);color:#fff;border-radius:8px;padding:7px 10px;font-size:12px;box-shadow:var(--tbl-shadow-md);min-width:120px;z-index:2}
.mliq-tip b{font-variant-numeric:tabular-nums}
.mliq-tip-row{display:flex;justify-content:space-between;gap:14px;margin-top:3px;color:rgba(255,255,255,.7)}
.mliq-tip-row .pos{color:var(--tbl-ok)} .mliq-tip-row .neg{color:#ff8a93}

/* drawer / card flotante */
/* el contenedor cubre el viewport SIEMPRE (el drawer se construye una vez); sin pointer-events:none cuando
   está cerrado, se comería todos los clics del panel de abajo. Sólo intercepta clics cuando está .on. */
.mliq-ov{position:fixed;inset:0;z-index:60;display:flex;justify-content:flex-end;pointer-events:none}
.mliq-ov.on{pointer-events:auto}
.mliq-scrim{position:absolute;inset:0;background:var(--tbl-overlay);opacity:0;pointer-events:none;transition:opacity .18s}
.mliq-ov.on .mliq-scrim{opacity:1;pointer-events:auto}
.mliq-drawer{position:relative;height:100%;width:470px;max-width:94vw;background:var(--tbl-surface);border-left:1px solid var(--tbl-border);box-shadow:var(--tbl-shadow-lg);transform:translateX(100%);transition:transform .24s cubic-bezier(.22,.68,.2,1);display:flex;flex-direction:column;margin-left:auto}
.mliq-ov.on .mliq-drawer{transform:none}
.mliq-dh{padding:20px 22px 16px;border-bottom:1px solid var(--tbl-border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.mliq-dh b{font-size:16px;font-weight:700}
.mliq-ds{font-size:12px;color:var(--tbl-muted);margin-top:3px}
.mliq-x{background:none;border:0;font-size:22px;line-height:1;color:var(--tbl-muted);padding:2px 6px;border-radius:6px;cursor:pointer}
.mliq-x:hover{background:var(--tbl-surface-3);color:var(--tbl-ink)}
.mliq-db{padding:4px 22px 18px;overflow-y:auto;flex:1}
.mliq-fgrp{margin-top:18px}
.mliq-gl{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-accent);margin-bottom:9px;display:flex;align-items:center;gap:8px}
.mliq-gl::after{content:"";flex:1;height:1px;background:var(--tbl-border)}
.mliq-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
.mliq-f{display:flex;flex-direction:column;gap:4px}
.mliq-f.full{grid-column:1 / -1}
.mliq-f label{font-size:12px;color:var(--tbl-ink-soft);font-weight:500}
.mliq-inp,.mliq-sel{background:var(--tbl-surface-2);border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r-sm);padding:8px 10px;font-size:14px;color:var(--tbl-ink);text-align:right;font-variant-numeric:tabular-nums}
.mliq-sel{text-align:left}
.mliq-inp.is-err{border-color:var(--tbl-danger);box-shadow:0 0 0 3px var(--tbl-danger-bg)}
.mliq-pverr{font-size:13px;color:var(--tbl-danger);padding:6px 0}
.mliq-pvwarn{font-size:12px;color:var(--tbl-warn);background:var(--tbl-warn-bg);border-radius:var(--tbl-r-sm);padding:6px 8px;margin:4px 0}
.mliq-bneg{font-size:11px;color:var(--tbl-warn);background:var(--tbl-warn-bg);border-radius:999px;padding:1px 6px;white-space:nowrap}
.mliq-inp:focus,.mliq-sel:focus{outline:2px solid var(--tbl-focus);outline-offset:0;border-color:var(--tbl-accent)}
.mliq-u{font-size:10px;color:var(--tbl-muted);text-transform:uppercase;letter-spacing:.04em}
.mliq-prev{margin-top:20px;background:var(--tbl-accent-soft);border:1px dashed color-mix(in srgb,var(--tbl-accent) 34%,transparent);border-radius:var(--tbl-r);padding:12px 14px}
.mliq-pvl{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tbl-accent);margin-bottom:8px}
.mliq-prow{display:flex;justify-content:space-between;font-size:13px;padding:3px 0}
.mliq-prow span{color:var(--tbl-ink-soft)}
.mliq-prow b{font-variant-numeric:tabular-nums}
.mliq-prow .pos{color:var(--tbl-ok)}
.mliq-prow .neg{color:var(--tbl-danger)}
.mliq-prow.big{border-top:1px solid color-mix(in srgb,var(--tbl-accent) 22%,transparent);margin-top:5px;padding-top:8px}
.mliq-prow.big b{font-size:15px}
.mliq-note{font-size:11px;color:var(--tbl-muted);margin-top:10px;line-height:1.5}
.mliq-df{padding:14px 22px;border-top:1px solid var(--tbl-border);display:flex;gap:10px;justify-content:flex-end}
.mliq-btn{border:1px solid var(--tbl-border-2);background:var(--tbl-surface);color:var(--tbl-ink);border-radius:var(--tbl-r);padding:9px 16px;font-weight:600;font-size:13.5px;cursor:pointer}
.mliq-btn--p{background:var(--tbl-accent-fill);color:var(--tbl-accent-ink);border-color:transparent}
.mliq-btn--p:hover{background:var(--tbl-accent-dark)}
.mliq-btn:disabled{opacity:.6;cursor:default}
@media (max-width:760px){.mliq-kpis{grid-template-columns:1fr}}

/* Mendoza liquidación — ajustes: P&L en pesos (más compacto), badge de % en las cuentas, filas de margen. */
.mliq-pl{font-size:11.5px}
.mliq-pl td:first-child,.mliq-pl th:first-child{min-width:130px}
.mliq-pl th,.mliq-pl td{padding:7px 6px}
.mliq-rate{font-size:9.5px;font-weight:700;color:var(--tbl-ink-soft);background:var(--tbl-surface-3);border:1px solid var(--tbl-border);border-radius:4px;padding:0 5px;margin-left:7px;vertical-align:middle;font-variant-numeric:tabular-nums}
.mliq-pl tr.mliq-mgn td{color:var(--tbl-muted);font-style:italic}
.mliq-pl tr.mliq-mgn td:first-child{font-style:italic}
/* ---- AUM (Banca Privada) — mockup ---- */
.aum-wrap{display:flex;flex-direction:column;gap:14px;padding:clamp(11px,.9vw,15px)}
.aum-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:12px;color:var(--tbl-muted)}
.aum-mock{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--tbl-warn-bg);color:var(--tbl-warn);font-weight:700;font-size:11px;letter-spacing:.02em}
.aum-live{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--tbl-ok-bg);color:var(--tbl-ok);font-weight:700;font-size:11px;letter-spacing:.02em}
.aum-load{color:var(--tbl-muted);padding:24px 4px;font-size:13px}
.aum-upd b{color:var(--tbl-ink)}

.aum-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media(max-width:720px){.aum-kpis{grid-template-columns:repeat(2,1fr)}}
.aum-kpi{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);padding:12px 14px;box-shadow:var(--tbl-shadow-sm)}
.aum-kpi__n{font-size:22px;font-weight:800;color:var(--tbl-ink);font-variant-numeric:tabular-nums}
.aum-kpi__l{font-size:12px;color:var(--tbl-muted);margin-top:2px}

/* Composición: tres donuts alineados en una fila (se apilan a 1 columna en pantallas angostas). */
.aum-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
@media(max-width:960px){.aum-grid3{grid-template-columns:1fr}}
.aum-grid3 .aum-comp{display:flex;flex-direction:column}
.aum-cardb{padding:clamp(11px,.9vw,15px);display:flex;flex-direction:column;gap:10px}
/* Card de composición como donut: anillo arriba, leyenda debajo (columna) → tres cards de igual forma. */
.aum-pied{flex-direction:column;align-items:center;gap:14px;flex:1 1 auto}
.aum-pie-wrap{flex:0 0 auto;display:flex;align-items:center;justify-content:center}
.aum-pie{width:132px;height:132px;display:block}
.aum-pied .aum-leg{flex:0 0 auto;width:100%}
.aum-pie__trk{stroke:var(--tbl-surface-2)}
.aum-pie__c{fill:var(--tbl-ink);font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}
.aum-pie__t{fill:var(--tbl-muted);font-size:8.5px;text-transform:uppercase;letter-spacing:.05em}
/* Leyenda: dot · nombre (elipsis) · AUM (der.) · extra %/ROA (der., ancho fijo) — alineada, sin cortes. */
.aum-leg{display:flex;flex-direction:column;gap:7px;width:100%}
.aum-legrow{display:flex;align-items:center;gap:9px;font-size:12.5px;line-height:1.15}
.aum-dot{width:10px;height:10px;border-radius:3px;flex:0 0 auto}
.aum-legk{flex:1 1 auto;min-width:0;color:var(--tbl-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aum-legv{flex:0 0 auto;font-variant-numeric:tabular-nums;color:var(--tbl-ink);font-weight:600;white-space:nowrap;text-align:right}
.aum-legp{flex:0 0 48px;text-align:right;color:var(--tbl-muted);font-variant-numeric:tabular-nums}
.aum-legroa{flex:0 0 66px;text-align:right;color:var(--tbl-accent);font-weight:600;font-variant-numeric:tabular-nums}

.aum-toolbar{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;padding:10px clamp(11px,.9vw,15px) 0}
.aum-search{flex:1 1 200px;min-width:180px;max-width:340px;padding:7px 10px;border:1px solid var(--tbl-border);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font-size:13px}
.aum-search:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:1px;border-color:var(--tbl-accent)}
.aum-sel{padding:7px 10px;border:1px solid var(--tbl-border);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font-size:13px;max-width:200px;cursor:pointer}
.aum-sel:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:1px;border-color:var(--tbl-accent)}
.aum-count{font-size:12px;color:var(--tbl-muted);font-variant-numeric:tabular-nums;margin-left:auto}
.aum-table{width:100%;border-collapse:collapse;font-size:13px}
.aum-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.02em;color:var(--tbl-muted);border-bottom:1px solid var(--tbl-border);padding:7px 8px;white-space:nowrap}
.aum-table td{padding:8px;border-bottom:1px solid var(--tbl-border);vertical-align:middle}
.aum-table tbody tr:last-child td{border-bottom:none}
.aum-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.aum-roacell{color:var(--tbl-accent);font-weight:600}
.aum-row{cursor:pointer}
.aum-row:hover{background:var(--tbl-accent-soft)}
.aum-row:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:-2px}
.aum-chev{color:var(--tbl-muted);text-align:right;width:18px}
.aum-cnm b{color:var(--tbl-ink)}

.aum-ov{position:fixed;inset:0;background:rgba(15,23,42,.42);display:flex;justify-content:flex-end;z-index:60}
.aum-card{background:var(--tbl-surface);width:min(760px,96vw);height:100%;display:flex;flex-direction:column;box-shadow:var(--tbl-shadow-lg);overflow:hidden}
.aum-cardh{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--tbl-border)}
.aum-cardh b{color:var(--tbl-ink);font-size:15px}
.aum-x{border:none;background:transparent;font-size:22px;line-height:1;color:var(--tbl-muted);cursor:pointer;padding:0 4px}
.aum-cardc{padding:16px;overflow:auto}
.aum-dkpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.aum-dkpis--2{grid-template-columns:repeat(2,1fr)}
@media(max-width:560px){.aum-dkpis{grid-template-columns:1fr}}
.aum-dk{background:var(--tbl-surface-2);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);padding:10px 12px}
.aum-dk span{display:block;font-size:11px;color:var(--tbl-muted)}
.aum-dk b{font-size:16px;font-variant-numeric:tabular-nums;color:var(--tbl-ink)}
.aum-monrow{display:flex;flex-wrap:wrap;gap:8px 14px;margin-bottom:12px}
.aum-monchip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--tbl-ink)}
.aum-tchip{display:inline-block;padding:1px 7px;border-radius:999px;color:var(--tbl-cat-ink);font-size:11px;font-weight:600}
.aum-tk b{color:var(--tbl-ink)}
.aum-note{font-size:11px;margin-top:10px}

/* carga admin (Ajustes) */
.aum-adm{padding:clamp(14px,1.6vw,20px)}
.aum-adm__h h3{margin:0 0 4px}
.aum-adm__now{margin:10px 0;font-size:13px;color:var(--tbl-ink);background:var(--tbl-surface-2);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);padding:8px 12px}
.aum-adm__box{border:1px dashed var(--tbl-border);border-radius:var(--tbl-r);padding:16px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.aum-file{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.aum-file__lbl{display:inline-block;padding:8px 14px;border:1px solid var(--tbl-border);border-radius:var(--tbl-r);background:var(--tbl-surface);cursor:pointer;font-size:13px;font-weight:600;color:var(--tbl-ink)}
.aum-file__lbl:hover{border-color:var(--tbl-accent)}
.aum-file:focus-visible+.aum-file__lbl{outline:2px solid var(--tbl-focus);outline-offset:2px}
.aum-prev{font-size:13px;color:var(--tbl-ink)}
.aum-msg{font-size:12.5px;color:var(--tbl-muted)}

/* ============ Proyectos (pestaña de Middle Office · js/proyectos.js) ============
   REGLA DEL BLOQUE: cero hexadecimales nuevos. Todo sale de los tokens --tbl-*, que ya están definidos en
   claro Y oscuro (css/base.css) → el modo oscuro sale gratis y la paleta no se desfasa si alguien retoca
   los tokens. Los colores de estado son CLASES (no data-bg) porque el par fondo/texto tiene que moverse
   junto entre temas. Lo único dinámico es el ancho de la barra (data-w → UI.paint).
   La calma del diseño viene del AIRE, las líneas finas (--tbl-line) y la contención del color: el color
   aparece sólo en el chip de estado y en la barra. */
.py-wrap{display:flex;flex-direction:column;gap:var(--stack)}
.py-load,.py-err,.py-none{padding:18px 2px;color:var(--tbl-muted);font-size:13px}
.py-load,.py-err{text-align:center;padding:22px}
.py-err{color:var(--tbl-danger)}
.py-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---- Gestión (Middle Office): carpetas Proyectos / Archivos varios / Contratos AFs (js/gestion.js) ----
   Mismas reglas que Proyectos: sólo tokens --tbl-*, nada inline. */
.gs-wrap{display:flex;flex-direction:column;gap:var(--stack)}
.gs-folders{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.gs-folder{display:flex;align-items:center;gap:10px;text-align:left;padding:11px 13px;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font:inherit;cursor:pointer}
.gs-folder:hover{background:var(--tbl-surface-2)}
.gs-folder:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.gs-folder.is-on{border-color:var(--tbl-accent);background:var(--tbl-accent-soft)}
.gs-folder.is-on .gs-folder__i{color:var(--tbl-accent)}
.gs-folder__i{display:inline-flex;color:var(--tbl-ink-soft);flex:none}
.gs-folder__t{display:flex;flex-direction:column;gap:2px;min-width:0}
.gs-folder__t b{font-size:13.5px;display:inline-flex;align-items:center;gap:5px}
.gs-folder__d{font-size:12px;color:var(--tbl-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gs-lock{display:inline-flex;color:var(--tbl-muted)}
.gs-empty{border:1px dashed var(--tbl-border-2);border-radius:var(--tbl-r);padding:28px 18px;text-align:center;color:var(--tbl-ink-soft)}
.gs-empty h3{margin:0 0 6px;font-size:15px;color:var(--tbl-ink)}
.gs-empty p{margin:0 auto 10px;max-width:520px;font-size:13px;line-height:1.5}
.gs-empty--sm{padding:16px}
.gs-badge{display:inline-block;padding:2px 9px;border-radius:999px;background:var(--tbl-surface-3);color:var(--tbl-ink-soft);font-size:11.5px;font-weight:600}
.gs-priv{border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);padding:16px}
.gs-priv__h{display:flex;align-items:center;justify-content:space-between;gap:10px}
.gs-priv__h h3{margin:0;font-size:15px;display:inline-flex;align-items:center;gap:6px}
.gs-priv__p{margin:6px 0 14px;font-size:13px;color:var(--tbl-ink-soft);line-height:1.5}
.gs-mgrs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.gs-mgr{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid var(--tbl-border);border-radius:var(--tbl-r);background:var(--tbl-surface-2);color:var(--tbl-ink-soft);font-size:13px}
.gs-mgr__n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:720px){.gs-folders{grid-template-columns:1fr}}
/* Archivos varios (js/archivos.js) */
.ar-wrap{display:flex;flex-direction:column;gap:12px}
.ar-drop{position:relative;border:1.5px dashed var(--tbl-border-2);border-radius:var(--tbl-r);padding:18px;text-align:center;background:var(--tbl-surface-2);color:var(--tbl-ink-soft)}
.ar-drop.is-over{border-color:var(--tbl-accent);background:var(--tbl-accent-soft)}
.ar-drop__t{font-size:13.5px;color:var(--tbl-ink)}
.ar-drop__s{font-size:12px;color:var(--tbl-muted);margin-top:4px}
.ar-file{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;opacity:0}
.ar-link{background:none;border:0;padding:0;color:var(--tbl-accent);font:inherit;font-weight:600;cursor:pointer;text-decoration:underline}
.ar-link:focus-visible,.ar-dl:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px;border-radius:3px}
.ar-pend{border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);padding:12px}
.ar-pend__h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.ar-pend__a{display:inline-flex;gap:8px}
.ar-pend__l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.ar-pend__i{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px}
.ar-pend__n{flex:1 1 220px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ar-desc{flex:2 1 240px;min-width:0}
.ar-st{font-size:12px;color:var(--tbl-ink-soft);font-weight:600}
.ar-st.is-ok{color:var(--tbl-ok)}
.ar-st.is-err{color:var(--tbl-danger)}
.ar-toolbar{display:flex;align-items:center;gap:10px}
.ar-toolbar .py-input{flex:1}
.ar-count{font-size:12px;color:var(--tbl-muted);white-space:nowrap}
.ar-table{width:100%;border-collapse:collapse;font-size:13px}
.ar-table th{text-align:left;font-size:11.5px;font-weight:600;color:var(--tbl-muted);padding:6px 8px;border-bottom:1px solid var(--tbl-border)}
.ar-table td{padding:8px;border-bottom:1px solid var(--tbl-line);vertical-align:top}
.ar-num{text-align:right;white-space:nowrap}
.ar-fec{white-space:nowrap;color:var(--tbl-ink-soft)}
.ar-n{max-width:420px}
.ar-dl{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--tbl-ink);cursor:pointer;text-align:left;word-break:break-word}
.ar-dl:hover{color:var(--tbl-accent);text-decoration:underline}
.ar-dl:disabled{opacity:.6;cursor:progress}
.ar-n__d{display:block;font-size:12px;color:var(--tbl-muted);margin-top:2px}
.ar-tipo{display:inline-block;padding:1px 7px;border-radius:999px;background:var(--tbl-surface-3);font-size:11px;font-weight:600;color:var(--tbl-ink-soft)}
.ar-acc{width:32px;text-align:right}
@media (max-width:720px){.ar-table th:nth-child(2),.ar-table td:nth-child(2),.ar-table th:nth-child(4),.ar-table td:nth-child(4){display:none}}
/* Contratos AFs (js/contratos.js) + su administración en Ajustes */
.ct-wrap{display:flex;flex-direction:column;gap:12px}
/* Pantalla de la clave: tarjeta angosta, más abajo (aire arriba), rótulo sobre el campo, botón a todo el ancho y un
   pie discreto. Los mensajes de estado (no habilitado / sin clave) usan la misma tarjeta. */
.ct-wrap--lock{padding:clamp(28px,7vh,72px) 0 24px}
.ct-lock{width:100%;max-width:380px;margin:clamp(28px,7vh,72px) auto 24px;border:1px solid var(--tbl-border);border-radius:calc(var(--tbl-r) + 4px);background:var(--tbl-surface);padding:30px 28px 18px;text-align:center;display:flex;flex-direction:column;align-items:stretch;gap:0;box-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.06)}
.ct-wrap--lock .ct-lock{margin-top:0}
.ct-lock--msg{padding-bottom:28px}
.ct-lock h3{margin:14px 0 6px;font-size:16px;font-weight:700;color:var(--tbl-ink)}
.ct-lock p{margin:0;font-size:13px;color:var(--tbl-ink-soft);line-height:1.5}
.ct-lock__i{align-self:center;display:inline-flex;width:44px;height:44px;border-radius:50%;align-items:center;justify-content:center;background:var(--tbl-accent-soft);color:var(--tbl-accent)}
.ct-lock__i svg{width:19px;height:19px}
.ct-lock .ct-lock__sub{margin-bottom:20px}
.ct-lock__l{text-align:left;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--tbl-muted);margin:0 0 6px}
.ct-lock__in{width:100%;min-width:0;height:40px;font-size:14px}
.ct-lock__btn{width:100%;height:40px;justify-content:center;margin-top:12px;font-size:14px}
.ct-lock .ct-lock__pie{margin-top:18px;padding-top:12px;border-top:1px solid var(--tbl-line);font-size:12px;color:var(--tbl-muted)}
.ct-row{display:flex;gap:8px;width:100%}
.ct-row .py-input{flex:1;min-width:0}
.ct-err{font-size:12.5px;color:var(--tbl-danger);font-weight:600;text-align:left;margin-top:8px}
.ct-err:empty{display:none}
.ct-err--box{text-align:center;background:var(--tbl-warn-bg,var(--tbl-surface-2));border-radius:var(--tbl-r);padding:10px 12px;margin-top:4px}
.ct-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ct-crumb{flex:1;min-width:0;font-size:14px}
.ct-open{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--tbl-ok);font-weight:600;white-space:nowrap}
.ct-mgr{width:100%;cursor:pointer;font:inherit;text-align:left}
.ct-mgr:hover{border-color:var(--tbl-accent);color:var(--tbl-ink)}
.ct-mgr:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.ct-mgrs{list-style:none}
.ct-n{font-size:11.5px;font-weight:700;color:var(--tbl-muted);background:var(--tbl-surface-3);border-radius:999px;padding:1px 8px}
.ct-adm{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;align-items:start}
.ct-adm__card{padding:16px}
.ct-adm__card h3{margin:0 0 6px;font-size:15px}
.ct-adm__now{font-size:13px;margin:10px 0}
.ct-adm__form{display:flex;flex-wrap:wrap;gap:8px}
.ct-adm__form .py-input{flex:1 1 180px;min-width:0}
.ct-adm__q{width:100%;margin:10px 0}
.ct-adm__cnt{font-size:12px;margin-bottom:6px}
.ct-adm__list{list-style:none;margin:0;padding:0;max-height:420px;overflow:auto;border-top:1px solid var(--tbl-line)}
.ct-adm__list li{border-bottom:1px solid var(--tbl-line)}
.ct-adm__u{display:flex;align-items:center;gap:10px;padding:8px 2px;font-size:13px;cursor:pointer}

/* ---- aviso de atrasados ---- */
.py-alert{background:var(--tbl-warn-bg);border:1px solid var(--tbl-warn);border-radius:var(--tbl-r);padding:9px 12px;font-size:12.5px;color:var(--tbl-ink)}
.py-link{background:none;border:0;padding:0;color:var(--tbl-accent);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;text-decoration:underline}
.py-link:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px;border-radius:3px}

/* ---- toolbar ---- */
.py-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.py-spacer{flex:1}
.py-input,.py-sel{height:34px;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font:inherit;font-size:13px;padding:0 10px}
.py-input{min-width:200px}
.py-input.is-err{border-color:var(--tbl-danger)}
.py-input:focus,.py-sel:focus,.py-ta:focus{outline:2px solid var(--tbl-focus);outline-offset:-1px}
.py-btn{height:34px;display:inline-flex;align-items:center;gap:6px;padding:0 13px;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.py-btn:hover{background:var(--tbl-surface-2)}
.py-btn:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.py-btn--pri{background:var(--tbl-accent-fill);border-color:var(--tbl-accent-fill);color:var(--tbl-accent-ink,#fff)}
.py-seg{display:inline-flex;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);overflow:hidden}
.py-seg button{border:0;background:none;color:var(--tbl-ink-soft);font:inherit;font-size:12.5px;font-weight:600;padding:7px 12px;cursor:pointer;border-right:1px solid var(--tbl-border-2);transition:background var(--mo-fast),color var(--mo-fast)}
.py-seg button:last-child{border-right:0}
.py-seg button.on{background:var(--tbl-accent-soft);color:var(--tbl-ink)}
.py-chk{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--tbl-ink-soft);cursor:pointer}

/* ---- estados vacíos (tres, con mensajes distintos) ---- */
.py-empty{border:1.5px dashed var(--tbl-border-2);border-radius:var(--tbl-r-lg);background:var(--tbl-surface-2);padding:clamp(26px,4vw,48px);text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.py-empty h3{margin:0;font-size:16px;font-weight:600;color:var(--tbl-ink);letter-spacing:-.01em}
.py-empty p{margin:0;font-size:13px;color:var(--tbl-muted);max-width:52ch}
.py-empty .py-btn{margin-top:6px}

/* ---- board ---- */
.py-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap);align-items:start}
@media(max-width:1080px){.py-board{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.py-board{grid-template-columns:1fr}}
.py-col{display:flex;flex-direction:column;gap:var(--gap);min-width:0}
.py-col__h{margin:0;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tbl-muted);padding-bottom:7px;border-bottom:1px solid var(--tbl-border);display:flex;align-items:center;gap:7px}
.py-col__n{font-weight:700;color:var(--tbl-ink-soft);font-variant-numeric:tabular-nums}
/* una columna vacía no es un hueco: zona tenue para que la grilla no se desarme */
.py-col__empty{border:1px dashed var(--tbl-border-2);border-radius:var(--tbl-r);padding:16px 12px;text-align:center;font-size:12px;color:var(--tbl-muted)}

/* ---- card ---- */
.py-card{background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:var(--tbl-r-lg);box-shadow:var(--tbl-shadow-sm);padding:14px 15px 11px;display:flex;flex-direction:column;gap:9px;cursor:pointer;transition:border-color var(--mo-fast),box-shadow var(--mo-fast)}
.py-card:hover{border-color:var(--tbl-border-2);box-shadow:var(--tbl-shadow-md)}
.py-card.is-arch{opacity:.62}
.py-card__h{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.py-card__t{margin:0;font-size:15.5px;font-weight:600;line-height:1.3;letter-spacing:-.01em;color:var(--tbl-ink)}
.py-card__s{margin:0;font-size:12.8px;line-height:1.5;color:var(--tbl-ink-soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.py-tags{display:flex;flex-wrap:wrap;gap:6px}
.py-card__f{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding-top:9px;border-top:1px solid var(--tbl-line)}
.py-resp{font-size:12.5px;color:var(--tbl-ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.py-pct{font-size:13px;font-weight:800;color:var(--tbl-ink);font-variant-numeric:tabular-nums;flex:none}
.py-nop{font-size:11.5px;color:var(--tbl-muted);flex:none}
.py-open{align-self:flex-start;background:none;border:0;padding:2px 0;color:var(--tbl-accent);font:inherit;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.py-open:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px;border-radius:3px}

/* ---- chips de estado: fondo suave + texto del MISMO token (ambos definidos en claro y oscuro) ---- */
.py-chip{display:inline-block;padding:3px 9px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.py-chip--idea{background:var(--tbl-surface-3);color:var(--tbl-muted)}
.py-chip--en_proceso{background:var(--tbl-accent-soft);color:var(--tbl-accent)}
.py-chip--pausado{background:var(--tbl-warn-bg);color:var(--tbl-warn)}
.py-chip--hecho{background:var(--tbl-ok-bg);color:var(--tbl-ok)}
.py-chip--cancelado{background:var(--tbl-surface-3);color:var(--tbl-muted);text-decoration:line-through}
/* prioridad: contorno (la baja no se pinta en la card — un chip "BAJA" ocupa lugar sin informar) */
.py-prio{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border:1px solid currentColor;white-space:nowrap}
.py-prio--alta{color:var(--tbl-danger)}
.py-prio--media{color:var(--tbl-muted)}
.py-area{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:var(--tbl-surface-3);color:var(--tbl-ink-soft);white-space:nowrap}
.py-late{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:700;background:var(--tbl-danger-bg);color:var(--tbl-danger);white-space:nowrap}

/* ---- barra de avance (NUNCA informa sola: siempre lleva el texto al lado) ---- */
.py-prog{display:flex;align-items:center;gap:9px}
.py-bar{flex:1;min-width:0;height:8px;border-radius:999px;background:var(--tbl-surface-2);border:1px solid var(--tbl-border);overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.05)}
.py-bar__fl{display:block;height:100%;border-radius:999px;background:var(--tbl-accent-fill)}
.py-bar__fl.is-late{background:var(--tbl-danger-fill)}
.py-prog__t{font-size:11.5px;color:var(--tbl-muted);white-space:nowrap;font-variant-numeric:tabular-nums}

/* ---- última novedad en la card: lo que hace que el board se lea como "cómo viene todo" ---- */
.py-last{border-left:2px solid var(--tbl-border-2);padding:1px 0 1px 10px}
.py-last__x{font-size:12.5px;line-height:1.45;color:var(--tbl-ink-soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.py-last__r,.py-ev__r{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted)}
.py-last__w{font-size:11px;color:var(--tbl-muted);margin-top:3px}

/* ---- vista lista ---- */
.py-listw{overflow-x:auto}
.py-table{width:100%;border-collapse:collapse;font-size:13px}
.py-table th{text-align:left;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tbl-muted);padding:8px 10px;border-bottom:1px solid var(--tbl-border);white-space:nowrap}
.py-table td{padding:9px 10px;border-bottom:1px solid var(--tbl-line);vertical-align:middle}
.py-row{cursor:pointer}
.py-row:hover{background:var(--tbl-surface-2)}
.py-row:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:-2px}
/* encabezado ordenable: <button> dentro del <th> para que se enfoque y se active con teclado */
.py-th{background:none;border:0;padding:0;font:inherit;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tbl-muted);cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.py-th:hover{color:var(--tbl-ink)}
.py-th.is-on{color:var(--tbl-ink)}
.py-th:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px;border-radius:3px}
.py-th__a{font-size:8px}
.py-n b{display:block;font-weight:600;color:var(--tbl-ink)}
.py-n__s{display:block;font-size:11.5px;color:var(--tbl-muted);max-width:44ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.py-td-num{text-align:right;font-variant-numeric:tabular-nums}
.py-td-fec{white-space:nowrap;color:var(--tbl-ink-soft)}

/* ---- ficha (overlay + drawer) ---- */
.py-ov{position:fixed;inset:0;background:var(--tbl-overlay);display:flex;justify-content:flex-end;z-index:60}
.py-drawer{background:var(--tbl-surface);width:min(620px,100%);height:100%;display:flex;flex-direction:column;box-shadow:var(--tbl-shadow-lg);overflow:hidden}
.py-dh{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--tbl-border)}
.py-dh b{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted)}
.py-x{background:none;border:0;font-size:22px;line-height:1;color:var(--tbl-muted);cursor:pointer;padding:0 4px}
.py-x:hover{color:var(--tbl-ink)}
.py-x:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.py-db{padding:16px 18px 26px;overflow-y:auto;display:flex;flex-direction:column;gap:18px}
.py-head{display:flex;flex-direction:column;gap:9px}
.py-head__t{margin:0;font-size:19px;font-weight:600;line-height:1.25;letter-spacing:-.015em;color:var(--tbl-ink)}
.py-head__c{display:flex;flex-wrap:wrap;gap:6px}
.py-head__s{margin:0;font-size:13px;line-height:1.55;color:var(--tbl-ink-soft)}
.py-meta{display:flex;flex-wrap:wrap;gap:6px 26px;margin:2px 0 0}
.py-meta div{display:flex;flex-direction:column;gap:1px}
.py-meta dt{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted)}
.py-meta dd{margin:0;font-size:13px;color:var(--tbl-ink)}
.py-links{display:flex;flex-wrap:wrap;gap:7px}
.py-link2{font-size:12.5px;color:var(--tbl-accent);text-decoration:none;border:1px solid var(--tbl-border-2);border-radius:999px;padding:3px 11px;max-width:32ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.py-link2:hover{border-color:var(--tbl-accent);background:var(--tbl-accent-soft)}

/* ---- "¿Cómo viene?": SIEMPRE abierto, es lo primero accionable de la ficha ---- */
.py-say{background:var(--tbl-surface-2);border:1px solid var(--tbl-border);border-radius:var(--tbl-r);padding:12px 13px;display:flex;flex-direction:column;gap:8px}
.py-say__l{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted)}
.py-ta{width:100%;box-sizing:border-box;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font:inherit;font-size:13px;line-height:1.5;padding:9px 10px;resize:vertical}
.py-say__f{display:flex;align-items:center;justify-content:space-between;gap:10px}
.py-hint{font-size:11px;color:var(--tbl-muted)}

/* ---- secciones (bitácora, etapas) ---- */
.py-sec{display:flex;flex-direction:column;gap:9px;border-top:1px solid var(--tbl-line);padding-top:15px}
.py-sec__h{margin:0;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted);display:flex;align-items:center;gap:7px}
.py-sec__n{color:var(--tbl-ink-soft);font-variant-numeric:tabular-nums}
.py-evlist,.py-hitos{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
/* los eventos automáticos acompañan, no compiten: más tenues y un punto más chicos que la voz humana */
.py-ev{border-left:2px solid var(--tbl-border-2);padding:1px 0 1px 11px}
.py-ev.is-auto{border-left-color:var(--tbl-line)}
.py-ev__x{font-size:13px;line-height:1.5;color:var(--tbl-ink);white-space:pre-wrap;overflow-wrap:anywhere}
.py-ev.is-auto .py-ev__x{font-size:12.3px;color:var(--tbl-muted)}
.py-ev__w{font-size:11px;color:var(--tbl-muted);margin-top:3px}
.py-hito{display:flex;align-items:flex-start;gap:8px}
.py-hito label{flex:1;display:flex;align-items:flex-start;gap:8px;cursor:pointer;font-size:13px;line-height:1.45;color:var(--tbl-ink)}
.py-hito input{margin-top:2px;flex:none;cursor:pointer}
.py-hito input:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.py-hito .is-done{color:var(--tbl-muted);text-decoration:line-through}
.py-hdel{background:none;border:0;color:var(--tbl-muted);font-size:17px;line-height:1;cursor:pointer;padding:0 4px;flex:none}
.py-hdel:hover{color:var(--tbl-danger)}
.py-hdel:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.py-hadd{display:flex;gap:7px}
.py-hadd .py-input{flex:1;min-width:0}

/* ---- formulario (último: es lo que menos se usa) ---- */
.py-edit{border-top:1px solid var(--tbl-line);padding-top:13px}
.py-edit>summary{cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted);list-style:none}
.py-edit>summary::-webkit-details-marker{display:none}
.py-edit>summary::before{content:"▸ ";font-size:9px;vertical-align:middle}
.py-edit[open]>summary::before{content:"▾ "}
.py-edit>summary:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px;border-radius:3px}
.py-form{display:grid;grid-template-columns:1fr 1fr;gap:11px 12px;margin-top:13px}
@media(max-width:520px){.py-form{grid-template-columns:1fr}}
.py-field{display:flex;flex-direction:column;gap:4px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted);min-width:0}
.py-field--wide{grid-column:1/-1}
.py-field .py-input,.py-field .py-sel,.py-field .py-ta{text-transform:none;font-weight:400;letter-spacing:0;color:var(--tbl-ink);width:100%;box-sizing:border-box;min-width:0}
.py-field code{font-family:var(--tbl-mono);font-size:10px;text-transform:none;letter-spacing:0}
.py-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}

/* El badge de atrasados de la pestaña reusa `.tab-badge` (arriba), compartida con Prospectos. */

@media (prefers-reduced-motion:reduce){.py-card,.py-seg button{transition:none}}
/* Prospectos · "sin interés" con motivo y fecha para retomar (sql/66) + aviso de duplicados */
.pr-si{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;padding:10px;border:1px dashed var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface-2)}
.pr-si[hidden]{display:none}
@media(max-width:520px){.pr-si{grid-template-columns:1fr}}
.pr-si-info{font-size:11px;color:var(--tbl-muted);margin-top:3px;white-space:nowrap}
.pr-ret{color:var(--tbl-ink-soft)}
.pr-ret.due{color:var(--tbl-danger);font-weight:600}
.pr-pend--ret{background:var(--tbl-surface-2);border-color:var(--tbl-border-2)}
.pr-dup{margin-top:12px;background:var(--tbl-warn-bg);border:1px solid var(--tbl-warn);border-radius:var(--tbl-r);padding:9px 12px;font-size:12.5px;color:var(--tbl-ink)}
.pr-dup[hidden]{display:none}
.pr-dup__list{margin:6px 0 0;padding-left:18px}
.pr-dup__list li{margin:2px 0}
.pr-dup__open{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--tbl-ink);text-decoration:underline;cursor:pointer}
.pr-dup__open:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
/* Sesión vencida (UI.sessionExpired): una pantalla centrada que tapa toda la app — reemplaza los errores
   sueltos que quedaban pintados en cada tablero cuando el token de Microsoft vencía. */
body.tbl-sess-open{overflow:hidden}
.tbl-sess{position:fixed;inset:0;z-index:100;display:grid;place-items:center;grid-template-columns:minmax(0,1fr);justify-items:center;padding:16px;background:var(--tbl-bg);opacity:0;transition:opacity .2s}
.tbl-sess.is-open{opacity:1}
.tbl-sess__card{width:100%;max-width:400px;box-sizing:border-box;text-align:center;background:var(--tbl-surface);border:1px solid var(--tbl-border);border-radius:16px;box-shadow:var(--tbl-shadow-md);padding:38px 34px 24px}
.tbl-sess__card:focus{outline:none}
.tbl-sess__ic{width:44px;height:44px;margin:26px auto 14px;border-radius:50%;display:grid;place-items:center;background:var(--tbl-surface-2);color:var(--tbl-muted);border:1px solid var(--tbl-line)}
.tbl-sess h2{font-size:18px;font-weight:700;letter-spacing:-.01em;margin:0;color:var(--tbl-ink)}
.tbl-sess__tx{color:var(--tbl-muted);font-size:13.5px;line-height:1.55;margin:8px auto 0;max-width:300px}
.tbl-sess .tbl-sess__go{width:100%;height:46px;margin:24px 0 6px;justify-content:center;gap:9px;font-size:14.5px;border-radius:10px;box-shadow:0 1px 2px rgba(16,24,40,.08),0 4px 12px -4px var(--tbl-accent-fill);transition:filter .14s,box-shadow .14s,transform .06s}
.tbl-sess .tbl-sess__go:hover:not(:disabled){filter:brightness(.94);box-shadow:0 1px 2px rgba(16,24,40,.1),0 8px 18px -6px var(--tbl-accent-fill)}
.tbl-sess .tbl-sess__go:active:not(:disabled){transform:translateY(1px)}
.tbl-sess .tbl-sess__go:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:3px}
.tbl-sess__go:disabled{opacity:.7;cursor:progress}
.tbl-sess__out{background:none;border:0;border-radius:var(--tbl-r);padding:8px 14px;font:inherit;font-size:13px;font-weight:500;color:var(--tbl-muted);cursor:pointer}
.tbl-sess__out:hover{color:var(--tbl-ink);background:var(--tbl-surface-2)}
.tbl-sess__out:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.tbl-sess__foot{margin-top:18px;padding-top:16px;border-top:1px solid var(--tbl-line);font-size:11.5px;color:var(--tbl-muted);display:flex;align-items:center;justify-content:center;gap:7px}
@media (prefers-reduced-motion:reduce){.tbl-sess{transition:none}}
.pr-archt[aria-pressed=true]{color:var(--tbl-ink);font-weight:600}
.pr-archnote{font-size:12.5px;color:var(--tbl-muted);margin:4px 0 8px}

/* ===== Panel de control (Ajustes → Control, js/control.js, sql/71 + sql/72) ===== */
.ctl,.ctl-body{display:flex;flex-direction:column;gap:16px}
.ctl .tbl-card{overflow:visible}
/* semáforo */
.ctl-sem{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;border-left:4px solid var(--tbl-ok)}
.ctl-sem--aviso{border-left-color:var(--tbl-warn)}
.ctl-sem--problema{border-left-color:var(--tbl-danger)}
.ctl-sem__main{display:flex;align-items:center;gap:14px;min-width:0}
.ctl-sem__txt{min-width:0}
.ctl-sem__dot{width:12px;height:12px;border-radius:50%;flex:0 0 auto;background:var(--tbl-ok);box-shadow:0 0 0 4px var(--tbl-ok-bg)}
.ctl-sem--aviso .ctl-sem__dot{background:var(--tbl-warn);box-shadow:0 0 0 4px var(--tbl-warn-bg)}
.ctl-sem--problema .ctl-sem__dot{background:var(--tbl-danger);box-shadow:0 0 0 4px var(--tbl-danger-bg)}
.ctl-sem__t{margin:0;font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--tbl-ink)}
.ctl-sem__s{font-size:13px;color:var(--tbl-ink-soft);margin-top:3px}
.ctl-sem__side{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.ctl-sem__ts{font-size:12px;color:var(--tbl-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
/* secciones */
.ctl-sec__h{padding:16px 20px 12px}
.ctl-sec__h h3{margin:0;font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--tbl-ink)}
.ctl-sec__d{margin:5px 0 0;max-width:96ch;font-size:12.5px;line-height:1.5;color:var(--tbl-muted)}
.ctl-sec__d b{color:var(--tbl-ink-soft);font-weight:600}
.ctl-sub{font-size:12px;margin-top:2px;line-height:1.4}
.ctl-cli{color:var(--tbl-ink-soft);max-width:280px}
.ctl-neg{color:var(--tbl-danger)}
.ctl-pill--warn{color:var(--tbl-warn);background:var(--tbl-warn-bg)}
.ctl-tag{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--tbl-surface-2);border:1px solid var(--tbl-border);color:var(--tbl-ink-soft);white-space:nowrap}
/* tablas del panel: un poco más compactas que las de listado, números a la derecha */
.ctl-tbl{font-size:13.5px}
.ctl-tbl thead th{padding:10px 20px}
.ctl-tbl tbody td{padding:11px 20px}
.ctl-tbl thead th.tbl-num,.ctl-tbl tbody td.tbl-num{text-align:right}
.ctl-tbl tbody tr{transition:background .12s}
.ctl-tbl tbody tr:hover{background:var(--tbl-surface-2)}
.ctl-tbl--datos th:first-child{width:26%}
.ctl-tbl--snap th:first-child{width:20%}
.ctl-tbl--snap th:nth-child(2),.ctl-tbl--snap th:nth-child(3){width:32%}
.ctl-dud td:first-child{white-space:nowrap;font-variant-numeric:tabular-nums}
.ctl-est{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.ctl-est .ctl-sub{margin-top:0}
.ctl-acc{white-space:nowrap}
.ctl-acc .tbl-btn+.tbl-btn{margin-left:6px}
.ctl-acc .tbl-btn--ok{background:var(--tbl-ok-bg)}
.ctl-acc .tbl-btn--danger{background:var(--tbl-danger-bg)}
.ctl-acc .tbl-btn--ok:hover,.ctl-acc .tbl-btn--danger:hover{border-color:currentColor}
.ctl-acc .tbl-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
/* criterio de las dudosas: umbral + bancas que se controlan */
.ctl-crit{display:flex;flex-wrap:wrap;align-items:flex-start;gap:14px 32px;margin:0 20px 14px;padding:14px 16px;border:1px solid var(--tbl-line);border-radius:var(--tbl-r);background:var(--tbl-surface-2)}
.ctl-crit__l{display:block;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--tbl-muted);margin-bottom:7px}
.ctl-crit__h{margin:8px 0 0;font-size:12px;line-height:1.45;color:var(--tbl-muted);max-width:80ch}
.ctl-umb{margin:0;flex:0 0 auto}
.ctl-umb__row{display:flex;align-items:center;gap:8px}
.ctl-umb__in{width:130px;height:31px;font-size:13.5px;font-variant-numeric:tabular-nums}
.ctl-bancas{flex:1 1 360px;min-width:0}
.ctl-bancas__chips{display:flex;flex-wrap:wrap;gap:6px}
.ctl-bchip{display:inline-flex;align-items:center;gap:7px;height:31px;padding:0 11px 0 9px;border-radius:999px;border:1px solid var(--tbl-border-2);background:var(--tbl-surface);color:var(--tbl-muted);font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .14s,border-color .14s,color .14s}
.ctl-bchip:hover{border-color:var(--tbl-ink-soft);color:var(--tbl-ink-soft)}
.ctl-bchip:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.ctl-bchip__ck{position:relative;width:14px;height:14px;border-radius:4px;border:1.5px solid var(--tbl-border-2);background:var(--tbl-surface);flex:0 0 auto;box-sizing:border-box}
.ctl-bchip[aria-pressed="true"]{color:var(--tbl-ink);border-color:var(--tbl-accent);background:var(--tbl-accent-soft)}
.ctl-bchip[aria-pressed="true"] .ctl-bchip__ck{background:var(--tbl-accent-fill);border-color:var(--tbl-accent-fill)}
.ctl-bchip[aria-pressed="true"] .ctl-bchip__ck::after{content:"";position:absolute;left:3.5px;top:1px;width:3.5px;height:7px;border:solid var(--tbl-accent-ink);border-width:0 1.8px 1.8px 0;transform:rotate(45deg)}
.ctl-bchip__n{min-width:18px;padding:1px 6px;border-radius:999px;background:var(--tbl-surface-2);border:1px solid var(--tbl-border);color:var(--tbl-ink-soft);font-size:11px;font-variant-numeric:tabular-nums;text-align:center;box-sizing:border-box}
.ctl-bchip[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
/* impacto por banca */
.ctl-imp{margin:0 20px 14px}
.ctl-imp__t{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--tbl-muted);margin-bottom:7px}
.ctl-imp__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.ctl-imp__it{padding:11px 14px;border:1px solid var(--tbl-line);border-left:3px solid var(--tbl-warn);border-radius:var(--tbl-r)}
.ctl-imp__b{font-size:12.5px;font-weight:600;color:var(--tbl-ink-soft)}
.ctl-imp__v{font-size:18px;font-weight:700;letter-spacing:-.01em;color:var(--tbl-ink);font-variant-numeric:tabular-nums;margin-top:2px}
.ctl-imp__s{font-size:12px;color:var(--tbl-muted);margin-top:2px;line-height:1.4}
/* filtros de la lista */
.ctl-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 20px;border-top:1px solid var(--tbl-line)}
.ctl-tools .tbl-select,.ctl-tools .tbl-inp{height:34px;font-size:13px}
.ctl-tools__sp{flex:1}
.ctl-q{width:auto;flex:0 1 280px;min-width:180px}
.ctl-cnt{padding:0 20px 8px;font-size:12px}
/* mensajes */
.ctl-msg{padding:0 20px 10px;font-size:12.5px;color:var(--tbl-ink-soft)}
.ctl-msg:empty{padding:0}
.ctl-msg.is-err{color:var(--tbl-danger)}
.ctl-msg--sem{padding:6px 0 0}
.ctl-msg:focus{outline:none}
.ctl-msg:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
/* diálogo con nota */
.ctl-nota{display:block;font-size:12.5px;font-weight:600;color:var(--tbl-ink-soft);margin:12px 0 6px}
.ctl-nota__in{width:100%;height:auto;min-height:72px;padding:8px 12px;resize:vertical;box-sizing:border-box}
/* aviso en la navegación */
.tbl-navbadge{display:inline-flex;align-items:center;justify-content:center;margin-left:6px;vertical-align:1px;border-radius:999px;font-size:10.5px;font-weight:700;line-height:1}
.tbl-navbadge--problema{min-width:18px;height:18px;padding:0 5px;background:var(--tbl-danger-fill);color:#fff}
.tbl-navbadge--aviso{width:8px;height:8px;background:var(--tbl-warn)}
/* feriados */
.ctl-fer{margin:4px 20px 16px;border:1px solid var(--tbl-line);border-radius:var(--tbl-r);padding:10px 14px;background:var(--tbl-surface-2)}
.ctl-fer summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--tbl-ink)}
.ctl-fer summary .tbl-muted{font-weight:500}
.ctl-fer summary:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:2px}
.ctl-fer__form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;font-size:12.5px;color:var(--tbl-ink-soft);font-weight:600}
.ctl-fer__in{width:auto;height:34px;font-size:13px}
.ctl-fer__nom{flex:1 1 220px;min-width:160px}
.ctl-fer__lst{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;max-height:240px;overflow:auto}
.ctl-fer__it{display:flex;align-items:center;gap:10px;font-size:13px;padding:4px 0;border-top:1px solid var(--tbl-line)}
.ctl-fer__it:first-child{border-top:0}
.ctl-fer__f{font-variant-numeric:tabular-nums;font-weight:600;min-width:84px}
.ctl-fer__n{flex:1;color:var(--tbl-ink-soft)}
.ctl-fer .ctl-msg{padding:4px 0 0}
/* celular: las tablas del panel pasan a TARJETAS (una fila = una tarjeta; cada celda con su etiqueta) → las
   acciones quedan a la vista, sin scroll horizontal escondido */
@media (max-width:720px){
  .ctl-sem{flex-direction:column;align-items:flex-start;padding:14px 16px}
  .ctl-sem__side{width:100%;justify-content:space-between}
  .ctl-sec__h{padding:14px 16px 10px}
  .ctl-crit,.ctl-imp,.ctl-fer{margin-left:16px;margin-right:16px}
  .ctl-crit{padding:12px}
  .ctl-tools{padding:12px 16px}
  .ctl-tools__sp{display:none}
  .ctl-tools .tbl-select{flex:1 1 140px}
  .ctl-q{min-width:0;flex:1 1 100%}
  .ctl-msg,.ctl-cnt{padding-left:16px;padding-right:16px}
  .ctl-msg:empty{padding:0}
  .ctl-msg--sem{padding:6px 0 0}
  .ctl-cli{max-width:none}
  .ctl-tbl thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
  .ctl-tbl,.ctl-tbl tbody,.ctl-tbl tr,.ctl-tbl td{display:block;width:100%;box-sizing:border-box}
  .ctl-tbl tbody tr{padding:10px 16px;border-bottom:1px solid var(--tbl-line)}
  .ctl-tbl tbody tr:hover{background:none}
  .ctl-tbl tbody tr:last-child{border-bottom:0}
  .ctl-tbl tbody td,.ctl-tbl tbody td.tbl-num{padding:4px 0;border:0;text-align:left;white-space:normal}
  .ctl-tbl tbody td[data-label]{display:grid;grid-template-columns:112px 1fr;gap:2px 10px;align-items:start}
  .ctl-tbl tbody td[data-label] > *{grid-column:2}
  .ctl-tbl tbody td[data-label] > .tbl-pill,.ctl-tbl tbody td[data-label] > .ctl-tag{justify-self:start}
  .ctl-tbl tbody td[data-label]::before{grid-row:1 / span 3;content:attr(data-label);font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--tbl-muted);padding-top:3px}
  .ctl-tbl tbody td.ctl-acc{display:flex;flex-wrap:wrap;gap:6px;padding-top:8px}
  .ctl-acc .tbl-btn+.tbl-btn{margin-left:0}
}

/* ===== Combobox con buscador (UI.combo, js/ui.js) ===== */
.tbl-combo{display:flex;flex-direction:column;gap:4px;min-width:0}
.tbl-combo__l{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--tbl-muted)}
.tbl-combo__box{position:relative}
.tbl-combo__in{width:100%;box-sizing:border-box;height:36px;padding:0 54px 0 12px;border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);background:var(--tbl-surface);color:var(--tbl-ink);font-size:13.5px;font-weight:500;outline:none;text-overflow:ellipsis;transition:border-color .14s,box-shadow .14s}
.tbl-combo__in::placeholder{color:var(--tbl-ink-soft);opacity:1}
.tbl-combo__in:focus{border-color:var(--tbl-accent);box-shadow:0 0 0 3px var(--tbl-accent-soft)}
.tbl-combo.is-on .tbl-combo__in{border-color:var(--tbl-accent);background:var(--tbl-accent-soft);font-weight:600}
.tbl-combo__chev{position:absolute;right:12px;top:50%;width:7px;height:7px;margin-top:-5px;border:solid var(--tbl-muted);border-width:0 1.6px 1.6px 0;transform:rotate(45deg);pointer-events:none}
.tbl-combo__x{position:absolute;right:28px;top:50%;transform:translateY(-50%);width:22px;height:22px;border:0;border-radius:50%;background:transparent;color:var(--tbl-ink-soft);font-size:16px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.tbl-combo__x:hover{background:var(--tbl-surface-2);color:var(--tbl-ink)}
.tbl-combo__x:focus-visible{outline:2px solid var(--tbl-focus);outline-offset:1px}
.tbl-combo__x[hidden]{display:none}
.tbl-combo__lst{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);margin:0;padding:4px;list-style:none;max-height:280px;overflow:auto;background:var(--tbl-surface);border:1px solid var(--tbl-border-2);border-radius:var(--tbl-r);box-shadow:var(--tbl-shadow-md)}
.tbl-combo__lst[hidden]{display:none}
.tbl-combo__op{padding:8px 10px;border-radius:calc(var(--tbl-r) - 2px);font-size:13px;color:var(--tbl-ink);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl-combo__op.is-all{color:var(--tbl-ink-soft);font-weight:600;border-bottom:1px solid var(--tbl-line);border-radius:0;margin-bottom:2px}
.tbl-combo__op.is-act{background:var(--tbl-surface-2)}
.tbl-combo__op[aria-selected="true"]{color:var(--tbl-accent);font-weight:600}
.tbl-combo__op[aria-selected="true"]::after{content:"✓";float:right;margin-left:8px}
.tbl-combo__empty{padding:10px;font-size:12.5px;color:var(--tbl-muted)}
@media (max-width:720px){.tbl-combo__in{height:42px;font-size:16px}}
