  [hidden] { display: none !important; }
  .aide-fichier { font-size: 12px; color: var(--encre-500); } /* l'attribut hidden doit gagner sur les display des classes (23/09) */
  body { background: var(--mint-50); }
  .wrap { max-width: 900px; margin: 0 auto; padding: 32px 40px 70px; }
  .head { display: flex; align-items: center; gap: 14px; padding: 16px 24px; margin: -32px -40px 28px; border-bottom: 1px solid var(--ligne); background: rgba(255,255,255,.6); backdrop-filter: blur(6px); }
  .head .avatar { width: 40px; height: 40px; }
  .head img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; display: block; }
  .head .titles { flex: 1; }
  .head h1 { font-size: 18px; font-weight: 800; margin: 0; color: var(--encre-900); }
  .head .sub { color: var(--encre-500); font-size: 12.5px; margin: 2px 0 0; }
  .head .back { font-size: 13.5px; font-weight: 700; color: var(--sauge-700); text-decoration: none; white-space: nowrap; }

  .aide { padding: 18px 22px; margin-bottom: 24px; }
  .aide h2 { font-size: 14px; font-weight: 800; color: var(--sauge-700); margin: 0 0 10px; }
  .aide ol { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 6px; }
  .aide li { font-size: 13.5px; color: var(--encre-500); line-height: 1.5; }
  .aide li strong { color: var(--encre-700); }

  .aide-lien { margin: 0 0 18px; }

  /* --- Tableau de bord du jour (20/10) : quatre groupes au plus, une ligne par chose a faire --- */
  .jour { padding: 18px 22px; margin-bottom: 10px; }
  .jour-tete { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
  .jour-tete h2 { margin: 0; font-size: 18px; font-weight: 800; color: var(--encre-900); }
  .jour-date { font-family: var(--mono); font-size: 12px; color: var(--encre-500); }
  .jour-vide { margin: 0; font-size: 13.5px; color: var(--encre-500); }
  .jour-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 18px 28px; }
  .jour-groupe h3 { margin: 0 0 6px; font-size: 15px; font-weight: 800; color: var(--encre-900); }
  .jour-n { margin-left: 4px; padding: 1px 8px; border-radius: var(--pill); background: var(--ambre-100); color: var(--ambre-700); font: 600 12px var(--mono); }
  .jour-groupe ul { list-style: none; margin: 0; padding: 0; }
  .jour-sous { margin: 8px 0 2px; font-family: var(--mono); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--encre-500); }
  .jour-lien { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; box-sizing: border-box; width: calc(100% + 20px); margin: 0 -10px; padding: 8px 10px; border: none; border-radius: var(--radius-sm); background: none; text-align: left; text-decoration: none; font: 13.5px/1.4 var(--sans); color: var(--encre-700); cursor: pointer; }
  .jour-lien:hover { background: var(--mint-50); }
  .jour-lien:focus-visible { outline: 2px solid var(--sauge-500); outline-offset: 0; }
  .jour-quand { min-width: 3.5em; font-family: var(--mono); font-size: 12.5px; font-weight: 600; color: var(--sauge-700); }
  .jour-quoi { font-weight: 700; color: var(--ambre-700); }
  .jour-qui { font-weight: 700; color: var(--encre-900); }
  .jour-ctx { font-size: 12.5px; color: var(--encre-500); }

  .toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 18px; }
  .toolbar h2 { font-size: 16px; font-weight: 800; color: var(--encre-900); margin: 0; }
  .filtres { display: flex; gap: 8px; }
  .filtres button { border: 1px solid var(--ligne); background: #fff; border-radius: var(--radius-sm); padding: 6px 12px; font: 700 12.5px var(--sans); color: var(--encre-500); cursor: pointer; }
  .filtres button.on { background: var(--sauge-700); border-color: var(--sauge-700); color: #fff; }

  /* --- Carte mission (20/10) : titre, etape et menu « ⋯ » ; barre d'etapes du pipeline ; ligne d'etat ; une seule action
     principale. overflow visible : le menu deroulant depasse de la carte. --- */
  .mission { margin-bottom: 14px; padding: 18px 22px 16px; overflow: visible; }
  /* opacity jamais sur .mission ni un ancetre du menu « ⋯ » : elle creerait un contexte d'empilement qui piegerait
     le z-index du menu deroulant sous la carte suivante (mission close) ; on ne tamise que les parties sans menu. */
  .mission.m-close .m-titre, .mission.m-close .m-ligne1 > .st, .mission.m-close .stepper-m, .mission.m-close .m-etat { opacity: .7; }
  .d-fermee { margin: 0 0 14px; padding: 10px 14px; border-radius: var(--radius-sm); background: var(--creme-75); color: var(--encre-700); font-size: 13.5px; line-height: 1.5; }
  .m-occupee { margin: 8px 0 0; font-size: 13px; color: var(--encre-500); }
  .m-haut { display: flex; flex-direction: column; gap: 10px; }
  .m-ligne1 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
  .m-titre { flex: 1 1 260px; min-width: 0; font-size: 17px; font-weight: 800; line-height: 1.3; color: var(--encre-900); margin: 0; }
  .m-ligne1 .st { margin-bottom: 0; }
  .stepper-m { margin: 0; }
  .stepper-m .stp { font-size: 11px; }
  .stepper-m .stp-rond { width: 18px; height: 18px; font-size: 10px; }
  .stepper-m .stp:not(:first-child)::before { top: 8px; }
  .m-etat { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; margin: 0; font-family: var(--mono); font-size: 12px; color: var(--encre-500); }
  .m-sep { color: var(--encre-300); }
  .m-etat-arb { border: none; background: var(--ambre-100); color: var(--ambre-700); font: 600 12px var(--mono); padding: 1px 8px; border-radius: var(--pill); cursor: pointer; }
  .m-etat-arb:hover { box-shadow: inset 0 0 0 1px var(--ambre-700); }
  .m-etat-arb:focus-visible { outline: 2px solid var(--ambre-700); outline-offset: 2px; }
  .m-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
  .toolbar .menu { margin-left: auto; }
  /* Le titre (flex: 1 1 260px) peut envoyer la pastille + le « ⋯ » sur une 2e ligne, tassee a gauche (mobile) :
     le menu reste colle a droite quelle que soit la largeur. */
  .m-ligne1 .menu { margin-left: auto; }
  .suivi-off #menu-outils { display: none; }
  /* Suivi Google Sheets non configure (recrutement-suivi-lien -> configure:false, posee par installerSuivi
     sur <body>) : masque le bouton de la barre d'outils et celui de chaque carte de mission. */
  .suivi-off [data-action="suivi-maj"] { display: none; }

  .st { display: inline-block; padding: 4px 12px; border-radius: var(--pill); font-size: 11.5px; font-weight: 700; letter-spacing: .02em; margin-bottom: 8px; }
  .st-ambre { background: var(--ambre-100); color: var(--ambre-700); }
  .st-mint { background: var(--sauge-100); color: var(--sauge-700); }
  .st-sauge { background: var(--sauge-600); color: #fff; }
  .st-bleu { background: #DCE9F7; color: #2D5C8F; }
  .st-framboise { background: var(--framboise-100); color: var(--framboise-600); }
  .st-gris { background: #E8E8E8; color: var(--encre-500); }

  .m-detail { display: none; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--ligne); }
  .m-detail.on { display: block; }
  .m-detail.d-recharge { opacity: .55; pointer-events: none; transition: opacity .2s; }
  .d-ligne { font-size: 13px; color: var(--encre-700); margin: 0 0 6px; }
  .d-ligne span { color: var(--encre-400); }
  .d-bloc { margin-top: 12px; }
  .d-bloc h3 { font-size: 15px; font-weight: 800; color: var(--encre-900); margin: 0 0 8px; }
  .d-vide { font-size: 12.5px; color: var(--encre-400); font-style: italic; }
  .d-item { font-size: 13px; color: var(--encre-700); padding: 6px 0; border-bottom: 1px dashed var(--ligne); display: flex; gap: 10px; flex-wrap: wrap; align-items: baseline; }
  .d-item:last-child { border-bottom: none; }
  /* --- Detail d'une mission en onglets Candidats · Annonce · Critères sur tous les ecrans (20/10). Seul le volet actif
     est affiche : enfants directs seulement (les panneaux des candidats portent aussi un data-onglet). --- */
  .d-entete-m { margin: 0 0 14px; }
  .d-entete-m-titre, .d-entete-m-statut { display: none; }
  .m-detail[data-onglet="candidats"] > [data-onglet]:not([data-onglet="candidats"]),
  .m-detail[data-onglet="annonce"] > [data-onglet]:not([data-onglet="annonce"]),
  .m-detail[data-onglet="criteres"] > [data-onglet]:not([data-onglet="criteres"]) { display: none; }
  .d-annonce-m { margin: 12px 0 0; }
  /* --- Liste des candidats (20/10) : une ligne par candidat separee par un filet, panneau a onglets sous la ligne
     ouverte. Plus de fond creme autour de la liste ni de lisere colore a gauche ; pas de content-visibility (il
     couperait les menus « ⋯ »). --- */
  .cand-liste { display: flex; flex-direction: column; border-top: 1px solid var(--ligne); }
  .cand { padding: 12px 4px; border-bottom: 1px solid var(--ligne); }
  .cand.cand-ouvert { margin: 6px -14px; padding: 14px 18px 16px; background: var(--mint-50); border: 1px solid var(--sauge-200); border-radius: var(--radius-md); }
  .cand.cand-confirme { box-shadow: 0 0 0 3px var(--sauge-200); border-radius: var(--radius-md); transition: box-shadow .4s; }
  .cand-ligne { display: flex; justify-content: space-between; align-items: center; gap: 8px 14px; flex-wrap: wrap; }
  .cand-gauche, .cand-droite { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; min-width: 0; }
  /* Si la ligne passe a deux lignes (titre long, ecran etroit sans etre mobile), le groupe de droite reste colle
     a droite plutot que de revenir sous le groupe de gauche (20/10). */
  .cand-droite { margin-left: auto; justify-content: flex-end; }
  .cand-nom { display: inline-flex; align-items: center; gap: 8px; border: none; background: none; padding: 4px 6px; margin: -4px -6px; border-radius: var(--radius-sm); font: 800 14.5px/1.3 var(--sans); color: var(--encre-900); cursor: pointer; text-align: left; }
  .cand-nom:hover { color: var(--sauge-700); }
  .cand-nom:focus-visible { outline: 2px solid var(--sauge-500); outline-offset: 2px; }
  .cand-nom .chevron { width: 7px; height: 7px; flex: none; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(-45deg); opacity: .55; transition: transform .18s ease-out; }
  .cand-nom[aria-expanded="true"] .chevron { transform: rotate(45deg); }
  .cand-rang { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: var(--pill); background: var(--creme-75); color: var(--encre-500); font: 700 11px var(--mono); }
  .cand-statut { font-size: 12px; font-weight: 700; color: var(--encre-700); padding: 3px 10px; border-radius: var(--pill); background: var(--creme-75); white-space: nowrap; }
  .cand-confirmation { font-size: 11.5px; font-weight: 700; color: var(--sauge-700); }
  .cand-confirmation:empty { display: none; }
  .cand-termine { font-size: 12.5px; font-weight: 700; color: var(--sauge-700); padding: 7px 14px; border-radius: var(--pill); background: var(--sauge-100); white-space: nowrap; }
  .cand-occupe { display: inline-flex; }
  .cand-chrono { font-family: var(--mono); font-variant-numeric: tabular-nums; }
  .pastille-deplace { background: #DCE9F7; color: #2D5C8F; }
  .mst { display: inline-flex; gap: 4px; align-items: center; }
  .mst-pt { width: 8px; height: 8px; box-sizing: border-box; border-radius: 50%; background: #fff; border: 1.5px solid var(--encre-300); }
  .mst-done { background: var(--sauge-600); border-color: var(--sauge-600); }
  .mst-current, .mst-running { border-color: var(--sauge-600); box-shadow: 0 0 0 2px var(--sauge-100); }
  .mst-error { background: var(--framboise-500); border-color: var(--framboise-500); }
  .cand-panneau { margin-top: 12px; }
  .cand-volet { padding-top: 14px; }
  .cand-panneau[data-onglet="suivi"] .cand-volet:not([data-volet="suivi"]),
  .cand-panneau[data-onglet="score"] .cand-volet:not([data-volet="score"]),
  .cand-panneau[data-onglet="pieces"] .cand-volet:not([data-volet="pieces"]),
  .cand-panneau[data-onglet="entretien"] .cand-volet:not([data-volet="entretien"]) { display: none; }
  .cand-contact { margin: 0 0 8px; font-family: var(--mono); font-size: 12px; color: var(--encre-500); }
  @media (prefers-reduced-motion: reduce) { .cand.cand-confirme, .cand-nom .chevron { transition: none; } .m-detail.d-recharge { transition: none; } }
  .score-badge { font-weight: 800; padding: 2px 10px; border-radius: var(--pill); font-size: 12px; }
  .score-haut { background: var(--sauge-100); color: var(--sauge-700); }
  .score-moyen { background: var(--ambre-100); color: var(--ambre-700); }
  .score-bas { background: var(--framboise-100); color: var(--framboise-600); }
  .cand-ko { margin: 6px 0 0 30px; font-size: 12px; font-weight: 600; color: var(--framboise-600); }
  .cand-comm { margin: 4px 0 0 30px; font-size: 12.5px; color: var(--encre-500); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .cand-ouvert .cand-comm { white-space: normal; }
  .cand-outils { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 6px; }
  .cand-outils select, .cand-outils textarea { font-family: var(--sans); font-size: 12.5px; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 6px 8px; background: #fff; color: var(--encre-700); }
  .cand-outils textarea { flex: 1; min-width: 220px; min-height: 34px; resize: vertical; }
  .pj-bloc { margin: 0; padding: 0; border: none; background: none; }
  .pj-tete { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
  .pj-tete strong { font-size: 15px; font-weight: 800; color: var(--encre-900); }
  .pj-compte { font-size: 11.5px; color: var(--encre-400); }
  .pj-tete .lien-plat { margin-left: auto; }
  .pj-vide { font-size: 12.5px; color: var(--encre-400); margin: 6px 0 0; }
  .pj-dossier { margin: 10px 0 0; }
  .pj-liste { list-style: none; margin: 6px 0 0; padding: 0; }
  .pj-item { display: flex; gap: 10px; align-items: center; padding: 6px 0; border-top: 1px solid var(--ligne); }
  .pj-item:first-child { border-top: none; }
  .pj-ico { flex: none; }
  .pj-texte { flex: 1; min-width: 0; display: flex; flex-direction: column; }
  .pj-libelle { font-size: 13px; font-weight: 700; color: var(--encre-900); overflow-wrap: anywhere; }
  .pj-meta { font-family: var(--mono); font-size: 11.5px; color: var(--encre-500); }
  .pj-actions { display: flex; gap: 6px; flex: none; }
  .pj-lien-invalide { font-size: 12px; color: var(--encre-400); font-style: italic; }
  .pj-form { margin-top: 10px; display: grid; gap: 8px; }
  .pj-genre { display: flex; gap: 16px; font-size: 12.5px; }
  .pj-champ { display: grid; gap: 3px; }
  .pj-champ label { font-size: 11.5px; font-weight: 700; color: var(--encre-500); }
  .pj-champ input[type="text"], .pj-champ input[type="url"] { font-family: var(--sans); font-size: 12.5px; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 6px 8px; }
  .pj-plein { font-size: 12.5px; color: var(--ambre-700); margin: 8px 0 0; }
  .cand-date { font-family: var(--mono); font-size: 11.5px; color: var(--encre-500); white-space: nowrap; }
  .cand-check { width: 16px; height: 16px; margin-right: 2px; }
  .cand-check-zone { display: inline-flex; }
  .sc-liste { margin-top: 6px; }
  .sc-crit { padding: 10px 0; border-bottom: 1px dashed var(--ligne); }
  .sc-crit:last-child { border-bottom: none; }
  .sc-tete { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
  .sc-nom { font-weight: 700; color: var(--encre-900); font-size: 13px; }
  .sc-note { font-weight: 800; font-size: 15px; color: var(--sauge-700); white-space: nowrap; font-variant-numeric: tabular-nums; }
  .sc-note .src { font-weight: 600; }
  .sc-note.faible { color: var(--framboise-600); }
  .sc-note.hors { font-size: 12px; font-weight: 600; color: var(--encre-400); }
  .sc-jauge { height: 5px; border-radius: var(--pill); background: var(--creme-75); margin: 5px 0 6px; overflow: hidden; }
  .sc-jauge > span { display: block; height: 100%; background: var(--sauge-500); border-radius: var(--pill); }
  .sc-jauge > span.faible { background: var(--framboise-600); }
  .sc-just { font-size: 12px; color: var(--encre-500); }
  .cand-filtres { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 8px; }
  .cand-filtres button { border: 1px solid transparent; background: var(--mint-50); border-radius: var(--radius-sm); padding: 4px 10px; font: 700 12px var(--sans); color: var(--encre-500); cursor: pointer; }
  .cand-filtres button.on { background: var(--sauge-700); color: #fff; }
  .cand-filtres-sep { width: 1px; align-self: stretch; background: var(--ligne); margin: 0 4px; }
  .cand-filtres-lbl { font-family: var(--mono); font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--encre-400); align-self: center; }
  .lot-barre { display: flex; gap: 8px; align-items: center; margin: 6px 0 4px; font-size: 12.5px; color: var(--encre-500); }
  .lien-plat { background: none; border: none; color: var(--sauge-700); font-weight: 700; font-size: 12px; cursor: pointer; padding: 0; font-family: var(--sans); }

  /* --- Scoring v2 : groupe, ex aequo, nature des preuves, transversales (23/09) --- */
  .score-groupe { font-size: 11.5px; font-weight: 700; color: var(--encre-500); }
  .pastille { display: inline-block; padding: 1px 8px; border-radius: var(--pill); font-size: 10.5px; font-weight: 800; letter-spacing: .02em; white-space: nowrap; }
  .pastille-exaequo { background: #DCE9F7; color: #2D5C8F; cursor: help; }
  .nat-directe { background: var(--sauge-100); color: var(--sauge-700); }
  .nat-transferable { background: var(--ambre-100); color: var(--ambre-700); }
  .nat-absente { background: #E8E8E8; color: var(--encre-500); }
  .crit-preuve { display: block; font-size: 11.5px; color: var(--encre-400); margin-top: 2px; }
  .crit-preuve b { color: var(--encre-500); font-weight: 700; }
  .crit-corr { margin: 4px 0 0 16px; padding: 0; font-size: 12px; color: var(--encre-500); }
  .cand-v1 { font-size: 11.5px; color: var(--encre-400); font-style: italic; }
  .cand-v1 .lien-plat { font-style: normal; font-size: 11.5px; }
  .score-sections { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 8px; }
  .score-section { flex: 1 1 260px; min-width: 0; font-size: 12px; color: var(--encre-700); }
  .score-section h4 { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--sauge-700); margin: 0 0 4px; }
  .score-section h4 small { text-transform: none; letter-spacing: 0; font-weight: 600; color: var(--encre-400); margin-left: 6px; }
  .score-section ul { margin: 0; padding-left: 18px; }
  .score-section li { margin-bottom: 3px; line-height: 1.45; }
  .score-section .src { color: var(--encre-400); }

  /* --- Grille de la mission (criteres d'evaluation editables) --- */
  .grille-m-tete { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
  .grille-toggle { background: none; border: none; padding: 0; cursor: pointer; font-family: var(--sans); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--sauge-700); display: inline-flex; gap: 6px; align-items: center; }
  .grille-toggle .fleche { display: inline-block; transition: transform .15s; }
  .grille-toggle[aria-expanded="true"] .fleche { transform: rotate(90deg); }
  .grille-m-resume { font-size: 12px; color: var(--encre-400); }
  .grille-m-corps { margin-top: 8px; }
  .grille-m-aide { font-size: 12.5px; color: var(--encre-500); line-height: 1.5; margin: 0 0 8px; }
  .grille-scroll { overflow-x: auto; position: relative; } /* contient la legende .vh (absolue) : sinon debordement de page sur mobile */
  .grille-m-table { width: 100%; border-collapse: collapse; font-size: 12.5px; min-width: 620px; }
  .grille-m-table caption { text-align: left; }
  .grille-m-table th { text-align: left; font-size: 11px; font-weight: 800; color: var(--encre-500); padding: 4px 6px; border-bottom: 1px solid var(--ligne); white-space: nowrap; }
  .grille-m-table td { padding: 4px 6px; border-bottom: 1px dashed var(--ligne); vertical-align: middle; }
  .grille-m-table input[type="text"], .grille-m-table input[type="number"], .grille-m-table select { font-family: var(--sans); font-size: 12.5px; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 5px 7px; background: #fff; color: var(--encre-700); box-sizing: border-box; }
  .grille-m-table input[type="text"] { width: 100%; min-width: 200px; }
  .grille-m-table input[type="number"] { width: 64px; }
  .grille-m-table .retenu { font-variant-numeric: tabular-nums; color: var(--encre-500); white-space: nowrap; }
  .grille-m-table tr.non-eval td { background: var(--mint-50); }
  .grille-m-table .suppr { background: none; border: none; font-size: 18px; line-height: 1; color: var(--encre-400); cursor: pointer; padding: 2px 6px; font-family: var(--sans); }
  .grille-m-table .suppr:hover:not(:disabled) { color: var(--framboise-600); }
  .grille-m-table .suppr:disabled { opacity: .35; cursor: not-allowed; }
  .crit-liste { display: flex; flex-direction: column; gap: 10px; margin: 8px 0; }
  .crit-fiche { border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 10px 12px; background: #fff; }
  .crit-fiche.non-eval { background: var(--mint-50); }
  .crit-lib-lab { display: block; font-size: 11px; font-weight: 800; color: var(--encre-500); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 4px; }
  .crit-lib { width: 100%; box-sizing: border-box; font-family: var(--sans); font-size: 14px; line-height: 1.4; color: var(--encre-700); font-weight: 600; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 7px 9px; resize: vertical; overflow: hidden; }
  .crit-reglages { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 8px; font-size: 13px; color: var(--encre-700); }
  .crit-reglages input[type="number"], .crit-reglages select { font-family: var(--sans); font-size: 13px; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 5px 7px; background: #fff; color: var(--encre-700); }
  .crit-reglages input[type="number"] { width: 64px; margin-left: 4px; }
  .crit-reglages .retenu { font-variant-numeric: tabular-nums; color: var(--encre-500); white-space: nowrap; }
  .crit-ind { display: inline-flex; align-items: center; gap: 6px; }
  .crit-reglages .suppr { margin-left: auto; background: none; border: none; font-size: 20px; line-height: 1; color: var(--encre-400); cursor: pointer; padding: 2px 6px; font-family: var(--sans); }
  .crit-reglages .suppr:hover:not(:disabled) { color: var(--framboise-600); }
  .crit-reglages .suppr:disabled { opacity: .35; cursor: not-allowed; }
  .bareme-ligne { margin-top: 6px; }
  .bareme-ligne summary { cursor: pointer; font-size: 13px; color: var(--encre-500); padding: 4px 0; }
  .bareme-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; margin: 8px 0; }
  .bareme-grille label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
  .bareme-grille label.large { grid-column: 1 / -1; }
  .bareme-grille textarea { width: 100%; font: inherit; }
  .grille-m-total { font-size: 12.5px; color: var(--encre-700); margin: 8px 0 0; }
  .grille-m-total.ko { color: var(--framboise-600); font-weight: 700; }
  .grille-m-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 10px; }
  .grille-m-note { font-size: 12px; color: var(--sauge-700); font-weight: 600; }
  /* --- Arbitrage des rattachements incertains (24/09) --- */
  .pastille-provisoire { background: var(--ambre-100); color: var(--ambre-700); cursor: help; }
  .note-arb { font-size: 11.5px; color: var(--encre-400); font-style: italic; }
  .arb-bloc { padding: 14px 16px; border: 1px solid var(--ambre-100); border-radius: var(--radius-md); background: var(--ambre-50); }
  .arb-aide { font-size: 12.5px; color: var(--encre-500); line-height: 1.5; margin: 0 0 8px; }
  .arb-liste { list-style: none; margin: 0; padding: 0; }
  .arb-point { padding: 6px 0 0; }
  .arb-titre { font-size: 13px; color: var(--encre-700); overflow-wrap: anywhere; }
  .arb-meta { display: block; font-size: 12px; color: var(--encre-500); margin-top: 2px; overflow-wrap: anywhere; }
  .arb-alerte { display: block; font-size: 12px; color: var(--ambre-700); font-weight: 700; margin-top: 2px; }
  .arb-boutons { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
  .arb-decisions { margin-top: 8px; font-size: 12.5px; color: var(--encre-700); }
  .arb-appliquer { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-bottom: 10px; padding: 10px 12px; border: 1.5px solid var(--ambre-700); border-radius: var(--radius-sm); background: #fff; font-size: 13px; color: var(--encre-700); }
  .arb-attente { display: inline-block; font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 999px; background: var(--ambre-100); color: var(--ambre-700); }
  .arb-decisions summary { cursor: pointer; font-weight: 700; color: var(--encre-500); padding: 4px 0; }
  .arb-decisions li { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 3px 0; overflow-wrap: anywhere; }
  .arb-tete { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
  .arb-tete h3 { margin: 0; color: var(--ambre-700); }
  .arb-corps { margin-top: 10px; }
  .arb-pos { margin: 0 0 4px; font-family: var(--mono); font-size: 12px; color: var(--encre-500); }
  .arb-suivant { margin-top: 10px; }

  /* Boite « entretiens a rattacher » (transcriptions arrivees sans candidat) */
  .inbox { padding: 18px 22px; margin-bottom: 24px; }
  .inbox h2 { font-size: 14px; font-weight: 800; color: var(--framboise-600); margin: 0 0 4px; }
  .inbox .inbox-aide { font-size: 12.5px; color: var(--encre-500); margin: 0 0 12px; line-height: 1.5; }
  .inbox-item { padding: 12px 0; border-top: 1px solid var(--ligne); }
  .inbox-item:first-of-type { border-top: none; }
  .inbox-titre { font-size: 13.5px; font-weight: 700; color: var(--encre-900); }
  .inbox-date { font-size: 11.5px; color: var(--encre-400); margin-left: 8px; font-weight: 500; }
  .inbox-extrait { font-size: 12.5px; color: var(--encre-500); font-style: italic; margin: 4px 0 8px; line-height: 1.5; }
  .inbox-form { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; font-size: 12.5px; color: var(--encre-500); }
  .inbox-form select, .inbox-form input[type="date"] { font-family: var(--sans); font-size: 12.5px; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 6px 8px; background: #fff; color: var(--encre-700); max-width: 100%; }
  .inbox-form select { min-width: 240px; }

  /* Bloc « Entretien » de la fiche candidat (machine a etats WF-4) */
  .ent-bloc { margin: 0; padding: 0; background: none; border: none; border-radius: 0; }
  .ent-tete { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
  .ent-tete strong { font-size: 15px; font-weight: 800; color: var(--encre-900); }
  .ent-statut { font-size: 11.5px; color: var(--encre-500); }
  .ent-suite { font-size: 13px; color: var(--encre-700); margin: 4px 0 10px; line-height: 1.5; }
  .ent-suite b { color: var(--sauge-700); }
  .ent-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
  .ent-flash { animation: entFlash 2s ease-out; }
  @keyframes entFlash { 0%, 35% { box-shadow: 0 0 0 4px var(--sauge-300); background: var(--ambre-50); } 100% { box-shadow: 0 0 0 0 transparent; } }

  /* --- Stepper grille -> entretien -> CR -> synthese -> validee --- */
  .stepper { list-style: none; display: flex; flex-wrap: wrap; row-gap: 8px; padding: 0; margin: 12px 0 8px; }
  .stp { flex: 1 1 0; min-width: 58px; position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; font-size: 11.5px; color: var(--encre-500); }
  .stp:not(:first-child)::before { content: ''; position: absolute; top: 12px; right: 50%; width: 100%; height: 2px; background: var(--encre-300); opacity: .5; }
  .stp.stp-done + .stp::before { background: var(--sauge-600); opacity: 1; }
  .stp-rond { position: relative; z-index: 1; width: 26px; height: 26px; box-sizing: border-box; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 800; background: #fff; border: 2px solid var(--encre-300); color: var(--encre-400); }
  .stp-lbl { line-height: 1.25; }
  .stp-note { display: block; font-size: 10.5px; font-weight: 700; color: var(--ambre-700); }
  .stp-done .stp-rond { background: var(--sauge-600); border-color: var(--sauge-600); color: #fff; }
  .stp-done { color: var(--sauge-700); }
  .stp-current .stp-rond, .stp-running .stp-rond { border-color: var(--sauge-600); color: var(--sauge-700); }
  .stp-current, .stp-running { color: var(--encre-900); font-weight: 800; }
  .stp-running .stp-rond::after { content: ''; position: absolute; inset: -5px; border-radius: 50%; border: 2px solid transparent; border-top-color: var(--sauge-500); border-right-color: var(--sauge-500); animation: tourne 1s linear infinite; }
  .stp-error .stp-rond { background: var(--framboise-500); border-color: var(--framboise-500); color: #fff; }
  .stp-error { color: var(--framboise-600); font-weight: 800; }

  /* --- Panneau de traitement IA (chrono + barre) et panneau d'echec --- */
  .ent-proc { display: flex; gap: 14px; align-items: flex-start; margin: 4px 0 12px; padding: 14px 16px; background: #fff; border: 1.5px solid var(--sauge-300); border-radius: var(--radius-sm); }
  .ent-proc-corps { flex: 1; min-width: 0; }
  .ent-proc-titre { margin: 0 0 4px; font-size: 14px; font-weight: 800; color: var(--encre-900); display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
  .ent-proc-chrono { font-variant-numeric: tabular-nums; font-size: 14px; font-weight: 800; color: var(--sauge-700); background: var(--sauge-100); border-radius: var(--pill); padding: 1px 10px; }
  .ent-proc-sous { margin: 0 0 10px; font-size: 12.5px; color: var(--encre-500); line-height: 1.5; }
  .ent-proc-sous.lent { color: var(--ambre-700); font-weight: 600; }
  .ent-proc-barre { height: 6px; border-radius: var(--pill); background: var(--sauge-100); overflow: hidden; }
  .ent-proc-barre > span { display: block; height: 100%; width: 0; background: var(--sauge-500); border-radius: var(--pill); transition: width 1s linear; }
  .ent-echec { margin: 4px 0 12px; padding: 14px 16px; background: var(--framboise-100); border: 1.5px solid var(--framboise-500); border-radius: var(--radius-sm); color: var(--framboise-600); font-size: 13px; line-height: 1.5; }
  .ent-echec strong { display: block; font-size: 14px; margin-bottom: 2px; }

  /* --- Sous-cartes : grille, depot, compte rendu --- */
  .ent-grille, .ent-depot { margin-top: 16px; padding: 14px 0 0; background: none; border: none; border-top: 1px solid var(--ligne); border-radius: 0; font-size: 12.5px; color: var(--encre-700); line-height: 1.55; }
  .ent-grille h4 { font-size: 11.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--sauge-700); margin: 12px 0 4px; }
  .ent-grille h4:first-child { margin-top: 0; }
  .ent-sous-titre { font-size: 13.5px !important; font-weight: 800; text-transform: none !important; letter-spacing: 0 !important; color: var(--encre-900) !important; margin: 0 0 10px !important; }
  .ent-grille .ent-accroche { font-style: italic; color: var(--encre-500); }
  .ent-grille .ent-axe { margin-bottom: 8px; }
  .ent-grille .ent-axe-titre { font-weight: 700; color: var(--encre-900); }
  .ent-grille .ent-axe-obj { color: var(--encre-400); font-size: 12px; }
  .ent-grille ul { margin: 4px 0 0; padding-left: 18px; }
  .ent-grille li { margin-bottom: 2px; }
  .ent-depot .ent-radios { display: flex; gap: 16px; flex-wrap: wrap; font-size: 13px; margin-bottom: 8px; }
  .ent-depot textarea { width: 100%; box-sizing: border-box; min-height: 140px; resize: vertical; font-family: var(--sans); font-size: 12.5px; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 8px; color: var(--encre-700); }
  .ent-outils { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 8px; font-size: 12.5px; color: var(--encre-500); }
  .ent-depot input[type="date"] { font-family: var(--sans); font-size: 12.5px; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 6px 8px; background: #fff; color: var(--encre-700); }
  .ent-consent { margin-top: 10px; padding: 8px 10px; background: var(--ambre-50); border-radius: var(--radius-sm); }
  .ent-consent .ent-outils { margin-top: 0; }
  .ent-consent-aide { margin: 4px 0 0; font-size: 12px; color: var(--ambre-700); }
  .ent-remplace { margin-top: 10px; padding: 8px 10px; background: var(--ambre-50); border-radius: var(--radius-sm); }
  .ent-remplace p { margin: 0 0 6px; font-size: 12px; color: var(--ambre-700); }
  .ent-remplace label { font-size: 13px; }
  .ent-cr textarea { width: 100%; box-sizing: border-box; min-height: 260px; resize: vertical; font-family: var(--sans); font-size: 12.5px; line-height: 1.55; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 10px; color: var(--encre-700); }
  .ent-sources { font-size: 11.5px; font-weight: 400; text-transform: none; color: var(--encre-500); }
  .ent-ecarts { margin: 0 0 10px; padding: 10px 12px; background: var(--ambre-50); border: 1px solid var(--ambre-100); border-radius: var(--radius-sm); font-size: 12.5px; color: var(--ambre-700); }
  .ent-ecarts ul { margin: 6px 0; padding-left: 18px; }
  .ent-ecarts strong { display: block; }
  .ent-rappel { margin: 0 0 10px; padding: 10px 12px; background: var(--ambre-50); border: 1px solid var(--ambre-100); border-radius: var(--radius-sm); font-size: 12.5px; line-height: 1.45; color: var(--ambre-700); }

  .ent-matiere { font-size: 12px; color: var(--encre-500); margin: 0 0 8px; }
  .ent-notes-maj { font-size: 12px; color: var(--sauge-700); font-weight: 600; margin: -4px 0 10px; }

  /* --- Planification de l'entretien (Google Agenda) et suivi Google Sheets --- */
  .ent-planif-bloc { margin: 0 0 10px; }
  .ent-planif { font-size: 12.5px; color: var(--encre-700); margin: 0 0 8px; }
  .ent-planif a { font-weight: 700; color: var(--sauge-700); }
  .planif-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; margin: 8px 0; }
  .planif-form label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; font-weight: 600; color: var(--encre-500); }
  .planif-form .planif-lieu { grid-column: 1 / -1; }
  .planif-form input, .planif-form select { min-height: 36px; box-sizing: border-box; width: 100%; font-family: var(--sans); font-size: 12.5px; border: 1.5px solid var(--ligne); border-radius: var(--radius-sm); padding: 6px 8px; background: #fff; color: var(--encre-700); }

  .empty { text-align: center; color: var(--encre-400); padding: 48px 24px; font-size: 14px; line-height: 1.6; }

  @media (prefers-reduced-motion: reduce) {
    .ent-proc-barre > span { transition: none; }
    .stp-running .stp-rond::after { animation-duration: 3s; }
    .ent-flash { animation: none; box-shadow: 0 0 0 4px var(--sauge-300); }
  }
  .chargement { text-align: center; color: var(--encre-400); padding: 40px; font-size: 14px; }
  @media (max-width: 640px) { .wrap { padding: 24px 18px 60px; } .head { margin: -24px -18px 22px; } }

  /* --- Smartphone (<= 640 px) : en-tete de mission collant et onglets, cartes compactes a trois
     boutons (Score / Entretien / Modifier -> feuille d'action), barre de lot collante en bas.
     Hors mobile, ces elements sont masques et l'affichage ordinateur reste inchange. --- */
  .lot-compte, .lot-court { display: none; }
  @media (max-width: 640px) {
    .wrap { padding: 16px 16px 80px; }
    .head { margin: -16px -16px 16px; padding: 12px 16px; gap: 10px; }
    .head .avatar, .head img { width: 32px; height: 32px; }
    .head h1 { font-size: 16px; }
    .head .sub { display: none; }
    .jour { padding: 14px 16px; }
    .jour-grille { grid-template-columns: 1fr; }
    .jour-lien { min-height: 44px; }
    .mission { padding: 14px 16px; }
    .m-actions .btn { flex: 1 1 auto; min-height: 44px; }
    .stepper-m .stp { min-width: 0; }
    .stepper-m .stp:not(.stp-current):not(.stp-error) .stp-lbl { display: none; }
    .d-entete-m { display: block; position: sticky; top: 0; z-index: 5; background: rgba(253,250,244,.94); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); margin: 0 -16px 10px; padding: 10px 16px 8px; border-bottom: 1px solid var(--ligne); }
    /* Les onglets portent eux-memes un filet (hors mobile) : sous l'en-tete collante, ca double la bordure (20/10). */
    .d-entete-m .onglets { border-bottom: 0; }
    .d-entete-m-titre { display: block; font-weight: 800; font-size: 15px; color: var(--encre-900); margin-bottom: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .d-entete-m-statut { display: block; margin: 0 0 8px; }
    .d-entete-m-statut .st { margin-bottom: 0; }
    .cand-filtres { flex-wrap: nowrap; overflow-x: auto; margin: 0 -16px 8px; padding: 2px 16px 8px; scrollbar-width: none; }
    .cand-filtres::-webkit-scrollbar { display: none; }
    .cand-filtres button { flex: none; min-height: 44px; padding: 6px 12px; font-size: 12px; white-space: nowrap; }
    .cand-filtres-sep, .cand-filtres-lbl { flex: none; }
    /* Barre de lot placee apres la liste (order) : collee en bas tant que la liste est a l'ecran. */
    [id^="bloc-cand-"] { display: flex; flex-direction: column; }
    [id^="bloc-cand-"] > .lot-barre { order: 1; }
    .cand { padding: 12px 0; }
    /* Le menu « ⋯ » colle en haut a droite, a cote du nom : statut, mini-etapes et action principale tiennent
       sur la 2e ligne sans lui (20/10). */
    .cand-ligne { align-items: flex-start; position: relative; }
    .cand-gauche { flex: 1 1 100%; padding-right: 48px; }
    /* Le nom ne descend jamais sous son mot le plus long : les pastilles passent a la ligne plutot que de le chevaucher. */
    .cand-nom { flex: 0 1 auto; min-width: min-content; min-height: 44px; font-size: 15px; }
    .cand-droite { width: 100%; justify-content: flex-end; }
    .cand-droite .menu { position: absolute; top: 0; right: 0; }
    .cand-comm, .cand-ko { margin-left: 0; white-space: normal; }
    .feuille .cand-panneau { margin-top: 0; }
    .feuille .onglets { position: sticky; top: 0; z-index: 1; background: #fff; }
    .cand-check { width: 20px; height: 20px; }
    .cand-check-zone { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; margin: -12px 0 -12px -12px; }
    .lot-barre { position: sticky; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); z-index: 5; margin: 10px 0 0; background: var(--encre-900); color: #fff; border-radius: 16px; padding: 10px 12px; box-shadow: 0 10px 30px rgba(0,0,0,.25); display: none; align-items: center; gap: 8px; }
    .lot-barre[data-selection]:not([data-selection="0"]) { display: flex; }
    .lot-barre label { flex: 1; min-width: 0; min-height: 44px; display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 700; }
    .lot-barre .cand-check { accent-color: var(--sauge-300); flex: none; }
    .lot-libelle, .lot-long { display: none; }
    .lot-compte, .lot-court { display: inline; }
    .lot-barre .btn { flex: none; border-color: rgba(255,255,255,.6); color: #fff; background: none; min-height: 44px; padding: 8px 12px; }
    .lot-barre .btn:hover { background: rgba(255,255,255,.12); border-color: #fff; }
    .feuille .cand-outils { display: flex; flex-direction: column; align-items: stretch; }
    .feuille .cand-outils select, .feuille .cand-outils textarea { min-height: 44px; }
    .feuille .cand-outils textarea { flex: none; min-width: 0; min-height: 96px; }
    .pj-item { flex-wrap: wrap; }
    .pj-actions .btn { min-height: 44px; }
    .pj-champ input { font-size: 16px; min-height: 44px; }
    /* Pastille visuellement petite, mais une cible tactile de 44 px grace a ::after (20/10) : sans ca, la pastille
       ambre pesait visuellement autant qu'un bouton. */
    .m-etat-arb { position: relative; padding: 5px 10px; }
    .m-etat-arb::after { content: ''; position: absolute; inset: -10px 0; }
    .filtres button { min-height: 44px; }
    .feuille .ent-bloc { margin-top: 0; }
    .feuille .ent-actions { flex-direction: column; align-items: stretch; }
    .feuille .btn { min-height: 44px; }
    .planif-form input, .planif-form select { min-height: 44px; }
    /* Champs en 16 px : en dessous, iOS zoome la page au focus (prioritaire sur les tailles par classe). */
    input:not([type="checkbox"]):not([type="radio"]), select, textarea { font-size: 16px !important; }
    .btn, .lien-plat { min-height: 44px; }
  }
