/* =====================================================================
   FORMULAIRE D'INSCRIPTION — CONVENTION D'AFFAIRES MADE IN ANGERS 2027
   Feuille de style : css/style.css (commune aux 3 pages PHP)
   ---------------------------------------------------------------------
   Organisation du fichier :
     1. Variables (couleurs, polices, arrondis) + thème sombre
     2. Bases (reset, page, liens)
     3. En-tête (bandeau, titre, introduction)
     4. Mise en page (colonne formulaire + récapitulatif)
     5. Sections du formulaire (cartes numérotées)
     6. Champs (input, select, textarea, messages d'erreur)
     7. Cases à cocher et groupes de choix
     8. Section 3 – Participants
     9. Section 2 – Formules / tarifs
    10. Section 5 – Validation et boutons
    11. Récapitulatif latéral (barre fixe en bas sur mobile)
    12. Écran de confirmation
    13. Fenêtre des CGV
    14. Accessibilité (animations réduites)
    15. Pages PHP : erreurs serveur et page de confirmation

   Pour changer l'identité visuelle, modifiez uniquement les variables
   de la partie 1 : tout le reste de la feuille s'appuie dessus.
   ===================================================================== */


/* ---------------------------------------------------------------------
   1. VARIABLES
   --------------------------------------------------------------------- */
:root {
  /* Couleurs (thème clair) */
  --bg:          #F2F3F5;   /* fond de page (gris ardoise très clair)   */
  --surface:     #FFFFFF;   /* fond des cartes / sections               */
  --field:       #FBFCFD;   /* fond des champs de saisie                */
  --ink:         #1A2029;   /* texte principal                          */
  --muted:       #5A6470;   /* texte secondaire, aides                  */
  --line:        #D8DCE2;   /* bordures et séparateurs                  */
  --accent:      #C8213A;   /* rouge Made In Angers (assombri pour la lisibilité) */
  --accent-ink:  #FFFFFF;   /* texte posé sur la couleur d'accent       */
  --accent-soft: #FDECEE;   /* fond rosé des encadrés d'information     */
  --ok:          #2E7D5B;   /* vert « section complète »                */
  --err:         #B3261E;   /* rouge des erreurs                        */
  --err-soft:    #FBEAE8;   /* fond des champs en erreur                */

  /* Polices (chargées depuis Google Fonts dans index.html) */
  --f-display: "Archivo", "Arial Narrow", Arial, sans-serif;               /* titres            */
  --f-body:    "Source Sans 3", "Segoe UI", Roboto, Helvetica, Arial, sans-serif; /* texte courant */
  --f-mono:    "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace; /* petits libellés   */

  /* Arrondi des cartes */
  --r: 10px;

  color-scheme: light;
}

/* Thème sombre : appliqué automatiquement si l'ordinateur de l'utilisateur
   est réglé en mode sombre (sauf si data-theme="light" est forcé sur <html>). */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #12151A; --surface: #1A1F26; --field: #151A20; --ink: #E7EAEE; --muted: #9AA4AF; --line: #2D343D;
    --accent: #FF6F82; --accent-ink: #2A070D; --accent-soft: #3D1C23; --ok: #5CC598; --err: #F2867D; --err-soft: #3A1C1A;
    color-scheme: dark;
  }
}
/* Thème sombre forcé avec <html data-theme="dark"> */
:root[data-theme="dark"] {
  --bg: #12151A; --surface: #1A1F26; --field: #151A20; --ink: #E7EAEE; --muted: #9AA4AF; --line: #2D343D;
  --accent: #FF6F82; --accent-ink: #2A070D; --accent-soft: #3D1C23; --ok: #5CC598; --err: #F2867D; --err-soft: #3A1C1A;
  color-scheme: dark;
}
/* Pour désactiver le thème sombre : supprimez les deux blocs ci-dessus,
   ou ajoutez data-theme="light" sur la balise <html>. */


/* ---------------------------------------------------------------------
   2. BASES
   --------------------------------------------------------------------- */
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 400 16px/1.55 var(--f-body);
}
/* IMPORTANT : le script masque les blocs avec l'attribut HTML « hidden ».
   Avec jQuery, utilisez $(el).prop('hidden', true/false) plutôt que
   .show() / .hide(), car cette règle a la priorité (!important). */
[hidden] { display: none !important; }
img { max-width: 1200px; }
a { color: var(--accent); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } /* contour visible au clavier */


/* ---------------------------------------------------------------------
   3. EN-TÊTE
   --------------------------------------------------------------------- */
