[hidden] { display: none !important; }
:root {
  --fond: #f4f5f7; --carte: #ffffff; --trait: #dde1e7; --texte: #1d2433; --doux: #667085; --accent: #1f4e8c;
  --accent-clair: #e8eef7; --alerte: #b42318; --attention: #b54708; --info: #175cd3; --ok: #067647;
  --police: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif; --mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
}
* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body { display: grid; grid-template-rows: 52px 1fr 26px; font: 13px/1.45 var(--police); color: var(--texte); background: var(--fond); overflow: hidden; }
button, .bouton { font: inherit; border: 1px solid var(--trait); background: var(--carte); color: var(--texte); padding: 5px 10px; border-radius: 6px; cursor: pointer; }
button:hover, .bouton:hover { border-color: var(--accent); }
button.principal { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }
button.discret, .bouton.discret { background: transparent; }

#entete { display: flex; align-items: center; gap: 8px; padding: 0 10px; background: var(--carte); border-bottom: 1px solid var(--trait); }
.marque { display: flex; align-items: center; }
.marque img { display: block; width: 30px; height: 30px; }
.titre { display: flex; align-items: center; gap: 14px; flex: none; }
.espace { flex: 1; }
.jeton { display: flex; align-items: center; gap: 4px; min-width: 0; }
.code-session { display: flex; align-items: center; gap: 6px; border: 2px solid var(--accent); border-radius: 8px; padding: 3px 4px 3px 9px; cursor: help; }
.jeton code { font: 12px var(--mono); background: var(--accent-clair); padding: 3px 7px; border-radius: 5px; }
.etiquette { color: var(--doux); font-size: 12px; white-space: nowrap; }
.actions { display: flex; gap: 4px; align-items: center; flex: none; }
.langues { display: flex; align-items: center; flex: none; gap: 2px; padding: 2px; border: 1.5px solid var(--accent); border-radius: 7px; background: var(--carte); margin: 0 4px; }
.langues a { display: flex; padding: 3px 5px; border-radius: 5px; opacity: .45; }
.langues a img { display: block; width: 24px; height: 16px; box-shadow: 0 0 0 1px rgba(0, 0, 0, .18); border-radius: 2px; }
.langues a.actif { background: var(--accent-clair); opacity: 1; }
.langues a:hover { opacity: 1; }
#entete button, #entete .bouton, .jeton code { white-space: nowrap; }
#entete button, #entete .bouton { padding: 5px 8px; font-size: 13px; }

#travail { display: grid; gap: 10px; padding: 10px 10px 10px 0; min-height: 0;
  grid-template-columns: minmax(420px, 38%) minmax(0, 1fr) minmax(260px, 19%);
  grid-template-rows: 25% 1fr 26%;
  grid-template-areas: "param res detail" "donnees res detail" "donnees sig detail"; }
#bloc-parametrage { grid-area: param; } #bloc-donnees { grid-area: donnees; }
#bloc-parametrage, #bloc-donnees { border-left: none; border-top-left-radius: 0; border-bottom-left-radius: 0; } #bloc-resultats { grid-area: res; }
#bloc-signalements { grid-area: sig; } #bloc-detail { grid-area: detail; }
.bloc { background: var(--carte); border: 1px solid var(--trait); border-radius: 8px; display: flex; flex-direction: column; min-height: 0; min-width: 0; }
.bloc h2 { margin: 0; padding: 8px 12px; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--doux); border-bottom: 1px solid var(--trait); }
.defile { overflow: auto; padding: 10px 12px; flex: 1; min-height: 0; }
.vide { color: var(--doux); }

