/* Subventis : feuille de l'application. Couleurs, tailles de police, espacements, rayons et ombres : uniquement les
   variables de theme.css, chargé avant ce fichier (test/theme.test.js le vérifie). Seuls les points de rupture des
   @media sont écrits en clair. Style plat et calme : fond clair, cartes blanches à filet fin et ombre très légère,
   une seule couleur d'accent (boutons principaux, liens, focus). */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--fond);
  color: var(--texte);
  font-family: var(--police);
  font-size: var(--t-16);
  font-weight: 400;
  line-height: var(--interligne);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
h1, h2, h3 { line-height: var(--interligne-titre); }
a { color: var(--accent); text-underline-offset: 3px; }
button, input, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; color: inherit; }
/* Focus clavier visible partout : contour de 2 px couleur d'accent (un contour, pas une ombre : il reste dessiné en
   contraste forcé). */
:focus-visible { outline: var(--focus) solid var(--accent); outline-offset: var(--focus-decalage); }
:focus:not(:focus-visible) { outline: none; }
a, button, input, select, textarea, .bouton, .tableau-dossiers td { transition: background-color var(--duree) var(--courbe), border-color var(--duree) var(--courbe), color var(--duree) var(--courbe), opacity var(--duree) var(--courbe); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* ---- Cadre : menu latéral à gauche ; barre d'outils et contenu centré à droite ---- */
.cadre { display: grid; grid-template-columns: var(--menu) minmax(0, 1fr); min-height: 100vh; }
.menu {
  position: sticky; top: 0; height: 100vh; z-index: 10; overflow-y: auto;
  display: flex; flex-direction: column; gap: var(--e-24);
  padding: var(--e-24) var(--e-16) var(--e-16);
  background: var(--carte);
  border-right: 1px solid var(--bordure);
}
.menu-logo { display: block; width: 132px; margin: 0 var(--e-8); }
.logo-menu, .logo-carte { display: block; width: 150px; height: auto; }
.logo-menu { width: 132px; }
.bouton-nouveau { gap: var(--e-8); }
.bouton-nouveau .icone { width: 16px; height: 16px; }
.icone { flex: none; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.menu-nav { display: grid; gap: var(--e-4); }
.menu-intitule { margin: 0 0 var(--e-4); padding: 0 var(--e-12); font-size: var(--t-12); font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--texte-secondaire); }
.menu-nav a {
  display: flex; align-items: center; gap: var(--e-12);
  min-height: var(--hauteur-bouton-petit); padding: 0 var(--e-12);
  border-radius: var(--rayon-petit);
  color: var(--texte); font-size: var(--t-14); font-weight: 500; text-decoration: none;
}
.menu-nav a .icone { color: var(--texte-secondaire); }
.menu-nav a > span:first-of-type { flex: 1; min-width: 0; }
.menu-nav a:hover { background: var(--survol); }
.menu-nav a[aria-current='page'] { background: var(--selection); font-weight: 600; }
.menu-nav a[aria-current='page'] .icone { color: var(--accent); }
/* Compteur du menu : gris, aligné à droite, sans pastille pleine. */
.pastille-nombre { margin-left: auto; color: var(--texte-secondaire); font-size: var(--t-12); font-weight: 600; }
.menu-pied { margin-top: auto; display: grid; gap: var(--e-4); padding: 0 var(--e-12); font-size: var(--t-13); }
.menu-nom { margin: 0; font-weight: 600; font-size: var(--t-14); color: var(--texte); }
.session { margin: 0; }
/* Bouton présenté comme un lien (« Se déconnecter », « Annuler la dernière décision », « Lire la suite ») : c'est un
   bouton, donc 36 px de haut comme les petits boutons. */
.lien {
  display: inline-flex; align-items: center; min-height: var(--hauteur-bouton-petit);
  padding: 0; border: 0; background: none;
  color: var(--accent); font: inherit; font-weight: 500; cursor: pointer; white-space: nowrap;
  text-decoration: underline; text-underline-offset: 3px;
}
.lien:hover, .lien-sombre:hover { text-decoration-thickness: 2px; }
.signature { margin: var(--e-8) 0 0; font-size: var(--t-12); color: var(--texte-tertiaire); }

/* Barre d'outils : collée en haut du contenu, alignée sur la colonne centrée. Le titre de la page y apparaît en petit
   quand le grand titre sort de l'écran (js/commun.js). */
.contenu { min-width: 0; display: flex; flex-direction: column; }
.barre-outils {
  position: sticky; top: 0; z-index: 8;
  display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(240px, 1fr); align-items: center; gap: var(--e-16);
  min-height: var(--barre); padding: var(--e-8) max(var(--marge), calc((100% - var(--largeur)) / 2));
  background: var(--fond);
  border-bottom: 1px solid var(--bordure);
}
.barre-titre {
  grid-column: 2; margin: 0; max-width: 46ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: var(--t-14); font-weight: 600; color: var(--texte);
  opacity: 0;
  transition: opacity var(--duree) var(--courbe);
}
.barre-titre-visible .barre-titre { opacity: 1; }
.barre-outils .recherche { grid-column: 3; justify-self: end; position: relative; display: flex; align-items: center; width: 100%; max-width: 300px; }
.recherche .icone-loupe { position: absolute; left: var(--e-12); width: 16px; height: 16px; color: var(--texte-secondaire); pointer-events: none; }
.recherche input {
  width: 100%; height: var(--hauteur-bouton-petit); padding: 0 var(--e-12) 0 var(--e-32);
  border: 1px solid var(--bordure-champ); border-radius: var(--rayon-petit); background: var(--carte);
  font-size: var(--t-16); color: var(--texte);
}
.recherche input::placeholder { color: var(--texte-tertiaire); }
.recherche input::-webkit-search-decoration { -webkit-appearance: none; }

/* Page : contenu centré, 1280 px au plus, marges latérales de 24 px. */
.page { min-width: 0; width: 100%; max-width: calc(var(--largeur) + 2 * var(--marge)); margin: 0 auto; padding: var(--e-32) var(--marge) var(--e-48); }
.entete { margin-bottom: var(--e-32); }

/* Page seule (connexion, refus) */
.fond-seul { background: var(--fond); }
.seul { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: var(--e-24); padding: var(--e-48) var(--e-16); }
.carte-seule {
  width: min(440px, 100%);
  display: grid; justify-items: center; gap: var(--e-16); text-align: center;
  padding: var(--e-48) var(--e-32);
  background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte);
}
.carte-seule .logo-carte { margin-bottom: var(--e-8); }
.carte-seule .chapo { margin: 0; }
.titre-carte { margin: 0; font-size: var(--t-20); font-weight: 600; line-height: var(--interligne-titre); }

/* Titres */
.surtitre { margin: 0 0 var(--e-8); font-size: var(--t-12); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--texte-secondaire); }
.titre-xl, .titre-l { margin: 0 0 var(--e-8); font-size: var(--t-24); font-weight: 600; line-height: var(--interligne-titre); letter-spacing: -0.01em; }
.titre-m { margin: 0; font-size: var(--t-20); font-weight: 600; line-height: var(--interligne-titre); }
.chapo { margin: var(--e-8) 0 var(--e-24); color: var(--texte-secondaire); font-size: var(--t-16); max-width: 70ch; }
.entete .chapo { margin-bottom: 0; }
.chapo strong { color: var(--texte); font-weight: 600; }

/* Boutons : 40 px de haut, 36 px pour les petits ; rayon de 6 px. Le bouton principal de l'écran : fond d'accent,
   texte blanc. « bouton-sombre » et « bouton-or » en sont des alias. */
.bouton {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--e-8);
  min-height: var(--hauteur-bouton); padding: 0 var(--e-16);
  border: 1px solid var(--bordure); border-radius: var(--rayon-petit);
  background: var(--carte); color: var(--texte);
  font-size: var(--t-14); font-weight: 500; line-height: var(--interligne-titre);
  text-decoration: none; white-space: nowrap; cursor: pointer;
}
.bouton:hover { background: var(--survol); }
.bouton:disabled { cursor: not-allowed; opacity: 0.5; }
.bouton[aria-busy='true'] { cursor: progress; opacity: 0.7; }
.bouton-principal, .bouton-sombre, .bouton-or { background: var(--accent); border-color: var(--accent); color: var(--carte); font-weight: 600; }
.bouton-principal:hover, .bouton-sombre:hover, .bouton-or:hover { background: var(--accent-survol); border-color: var(--accent-survol); }
.bouton-principal:disabled:hover, .bouton-sombre:disabled:hover, .bouton-or:disabled:hover { background: var(--accent); }
.bouton-large { width: 100%; }
.bouton-petit { min-height: var(--hauteur-bouton-petit); padding: 0 var(--e-12); }

