/* ═══════════════════════════════════════════════════════════════
   CAPIWISE — CONSOLE DE SÉANCE · console.css
   CSS natif, zéro compilation, zéro dépendance. Servi tel quel
   depuis console/static/. Requiert tokens.css (et fonts.css).

   CONVENTION DE NOMMAGE — préfixe cw-, schéma bloc/élément/modif :
     .cw-bloc            composant
     .cw-bloc__element   partie interne
     .cw-bloc--modif     variante ou état posé par le serveur
   États dynamiques : :hover, :focus-visible, :disabled,
   [aria-busy="true"], [aria-invalid="true"], [data-etat="…"].

   RÈGLES NON NÉGOCIABLES (D6) :
   · zéro ombre portée — structure par bord 1px et contraste de fond
   · rayon unique 2px ; survol = fond, jamais de translation
   · focus = anneau noir universel (--cw-focus), destructif compris
   · acide : nav active, validation, marqueur héros — 3 max/écran
   · brique/vert/ambre jamais porteurs seuls (forme ou libellé)
   · mono réservée : chiffres, identifiants, horodatages, libellés système
   · aucun identifiant d'arbitrage en dur ici — tout vient des données
   ═══════════════════════════════════════════════════════════════ */

/* ── 0 · Socle ─────────────────────────────────────────────── */
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--cw-fond); color: var(--cw-encre);
  font: var(--cw-t-corps); -webkit-font-smoothing: antialiased;
}
::selection { background: var(--cw-selection); }
a { color: var(--cw-encre); text-decoration: underline; text-underline-offset: 3px; }
a:hover { color: var(--cw-texte-2); }
:focus-visible { outline: none; box-shadow: var(--cw-focus); border-radius: var(--cw-rayon); }
[hidden] { display: none !important; }
.cw-nowrap { white-space: nowrap; }
.cw-num { font-variant-numeric: tabular-nums; }

/* Grille de fond visible (app uniquement, jamais à l'impression) */
.cw-canevas {
  min-height: 100vh;
  background: repeating-linear-gradient(90deg, var(--cw-grille) 0 1px, transparent 1px 344px) var(--cw-l-laterale) 0, var(--cw-fond);
}

/* ── 1 · Châssis ───────────────────────────────────────────── */
.cw-app { display: flex; min-height: 100vh; }
.cw-laterale {
  width: var(--cw-l-laterale); flex: none; background: var(--cw-plaque);
  border-right: var(--cw-filet-1) solid var(--cw-encre);
  display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh;
}
.cw-laterale__marque { display: flex; align-items: center; gap: 8px; padding: 12px 12px 8px; }
.cw-laterale__logo {
  width: 22px; height: 22px; background: var(--cw-encre); border-radius: var(--cw-rayon);
  display: flex; align-items: center; justify-content: center;
  font: 700 11px/1 var(--cw-mono); color: var(--cw-acide);
}
.cw-laterale__nom { font: 700 13px/1 var(--cw-mono); letter-spacing: 0.04em; }
.cw-laterale__groupe {
  padding: 14px 19px 5px; font: var(--cw-t-mono-libelle);
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--cw-texte-3);
}
.cw-laterale__nav { padding: 0 10px; display: flex; flex-direction: column; gap: 1px; }
.cw-laterale__item {
  display: flex; align-items: center; gap: 9px; height: 30px; padding: 0 9px;
  font: var(--cw-t-libelle); color: var(--cw-texte-2); text-decoration: none;
  border-radius: 0; transition: background var(--cw-duree-1) var(--cw-assouplissement);
}
.cw-laterale__item svg { flex: none; width: 15px; height: 15px; }
.cw-laterale__item:hover { background: var(--cw-survol); color: var(--cw-encre); }
.cw-laterale__item--actif {
  background: var(--cw-survol); color: var(--cw-encre); font-weight: var(--cw-g-demi);
  box-shadow: inset var(--cw-barre-active) 0 0 var(--cw-acide); /* marqueur acide n°1 */
}
.cw-laterale__compte { margin-left: auto; font: 500 9.5px/1 var(--cw-mono); color: var(--cw-texte-3); }
.cw-laterale__pied { margin-top: auto; border-top: var(--cw-filet-1) solid var(--cw-filet); padding: 9px 12px; display: flex; align-items: center; gap: 9px; }

