/* Formulaires publics (signature, consultation), widget anti-robot ALTCHA aux couleurs du site, administration.
   Direction A3 : champs blancs sur le fond bleu très clair, contour de 3,5:1 sur blanc (seuil des éléments
   d'interface), pastilles arrondies pour les choix ; les erreurs gardent leur couleur d'état, les avertissements le
   corail des alertes. */

.page-formulaire .intro { color: var(--encre); font-size: 1.05em; }
.formulaire { margin-top: var(--e-6); }
.champ { margin: 0 0 var(--e-5); }
.champ > label, .champ legend { display: block; font-weight: 600; font-size: 1.05rem; color: var(--encre); margin: 0 0 var(--e-1); padding: 0; }
.facultatif { font-weight: 400; color: var(--gris); font-size: 0.95rem; }
.aide { font-size: 0.98rem; line-height: 1.45; color: var(--gris); margin: 0 0 var(--e-2); }
.formulaire input[type="text"], .formulaire input[type="email"], .formulaire input[type="password"], .formulaire input[type="search"], .formulaire select, .formulaire textarea, .lien-et-copie input { display: block; width: 100%; min-height: 3rem; padding: 0.6rem 0.9rem; border: 1px solid var(--bord-champ); border-radius: 12px; background: var(--surface); color: var(--encre); font: inherit; font-size: 1.05rem; transition: border-color var(--duree-rapide) var(--courbe-sortie), box-shadow var(--duree-rapide) var(--courbe-sortie); }
.formulaire textarea { line-height: 1.5; resize: vertical; min-height: 12rem; }
.formulaire textarea[rows="4"] { min-height: 6.5rem; }
.formulaire input:focus, .formulaire select:focus, .formulaire textarea:focus, .lien-et-copie input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-pale); }
.formulaire input[type="file"] { display: block; max-width: 100%; font: inherit; font-size: 1rem; padding: 0.5rem 0; }
.fichier-ameliore input[type="file"] { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.choix-fichier { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e-2) var(--e-3); margin-top: var(--e-1); }
.choix-fichier[hidden] { display: none; }
.bouton-fichier { cursor: pointer; }
.fichier-ameliore input[type="file"]:focus-visible + .choix-fichier .bouton-fichier { outline: 3px solid var(--accent); outline-offset: 2px; }
.nom-fichier { font-size: 1rem; color: var(--gris); overflow-wrap: anywhere; min-width: 0; }
.retirer-fichier { min-height: 2.75rem; padding: 0 0.4rem; border: 0; background: none; color: var(--erreur); font: inherit; font-size: 1rem; text-decoration: underline; cursor: pointer; }
.champ-en-erreur input[type="text"], .champ-en-erreur input[type="email"], .champ-en-erreur select, .champ-en-erreur textarea { border: 2px solid var(--erreur); }
.message-erreur { color: var(--erreur); font-weight: 600; font-size: 1rem; margin: 0 0 var(--e-2); }
.deux-colonnes { display: grid; gap: 0 var(--e-4); }
@media (min-width: 30rem) { .deux-colonnes { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }

/* Choix en pastilles : profil, qualité */
fieldset.champ-qualite, fieldset.champ-profil { border: 0; padding: 0; margin: 0 0 var(--e-5); min-width: 0; }
.choix { display: flex; flex-wrap: wrap; gap: var(--e-2); }
.choix-qualite { position: relative; display: flex; align-items: center; min-height: 2.75rem; border: 2px solid var(--filet); border-radius: 999px; background: var(--surface); transition: border-color var(--duree-rapide) var(--courbe-sortie), background-color var(--duree-rapide) var(--courbe-sortie); }
.choix-qualite:hover { border-color: var(--accent); }
.choix-qualite input { position: absolute; left: 0.85rem; width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--accent); }
.choix-qualite label { padding: 0.5rem 1rem 0.5rem 2.4rem; cursor: pointer; font-weight: 600; font-size: 1.02rem; color: var(--encre); }
.choix-qualite:has(input:checked) { border-color: var(--accent); background: var(--accent-pale); }
.choix-qualite:has(input:focus-visible) { outline: 3px solid var(--accent); outline-offset: 2px; }
.champ-en-erreur .choix-qualite { border-color: var(--erreur); }
/* L'organisation ne sert qu'au nom d'une structure : elle se replie quand la signature est personnelle. Un navigateur
   sans :has la montre toujours, le serveur la tenant pour facultative à titre personnel. */