/* Conteneur général de la page (largeur max + marges latérales de 16px) */
.wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding-inline: 16px;
  padding-block: 24px 120px;   /* 120px en bas : place pour la barre récapitulative sur mobile */
}
/* Bandeau image de l'événement (900 x 160 px d'origine) */
.banner {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1200 / 160;     /* réserve la hauteur avant le chargement de l'image */
  border-radius: var(--r);
  margin-bottom: 24px;
  background: #E72D45;         /* rouge du bandeau, visible pendant le chargement */
}
header.top { display: grid; gap: 10px; margin-bottom: 28px; max-width: 760px; }
/* Petit sur-titre en capitales (« Convention d'affaires · 16 mars 2027 ») */
.eyebrow {
  font: 600 12px/1 var(--f-body);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--accent);
}
h1 {
  font: 800 clamp(28px, 5vw, 42px)/1.05 var(--f-display);  /* taille fluide entre 28 et 42px */
  font-stretch: 80%;
  margin: 0;
  text-wrap: balance;
}
.lede { color: var(--muted); margin: 0; }  /* paragraphe d'introduction */


/* ---------------------------------------------------------------------
   4. MISE EN PAGE
   Ordinateur : formulaire à gauche + récapitulatif (300px) à droite.
   Moins de 920px : une seule colonne.
   --------------------------------------------------------------------- */
.layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 32px;
  align-items: start;
}
@media (max-width: 920px) {
  .layout { grid-template-columns: minmax(0, 1fr); }
}
/* minmax(0,1fr) empêche un contenu long d'élargir la page sur mobile */
form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 22px; min-width: 0; }


/* ---------------------------------------------------------------------
   5. SECTIONS DU FORMULAIRE (1 à 5)
   --------------------------------------------------------------------- */
section.block {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 20px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 24px clamp(16px, 3vw, 32px) 28px;
  scroll-margin-top: 16px;     /* marge lors du défilement vers une section (#s1, #s2…) */
}
/* En-tête de section : pastille numérotée + titre + sous-titre */
.block-head {
  display: flex;
  gap: 14px;
  align-items: baseline;
  border-bottom: 1px solid var(--line);
  padding-bottom: 14px;
}
.num {                          /* pastille ronde avec le numéro de section */
  font: 700 15px/1 var(--f-mono);
  color: var(--accent-ink);
  background: var(--accent);
  min-width: 30px; height: 30px;
  border-radius: 50%;
  display: grid; place-items: center;
  flex: none;
  transform: translateY(4px);
}
.block-head h2 { font: 750 22px/1.2 var(--f-display); font-stretch: 85%; margin: 0; }
.block-head p  { margin: 2px 0 0; color: var(--muted); font-size: 14px; }

/* Sous-titres internes (ex. « SOCIÉTÉ », « VOS RECHERCHES… », « Facturation ») */
h3 { font: 700 15px/1.3 var(--f-display); margin: 6px 0 0; letter-spacing: .01em; }

/* Encadré d'information (texte RSE d'Aldev) */
.intro {
  margin: 0;
  padding: 12px 14px;
  border-radius: 8px;
  background: var(--accent-soft);
  font-size: 14.5px;
  line-height: 1.5;
}

/* Grille de champs sur 2 colonnes (1 colonne sous 620px) */
.grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 18px; }
.grid .full { grid-column: 1 / -1; }          /* champ sur toute la largeur */
@media (max-width: 620px) {
  .grid { grid-template-columns: minmax(0, 1fr); }
}


/* ---------------------------------------------------------------------
   6. CHAMPS
   Structure HTML d'un champ :
   <div class="field"><label>…</label><input>…<span class="hint">aide</span></div>
   --------------------------------------------------------------------- */
.field { display: grid; gap: 6px; min-width: 0; align-content: start; }
label, .legend { font-weight: 600; font-size: 14.5px; }
.req  { color: var(--accent); }               /* astérisque des champs obligatoires */
.hint { font-size: 13px; color: var(--muted); } /* texte d'aide sous un champ */

input[type=text], input[type=email], input[type=tel], input[type=url], input[type=date],
select, textarea {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  min-height: 44px;             /* zone tactile confortable sur mobile */
  font: inherit;
  font-size: 15.5px;
  color: var(--ink);
  background: var(--field);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
}
textarea { min-height: 110px; resize: vertical; }
input:hover, select:hover, textarea:hover { border-color: var(--muted); }
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
input[type=file] { font: inherit; font-size: 14px; color: var(--muted); }

/* Les champs invalides ne sont signalés qu'après une première tentative
   d'envoi : le script ajoute alors la classe .was-validated au <form>. */
.was-validated input:invalid,
.was-validated select:invalid,
.was-validated textarea:invalid {
  border-color: var(--err);
  background: var(--err-soft);
}

