/* ============================================================
   Gestion d'organisme (plateforme.conversa.fr, 2026-10-12).
   Complete style.css et volets.css ; aucune couleur ecrite ici (jetons de style.css).
   ============================================================ */

/* --- volets a deux colonnes (liste + fiche), sans vue de l'apprenant --- */
@media (min-width: 1280px) {
    .cv-zone.gs-deux { grid-template-columns: 340px minmax(0, 1fr); }
}

/* --- formulaire dans un volet : largeur de saisie bornee, page pleine (regle 11d) --- */
.gs-fiche { max-width: 980px; overflow: visible; }
.gs-fiche .cv-traite { margin-top: 6px; }
.gs-siret { display: flex; gap: 12px; align-items: flex-start; flex-wrap: wrap; }
.gs-siret .form-field { flex: 1 1 260px; margin: 0; }
.gs-siret .btn { margin-top: 26px; }

/* --- un formulaire a un seul bouton, dans une ligne de boutons : jamais un bloc (regle 11f) --- */
.gs-en-ligne { display: inline-block; margin: 0; }

/* --- cases a cocher des societes confiees --- */
.gs-cases { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 6px 16px; }
.gs-case { display: flex; gap: 8px; align-items: baseline; font-weight: 500; cursor: pointer; }
.gs-case small { color: var(--texte-3); font-weight: 400; }
.gs-puces { margin: 0; padding-left: 20px; }

/* --- rattachement en lot --- */
.gs-col-case { width: 36px; }
.gs-lot-barre { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: -8px 0 16px; padding: 10px 14px; border: 1px solid var(--bord); border-radius: var(--rayon); background: var(--surface); }
.gs-lot-barre select { width: auto; min-width: 220px; }
.gs-lot-barre .cv-aide { flex-basis: 100%; margin: 0; }
.gs-rattacher { margin-top: 14px; }
.gs-filtre { display: inline-flex; gap: 8px; flex-wrap: wrap; margin: 0; }
.gs-filtre select { width: auto; min-height: 36px; }

/* --- tableau de bord --- */
.gs-faire { background: var(--surface); border: 1px solid var(--bord); border-left: 4px solid var(--marque-primaire); border-radius: var(--rayon); padding: 18px 22px; margin-bottom: 18px; }
.gs-faire h2 { margin: 4px 0 6px; font-size: 20px; }
.gs-faire p { margin: 0 0 10px; color: var(--texte-2); max-width: 75ch; }
.gs-chiffres { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; margin-bottom: 22px; }
.gs-chiffre { display: block; background: var(--surface); border: 1px solid var(--bord); border-radius: var(--rayon); padding: 14px 16px; color: var(--texte); text-decoration: none; }
.gs-chiffre:hover, .gs-chiffre:focus-visible { border-color: var(--marque-primaire); }
.gs-chiffre b { display: block; font-size: 24px; font-variant-numeric: tabular-nums; }
.gs-chiffre span { font-size: 13px; color: var(--texte-2); }
.gs-lignes { background: var(--surface); border: 1px solid var(--bord); border-radius: var(--rayon); padding: 18px 22px; }
.gs-lignes h2 { margin: 0 0 10px; font-size: 18px; }
.gs-lignes ol { margin: 0; padding-left: 22px; display: grid; gap: 10px; }
.gs-lignes li b { display: block; }
.gs-lignes li { color: var(--texte-2); }

/* --- selecteur de societe (responsable formation), dans la barre laterale --- */
.gs-societe { margin: 10px 12px; display: grid; gap: 4px; }
.gs-societe label { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--texte-3); }
.gs-societe select { min-height: 34px; font-size: 13px; }

/* --- pages d'acces --- */
.gs-code { font-size: 26px; letter-spacing: .3em; text-align: center; font-variant-numeric: tabular-nums; }
.gs-renvoi { display: flex; gap: 8px; flex-wrap: wrap; margin: 0; }
.gs-ou { text-align: center; margin: 4px 0; }

/* --- registre RGPD --- */
.gs-registre { display: grid; gap: 14px; margin-bottom: 14px; }
.gs-traitement { overflow: visible; }
.gs-compte .cv-vol { overflow: visible; }

