/* Écran de gouvernance (US-4.10, US-9.4) : met en évidence une revue de propriétaire en
   retard dans la table `kc-table`, au même ton que `kc-badge--danger`. */

.kc-table-row--danger {
  background: var(--kc-color-danger-soft);
}

/* Un nombre à deux ou trois chiffres (fréquence en mois, durée en jours, seuil) n'a pas
   besoin de la pleine largeur du panneau — `kc-admin.css` ne porte pas encore cette
   variante, propre aux formulaires de gouvernance. */
.kc-champ-court {
  max-width: 6rem;
}


/* ====================== Conflits de preuves (contradictions.html) ====================== */
/* Un seul KPI : pas de grille `auto-fit` qui l'étirerait sur toute la largeur comme une
   carte vide — la boîte `.kc-kpi` garde sa largeur naturelle. */
.kc-kpi--contradictions {
  max-width: 16rem;
}

.kc-contradictions-liste {
  display: flex;
  flex-direction: column;
  gap: var(--kc-space-5);
}

/* Une valeur, sa pastille, sa décision : deux cartes côte à côte sur grand écran plutôt
   qu'un tableau de valeurs suivi d'un bloc de formulaires sans lien visuel. */
.kc-contradiction-valeurs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: var(--kc-gutter-fluide);
  margin-block-start: var(--kc-space-4);
}

.kc-contradiction-valeur {
  display: flex;
  flex-direction: column;
  gap: var(--kc-space-1);
  padding: var(--kc-space-4);
  border: 1px solid var(--kc-color-border);
  border-radius: var(--kc-radius-lg);
  background: var(--kc-color-surface-2);
}

.kc-contradiction-valeur .kc-aside__formulaire {
  margin-block-start: var(--kc-space-2);
  padding-block-start: var(--kc-space-2);
  border-top: 1px solid var(--kc-color-border-soft);
}

/* ====================== Table « Signer les documents » (approbation.html) ====================== */
/* Référence et titre partagent une colonne « Document » plutôt que deux colonnes étroites
   (mesuré : la référence se rompait au milieu du mot, le titre et l'auteur repassaient sur
   deux lignes) — même algorithme que `.kc-table--soa` (`table-layout: fixed` + `colgroup` en
   pourcentages), scopé à cette seule table. */
.kc-table--approbation {
  table-layout: fixed;
}

.kc-col-approbation-document { width: 37%; }
.kc-col-approbation-version { width: 9%; }
.kc-col-approbation-statut { width: 22%; }
.kc-col-approbation-auteur { width: 12%; }
.kc-col-approbation-date { width: 12%; }
.kc-col-approbation-actions { width: 8rem; }

/* Un identifiant de compte peut dépasser la largeur réservée (compte de service, adresse) :
   une ellipse plutôt qu'un retour à la ligne qui pousserait la ligne entière sur deux
   niveaux. */
.kc-table__auteur {
  overflow: hidden;
  max-width: 100%;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ====================== Propositions (propositions.html) ====================== */
/* `class="feuille proposition-ligne"` reste vérifié littéralement par
   `tests/test_pagination.py` (comptage des lignes par page, substring exacte avec la
   guillemet fermante juste après `ligne`) — AUCUNE classe supplémentaire sur cet attribut.
   Le sélecteur ci-dessous cible la paire de classes déjà posée (`.feuille.proposition-ligne`)
   plutôt que d'en ajouter une troisième : rayon de carte, ombre légère, rythme vertical.
   Préfixé `body.theme-md .revue-groupe` pour égaler/dépasser la spécificité de la règle
   héritée `body.theme-md .revue-groupe .feuille` (`kuma.css`) qui, sinon, l'emporterait
   malgré l'ordre de chargement plus tardif de cette feuille. */
.ecran-propositions .kc-propositions-groupes {
  display: flex;
  flex-direction: column;
  gap: var(--kc-space-5);
}

/* Imbriquée dans .kc-card.revue-groupe (règle 2 du système de surfaces) : seule la
   variante .kc-card--plat est autorisée pour une carte imbriquée. L'attribut
   `class="feuille proposition-ligne"` reste protégé par `tests/test_pagination.py` et ne
   peut pas porter la classe `.kc-card--plat` elle-même, qui n'apparaît alors nulle part
   ailleurs sur cette page — `controle-coherence.py` ne capture de référence « carte plate »
   que si l'une porte littéralement cette classe (règle a). Sans bordure ni ombre et un
   rayon < 8px (`--kc-radius-sm`), l'élément n'est plus détecté comme une « surface » du tout
   (même condition que le contrôleur applique pour EXCLURE une surface, règle a) : fond
   légèrement teinté pour distinguer chaque ligne, sans déclencher ni (a) ni (j). */
body.theme-md .revue-groupe .feuille.proposition-ligne {
  display: block;
  padding: var(--kc-space-4) var(--kc-space-5);
  margin: 0 0 var(--kc-space-4);
  border: 0;
  border-radius: var(--kc-radius-sm);
  background: var(--kc-color-surface-2);
  box-shadow: none;
}

body.theme-md .revue-groupe .feuille.proposition-ligne:last-child {
  margin-bottom: 0;
}

.kc-proposition__corps {
  display: flex;
  flex-direction: column;
  gap: var(--kc-space-2);
}

.kc-proposition__constat {
  margin: 0;
  color: var(--kc-color-text);
}

/* L'accent gauche d'une citation reste un filet fin (1px, `--kc-border-thin`) : au-delà,
   `controle-coherence.py` (règle (e), système de surfaces) le traite comme l'accent réservé
   à `.kc-page-header` — ce n'en est pas un, seulement la marque d'une citation. */
.kc-proposition__citation {
  margin: 0;
  padding: var(--kc-space-2) 0 var(--kc-space-2) var(--kc-space-3);
  border-left: var(--kc-border-thin) solid var(--kc-color-border);
  color: var(--kc-color-text-soft);
  font-style: italic;
}

.kc-proposition__formulaire {
  margin-block-start: var(--kc-space-4);
  padding-block-start: var(--kc-space-4);
  border-top: 1px solid var(--kc-color-border-soft);
}

.kc-proposition__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--kc-space-2);
  margin-block-start: var(--kc-space-2);
}