.formulaire:has(#qualite-personnel:checked) .champ-organisation, .formulaire:has(#qualite-autre:checked) .champ-organisation { display: none; }
.complements { margin: 0 0 var(--e-5); border: 2px solid var(--filet); border-radius: var(--rayon); background: var(--surface); }
.complements > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--e-3); min-height: 3rem; padding: var(--e-3) var(--e-4); cursor: pointer; font-weight: 600; color: var(--encre); list-style: none; }
.complements > summary::-webkit-details-marker { display: none; }
.complements > summary::after { content: "+"; font-size: 1.4rem; line-height: 1; color: var(--accent); }
.complements[open] > summary::after { content: "−"; }
.complements-corps { padding: 0 var(--e-4) var(--e-2); }
.champ-accord { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--e-2) var(--e-3); padding: var(--e-4); border: 2px solid var(--filet); border-radius: var(--rayon); background: var(--surface); }
.champ-accord .message-erreur { flex-basis: 100%; }
.champ-accord input { flex: none; width: 1.3rem; height: 1.3rem; margin: 0.15rem 0 0; accent-color: var(--accent); }
.champ-accord label { flex: 1; min-width: 0; font-size: 1rem; line-height: 1.5; font-weight: 400; color: var(--encre); cursor: pointer; }
.champ-en-erreur.champ-accord { border-color: var(--erreur); }
.mention-donnees { margin-top: var(--e-2); padding-top: var(--e-4); border-top: 1px solid var(--filet); font-size: 0.95rem; line-height: 1.55; color: var(--gris); }
.mention-donnees h2 { font-size: 1.05rem; margin: 0 0 var(--e-2); }
.envoi { margin-top: var(--e-6); }
.envoi .bouton { min-height: 3.25rem; padding-inline: var(--e-8); font-size: 1.15rem; }
@media (max-width: 30rem) { .envoi .bouton { width: 100%; } }
.piege { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.resume-erreurs { margin: var(--e-5) 0; padding: var(--e-4) var(--e-5); border: 2px solid var(--erreur); border-radius: var(--rayon); background: var(--fond-erreur); }
.resume-erreurs:focus { outline: none; }
.resume-erreurs h2 { font-size: 1.1rem; color: var(--erreur); margin: 0 0 var(--e-2); }
.resume-erreurs ul { margin: 0; padding-left: 1.2rem; }
.resume-erreurs a { color: var(--erreur); }
.avertissement { margin: var(--e-4) 0; padding: var(--e-3) var(--e-4); border: 1px solid var(--bord-corail); border-radius: var(--rayon); background: var(--fond-corail); color: var(--corail); font-weight: 600; font-size: 1rem; }
.compteur-caracteres { margin: var(--e-1) 0 0; font-size: 0.92rem; color: var(--gris); text-align: right; }

/* Widget anti-robot ALTCHA, aux couleurs du site */
altcha-widget { display: block; --altcha-max-width: 100%; --altcha-border-width: 2px; --altcha-border-radius: 12px; --altcha-border-color: var(--filet); --altcha-color-base: var(--surface); --altcha-color-base-content: var(--encre); --altcha-color-primary: var(--accent); --altcha-color-success: var(--succes); --altcha-color-error: var(--erreur); --altcha-shadow: none; font-family: var(--police); }
.champ-captcha { margin-bottom: var(--e-4); }
.champ-en-erreur altcha-widget { --altcha-border-color: var(--erreur); }

/* Administration */
.page-administration { max-width: var(--largeur-large); margin: 0 auto; padding: var(--e-8) var(--e-5) var(--e-12); }
.admin-entete { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--e-4); margin-bottom: var(--e-4); }
.admin-entete h1 { margin: 0; font-size: clamp(1.6rem, 1.3rem + 1.4vw, 2.2rem); }
.message-confirmation { padding: var(--e-3) var(--e-4); border: 1px solid #abefc6; border-radius: var(--rayon); background: var(--fond-succes); color: #054f31; font-weight: 600; }
.onglets ul { list-style: none; margin: var(--e-4) 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--e-2); }
.onglets a { display: inline-flex; align-items: center; gap: 0.4rem; min-height: 2.75rem; padding: 0.3rem 0.95rem; border: 2px solid var(--filet); border-radius: 999px; background: var(--surface); color: var(--encre); text-decoration: none; font-weight: 600; }
.onglets a[aria-current="page"] { border-color: var(--accent); background: var(--accent); color: #fff; }
.onglets .compte { font-weight: 400; }
.titre-vue { font-size: 1.3rem; margin: var(--e-5) 0 var(--e-3); }
.recherche-admin { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--e-2) var(--e-3); margin: 0 0 var(--e-4); }
.recherche-admin label { flex-basis: 100%; font-weight: 600; font-size: 1rem; }
.recherche-admin input, .recherche-admin select { flex: 1 1 16rem; min-height: 2.75rem; padding: 0.5rem 0.75rem; border: 1px solid var(--bord-champ); border-radius: 12px; background: var(--surface); font: inherit; }
.actions-lot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e-2) var(--e-3); margin: 0 0 var(--e-4); padding: var(--e-3) var(--e-4); border: 2px solid var(--filet); border-radius: var(--rayon); background: var(--surface); }
.tout-cocher { margin: 0 auto 0 0; display: flex; align-items: center; gap: var(--e-2); }
.case-lot { margin: 0 0 var(--e-2); display: flex; align-items: center; gap: var(--e-2); font-size: 1rem; color: var(--gris); }
.case-lot input, .tout-cocher input { width: 1.2rem; height: 1.2rem; accent-color: var(--accent); }
.pagination { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--e-3); margin-top: var(--e-4); font-size: 1rem; }
.pagination a { display: inline-flex; min-height: 2.75rem; align-items: center; }
.tableau-origines { width: 100%; border-collapse: collapse; font-size: 1rem; font-variant-numeric: tabular-nums; background: var(--surface); }
.tableau-origines caption { text-align: left; color: var(--gris); margin-bottom: var(--e-2); }
.tableau-origines th, .tableau-origines td { padding: 0.55rem 0.6rem; border-bottom: 1px solid var(--filet); text-align: right; }
.tableau-origines th[scope="row"], .tableau-origines thead th:first-child, .tableau-origines td:nth-child(2) { text-align: left; }
.tableau-jours td:nth-child(2) { text-align: left; white-space: nowrap; }
.nombre-jour { display: inline-block; min-width: 3.5ch; text-align: right; }
.barre-jour { width: 10rem; max-width: 40vw; height: 0.6rem; vertical-align: middle; border: 0; border-radius: 999px; background: var(--accent-pale); appearance: none; overflow: hidden; }
.barre-jour::-webkit-progress-bar { background: var(--accent-pale); border-radius: 999px; }
.barre-jour::-webkit-progress-value { background: var(--accent); border-radius: 999px; }
.barre-jour::-moz-progress-bar { background: var(--accent); border-radius: 999px; }
.fiche { margin: 0 0 var(--e-4); padding: var(--e-4) var(--e-5); border: 2px solid var(--filet); border-radius: var(--rayon); background: var(--surface); }
.fiche h2 { font-size: 1.25rem; margin: var(--e-1) 0 var(--e-3); overflow-wrap: anywhere; }
.fiche-entete { margin: 0; font-size: 0.95rem; color: var(--gris); }
.fiche-details { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.15rem var(--e-4); margin: 0 0 var(--e-4); }
.fiche-details dt { font-weight: 600; color: var(--encre); margin-top: var(--e-2); }
.fiche-details dd { margin: 0; overflow-wrap: anywhere; }
@media (min-width: 40rem) { .fiche-details { grid-template-columns: 13rem minmax(0, 1fr); } .fiche-details dt { margin-top: 0; } }
.apercu-logo { display: block; max-height: 4rem; width: auto; padding: 0.3rem; border: 1px solid var(--filet); border-radius: var(--rayon-petit); background: var(--surface); }
.fiche-actions { display: flex; flex-wrap: wrap; gap: var(--e-2); }
.action-fiche { margin: 0; }
.alerte { color: var(--corail); font-weight: 600; }
.texte-contribution { white-space: pre-wrap; overflow-wrap: anywhere; margin: 0 0 var(--e-4); padding: var(--e-3) var(--e-4); background: var(--fond); border-radius: var(--rayon-petit); }
.fiche-precisions { margin: 0 0 var(--e-3); color: var(--gris); overflow-wrap: anywhere; }
.vide { color: var(--gris); }
.exports, .journal { margin-top: var(--e-8); padding-top: var(--e-2); border-top: 1px solid var(--filet); }
.exports h2, .journal h2 { font-size: 1.2rem; }
.exports ul { padding-left: 1.2rem; }
.exports a { display: inline-flex; min-height: 2.75rem; align-items: center; }
.journal ul { padding-left: 1.2rem; font-size: 1rem; color: var(--gris); }
.page-connexion .formulaire { max-width: 24rem; }

