/* ═══════════════════════════════════════
   ▓ COMPONENTE · CabeceraObjeto — gemelo vanilla ▓
   v1.2 · 2026-09-30 (v1.1 · 2026-09-20 · v1.0 · 2026-09-17). Ficha: `design-system/COMPONENTE_CABECERA_OBJETO.md`
   Kit: `catalogo-cd/components/CabeceraObjeto.jsx`

   v1.1 — `DECISION-FUENTE: Ricardo, 2026-09-20 — «C y vamos a eliminar fecha de disposicion de
   tarjeta de encabezado por redundancia»` (opción C de
   `plans/decisiones/_decision_meta_cabecera_2026-09-20.html`): el renglón meta deja de ser una
   lista de tres datos separados por punto medio y pasa a ser DOS BLOQUES —identifica (folio) /
   describe (producto)— separados por AIRE, no por puntuación. `.exds-cabobj-meta-sep` se retira:
   ya no lo monta nadie. La fecha de disposición se retira de este renglón por redundante con el
   subtexto del KPI «Saldo insoluto» (`seccionCifras4`), que la conserva.

   La cabecera de TODA pantalla de detalle (invento I-1, cosecha del handoff «Detalle de
   contrato»): renglón «Volver» fuera de la tarjeta + Ficha (Avatar + título + estados + renglón
   meta) + banda opcional de cifras bajo un hairline.

   COMPOSICIÓN — esta hoja SÓLO distribuye. La caja es `.exds-card` (componentes/card/card.css),
   los estados son `.exds-badge`/`.exds-badge-par` (componentes/badge/), el folio usa
   `.exds-copiar` (componentes/boton-copiar/), y la banda de cifras son `.exds-kpi[data-marco="false"]`
   (componentes/kpi/kpi.css) — NINGUNA de esas clases se repite aquí.

   REQUISITOS DEL ANFITRIÓN:
     1. Los tokens del canon (`colors_and_type.css`).
     2. `box-sizing: border-box`.
     3. Las hojas de `card.css`, `badge.css`, `boton-copiar.css` y `kpi.css` cargadas ANTES o
        DESPUÉS de ésta (el orden no importa: no hay selectores que compitan).
   ═══════════════════════════════════════ */

/* El renglón «Volver», fuera de la tarjeta. El margen es el valor EXACTO de la captura
   aprobada (`plans/handoff/detalle_contrato/CabeceraContrato.dc.html`): cancela el propio
   relleno del Button ghost sm para que el CHEVRON quede a tinta con el título de la card. */
.exds-cabobj-volver {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: -6px -8px -4px 0;
}

