/* Cas de test (format Excel) dans la page — cas en lignes, groupes
   INPUTS / OUTPUTS / MÉTA repliables (dictée Luc du 29/09, action O5T87kYs).
   À l'arrivée, INPUTS et OUTPUTS sont visibles : la grille des X EST le
   format Excel, et la lire repliée derrière un témoin a fait croire à un
   tableau vide (réunion du 30/09). MÉTA se replie d'elle-même quand le
   tableau déborde de son cadre (fit=["meta"]) — à toute largeur d'écran, le
   cadre étant borné ; son témoin la rouvre. L'ascenseur horizontal du cadre
   absorbe ce qui déborde encore ; un clic sur un bandeau replie son groupe.
   Couleurs : les jetons de thème (tokens.css) et les bandeaux en variables
   locales redéfinies en mode nuit (remarque client #199 : table illisible,
   fonds blancs et texte sombre en dur). */

.bench-classeur-scroll {
  overflow-x: auto;
  width: fit-content;
  max-width: 100%;
}

.bench-classeur {
  --classeur-band-bg: #e0f2fe;
  --classeur-band-fg: #075985;
  --classeur-band-hover: #bae6fd;
  --classeur-band-accent: #0284c7;
  --classeur-stub-body: #f0f9ff;
  border-collapse: collapse;
  width: max-content;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  line-height: 1.25;
  color: var(--text-primary, #111827);
}

.bench-classeur th,
.bench-classeur td {
  border: 1px solid var(--border, #d6d3d1);
  padding: .2rem .3rem;
  vertical-align: top;
  text-align: left;
}

.bench-classeur thead th {
  background: var(--surface-raised, #f5f5f4);
  font-weight: 600;
  text-align: center;
  vertical-align: middle;
}

/* --- ID (colonne collée à gauche) ------------------------------------ */

.bench-classeur__id-head,
.bench-classeur__id-cell {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--surface, #fff);
  width: 7rem;
  min-width: 7rem;
  max-width: 7rem;
  text-align: left;
}

.bench-classeur thead .bench-classeur__id-head {
  background: var(--surface-raised, #f5f5f4);
  text-align: center;
}

.bench-classeur__id-cell {
  padding: .3rem .4rem;
}

.bench-classeur__id-code {
  display: block;
  font-weight: 600;
  white-space: nowrap;
}

.bench-classeur__id-ref {
  display: block;
  margin-top: .15rem;
  font-size: 10px;
  color: var(--text-secondary, #57534e);
}

.bench-classeur__id-ref .bench-ref {
  font-family: inherit;
}

/* --- Bandeaux de groupe (INPUTS / OUTPUTS / MÉTA) --------------------- */

.bench-classeur__group {
  background: var(--classeur-band-bg);
  color: var(--classeur-band-fg);
  text-transform: uppercase;
  letter-spacing: .04em;
  font-size: 10.5px;
  padding: 0;
}

.bench-classeur__group-btn {
  display: block;
  width: 100%;
  padding: .35rem .5rem;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
  text-align: center;
}

.bench-classeur__group-btn:hover,
.bench-classeur__group-btn:focus-visible {
  background: var(--classeur-band-hover);
}

.bench-classeur__group[aria-expanded="false"] .bench-classeur__group-caret {
  display: inline-block;
  transform: rotate(-90deg);
}

.bench-classeur__group-label { font-weight: 700; }

.bench-classeur__group-caret {
  margin-left: .3rem;
  font-size: 9px;
  color: var(--classeur-band-accent);
}

/* --- Colonne témoin d'un groupe replié -------------------------------- */

.bench-classeur__stub {
  padding: 0;
  background: var(--classeur-band-bg);
  width: 2rem;
  min-width: 2rem;
}

.bench-classeur__stub-btn {
  display: block;
  width: 100%;
  height: 100%;
  padding: .4rem .1rem;
  border: 0;
  background: transparent;
  color: var(--classeur-band-fg);
  font: inherit;
  cursor: pointer;
}

.bench-classeur__stub-btn:hover,
.bench-classeur__stub-btn:focus-visible {
  background: var(--classeur-band-hover);
}

.bench-classeur__stub-inner {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: .3rem;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  font-size: 10px;
  white-space: nowrap;
}

.bench-classeur__stub-label {
  text-transform: uppercase;
  letter-spacing: .04em;
  font-weight: 700;
}

.bench-classeur__stub-count {
  color: var(--classeur-band-accent);
  font-weight: 500;
}

.bench-classeur__stub-body {
  background: var(--classeur-stub-body);
  min-width: 2rem;
}

/* --- Noms de donnée (ligne 2) ---------------------------------------- */

.bench-classeur__name {
  background: var(--surface, #fafaf9);
  font-weight: 600;
  font-size: 10.5px;
  padding: .3rem .3rem;
  max-width: 12rem;
}

.bench-classeur__name-t {
  display: inline-block;
  overflow-wrap: anywhere;
}

/* --- Valeurs concrètes (ligne 3) -------------------------------------- */

.bench-classeur__value {
  padding: .35rem .15rem;
  background: var(--surface, #fff);
  font-weight: 500;
  min-width: 1.6rem;
  max-width: 2.4rem;
}

.bench-classeur__v {
  display: inline-block;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  white-space: nowrap;
  max-height: 8rem;
  overflow: hidden;
  text-overflow: ellipsis;
}

.bench-classeur__k {
  display: block;
  margin-top: .2rem;
  font-size: 9px;
  font-weight: 400;
  color: var(--text-secondary, #57534e);
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  white-space: nowrap;
  max-height: 6rem;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* --- Cellules du corps (X sous une valeur) ---------------------------- */

.bench-classeur td.bench-classeur__cell {
  text-align: center;
  font-weight: 600;
  min-width: 1.6rem;
}

/* --- Colonnes méta --------------------------------------------------- */

.bench-classeur__meta-head {
  background: var(--surface-raised, #f5f5f4);
  font-size: 10.5px;
  font-weight: 600;
}

.bench-classeur__meta {
  white-space: pre-line;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 10px;
  line-height: 1.3;
  overflow-wrap: anywhere;
  vertical-align: top;
}

.bench-classeur__meta-head--boundary,      .bench-classeur__meta--boundary      { min-width: 6rem;  max-width: 8rem; }
.bench-classeur__meta-head--expression,    .bench-classeur__meta--expression    { min-width: 8rem;  max-width: 12rem; }
.bench-classeur__meta-head--pair,          .bench-classeur__meta--pair          { min-width: 6rem;  max-width: 9rem; }
.bench-classeur__meta-head--status,        .bench-classeur__meta--status        { min-width: 4rem;  max-width: 6rem; }
.bench-classeur__meta-head--validation,    .bench-classeur__meta--validation    { min-width: 5rem;  max-width: 7rem; }
.bench-classeur__meta-head--justification, .bench-classeur__meta--justification { min-width: 10rem; max-width: 14rem; font-family: system-ui, sans-serif; }

/* --- « n.c. » (Valeur non calculée dans le cadre de cette exigence) --- */

.bench-classeur__nc {
  border-bottom: 1px dotted var(--text-secondary, #57534e);
  cursor: help;
  text-decoration: none;
}

/* --- Mode nuit (remarque client #199) --------------------------------- */

[data-theme="dark"] .bench-classeur,
html.dark .bench-classeur {
  --classeur-band-bg: #0c3a52;
  --classeur-band-fg: #bae6fd;
  --classeur-band-hover: #075985;
  --classeur-band-accent: #7dd3fc;
  --classeur-stub-body: #10252f;
}
