/* ============================================================================
   Suite SEIA — design system "cowork" (§15.1–15.12)
   Fuente visual: docs/diseño/seia-*.html. Tokens vía CSS vars.
   NO hardcodear colores fuera de estas variables.
   ============================================================================ */
:root{
  --teal-50:#f0fdfa; --teal-100:#ccfbf1; --teal-200:#99f6e4; --teal-300:#5eead4; --teal-400:#2dd4bf; --teal-600:#0d9488; --teal-700:#0f766e; --teal-800:#115e59;
  --ink-1:#0f172a; --ink-2:#1e293b; --ink-3:#475569; --ink-4:#64748b; --ink-5:#94a3b8; --ink-6:#cbd5e1;
  --surface:#ffffff; --surface-muted:#f8fafc; --chrome:#0f172a;
  --hairline:rgba(15,23,42,0.08); --hairline-strong:rgba(15,23,42,0.14);
  --success-600:#15803d; --success-50:#f0fdf4; --warning-700:#b45309; --warning-50:#fffbeb; --danger-700:#991b1b; --danger-50:#fef2f2; --info-700:#1d4ed8; --info-50:#eff6ff;
  --font-sans:'IBM Plex Sans',system-ui,sans-serif; --font-serif:'IBM Plex Serif',Georgia,serif; --font-mono:'JetBrains Mono',Consolas,monospace;
  --text-mono-xs-size:10px;
  --space-1:4px; --space-1-5:6px; --space-2:8px; --space-2-5:10px; --space-3:12px; --space-3-5:14px; --space-4:16px; --space-5:20px; --space-6:24px; --space-8:32px;
  --radius-sm:4px; --radius-md:6px; --radius-lg:8px; --radius-full:9999px;
  --shadow-md:0 4px 12px rgba(15,23,42,0.08),0 2px 4px rgba(15,23,42,0.06);
  --shadow-pop:0 8px 28px rgba(15,23,42,0.14),0 2px 6px rgba(15,23,42,0.08);
  --duration-fast:120ms; --ease-standard:cubic-bezier(0.2,0,0,1);
  /* extras de la ficha de proyecto (timeline current, teasers Pro/Básico) */
  --orange-50:#fff7ed; --orange-500:#f97316; --orange-700:#9a3412;
  --pro-50:#faf5ff; --pro-200:#e9d5ff; --pro-600:#7c3aed; --pro-700:#6b21a8;
  --info-100:#dbeafe; --info-200:#bfdbfe; --warning-200:#fde68a;
}
.seia-suite *,.seia-suite *::before,.seia-suite *::after{box-sizing:border-box}
body.seia-suite{font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--ink-1);background:var(--surface-muted);-webkit-font-smoothing:antialiased;margin:0}
.seia-suite a{color:inherit;text-decoration:none}
/* Reset de botón con especificidad de tipo (0,0,1) — NO usar `.seia-suite button`
   (0,1,1): pisaría el borde/fondo de las clases de botón de un solo selector
   (.cp-apply, .filt-help-btn, .add-cols…) dejándolas transparentes/sin borde.
   El archivo solo se carga en páginas de la suite, así que `button` no filtra. */
