/* ═══════════════════════════════════════════════════════════════════
   CICOM · Control Documentario (DC) · identidad del sistema
   ═══════════════════════════════════════════════════════════════════
   El aspecto entero sale de qms.css, copiado SIN TOCAR del Sistema de
   Calidad: la familia CICOM comparte tipografías, escalas, componentes,
   riel, barra superior, cajetín y Piper. Así una mejora de qms.css en
   Calidad se trae aquí copiando el archivo.

   Este archivo hace solo dos cosas:
     1. cambia la identidad del marco al violeta del DC (las mismas fichas
        --sis-* que usa el bloque CICOM-UI-001-QA de qms.css), y
     2. añade lo poco que el control documentario necesita y Calidad no
        tiene (entradas del menú «próximamente», hoja de ruta del panel).

   Contraste comprobado (WCAG): blanco sobre #6B4C9A 6,7:1 · #4E3577
   sobre el tinte 8,3:1 · #6B4C9A sobre el tinte 5,6:1.
   ═══════════════════════════════════════════════════════════════════ */

:root{
  --sis-color:#6B4C9A;    /* encabezado, sigla, botón de acceso */
  --sis-oscuro:#4E3577;   /* el mismo color como texto sobre claro */
  --sis-tinte:#EEE8F6;    /* panel del login, bloque de la barra, ítem activo */
  --sis-borde:#D2C4E8;    /* borde sobre el tinte */
}

/* La sigla de fondo (decoración en «content», no texto: no la lee un lector de pantalla) */
.login-art::before,
.rail-mark::before{content:'DC'}