/* Liens : couleur d'accent, soulignés ; cible de 24 px de haut au moins. */
.lien-sombre { display: inline-flex; align-items: center; min-height: var(--cible); color: var(--accent); font-size: var(--t-14); font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.retour { display: inline-flex; align-items: center; min-height: var(--cible); margin-bottom: var(--e-16); color: var(--accent); font-size: var(--t-14); font-weight: 500; text-decoration: none; }
.retour:hover { text-decoration: underline; }

/* Alerte (erreur d'un formulaire, refus) */
.alerte { margin: 0 0 var(--e-24); padding: var(--e-12) var(--e-16); border-radius: var(--rayon-carte); background: var(--rouge-fond); color: var(--rouge); font-size: var(--t-16); font-weight: 500; }
.alerte .lien-sombre { color: var(--rouge); font-size: inherit; }

/* Tableau simple (page Aide, Santé) */
.tableau { width: 100%; border-collapse: collapse; background: var(--carte); font-size: var(--t-14); }
.tableau th, .tableau td { text-align: left; padding: var(--e-12) var(--e-16); border-bottom: 1px solid var(--bordure); vertical-align: top; }
.tableau th { font-size: var(--t-13); font-weight: 600; color: var(--texte-secondaire); }
.tableau tr:last-child td { border-bottom: 0; }
.page > .tableau { border-collapse: separate; border-spacing: 0; border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); overflow: hidden; }
.detail { color: var(--texte-secondaire); font-size: var(--t-14); word-break: break-word; }

/* État d'une liaison (Santé) : un point et un libellé. */
.pastille { display: inline-flex; align-items: center; gap: var(--e-8); font-size: var(--t-14); font-weight: 600; white-space: nowrap; }
.pastille::before { content: ''; width: 8px; height: 8px; border-radius: var(--rayon-rond); background: currentColor; }
.pastille-ok { color: var(--vert); }
.pastille-ko { color: var(--rouge); }
.pastille-attente { color: var(--orange); }

/* Textes secondaires */
/* Rôles de l'échelle : métadonnée d'une cellule ou d'une ligne (« par l’utilisatrice », « dont 3 vérifiées ») en 13 px ;
   phrase à lire ou à suivre (paragraphe, nombre de lancements sous le bouton) en 16 px, comme le texte courant. */
.sous { display: block; margin-top: var(--e-4); color: var(--texte-secondaire); font-size: var(--t-13); }
.sous-inline { color: var(--texte-secondaire); font-size: var(--t-13); }
p.sous, .sous-inline[data-quota] { font-size: var(--t-16); }
.sous-alerte { color: var(--rouge); }
.code { display: block; margin-top: var(--e-4); color: var(--texte-secondaire); font-size: var(--t-12); }
.statut .code { display: inline; margin: 0; }
/* Heure de lecture du classeur et bouton « Actualiser » (écran de validation). */
.lecture { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e-8); margin: var(--e-8) 0 0; color: var(--texte-secondaire); font-size: var(--t-13); }

/* Points de statut : un repère à côté du libellé, jamais la couleur seule. Statuts ordinaires (clôturé, active,
   retirée…) en neutre, point gris foncé ; les couleurs d'état restent à l'erreur. */
.puce { flex: none; width: 8px; height: 8px; border-radius: var(--rayon-rond); background: var(--texte-secondaire); }
.puce-neutre { background: var(--texte-secondaire); }
.puce-a-valider { background: var(--accent); }
.puce-rouge { background: var(--rouge); }
.puce-inconnu { background: none; border: 1px solid var(--texte-tertiaire); }
.statut { display: inline-flex; align-items: center; gap: var(--e-8); font-weight: 500; white-space: nowrap; }
.statut-rouge { color: var(--rouge); }
.statut-retiree { color: var(--texte-secondaire); }
.num, .col-nombre { text-align: right !important; white-space: nowrap; }
.nombre { font-weight: 600; }
.date { color: var(--texte-secondaire); }
.date time { color: inherit; }

/* Cartes, états vides, panneaux d'erreur */
.carte { min-width: 0; padding: var(--e-24); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); }
.titre-carte-section { margin: 0 0 var(--e-16); font-size: var(--t-18); font-weight: 600; line-height: var(--interligne-titre); }
.vide, .panneau-erreur {
  padding: var(--e-48) var(--e-32);
  background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte);
}
.vide { display: grid; justify-items: center; gap: var(--e-8); text-align: center; }
.vide .icone-vide { width: 40px; height: 40px; margin-bottom: var(--e-4); color: var(--texte-tertiaire); stroke-width: 1.25; }
.vide .titre-m { margin: 0; font-size: var(--t-18); }
.vide .chapo { margin: 0; }
.vide-filtre { padding: var(--e-32) var(--e-24); }
.panneau-erreur { padding: var(--e-24); border-color: var(--rouge-fond); }
.panneau-erreur .titre-m { margin-bottom: var(--e-8); color: var(--rouge); font-size: var(--t-18); }
.panneau-erreur .chapo { margin: 0 0 var(--e-16); }
.visuellement-cache { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---- Accueil ---- */
.entete-ligne { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--e-24); flex-wrap: wrap; }
.entete-ligne .titre-xl, .entete-ligne .titre-l { margin-bottom: 0; }
.entete-ligne > div { flex: 1 1 420px; min-width: 0; }
.entete-ligne > .bouton, .entete-ligne > .recherche, .entete-ligne > .progression { flex: none; }
/* Actions de l'en-tête (lot n° 2 : jusqu'à quatre boutons et un compteur) : elles se replient dans la largeur au lieu de
   déborder ; sans effet quand elles tiennent sur une ligne. */
.entete-ligne > .actions-entete { flex: 0 1 auto; max-width: 100%; justify-content: flex-end; }
.compteur-mois { flex-basis: 100%; text-align: right; }
.bandeau {
  display: flex; align-items: center; justify-content: space-between; gap: var(--e-24); flex-wrap: wrap;
  margin-bottom: var(--e-24); padding: var(--e-16) var(--e-24);
  background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte);
}
.bandeau p { margin: 0; font-size: var(--t-16); font-weight: 500; }
.bandeau strong { font-weight: 600; }
.tuiles-groupes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--e-16); margin-bottom: var(--e-32); }
.tuile-groupe { display: grid; gap: var(--e-4); padding: var(--e-16) var(--e-24); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); }
.tuile-chiffre { font-size: var(--t-24); font-weight: 600; line-height: var(--interligne-titre); }
.tuile-titre { font-size: var(--t-13); color: var(--texte-secondaire); }
/* Tuile à zéro : chiffre en gris. */
.tuile-zero .tuile-chiffre { color: var(--texte-tertiaire); }

/* Contrôle segmenté : piste grise, segment choisi en blanc ; curseur blanc qui glisse (js/segments.js). Sans script,
   le segment choisi prend lui-même le fond blanc. */
.vues { position: relative; display: inline-flex; gap: var(--e-4); margin-bottom: var(--e-16); padding: var(--e-4); border-radius: var(--rayon-carte); background: var(--survol); border: 1px solid var(--bordure); }
.vues a {
  position: relative; z-index: 1; display: inline-flex; align-items: center; gap: var(--e-4);
  min-height: 32px; padding: 0 var(--e-12); border-radius: var(--rayon-petit); border: 1px solid transparent;
  color: var(--texte); font-size: var(--t-14); font-weight: 500; text-decoration: none; white-space: nowrap;
}
.vues a:hover { color: var(--texte); background: var(--carte); }
.vues a[aria-current='page'] { background: var(--carte); border-color: var(--bordure); font-weight: 600; }
.vues.segments-actifs a[aria-current='page'] { background: none; border-color: transparent; }
.vues.segments-actifs a:hover { background: none; }
.segment-curseur { position: absolute; z-index: 0; top: var(--e-4); bottom: var(--e-4); left: 0; width: 0; border-radius: var(--rayon-petit); background: var(--carte); border: 1px solid var(--bordure); transition: transform var(--duree) var(--courbe), width var(--duree) var(--courbe); }
.vue-nombre { color: var(--texte-secondaire); font-weight: 500; }

/* ---- Listes (Accueil, tous les dossiers, aides à valider, base d'aides) : le <table> reste (lecteurs d'écran), dans
   une carte blanche qui défile seule si besoin (la page, jamais). Lignes de 56 px au moins, filet fin, survol léger ;
   flèche › si la ligne mène quelque part (le lien principal couvre alors la ligne). ---- */