button{font-family:inherit;cursor:pointer;border:none;background:none}
.seia-suite .btn{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;font-size:13px;font-weight:500;border-radius:var(--radius-md);border:1px solid transparent}
.seia-suite .btn-primary{background:var(--teal-700);color:#fff}
.seia-suite .btn-ghost{background:transparent;color:var(--ink-3)}
.seia-suite .btn-sm{height:28px;padding:0 10px;font-size:12px}
.seia-suite .topbar{height:48px;background:var(--surface);border-bottom:1px solid var(--hairline);display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);position:sticky;top:0;z-index:50}
.seia-suite .hamburger{width:34px;height:34px;border-radius:var(--radius-md);border:1px solid var(--hairline-strong);background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-3);flex-shrink:0}
.seia-suite .topbar-brand{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:15px;font-weight:500;letter-spacing:0.02em;color:var(--ink-1)}
.seia-suite .topbar-brand svg{width:22px;height:22px;flex-shrink:0}
.seia-suite .topbar-search{flex:1;max-width:420px;position:relative;display:flex;align-items:center}
.seia-suite .topbar-search svg{position:absolute;left:10px;color:var(--ink-4)}
.seia-suite .topbar-search input{width:100%;height:32px;padding:0 12px 0 32px;border:1px solid var(--hairline);border-radius:var(--radius-md);font-size:13px;background:var(--surface-muted);font-family:var(--font-sans);color:var(--ink-1)}
.seia-suite .topbar-right{margin-left:auto;display:flex;align-items:center;gap:var(--space-2)}
.ambihub-scrim{position:fixed;inset:48px 0 0 0;background:rgba(15,23,42,0.35);z-index:60;opacity:0;visibility:hidden;transition:opacity 160ms,visibility 160ms}
body.ambihub-open .ambihub-scrim{opacity:1;visibility:visible}
.ambihub-menu{position:fixed;top:48px;left:0;bottom:0;width:230px;background:var(--chrome);z-index:61;transform:translateX(-100%);transition:transform 180ms var(--ease-standard);display:flex;flex-direction:column;padding:var(--space-3) var(--space-2)}
body.ambihub-open .ambihub-menu{transform:translateX(0)}
.ah-head{display:flex;align-items:center;gap:8px;padding:0 var(--space-2) var(--space-3);border-bottom:1px solid rgba(255,255,255,0.08);margin-bottom:var(--space-2)}
.ah-head svg{width:22px;height:22px}
.ah-head .brand{font-family:var(--font-mono);font-size:15px;font-weight:500;letter-spacing:0.02em;color:#fff}
/* especificidad (0,2,0) para ganarle a `.seia-suite a{color:inherit}` (0,1,1):
   sin el prefijo los links del overlay heredan la tinta oscura del body y
   quedan invisibles sobre el fondo navy */
.ambihub-menu .ah-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-md);color:#cbd5e1;font-size:13px}
.ambihub-menu .ah-item:hover{background:rgba(255,255,255,0.06);color:#e2e8f0}
.ambihub-menu .ah-item.active{background:rgba(45,212,191,0.12);color:var(--teal-300);font-weight:500}
.ambihub-menu .ah-count{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--ink-5)}
.ah-divider{height:1px;background:rgba(255,255,255,0.08);margin:var(--space-2)}
.shell{display:flex;align-items:stretch}
.shell .main{flex:1;min-width:0}
.secondary{width:198px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--hairline);position:sticky;top:48px;align-self:flex-start;height:calc(100vh - 48px);overflow-y:auto;padding:var(--space-3) var(--space-2)}
.sec-context{padding:var(--space-1) var(--space-2-5) var(--space-2)}
.sec-context-label{font-size:9.5px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-5);font-weight:600}
.sec-context-name{font-size:12.5px;color:var(--ink-2);line-height:1.3;margin-top:2px;font-weight:500}
.sec-link{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:6px 10px;border-radius:var(--radius-md);color:var(--ink-2);font-size:13px}
.sec-link:hover{background:var(--surface-muted)}
.sec-link.active{background:var(--teal-50);color:var(--teal-700);font-weight:500}
.sec-link .c{font-family:var(--font-mono);font-size:10px;color:var(--ink-4)}
.sec-group-label{padding:6px 10px 2px;font-size:9.5px;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-5);font-weight:600;margin-top:var(--space-2)}
.main{min-width:0;display:flex;flex-direction:column;background:var(--surface)}
.main-inner{max-width:1360px;margin:0 auto;width:100%;padding:var(--space-6) var(--space-6) 80px}
.eyebrow{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.12em;color:var(--teal-700);margin-bottom:var(--space-1-5)}
.page-title{font-size:24px;font-weight:600;color:var(--ink-1);margin:0 0 var(--space-2);font-family:var(--font-serif);line-height:1.2}
.page-sub{font-size:13.5px;color:var(--ink-3);max-width:80ch;margin-bottom:var(--space-5)}
.toolbar{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}
.searchbox{flex:1;min-width:240px;max-width:440px;position:relative;display:flex;align-items:center}
.searchbox svg{position:absolute;left:12px;color:var(--ink-4)}
.searchbox input{width:100%;height:38px;padding:0 14px 0 36px;border:1px solid var(--hairline-strong);border-radius:var(--radius-md);font-size:14px;background:#fff;font-family:var(--font-sans)}
.count-pill{font-family:var(--font-mono);font-size:12px;color:var(--ink-4)}
.filt-help-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;background:#fff;border:1px solid var(--hairline-strong);color:var(--ink-2);font-family:inherit;font-size:12px;font-weight:500;cursor:pointer;border-radius:var(--radius-sm);white-space:nowrap}
.filt-help-btn:hover{background:var(--teal-50);border-color:var(--teal-300);color:var(--teal-700)}
.filt-help-btn svg{flex-shrink:0;color:var(--teal-600)}
.fhelp-scrim{position:fixed;inset:0;background:rgba(15,23,42,0.4);z-index:90;display:none;align-items:center;justify-content:center;padding:24px}
.fhelp-scrim.show{display:flex}
.fhelp{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);max-width:520px;width:100%;padding:22px 24px}
.fhelp-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:10px}
.fhelp-head h3{flex:1;font-family:var(--font-serif,'IBM Plex Serif',Georgia,serif);font-size:17px;font-weight:600;margin:0}
.fhelp-close{width:32px;height:32px;border-radius:var(--radius-md);border:1px solid var(--hairline);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-3);flex-shrink:0}
.fhelp-close:hover{background:var(--surface-muted);color:var(--ink-1)}
.fhelp-lead{font-size:13px;color:var(--ink-3);margin:0 0 14px}
.fhelp-demo{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.fh-col{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--surface-muted);border:1px solid var(--hairline);border-radius:var(--radius-sm);font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--ink-3)}
.fh-col svg{color:var(--teal-700)}
.fhelp-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:9px}
.fhelp-list li{font-size:13px;color:var(--ink-2);line-height:1.5}
.fhelp-list strong{color:var(--ink-1)}
.add-cols{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px;border:1px dashed var(--hairline-strong);border-radius:var(--radius-md);font-size:13px;color:var(--ink-2);background:#fff;font-weight:500;margin-left:auto}
.add-cols:hover{border-color:var(--teal-600);color:var(--teal-700)}
.add-cols svg{color:var(--ink-4)}
.add-cols:hover svg{color:var(--teal-700)}
.tier-pill{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:var(--teal-700);background:var(--teal-50);border:1px solid var(--teal-200);padding:1px 6px;border-radius:var(--radius-full)}
.chip-status{display:inline-flex;align-items:center;padding:2px 7px;font-size:var(--text-mono-xs-size);font-weight:600;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:0.04em;white-space:nowrap}
.chip-status.long{text-transform:none;letter-spacing:0;font-size:11px;padding:2px 8px}
.chip-status.success{background:var(--success-50);color:var(--success-600)}
.chip-status.warn{background:var(--warning-50);color:var(--warning-700)}
.chip-status.danger{background:var(--danger-50);color:var(--danger-700)}
.chip-status.info{background:var(--info-50);color:var(--info-700)}
.chip-status.muted{background:var(--surface-muted);color:var(--ink-4);border:1px solid var(--hairline-strong)}
.chip-tipo{display:inline-flex;align-items:center;padding:1px 6px;font-family:var(--font-mono);font-size:11px;font-weight:500;border-radius:var(--radius-sm)}
.chip-tipo.dia{background:var(--surface);color:var(--ink-2);border:1px solid var(--hairline-strong)}
.chip-tipo.eia{background:var(--surface);color:var(--teal-700);border:1px solid var(--teal-700)}
/* La tabla conserva su alto natural (scroll de página). El scroll horizontal
   se expone con una barra flotante (.hscroll-float) anclada al borde inferior
   de la ventana, así queda siempre a la vista aunque la tabla sea larga. */
.table-scroll{border:1px solid var(--hairline);border-radius:var(--radius-md);background:#fff;overflow-x:auto;overflow-y:hidden}
.ntable{width:100%}
.ntable-head,.ntable-row{display:grid;gap:var(--space-2);align-items:center;padding:9px var(--space-3-5);font-size:12.5px}
/* Header flotante: en las fichas la .ntable no tiene wrapper con overflow, así
   que el header se fija bajo el topbar (48px) al scrollear tablas largas. En los
   listados la tabla vive dentro de .table-scroll (overflow-x:auto), que crea su
   propio scrollport y rompe el sticky de página → ahí queda estático. En los
   drawers (.anx-body / .exp-body) el scrollport ES el cuerpo del drawer → el
   header se fija a top:0 de ese scrollport. */
.ntable-head{position:sticky;top:48px;z-index:6;background:var(--surface-muted);border-bottom:1px solid var(--hairline);box-shadow:0 2px 4px -2px rgba(15,23,42,0.08);font-size:9.5px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:0.06em}
.table-scroll .ntable-head{position:static;top:auto;z-index:auto;box-shadow:none}
/* El shadow blanco superior cubre la franja del padding del drawer, donde las
   filas que scrollean quedarían visibles por encima del header pegado. En el
   drawer de anexos la franja es de 8px (.anx-body padding-top: space-2) porque
   chips y buscador viven FUERA del scrollport (.anx-tools) — un shadow de -28px
   tapaba la barra de búsqueda cuando convivían en el mismo scrollport. */
.anx-body .ntable-head,.exp-body .ntable-head{top:0;border-radius:var(--radius-md) var(--radius-md) 0 0;box-shadow:0 -28px 0 0 #fff,0 2px 4px -2px rgba(15,23,42,0.08)}
.anx-body .ntable-head{box-shadow:0 -12px 0 0 #fff,0 2px 4px -2px rgba(15,23,42,0.08)}
/* Barra de scroll horizontal flotante (sincronizada con .table-scroll vía JS). */
.hscroll-float{position:fixed;bottom:0;height:14px;overflow-x:auto;overflow-y:hidden;z-index:35;display:none;background:rgba(248,250,252,0.85);backdrop-filter:blur(3px);border-top:1px solid var(--hairline-strong)}
.hscroll-inner{height:1px}
.ntable-head .x{color:var(--teal-700)}
.ntable-row{border-bottom:1px solid var(--hairline);cursor:pointer}
.ntable-row:last-child{border-bottom:none}
.ntable-row:hover{background:var(--surface-muted)}
.ntable-row:hover .nt-name{text-decoration:underline}
.ntable-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ntable-cell.mono{font-family:var(--font-mono);font-size:11px;color:var(--ink-3);font-feature-settings:"tnum" 1}
.ntable-cell.right{text-align:right}
.nt-name{color:var(--ink-1);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nt-inv{font-family:var(--font-mono);font-size:11.5px;font-weight:600;color:var(--ink-2);text-align:right;font-feature-settings:"tnum" 1}
.nt-sub{color:var(--ink-4)}
.nt-check{accent-color:var(--teal-700)}
.nt-link{color:var(--teal-700);font-weight:500}
.nt-link:hover{text-decoration:underline}
.col-filter,.col-sort{display:inline-flex;align-items:center;gap:4px;cursor:pointer;color:inherit;transition:all var(--duration-fast);user-select:none;border-radius:var(--radius-sm);padding:3px 5px;margin:-3px -5px}
.col-filter:hover,.col-sort:hover{color:var(--ink-1);background:var(--surface)}
.col-filter.has-filter{color:var(--teal-700)}
.col-filter .funnel,.col-sort .sort-arrow{opacity:0.5}
.col-filter:hover .funnel,.col-filter.has-filter .funnel{opacity:1}
.col-popup{position:fixed;z-index:80;width:240px;background:#fff;border:1px solid var(--hairline-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-pop);display:none;flex-direction:column;overflow:hidden}
.col-popup.open{display:flex}
.cp-search{position:relative;padding:10px 10px 8px;border-bottom:1px solid var(--hairline)}
.cp-search svg{position:absolute;left:18px;top:18px;color:var(--ink-4)}
.cp-search input{width:100%;height:32px;padding:0 10px 0 30px;border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);font-size:13px;font-family:var(--font-sans)}
.cp-daterange{padding:8px 10px;display:flex;flex-direction:column;gap:6px}
.cp-dr-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-3)}
.cp-dr-row span{width:42px;flex-shrink:0}
.cp-dr-row input{flex:1;min-width:0;height:30px;border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);padding:0 8px;font-size:12.5px;font-family:var(--font-sans)}
.cp-years-label{padding:4px 10px 2px;font-size:10px;text-transform:uppercase;letter-spacing:0.06em;color:var(--ink-4)}
.cp-years{display:flex;flex-wrap:wrap;gap:6px;padding:4px 10px 8px}
.cp-year{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--hairline-strong);border-radius:var(--radius-full);font-size:12px;color:var(--ink-2);cursor:pointer}
.cp-year input{margin:0}
/* Barra de orden: hermana del scroller (#cpOpts) y no hija, para que "ordenar"
   quede fijo al pie del popup. Dentro del scroller caía bajo el pliegue apenas
   la columna tenía muchas opciones —Año son 14, comuna 346— y ordenar es la
   acción más frecuente del embudo. `:empty` porque la mayoría de los embudos no
   ofrece orden: sin esa regla cada uno de ellos pintaría un borde y un hueco. */
.cp-sortbar{border-top:1px solid var(--hairline);padding-top:2px}
.cp-sortbar:empty{display:none}

/* Bloque de opciones excluyentes del popup: "ordenar" (dentro de .cp-sortbar) y
   "o por vínculo" en el embudo de ID SEIA, que sí vive junto a su input porque
   son la misma pregunta. Mismas reglas que en sma-listados.css: las dos suites
   tienen su hoja propia, así que el primitivo se copia igual en vez de derivar
   dos variantes.

   Filas apiladas y no dos píldoras lado a lado: son etiquetas de frase ("Mayor a
   menor", "Con vínculo SEIA") y partidas en columnas de 107px envolvían a dos
   líneas dentro de un borde completamente redondo, que se veía inflado. Apiladas
   caben en una línea, admiten etiquetas descriptivas y toman la forma de fila que
   el propio popup ya usa para elegir (.cp-opt). El estado elegido lo lleva el
   fondo teal del DS y el radio; el borde de píldora sobraba —y pintaba un verde
   `--accent` que no existe en estos tokens, así que caía al fallback—. */
.cp-sortrow{display:flex;flex-direction:column;gap:2px;padding:2px 2px 8px}
.cp-sortrow .cp-year{border:0;border-radius:var(--radius-sm);justify-content:flex-start;gap:8px;padding:6px 8px;font-size:13px}
.cp-sortrow .cp-year input{accent-color:var(--teal-700)}
.cp-sortrow .cp-year:hover{background:var(--surface-muted)}
.cp-sortrow .cp-year:has(input:checked){background:var(--teal-50);color:var(--ink-1);font-weight:500}
/* El encabezado de sección (.optgroup-head, en suite-actions.css) es sticky, así
   que el relleno vertical del scroller pasa a los hijos: con `padding:6px` arriba
   quedaba una franja donde la opción anterior asomaba POR ENCIMA del título. */
.cp-opts{max-height:210px;overflow-y:auto;padding:0 6px}
.cp-opts>:first-child{margin-top:6px}
.cp-opts>:last-child{margin-bottom:6px}
.cp-opts>.optgroup-head{margin:0 -6px;padding-left:14px;padding-right:14px}
.cp-opts>.optgroup-head:first-child{margin-top:0}
.cp-opt{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-sm);font-size:13px;color:var(--ink-2);cursor:pointer}
.cp-opt:hover{background:var(--surface-muted)}
.cp-opt input{accent-color:var(--teal-700)}
.cp-foot{display:flex;justify-content:space-between;gap:8px;padding:8px 10px;border-top:1px solid var(--hairline)}
.cp-foot button{height:30px;padding:0 12px;border-radius:var(--radius-sm);font-size:12.5px;font-weight:500}
.cp-clear{background:transparent;color:var(--ink-4)}
.cp-apply{background:var(--teal-700);color:#fff}
.cp-hint{font-size:11px;color:var(--ink-5);padding:0 10px 8px}
.cols-panel{position:fixed;z-index:80;width:268px;background:#fff;border:1px solid var(--hairline-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-pop);display:none;flex-direction:column;overflow:hidden}
.cols-panel.open{display:flex}
.xp-head{padding:11px 14px 9px;border-bottom:1px solid var(--hairline)}
.xp-head h4{font-size:13px;font-weight:600;margin:0}
.xp-head p{font-size:11.5px;color:var(--ink-4);margin-top:2px;line-height:1.4}
.xp-opts{padding:6px}
.xp-opt{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:var(--radius-sm);font-size:13px;color:var(--ink-2);cursor:pointer}
.xp-opt:hover{background:var(--surface-muted)}
.xp-opt input{accent-color:var(--teal-700)}
.xp-opt .lbl{flex:1}
.xp-foot{padding:9px 12px;border-top:1px solid var(--hairline);display:flex;align-items:center;justify-content:space-between;gap:8px}
.xp-foot .note{font-size:11px;color:var(--ink-4)}
.xp-foot a{font-size:12px;font-weight:600;color:var(--teal-700)}
.pager{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-4);font-size:12.5px;color:var(--ink-4)}
.pager .pg{display:flex;gap:4px}
.pager .pg button{min-width:30px;height:30px;border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);background:#fff;font-size:12px;color:var(--ink-2);font-family:var(--font-mono);padding:0 6px}
.pager .pg button.on{background:var(--teal-700);color:#fff;border-color:var(--teal-700)}
.pager .pg button:disabled{opacity:0.4;cursor:default}
.empty-state{padding:48px 24px;text-align:center;color:var(--ink-4);font-size:13.5px}
.empty-state strong{display:block;color:var(--ink-2);font-size:15px;font-weight:600;margin-bottom:4px}
.htmx-indicator{opacity:0;transition:opacity 120ms}
.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{opacity:1}
.bulk-bar{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--chrome);color:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:8px 8px 8px 16px;display:none;align-items:center;gap:6px;z-index:70}
body.bulk-active .bulk-bar{display:flex}
.bulk-counter{font-family:var(--font-mono);font-size:12px;color:var(--teal-300);font-weight:500;margin-right:8px}
.bulk-counter strong{color:#fff;font-weight:600}
.bulk-divider{width:1px;height:18px;background:rgba(255,255,255,0.12)}
.bulk-action{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:transparent;border:none;color:#fff;font-family:inherit;font-size:12px;border-radius:var(--radius-sm);cursor:pointer}
.bulk-action:hover{background:rgba(255,255,255,0.08)}
.bulk-action svg{color:var(--ink-5)}
.bulk-close{padding:6px;background:transparent;border:none;color:var(--ink-5);cursor:pointer;border-radius:var(--radius-sm);display:inline-flex;align-items:center}
.bulk-close:hover{background:rgba(255,255,255,0.08);color:#fff}

/* ============================================================================
   Ficha de detalle (§15.7 identity card v2, antecedentes, prosa) — pertinencia
   y, a futuro, proyecto. Reutiliza topbar/overlay/secundario del shell.
   ============================================================================ */
.detail-main{flex:1;min-width:0;padding:var(--space-6) var(--space-6) 80px}
.detail-inner{max-width:1080px;margin:0 auto}
.breadcrumb{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-4);margin-bottom:var(--space-3);flex-wrap:wrap}
.breadcrumb a{text-decoration:none;color:var(--ink-4)}
.breadcrumb a:hover{color:var(--ink-2)}
.eyebrow{display:inline-flex;align-items:center;gap:6px}
.page-lede{font-size:13.5px;color:var(--ink-3);max-width:62ch;margin:0 0 var(--space-4)}
.entity-actions{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--space-6)}
.ea-btn{display:inline-flex;align-items:center;gap:var(--space-1-5);height:34px;padding:0 var(--space-3);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:var(--radius-md);color:var(--ink-2);font-family:inherit;font-size:13px;cursor:pointer;text-decoration:none}
.ea-btn:hover{border-color:var(--ink-5);background:var(--surface-muted);color:var(--ink-1)}
.ea-btn svg{color:var(--ink-3)}
.ea-btn:hover svg{color:var(--ink-1)}
.identity-card{background:#fff;border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-6)}
.id-cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6)}
.id-col{display:flex;flex-direction:column;gap:6px}
.id-row{font-size:14px;line-height:1.35}
.id-label{font-weight:600;color:var(--ink-1)}
.id-value{color:var(--ink-3)}
.id-value a{color:var(--teal-700)}
.id-value.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1}
.id-value .sub{color:var(--ink-4);font-size:11.5px}
@media(max-width:880px){.id-cols{grid-template-columns:1fr}}
.entity-section{margin-bottom:var(--space-6);scroll-margin-top:64px}
.es-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}
.es-title{font-size:17px;font-weight:600;color:var(--ink-1);margin:0;font-family:var(--font-serif)}
.es-count{font-family:var(--font-mono);font-size:13px;color:var(--ink-4);font-weight:400;margin-left:6px}
.section-meta{font-size:12px;color:var(--ink-4)}
.def-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5) var(--space-6);background:#fff;border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-4)}
@media(max-width:880px){.def-grid{grid-template-columns:1fr}}
.def-block-label{grid-column:1 / -1;font-size:10px;font-weight:700;color:var(--ink-2);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:-6px}
.def-item{display:flex;flex-direction:column;gap:2px;min-width:0}
.def-label{font-size:10.5px;font-weight:600;color:var(--ink-4);text-transform:uppercase;letter-spacing:0.06em}
.def-value{font-size:13.5px;color:var(--ink-1);word-break:break-word}
.def-value.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-size:12.5px}
.def-value a{color:var(--teal-700);text-decoration:none}
.def-value a:hover{text-decoration:underline}
.def-value .muted{color:var(--ink-4)}
.descripcion{background:#fff;border:1px solid var(--hairline);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-4)}
.descripcion p{font-family:var(--font-serif);font-size:14.5px;line-height:1.7;color:var(--ink-2);margin:0}
.sec-children{padding-left:12px;border-left:1px dashed var(--hairline);margin-left:10px;margin-top:6px}
.sec-children .sec-link{font-size:12px;padding:5px 10px}
.sec-divider{height:1px;background:var(--hairline);margin:var(--space-2)}
.sec-back{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:var(--radius-md);color:var(--ink-4);font-size:12px;text-decoration:none}
.sec-back:hover{background:var(--surface-muted);color:var(--ink-2)}
.ntable-cell.party{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;color:var(--ink-2)}
/* "N destinatarios" clickeable → popover con la lista de organismos */
.dest-multi{display:inline-flex;align-items:center;gap:3px;max-width:100%;padding:0;border:0;background:transparent;font:inherit;font-size:12px;color:var(--teal-700);font-weight:500;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px dashed var(--teal-300)}
.dest-multi:hover{color:var(--teal-800);border-bottom-color:var(--teal-600)}
.dest-multi .dest-chev{flex-shrink:0;color:var(--ink-4)}
.dest-pop{position:fixed;z-index:85;width:296px;max-width:calc(100vw - 16px);background:#fff;border:1px solid var(--hairline-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-pop);display:none;flex-direction:column;overflow:hidden}
.dest-pop.open{display:flex}
.dest-pop-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 8px 8px 12px;font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--ink-4);border-bottom:1px solid var(--hairline);background:var(--surface-muted)}
.dest-close{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;background:transparent;border-radius:var(--radius-sm);color:var(--ink-4);cursor:pointer;flex-shrink:0}
.dest-close:hover{background:var(--hairline);color:var(--ink-2)}
.dest-pop-body{max-height:280px;overflow-y:auto}
.dest-list{list-style:none;margin:0;padding:4px 0}
.dest-list li{padding:6px 12px;font-size:12.5px;color:var(--ink-2);line-height:1.35;border-bottom:1px solid var(--hairline)}
.dest-list li:last-child{border-bottom:0}
.dest-loading,.dest-empty{padding:14px 12px;font-size:12.5px;color:var(--ink-4)}
.ntable-cell .nm{color:var(--ink-1);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.anexos-link{color:var(--teal-700);text-decoration:none;font-weight:500;cursor:pointer;font-family:var(--font-mono);font-size:11px;white-space:nowrap}
.anexos-link:hover{text-decoration:underline}
.th-f{display:inline-flex;align-items:center;gap:3px;color:var(--ink-3);user-select:none}
.th-f .funnel{opacity:0.45}

/* ============================================================================
   Documentos (§15.8/§15.9) — chips de instancia, link a proyecto, link a anexos,
   modal explicativo y drawer de anexos por documento.
   ============================================================================ */
.proy-link{color:var(--ink-2)}
.proy-link:hover{color:var(--teal-700);text-decoration:underline}
.anx-link{color:var(--teal-700);text-decoration:none;font-weight:500}
.anx-link:hover{text-decoration:underline}

/* page-head-row: page-sub + botón de ayuda lado a lado */
.page-head-row{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-5)}
.page-head-row .page-sub{margin-bottom:0}
.doc-help-btn{display:inline-flex;align-items:center;gap:12px;padding:11px 18px;background:var(--teal-50);border:1px solid var(--teal-200);border-radius:var(--radius-lg);cursor:pointer;font-family:inherit;flex-shrink:0;text-align:left}
.doc-help-btn:hover{background:var(--teal-100);border-color:var(--teal-300)}
.doc-help-btn svg{flex-shrink:0;color:var(--teal-600)}
.doc-help-btn .dh-txt{display:flex;flex-direction:column;gap:1px;line-height:1.3}
.doc-help-btn .dh-title{font-size:13.5px;font-weight:600;color:var(--teal-700);white-space:nowrap}
.doc-help-btn .dh-sub{font-size:12px;font-weight:400;color:var(--teal-700);opacity:0.72;white-space:nowrap}