/* Compteur de caractères « 0 / 500 » sous les zones de texte */
.counter { font: 500 12px/1 var(--f-mono); color: var(--muted); justify-self: end; }

/* Champ avec unité (kilomètres) */
.unit { display: flex; align-items: center; gap: 10px; }
.unit input { max-width: 180px; }
.unit span { color: var(--muted); font-weight: 600; }


/* ---------------------------------------------------------------------
   7. CASES À COCHER ET GROUPES DE CHOIX
   --------------------------------------------------------------------- */
fieldset { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; gap: 10px; }
fieldset legend { padding: 0; margin-bottom: 8px; }

/* Liste de cases en colonnes automatiques (≈ 220px mini par colonne) */
.choices { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 6px 14px; }
/* Variante en ligne (ex. Clients / Fournisseurs / Partenaires) */
.choices.inline { display: flex; flex-wrap: wrap; gap: 6px 22px; }

/* Une case + son libellé : <label class="check"><input type="checkbox"><span>…</span></label> */
.check {
  display: flex;
  gap: 9px;
  align-items: flex-start;
  font-weight: 400;
  font-size: 15px;
  line-height: 1.35;
  padding: 4px 0;
  cursor: pointer;
}
.check input { width: 18px; height: 18px; margin: 1px 0 0; accent-color: var(--accent); flex: none; }
.check input:disabled + span { opacity: .45; }   /* ex. 4e secteur quand 3 sont déjà cochés */

.other { margin-top: 4px; }                        /* champ « Précisez » sous « Autres » */
.group-err { color: var(--err); font-size: 13.5px; font-weight: 600; } /* « Cochez au moins une réponse » */
/* Sous-question en retrait (ex. « Si oui, sur quelles thématiques… ») */
.sub { border-left: 2px solid var(--line); padding-left: 14px; margin-left: 8px; }


/* ---------------------------------------------------------------------
   8. SECTION 3 – PARTICIPANTS
   Une fiche .part par participant (générée par le script).
   --------------------------------------------------------------------- */
.parts { display: grid; gap: 14px; }
.part {
  display: grid;
  gap: 16px;
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 18px;
  background: var(--field);
}
.part-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.part-head h3 { margin: 0; }
/* Étiquette « Contact principal » */
.tag {
  font: 500 11.5px/1 var(--f-mono);
  padding: 6px 8px;
  border-radius: 6px;
  background: var(--accent-soft);
  color: var(--accent);
  text-transform: uppercase;
  letter-spacing: .04em;
}
/* Fiche grisée quand « Je communiquerai ce participant plus tard » est coché */
.part.later .part-fields { opacity: .4; }

/* Bandeau rappelant la formule choisie au-dessus des fiches */
.notice { display: block; padding: 12px 14px; border-radius: 8px; background: var(--accent-soft); font-size: 14.5px; }
.notice b { font-weight: 700; }


/* ---------------------------------------------------------------------
   9. SECTION 2 – FORMULES / TARIFS
   Chaque formule est une carte cliquable : <label class="offer"><input type="radio">…</label>
   --------------------------------------------------------------------- */
.offers { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 620px) {
  .offers { grid-template-columns: minmax(0, 1fr); }
}
.offer {
  position: relative;
  display: grid;
  grid-template-rows: auto auto 1fr;
  gap: 8px;
  font-weight: 400;
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 16px 16px 16px 48px;  /* 48px à gauche : place du bouton radio */
  cursor: pointer;
  background: var(--field);
  transition: border-color .15s, box-shadow .15s;
}
.offer input { position: absolute; left: 16px; top: 19px; width: 19px; height: 19px; accent-color: var(--accent); margin: 0; }
.offer:hover { border-color: var(--muted); }
/* Formule sélectionnée : la classe .is-selected est posée par le script
   (fonctionne aussi sur les navigateurs anciens). */
.offer.is-selected {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px var(--accent) inset;
  background: var(--surface);
}
/* Formule indisponible à la date du jour (ex. tarif 300 € avant le 01/01/2027) */
.offer.off { cursor: not-allowed; opacity: .55; }
.offer.off:hover { border-color: var(--line); }