.liste { min-width: 0; }
.defile { position: relative; overflow-x: auto; max-width: 100%; background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); }
.defile .tableau { border: 0; border-radius: 0; }
.tableau-dossiers { border-collapse: separate; border-spacing: 0; }
.tableau-dossiers th {
  padding: var(--e-12) var(--e-16); border-bottom: 1px solid var(--bordure);
  font-size: var(--t-13); font-weight: 500; color: var(--texte-secondaire); white-space: nowrap; vertical-align: bottom;
}
.tableau-dossiers td {
  height: 56px; padding: var(--e-12) var(--e-16); border-bottom: 1px solid var(--bordure); vertical-align: middle;
  font-size: var(--t-14); white-space: nowrap; background: var(--carte);
}
/* Marges intérieures resserrées entre colonnes (8 px), 16 px aux bords de la carte : les listes tiennent à 1280 px. */
.tableau-dossiers th, .tableau-dossiers td { padding-left: var(--e-8); padding-right: var(--e-8); }
.tableau-dossiers th:first-child, .tableau-dossiers td:first-child { padding-left: var(--e-16); }
.tableau-dossiers th:last-child, .tableau-dossiers td:last-child { padding-right: var(--e-16); }
.tableau-dossiers tbody tr:last-child td { border-bottom: 0; }
.tableau-dossiers tbody tr:hover td { background: var(--survol); }
.tableau-dossiers .col-dossier { white-space: normal; min-width: 190px; max-width: 280px; }
.tableau-dossiers tbody tr { position: relative; }
.tableau-dossiers tbody tr:has(a.dossier-nom) td:last-child { position: relative; padding-right: var(--e-32); }
.tableau-dossiers tbody tr:has(a.dossier-nom) td:last-child::after { content: '›'; position: absolute; right: var(--e-12); top: 50%; transform: translateY(-50%); font-size: var(--t-20); line-height: 1; color: var(--texte-tertiaire); }
.tableau-dossiers a.dossier-nom::before { content: ''; position: absolute; inset: 0; z-index: 0; }
.tableau-dossiers td a:not(.dossier-nom), .tableau-dossiers td form, .tableau-dossiers td details, .tableau-dossiers td .bouton { position: relative; z-index: 1; }
.dossier-nom { color: var(--texte); font-weight: 600; text-decoration: none; }
a.dossier-nom:hover { text-decoration: underline; }
.col-action { text-align: right; }

/* Aides à valider (tous dossiers) */
.tableau-dossiers .col-action-texte { white-space: normal; min-width: 160px; max-width: 220px; color: var(--texte-secondaire); }
.tableau-dossiers .col-lien { white-space: normal; min-width: 150px; max-width: 220px; }
.tableau-dossiers .col-court { white-space: normal; min-width: 110px; max-width: 160px; }
.tableau-toutes-aides .etat { display: inline-flex; }

/* ---- Listes à colonnes fixes (dossiers de l'Accueil, base d'aides) : table-layout fixed, largeurs posées sur les
   <col>, aucun défilement horizontal à 1280 px. La carte n'est pas un conteneur à défilement (overflow: clip), pour
   que l'en-tête reste collé sous la barre d'outils au défilement vertical. Une cellule tient sur une ligne, tronquée
   par « … » ; seule la première colonne (nom, puis identifiant et travaux ou organisme) a deux lignes. ---- */
.carte-liste { background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); overflow: clip; }
.tableau-liste { table-layout: fixed; width: 100%; }
.tableau-liste thead th { position: sticky; top: var(--barre); z-index: 2; background: var(--carte); }
.tableau-liste td { overflow: hidden; text-overflow: ellipsis; }
/* Ligne de 56 à 64 px : interligne serré dans les cellules à deux lignes (nom + sous-ligne, action, statut). */
.tableau-liste .col-dossier, .tableau-liste .col-statut, .tableau-liste .col-action-texte { white-space: normal; min-width: 0; max-width: none; line-height: var(--interligne-titre); }
.tableau-liste .dossier-nom { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: var(--interligne-titre); }
.dossier-sous { display: block; margin-top: var(--e-4); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--texte-secondaire); font-size: var(--t-13); line-height: var(--interligne-titre); }
.dossier-sous .code { display: inline; margin: 0; font-size: inherit; }
.tronque { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tableau-liste .col-statut .statut { white-space: normal; }
.tableau-liste .col-action-texte { color: var(--texte-secondaire); font-size: var(--t-14); }
.tableau-liste .date { white-space: nowrap; }
/* Toute la ligne mène au détail (lien du nom étendu à la ligne) : survol et focus visibles, sans flèche. */
.tableau-liste tbody tr:has(a.dossier-nom) td:last-child { padding-right: var(--e-16); }
.tableau-liste tbody tr:has(a.dossier-nom) td:last-child::after { content: none; }
.tableau-liste tbody tr:focus-within td { background: var(--survol); }
/* Les infobulles (commune complète, heure exacte) passent au-dessus du lien de ligne, sinon le pointeur ne touche
   que le lien et rien ne s'affiche ; le texte seul (inline-block), pas la cellule : le reste mène toujours au détail. */
.tableau-liste tr:has(a.dossier-nom) td .tronque[title], .tableau-liste tr:has(a.dossier-nom) td time[title] { position: relative; z-index: 1; }
.tableau-liste tr:has(a.dossier-nom) td .tronque[title] { display: inline-block; max-width: 100%; vertical-align: top; }
/* Colonnes de la liste des dossiers : Dossier (souple, 260 px au moins), Commune 140, Budget 110, Statut 140,
   Prochaine action (souple : le reste, 220 px au moins), Mis à jour 110. Dossier : 27 % de la table (267 px à 1280,
   310 px à 1440 ; Prochaine action 223 puis 340 px). Chrome ignore max() et calc() sur une <col>, d'où le pourcentage. */
.col-g-dossier { width: 27%; }
.col-g-commune { width: 140px; }
.col-g-budget { width: 110px; }
.col-g-statut { width: 140px; }
.col-g-maj { width: 110px; }

/* Liste de cartes (sous 1024 px) : rendue par le serveur, masquée au-dessus. */
.cartes-dossiers { display: none; list-style: none; margin: 0; padding: 0; }
.carte-dossier { display: grid; gap: var(--e-8); justify-items: start; padding: var(--e-16); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); }
.carte-dossier .dossier-nom { font-size: var(--t-16); }
.carte-action { margin: 0; color: var(--texte-secondaire); font-size: var(--t-14); }
.carte-meta { margin: 0; font-size: var(--t-14); }

/* Base d'aides : Aide (souple, 280 px au moins), Territoire 170, Montant 130, Échéance 110, Vérifiée 150, Action 110. */
.col-g-territoire { width: 170px; }
.col-g-montant { width: 130px; }
.col-g-echeance { width: 110px; }
.col-g-verifiee { width: 150px; }
.col-g-action-aide { width: 110px; }
.tableau-aides .col-montant, .tableau-aides .col-verifiee, .tableau-aides .col-echeance { white-space: normal; }
.tableau-aides .col-action { text-align: right; }
.tableau-aides .col-action form { margin: 0; }
.tableau-aides .col-aide .dossier-nom { white-space: normal; }
.tableau-aides .col-aide .code { font-size: var(--t-13); }
.aide-liens { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--e-4) var(--e-16); margin-top: var(--e-4); }
.verifiee-date { display: block; }
/* Repère de fraîcheur (étape 3) : texte et couleur, jamais la couleur seule. */
.date-inconnue { color: var(--texte-tertiaire); }
.repere { display: inline-block; margin: var(--e-4) 0; padding: 0 var(--e-8); border-radius: var(--rayon-petit); font-size: var(--t-12); font-weight: 600; line-height: var(--interligne); }
.repere-orange { color: var(--orange); background: var(--orange-fond); }
/* Statut du moteur sans alerte (« À revérifier bientôt », « Expirée ») : discret, jamais une couleur d'état. */
.repere-discret { color: var(--texte-secondaire); background: var(--survol); font-weight: 500; }
.date-recherche, .origine-aide { margin: var(--e-4) 0 0; color: var(--texte-secondaire); font-size: var(--t-13); }
/* Niveaux d'urgence (étape 4) : rouge seulement pour « En retard », orange pour « Aujourd'hui ». */
.action-libelle { display: block; font-size: var(--t-14); }
.niveau { display: block; font-size: var(--t-13); font-weight: 600; }
.niveau-en_retard { color: var(--rouge); }
.niveau-aujourdhui { color: var(--orange); }
.niveau-a_venir { color: var(--texte-secondaire); font-weight: 500; }
.niveau-a_planifier { color: var(--texte-tertiaire); font-weight: 500; }
.bandeau-fraicheur { margin: var(--e-8) 0 0; color: var(--texte-secondaire); font-size: var(--t-14); }
.col-verifiee .lien-source { white-space: nowrap; }
/* Échéance dans moins de 30 jours : couleur d'alerte, avec la date. */
.echeance-proche { color: var(--orange); font-weight: 600; }
/* Aide retirée, montrée sur demande : texte secondaire, bouton « Réactiver » intact. */
.ligne-retiree td, .ligne-retiree .dossier-nom { color: var(--texte-secondaire); }
.ligne-retiree .dossier-nom { font-weight: 500; }
/* Bouton discret (« Retirer », « Réactiver ») : l'action principale de la page reste « Ajouter une aide ». */
.bouton-discret { color: var(--texte-secondaire); }
.bouton-discret:hover { color: var(--texte); }
.details-aide { font-size: var(--t-14); min-width: 0; }
.details-aide summary { display: list-item; width: fit-content; min-height: var(--cible); cursor: pointer; color: var(--accent); font-weight: 500; }
.details-aide summary:hover { text-decoration: underline; }
.champs-details { margin-top: var(--e-8); min-width: 0; }
.champs-details > div { grid-template-columns: 110px minmax(0, 1fr); gap: var(--e-8); }
.champs-details dt, .champs-details dd { font-size: var(--t-14); line-height: var(--interligne); }