/* paramétrage */
.question { display: grid; grid-template-columns: 1fr 150px; gap: 8px; align-items: center; padding: 2px 0; border-bottom: 1px dashed #eef0f3; }
.question label { font-size: 12.5px; }
.question select, .question input { width: 100%; font: inherit; padding: 2px 6px; border: 1px solid var(--trait); border-radius: 5px; background: #fff; }
.question.multi { grid-template-columns: 1fr; }
.coches { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: 12px; }
details.repli { margin-top: 10px; } details.repli summary { cursor: pointer; color: var(--accent); font-weight: 600; font-size: 12px; }
.manque { outline: 2px solid var(--attention); outline-offset: 1px; border-radius: 4px; }

/* données */
.groupe { margin-bottom: 14px; }
.groupe h3 { font-size: 12px; margin: 0 0 6px; color: var(--accent); }
#donnees { padding-top: 0; }
table.grille { border-collapse: separate; border-spacing: 0; table-layout: fixed; font-size: 12px; }
table.grille th { position: sticky; top: calc(var(--h-ancres, 0px) + var(--h-titre, 22px)); z-index: 2; background: var(--carte); text-align: left; font-weight: 600; color: var(--doux); padding: 4px 12px 4px 4px; border-bottom: 1px solid var(--trait); vertical-align: top; white-space: normal; line-height: 1.25; }
table.grille th .titre { display: block; font-weight: 500; color: var(--texte); font-size: 11.5px; }
table.grille th .sym { display: block; font: 10.5px var(--mono); color: var(--doux); margin-top: 2px; }
table.grille th, table.grille td.lib { overflow: hidden; }
table.grille td.lib { position: sticky; left: 0; background: var(--carte); z-index: 1; }
table.grille th.lib { left: 0; z-index: 3; }
.poignee { position: absolute; top: 4px; right: 0; width: 9px; bottom: 4px; cursor: col-resize; border-right: 2px solid var(--trait); }
.poignee:hover, .poignee:active { border-right-color: var(--accent); }
table.grille td { padding: 2px 3px; border-bottom: 1px solid #f0f2f5; }
table.grille td.lib { color: var(--texte); white-space: nowrap; text-overflow: ellipsis; padding-right: 8px; }
input.nombre { width: 100%; min-width: 0; font: 12px var(--mono); text-align: right; padding: 3px 5px; border: 1px solid var(--trait); border-radius: 4px; }
input.nombre:focus { border-color: var(--accent); outline: none; background: var(--accent-clair); }
.scalaire { display: grid; grid-template-columns: 1fr 130px; gap: 6px; align-items: center; padding: 2px 0; font-size: 12px; }

/* résultats */
.synthese { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 12px; }
.chiffre { border: 1px solid var(--trait); border-radius: 8px; padding: 10px 12px; display: flex; flex-direction: column; justify-content: space-between; gap: 4px; }
.chiffre .nom { color: var(--doux); font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; }
.chiffre .val { font-size: 22px; font-weight: 650; font-variant-numeric: tabular-nums; }
.chiffre.ok .val { color: var(--ok); } .chiffre.ko .val { color: var(--alerte); }
ul.arbre, ul.arbre ul { list-style: none; margin: 0; padding-left: 16px; }
ul.arbre { padding-left: 0; }
.ligne { display: flex; align-items: center; gap: 6px; padding: 3px 6px; border-radius: 5px; cursor: pointer; }
.ligne:hover { background: var(--accent-clair); } .ligne.choisi { background: var(--accent-clair); box-shadow: inset 2px 0 0 var(--accent); }
.ligne .bascule { width: 14px; color: var(--doux); font-size: 10px; }
.ligne .sym { font-weight: 600; min-width: 120px; } .ligne .lib { color: var(--doux); flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ligne .mt { font: 12px var(--mono); }
.zero .mt, .zero .sym { color: #a0a8b6; }

/* signalements */
.signal { padding: 6px 8px; border-left: 3px solid; margin-bottom: 6px; background: #fafbfc; border-radius: 0 5px 5px 0; }
.signal.alerte { border-color: var(--alerte); } .signal.attention { border-color: var(--attention); } .signal.info { border-color: var(--info); }

/* détail */
.formule { font: 12.5px/1.6 var(--mono); background: #f7f8fa; border: 1px solid var(--trait); border-radius: 6px; padding: 8px; white-space: pre-wrap; word-break: break-word; }
.meta { color: var(--doux); font-size: 12px; margin: 4px 0 10px; }
table.comp { width: 100%; border-collapse: collapse; font-size: 12px; margin-top: 8px; }
table.comp td { padding: 4px; border-bottom: 1px solid #f0f2f5; vertical-align: top; }
table.comp td.v { text-align: right; font-family: var(--mono); white-space: nowrap; }
.type { font-size: 10.5px; padding: 1px 5px; border-radius: 4px; background: #eef0f3; color: var(--doux); }
.type.calcul { background: var(--accent-clair); color: var(--accent); } .type.bareme { background: #fef0c7; color: #93370d; } .type.donnee { background: #dcfae6; color: #085d3a; }
a.lien { color: var(--accent); cursor: pointer; text-decoration: none; } a.lien:hover { text-decoration: underline; }

#pied { display: flex; gap: 28px; align-items: center; justify-content: center; font-size: 12px; background: var(--carte); border-top: 1px solid var(--trait); }
#pied a { color: var(--texte); text-decoration: none; } #pied a:hover { color: var(--accent); }

#voile { position: fixed; inset: 0; background: rgba(16, 24, 40, .45); display: grid; place-items: center; z-index: 10; }
.fenetre { background: #fff; border-radius: 10px; padding: 20px 22px; width: min(520px, 92vw); box-shadow: 0 20px 50px rgba(0,0,0,.25); }
.fenetre h3 { margin: 0 0 10px; font-size: 16px; }
.fenetre .code-grand { font: 20px var(--mono); letter-spacing: .04em; background: var(--accent-clair); padding: 10px; border-radius: 8px; text-align: center; margin: 10px 0; }
.fenetre .boutons { display: flex; gap: 8px; justify-content: flex-end; margin-top: 14px; }
.fenetre input[type=text] { width: 100%; font: 15px var(--mono); padding: 8px; border: 1px solid var(--trait); border-radius: 6px; }
.erreur { color: var(--alerte); font-size: 12px; margin-top: 6px; }
.ancres { display: grid; grid-auto-flow: column; grid-template-rows: auto auto; justify-content: start; gap: 2px 14px; font-size: 12px; padding: 6px 12px; border-bottom: 1px solid var(--trait); overflow-x: auto; overflow-y: hidden; white-space: nowrap; flex: none; scrollbar-width: thin; }
.ancres:empty { display: none; }
#donnees .groupe h3 { position: sticky; top: var(--h-ancres, 0px); left: 0; z-index: 5; background: var(--carte); margin: 0; padding: 6px 0 4px; box-shadow: -12px 0 0 var(--carte), 12px 0 0 var(--carte); }
small.aide { display: block; color: var(--doux); font-size: 11px; line-height: 1.35; margin-top: 2px; }
.scalaire { align-items: start; padding: 4px 0; }
details.aide-grille { font-size: 11.5px; color: var(--doux); margin: 0 0 6px; } details.aide-grille summary { cursor: pointer; color: var(--accent); }
details.aide-grille ul { margin: 4px 0 0; padding-left: 16px; } details.aide-grille li { margin-bottom: 3px; }

/* lignes nommées par l'entreprise */
.ligne-entreprise { display: flex; align-items: center; gap: 4px; }
.nom-ligne { flex: 1; min-width: 0; font: inherit; padding: 3px 6px; border: 1px solid var(--trait); border-radius: 4px; background: transparent; color: inherit; }
.retirer { border: none; background: none; color: var(--doux); cursor: pointer; font-size: 15px; line-height: 1; padding: 2px 4px; }
.retirer:hover { color: var(--attention); }
.ajouter { border: 1px solid var(--accent); background: #fff; color: var(--accent); border-radius: 4px; cursor: pointer; font-size: 14px; line-height: 1; padding: 2px 6px; }
.ajouter:hover { background: var(--accent-clair); }
tr.ajout td { border-bottom: none; }
table.grille select.choix, table.grille input.texte { width: 100%; font: inherit; font-size: 12px; padding: 3px 4px; border: 1px solid var(--trait); border-radius: 4px; background: #fff; color: inherit; min-width: 0; }
.coches label { display: inline-flex; flex-direction: row; align-items: center; gap: 4px; white-space: nowrap; }
.question .coches input { width: auto; margin: 0; padding: 0; }
.variantes { margin: 6px 0; padding: 6px 0; border-top: 1px solid var(--trait); border-bottom: 1px solid var(--trait); }
.titre-variantes { font-size: 11.5px; color: var(--doux); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 4px; }
.variantes label.variante { display: flex; gap: 6px; align-items: flex-start; font-size: 12.5px; padding: 2px 0; }
.variantes label.variante.grise { color: var(--doux); }
.tab-variantes { border-collapse: collapse; margin: 0 0 10px; font-size: 12.5px; }
.tab-variantes th, .tab-variantes td { padding: 3px 10px; border-bottom: 1px solid #eef0f3; text-align: right; font-variant-numeric: tabular-nums; }
.tab-variantes th:first-child, .tab-variantes td:first-child { text-align: left; color: var(--doux); }
.tab-variantes td.ok { color: var(--ok); font-weight: 600; } .tab-variantes td.ko { color: var(--alerte); font-weight: 600; }
.ligne .mt { min-width: 110px; text-align: right; }
.ligne .mt.diff { font-weight: 650; }
.ligne.entete-col { cursor: default; color: var(--doux); font-size: 11.5px; } .ligne.entete-col:hover { background: none; }
.repli .question { grid-template-columns: 1fr minmax(150px, 42%); }

/* pages compagnons : même dessin que la page de travail, fenêtres qui défilent */
body.compagnon { background: var(--fond); }
.compagnon a.marque { text-decoration: none; }
.compagnon h1.contexte { margin: 0; font-size: 14px; font-weight: 600; color: var(--texte); }
.compagnon a.bouton { text-decoration: none; display: inline-block; }
a.bouton.principal { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }
#fenetres { display: grid; gap: 10px; padding: 10px; min-height: 0; }
.colonne { display: flex; flex-direction: column; gap: 10px; min-height: 0; min-width: 0; }
.colonne > .bloc { flex: 1 1 0; }
.compagnon .defile { font-size: 13px; line-height: 1.55; }
.compagnon .defile p { margin: 0 0 9px; } .compagnon .defile ul { margin: 0 0 9px; padding-left: 18px; } .compagnon .defile li { margin-bottom: 4px; }
.compagnon .defile section + section { margin-top: 14px; }
.compagnon .defile h3 { font-size: 12.5px; color: var(--accent); margin: 0 0 6px; }
.compagnon .defile a { color: var(--accent); }
table.liste { width: 100%; border-collapse: collapse; font-size: 12px; margin-bottom: 6px; }
table.liste th { position: sticky; top: -10px; background: var(--carte); text-align: left; font-weight: 600; color: var(--doux); padding: 5px 6px; border-bottom: 1px solid var(--trait); }
table.liste td { padding: 5px 6px; border-bottom: 1px solid #f0f2f5; vertical-align: top; overflow-wrap: anywhere; }
table.liste td b { display: block; font-weight: 600; }
table.liste td code { display: block; font: 11px var(--mono); color: var(--doux); white-space: pre-wrap; }
table.liste td small { display: block; color: var(--doux); font-size: 11px; margin-top: 2px; }
table.liste td:first-child { min-width: 150px; }
.niv1 { padding-left: 12px; } .niv2 { padding-left: 24px; } .niv3 { padding-left: 36px; }
.niv2 b, .niv3 b { font-weight: 500; }
table.liste a { white-space: nowrap; }
.compagnon .groupe h3 { position: sticky; top: -10px; z-index: 2; background: var(--carte); padding: 4px 0; margin: 0; }
.compagnon .groupe table.liste th { top: 16px; }
.filtres { padding: 8px 12px; border-bottom: 1px solid var(--trait); display: flex; flex-wrap: wrap; gap: 6px; align-items: center; flex: none; }
.filtres input[type=search] { flex: 1; min-width: 160px; font: inherit; padding: 5px 8px; border: 1px solid var(--trait); border-radius: 6px; }
.filtres .compte { color: var(--doux); font-size: 11.5px; }
.badges { display: flex; flex-wrap: wrap; gap: 4px; width: 100%; }
.badge { font-size: 11.5px; padding: 2px 8px; border-radius: 10px; border: 1px solid var(--trait); background: var(--carte); color: var(--texte); cursor: pointer; }
.badge.actif { background: var(--accent); border-color: var(--accent); color: #fff; }
.faq details { border-bottom: 1px dashed #e4e7ec; padding: 5px 0; }
.faq summary { cursor: pointer; color: var(--accent); font-weight: 500; }
.faq details p { margin: 5px 0 2px; }
@media (max-width: 900px) {
  body.compagnon { display: block; overflow: auto; height: auto; }
  body.compagnon #entete { min-height: 52px; flex-wrap: wrap; padding: 6px 12px; }
  #fenetres { display: block; } .colonne { display: block; } .colonne > .bloc { margin-bottom: 10px; max-height: 80vh; }
  body.compagnon #pied { flex-wrap: wrap; padding: 6px; gap: 8px 16px; }
}

ul.sessions { margin: 8px 0 12px; padding-left: 18px; line-height: 1.8; }
.nommer { display: flex; gap: 8px; margin-bottom: 8px; }
.nommer input { flex: 1; }
#btn-sessions { max-width: 140px; overflow: hidden; text-overflow: ellipsis; }
@media (min-width: 1500px) { #btn-sessions { max-width: 260px; } }
@media (max-width: 1499px) {                     /* écrans de 1 366 px : le bandeau tient sur une ligne */
  #entete { gap: 5px; padding: 0 8px; }
  #entete button, #entete .bouton { padding: 4px 6px; font-size: 12px; }
  .actions { gap: 3px; }
  .etiquette { font-size: 11px; }
  .code-session { gap: 4px; padding: 3px 3px 3px 7px; }
  .jeton code { padding: 3px 5px; font-size: 11.5px; }
  .langues a { padding: 3px 4px; }
}
/* calculs complémentaires (P) : lien en tête de colonne, Données fournies, panneau */
a.lien-p { display: inline-block; margin-top: 3px; font-size: 10.5px; font-weight: 600; color: var(--accent); cursor: pointer; border: 1px solid var(--accent); border-radius: 9px; padding: 0 6px; background: #fff; white-space: nowrap; }
a.lien-p:hover { background: var(--accent-clair); }
a.lien-p.lie { color: #fff; background: var(--accent); }
.scalaire a.lien-p { margin-left: 6px; }
td.fournie, span.fournie { color: var(--doux); font: 11px var(--mono); text-align: center; background: var(--accent-clair); border-radius: 4px; }
span.fournie { display: inline-block; padding: 4px 8px; }
td.sans-objet input, td.sans-objet select { background: #f0f2f5; color: var(--doux); }
.fenetre.large { width: min(1180px, 96vw); max-height: 92vh; overflow: auto; }
.fenetre.large h4 { margin: 14px 0 4px; font-size: 13px; }
.fenetre.large .groupe h3 { position: static; font-size: 12.5px; margin: 10px 0 4px; }
.fenetre.large .defile { overflow-x: auto; }
.fenetre.large table.comp.apercu { width: auto; min-width: 50%; }
.fenetre.large table.comp.apercu th { font-size: 11px; font-weight: 500; color: var(--doux); text-align: left; padding: 4px; max-width: 150px; vertical-align: top; }
.fenetre.large table.comp.apercu th:first-child, .fenetre.large table.comp.apercu td:first-child { text-align: left; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fenetre.large table.grille th { position: static; }
.fenetre.large { overflow-x: hidden; }
.fenetre.large table.grille input[type=text] { width: 100%; font: inherit; font-size: 12px; padding: 3px 4px; }
table.grille th .unite { display: block; font-size: 10.5px; color: var(--accent); margin-top: 1px; }
input.nombre::placeholder { color: #b4bcc8; font-style: italic; font-family: inherit; }
td.fournie, span.fournie { cursor: pointer; } td.fournie:hover, span.fournie:hover { color: var(--accent); text-decoration: underline; }
.bloc h2.avec-recherche { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 5px; padding-bottom: 5px; }
#filtre-donnees { width: 220px; font: 12px var(--sans, inherit); text-transform: none; letter-spacing: 0; padding: 3px 8px; border: 1px solid var(--trait); border-radius: 12px; color: var(--texte); background: #fff; }
#filtre-donnees.vide { border-color: var(--attention); }
.ancres a[hidden] { display: none; }
/* saisie unique d'un P (méthode…) : le champ à la largeur de ses choix, sous l'intitulé */
.scalaire.p { grid-template-columns: minmax(0, 1fr) auto; max-width: 900px; }
.scalaire.p select { width: auto; }
/* aperçu d'un P : un libellé long (nature d'exposition…) tient sur une ligne, entier au survol */
table.comp.apercu td.v { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
table.comp td.v.t { text-align: left; font-family: inherit; }