.offer .price { font: 800 24px/1 var(--f-display); font-variant-numeric: tabular-nums; }
.offer .price small { font: 600 12px var(--f-body); color: var(--muted); margin-left: 4px; } /* « TTC » */
.offer .name { font-weight: 700; font-size: 15.5px; line-height: 1.3; }
.offer .desc { font-size: 13.5px; color: var(--muted); line-height: 1.45; }
/* Pastille « 2 pers. » */
.offer .places {
  display: inline-block;
  font: 500 11.5px/1 var(--f-mono);
  padding: 5px 7px;
  border-radius: 5px;
  border: 1px solid var(--line);
  color: var(--ink);
  margin-left: 6px;
  vertical-align: 2px;
}
.offer .avail { font: 600 12.5px/1.3 var(--f-body); color: var(--accent); } /* « Disponible à partir du… » */


/* ---------------------------------------------------------------------
   10. SECTION 5 – VALIDATION ET BOUTONS
   --------------------------------------------------------------------- */
.cgv-row { padding: 14px; border: 1px solid var(--line); border-radius: var(--r); background: var(--field); }
/* Bouton présenté comme un lien (lien vers les CGV) */
.linkbtn { background: none; border: 0; padding: 0; font: inherit; color: var(--accent); text-decoration: underline; cursor: pointer; }
.submit-row { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; justify-content: space-between; }

/* Bouton principal (Valider et payer, Payer en ligne…) */
.btn {
  display: inline-flex; align-items: center; gap: 10px;
  font: 700 16px/1 var(--f-body);
  border: 0;
  border-radius: 8px;
  padding: 15px 22px;
  background: var(--accent);
  color: var(--accent-ink);
  cursor: pointer;
  text-decoration: none;
}
.btn:hover { filter: brightness(1.07); }
.btn.ghost { background: transparent; color: var(--ink); border: 1px solid var(--line); } /* bouton secondaire */
.btn[aria-disabled=true] { opacity: .5; pointer-events: none; } /* lien de paiement non configuré */
.err-summary { color: var(--err); font-weight: 600; font-size: 14.5px; } /* « 3 champs à compléter » */


/* ---------------------------------------------------------------------
   11. RÉCAPITULATIF LATÉRAL
   Ordinateur : carte qui reste visible pendant le défilement (sticky).
   Mobile : barre fixe en bas de l'écran avec la formule et le total.
   --------------------------------------------------------------------- */
aside.summary {
  position: sticky;
  top: 16px;
  display: grid;
  gap: 16px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 20px;
}
.sum-title { font: 600 12px/1 var(--f-body); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
/* Nom de la formule, coupé à 3 lignes maximum */
.sum-offer {
  font-weight: 700;
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.sum-line { display: flex; justify-content: space-between; gap: 10px; font-size: 14.5px; color: var(--muted); }
.sum-total { display: flex; justify-content: space-between; align-items: baseline; border-top: 1px solid var(--line); padding-top: 12px; }
.sum-total strong { font: 800 26px/1 var(--f-display); font-variant-numeric: tabular-nums; }

/* Liste des 5 étapes ; la classe .done (posée par le script) passe la pastille en vert */
.steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.steps a { display: flex; gap: 10px; align-items: center; text-decoration: none; color: var(--ink); font-size: 14.5px; }
.dot {
  width: 20px; height: 20px;
  border-radius: 50%;
  border: 1.5px solid var(--line);
  display: grid; place-items: center;
  font: 700 11px/1 var(--f-mono);
  color: var(--muted);
  flex: none;
}
.steps li.done .dot { background: var(--ok); border-color: var(--ok); color: var(--surface); }
.demo { font-size: 13px; }   /* lien « Pré-remplir avec un exemple » (à retirer en production) */

@media (max-width: 920px) {
  aside.summary {
    position: fixed;
    left: 0; right: 0; bottom: 0; top: auto;
    z-index: 5;
    border-radius: 0;
    border-width: 1px 0 0;
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)); /* marge pour la barre système iPhone */
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 4px 12px;
  }
  /* Sur mobile, seuls la formule et le total restent affichés */
  aside.summary .sum-title,
  aside.summary .steps,
  aside.summary .sum-line,
  aside.summary .demo { display: none; }
  .sum-offer { -webkit-line-clamp: 2; }
  .sum-total { border: 0; padding: 0; gap: 10px; }
  .sum-total strong { font-size: 22px; }
}


/* ---------------------------------------------------------------------
   12. ÉCRAN DE CONFIRMATION (affiché après validation, avant paiement)
   --------------------------------------------------------------------- */
.confirm { display: grid; gap: 16px; }
.confirm h2 { font: 800 26px/1.15 var(--f-display); font-stretch: 85%; margin: 0; }
/* Récapitulatif libellé / valeur */
.recap { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px 18px; font-size: 15px; margin: 0; }
.recap dt { color: var(--muted); }
.recap dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
/* Bloc dépliable « Aperçu des données transmises » */
details { border: 1px solid var(--line); border-radius: 8px; padding: 10px 14px; }
summary { cursor: pointer; font-weight: 600; font-size: 14px; }
pre { font: 500 12px/1.5 var(--f-mono); overflow-x: auto; max-height: 360px; background: var(--field); padding: 12px; border-radius: 6px; }