/* Badges : état d'une aide, verdict de la source. Rayon de 6 px. Décisions en neutre : « À décider » cerné (il reste
   à faire), décision prise au texte foncé, écartée en gris ; seule la source à vérifier (alerte) garde l'orange. */
.etat {
  justify-self: start; display: inline-flex; align-items: center; min-height: var(--cible); padding: 0 var(--e-8);
  border-radius: var(--rayon-petit); background: var(--survol);
  color: var(--texte-secondaire); font-size: var(--t-12); font-weight: 600; line-height: var(--interligne-titre);
}
.etat-neutre { background: var(--carte); border: 1px solid var(--bordure-champ); }
.etat-retenue, .etat-base, .etat-attestee { color: var(--texte); }
.verdict { display: inline-flex; align-items: center; min-height: var(--cible); padding: 0 var(--e-8); border-radius: var(--rayon-petit); font-size: var(--t-13); font-weight: 600; }
.verdict-verifiee { color: var(--texte); background: var(--survol); }
.verdict-a_verifier { color: var(--orange); background: var(--orange-fond); }
.verdict-non_evalue { color: var(--texte-secondaire); background: var(--survol); }

/* ---- Page d'un dossier ---- */
.ligne-code { display: flex; align-items: center; gap: var(--e-16); flex-wrap: wrap; margin: 0 0 var(--e-8); }
.ligne-code .code { display: inline; margin: 0; font-size: var(--t-14); }
.etapes { list-style: none; margin: 0 0 var(--e-24); padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--e-8); }
.etape {
  display: flex; align-items: center; gap: var(--e-12); padding: var(--e-12) var(--e-16);
  background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte);
  color: var(--texte-secondaire); font-size: var(--t-14); font-weight: 500;
}
.etape-numero { flex: none; display: grid; place-items: center; width: 28px; height: 28px; border-radius: var(--rayon-rond); border: 1px solid var(--texte-tertiaire); font-size: var(--t-13); font-weight: 600; }
.etape-faite { color: var(--texte); }
.etape-faite .etape-numero { background: var(--texte); border-color: var(--texte); color: var(--carte); }
.etape-en_cours { background: var(--selection); color: var(--texte); border-color: var(--accent); font-weight: 600; }
.etape-en_cours .etape-numero { border-color: var(--accent); color: var(--texte); }
.grille-dossier { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: var(--e-24); margin-bottom: var(--e-24); }
.champs { margin: 0; display: grid; gap: var(--e-12); }
.champs > div { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: var(--e-16); }
.champs dt { color: var(--texte-secondaire); font-size: var(--t-14); font-weight: 500; }
.champs dd { margin: 0; font-size: var(--t-16); overflow-wrap: anywhere; }
.chiffres { display: flex; flex-wrap: wrap; gap: var(--e-32); margin-bottom: var(--e-24); }
.chiffre { display: grid; gap: var(--e-4); }
.chiffre-valeur { font-size: var(--t-24); font-weight: 600; line-height: var(--interligne-titre); }
.chiffre-libelle { font-size: var(--t-13); color: var(--texte-secondaire); font-weight: 500; }
.decisions-texte { margin: 0 0 var(--e-8); font-size: var(--t-16); }
/* Progression : piste grise, remplissage couleur d'accent (repère de 6,29:1 sur blanc). */
.barre { -webkit-appearance: none; appearance: none; display: block; width: 100%; height: 6px; border: 0; border-radius: var(--rayon-rond); background: var(--bordure); overflow: hidden; }
.barre::-webkit-progress-bar { background: var(--bordure); border-radius: var(--rayon-rond); }
.barre::-webkit-progress-value { background: var(--accent); border-radius: var(--rayon-rond); }
.barre::-moz-progress-bar { background: var(--accent); border-radius: var(--rayon-rond); }
.carte-couverture, .bloc-aide { margin-bottom: var(--e-24); }
.texte-couverture { margin: 0; white-space: pre-line; font-size: var(--t-16); max-width: 70ch; }
.actions-entete { display: flex; align-items: center; gap: var(--e-12); flex-wrap: wrap; }
.bandeau-info, .message-dossier {
  display: flex; gap: var(--e-12); align-items: baseline; flex-wrap: wrap;
  margin-bottom: var(--e-24); padding: var(--e-12) var(--e-16);
  border-radius: var(--rayon-carte); font-size: var(--t-16);
}
.bandeau-info { background: var(--carte); border: 1px solid var(--bordure); }
.message-dossier { background: var(--rouge-fond); color: var(--texte); }
.message-dossier strong { color: var(--rouge); }
.message-avertissement { background: var(--orange-fond); }
.message-avertissement strong { color: var(--orange); }

/* Rapport */
.rapport-actions { display: flex; gap: var(--e-24); flex-wrap: wrap; margin-bottom: var(--e-16); }
.panneau-pdf { position: relative; background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); overflow: hidden; }
/* Visible tant que le lecteur PDF n'a rien affiché : l'iframe, transparente au départ, le recouvre ensuite. */
.chargement { position: absolute; inset: 0; display: grid; place-items: center; margin: 0; color: var(--texte-secondaire); font-size: var(--t-14); font-weight: 500; }
.panneau-pdf iframe { position: relative; z-index: 1; display: block; width: 100%; height: max(480px, calc(100vh - 300px)); border: 0; background: transparent; }
.carte-rapport .panneau-pdf iframe { height: max(560px, calc(100vh - 220px)); }

/* ---- Validation des aides ---- */
.entete-validation { align-items: center; }
.progression { display: grid; gap: var(--e-8); width: 280px; font-size: var(--t-14); color: var(--texte-secondaire); }
.progression strong { color: var(--texte); font-size: var(--t-16); }
.progression .lien-sombre { justify-self: end; }
.grille-validation { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: var(--e-24); align-items: start; }
/* Piste de 300 px : la liste n'est jamais plus large qu'elle (minmax), et les trois onglets y tiennent (8 px de marge
   intérieure au lieu de 12). */