/* --- lot G1 : alertes dans la ligne, fiches --- */
.gs-alerte { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin-right: 6px; padding: 0; border: 0; border-radius: 6px; background: transparent; cursor: pointer; vertical-align: -6px; }
.gs-alerte svg { width: 18px; height: 18px; }
.gs-alerte-bientot { color: var(--alerte); }
.gs-alerte-expiree { color: var(--danger); }
.gs-alerte:hover, .gs-alerte:focus-visible { background: var(--survol); }
.gs-identifiant { font-size: 14px; font-weight: 500; color: var(--texte-3); margin-left: 8px; }
.gs-fiche-large { max-width: 1100px; }
.gs-vigilance { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--bord); border-radius: 8px; background: var(--survol); }
.gs-vigilance p { margin: 0 0 8px; }
.gs-ajustement { margin-top: 12px; }
.gs-cases legend { font-weight: 600; margin-bottom: 4px; }
.alert .gs-puces { margin: 6px 0 0; }

/* --- lot G2 : cycle de formation --- */
.gs-etapes { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px; }
.gs-etapes li { display: flex; gap: 10px; align-items: flex-start; }
.gs-etapes li small { display: block; color: var(--texte-3); }
.gs-etape { flex: 0 0 22px; height: 22px; border-radius: 50%; display: inline-grid; place-items: center; font-size: 12px; font-weight: 700; border: 1px solid var(--bord); }
.gs-etape-fait { background: var(--succes-fond); color: var(--succes); border-color: var(--succes-bord); }
.gs-etape-afaire { background: var(--alerte-fond); color: var(--alerte); border-color: var(--alerte-bord); }
.gs-etape-bloque { color: var(--texte-3); }
li.gs-etape-bloque { color: var(--texte-3); }
.gs-table-serree th, .gs-table-serree td { padding-left: 8px; padding-right: 8px; }
.gs-envoi { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 12px 0; }
.gs-envoi label { font-weight: 600; font-size: 13.5px; }
.gs-envoi input, .gs-envoi select { width: auto; min-width: 200px; }
.gs-envoi .cv-aide { flex-basis: 100%; }
.gs-generer { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.gs-signature-mini { height: 28px; width: auto; vertical-align: middle; margin-left: 6px; border: 1px solid var(--bord); border-radius: 4px; background: var(--surface); }
.gs-besoin-lu { margin-bottom: 14px; }

/* pages ouvertes par un lien : une colonne, telephone d'abord */
.gs-public { max-width: 720px; margin: 0 auto; padding: 24px 16px 48px; }
.gs-public h1 { font-size: 24px; margin: 4px 0 6px; }
.gs-public-pied { text-align: center; margin-top: 14px; }
.gs-pave { margin: 12px 0; }
.gs-pave-lib { display: block; font-weight: 600; margin-bottom: 6px; }
.gs-pave-zone { display: block; width: 100%; max-width: 600px; aspect-ratio: 3 / 1; height: auto; border: 2px dashed var(--bord-fort); border-radius: 10px; background: var(--surface); touch-action: none; cursor: crosshair; }
.gs-seances-liste { list-style: none; padding: 0; display: grid; gap: 8px; }
.gs-emargement { list-style: none; padding: 0; margin: 12px 0; display: grid; gap: 8px; }
.gs-emargement li { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 12px; border: 1px solid var(--bord); border-radius: 10px; }
.gs-qui { font-weight: 600; flex: 1 1 160px; }
.gs-clore { margin-top: 20px; padding-top: 14px; border-top: 1px solid var(--bord); }
.gs-public-seance { font-size: 18px; }

/* --- lot G3 : portail du responsable formation --- */
.gs-defile { overflow-x: auto; }
.gs-defile table { min-width: 1100px; }
.gs-onglets { margin-bottom: 14px; flex-wrap: wrap; }
/* input.gs-jours et non .gs-jours seul : la regle generale input[type=text] { width: 100% } de style.css est plus
   precise qu'une classe et l'emportait (champs de 270 px dans /produit/tarifs, 2026-10-17). */
input.gs-jours, select.gs-jours { width: 96px; display: inline-block; }
/* Tarifs unitaires : des montants (« 1 250,50 »), un peu plus larges que des jours ; l'unite des exercices a sa largeur. */
.pr-tarifs input.gs-jours { width: 112px; }
.pr-tarifs select { width: auto; min-width: 120px; }
.gs-logo-apercu { max-height: 60px; width: auto; border: 1px solid var(--bord); border-radius: 6px; padding: 4px; background: var(--surface); }
.gs-sous-titre { font-size: 16px; margin: 18px 0 4px; }
.gs-filtres-docs .barre-gauche { flex-wrap: wrap; gap: 8px; align-items: center; }
.gs-filtres-docs input[type="date"], .gs-filtres-docs select { width: auto; }
.gs-rapport .cv-sec { padding-bottom: 14px; }

/* --- lot G4 : facturation --- */
.gs-ligne-facture { border: 1px solid var(--bord); border-radius: 8px; padding: 10px 12px; margin: 0 0 10px; display: grid; grid-template-columns: minmax(0, 1fr) 90px 120px 130px; gap: 10px; align-items: start; }
.gs-ligne-facture .form-field { margin: 0; }
@media (max-width: 900px) { .gs-ligne-facture { grid-template-columns: 1fr 1fr; } .gs-ligne-facture .form-field:first-of-type { grid-column: 1 / -1; } }
.gs-card-titre { padding: 14px 16px 0; margin: 0; }

/* --- lot G5 : paie --- */
.text-alerte { color: var(--alerte); }
.gs-barre-paie { margin: 0 0 18px; }
.gs-facture-recue { padding: 8px 0; border-top: 1px solid var(--bord); display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }

@media print {
    .lateral, .mobile-barre, .evitement, .cv-tete-act, .gs-imprimer-non, .menu-bascule { display: none !important; }
    .gs-traitement { break-inside: avoid; box-shadow: none; }
}

/* Lot G6 : Qualiopi (notes de coordination, reponses aux questionnaires) */
.gs-note { border-left: 3px solid var(--bord); padding: 4px 0 4px 12px; margin: 10px 0; }
.gs-reponse { margin: 10px 0; padding: 12px 16px; }
.gs-reponse summary { cursor: pointer; }
.gs-reponse-dl { display: grid; grid-template-columns: 1fr; gap: 2px 16px; margin: 12px 0 6px; }
.gs-reponse-dl dt { font-weight: 600; }
.gs-reponse-dl dd { margin: 0 0 8px; }
.gs-question .gs-case { margin-right: 14px; }
.gs-carte-titre { font-size: 16px; margin: 0 0 10px; }
@media (min-width: 760px) { .gs-reponse-dl { grid-template-columns: minmax(200px, 1fr) 2fr; } .gs-reponse-dl dd { margin: 0; } }
.gs-fiche.gs-plein { max-width: none; }   /* sections de tableau de bord : meme largeur que le tableau au-dessus (regle 11d) */

/* Lots I2 a I5 : parcours (.gs-parcours, a ne pas confondre avec .gs-etapes des actions), messages, cartes des espaces (2026-10-13) */
.gs-parcours { margin: 8px 0 0; padding-left: 22px; list-style: decimal; }
.gs-docs { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.gs-parcours li { margin: 4px 0; }
.gs-parcours li.est-fait { color: var(--texte-2); }
.gs-message { border-left: 3px solid var(--bord); padding: 6px 0 6px 12px; margin: 12px 0; }
.gs-message p { margin: 2px 0; }
.gs-message-moi { border-left-color: var(--marque-primaire); }
.gs-carte-lien { display: block; text-decoration: none; color: inherit; }
.gs-carte-lien:hover, .gs-carte-lien:focus-visible { box-shadow: 0 0 0 2px var(--marque-primaire); }
.gs-evaluation fieldset { margin-bottom: 10px; }
.gs-evaluation input[type="number"] { width: 6em; }

/* Calendrier en grille du mois (gestion/calendrier, 2026-10-13) */
.gs-cal { background: var(--surface); border: 1px solid var(--bord); border-radius: var(--rayon); overflow: hidden; }
.gs-cal-entete, .gs-cal-grille { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.gs-cal-entete span { padding: 8px 10px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--texte-3); border-bottom: 1px solid var(--bord); }
.gs-cal-jour { min-height: 112px; padding: 6px 6px 8px; border-right: 1px solid var(--bord); border-bottom: 1px solid var(--bord); display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.gs-cal-jour:nth-child(7n) { border-right: 0; }
.gs-cal-jour.est-hors { background: var(--fond); }
.gs-cal-jour.est-hors .gs-cal-num { color: var(--texte-3); }
.gs-cal-num { font-size: 13px; font-weight: 600; color: var(--texte-2); }
/* Lot E1 : jour ferme — hachures ET libelle (jamais la couleur seule). */
.gs-cal-jour.est-ferme { background-image: repeating-linear-gradient(135deg, transparent 0 8px, var(--bord) 8px 10px); }
.gs-cal-ferme { align-self: flex-start; max-width: 100%; padding: 2px 6px; border-radius: 6px; background: var(--surface); color: var(--texte-2); font-size: 12px; line-height: 1.3; overflow-wrap: anywhere; }
.gs-cal-jour.est-aujourdhui .gs-cal-num span[aria-hidden] { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--marque-primaire); color: var(--marque-primaire-texte); }
.gs-cal-seance { display: block; padding: 4px 6px; border-radius: 6px; font-size: 12px; line-height: 1.3; text-decoration: none; color: var(--texte); border-left: 3px solid var(--marque-primaire); background: var(--marque-primaire-doux); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gs-cal-seance small { display: block; color: var(--texte-2); overflow: hidden; text-overflow: ellipsis; }
.gs-cal-seance.est-salle { border-left-color: var(--service-formateur); background: var(--survol); }
.gs-cal-seance:hover, .gs-cal-seance:focus-visible { box-shadow: 0 0 0 2px var(--marque-primaire); }
@media (max-width: 760px) {
  .gs-cal-entete { display: none; }
  .gs-cal-grille { grid-template-columns: minmax(0, 1fr); }
  .gs-cal-jour { min-height: 0; border-right: 0; }
  .gs-cal-jour:not(.a-seance) { display: none; }
  .gs-cal-jour .gs-cal-num .evitement { position: static; width: auto; height: auto; clip: auto; margin: 0; }
  .gs-cal-jour .gs-cal-num span[aria-hidden] { display: none; }
}

/* Barres de filtres (2026-10-13, remarque de Pascal) : les champs gardent leur largeur naturelle, sur une ligne,
   au lieu d'occuper chacun toute la largeur et de s'empiler. */
.gs-filtre { align-items: center; }
.gs-filtre label { font-size: 13px; color: var(--texte-2); }
.gs-filtre input[type="date"], .gs-filtre input[type="text"], .gs-filtre input[type="number"], .gs-filtre input[type="month"] { width: auto; min-height: 36px; }
.gs-rapport .cv-filtres-f { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.gs-rapport .cv-filtres-f select, .gs-rapport .cv-filtres-f input { width: 100%; }

/* Passe de mise en forme du 2026-10-13 (regle 11d) : la page occupe toute la largeur du contenu ; ce sont les
   champs qu'on borne, jamais les cadres. Un cadre plus etroit que le tableau voisin faisait douter qu'on soit sur la meme page. */
.gs-fiche, .gs-fiche-large { max-width: none; }
.barre-outils .recherche { min-width: 260px; }
.gs-filtres-docs input[type="search"] { width: auto; min-width: 200px; }
.barre-outils.gs-envoi { justify-content: flex-start; }
.gs-barre-paie .gs-en-ligne { display: inline-flex; }
.cv-traite .gs-en-ligne, .cv-traite form { margin: 0; }

/* Formulaire d'action : aide au programme (catalogue, IA) et champs sur deux colonnes (2026-10-13) */
.gs-programme-aide { background: var(--marque-primaire-doux); border: 1px solid var(--bord); border-radius: var(--rayon); padding: 10px 14px; margin: 0 0 16px; }
.gs-programme-aide .gs-envoi { margin: 6px 0; }
.gs-programme-aide .gs-envoi input[type="text"] { flex: 1 1 360px; }
.gs-programme-aide .gs-envoi label { min-width: 230px; }
.gs-programme-aide .cv-aide { margin: 4px 0 0; }
@media (min-width: 1100px) { .gs-programme { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gs-filtre input[type="date"] { max-width: 150px; }
.barre-gauche select, .barre-gauche input[type="date"] { width: auto; min-width: 160px; }

/* Carte de fonctions en tete de page (boutons a gauche, chiffres a droite) et parcours guide (2026-10-13) */
.gs-barre-page { display: flex; align-items: center; justify-content: space-between; gap: 12px 24px; flex-wrap: wrap; background: var(--surface); border: 1px solid var(--bord); border-radius: var(--rayon); box-shadow: var(--ombre); padding: 12px 16px; margin: 0 0 14px; }
.gs-barre-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.gs-barre-page .chiffres { margin: 0; }
.gs-liste-titre { padding: 10px 14px 4px; margin: 0; }
.gs-dispo { margin: 14px 0 18px; }
.gs-dispo summary { cursor: pointer; font-weight: 600; font-size: 13.5px; }
.gs-dispo-grille th, .gs-dispo-grille td { padding: 4px 6px; text-align: center; font-size: 12.5px; }

/* Lot P : planning du parcours dans une colonne etroite (planningHtml, classes .planning-* ; meme rendu que cours.css, sur une colonne) */
.gs-planning .planning { display: grid; gap: 12px; margin: 8px 0 0; }
.gs-planning .planning-semaine h3 { font-size: 14px; margin: 0 0 6px; color: var(--texte-2); }
.gs-planning .planning-semaine ul { list-style: none; margin: 0; padding: 0; }
.gs-planning .planning-semaine li { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; padding: 8px 0; border-top: 1px solid var(--bord); font-size: 14px; }
.gs-planning .planning-quand { font-weight: 600; }
.gs-planning .planning-quoi { grid-column: 1 / 3; color: var(--texte-2); }
.gs-planning .planning-duree { grid-row: 1; grid-column: 2; color: var(--texte-2); font-variant-numeric: tabular-nums; }
.cv-vol-b .gs-carte-titre { margin-top: 18px; }
.cv-vol-b .gs-carte-titre:first-child { margin-top: 0; }

/* Planning collectif des formateurs (2026-10-16) : six mois, un chiffre par jour — le nombre se lit, la teinte n'est qu'un appui. */
.gs-pm { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; margin-bottom: 14px; }
.gs-pm-mois { background: var(--surface); border: 1px solid var(--bord); border-radius: var(--rayon); padding: 10px 12px 12px; min-width: 0; }
.gs-pm-mois h2 { margin: 0 0 6px; font-size: 14px; text-transform: capitalize; }
.gs-pm-grille { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.gs-pm-jsem { text-align: center; font-size: 11px; font-weight: 600; color: var(--texte-3); }
.gs-pm-jour { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 34px; border-radius: 6px; font-size: 12px; color: var(--texte); text-decoration: none; background: var(--fond); }
.gs-pm-jour b { font-size: 11px; line-height: 1; color: var(--marque-primaire); }
.gs-pm-jour.n1 { background: var(--marque-primaire-doux); }
.gs-pm-jour.n2 { background: color-mix(in srgb, var(--marque-primaire) 22%, var(--surface)); }
.gs-pm-jour.n3, .gs-pm-jour.n4 { background: color-mix(in srgb, var(--marque-primaire) 38%, var(--surface)); }
.gs-pm-jour.est-ferme { background-image: repeating-linear-gradient(135deg, transparent 0 5px, var(--bord) 5px 7px); }
.gs-pm-jour.est-aujourdhui { outline: 2px solid var(--marque-primaire); outline-offset: -2px; }
.gs-pm-jour.est-choisi { box-shadow: 0 0 0 2px var(--texte); }
.gs-pm-jour:hover, .gs-pm-jour:focus-visible { box-shadow: 0 0 0 2px var(--marque-primaire); }

/* Espace produit (lots PR0 a PR2, 2026-10-16) : aide sous une modalite, editeur des lignes d'un produit */
.gs-aide-ligne { font-weight: 400; }
.pr-lignes select, .pr-lignes input[type="text"]:not(.gs-jours) { width: 100%; min-width: 120px; }
.pr-lignes td:nth-child(4) select { min-width: 220px; }

/* Devis en ligne (lot PR5, 2026-10-16) : page publique /devis */
.gs-public-titre { font-size: 18px; margin: 22px 0 8px; }
.gs-public-decliner { margin-top: 18px; }
.gs-public-decliner summary { cursor: pointer; color: var(--texte-2); }

/* Commandes (lot PR7, 2026-10-16) : consommation par modalite dans le tableau des stagiaires */
.gs-conso { display: inline-block; margin: 0 10px 2px 0; white-space: nowrap; font-variant-numeric: tabular-nums; }
.gs-conso.est-epuise { color: var(--alerte); font-weight: 600; }

/* Espace produit (2026-10-16) : listes « pour chaque stagiaire » et sous-titres des volets ; resume des pages ouvertes par un lien */
.pr-liste { margin: 6px 0 14px; padding-left: 20px; }
.pr-liste li { margin: 3px 0; }
.cv-lab.pr-sous { display: block; margin: 18px 0 6px; }
.gs-public .cv-dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px 20px; margin: 14px 0 18px; }
.gs-public .cv-dl dt { font-size: 12px; color: var(--texte-3); text-transform: uppercase; letter-spacing: .5px; margin: 0; }
.gs-public .cv-dl dd { margin: 2px 0 0; font-weight: 600; font-variant-numeric: tabular-nums; }