/* qf-strip: chips de filtro rápido por instancia */
.qf-strip{display:flex;align-items:center;gap:var(--space-1-5);flex-wrap:wrap;margin-bottom:var(--space-4)}
.qf-label{font-size:11px;color:var(--ink-4);margin-right:var(--space-1)}
.qf-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;background:#fff;border:1px solid var(--hairline-strong);color:var(--ink-2);border-radius:var(--radius-full);font-size:12.5px;font-weight:500;cursor:pointer}
.qf-chip:hover{border-color:var(--ink-5);background:var(--surface-muted)}
.qf-chip.active{background:var(--teal-50);color:var(--teal-700);border-color:var(--teal-200)}
.qf-chip .qf-n{font-family:var(--font-mono);font-size:10px;color:var(--ink-4)}
.qf-chip.active .qf-n{color:var(--teal-700)}

/* modal "¿Qué son los Documentos?" */
.modal-scrim{position:fixed;inset:0;background:rgba(15,23,42,0.42);z-index:90;opacity:0;visibility:hidden;transition:opacity 160ms,visibility 160ms;display:flex;align-items:center;justify-content:center;padding:24px}
body.doc-modal-open .modal-scrim{opacity:1;visibility:visible}
.modal{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);max-width:700px;width:100%;max-height:88vh;overflow-y:auto;transform:scale(0.98);transition:transform 180ms var(--ease-standard)}
body.doc-modal-open .modal{transform:none}
.modal-head{display:flex;align-items:flex-start;gap:12px;padding:20px 22px 8px}
.modal-head h2{font-family:var(--font-serif);font-size:19px;font-weight:600;margin:0}
.modal-x{width:30px;height:30px;border-radius:var(--radius-md);border:1px solid var(--hairline);background:#fff;color:var(--ink-4);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px;line-height:1}
.modal-x:hover{background:var(--surface-muted);color:var(--ink-1)}
.modal-body{padding:0 22px 22px}
.mb-lead{font-size:13.5px;color:var(--ink-3);margin-bottom:16px}
.doc-diagram{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;padding:14px;background:var(--surface-muted);border:1px solid var(--hairline);border-radius:var(--radius-md)}
.dd-box{padding:7px 14px;background:#fff;border:1px solid var(--hairline-strong);border-radius:var(--radius-md);font-size:12.5px;font-weight:500;color:var(--ink-2)}
.dd-box.on{border-color:var(--teal-600);color:var(--teal-700);background:var(--teal-50);font-weight:600}
.dd-box.muted{color:var(--ink-4);border-style:dashed}
.dd-arrow{color:var(--ink-5);font-size:14px}
.dd-caption{font-size:12px;color:var(--ink-4);text-align:center;margin:8px 0 18px}
.sino-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sino-card{border:1px solid var(--hairline);border-radius:var(--radius-md);padding:14px 16px}
.sino-card.si{background:var(--success-50);border-color:#bbf7d0}
.sino-card.no{background:var(--surface-muted)}
.sino-h{font-size:13px;font-weight:600;margin-bottom:8px}
.sino-card.si .sino-h{color:var(--success-600)}
.sino-card.no .sino-h{color:var(--ink-3)}
.sino-card ul{margin:0;padding-left:16px;font-size:12.5px;color:var(--ink-2);line-height:1.5}
.sino-card li{margin-bottom:5px}
@media(max-width:600px){.sino-grid{grid-template-columns:1fr}}

/* §15.9 Drawer de anexos por documento */
.anx-scrim{position:fixed;inset:48px 0 0 0;background:rgba(15,23,42,0.35);z-index:60;opacity:0;visibility:hidden;transition:opacity 160ms,visibility 160ms}
body.anx-open{overflow:hidden}
body.anx-open .anx-scrim{opacity:1;visibility:visible}
.anx-drawer{position:fixed;top:48px;right:0;bottom:0;width:min(720px,84vw);background:#fff;z-index:61;transform:translateX(100%);transition:transform 220ms var(--ease-standard);box-shadow:var(--shadow-pop);display:flex;flex-direction:column}
body.anx-open .anx-drawer{transform:none}
.anx-head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--hairline);flex-shrink:0}
.anx-head .ht{flex:1;min-width:0}
.anx-head h2{font-family:var(--font-serif);font-size:18px;font-weight:600;margin:0}
.anx-head .sub{font-size:12px;color:var(--ink-4);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.anx-close{width:32px;height:32px;border-radius:var(--radius-md);border:1px solid var(--hairline);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-3);flex-shrink:0}
.anx-close:hover{background:var(--surface-muted);color:var(--ink-1)}
/* El scope del drawer separa dos zonas: .anx-tools (chips + buscador, FIJA) y
   .anx-body (tabla, scrollport). Así el header sticky de la tabla nunca puede
   quedar sobre la barra de búsqueda: ella vive fuera del área que scrollea. */
.anx-drawer .anx-scope{display:flex;flex-direction:column;flex:1;min-height:0}
.anx-tools{flex-shrink:0;padding:var(--space-5) var(--space-5) 0}
.anx-body{padding:var(--space-2) var(--space-5) var(--space-5);overflow:auto;flex:1}
/* Drawer en modo por-documento (?doc=): todas las filas comparten el mismo hito
   padre → los chips de hito no discriminan nada y se ocultan. */
.anx-scope.anx-nochips .anx-chips{display:none}

/* §15.9 Drawer de expediente de recurso (más ancho que el de anexos) */
.rec-open{color:var(--teal-700);font-weight:500;white-space:nowrap}
.exp-scrim{position:fixed;inset:48px 0 0 0;background:rgba(15,23,42,0.35);z-index:90;opacity:0;visibility:hidden;transition:opacity 160ms,visibility 160ms}
body.exp-open{overflow:hidden}
body.exp-open .exp-scrim{opacity:1;visibility:visible}
.exp-drawer{position:fixed;top:48px;right:0;bottom:0;width:min(880px,84vw);background:#fff;z-index:91;transform:translateX(100%);transition:transform 220ms var(--ease-standard);box-shadow:var(--shadow-pop);display:flex;flex-direction:column}
body.exp-open .exp-drawer{transform:none}
.exp-head{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-5) var(--space-3);border-bottom:1px solid var(--hairline);flex-shrink:0}
.exp-head .ht{flex:1;min-width:0}
.exp-head h2{font-family:var(--font-serif);font-size:18px;font-weight:600;margin:0}
.exp-head .sub{font-size:12px;color:var(--ink-4);margin-top:5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.exp-close{width:32px;height:32px;border-radius:var(--radius-md);border:1px solid var(--hairline);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-3);flex-shrink:0}
.exp-close:hover{background:var(--surface-muted);color:var(--ink-1)}
.exp-tabs{display:flex;gap:2px;padding:8px var(--space-5) 0;border-bottom:1px solid var(--hairline);flex-shrink:0}
.exp-tab{padding:7px 14px;font-size:12.5px;font-weight:500;color:var(--ink-3);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;font-family:inherit}
.exp-tab.active{color:var(--teal-700);border-bottom-color:var(--teal-600);font-weight:600}
.exp-body{padding:var(--space-5);overflow:auto;flex:1}

/* ============================================================================
   FICHA DE PROYECTO (§14 / mockup seia-proyecto-detail.html)
   Secundario contextual + identity card v2 + timeline por hitos + teasers.
   ============================================================================ */
/* botón Pro (teaser Ficha 360°) */
.seia-suite .btn-pro{background:var(--pro-600);color:#fff}
.seia-suite .btn-pro:hover{background:var(--pro-700)}
/* tier pills por tier */
.tier-pill.basico{background:var(--info-50);color:var(--info-700);border-color:var(--info-200)}
.tier-pill.pro{background:var(--pro-50);color:var(--pro-700);border-color:var(--pro-200)}

/* encabezado de la ficha */
.entity-actions{margin-bottom:var(--space-5)}
.ea-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus,0 0 0 2px #fff,0 0 0 4px var(--teal-700))}
.id-col{display:flex;flex-direction:column;gap:6px}
.id-value{color:var(--ink-3)}
.id-value a{color:var(--teal-700)}
.id-value.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1}
.id-value .sub{color:var(--ink-4);font-size:11.5px}
@media(max-width:880px){.id-cols{grid-template-columns:1fr}}

/* secciones */
.es-link{font-size:12px;color:var(--teal-700);text-decoration:none}
.es-link:hover{text-decoration:underline}
.es-empty{padding:16px;background:var(--surface-muted);border:1px dashed var(--hairline);border-radius:var(--radius-md);font-size:12.5px;color:var(--ink-4)}

/* toolbar de búsqueda del expediente / anexos */
.exp-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:10px var(--space-3-5);background:var(--surface-muted);border:1px solid var(--hairline);border-radius:var(--radius-md);margin-bottom:var(--space-4);flex-wrap:wrap}
.exp-toolbar-left{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}
.cmd-search{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#fff;border:1px solid var(--hairline);border-radius:var(--radius-md);width:280px;max-width:100%}
.cmd-search:focus-within{border-color:var(--teal-600)}
.cmd-search input{border:none;background:transparent;outline:none;font-family:inherit;font-size:12.5px;color:var(--ink-1);width:100%}
.cmd-search svg{color:var(--ink-4);flex-shrink:0}
.exp-meta{font-size:11.5px;color:var(--ink-4)}

/* timeline D4 (§15.3) — tablas Notion anidadas por hito */
.timeline{position:relative}
.tl-node{display:flex;gap:var(--space-3-5)}
.tl-rail{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:30px}
.tl-dot{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;z-index:1}
.tl-dot.done{background:var(--teal-600);color:#fff}
.tl-dot.current{background:#fff;border:3px solid var(--orange-500);color:var(--orange-700);width:30px;height:30px;box-shadow:0 0 0 4px var(--orange-50)}
.tl-dot.pending{background:#fff;border:2px dashed var(--ink-5)}
.tl-line{width:2px;flex:1;background:var(--hairline);min-height:12px}
.tl-line.done{background:var(--teal-600)}
.tl-body{flex:1;min-width:0;padding-bottom:var(--space-5)}
button.tl-head{width:100%;background:none;border:none;padding:2px 0;cursor:pointer;text-align:left;font-family:inherit;display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
button.tl-head:hover .tl-title{color:var(--teal-700)}
button.tl-head:focus-visible{outline:none;box-shadow:var(--shadow-focus,0 0 0 2px #fff,0 0 0 4px var(--teal-700));border-radius:var(--radius-sm)}
.tl-title{font-size:14px;font-weight:600;color:var(--ink-1)}
.tl-title.current{color:var(--orange-700)}
.tl-sub{font-family:var(--font-mono);font-size:11px;color:var(--ink-4)}
.tl-chev{color:var(--ink-4);flex-shrink:0;transition:transform var(--duration-fast)}
.tl-node.open .tl-chev{transform:rotate(90deg)}
.tl-node .ntable{display:none}
.tl-node.open .ntable{display:block}

/* Filtro por columna (embudo) de las tablas de sección PAC / Consulta Indígena /
   Art.86 — comparte el estilo del funnel de anexos (.anx-fbtn). */

/* Recursos: expansión inline (prototipo §15.12b) — la fila despliega su expediente
   bajo ella en vez de abrir un drawer lateral. */
.rec-row{cursor:pointer}
.rec-row .rec-open{display:inline-flex;align-items:center;gap:4px}
.rec-row .rec-chev{transition:transform var(--duration-fast,150ms);color:var(--ink-4)}
.rec-row.open .rec-chev{transform:rotate(90deg);color:var(--teal-700)}
.rec-row.open{background:var(--teal-50)}
.rec-sub{padding:10px 12px 12px 32px;background:var(--surface-muted);border-bottom:1px solid var(--hairline)}
/* SIN overflow:hidden: crearía un scrollport que rompe el sticky del header de la
   sub-tabla (mismo patrón que las .ntable de las secciones de la ficha). */
.rec-sub-inner{border:1px solid var(--hairline);border-radius:var(--radius-md);background:#fff}
/* El header de la sub-tabla flota bajo el topbar y SOBRE el header de la tabla
   de recursos (z-index 7 > 6): dentro del sub-expediente se ve su propio header. */
.rec-sub-inner .ntable-head{z-index:7;border-radius:var(--radius-md) var(--radius-md) 0 0}
.rec-sub-inner .ntable-row:last-child{border-radius:0 0 var(--radius-md) var(--radius-md)}
.rec-sub-load{padding:14px;font-size:12px;color:var(--ink-4)}
/* Revisión RCA inline: sub-pestañas dentro del panel (Administrativo / Info Pública). */
.rec-sub-inner .exp-tabs{padding:8px 12px 0}
.rec-sub-inner .exp-tabpane .ntable-head{border-radius:0}

/* tablas Notion con borde dentro de las secciones de la ficha. SIN overflow:hidden
   a propósito: recortaría el header y crearía un scrollport que rompe el sticky
   (position:sticky del .ntable-head). En su lugar redondeamos el header (arriba) y
   la última fila (abajo) para conservar las esquinas de la card. */
.entity-section .ntable,.tl-body .ntable{border:1px solid var(--hairline);border-radius:var(--radius-md);background:#fff}
.entity-section .ntable .ntable-head,.tl-body .ntable .ntable-head{border-radius:var(--radius-md) var(--radius-md) 0 0}
.entity-section .ntable .ntable-row:last-child,.tl-body .ntable .ntable-row:last-child{border-radius:0 0 var(--radius-md) var(--radius-md)}
.entity-section .ntable.current,.tl-body .ntable.current{border-color:var(--warning-200)}
.nt-doc{display:flex;align-items:center;gap:6px;min-width:0}
.nt-doc .nm{color:var(--ink-1);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* teasers de pago (SMA vinculada Básico · Ficha 360° Pro) */
.pay-teaser{position:relative;border:1px solid var(--hairline);border-radius:var(--radius-lg);overflow:hidden}
.pay-teaser .pay-blur{filter:blur(4px);opacity:0.45;pointer-events:none;padding:20px}
.pay-teaser .pay-cta{position:absolute;inset:0;background:linear-gradient(180deg,transparent 0%,rgba(255,255,255,0.96) 52%);display:flex;align-items:flex-end;justify-content:center;padding:24px}
.pay-teaser .pay-cta .inner{text-align:center;max-width:460px}
.pay-teaser .pay-cta .h{font-size:14px;font-weight:600;color:var(--ink-1);margin-bottom:6px}
.pay-teaser .pay-cta .s{font-size:13px;color:var(--ink-3);margin-bottom:14px}
.sma-list{border:1px solid var(--hairline);border-radius:var(--radius-md);background:#fff;overflow:hidden;margin-bottom:14px}
.sma-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-3-5);border-bottom:1px solid var(--hairline);font-size:13px}
.sma-row:last-child{border-bottom:none}
.sma-row .nm{flex:1;color:var(--ink-1);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sma-row .ct{font-size:11.5px;color:var(--ink-4);font-family:var(--font-mono)}

/* nombre de documento como enlace al PDF + indicador de anexos + "ver" visible */
.doc-link{color:var(--ink-1);font-weight:500;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-link:hover{color:var(--teal-700);text-decoration:underline}
.has-anx{display:inline-flex;align-items:center;gap:5px;min-width:0;max-width:100%}
.has-anx .clip{color:var(--teal-600);flex-shrink:0}
/* especificidad (0,2,1) para ganarle a `.seia-suite a{color:inherit;text-decoration:none}` (0,1,1) */
.seia-suite a.anx-ver{display:inline-flex;align-items:center;gap:3px;color:var(--teal-700);font-weight:600;font-size:11px;text-decoration:underline;cursor:pointer;white-space:nowrap}
.seia-suite a.anx-ver:hover{color:var(--teal-800)}
.anx-ver .clip{flex-shrink:0}
/* nombre del anexo como enlace al archivo (mismo hover que doc-link; (0,2,1)
   para ganarle a `.seia-suite a{color:inherit;text-decoration:none}` (0,1,1)) */
.seia-suite a.anx-name{display:block;color:var(--ink-1);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none}
.seia-suite a.anx-name:hover{color:var(--teal-700);text-decoration:underline}
/* funnels de columna client-side de la tabla de anexos (ficha) */
.anx-fbtn,.sec-fbtn{cursor:pointer;border-radius:var(--radius-sm);padding:2px 4px;margin:-2px -4px;transition:color var(--duration-fast)}
.anx-fbtn:hover,.sec-fbtn:hover{color:var(--ink-1)}
.anx-fbtn:hover .funnel,.sec-fbtn:hover .funnel{opacity:1}
.anx-fbtn.has-filter,.sec-fbtn.has-filter{color:var(--teal-700)}
.anx-fbtn.has-filter .funnel,.sec-fbtn.has-filter .funnel{opacity:1}
/* z-index 92: el popover de embudo se usa también DENTRO del drawer de
   expediente (.exp-drawer, z 91) — con el z 80 heredado de .col-popup el popup
   abría DETRÁS del drawer y los embudos parecían muertos. Queda bajo el
   wl-scrim (95), que es modal y nunca convive con un embudo abierto. */
.anx-fpop{width:340px;max-width:calc(100vw - 24px);z-index:92}
.anx-fpop .cp-opt span{line-height:1.35}

/* ============================================================================
   Waiting list wall — modal de captura para features de pago aún no lanzadas.
   ============================================================================ */
.xp-foot .xp-cta{font-size:12px;font-weight:600;color:var(--teal-700);background:none;border:none;padding:0;cursor:pointer}
.xp-foot .xp-cta:hover{color:var(--teal-800)}
/* z-index 260: el wall es el modal más alto de la pila — se abre DESDE otros
   modales (builder de alertas .sa-scrim, z 250) y debe quedar encima. */
.wl-scrim{position:fixed;inset:0;background:rgba(15,23,42,0.45);z-index:260;display:none;align-items:center;justify-content:center;padding:24px}
.wl-scrim.show{display:flex}
.wl-modal{position:relative;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);max-width:420px;width:100%;padding:26px 26px 22px;text-align:center}
.wl-close{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:var(--radius-md);border:1px solid var(--hairline);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-4)}
.wl-close:hover{background:var(--surface-muted);color:var(--ink-1)}
.wl-icon{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;background:var(--teal-50);color:var(--teal-700);border:1px solid var(--teal-200)}
.wl-tier{display:inline-block;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;padding:2px 8px;border-radius:var(--radius-full);margin-bottom:8px}
.wl-tier-basico{background:var(--info-50);color:var(--info-700);border:1px solid var(--info-200)}
.wl-tier-pro{background:var(--pro-50);color:var(--pro-700);border:1px solid var(--pro-200)}
.wl-title{font-family:var(--font-serif,'IBM Plex Serif',Georgia,serif);font-size:19px;font-weight:600;margin:0 0 6px;color:var(--ink-1)}
.wl-sub{font-size:13px;color:var(--ink-3);line-height:1.5;margin:0 0 16px}
.wl-form{display:flex;flex-direction:column;gap:9px}
.wl-input{height:40px;padding:0 13px;font-size:13.5px;border:1px solid var(--hairline-strong);border-radius:var(--radius-md);width:100%;color:var(--ink-1)}
.wl-input:focus{outline:none;border-color:var(--teal-600);box-shadow:0 0 0 3px var(--teal-50)}
.wl-submit{height:40px;justify-content:center;width:100%;font-weight:600}
.wl-err{font-size:12px;color:var(--danger-700);margin:8px 0 0}
.wl-note{font-size:11.5px;color:var(--ink-4);line-height:1.45;margin:12px 0 0}
.wl-success{padding:6px 0 2px}
.wl-check{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;background:var(--success-50);color:var(--success-600);border:1px solid var(--success-50)}
.wl-okbtn{margin-top:14px;height:36px;justify-content:center;border:1px solid var(--hairline)}