.colonne-aides { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--e-16); align-content: start; position: sticky; top: calc(var(--barre) + var(--e-16)); }
.vues-aides { margin: 0; justify-self: start; }
.vues-aides a { padding: 0 var(--e-8); }
.liste-aides { max-height: calc(100vh - 330px); min-height: 160px; overflow-y: auto; background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); }
.liste-aides ol { list-style: none; margin: 0; padding: var(--e-8); display: grid; gap: var(--e-4); }
.liste-aides a { display: grid; gap: var(--e-4); padding: var(--e-12); border-radius: var(--rayon-petit); border: 1px solid transparent; color: var(--texte); text-decoration: none; }
.liste-aides a:hover { background: var(--survol); }
.liste-aides a[aria-current='true'] { background: var(--selection); border-color: var(--accent); }
.liste-vide { padding: var(--e-16); margin: 0; }
.aide-niveau { font-size: var(--t-12); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--texte-secondaire); }
.aide-nom { font-size: var(--t-14); font-weight: 600; line-height: var(--interligne-titre); overflow-wrap: anywhere; }
.fiche { display: grid; gap: var(--e-24); min-width: 0; padding: var(--e-32); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); }
.fiche-tete { display: flex; align-items: center; gap: var(--e-12); flex-wrap: wrap; }
.titre-fiche { margin: 0; font-size: var(--t-20); font-weight: 600; line-height: var(--interligne-titre); }
.organisme { margin: calc(-1 * var(--e-16)) 0 0; color: var(--texte-secondaire); font-weight: 500; }
.champs-fiche > div { grid-template-columns: 140px minmax(0, 1fr); }
.confiance { margin: 0; color: var(--texte-secondaire); font-size: var(--t-16); }
.confiance strong { color: var(--texte); font-weight: 600; }
.source { display: grid; gap: var(--e-12); padding: var(--e-24); background: var(--fond); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); }
.source-tete, .decision-tete { display: flex; align-items: baseline; justify-content: space-between; gap: var(--e-12); flex-wrap: wrap; }
.titre-source { margin: 0; font-size: var(--t-16); font-weight: 600; }
.extrait { position: relative; margin: 0; max-height: 220px; overflow-y: auto; scroll-behavior: smooth; font-size: var(--t-16); line-height: var(--interligne); color: var(--texte); white-space: pre-line; overflow-wrap: anywhere; }
.extrait mark { background: var(--selection); color: var(--texte); font-weight: 600; text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.contact-aide { display: grid; gap: var(--e-8); }
.form-contact { display: flex; gap: var(--e-8); flex-wrap: wrap; }
.form-contact textarea { field-sizing: content; }
.form-contact input, .form-contact textarea { flex: 1 1 320px; min-height: var(--hauteur-bouton-petit); padding: var(--e-8) var(--e-12); resize: vertical; font-family: inherit; line-height: var(--interligne); border: 1px solid var(--bordure-champ); border-radius: var(--rayon-petit); background: var(--carte); font-size: var(--t-16); color: var(--texte); }
.repliable-texte { white-space: normal; }
.replie .repliable-texte { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.bouton-repli { margin-top: var(--e-4); font-size: var(--t-14); }
/* Barre de décision : collée en bas de la fenêtre pendant la lecture, bord à bord avec la zone de contenu. */
.barre-decision {
  position: sticky; bottom: 0; z-index: 5;
  margin: var(--e-24) calc(-1 * var(--marge)) calc(-1 * var(--e-48));
  padding: var(--e-16) var(--marge);
  background: var(--carte);
  border-top: 1px solid var(--bordure);
  display: grid; gap: var(--e-8);
}
.form-decision { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--e-8); }
.barre-tete { display: flex; align-items: center; gap: var(--e-12); min-width: 0; }
.titre-barre { margin: 0; font-size: var(--t-16); font-weight: 600; white-space: nowrap; }
.barre-aide { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--texte-secondaire); font-size: var(--t-14); }
.barre-pied { display: flex; align-items: center; justify-content: space-between; gap: var(--e-12); flex-wrap: wrap; }
.barre-pied .sous, .barre-pied .mention-demo { margin: 0; }
.barre-actions { display: flex; align-items: center; gap: var(--e-24); }
.barre-annuler, .toast-annuler { margin: 0; }
.boutons-decision { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--e-8); }
.boutons-trois { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.decision-bouton {
  display: flex; align-items: center; justify-content: center; gap: var(--e-8);
  min-height: var(--hauteur-bouton); padding: 0 var(--e-16); white-space: nowrap;
  border: 1px solid var(--bordure); border-radius: var(--rayon-petit); background: var(--carte); color: var(--texte);
  font-size: var(--t-14); font-weight: 600; cursor: pointer;
}
.decision-bouton svg { flex: none; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.decision-valider svg, .decision-ecarter svg { color: var(--texte); }
.decision-etudier svg { color: var(--texte-secondaire); }
.decision-bouton:hover:not(:disabled) { background: var(--survol); }
.decision-bouton:disabled { cursor: not-allowed; opacity: 0.5; }
.decision-courante, .decision-courante:hover:not(:disabled) { background: var(--selection); border-color: var(--accent); }
/* Touche de raccourci : petite touche grise à côté du libellé. */
kbd { display: inline-grid; place-items: center; min-width: 20px; height: 20px; margin-left: var(--e-4); padding: 0 var(--e-4); border-radius: var(--rayon-petit); border: 1px solid var(--bordure); background: var(--fond); color: var(--texte-secondaire); font-family: inherit; font-size: var(--t-12); font-weight: 500; line-height: 1; }
.case-attestation { display: inline-flex; align-items: center; gap: var(--e-8); min-height: var(--cible); font-size: var(--t-16); font-weight: 600; cursor: pointer; }
.case-attestation input { flex: none; width: var(--cible); height: var(--cible); margin: 0; accent-color: var(--accent); }
.case-faite { cursor: default; }
.decision-verrouillee { margin: 0; display: flex; align-items: center; gap: var(--e-8); flex-wrap: wrap; font-size: var(--t-16); }
.decision-pied { display: flex; align-items: center; justify-content: space-between; gap: var(--e-12); flex-wrap: wrap; }
.mention-demo { margin: 0; font-size: var(--t-16); color: var(--texte-secondaire); }
.aide-suivante { display: inline-flex; align-items: center; gap: var(--e-8); min-height: var(--cible); color: var(--accent); font-size: var(--t-14); font-weight: 600; text-decoration: none; }
.aide-suivante:hover { text-decoration: underline; }
.note-libelle { font-size: var(--t-16); font-weight: 600; }
.form-decision textarea { width: 100%; padding: var(--e-8) var(--e-12); border: 1px solid var(--bordure-champ); border-radius: var(--rayon-petit); font-size: var(--t-16); color: var(--texte); resize: vertical; }
/* Capsule de confirmation : en bas, au centre, texte blanc sur le texte principal ; sans ombre (réservée aux cartes).
   Son contour de focus est blanc : l'accent n'y ferait que 2,51:1 sur ce fond sombre (blanc : 15,8:1). Effacée après
   3 s (js/commun.js) : invisible et hors de la tabulation (visibility, après le fondu), sauf si le focus y est. */
.toast {
  position: fixed; left: 50%; bottom: var(--e-24); z-index: 30; transform: translateX(-50%);
  display: flex; align-items: center; gap: var(--e-16); max-width: calc(100% - 2 * var(--e-16));
  padding: var(--e-12) var(--e-16); border-radius: var(--rayon-carte);
  background: var(--texte); color: var(--carte); font-size: var(--t-14); font-weight: 500;
  transition: opacity var(--duree) var(--courbe), visibility 0s linear 0s;
}
.toast .lien { color: var(--carte); font-size: var(--t-14); }
.toast :focus-visible { outline-color: var(--carte); }
.toast-cache { opacity: 0; visibility: hidden; pointer-events: none; transition: opacity var(--duree) var(--courbe), visibility 0s linear var(--duree); }
.toast-cache:focus-within { opacity: 1; visibility: visible; pointer-events: auto; }

/* Clôture */
.liste-restantes { margin: 0; padding-left: var(--e-24); display: grid; gap: var(--e-4); font-size: var(--t-16); }
/* Lien d'une aide restante : boîte de la hauteur de la ligne (24 px), cible de 24 px au moins. */
.liste-restantes a { display: inline-block; }
.bloc { min-width: 0; }

/* ---- Formulaires : sections en cartes, libellé au-dessus, champs de 40 px, texte en 16 px ---- */
.formulaire-dossier { display: grid; gap: var(--e-24); max-width: 900px; }
.bloc-form { display: grid; gap: var(--e-16); }
.bloc-form .titre-carte-section { margin: 0; }
.ligne-champs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--e-16) var(--e-24); }
.ligne-trois { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.champ { display: grid; gap: var(--e-8); align-content: start; }
.champ label { font-size: var(--t-16); font-weight: 600; }
.champ input, .champ select, .champ textarea {
  width: 100%; min-height: var(--hauteur-champ); padding: var(--e-8) var(--e-12);
  border: 1px solid var(--bordure-champ); border-radius: var(--rayon-petit); background: var(--carte);
  font-size: var(--t-16); color: var(--texte);
}
.champ textarea { resize: vertical; line-height: var(--interligne); }
.champ-erreur input, .champ-erreur select, .champ-erreur textarea { border-color: var(--rouge); }
.champ-message { margin: 0; color: var(--rouge); font-size: var(--t-16); font-weight: 500; }
/* Case remplie vidée (modification d'une aide de la base) : la recherche pourra la remplir. */
.champ-case-vide { margin: 0; color: var(--orange); font-size: var(--t-16); font-weight: 500; }
.champ-case-vide[hidden] { display: none; }
/* Territoire : liste des régions ou texte libre, une seule saisie visible (js/territoire.js). */
[data-territoire][hidden] { display: none; }
.champ-aide { margin: 0; color: var(--texte-secondaire); font-size: var(--t-16); }
.requis { color: var(--rouge); }
.pour-lancer { color: var(--accent); font-weight: 700; }
.actions-form { display: flex; align-items: center; gap: var(--e-16); flex-wrap: wrap; }

/* Feuille de confirmation (<dialog> natif, js/formulaires.js) : carte centrée, voile derrière, bouton principal à
   droite. */
.feuille {
  width: min(440px, calc(100% - 2 * var(--e-16))); margin: auto; padding: var(--e-24);
  border: 1px solid var(--bordure); border-radius: var(--rayon-carte); background: var(--carte); color: var(--texte);
}
.feuille::backdrop { background: var(--voile); }
.feuille-message { margin: 0 0 var(--e-24); font-size: var(--t-16); line-height: var(--interligne); }
/* Libellé long sur un écran étroit : le bouton principal passe au-dessus d'« Annuler » au lieu de déborder. */
.feuille-actions { display: flex; flex-wrap: wrap-reverse; justify-content: flex-end; gap: var(--e-8); }
.feuille-actions .bouton { min-width: 96px; max-width: 100%; white-space: normal; text-align: center; }

/* ---- Consultations : barre de filtres, page Aide ---- */
.filtres { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--e-16); margin-bottom: var(--e-12); padding: var(--e-16); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); }
.filtre { display: grid; gap: var(--e-4); flex: 1 1 170px; min-width: 0; }
.filtre-recherche { flex: 2 1 240px; }
.filtre label { font-size: var(--t-13); font-weight: 500; color: var(--texte-secondaire); }
.filtre select, .filtre input {
  width: 100%; height: var(--hauteur-champ); padding: 0 var(--e-12);
  border: 1px solid var(--bordure-champ); border-radius: var(--rayon-petit); background: var(--carte);
  font-size: var(--t-16); color: var(--texte);
}
.filtre input::placeholder { color: var(--texte-tertiaire); }
/* Case à cocher de la barre (« Afficher les dossiers clôturés ») : case de 24 px couleur d'accent, libellé à côté,
   alignée sur les listes. */