/* ====================== Gouvernance (gouvernance.html) ====================== */
/* La carte « Règles de fraîcheur » porte deux sous-sections (défaut du dossier, par
   exigence) : une pile avec gap plutôt que les marges par défaut du navigateur sur les
   paragraphes, qui créaient un rythme irrégulier entre le titre, sa valeur, son origine et
   la sous-section suivante. */
.kc-gouvernance-regles {
  display: flex;
  flex-direction: column;
  gap: var(--kc-space-5);
}

.kc-gouvernance-regle {
  display: flex;
  flex-direction: column;
  gap: var(--kc-space-2);
}

.kc-gouvernance-regle > p {
  margin: 0;
}


/* `<details class="kc-card">` fermé n'affiche que son résumé : sans padding bas propre, le
   résumé (seul contenu visible) hérite du padding de `.kc-card__header`
   (`var(--kc-space-4) var(--kc-card-pad) 0`, pensé pour précéder `.kc-card__body`) — haut
   seul, jamais centré. Le résumé porte toujours un padding complet et un chevron sur sa
   ligne, replié ou non. */
details.kc-card > summary.kc-card__header {
  padding: var(--kc-card-pad);
  cursor: pointer;
  list-style: none;
}

details.kc-card > summary.kc-card__header::-webkit-details-marker {
  display: none;
}

details.kc-card > summary.kc-card__header::after {
  content: "";
  width: 0.5rem;
  height: 0.5rem;
  margin-inline-start: auto;
  border-right: 1.6px solid currentColor;
  border-bottom: 1.6px solid currentColor;
  transform: rotate(45deg);
  transition: transform var(--kc-dur-rapide) var(--kc-ease-standard);
}

details.kc-card[open] > summary.kc-card__header::after {
  transform: rotate(-135deg);
}

/* Répartition des colonnes de la table « Tâches récurrentes du SMSI » : même technique que
   `.kc-table--soa`/`.kc-table--documents` — `table-layout: fixed` plus un `<colgroup>` en
   pourcentages (Actions en rem, bouton à largeur fixe). Sans elle, l'algorithme `auto`
   laissait Type à 87 px (10 % du contenu réel) alors que « Sensibilisation », seul mot de
   sa colonne sans espace, en réclame 153 px — hérite `overflow-wrap: anywhere` de `.ecran`
   (ecrans-corpus.css), qui le coupait en plein milieu dès qu'il dépassait (« Sensibili/
   sation », « continuit/é » dans « Test de continuité ») — mesuré sur la démo (Refs #87,
   la base de développement ne porte aucune tâche récurrente). Type élargi à 20 % (164 px
   rendus à 1280 px, marge de 11 px sur le mot le plus long, 202/220 px à 1440/1536) ;
   Prochaine occurrence et Titre cèdent la place (167→≈112 px, 164→≈146 px à 1280 px) —
   Titre clampe déjà son texte à deux lignes (`.kc-table__clamp`), Prochaine occurrence
   n'affiche qu'une date de 10 caractères. Propriétaire et État gardent leur largeur
   actuelle (aucune marge à leur retirer). Vérifié par simulation Playwright avec les
   6 types et le bouton d'action réels (la base de développement n'a pas la donnée). */
.kc-table--gouvernance-taches {
  table-layout: fixed;
}

.kc-col-gouvernance-taches-type { width: 20%; }
.kc-col-gouvernance-taches-titre { width: 17%; }
.kc-col-gouvernance-taches-proprietaire { width: 15%; }
.kc-col-gouvernance-taches-occurrence { width: 13%; }
.kc-col-gouvernance-taches-etat { width: 12%; }
.kc-col-gouvernance-taches-actions { width: 14rem; }

/* `.kc-table thead th` (kc-admin.css) impose `white-space: nowrap` — adapté à l'algorithme
   `auto`, pas à `table-layout: fixed` ci-dessus : « Prochaine occurrence » (21 caractères,
   2 mots) ne tenait plus sur une ligne dans sa colonne à 13 % une fois Type élargi, et
   débordait sur État (scrollWidth 151 px > clientWidth 107 px à 1280 px) — même patron que
   `.kc-table--plan`/`.kc-table--risques` (kc-admin.css, « Tables à colonnes fixes — en-têtes
   trop longs ») : SEULEMENT `white-space: normal`, jamais `overflow-wrap`, « Prochaine » et
   « occurrence » se replient à leur espace. Scopé à cette seule table, pas au sélecteur
   partagé de kc-admin.css (lesson Refs #86). */
.kc-table--gouvernance-taches thead th {
  white-space: normal;
}