/* Consultation réelle : questions d'une minute, choix de publication, contributions publiées et leur soutien, liens
   de l'administration vers la modération puis la consultation. */
.questions-fermees { margin: var(--e-8) 0 var(--e-6); padding: var(--e-5); border: 2px solid var(--filet); border-radius: var(--rayon-grand); background: var(--surface); }
.questions-fermees h2 { margin-top: 0; }
.questions-fermees .formulaire { margin: 0; }
.champ-question, .champ-publication { margin: 0 0 var(--e-5); padding: 0; border: 0; min-width: 0; }
.champ-question legend, .champ-publication legend { margin-bottom: var(--e-2); font-weight: 600; color: var(--encre); }
.lien-publiees { margin: var(--e-6) 0 0; }
.compte-publiees { color: var(--gris); font-weight: 600; }
.liste-publiees { margin: var(--e-5) 0; }
.soutien { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e-2) var(--e-3); margin: var(--e-3) 0 0; }
.soutien .compte { color: var(--gris); }
.liens-admin ul { list-style: none; margin: var(--e-3) 0 var(--e-4); padding: 0; display: flex; flex-wrap: wrap; gap: var(--e-2) var(--e-5); }
.liens-admin a { font-weight: 600; }

/* Parcours d'une contribution : lien de suivi, page de suivi, étape sur la fiche d'administration, répartition. */
.bloc-suivi { margin: var(--e-6) 0; padding: var(--e-5); border: 2px solid var(--filet); border-radius: var(--rayon-grand); background: var(--surface); }
.bloc-suivi h2 { margin-top: 0; }
.etape-actuelle { font-size: 1.15rem; }
.motif-etape { padding: var(--e-3) var(--e-4); border-radius: var(--rayon-petit); background: var(--fond); }
.parcours-contribution { margin: 0; padding-left: var(--e-5); }
.parcours-contribution li { margin: var(--e-2) 0; }
.parcours-contribution li[aria-current="step"] { font-weight: 600; color: var(--accent); }
.legende-etapes dt { font-weight: 600; margin-top: var(--e-3); }
.legende-etapes dd { margin: 0; color: var(--gris); }
.etape-admin { margin: 0 0 var(--e-4); padding: var(--e-3) var(--e-4); border-left: 4px solid var(--accent-pale); }
.formulaire-etape, .filtres-contributions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e-2) var(--e-3); margin: var(--e-2) 0; }
.formulaire-etape textarea { flex: 1 1 18rem; min-width: 0; font: inherit; }
.repartition { margin: 0 0 var(--e-6); overflow-x: auto; }
.tableau-defilant { overflow-x: auto; max-width: 100%; margin: 0 0 var(--e-5); }
.champ-texte-partage textarea { width: 100%; font: inherit; font-size: 1rem; line-height: 1.5; color: var(--encre); background: var(--fond); border: 2px solid var(--filet); border-radius: var(--rayon-petit); padding: var(--e-3); resize: vertical; }
.champ-texte-partage .copier-texte { margin-top: var(--e-2); }