.filtre-case { flex: 0 0 auto; }
.filtre-case label { display: inline-flex; align-items: center; gap: var(--e-8); min-height: var(--hauteur-champ); color: var(--texte); font-size: var(--t-14); font-weight: 500; white-space: nowrap; cursor: pointer; }
.filtre-case input { flex: none; width: var(--cible); height: var(--cible); margin: 0; padding: 0; border: 0; background: none; accent-color: var(--accent); }
.filtres-actions { flex: none; }
.filtres-resultat { margin: 0 0 var(--e-16); color: var(--texte-secondaire); font-size: var(--t-14); }
.filtres-resultat strong { color: var(--texte); }
.tableau-aide { border: 0; }
.tableau-aide td:first-child { white-space: nowrap; }
/* Tableau ou état vide posé dans une carte : sans second cadre. */
.carte .defile, .carte .vide { border: 0; border-radius: 0; box-shadow: none; }
.carte .vide { padding: var(--e-24) var(--e-16); }

/* Sous 1024 px (menu latéral compris, la table de six colonnes ne tient plus) : la liste des dossiers prend sa forme
   en cartes (rendue par le serveur, l'autre forme sort de l'arbre d'accessibilité) ; la base d'aides s'empile, une
   aide par bloc, chaque valeur précédée de l'intitulé de sa colonne. */
@media (max-width: 1199px) {
  .liste-table { display: none; }
  .cartes-dossiers { display: grid; gap: var(--e-12); }
  .tableau-aides, .tableau-aides tbody, .tableau-aides tr, .tableau-aides td { display: block; }
  .tableau-aides colgroup { display: none; }
  /* En-têtes de colonnes masqués à l'écran mais conservés pour les lecteurs d'écran (pas de display: none). */
  .tableau-aides thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .tableau-aides tbody tr { padding: var(--e-12) var(--e-16); border-bottom: 1px solid var(--bordure); }
  .tableau-aides tbody tr:last-child { border-bottom: 0; }
  .tableau-aides tbody tr:hover td { background: none; }
  .tableau-aides td, .tableau-aides td:first-child, .tableau-aides td:last-child { height: auto; padding: var(--e-4) 0; border: 0; background: none; white-space: normal; overflow: visible; }
  .tableau-aides td.col-nombre, .tableau-aides td.col-action { text-align: left !important; }
  .tableau-aides td[data-col]::before { content: attr(data-col) '\00a0: '; color: var(--texte-secondaire); }
  .tableau-aides .verifiee-date, .tableau-aides td .sous, .tableau-aides .tronque { display: inline; margin: 0; }
  .tableau-aides td .sous::before { content: ' · '; }
  .tableau-aides .col-verifiee .lien-source { margin-left: var(--e-8); }
}
@media (max-width: 900px) {
  /* minmax(0, 1fr) : un simple 1fr prend la largeur minimale du contenu (tableaux) et déborde. */
  .cadre { grid-template-columns: minmax(0, 1fr); }
  .menu { position: static; height: auto; overflow: visible; flex-direction: row; flex-wrap: wrap; align-items: center; gap: var(--e-8) var(--e-16); padding: var(--e-16); border-right: 0; border-bottom: 1px solid var(--bordure); }
  .menu-logo, .logo-menu { width: 96px; margin: 0; }
  .bouton-nouveau { margin: 0 0 0 auto; }
  .menu-nav { display: flex; flex-wrap: wrap; flex: 1 1 100%; }
  .menu-intitule { display: none; }
  .barre-outils { padding: var(--e-8) var(--marge-mobile); grid-template-columns: minmax(0, 1fr) auto; }
  .barre-titre { grid-column: 1; justify-self: stretch; min-width: 0; max-width: none; }
  .barre-outils .recherche { grid-column: 2; max-width: 260px; min-width: 240px; }
  .menu-pied { margin: 0 0 0 auto; display: flex; align-items: center; gap: var(--e-16); }
  .menu-pied .signature { display: none; }
  .entete-ligne > .actions-entete { flex: 1 1 100%; flex-wrap: wrap; }
  .grille-dossier, .grille-validation { grid-template-columns: minmax(0, 1fr); }
  .colonne-aides { position: static; }
  .barre-decision { position: static; }
}
@media (max-width: 600px) {
  .page { padding: var(--e-24) var(--marge-mobile) var(--e-32); }
  /* Téléphone (16/10) : la recherche prend toute la largeur ; le titre de la barre (doublon visuel du titre de la page,
     masqué aux lecteurs d'écran) disparaît. */
  .barre-titre { display: none; }
  .barre-outils .recherche { grid-column: 1 / -1; max-width: none; min-width: 0; justify-self: stretch; }
  .barre-decision { margin: var(--e-24) calc(-1 * var(--marge-mobile)) calc(-1 * var(--e-32)); padding: var(--e-16) var(--marge-mobile); }
  .tuiles-groupes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  /* Listes empilées : une ligne = un bloc, sans en-têtes. */
  .liste .defile { overflow: visible; }
  .tableau-dossiers, .tableau-dossiers tbody, .tableau-dossiers tr, .tableau-dossiers td { display: block; }
  .tableau-dossiers thead { display: none; }
  .tableau-dossiers tbody tr { padding: var(--e-12) var(--e-16); border-bottom: 1px solid var(--bordure); }
  .tableau-dossiers tbody tr:last-child { border-bottom: 0; }
  .tableau-dossiers tbody tr:hover td { background: none; }
  .tableau-dossiers td, .tableau-dossiers td:first-child { height: auto; padding: var(--e-4) 0; border: 0; background: none; white-space: normal; }
  .tableau-dossiers td:empty { display: none; }
  .tableau-dossiers .col-dossier { max-width: none; }
  .tableau-dossiers tbody tr:has(a.dossier-nom) { padding-right: var(--e-32); }
  .tableau-dossiers tbody tr:has(a.dossier-nom) td:last-child { position: static; padding-right: 0; }
  .champs > div, .champs-fiche > div { grid-template-columns: minmax(0, 1fr); gap: var(--e-4); }
  .etapes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .boutons-trois { grid-template-columns: minmax(0, 1fr); }
  .ligne-champs, .ligne-trois { grid-template-columns: minmax(0, 1fr); }
  .decision-bouton kbd { display: none; }
  .fiche { padding: var(--e-16); }
}

/* Chiffres à chasse fixe : toutes les colonnes et valeurs de chiffres (montants, dates, compteurs, pastilles). */
.tuile-chiffre, .chiffre-valeur, .pastille-nombre, .vue-nombre, .nombre, .date, time, .progression, .etat, .statut,
.code, .ligne-code, .etape-numero, .champs dd, .tableau td, .barre-aide, kbd, .col-nombre, .col-montant, .filtres-resultat,
.decisions-texte, .lecture, .bandeau, .liste-restantes, .chiffre-libelle, .chapo strong, [data-quota], .bouton,
.decision-bouton { font-variant-numeric: tabular-nums; }

/* Textes longs : 70 caractères par ligne au plus. */
.champs dd, .extrait, .chapo, .repliable-texte, .organisme, .detail { max-width: 70ch; }