.exds-cabobj-top {
  display: flex;
  align-items: center;
  gap: var(--space-4, 16px);
  padding: 18px 24px 16px;
}
.exds-cabobj-id {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.exds-cabobj-titulos {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
}
.exds-cabobj-titulo {
  margin: 0;
  font-size: var(--fs-h2, 18px);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.005em;
  color: var(--fg1, #0F1419);
}
.exds-cabobj-badges { display: flex; align-items: center; gap: 6px; }
/* Dos bloques —identifica / describe—, separados por AIRE (gap 16px entre bloques, 8px entre
   los elementos DENTRO de un bloque). Ya no hay punto medio: la agrupación la hace el espacio,
   no un carácter (DECISION-FUENTE arriba).

   ⛔ v1.2 · 2026-09-21 — EL AIRE ENTRE BLOQUES BAJA DE 20 A 16.
   `DECISION-FUENTE: Ricardo, 2026-09-21 — «Sobre visual de separacion de pastilla: 16 px»`
   (hoja `plans/decisiones/_decision_aire_meta_cabecera_2026-09-21.html`, con el antes y tres
   escalones montados con las piezas vivas). Él lo reportó mirando —«hay más espacio del que
   debería haber entre el folio y la pastilla»— y eligió 16 sobre los 20 que yo recomendaba.
   ⚠ El 20 NO era el defecto: el defecto era que se VEÍAN 24, porque el relleno del botón de
   copiar se sumaba al gap (ver la regla del `.exds-copiar` abajo, que lo cancela). Corregido
   eso, el aire óptico ya coincide con el declarado — y sobre esa base Ricardo pidió además
   un escalón menos. Son dos cambios distintos y el orden importa: primero se hizo cumplir el
   valor, después él lo movió. */
.exds-cabobj-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 16px;
  font-size: var(--fs-body-sm, 13px);
  line-height: 1.4;
  color: var(--fg2, #4B5563);
}
.exds-cabobj-meta-grupo { display: inline-flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%; }
/* gap: 2px — valor del visual aprobado (opción C de
   plans/decisiones/_decision_meta_cabecera_2026-09-20.html, regla .prop-c-folio). Aquí decía
   4px: el visual que Ricardo aprobó no era el que se implementó. */
.exds-cabobj-meta-folio { display: inline-flex; align-items: center; gap: 2px; min-width: 0; max-width: 100%; }
/* El folio es el bloque que IDENTIFICA: tinta fuerte (--fg1), no --fg2 como el resto de la
   línea — es el dato que se busca, se pega en un correo, se dicta por teléfono. */
.exds-cabobj-meta-folio-v {
  font-family: var(--font-mono, ui-monospace, monospace);
  font-weight: 500;
  color: var(--fg1, #0F1419);
}
/* ⛔ EL IDENTIFICADOR QUE NO CABE (regla GENERAL, COMPONENTE_BOTONCOPIAR.md § «El identificador que no cabe» · Ricardo, 2026-10-02 — «cuando un
   código o identificador no cabe en su celda por el ancho hay que dejarlo incompleto con tres puntos e integrar un globo tinta y el botón de
   copiar. Esto sucede en el número VIN»): el folio va en una línea; si no cabe se recorta con elipsis, lleva el globo de tinta con el valor
   completo SÓLO si se recorta (data-tip + data-tip-si-recorte en el propio valor, dentro de su .exds-tip-wrap) y el botón de copiar al lado,
   que no se encoge y copia el valor entero. */
.exds-cabobj-meta-folio > .exds-tip-wrap { display: flex; min-width: 0; max-width: 100%; }
.exds-cabobj-meta-folio-v { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Cancela el propio relleno del `BotonCopiar` (IconButton ghost, padding:4px) — mismo patrón
   que `.exds-cabobj-volver` arriba: el gap entre bloques (`.exds-cabobj-meta`) es box-a-box,
   así que el relleno del botón se SUMA al aire declarado. Sin esta línea, con el gap en 20 el
   aire ÓPTICO (glifo dibujado → pastilla) salía en 24; hoy, con el gap en 16, saldría en 20.
   Medido en navegador con `admin/css/` reales, contrato AP2025012 (2026-09-21).

   ⛔ ESTA CANCELACIÓN NO SE SUSTITUYE BAJANDO EL GAP. Es la tentación obvia —daría el mismo
   número— y es incorrecta: un bloque SIN botón de copiar quedaría más junto que uno CON botón,
   y el canon declara un aire ÚNICO entre bloques. Lo que sobra es el relleno del control, no
   el gap.

   ⚠ Y AQUÍ DECÍA «NO se baja el gap de 20 a 16», QUE ES LO QUE RICARDO DECIDIÓ HORAS DESPUÉS
   (`DECISION-FUENTE: Ricardo, 2026-09-21 — «Sobre visual de separacion de pastilla: 16 px»`).
   El argumento seguía siendo bueno; su ejemplo dejó de serlo. Se corrige el mismo día porque
   *un comentario que prohíbe lo que su propio archivo hace invita al siguiente a «arreglarlo»
   de vuelta* — lo cazó `revisor-qa` antes de publicar, en las cuatro copias a la vez. Es la
   forma (3) de `GOBIERNO.md` §0-ter: cuando una ficha cita una decisión y además la resume,
   manda la cita. */
.exds-cabobj-meta-folio .exds-copiar { margin-right: -4px; }

/* La banda de cifras (I-3): N celdas iguales, hairline arriba (separa la identidad de la banda)
   y entre celdas. Las celdas son Kpi marco={false} — el borde y el fondo de la caja los quita el
   Kpi (kpi.css); el hairline lo pinta este contenedor, no la pieza de dentro. El número de
   columnas lo declara el anfitrión con `style="grid-template-columns:repeat(N,minmax(0,1fr))"`
   (N = cuántas cifras trae, igual que hace el kit). */
.exds-cabobj-cifras {
  display: grid;
  border-top: 1px solid var(--color-border-subtle, #E5E7EB);
}
/* El hairline vive en la CELDA envoltorio (.exds-cabobj-cifra), no en el Kpi mismo (medido en
   navegador real). Un Kpi marco={false} pinta border:none — shorthand, resetea TODOS los
   lados de SU PROPIO elemento — así que un border-left puesto directo sobre .exds-kpi se
   borraba en silencio (especificidad 0-2-0 de [data-marco="false"] contra 0-1-0 de
   > * + *, sin importar el orden de carga de las hojas). Envolver cada Kpi en su propia
   celda separa las dos cajas: el Kpi sigue sin caja propia, y el borde vive en un elemento
   que el Kpi nunca toca. */
.exds-cabobj-cifra {
  min-width: 0;
}
.exds-cabobj-cifra + .exds-cabobj-cifra {
  border-left: 1px solid var(--color-border-subtle, #E5E7EB);
}
/* v1.2: la cifra dentro de la cabecera vale --fs-h2 (18), no el --fs-num-md (24) del Kpi suelto.
   Especificidad 0-2-0 contra 0-1-0 de .exds-kpi-value: gana sin !important y sin tocar el Kpi. */
.exds-cabobj-cifra .exds-kpi-value {
  font-size: var(--fs-h2, 18px);
}