.rail-mark:hover{background:#E6DDF2}
.rail-a.on .n{background:rgba(78,53,119,.12);color:var(--sis-oscuro)}
.qa-entrar:focus-visible{box-shadow:0 0 0 3px rgba(107,76,154,.35)}
.sa-cab{
  background:linear-gradient(135deg,#8466B3 0%,var(--sis-color) 55%,var(--sis-oscuro) 100%);
  box-shadow:0 8px 22px -10px rgba(78,53,119,.5);
}

/* ── Menú: lo que llega en las próximas fases ─────────────────────────
   Se ve, apagado, con su fase al lado. No es un enlace: no se puede
   pulsar ni recibe el foco, y lo dice con aria-disabled. */
.rail-a.pronto{color:var(--t4);cursor:default;opacity:.78}
.rail-a.pronto:hover{background:transparent;color:var(--t4)}
.rail-a.pronto .ic{opacity:.45}
.rail-a .fase{
  margin-left:auto;flex:none;font:500 10px/1 var(--f-mo);letter-spacing:.06em;
  padding:3px 6px;border-radius:var(--r-pill);background:var(--paper-2);color:var(--t3);
  border:1px solid var(--line);
}

/* ── Panel de la Fase 0 ─────────────────────────────────────────────── */
.dc-ruta{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.dc-fase{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:14px 16px;border-left:4px solid var(--line-2);display:flex;flex-direction:column;gap:6px;
}
.dc-fase.hecha{border-left-color:var(--ok)}
.dc-fase.ahora{border-left-color:var(--sis-color);background:linear-gradient(180deg,var(--sis-tinte),var(--paper) 70%)}
.dc-fase .n{font:500 11px/1 var(--f-mo);letter-spacing:.08em;color:var(--t3)}
.dc-fase h4{font:600 15px/1.25 var(--f-ui);color:var(--tinta,var(--t1))}
.dc-fase p{font-size:12.5px;line-height:1.5;color:var(--t2)}
.dc-fase .badge{align-self:flex-start}

.dc-ficha{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 18px}
.dc-ficha .k{font:500 10px/1.3 var(--f-mo);letter-spacing:.1em;text-transform:uppercase;color:var(--t3)}
.dc-ficha .v{font:500 13.5px/1.35 var(--f-tx);color:var(--t1);margin-top:2px;word-break:break-word}
.dc-ficha .v.mono{font-family:var(--f-mo)}

.dc-equipo{display:flex;flex-wrap:wrap;gap:8px}
.dc-equipo .badge b{font-weight:700;margin-left:4px}

.dc-sello{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--t2)}
.dc-sello .ic{flex:none}

/* ── Barra superior ───────────────────────────────────────────────────
   El EDMS lleva un elemento más que Calidad en la barra (la vuelta a CICOM
   está siempre presente en las sesiones del Núcleo) y el código del
   proyecto no puede salir cortado: es el dato con el que se codifica todo.
   El código ocupa lo suyo; cliente, sector y fecha ceden si falta sitio. */
.topbar .cajetin{grid-template-columns:max-content}
.topbar .cajetin .c-proyecto .v{max-width:none}
.topbar .buscador{width:min(300px,24vw)}
@media (max-width:1600px){ .topbar .cajetin .c-sector{display:none} }

/* ═══ Fase 1 · registro documentario ═══════════════════════════════ */

/* Tarjetas del panel que llevan al listado ya filtrado (spec §18.3) */
a.dc-kpi{text-decoration:none;color:inherit;transition:box-shadow var(--mov),transform var(--mov)}
a.dc-kpi:hover{box-shadow:0 6px 18px -8px rgba(78,53,119,.35);transform:translateY(-1px)}
a.dc-kpi:focus-visible{outline:3px solid rgba(107,76,154,.4);outline-offset:2px}

.dc-pend{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px 22px}
.dc-pend h4{font:600 13px/1.3 var(--f-ui);margin-bottom:6px;display:flex;align-items:center;gap:6px}
.dc-pend a{display:flex;flex-direction:column;padding:6px 10px;border-left:3px solid var(--sis-borde);text-decoration:none;margin-bottom:4px;border-radius:0 var(--r) var(--r) 0}
.dc-pend a:hover{background:var(--sis-tinte)}
.dc-pend a.urge{border-left-color:var(--stop)}
.dc-pend a b{font-size:12px;color:var(--sis-oscuro)}
.dc-pend a span{font-size:12px;color:var(--t2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Código del documento: el dato con el que se identifica todo */
.dc-cod{font:600 13px/1.2 var(--f-mo);color:var(--sis-oscuro);letter-spacing:.02em;white-space:nowrap;text-decoration:none}
a.dc-cod:hover{text-decoration:underline}
.dc-rev{display:inline-block;min-width:30px;text-align:center;font:600 12px/1 var(--f-mo);padding:4px 6px;border-radius:var(--r);
  background:var(--paper-2);border:1px solid var(--line);color:var(--t1)}
.dc-rev.vig{background:var(--sis-tinte);border-color:var(--sis-borde);color:var(--sis-oscuro)}
.dc-calif{display:inline-block;font:700 11px/1 var(--f-mo);padding:3px 6px;border-radius:var(--r);background:var(--paper-2);color:var(--t2)}
.dc-calif.si{background:var(--ok-bg);color:var(--ok)}
.dc-calif.no{background:var(--stop-bg);color:var(--stop)}

/* Listado: contadores por estado como pestañas */
.dc-estados{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.dc-estados a{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--paper);text-decoration:none;font:500 12.5px/1 var(--f-tx);color:var(--t2)}
.dc-estados a b{font:600 12px/1 var(--f-mo);color:var(--t1)}
.dc-estados a.on{background:var(--sis-tinte);border-color:var(--sis-borde);color:var(--sis-oscuro)}
.dc-estados a:hover{border-color:var(--sis-borde)}

/* Alta: el código se arma a la vista mientras se eligen las partes */
.dc-codigo-vivo{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;border-radius:var(--r-lg);
  background:linear-gradient(135deg,var(--sis-tinte),var(--paper));border:1px solid var(--sis-borde);margin-bottom:14px}
.dc-codigo-vivo .k{font:500 10px/1 var(--f-mo);letter-spacing:.1em;text-transform:uppercase;color:var(--t3)}
.dc-codigo-vivo .v{font:600 24px/1.1 var(--f-mo);color:var(--sis-oscuro);letter-spacing:.04em;word-break:break-all}
.dc-codigo-vivo .v.inc{color:var(--t4)}
.dc-codigo-vivo .s{font-size:11.5px;color:var(--t3);flex-basis:100%}
.dc-seg{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:12px}
.dc-modo{display:inline-flex;gap:4px;padding:4px;background:var(--seg);border-radius:var(--r-lg);margin-bottom:14px}
.dc-modo button{padding:6px 12px;border:0;background:none;border-radius:var(--r);font:500 12.5px/1.2 var(--f-tx);color:var(--t2);cursor:pointer}
.dc-modo button.on{background:var(--paper);color:var(--t1);font-weight:600;box-shadow:0 1px 2px rgba(16,24,40,.06)}
.dc-alerta-campo{font-size:12px;color:var(--warn-tx);background:var(--warn-bg);padding:8px 10px;border-radius:var(--r);margin-top:8px}
.dc-chk{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--t2);cursor:pointer}

/* Ficha: cabecera y línea de tiempo de revisiones */
.dc-cab{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-bottom:16px}
.dc-cab .cod{font:600 26px/1.1 var(--f-mo);color:var(--sis-oscuro);letter-spacing:.03em;word-break:break-all}
.dc-cab .tit{font:500 16px/1.35 var(--f-ui);color:var(--t1);margin-top:4px}
.dc-cab .meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;align-items:center}
.dc-cab .sp{flex:1}

.dc-tl{position:relative;padding-left:26px}
.dc-tl::before{content:'';position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:var(--line)}
.dc-tl-i{position:relative;margin-bottom:14px}
.dc-tl-i::before{content:'';position:absolute;left:-22px;top:16px;width:12px;height:12px;border-radius:50%;
  background:var(--paper);border:2px solid var(--line-2)}
.dc-tl-i.vig::before{background:var(--sis-color);border-color:var(--sis-color)}
.dc-tl-i.abierta::before{background:var(--warn);border-color:var(--warn)}
.dc-tl-i.vieja{opacity:.82}
.dc-tl-c{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px 14px}
.dc-tl-i.vig .dc-tl-c{border-color:var(--sis-borde);box-shadow:0 4px 14px -8px rgba(78,53,119,.3)}
.dc-tl-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dc-tl-h .rev{font:700 18px/1 var(--f-mo);color:var(--t1);min-width:40px}
.dc-tl-h .sp{flex:1}
.dc-tl-d{font-size:13px;color:var(--t2);margin:6px 0 4px}
.dc-firmas{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--t3);margin-top:6px}
.dc-firmas b{color:var(--t2);font-weight:600}
.dc-archivos{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.dc-arch{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r);background:var(--paper-2);font-size:12.5px}
.dc-arch .n{font-family:var(--f-mo);font-size:12px;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.dc-arch .t{font-size:11px;color:var(--t3);white-space:nowrap}
.dc-acciones{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.dc-subir{border:1.5px dashed var(--sis-borde);border-radius:var(--r);padding:10px 12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:color-mix(in srgb,var(--sis-tinte) 45%,var(--paper));font-size:12.5px;color:var(--t2)}
.dc-subir.sobre{background:var(--sis-tinte);border-color:var(--sis-color)}
.dc-subir select{width:auto}
.dc-siguiente{border:1.5px dashed var(--line-2);border-radius:var(--r-lg);padding:12px 14px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.dc-siguiente .rev{font:700 18px/1 var(--f-mo);color:var(--t3)}

/* Perfil documentario */
.dc-patron{display:flex;align-items:stretch;gap:6px;flex-wrap:wrap}
.dc-patron .seg{border:1px solid var(--sis-borde);background:var(--sis-tinte);border-radius:var(--r);padding:8px 12px;text-align:center;min-width:72px}
.dc-patron .seg .m{font:700 18px/1.1 var(--f-mo);color:var(--sis-oscuro);letter-spacing:.06em}
.dc-patron .seg .n{font-size:11px;color:var(--t3);margin-top:3px}
.dc-patron .seg.clave{box-shadow:inset 0 -3px 0 var(--sis-color)}
.dc-patron .sep{align-self:center;font:700 18px/1 var(--f-mo);color:var(--t4)}
.tbl tr.inactivo td{color:var(--t4)}

/* Código existente: cómo se maneja el documento en el proyecto */
.dc-gestion{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.dc-gestion label{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--paper);cursor:pointer;font:400 13px/1.35 var(--f-tx);color:var(--t1);text-transform:none;letter-spacing:0}
.dc-gestion label:has(input:checked){border-color:var(--sis-color);background:var(--sis-tinte)}
.dc-gestion input{margin-top:3px;accent-color:var(--sis-color)}
.dc-gestion b{display:block;font-weight:600}
.dc-gestion small{display:block;font-size:11.5px;color:var(--t3);margin-top:2px}

/* Ficha: ¿se puede construir con lo vigente? */
.dc-apto{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--paper)}
.dc-apto>div{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--t2)}
.dc-apto>div>b{font:600 14px/1.3 var(--f-ui);color:var(--t1)}
.dc-apto.si{border-color:var(--ok);background:var(--ok-bg)} .dc-apto.si>.ic,.dc-apto.si>svg{color:var(--ok)}
.dc-apto.com{border-color:var(--warn);background:var(--warn-bg)} .dc-apto.com>svg{color:var(--warn-tx)}
.dc-apto.no>svg{color:var(--t3)}

/* Historial del documento */
.dc-hist{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;padding:7px 0;border-bottom:1px solid var(--linea-suave,var(--line));font-size:12px}
.dc-hist:last-child{border-bottom:0}
.dc-hist .f{font-size:11px;color:var(--t3);white-space:nowrap}
.dc-hist .e{color:var(--t1);min-width:0;overflow-wrap:anywhere}
.dc-hist .u{grid-column:2;font-size:11px;color:var(--t3)}

/* En manos de quién: contratista (violeta del sistema) o cliente (azul del Owner) */
.dc-mano{display:inline-block;font:600 11.5px/1 var(--f-tx);padding:4px 8px;border-radius:var(--r-pill);white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}
.dc-mano.contr{background:var(--sis-tinte);color:var(--sis-oscuro);border:1px solid var(--sis-borde)}
.dc-mano.cli{background:#E6F0FA;color:#1F4E7A;border:1px solid #BFD5EC}
.dc-mano.tarde{background:var(--stop-bg);color:var(--stop);border-color:var(--stop-br,var(--stop))}
.dc-manos{align-items:center}
.dc-manos a.m-cli.on{background:#E6F0FA;border-color:#BFD5EC;color:#1F4E7A}
.dc-manos-ficha{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dc-balanza{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.dc-balanza>*{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:var(--r-lg);border:1px solid var(--line);text-decoration:none;color:inherit}
.dc-balanza .k{font-size:12.5px;color:var(--t2);font-weight:600}
.dc-balanza .v{font:500 30px/1.1 var(--f-ui);color:var(--t1)}
.dc-balanza .s{font-size:11.5px;color:var(--t3)}
.dc-balanza .contr{background:var(--sis-tinte);border-color:var(--sis-borde)} .dc-balanza .contr .v{color:var(--sis-oscuro)}
.dc-balanza .cli{background:#EEF4FB;border-color:#BFD5EC} .dc-balanza .cli .v{color:#1F4E7A}
.dc-balanza a:hover{box-shadow:0 6px 18px -8px rgba(16,24,40,.25)}

/* Listado: códigos externos largos parten en los guiones; el título tiene sitio */
.tbl .dc-td-cod.largo{max-width:240px;min-width:200px}
.tbl .dc-td-cod.largo .dc-cod{white-space:normal;overflow-wrap:anywhere}
.tbl .dc-td-tit{min-width:220px}

/* Plazo de respuesta del cliente: ámbar por vencer, rojo vencido */
.dc-plazo{display:inline-block;font:600 11px/1.2 var(--f-tx);padding:3px 8px;border-radius:var(--r-pill);margin-top:4px;white-space:nowrap;
  background:var(--paper-2);color:var(--t2);border:1px solid var(--line)}
.dc-plazo.por_vencer{background:var(--warn-bg);color:var(--warn-tx);border-color:var(--warn)}
.dc-plazo.vencido{background:var(--stop-bg);color:var(--stop);border-color:var(--stop)}
.dc-plazo.en_plazo{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.dc-plazo-rev{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dc-plazo-rev .dc-plazo{margin-top:0}
table.tbl tbody tr.dc-fila-venc td:first-child{box-shadow:inset 4px 0 0 var(--stop)}
table.tbl tbody tr.dc-fila-porv td:first-child{box-shadow:inset 4px 0 0 var(--warn)}
.dc-manos a.p-venc.on{background:var(--stop-bg);border-color:var(--stop);color:var(--stop)}
.dc-manos a.p-porv.on{background:var(--warn-bg);border-color:var(--warn);color:var(--warn-tx)}
.dc-manos a.p-venc b{color:var(--stop)} .dc-manos a.p-porv b{color:var(--warn-tx)}
.dc-balanza-plazos{display:flex;gap:6px;flex-wrap:wrap}

/* Perfil: patrón del cliente y su editor de bloques */
.dc-cliente-patron{display:flex;gap:16px;flex-wrap:wrap;padding-top:14px;border-top:1px dashed var(--line-2)}
.dc-cliente-patron h4{font:600 13.5px/1.3 var(--f-ui);margin-bottom:8px}
.dc-bloque{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r);margin-bottom:6px;background:var(--paper)}
.dc-bloque .n{min-width:20px;text-align:center;color:var(--t3);font-size:12px}
.dc-bloque select.in,.dc-bloque input.in{width:auto;min-width:0}
.dc-bloque label.tiny{display:flex;align-items:center;gap:6px}

/* ═══ Fase 2 · remitos y comentarios ═══════════════════════════════ */
.dc-emitir{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:14px 16px;border-radius:var(--r-lg);
  border:1px solid var(--sis-borde);background:linear-gradient(135deg,var(--sis-tinte),var(--paper))}
.dc-emitir>div{display:flex;flex-direction:column;gap:3px;max-width:640px}
.dc-emitir b{font:600 14px/1.3 var(--f-ui)}
.dc-emitir span{font-size:12.5px;color:var(--t2)}
.dc-candidatas{max-height:52vh;overflow:auto;display:flex;flex-direction:column;gap:6px}
.dc-cand{display:grid;grid-template-columns:auto auto auto 1fr;gap:4px 10px;align-items:center;padding:8px 10px;border:1px solid var(--line);
  border-radius:var(--r);cursor:pointer;background:var(--paper)}
.dc-cand:has(input:checked){border-color:var(--sis-color);background:var(--sis-tinte)}
.dc-cand .t{font-size:12.5px;color:var(--t1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cand .tiny{grid-column:2 / -1}
.dc-cand input{accent-color:var(--sis-color)}

/* CRS dentro de la ficha */
.dc-crs{margin-top:10px;border-top:1px dashed var(--line-2);padding-top:10px}
.dc-crs-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.dc-crs-h b{font:600 12.5px/1.2 var(--f-ui)}
.dc-com{border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;margin-bottom:6px;background:var(--paper);font-size:12.5px}
.dc-com.abierto{border-left:3px solid var(--stop)} .dc-com.respondido{border-left:3px solid var(--warn)}
.dc-com.aceptado{border-left:3px solid var(--brand)} .dc-com.incorporado,.dc-com.cerrado{border-left:3px solid var(--ok);opacity:.85}
.dc-com-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--t3);font-size:11.5px}
.dc-com-h .n{font:700 12px/1 var(--f-mo);color:var(--t1)}
.dc-com-t{margin:4px 0;color:var(--t1);white-space:pre-line}
.dc-com-r{margin-top:6px;padding:6px 8px;background:var(--paper-2);border-radius:var(--r);white-space:pre-line}
.dc-com-r .q{font-size:11px;color:var(--t3);display:block;margin-bottom:2px}
.dc-com-a{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
/* v0.7.0 · contratos */
.dc-kt{display:inline-block;font:600 10.5px/1 var(--f-tx);padding:3px 6px;border-radius:var(--r-pill);background:var(--paper-2);color:var(--t2);border:1px solid var(--line,#ddd);margin-top:3px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.dc-kt.sub{background:#FFF4E5;color:#8A5300;border-color:#F2D3A6}
.dc-contratos a.off{opacity:.55;text-decoration:line-through}
.dc-cadena{border:1px dashed #BFD5EC;background:#F3F8FD;border-radius:var(--r);padding:8px 10px}
.dc-cadena .h{font:600 12px/1.3 var(--f-tx);color:#1F4E7A;display:flex;gap:6px;align-items:center;margin-bottom:3px}
.dc-tabla-k td{vertical-align:top}
.dc-k-off{opacity:.7}
.dc-k-eq{border-top:1px solid var(--line,#e5e7eb);padding-top:12px}
.dc-k-eq .h{display:flex;align-items:center;gap:6px}
.dc-k-eq .h .sp{flex:1}
.card-h .sp{flex:1}
/* v0.8.0 · página pública de enlaces */
body.dc-pub{background:var(--paper,#F2F1F6);min-height:100vh;display:flex;flex-direction:column}
.dc-pub-h{display:flex;align-items:center;gap:12px;padding:14px 20px;background:#fff;border-bottom:3px solid var(--sis-color,#6B4C9A)}
.dc-pub-h .sig{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:8px;background:var(--sis-color,#6B4C9A);color:#fff;font:700 16px/1 var(--f-ti,inherit)}
.dc-pub-h .t{font-weight:700;font-size:15px}
.dc-pub-h .s{font-size:12.5px;color:var(--t2,#5B6070);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dc-pub-m{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:24px 16px}
.dc-pub-caja{max-width:520px;margin:40px auto}
.dc-pub-caja h1,.dc-pub-tit h1{font-size:20px;margin:0 0 6px}
.dc-pub-cod .in{font-size:20px;letter-spacing:3px;max-width:220px}
.dc-pub-tit{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.dc-pub-f{text-align:center;font-size:11.5px;color:var(--t3,#8A8FA0);padding:16px}
.dc-correo-hist{font-size:12px;line-height:1.5}
.dc-correo-hist .err{color:var(--stop)}
/* v0.9.0 · bandeja de intercambio */
.dc-soltar{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:22px 14px;border:2px dashed var(--sis-borde,#CFC3E3);border-radius:var(--r);background:var(--sis-tinte,#F5F1FA);cursor:pointer;color:var(--sis-oscuro,#4A3570)}
.dc-soltar.sobre{background:#EDE5F7;border-color:var(--sis-color,#6B4C9A)}
.dc-entrega td{vertical-align:top}
.dc-entrega .in{min-width:0}
.dc-ent-arch{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:3px 0}
.dc-ent-arch .n{font-size:12px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.in.in-xs{padding:3px 6px;font-size:12px;height:auto;width:auto}
tr.dc-fila-error td:first-child{box-shadow:inset 3px 0 0 var(--stop)}
tr.dc-fila-rech td{background:#FDF3F2}
/* v0.10.0 · MDR y avance */
.dc-curva{width:100%;height:auto;display:block}
.dc-curva .g{stroke:var(--line,#E4E1EC);stroke-width:1}
.dc-curva .t{font:11px var(--f-tx,sans-serif);fill:var(--t3,#8A8FA0)}
.dc-curva .prog{fill:none;stroke:#8A93A8;stroke-width:2.2;stroke-dasharray:6 4}
.dc-curva .real{fill:none;stroke:var(--sis-color,#6B4C9A);stroke-width:3}
.dc-curva .hoy{stroke:#C98A00;stroke-width:1.2;stroke-dasharray:3 3}
.dc-curva .hoyt{fill:#C98A00}
.dc-curva-ley{display:flex;gap:16px;align-items:center;font-size:12px;color:var(--t2);margin-top:6px}
.dc-curva-ley span{display:inline-block;width:22px;height:0;border-top:3px solid var(--sis-color,#6B4C9A);margin-right:-10px}
.dc-curva-ley span.p{border-top:2px dashed #8A93A8}
.dc-kps{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.dc-kp{background:#fff;border:1px solid var(--line,#E4E1EC);border-radius:var(--r);padding:12px 14px}
.dc-kp .k{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--t3)}
.dc-kp .v{font:700 26px/1.2 var(--f-ti,inherit);color:var(--t1)}
.dc-kp .s{font-size:12px;color:var(--t2)}
.dc-kp .v.mal{color:var(--stop)} .dc-kp .v.bien{color:var(--ok)}
.dc-barra{height:8px;background:var(--paper-2,#EEE);border-radius:4px;overflow:hidden;position:relative;min-width:80px}
.dc-barra i{position:absolute;left:0;top:0;bottom:0;background:var(--sis-color,#6B4C9A)}
.dc-barra b{position:absolute;top:-2px;bottom:-2px;width:2px;background:#8A93A8}
.tbl.dc-mdr td,.tbl.dc-mdr th{font-size:12px;white-space:nowrap}
.tbl.dc-mdr td.tit{white-space:normal;min-width:220px}
.dc-map{display:grid;grid-template-columns:200px 1fr 1.4fr;gap:6px 12px;align-items:center}
.dc-map .ej{font-size:11.5px;color:var(--t3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-imp-acc{font-size:11px;font-weight:600;padding:2px 6px;border-radius:var(--r-pill)}
.dc-imp-acc.crear{background:var(--ok-bg);color:var(--ok)} .dc-imp-acc.actualizar{background:#E6F0FA;color:#1F4E7A}
.dc-imp-acc.error{background:var(--stop-bg);color:var(--stop)} .dc-imp-acc.igual,.dc-imp-acc.omitir{background:var(--paper-2);color:var(--t3)}
.dc-atraso{color:var(--stop);font-weight:600}

/* ── Anotador de PDF · Red Marks (Fase 5a) ─────────────────────────── */
.anp-raiz{border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--paper)}
.anp-barra{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 10px;background:#2B2140;color:#fff;position:sticky;top:0;z-index:3}
.anp-btn{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:6px;padding:4px 8px;font:500 12px/1.3 var(--f-sa,Inter,sans-serif);
  cursor:pointer;display:inline-flex;align-items:center;gap:4px;min-height:30px}
.anp-btn:hover{background:rgba(255,255,255,.22)}
.anp-btn-pdf{margin-left:auto;background:#1E7A46;border-color:#16603A}
.anp-lbl{font:500 11.5px var(--f-mo,monospace);min-width:48px;text-align:center;opacity:.9}
.anp-sep{width:1px;height:20px;background:rgba(255,255,255,.25);margin:0 2px}
.anp-herr{display:inline-flex;gap:3px;flex-wrap:wrap}
.anp-tool{background:transparent;border:1px solid rgba(255,255,255,.22);color:#fff;border-radius:6px;padding:4px 8px;font:500 12px var(--f-sa,Inter,sans-serif);cursor:pointer;min-height:30px}
.anp-tool.on{background:#D92D20;border-color:#D92D20}
.anp-sel{background:#fff;color:#111;border:0;border-radius:6px;padding:4px 6px;font:12px var(--f-sa,Inter,sans-serif);min-height:30px}
.anp-rojo{display:inline-flex;align-items:center;gap:5px;font-size:11px;opacity:.85}
.anp-rojo::before{content:'';width:12px;height:12px;border-radius:50%;background:#D92D20;border:2px solid #fff}
.anp-aviso{font-size:11px;padding:3px 9px;background:rgba(255,255,255,.14);border-radius:10px}
.anp-lienzo-box{overflow:auto;background:#5A5466;padding:12px;max-height:calc(100vh - 210px);min-height:420px}
.anp-inner{position:relative;margin:0 auto;box-shadow:0 4px 18px rgba(0,0,0,.35);background:#fff}
.anp-inner canvas{display:block}
.anp-capa{position:absolute;inset:0}
.anp-lienzo-box[data-tool="punto"] .anp-inner{cursor:crosshair}
.anp-lienzo-box[data-tool="trazo"] .anp-inner,.anp-lienzo-box[data-tool="marcador"] .anp-inner{cursor:crosshair}
.anp-marca{cursor:pointer}
.anp-error{color:#fff;padding:40px;text-align:center}
.dc-rm{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}
@media (max-width:1100px){.dc-rm{grid-template-columns:1fr}}
.dc-chk-obra{display:flex;flex-direction:column;gap:8px}
.dc-chk-obra label{display:flex;gap:8px;align-items:flex-start;font-size:13px}
.dc-chk-obra input{margin-top:3px}

/* v0.17.0 · buscador: enlace a la página de resultados y vínculos de la ficha */
.buscador-r a.b-todos{border-top:1px solid var(--line);background:var(--paper-2)}
.buscador-r a.b-todos .t{font-family:inherit;font-weight:600}
.dc-vinc{display:flex;flex-wrap:wrap;gap:5px;margin:3px 0 8px}
.dc-vinc .chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 8px;border:1px solid var(--line);border-radius:999px;font:500 11.5px/1.4 var(--f-mo);background:var(--paper)}
.dc-vinc .chip button{border:0;background:none;color:var(--t3);cursor:pointer;padding:0 3px;font-size:13px;line-height:1}
.dc-vinc .chip button:hover{color:var(--stop)}

/* v0.19.0 · requisitos de contenido (§15) en la ficha */
.dc-req{margin-top:10px;border:1px solid var(--line);border-radius:var(--r-lg,8px);background:var(--paper)}
.dc-req>summary{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;list-style:none;font-size:12.5px}
.dc-req>summary::-webkit-details-marker{display:none}
.dc-req-b{padding:4px 12px 10px;border-top:1px solid var(--line)}
.dc-req-i{display:grid;grid-template-columns:minmax(160px,1fr) 130px minmax(140px,1.2fr);gap:8px;align-items:center;padding:4px 0;border-bottom:1px dashed var(--line);font-size:12.5px}
.dc-req-i:last-of-type{border-bottom:0}
.dc-req-i.pendiente .t{color:var(--warn-tx,#8a5a00)}
.dc-req-f{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
@media (max-width:720px){.dc-req-i{grid-template-columns:1fr}}

/* D23 · Distintivo común de proyecto (CICOM-INT-001 Rev. 13 §7.6): mismos colores en los cuatro sistemas */
.cicom-dist{font-family:var(--f-tx);display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;line-height:1.5;white-space:nowrap;vertical-align:middle;letter-spacing:.01em;text-decoration:none;border:1px solid transparent}
.cicom-dist-integrado{background:#1E3A5F;color:#fff;border-color:#1E3A5F}
a.cicom-dist-integrado:hover{background:#16304f;color:#fff;text-decoration:none}
.cicom-dist-independiente{background:transparent;color:#5B6575;border-color:#DDE2E9}
.cicom-dist-sin_conexion{background:#F8EADB;color:#8A4510;border-color:#F8EADB}
.topbar .cicom-dist-independiente{background:#fff}
.dist-filtro{display:inline-flex;gap:4px}
.dist-filtro button{border:1px solid var(--line,#DDE2E9);background:transparent;border-radius:999px;padding:3px 10px;font-size:12px;cursor:pointer;color:inherit}
.dist-filtro button[aria-pressed="true"]{background:#1E3A5F;border-color:#1E3A5F;color:#fff}
.topbar .cajetin .cicom-dist{font-family:var(--f-tx);font-size:11px;margin-left:6px}
.topbar .cajetin .cicom-dist{font-family:var(--f-tx);font-size:11px;margin-left:6px}
/* D23 · Indicador del conector (solo superadministrador), discreto en el pie del menú */
.rail-nucleo{display:flex;align-items:center;justify-content:center;gap:6px;font-size:10.5px;color:var(--muted,#5B6575);padding:0 0 8px}
.rail-nucleo i{width:7px;height:7px;border-radius:50%;background:#9AA3AF;display:inline-block}
.rail-nucleo-conectado i{background:#1F9D55}
.rail-nucleo-sin_respuesta i{background:#D9822B}
/* v0.25.1 · D23: en la tarjeta «Proyecto activo» del menú, la regla .rail-proj a pintaba el texto del distintivo
   con el color del sistema sobre el fondo azul (no se leía) y le cambiaba la letra */
.rail-proj a.cicom-dist{font:600 11px/1.5 var(--f-tx);margin-top:0}
.rail-proj a.cicom-dist-integrado,.rail-proj a.cicom-dist-integrado:hover{color:#fff}
/* v0.26.1 · Diálogos con un <form> alrededor de cabecera, cuerpo y pie (Nuevo proyecto, entre otros): el form
   también es columna flexible, así el cuerpo se desplaza por dentro y el pie con los botones queda siempre a la vista */
.modal > form{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.modal-b{min-height:0}

/* ── v0.30.0 · Mi trabajo ─────────────────────────────────────── */
.mt-tiles{display:flex;flex-wrap:wrap;gap:10px}
.mt-tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:150px;padding:12px 16px;border:1px solid var(--line);
  border-radius:var(--r-lg);background:var(--paper);cursor:pointer;text-align:left;font:inherit;color:var(--t1);transition:border-color .15s,box-shadow .15s}
.mt-tile .n{font:700 24px/1 var(--f-mo);color:var(--sis-oscuro)}
.mt-tile .t{font-size:12px;color:var(--t2);display:flex;align-items:center;gap:4px}
.mt-tile.chico{min-width:120px;padding:10px 14px}
.mt-tile.chico .n{font-size:18px}
.mt-tile:hover{border-color:var(--sis-borde)}
.mt-tile.on{border-color:var(--sis-color);box-shadow:0 0 0 2px var(--sis-tinte);background:linear-gradient(180deg,var(--sis-tinte),var(--paper) 80%)}
.mt-tile.urge .n{color:var(--stop)}
.mt-tile[disabled]{opacity:.5;cursor:default}
.mt-item{display:grid;grid-template-columns:minmax(150px,auto) 1fr auto;gap:4px 14px;align-items:baseline;padding:9px 16px;
  border-left:3px solid var(--sis-borde);border-bottom:1px solid var(--line);text-decoration:none;color:var(--t1)}
.mt-item:last-child{border-bottom:0}
.mt-item:hover{background:var(--sis-tinte)}
.mt-item.urge{border-left-color:var(--stop)}
.mt-item.warn{border-left-color:var(--warn)}
.mt-item .c{font-size:12.5px;font-weight:600;color:var(--sis-oscuro);white-space:nowrap}
.mt-item .s{font-size:12.5px;color:var(--t2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mt-item .h{font-size:11px;color:var(--t3);white-space:nowrap}
@media (max-width:700px){.mt-item{grid-template-columns:1fr auto}.mt-item .s{grid-column:1/-1;white-space:normal}}

/* ── v0.30.0 · Vista previa lateral ───────────────────────────── */
.vp{position:fixed;top:var(--top,64px);right:0;bottom:0;width:min(540px,44vw);z-index:60;background:var(--paper);border-left:1px solid var(--line);
  box-shadow:-12px 0 32px rgba(30,20,60,.12);display:flex;flex-direction:column}
.vp[hidden]{display:none}
.vp-h{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--paper-2)}
.vp-h .sp{flex:1}
.vp-h kbd{font:600 10px/1 var(--f-mo);padding:2px 4px;border:1px solid var(--line);border-radius:4px;background:var(--paper)}
.vp-h .x{border:0;background:none;cursor:pointer;color:var(--t2);padding:4px}
.vp-b{flex:1;overflow:auto;padding:4px 0 24px}
.vp-cab{padding:14px 18px 10px;border-bottom:1px solid var(--line)}
.vp-tit{font:600 15px/1.35 var(--f-ui);margin:4px 0 8px;color:var(--t1)}
.vp-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.vp-sec{padding:10px 18px;border-bottom:1px solid var(--line)}
.vp-sec h4{font:600 11px/1.2 var(--f-ui);text-transform:uppercase;letter-spacing:.05em;color:var(--t3);margin:0 0 6px}
.vp-fila{display:flex;gap:8px;align-items:baseline;padding:2px 0;min-width:0}
.vp-texto{white-space:pre-line;max-height:260px;overflow:auto;background:var(--paper-2);padding:8px 10px;border-radius:var(--r)}
.vp-pdf{width:100%;height:62vh;border:1px solid var(--line);border-radius:var(--r)}
tr.vp-sel td{background:var(--sis-tinte)!important}
a.vp-sel{background:var(--sis-tinte)}
@media (min-width:900px){body.con-vp .main{width:auto;margin-right:min(540px,44vw);margin-left:0}}

/* ── v0.32.0 · Indicadores de correspondencia ─────────────────── */
:root{--ind-1:#6B4C9A;--ind-2:#2A9D8F}
.ind-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.ind-tile{display:flex;flex-direction:column;gap:3px;padding:12px 16px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper)}
.ind-tile .k{font-size:12px;color:var(--t2)}
.ind-tile .v{font:700 26px/1.1 var(--f-mo);color:var(--t1)}
.ind-tile .v small{font:500 13px var(--f-ui);color:var(--t2)}
.ind-tile .s{font-size:11.5px;color:var(--t3)}
.ind-tile.mal{border-color:var(--stop)}
.ind-ley{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--t2);margin-left:auto}
.ind-ley i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-left:6px}
.ind-cols{display:flex;align-items:flex-end;gap:6px;height:170px;padding-top:6px;border-bottom:1px solid var(--line)}
.ind-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:0}
.ind-par{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:2px}
.ind-par span{width:min(14px,42%);border-radius:4px 4px 0 0}
.ind-par .b1{background:var(--ind-1)}.ind-par .b2{background:var(--ind-2)}
.ind-col .m{font-size:11px;color:var(--t3);padding:4px 0 2px}
.ind-barra{display:grid;grid-template-columns:88px 1fr 58px;gap:8px;align-items:center;margin-bottom:6px}
.ind-barra .l{font-size:12px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ind-barra .t{display:flex;flex-direction:column;gap:2px;background:var(--paper-2);border-radius:4px;min-height:10px;justify-content:center}
.ind-barra .t i{display:block;height:10px;border-radius:0 4px 4px 0}
.ind-barra.doble .t i{height:7px}
.ind-barra .n{font-size:12px;color:var(--t1);text-align:right}