/* « Mis à jour » sur une ligne, même pour une date complète (« 17 sept. 2026 ») : métadonnée en 13 px. */
.tableau-liste td.date { font-size: var(--t-13); white-space: nowrap; overflow: hidden; text-overflow: clip; }

/* Accueil « À traiter aujourd'hui » (étape 5). */
.entete-accueil .actions-entete { display: flex; align-items: center; gap: var(--e-16); flex-wrap: wrap; }
.date-du-jour { margin: var(--e-4) 0 0; color: var(--texte-secondaire); font-size: var(--t-16); }
.quota-accueil { color: var(--texte-secondaire); font-size: var(--t-13); }
.compteurs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--e-16); margin: 0 0 var(--e-16); }
.compteur { display: flex; flex-direction: column; gap: var(--e-4); min-height: var(--cible); padding: var(--e-16); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); color: var(--texte); text-decoration: none; }
.compteur:hover { background: var(--survol); }
.compteur-actif { border-color: var(--accent); }
.compteur-chiffre { font-size: var(--t-24); font-weight: 600; line-height: var(--interligne-titre); font-variant-numeric: tabular-nums; }
.compteur-titre { font-size: var(--t-14); font-weight: 600; }
.compteur-sous { color: var(--texte-secondaire); font-size: var(--t-13); }
.compteur-rouge { background: var(--rouge-fond); border-color: var(--rouge); }
.compteur-rouge .compteur-chiffre, .compteur-rouge .compteur-titre { color: var(--rouge); }
.compteur-orange .compteur-chiffre, .compteur-orange .compteur-titre { color: var(--orange); }
.compteurs-filtre, .tout-a-jour { margin: 0 0 var(--e-16); font-size: var(--t-14); }
.tout-a-jour { color: var(--texte-secondaire); }
@media (max-width: 1099px) { .compteurs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .compteurs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--e-12); } }
@media (max-width: 340px) { .compteurs { grid-template-columns: minmax(0, 1fr); } }
.entete-accueil { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--e-16); flex-wrap: wrap; }
.entete-accueil > div:first-child { flex: 0 1 auto; }
.entete-accueil .actions-entete { margin-left: auto; flex: 0 0 auto; }
/* Téléphone (16/10, 390 px) : les actions passent sous la salutation, sur toute la largeur, et vont à la ligne. */
@media (max-width: 600px) { .entete-accueil .actions-entete { margin-left: 0; flex: 1 1 100%; justify-content: flex-start; } }

/* Cartes de validation (étape 6). */
.ligne-ia { margin: 0 0 var(--e-16); color: var(--texte-secondaire); font-size: var(--t-14); }
.bandeau-fin { display: flex; align-items: center; justify-content: space-between; gap: var(--e-16); flex-wrap: wrap; margin: 0 0 var(--e-16); padding: var(--e-16); border: 1px solid var(--vert); border-radius: var(--rayon-carte); background: var(--vert-fond); }
.bandeau-fin strong { color: var(--vert); }
.cartes-validation { display: grid; gap: var(--e-16); }
.carte-validation { padding: var(--e-24); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); box-shadow: var(--ombre-carte); scroll-margin-top: calc(var(--barre) + var(--e-16)); }
.carte-validation:target { border-color: var(--accent); }
.carte-tete { display: flex; align-items: center; gap: var(--e-8); flex-wrap: wrap; }
.titre-carte { margin: var(--e-8) 0 0; font-size: var(--t-18); font-weight: 600; line-height: var(--interligne-titre); }
.carte-validation .organisme { margin: var(--e-4) 0 0; color: var(--texte-secondaire); }
.repere-vert { color: var(--vert); background: var(--vert-fond); }
.faits { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--e-16); margin: var(--e-16) 0 0; }
.faits div { min-width: 0; }
.faits dt { color: var(--texte-secondaire); font-size: var(--t-13); }
.faits dd { margin: var(--e-4) 0 0; font-size: var(--t-14); font-variant-numeric: tabular-nums; }
.source-carte { margin: var(--e-12) 0 0; font-size: var(--t-14); }
.eligibilite { margin: var(--e-12) 0 0; }
.eligibilite-apercu { margin: 0; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.eligibilite details[open] ~ .eligibilite-apercu, .eligibilite:has(details[open]) .eligibilite-apercu { display: none; }
.eligibilite-complete { margin: var(--e-8) 0 0; white-space: pre-line; }
.details-carte { margin: var(--e-12) 0 0; }
.details-carte summary { cursor: pointer; color: var(--accent); font-weight: 600; min-height: var(--cible); }
.actions-carte { display: flex; gap: var(--e-12); flex-wrap: wrap; margin: var(--e-16) 0 0; }
.carte-validation .case-attestation { margin: var(--e-16) 0 0; }
.annuler-derniere { margin: var(--e-16) 0 0; }
.pied-validation { margin: var(--e-24) 0 0; display: grid; gap: var(--e-12); }
.section-decidees { padding: var(--e-16); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); }
.section-decidees summary { cursor: pointer; font-weight: 600; min-height: var(--cible); }
.liste-decidees { margin: var(--e-12) 0 0; padding: 0; list-style: none; display: grid; gap: var(--e-12); }
.liste-decidees li { display: grid; gap: var(--e-4); padding: var(--e-8) 0; border-top: 1px solid var(--bordure); }
.decidee-meta { display: flex; align-items: center; gap: var(--e-8); flex-wrap: wrap; }
@media (max-width: 600px) { .faits { grid-template-columns: minmax(0, 1fr); } }

/* « Revoir » une décision (16/10). */
.revoir-titre { margin: 0 0 var(--e-12); font-size: var(--t-14); font-weight: 600; display: flex; align-items: center; gap: var(--e-8); flex-wrap: wrap; }
.lien-revoir { justify-self: start; font-size: var(--t-14); }

/* Retours de Mathis (16/10, 09:42). */
/* Listes déroulantes : une seule apparence, flèche dessinée à 12 px du bord droit, texte centré verticalement,
   même hauteur (44 px) que les champs et le bouton de la même ligne. */
select, .filtre select, .champ select {
  -webkit-appearance: none; appearance: none;
  height: var(--hauteur-champ); padding: 0 var(--marge-fleche) 0 var(--e-12); line-height: normal;
  background-color: var(--carte);
  background-image: linear-gradient(45deg, transparent 50%, var(--texte-secondaire) 50%), linear-gradient(135deg, var(--texte-secondaire) 50%, transparent 50%);
  background-position: calc(100% - 17px) 50%, calc(100% - 12px) 50%;
  background-size: 5px 5px, 5px 5px; background-repeat: no-repeat;
  text-overflow: ellipsis;
}
.filtre input { height: var(--hauteur-champ); }
/* Barre de filtres : grille qui passe sur plusieurs lignes (200 px au moins par filtre), bouton aligné sur le bas. */
.filtres { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); align-items: end; }
.filtre, .filtre-recherche { min-width: 0; }
.filtres-actions { justify-self: start; }
.filtres-actions .bouton, .filtres .bouton { min-height: var(--hauteur-champ); }
/* Textes longs : deux lignes au plus, texte complet au survol et au focus clavier (et en infobulle). */
.deux-lignes { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; overflow-wrap: anywhere; }
.deux-lignes:hover, .deux-lignes:focus, .deux-lignes:focus-visible, .col-aide:hover .deux-lignes, .col-aide:focus-within .deux-lignes { -webkit-line-clamp: unset; overflow: visible; }
.tableau-aides .col-tronque, .tableau-aides .col-aide { white-space: normal; }
.tableau-aides .col-tronque .deux-lignes { position: relative; z-index: 1; }
/* Base d'aides : toute la ligne mène à la fiche (lien du nom) ; « Retirer » / « Réactiver » reste au-dessus. */
.tableau-aides tbody tr:has(a.dossier-nom):hover td { background-color: var(--survol); }
/* Aides à valider : sous 1 200 px, une aide = un bloc, chaque valeur précédée de son intitulé. */
@media (max-width: 1199px) {
  .tableau-toutes-aides, .tableau-toutes-aides tbody, .tableau-toutes-aides tr, .tableau-toutes-aides td { display: block; }
  .tableau-toutes-aides thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .tableau-toutes-aides tbody tr { padding: var(--e-12) var(--e-16); border-bottom: 1px solid var(--bordure); }
  .tableau-toutes-aides td, .tableau-toutes-aides td:first-child { height: auto; padding: var(--e-4) 0; border: 0; background: none; white-space: normal; }
  .tableau-toutes-aides td[data-col]::before { content: attr(data-col) '\00a0: '; color: var(--texte-secondaire); }
}
.fiche-aide { padding: var(--e-24); }
.filtre-double { grid-column: span 2; }
.filtre-ligne { grid-column: 1 / -1; }
@media (max-width: 600px) { .filtre-double { grid-column: auto; } }
/* Case à cocher de la barre de filtres : deux colonnes de la grille, libellé qui passe à la ligne (jamais sous le bouton). */
.filtre-case { grid-column: span 2; }
.filtre-case label { white-space: normal; }
@media (max-width: 600px) { .filtre-case { grid-column: auto; } }
/* Nom du dossier : deux lignes au plus, texte complet au survol et au focus (et en infobulle). */
.tableau-liste .col-dossier .dossier-nom.deux-lignes { white-space: normal; }
.tableau-liste .col-dossier:hover .deux-lignes, .tableau-liste .col-dossier:focus-within .deux-lignes { -webkit-line-clamp: unset; overflow: visible; }
.tableau-liste td a.dossier-nom.deux-lignes, .tableau-liste td span.deux-lignes { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; }
.tableau-liste td:hover .deux-lignes, .tableau-liste td:focus-within .deux-lignes, .tableau-liste td .deux-lignes:focus { -webkit-line-clamp: unset; overflow: visible; }
/* Bloc Contact (étape 1). */
.contact-bloc { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e-4) var(--e-12); margin: var(--e-8) 0 0; font-size: var(--t-14); }
.contact-titre { font-weight: 600; }
.contact-qui { color: var(--texte); }
.contact-texte { flex-basis: 100%; color: var(--texte-secondaire); font-size: var(--t-13); }
.tableau-aides .contact-bloc { font-size: var(--t-13); position: relative; z-index: 1; }
.contact-aide .form-contact { margin-top: var(--e-8); }