/* ---------------------------------------------------------------------
   13. FENÊTRE DES CGV (<dialog>)
   --------------------------------------------------------------------- */
dialog {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 0;
  max-width: 760px;
  width: calc(100% - 32px);
  max-height: 86vh;
  background: var(--surface);
  color: var(--ink);
}
dialog::backdrop { background: rgba(10, 14, 18, .55); }   /* voile sombre derrière la fenêtre */
/* En-tête et pied restent visibles pendant le défilement du texte */
.dlg-head {
  position: sticky; top: 0;
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  background: var(--surface);
  padding: 18px 22px;
  border-bottom: 1px solid var(--line);
}
.dlg-head h2 { font: 750 19px/1.2 var(--f-display); margin: 0; }
.dlg-body { padding: 6px 22px 10px; font-size: 15px; max-width: 70ch; }
.dlg-body h3 { font-size: 16px; margin-top: 20px; }
.dlg-body h4 { font-size: 14.5px; margin: 14px 0 4px; }
.dlg-body p, .dlg-body li { margin: 6px 0; }
.dlg-foot {
  position: sticky; bottom: 0;
  display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap;
  background: var(--surface);
  padding: 14px 22px;
  border-top: 1px solid var(--line);
}
.x { background: none; border: 1px solid var(--line); border-radius: 8px; width: 36px; height: 36px; font-size: 18px; color: var(--ink); cursor: pointer; } /* bouton fermer « × » */


/* ---------------------------------------------------------------------
   14. ACCESSIBILITÉ
   Désactive les animations si l'utilisateur l'a demandé dans son système.
   --------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; scroll-behavior: auto !important; }
}


/* ---------------------------------------------------------------------
   15. PAGES PHP
   --------------------------------------------------------------------- */
.m0 { margin: 0; }   /* supprime la marge d'un paragraphe */

/* Liste des erreurs renvoyées par inscription_save.php (haut du formulaire) */
.alert-erreurs {
  border: 1px solid var(--err);
  background: var(--err-soft);
  color: var(--ink);
  border-radius: var(--r);
  padding: 16px 20px;
  font-size: 15px;
  scroll-margin-top: 16px;
}
.alert-erreurs:focus { outline: none; }   /* reçoit le focus à l'affichage, sans contour */
.alert-erreurs strong { color: var(--err); }
.alert-erreurs ul { margin: 8px 0; padding-left: 20px; }
.alert-erreurs li { margin: 2px 0; }

/* --- Page de confirmation (inscrption_confirmation.php) --- */
.confirm-page { max-width: 820px; display: grid; gap: 22px; }
/* Pastille verte « Inscription enregistrée » */
.badge-ok {
  display: inline-flex; align-items: center; gap: 8px;
  font: 700 13px/1 var(--f-body);
  color: var(--ok);
  text-transform: uppercase;
  letter-spacing: .1em;
}
.badge-ok::before {
  content: "✓";
  display: grid; place-items: center;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--ok);
  color: var(--surface);
  font-size: 13px;
  letter-spacing: 0;
}
/* Numéro d'inscription à reporter dans le libellé du virement */
.reference {
  font: 700 15px/1 var(--f-mono);
  padding: 6px 10px;
  border-radius: 6px;
  background: var(--accent-soft);
  color: var(--accent);
  white-space: nowrap;
}
/* Montant à régler */
.montant { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap;
           border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 14px 0; }
.montant strong { font: 800 32px/1 var(--f-display); font-variant-numeric: tabular-nums; }
/* Deux moyens de paiement côte à côte (un seul en dessous de 620px) */
.pay-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 620px) { .pay-grid { grid-template-columns: minmax(0, 1fr); } }
.pay-card { border: 1px solid var(--line); border-radius: var(--r); padding: 18px; background: var(--field); display: grid; gap: 12px; align-content: start; }
.pay-card h3 { margin: 0; }
.pay-card p { margin: 0; font-size: 14.5px; color: var(--muted); }
/* Coordonnées bancaires */
.rib { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 14px; margin: 0; font-size: 14.5px; }
.rib dt { color: var(--muted); }
.rib dd { margin: 0; font: 500 14px/1.4 var(--f-mono); overflow-wrap: anywhere; }
/* Étapes suivantes (liste numérotée : l'ordre compte) */
.next { margin: 0; padding-left: 20px; display: grid; gap: 6px; }