.cw-entete {
  height: var(--cw-h-entete); background: var(--cw-plaque);
  border-bottom: var(--cw-filet-1) solid var(--cw-encre);
  display: flex; align-items: center; gap: 10px; padding: 0 20px;
  position: sticky; top: 0; z-index: 20;
}
.cw-ariane { display: flex; align-items: center; gap: 10px; font: var(--cw-t-libelle); color: var(--cw-texte-2); }
.cw-ariane__sep { color: var(--cw-desactive); }
.cw-ariane__actuel { color: var(--cw-encre); font-weight: var(--cw-g-demi); }
.cw-entete__actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.cw-principal { flex: 1; min-width: 0; padding: 16px 20px 28px; }

/* ── 2 · Boutons ───────────────────────────────────────────── */
.cw-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  white-space: nowrap; height: var(--cw-h-btn); padding: 0 16px;
  border: var(--cw-filet-1) solid transparent; border-radius: var(--cw-rayon);
  font: var(--cw-t-btn); cursor: pointer; text-decoration: none;
  transition: background var(--cw-duree-1) var(--cw-assouplissement);
  background: none; color: var(--cw-encre);
}
.cw-btn svg { flex: none; }
.cw-btn:focus-visible { box-shadow: var(--cw-focus); }
.cw-btn--primaire { background: var(--cw-encre); color: var(--cw-fond); }
.cw-btn--primaire svg { stroke: var(--cw-acide); }   /* marqueur acide n°2 : l'icône de l'action */
.cw-btn--primaire:hover { background: #2A2A27; }
.cw-btn--primaire:active { background: #000000; }
.cw-btn--secondaire { border-color: var(--cw-encre); }
.cw-btn--secondaire:hover { background: var(--cw-survol); }
.cw-btn--secondaire:active { background: var(--cw-enfonce); }
.cw-btn--fantome { padding: 0 12px; color: var(--cw-texte-2); }
.cw-btn--fantome:hover { background: var(--cw-survol); color: var(--cw-encre); }
.cw-btn--fantome:active { background: var(--cw-enfonce); }
.cw-btn--destructif { border-color: var(--cw-brique-bord); color: var(--cw-brique); }
.cw-btn--destructif:hover { background: var(--cw-brique-fond); }
.cw-btn--destructif:active { background: var(--cw-brique); color: #FFFFFF; border-color: var(--cw-brique); }
.cw-btn--petit { height: var(--cw-h-btn-petit); padding: 0 12px; font: var(--cw-t-btn-petit); }
.cw-btn:disabled, .cw-btn[aria-disabled="true"] {
  background: var(--cw-filet); border-color: transparent; color: var(--cw-desactive);
  cursor: not-allowed; pointer-events: none;
}
.cw-btn--secondaire:disabled, .cw-btn--destructif:disabled { background: none; border-color: var(--cw-filet); }
.cw-btn[aria-busy="true"] { pointer-events: none; color: transparent; position: relative; }
.cw-btn[aria-busy="true"]::after {
  content: ""; position: absolute; inset: 0; margin: auto; width: 14px; height: 14px;
  border: 2px solid var(--cw-desactive); border-top-color: var(--cw-encre);
  border-radius: 50%; animation: cw-rotation 700ms linear infinite;
}
.cw-btn--primaire[aria-busy="true"]::after { border-color: var(--cw-texte-3); border-top-color: var(--cw-acide); }
@keyframes cw-rotation { to { transform: rotate(360deg); } }

/* ── 3 · Champs ────────────────────────────────────────────── */
.cw-champ { display: flex; flex-direction: column; gap: 5px; }
.cw-champ__libelle { font: var(--cw-t-libelle); }
.cw-champ__saisie {
  height: var(--cw-h-champ); padding: 0 10px; width: 100%;
  background: var(--cw-plaque); color: var(--cw-encre);
  border: var(--cw-filet-1) solid var(--cw-bord-champ); border-radius: var(--cw-rayon);
  font: var(--cw-t-corps);
}
textarea.cw-champ__saisie { height: auto; min-height: 72px; padding: 8px 10px; resize: vertical; }
.cw-champ__saisie::placeholder { color: var(--cw-desactive); }
.cw-champ__saisie:focus-visible { border-color: var(--cw-encre); box-shadow: var(--cw-focus); outline: none; }
.cw-champ__saisie:disabled { background: var(--cw-surface); border-color: var(--cw-filet); color: var(--cw-desactive); cursor: not-allowed; }
.cw-champ__saisie--num { font: 500 11.5px/1 var(--cw-mono); font-variant-numeric: tabular-nums; text-align: right; }
.cw-champ__aide { font: var(--cw-t-legende); color: var(--cw-texte-3); }
.cw-champ--erreur .cw-champ__saisie, .cw-champ__saisie[aria-invalid="true"] { border-color: var(--cw-brique); }
.cw-champ__erreur { display: flex; gap: 5px; align-items: flex-start; font: var(--cw-t-legende); color: var(--cw-brique); }
.cw-champ__erreur svg { flex: none; margin-top: 2px; }
.cw-recherche { position: relative; }
.cw-recherche .cw-champ__saisie { padding-left: 30px; }
.cw-recherche__icone { position: absolute; left: 9px; top: 50%; transform: translateY(-50%); color: var(--cw-texte-3); pointer-events: none; }

/* Segmenté (filtres exclusifs) */
.cw-segmente { display: inline-flex; border: var(--cw-filet-1) solid var(--cw-encre); border-radius: var(--cw-rayon); overflow: hidden; }
.cw-segmente__option {
  display: inline-flex; align-items: center; justify-content: center; white-space: nowrap;
  height: 30px; padding: 0 10px; font: 500 11px/1 var(--cw-mono); cursor: pointer;
  background: var(--cw-plaque); border: 0; border-left: var(--cw-filet-1) solid var(--cw-filet); color: var(--cw-encre);
}
.cw-segmente__option:first-child { border-left: 0; }
.cw-segmente__option:hover { background: var(--cw-survol); }
.cw-segmente__option[aria-pressed="true"], .cw-segmente__option--actif { background: var(--cw-encre); color: var(--cw-fond); font-weight: var(--cw-g-demi); }
.cw-segmente__option:focus-visible { box-shadow: var(--cw-focus); position: relative; z-index: 1; }

/* ── 4 · Badges de statut d'arbitrage (5 états) ────────────── */
/* Forme + libellé toujours — la couleur ne porte jamais seule. */
.cw-statut {
  display: inline-flex; align-items: center; gap: 5px; white-space: nowrap;
  height: 20px; padding: 0 7px; border-radius: var(--cw-rayon);
  font: var(--cw-t-mono-badge); letter-spacing: var(--cw-ls-mono-badge); text-transform: uppercase;
  border: var(--cw-filet-1) solid var(--cw-bord-champ); background: var(--cw-surface); color: var(--cw-texte-2);
}
.cw-statut::before { content: ""; flex: none; width: 7px; height: 7px; }
.cw-statut--propose::before { border: 1.5px solid var(--cw-texte-2); background: var(--cw-plaque); } /* carré vide : point de départ */
.cw-statut--valide { border-color: var(--cw-vert-bord); background: var(--cw-vert-fond); color: var(--cw-vert); }
.cw-statut--valide::before { background: var(--cw-vert); clip-path: polygon(14% 52%, 40% 78%, 86% 22%, 74% 12%, 40% 56%, 26% 42%); width: 10px; height: 10px; border: 0; } /* coche */
.cw-statut--modifie { border-color: var(--cw-ambre-bord); background: var(--cw-ambre-fond); color: var(--cw-ambre); }
.cw-statut--modifie::before { background: var(--cw-ambre-pastille); border: 1px solid var(--cw-ambre); } /* carré plein bordé */
.cw-statut--rejete { border-color: var(--cw-brique-bord); background: var(--cw-brique-fond); color: var(--cw-brique); }
.cw-statut--rejete::before { background: var(--cw-brique); clip-path: polygon(20% 8%, 50% 38%, 80% 8%, 92% 20%, 62% 50%, 92% 80%, 80% 92%, 50% 62%, 20% 92%, 8% 80%, 38% 50%, 8% 20%); width: 9px; height: 9px; border: 0; } /* croix */
.cw-statut--differe { border-color: var(--cw-bord-champ); background: var(--cw-plaque); color: var(--cw-texte-2); }
.cw-statut--differe::before { border: 1.5px solid var(--cw-texte-2); border-radius: 50%; background: linear-gradient(var(--cw-texte-2), var(--cw-texte-2)) 50% 20%/1.5px 34% no-repeat, linear-gradient(var(--cw-texte-2), var(--cw-texte-2)) 62% 48%/26% 1.5px no-repeat; } /* cadran */

/* Drapeau V1 — marqueur discret, distinct du statut */
.cw-v1 {
  display: inline-flex; align-items: center; white-space: nowrap;
  height: 16px; padding: 0 5px; border-radius: var(--cw-rayon);
  border: var(--cw-filet-1) solid var(--cw-encre); background: var(--cw-plaque);
  font: 700 8px/1 var(--cw-mono); letter-spacing: 0.05em; color: var(--cw-encre);
}
.cw-v1--hors { border-color: var(--cw-bord-champ); color: var(--cw-texte-3); border-style: dashed; }

/* ── 5 · Compteur de séance & progression vers le GO ───────── */
.cw-compteur { display: flex; align-items: stretch; gap: 0; border: var(--cw-filet-1) solid var(--cw-encre); border-radius: var(--cw-rayon); background: var(--cw-plaque); }
.cw-compteur__bloc { padding: 10px 16px; border-right: var(--cw-filet-1) solid var(--cw-filet); }
.cw-compteur__bloc:last-child { border-right: 0; }
.cw-compteur__valeur { font: var(--cw-t-grand-nombre); letter-spacing: var(--cw-ls-nombre); font-variant-numeric: tabular-nums; }
.cw-compteur__valeur small { font: 500 12px/1 var(--cw-mono); color: var(--cw-texte-3); }
.cw-compteur__libelle { font: var(--cw-t-mono-libelle); letter-spacing: var(--cw-ls-mono-libelle); text-transform: uppercase; color: var(--cw-texte-3); margin-top: 3px; }
.cw-progression { display: flex; flex-direction: column; gap: 5px; }
.cw-progression__piste { height: 8px; border: var(--cw-filet-1) solid var(--cw-encre); border-radius: var(--cw-rayon); overflow: hidden; background: var(--cw-plaque); }
.cw-progression__fait { display: block; height: 100%; background: var(--cw-encre); transition: width var(--cw-duree-2) var(--cw-assouplissement); }
.cw-progression--complete .cw-progression__fait { background: var(--cw-acide); box-shadow: inset 0 0 0 1px var(--cw-encre); } /* marqueur héros : GO atteignable */
.cw-progression__legende { display: flex; justify-content: space-between; font: var(--cw-t-mono-ref); color: var(--cw-texte-3); }

/* ── 6 · Tableau des arbitrages ────────────────────────────── */
.cw-table-boite { background: var(--cw-plaque); border: var(--cw-filet-1) solid var(--cw-encre); border-radius: var(--cw-rayon); overflow-x: auto; } /* la table défile horizontalement sous 1280px au lieu d’être rognée */
.cw-table-outils { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-bottom: var(--cw-filet-1) solid var(--cw-filet); flex-wrap: wrap; }
.cw-filtre-chip {
  display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; height: 26px; padding: 0 8px;
  background: var(--cw-survol); border: var(--cw-filet-1) solid var(--cw-bord-champ); border-radius: var(--cw-rayon);
  font: 500 10.5px/1 var(--cw-mono); cursor: pointer;
}
.cw-filtre-chip:hover { border-color: var(--cw-encre); }
.cw-table { width: 100%; border-collapse: collapse; }
.cw-table th {
  padding: 7px 8px; text-align: left; font: var(--cw-t-mono-colonne);
  letter-spacing: var(--cw-ls-mono-colonne); text-transform: uppercase; color: var(--cw-texte-2);
  border-bottom: var(--cw-regle-2) solid var(--cw-encre); white-space: nowrap;
}
.cw-table th.cw-t-num, .cw-table td.cw-t-num { text-align: right; }
.cw-table th[aria-sort] { cursor: pointer; color: var(--cw-encre); background: var(--cw-surface); }
.cw-table th[aria-sort] .cw-tri { display: inline-block; margin-left: 3px; }
.cw-table td { padding: 0 8px; font: var(--cw-t-cellule); border-bottom: var(--cw-filet-1) solid var(--cw-filet); white-space: nowrap; }
.cw-table td.cw-t-chiffre { font: var(--cw-t-chiffre); font-variant-numeric: tabular-nums; }
.cw-table td.cw-t-ref { font: var(--cw-t-mono-ref); color: var(--cw-texte-3); }
.cw-table tbody tr { transition: background var(--cw-duree-1) var(--cw-assouplissement); }
.cw-table tbody tr:hover { background: var(--cw-survol); }
.cw-table tbody tr:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--cw-encre); }
.cw-table tbody tr[aria-selected="true"] { background: var(--cw-survol); box-shadow: inset var(--cw-barre-active) 0 0 var(--cw-acide); }
.cw-table tfoot td { border-top: var(--cw-regle-2) solid var(--cw-encre); border-bottom: 0; font: 700 11px/var(--cw-h-ligne-total) var(--cw-sans); }
.cw-table .cw-ligne-cible { font-weight: var(--cw-g-moyen); text-decoration: none; }
.cw-table .cw-ligne-cible:hover { text-decoration: underline; text-underline-offset: 3px; }

/* Pagination */
.cw-pagination { display: inline-flex; border: var(--cw-filet-1) solid var(--cw-encre); border-radius: var(--cw-rayon); overflow: hidden; }
.cw-pagination__page {
  display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px;
  font: 500 11px/1 var(--cw-mono); border-left: var(--cw-filet-1) solid var(--cw-filet);
  background: var(--cw-plaque); cursor: pointer; border-top: 0; border-right: 0; border-bottom: 0; color: var(--cw-encre);
}
.cw-pagination__page:first-child { border-left: 0; }
.cw-pagination__page:hover { background: var(--cw-survol); }
.cw-pagination__page[aria-current="page"] { background: var(--cw-encre); color: var(--cw-fond); font-weight: var(--cw-g-demi); }

/* ── 7 · Panneau de décision ───────────────────────────────── */
.cw-decision { background: var(--cw-plaque); border: var(--cw-filet-1) solid var(--cw-encre); border-radius: var(--cw-rayon); padding: 14px 16px; }
.cw-decision__titre { font: var(--cw-t-mono-libelle); letter-spacing: var(--cw-ls-mono-libelle); text-transform: uppercase; color: var(--cw-texte-3); }
.cw-decision__choix { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 10px; }
.cw-decision__statut {
  display: flex; align-items: center; justify-content: center; gap: 6px; white-space: nowrap;
  height: 34px; border: var(--cw-filet-1) solid var(--cw-bord-champ); border-radius: var(--cw-rayon);
  background: var(--cw-plaque); font: var(--cw-t-btn-petit); cursor: pointer; color: var(--cw-encre);
}
.cw-decision__statut:hover { background: var(--cw-survol); border-color: var(--cw-encre); }
.cw-decision__statut[aria-pressed="true"] { background: var(--cw-encre); color: var(--cw-fond); border-color: var(--cw-encre); font-weight: var(--cw-g-demi); }
.cw-decision__statut:focus-visible { box-shadow: var(--cw-focus); }
/* Contrainte métier : MODIFIÉ et REJETÉ exigent une note non vide.
   Le serveur (ou htmx) pose data-note-requise="true" quand le statut
   choisi l'exige ; le bouton reste :disabled tant que la note est vide. */
.cw-decision__exigence { display: none; }
.cw-decision[data-note-requise="true"] .cw-decision__exigence {
  display: flex; gap: 5px; align-items: flex-start; font: var(--cw-t-legende); color: var(--cw-ambre);
}
.cw-decision[data-note-requise="true"] .cw-champ__saisie { border-color: var(--cw-ambre-bord); }
.cw-decision__pied { display: flex; align-items: center; gap: 10px; margin-top: 12px; border-top: var(--cw-filet-1) solid var(--cw-filet); padding-top: 12px; }
.cw-decision__identite { font: var(--cw-t-mono-ref); color: var(--cw-texte-3); }

/* ── 8 · Porte du GO — 3 états ─────────────────────────────── */
.cw-go { border-radius: var(--cw-rayon); padding: 16px 18px; display: flex; align-items: center; gap: 14px; }
.cw-go__titre { font: var(--cw-t-titre-bloc); letter-spacing: var(--cw-ls-titre); }
.cw-go__detail { font: var(--cw-t-secondaire); }
.cw-go--verrouillee { background: var(--cw-plaque); border: var(--cw-filet-1) dashed var(--cw-bord-champ); color: var(--cw-texte-2); }
.cw-go--verrouillee .cw-go__detail { color: var(--cw-texte-3); }
.cw-go--disponible { background: var(--cw-encre); color: var(--cw-fond); border: var(--cw-filet-1) solid var(--cw-encre); }
.cw-go--disponible .cw-go__detail { color: #C9C7BC; }
.cw-go--prononcee { background: var(--cw-vert-fond); border: var(--cw-filet-1) solid var(--cw-vert-bord); color: var(--cw-vert); }
.cw-go__date { font: var(--cw-t-mono-ref); }

/* ── 9 · Fil de commentaires à deux voix ───────────────────── */
.cw-fil { display: flex; flex-direction: column; }
.cw-comm { display: flex; gap: 10px; padding: 10px 0; border-bottom: var(--cw-filet-1) solid var(--cw-filet); }
.cw-comm__avatar {
  flex: none; width: 22px; height: 22px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; font: 600 8.5px/1 var(--cw-sans);
}
.cw-comm--actuaire .cw-comm__avatar { background: var(--cw-encre); color: var(--cw-fond); }
.cw-comm--porteur .cw-comm__avatar { background: var(--cw-plaque); color: var(--cw-encre); border: 1.5px solid var(--cw-encre); }
.cw-comm--actuaire .cw-comm__corps { border-left: 2px solid var(--cw-encre); padding-left: 10px; }
.cw-comm--porteur .cw-comm__corps { border-left: 2px solid var(--cw-filet); padding-left: 10px; }
.cw-comm__meta { display: flex; gap: 8px; align-items: baseline; }
.cw-comm__auteur { font: 600 11.5px/15px var(--cw-sans); }
.cw-comm__role { font: var(--cw-t-mono-badge); letter-spacing: var(--cw-ls-mono-badge); text-transform: uppercase; color: var(--cw-texte-3); }
.cw-comm__quand { margin-left: auto; font: var(--cw-t-mono-ref); color: var(--cw-texte-3); }
.cw-comm__texte { font: var(--cw-t-corps); color: var(--cw-texte-2); margin-top: 3px; }

/* ── 10 · Ordre de séance ──────────────────────────────────── */
.cw-ordre { display: flex; flex-direction: column; }
.cw-ordre__ligne {
  display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 0 12px 0 8px;
  background: var(--cw-plaque); border-bottom: var(--cw-filet-1) solid var(--cw-filet);
}
.cw-ordre__ligne:hover { background: var(--cw-survol); }
.cw-ordre__ligne[aria-grabbed="true"] { background: var(--cw-survol); box-shadow: inset 0 0 0 2px var(--cw-encre); }
.cw-ordre__poignee { flex: none; cursor: grab; color: var(--cw-desactive); padding: 4px; border: 0; background: none; border-radius: var(--cw-rayon); }
.cw-ordre__poignee:hover { color: var(--cw-encre); }
.cw-ordre__poignee:active { cursor: grabbing; }
.cw-ordre__rang { flex: none; width: 30px; font: var(--cw-t-chiffre-fort); font-variant-numeric: tabular-nums; text-align: right; }
.cw-ordre--fige .cw-ordre__poignee { visibility: hidden; } /* rôle actuaire : lecture seule */

/* ── 11 · Journal append-only ──────────────────────────────── */
.cw-journal { display: flex; flex-direction: column; }
.cw-journal__ligne { display: flex; gap: 12px; padding: 9px 0; border-bottom: var(--cw-filet-1) solid var(--cw-filet); align-items: baseline; }
.cw-journal__quand { flex: none; width: 132px; font: var(--cw-t-mono-ref); color: var(--cw-texte-3); }
.cw-journal__quoi { font: var(--cw-t-libelle); }
.cw-journal__contexte { font: var(--cw-t-mono-ref); color: var(--cw-texte-3); }
.cw-delta { font: var(--cw-t-mono-ref); color: var(--cw-texte-2); }
.cw-delta__ancien { text-decoration: line-through; text-decoration-color: var(--cw-brique); color: var(--cw-texte-3); }
.cw-delta__fleche { color: var(--cw-texte-3); padding: 0 3px; }
.cw-delta__nouveau { font-weight: var(--cw-g-gras); color: var(--cw-encre); }

/* ── 12 · Proposition markdown rendue (.cw-md) ─────────────── */
.cw-md { font: 400 13px/21px var(--cw-sans); color: var(--cw-encre); max-width: 74ch; }
.cw-md > :first-child { margin-top: 0; }
.cw-md h1, .cw-md h2 { font: 700 16px/22px var(--cw-sans); letter-spacing: var(--cw-ls-titre); margin: 20px 0 8px; border-top: var(--cw-regle-2) solid var(--cw-encre); padding-top: 10px; }
.cw-md h3 { font: 700 13px/18px var(--cw-sans); margin: 16px 0 6px; }
.cw-md h4 { font: var(--cw-t-mono-libelle); letter-spacing: var(--cw-ls-mono-libelle); text-transform: uppercase; color: var(--cw-texte-2); margin: 14px 0 6px; }
.cw-md p { margin: 8px 0; }
.cw-md strong { font-weight: var(--cw-g-demi); }
.cw-md ul, .cw-md ol { margin: 8px 0; padding-left: 22px; }
.cw-md li { margin: 4px 0; }
.cw-md li::marker { color: var(--cw-texte-3); }
.cw-md code {
  font: 400 11px/1 var(--cw-mono); background: var(--cw-surface);
  border: var(--cw-filet-1) solid var(--cw-filet); border-radius: var(--cw-rayon); padding: 2px 5px;
}
.cw-md pre { background: var(--cw-surface); border: var(--cw-filet-1) solid var(--cw-filet); border-radius: var(--cw-rayon); padding: 10px 12px; overflow-x: auto; }
.cw-md pre code { background: none; border: 0; padding: 0; font: 400 11px/17px var(--cw-mono); }
.cw-md table { width: 100%; border-collapse: collapse; margin: 10px 0; }
.cw-md th { text-align: left; font: var(--cw-t-mono-colonne); letter-spacing: var(--cw-ls-mono-colonne); text-transform: uppercase; color: var(--cw-texte-2); border-bottom: var(--cw-regle-2) solid var(--cw-encre); padding: 5px 8px 5px 0; }
.cw-md td { font: 400 12px/26px var(--cw-sans); border-bottom: var(--cw-filet-1) solid var(--cw-filet); padding: 0 8px 0 0; }
.cw-md td.cw-t-num { font: 500 10.5px/26px var(--cw-mono); font-variant-numeric: tabular-nums; text-align: right; }
.cw-md blockquote { margin: 10px 0; padding: 2px 0 2px 10px; border-left: 2px solid var(--cw-encre); color: var(--cw-texte-2); }
.cw-md hr { border: 0; border-top: var(--cw-filet-1) solid var(--cw-filet); margin: 14px 0; }
/* Mise en évidence — appliquée par le rendu serveur, pas par le rédacteur : */
.cw-md .cw-montant { font: 500 11.5px/1 var(--cw-mono); font-variant-numeric: tabular-nums; background: var(--cw-surface); border: var(--cw-filet-1) solid var(--cw-filet); border-radius: var(--cw-rayon); padding: 1px 5px; white-space: nowrap; }
.cw-md .cw-ident { font: 600 10.5px/1 var(--cw-mono); letter-spacing: 0.03em; text-decoration: underline; text-decoration-color: var(--cw-bord-champ); text-underline-offset: 3px; white-space: nowrap; }

/* ── 13 · Modale de confirmation irréversible ──────────────── */
.cw-scrim { position: fixed; inset: 0; background: rgba(17, 17, 16, 0.4); z-index: 50; display: flex; align-items: center; justify-content: center; padding: 24px; }
.cw-modale { width: 440px; max-width: 100%; background: var(--cw-plaque); border: var(--cw-filet-1) solid var(--cw-encre); border-radius: var(--cw-rayon); padding: 16px 18px; }
.cw-modale--irreversible { border-color: var(--cw-brique); }
.cw-modale__titre { font: var(--cw-t-sous-titre); }
.cw-modale--irreversible .cw-modale__titre { color: var(--cw-brique); }
.cw-modale__corps { font: var(--cw-t-corps); color: var(--cw-texte-2); margin-top: 8px; }
.cw-modale__actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }

/* ── 14 · Toasts ───────────────────────────────────────────── */
.cw-toasts { position: fixed; right: 16px; bottom: 16px; display: flex; flex-direction: column; gap: 8px; z-index: 60; }
.cw-toast { display: flex; align-items: center; gap: 9px; padding: 10px 12px; border-radius: var(--cw-rayon); font: 500 11.5px/15px var(--cw-sans); animation: cw-toast-entree var(--cw-duree-2) var(--cw-assouplissement); }
.cw-toast--succes { background: var(--cw-encre); color: var(--cw-fond); }
.cw-toast--succes svg { stroke: var(--cw-acide); } /* marqueur validation */
.cw-toast--info { background: var(--cw-plaque); border: var(--cw-filet-1) solid var(--cw-encre); }
.cw-toast--erreur { background: var(--cw-plaque); border: var(--cw-filet-1) solid var(--cw-brique); color: var(--cw-brique); }
@keyframes cw-toast-entree { from { opacity: 0; transform: translateY(4px); } }

/* ── 15 · États vides, squelettes, [aria-busy] ─────────────── */
.cw-vide { background: var(--cw-plaque); border: var(--cw-filet-1) solid var(--cw-encre); border-radius: var(--cw-rayon); padding: 22px 18px; text-align: center; }
.cw-vide__titre { font: var(--cw-t-sous-titre); margin-top: 8px; }
.cw-vide__texte { font: var(--cw-t-secondaire); color: var(--cw-texte-2); margin-top: 4px; }
.cw-squelette { background: var(--cw-survol); border-radius: var(--cw-rayon); min-height: 8px; } /* statique — pas de shimmer (D6) */
.cw-squelette--texte { height: 8px; }
.cw-squelette--ligne { height: var(--cw-h-ligne); }
[aria-busy="true"]:not(.cw-btn) { opacity: 0.55; pointer-events: none; }
/* Zones htmx pendant échange : la classe .htmx-request est posée par htmx */
.htmx-request.cw-zone, .cw-zone.htmx-request { opacity: 0.55; pointer-events: none; }

/* ── 16 · Impression — journal & corpus ────────────────────── */
@media print {
  body { background: #FFFFFF; font: 400 10.5pt/1.5 var(--cw-sans); }
  .cw-canevas { background: #FFFFFF; }
  .cw-laterale, .cw-entete, .cw-table-outils, .cw-toasts, .cw-btn, .cw-pagination { display: none !important; }
  .cw-principal { padding: 0; }
  .cw-table-boite, .cw-decision, .cw-vide, .cw-modale { border: none; }
  .cw-journal__ligne, .cw-comm { break-inside: avoid; }
  .cw-md { max-width: none; font-size: 10.5pt; line-height: 1.55; }
  .cw-md h1, .cw-md h2 { break-after: avoid; }
  .cw-statut, .cw-v1 { border-width: 1pt; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  a { text-decoration: none; color: #111110; }
}