/* Rappel de fraîcheur sur la fiche d'une aide (16/10) : FRAICHEUR_JOURS dépassé. */
.panneau-rappel { display: flex; align-items: center; justify-content: space-between; gap: var(--e-16); flex-wrap: wrap; margin: 0 0 var(--e-16); padding: var(--e-12) var(--e-16); border-radius: var(--rayon-carte); background: var(--orange-fond); }
.panneau-rappel p { margin: 0; font-size: var(--t-14); }

/* Page « Comment l'agent choisit vos aides » (T8) : texte du moteur, lignes courtes. */
.lien-aide { margin: 0 0 var(--e-16); font-size: var(--t-16); }
.texte-long p { margin: 0 0 var(--e-12); max-width: 70ch; }
.texte-long .titre-carte-section { margin-top: var(--e-16); }

/* Lot n° 2 (V15) : recherche dans la base, pourquoi d'une aide, mise à jour. */
.form-recherche-base { display: inline; margin: 0; }
.bandeau-base { margin-top: var(--e-16); }
.pourquoi-aide { margin: var(--e-16) 0 0; }
.liste-pourquoi { margin: var(--e-8) 0 0; padding: 0; list-style: none; display: grid; gap: var(--e-4); }
.liste-pourquoi li { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--e-8); font-size: var(--t-14); }
.mise-a-jour-aide { margin: var(--e-12) 0 0; }
.ancienne-valeur { color: var(--texte-secondaire); text-decoration: line-through; }
.bloc-externe { margin: var(--e-16) 0; }
.bloc-externe .actions-carte { align-items: center; flex-wrap: wrap; }
.bloc-externe .compteur-mois { flex-basis: auto; text-align: left; }
/* Repère « Nouvelle » (lot n° 2) : aide ajoutée par une recherche externe sur un dossier déjà en validation. */
.repere-nouvelle { color: var(--accent); background: var(--survol); }
/* Postes de travaux (lot n° 2) : cases sur deux colonnes ; dans le formulaire de décision, sous l'attestation. */
.postes-travaux { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--e-8) var(--e-16); margin: var(--e-8) 0 0; padding: 0; border: 0; }
.case-poste { display: flex; align-items: center; gap: var(--e-8); font-size: var(--t-14); }
.postes-decision { margin: var(--e-12) 0; }
.postes-decision legend { margin-bottom: var(--e-8); font-size: var(--t-14); font-weight: 600; }
/* Aides à compléter (lot n° 2) : mention orange (alerte : l'aide ne sortira pas dans la recherche interne). */
.mention-postes { margin: var(--e-4) 0 0; color: var(--orange); font-size: var(--t-13); font-weight: 600; }
.panneau-postes .mention-postes { margin: 0; font-size: var(--t-14); }
.compteurs-cinq { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 1199px) { .compteurs-cinq { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 600px) { .compteurs-cinq { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* Bénéficiaires d'une aide (lot n° 2) : cases au-dessus des postes ; liste sous l'organisme dans la base. */
.beneficiaires-aide { margin: var(--e-8) 0 var(--e-16); }
.beneficiaires-aide legend { margin-bottom: var(--e-8); font-size: var(--t-14); font-weight: 600; }
.beneficiaires-ligne { display: block; }

/* Onglet « Brouillons » de l'accueil (21/10) : onglets au-dessus de la liste, boutons de chaque brouillon. */
.vues-accueil { margin-bottom: var(--e-12); }
.actions-brouillon { display: inline-flex; flex-wrap: wrap; gap: var(--e-8); }
.carte-dossier .actions-brouillon { margin-top: var(--e-8); }

/* Total indicatif des aides d'un dossier (21/10) : sous le nom dans la liste, dans la carte « Aides trouvées ». */
.dossier-total { display: block; margin-top: var(--e-4); color: var(--texte-secondaire); font-size: var(--t-13); }
.total-aides { margin-top: var(--e-12); font-weight: 600; }

/* Tri de l'écran de validation d'un dossier (21/10) : une ligne discrète au-dessus des cartes. */
/* 22/10 : visible d'emblée, en barre au-dessus des cartes ; le choix trie aussitôt (js/filtres.js), « Trier » sans script. */
.tri-validation { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e-8); margin: var(--e-12) 0 var(--e-16); padding: var(--e-12) var(--e-16); background: var(--carte); border: 1px solid var(--bordure); border-radius: var(--rayon-carte); }
.tri-validation label { font-size: var(--t-14); font-weight: 600; color: var(--texte); }

/* Notes internes d'un dossier (B8, 21/10, verrou NOTES_DOSSIER). */
.liste-notes { margin: var(--e-12) 0 0; padding: 0; list-style: none; display: grid; gap: var(--e-12); }
.note-meta { margin: 0; color: var(--texte-secondaire); font-size: var(--t-13); }
.note-texte { margin: var(--e-4) 0 0; white-space: pre-line; }
.form-note { margin-top: var(--e-16); }
.form-note textarea { width: 100%; }

/* « Exporter mes données » (F2, 21/10) : lien discret en bas du menu ; page à trois téléchargements. */
.lien-export { display: block; margin: var(--e-4) 0; color: var(--texte-secondaire); font-size: var(--t-13); text-decoration: underline; }
.liste-export { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--e-12); }

/* F4 (21/10) : téléphone. Chaque cible au doigt fait au moins 44 px de haut (--hauteur-champ) ; les boutons à long
   intitulé passent à la ligne au lieu d'élargir la page. */
@media (max-width: 600px) {
  .menu-nav a, .bouton, .bouton-petit, .session .lien, .barre-outils .recherche input, .form-contact textarea, .vues a,
  .lien-sombre, .retour, .lien-export, .lien-revoir, .lien-source, summary { min-height: var(--hauteur-champ); }
  .lien-export, .session .lien { display: inline-flex; align-items: center; }
  .details-carte summary, .details-aide summary, .section-decidees summary { display: flex; align-items: center; }
  .page a.dossier-nom { min-height: var(--hauteur-champ); padding-block: var(--e-12); }
  .page a.dossier-nom:not(.deux-lignes) { display: inline-flex; align-items: center; }
  .liste-restantes a { display: inline-flex; align-items: center; min-height: var(--hauteur-champ); }
  /* Cases à cocher (postes, bénéficiaires, critères) : toute la ligne se touche au doigt, case agrandie. */
  .case-poste { min-height: var(--hauteur-champ); }
  .case-poste input[type='checkbox'] { width: var(--cible); height: var(--cible); flex: none; }
  .page details > summary { min-height: var(--hauteur-champ); display: flex; align-items: center; }
  .bouton { white-space: normal; text-align: center; }
  .liste-export .bouton { width: 100%; }
}


/* Franchise (22/10) : nom du cabinet en texte, à la place du logo du cabinet d'origine. */
.logo-texte { display: inline-block; color: var(--texte); font-size: var(--t-18); font-weight: 600; line-height: var(--interligne-titre); }

/* Dépenses éligibles du projet (23/10) : deux montants sous un même intitulé. */
.depenses-eligibles { margin: var(--e-12) 0 0; padding: 0; border: 0; }
.depenses-eligibles legend { font-size: var(--t-14); font-weight: 600; }
