/* ─────────────────────────────────────────
   COINMALIN — register-commercant.css
   Mobile-First · Ultra Professionnel
   ───────────────────────────────────────── */

@import url('https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=Plus+Jakarta+Sans:wght@300;400;500;600&display=swap');

:root {
  --gp:   #1A6B46;
  --gd:   #0D3D2B;
  --gm:   #2E8B57;
  --gl:   #4DB87A;
  --gpa:  #EAF5EE;
  --g50:  #F2FAF5;
  --wh:   #FFFFFF;
  --cr:   #F7F4EE;
  --gld:  #C8A855;
  --red:  #E53E3E;
  --td:   #0A1F15;
  --tb:   #2C4A38;
  --tm:   #6B8F7A;
  --tl:   #A0BFB0;
  --bdr:  rgba(26,107,70,0.13);
  --bdf:  rgba(46,139,87,0.5);
  --shsm: 0 2px 12px rgba(13,61,43,0.07);
  --shmd: 0 8px 32px rgba(13,61,43,0.11);
  --shlg: 0 24px 64px rgba(13,61,43,0.15);
  --rsm: 8px; --rmd: 14px; --rlg: 20px; --rxl: 28px;
  --fd: 'DM Serif Display', Georgia, serif;
  --fb: 'Plus Jakarta Sans', sans-serif;
  --t: .28s cubic-bezier(.4,0,.2,1);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{height:100%;scroll-behavior:smooth}
body{font-family:var(--fb);color:var(--tb);background:var(--g50);-webkit-font-smoothing:antialiased;min-height:100vh;padding-bottom:calc(80px + env(safe-area-inset-bottom,0px))}
a{text-decoration:none;color:inherit}
img{display:block;max-width:100%}
button{cursor:pointer;border:none;background:none;font-family:inherit}
input,select,textarea{font-family:inherit}
.hidden{display:none!important}

/* ═══════════════════════════════════════
   TOPBAR
═══════════════════════════════════════ */
.topbar{
  position:sticky;top:0;z-index:100;
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--bdr);
  padding:0;
}
.topbar__inner{
  max-width:640px;margin:0 auto;padding:0 20px;
  height:60px;display:flex;align-items:center;
  justify-content:space-between;
}
.topbar__back{
  width:40px;height:40px;border-radius:50%;
  border:1.5px solid var(--bdr);
  display:flex;align-items:center;justify-content:center;
  color:var(--tm);transition:all var(--t);
}
.topbar__back:hover{border-color:var(--bdf);color:var(--gd);background:var(--gpa)}
.topbar__logo{font-family:var(--fd);font-size:1.4rem;color:var(--gd)}
.topbar__logo span{color:var(--gp)}
.topbar__help{
  display:flex;align-items:center;gap:5px;
  font-size:13px;font-weight:500;color:var(--tm);
  padding:8px 12px;border-radius:50px;
  border:1.5px solid var(--bdr);transition:all var(--t);
}
.topbar__help:hover{color:var(--gp);border-color:var(--bdf);background:var(--gpa)}

/* ═══════════════════════════════════════
   PROGRESS
═══════════════════════════════════════ */
.progress-wrap{
  background:var(--wh);border-bottom:1px solid var(--bdr);
  padding:16px 20px 20px;
  position:sticky;top:60px;z-index:90;
}
.progress-bar{
  height:3px;background:var(--bdr);border-radius:4px;
  overflow:hidden;margin-bottom:16px;
}
.progress-fill{
  height:100%;background:linear-gradient(90deg,var(--gp),var(--gl));
  border-radius:4px;
  transition:width .5s cubic-bezier(.4,0,.2,1);
  width:25%;
}
.progress-steps{
  display:flex;align-items:center;
  max-width:360px;margin:0 auto;
}
.progress-step{
  display:flex;flex-direction:column;align-items:center;gap:5px;
  flex-shrink:0;
}
.progress-step__dot{
  width:30px;height:30px;border-radius:50%;
  border:2px solid var(--bdr);background:var(--wh);
  display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;color:var(--tl);
  transition:all var(--t);
}
.progress-step__label{
  font-size:10px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--tl);
  transition:color var(--t);white-space:nowrap;
}
.progress-step.active .progress-step__dot{
  border-color:var(--gp);background:var(--gpa);color:var(--gp);
}
.progress-step.active .progress-step__label{color:var(--gp)}
.progress-step.done .progress-step__dot{
  border-color:var(--gp);background:var(--gp);color:var(--wh);
}
.progress-step.done .progress-step__label{color:var(--gm)}
.progress-connector{
  flex:1;height:2px;background:var(--bdr);
  margin:0 8px;margin-bottom:17px;
  transition:background var(--t);
}
.progress-connector.done{background:var(--gp)}

/* ═══════════════════════════════════════
   STEPS CONTAINER
═══════════════════════════════════════ */
.steps-wrap{
  max-width:600px;margin:0 auto;
  padding:0 20px;
}

.step{display:none}
.step.active{display:block;animation:fadeIn .38s cubic-bezier(.22,1,.36,1) both}
@keyframes fadeIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}

/* ── STEP HEAD ── */
.step__head{padding:28px 0 24px}
.step-eye{
  display:inline-block;font-size:11px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--gp);margin-bottom:10px;
}
.step__title{
  font-family:var(--fd);
  font-size:clamp(1.8rem,7vw,2.5rem);
  font-weight:400;color:var(--td);
  line-height:1.12;letter-spacing:-.025em;
  margin-bottom:10px;
}
.step__title em{font-style:italic;color:var(--gp)}
.step__sub{font-size:14px;line-height:1.7;color:var(--tm)}

/* ═══════════════════════════════════════
   ÉTAPE 1 — TYPE CARDS
═══════════════════════════════════════ */
.type-grid{display:flex;flex-direction:column;gap:10px;margin-bottom:28px}

.type-card{
  display:flex;align-items:center;gap:16px;
  background:var(--wh);border:2px solid var(--bdr);
  border-radius:var(--rmd);padding:18px;
  text-align:left;width:100%;
  transition:border-color var(--t),background var(--t),box-shadow var(--t),transform .18s var(--t);
  cursor:pointer;
  position:relative;
  -webkit-tap-highlight-color:rgba(26,107,70,.08);
  user-select:none;
}
.type-card:hover{
  border-color:rgba(46,139,87,.45);
  background:var(--g50);
  transform:translateY(-2px);
  box-shadow:0 6px 20px rgba(13,61,43,.09);
}
.type-card:active{transform:scale(.98)}

/* ── ÉTAT SÉLECTIONNÉ — très visible ── */
.type-card.selected{
  border-color:var(--gp);
  border-width:2.5px;
  background:var(--gpa);
  box-shadow:0 0 0 4px rgba(26,107,70,.14), 0 6px 24px rgba(26,107,70,.15);
  transform:translateY(-2px);
}
.type-card.selected .type-card__body strong{
  color:var(--gp);
}

.type-card__icon{
  width:52px;height:52px;border-radius:var(--rsm);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  transition:transform var(--t),filter var(--t);
}
.type-card.selected .type-card__icon{
  transform:scale(1.08);
  filter:brightness(1.1) saturate(1.2);
}

.type-card__body{flex:1;min-width:0}
.type-card__body strong{
  display:block;font-size:15px;font-weight:600;
  color:var(--td);margin-bottom:3px;
  transition:color var(--t);
}
.type-card__body span{font-size:13px;color:var(--tm);line-height:1.4}

/* Cercle de validation */
.type-card__check{
  width:26px;height:26px;border-radius:50%;
  background:rgba(26,107,70,.12);
  border:2px solid rgba(26,107,70,.2);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  transition:background var(--t),border-color var(--t),transform .22s cubic-bezier(.34,1.56,.64,1);
}
.type-card.selected .type-card__check{
  background:var(--gp);
  border-color:var(--gp);
  transform:scale(1.15);
}

/* ═══════════════════════════════════════
   FIELDS SHARED
═══════════════════════════════════════ */
.fields{display:flex;flex-direction:column;gap:20px;margin-bottom:28px}

/* ── Bouton afficher/masquer le mot de passe ── */
.pwd-toggle{
  display:flex;align-items:center;justify-content:center;
  padding:0 14px;align-self:stretch;flex-shrink:0;
  color:var(--tl);transition:color var(--t);
}
.pwd-toggle:hover,.pwd-toggle.active{color:var(--gp)}

/* ── Labels de quartiers sur la carte (couche CMMap partagée) ── */
.cm-qtr-icon{background:none!important;border:none!important}
.cm-qtr-label{
  transform:translate(-50%,-50%);
  display:inline-block;
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(3px);
  color:var(--gd);
  font-family:var(--fb);
  font-size:10.5px;font-weight:800;
  letter-spacing:.09em;text-transform:uppercase;
  padding:3px 9px;border-radius:999px;
  border:1px solid rgba(13,61,43,.14);
  box-shadow:0 2px 8px rgba(10,31,21,.10);
  white-space:nowrap;pointer-events:none;
}

/* ═══════════════════════════════════════
   CARTES DE SECTION (étape 2) — regroupement
   élégant : Identité · Présentation · Équipements
═══════════════════════════════════════ */
.f2-card{
  background:var(--wh);
  border:1px solid var(--bdr);
  border-radius:var(--rlg);
  padding:22px 20px 24px;
  box-shadow:var(--shsm);
  display:flex;flex-direction:column;gap:20px;
  position:relative;
}
@media(min-width:640px){.f2-card{padding:28px 28px 30px}}
.f2-card__head{
  display:flex;align-items:flex-start;gap:14px;
  padding-bottom:16px;
  border-bottom:1px solid var(--bdr);
}
.f2-card__num{
  font-family:var(--fd);
  font-size:1.05rem;color:var(--gld);
  width:38px;height:38px;flex-shrink:0;
  border:1.5px solid rgba(200,168,85,.45);
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(145deg,#FDFBF5,#F7F0DE);
}
.f2-card__title{
  font-family:var(--fd);font-size:1.15rem;color:var(--td);
  font-weight:400;line-height:1.2;
}
.f2-card__sub{font-size:12.5px;color:var(--tm);margin-top:3px;line-height:1.45}

/* ═══════════════════════════════════════
   FOURCHETTE DE TARIFS (adaptée au type)
═══════════════════════════════════════ */
.tarif-range{
  display:flex;flex-direction:column;gap:12px;
  align-items:stretch;
}
@media(min-width:560px){
  .tarif-range{flex-direction:row;align-items:flex-start;gap:10px}
  .tarif-range__field{flex:1;min-width:0}
}
.tarif-range__field{display:flex;flex-direction:column;gap:6px}
.tarif-range__tag{
  font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--tm);
}
.tarif-range__sep{
  display:none;color:var(--tl);flex-shrink:0;
  align-self:center;margin-top:14px;
}
@media(min-width:560px){.tarif-range__sep{display:flex}}

.tarif-preview{
  display:flex;align-items:center;gap:8px;
  background:var(--gpa);
  border:1px solid rgba(26,107,70,.16);
  border-radius:10px;padding:10px 14px;
  font-size:12.5px;color:var(--gp);
  margin-top:2px;
}
.tarif-preview strong{font-weight:700}
.tarif-preview svg{flex-shrink:0}

.field-group{display:flex;flex-direction:column;gap:7px}
.field-label{
  font-size:12px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--tm);
}
.field-hint{
  font-size:12px;color:var(--tl);line-height:1.5;
  background:var(--gpa);border-radius:var(--rsm);
  padding:8px 12px;margin-bottom:4px;
  border-left:3px solid var(--gp);
}

/* Wrap */
.field-wrap{
  display:flex;align-items:center;
  background:var(--g50);border:1.5px solid var(--bdr);
  border-radius:var(--rmd);overflow:hidden;
  min-height:54px;
  transition:border-color var(--t),box-shadow var(--t),background var(--t);
}
.field-wrap:focus-within{
  border-color:var(--gm);background:var(--wh);
  box-shadow:0 0 0 3.5px rgba(46,139,87,.12);
}
.field-wrap.err{border-color:var(--red);box-shadow:0 0 0 3.5px rgba(229,62,62,.1)}

.field-input{
  flex:1;border:none;outline:none;background:transparent;
  font-size:16px;font-weight:400;color:var(--td);
  padding:14px 16px;min-width:0;
}
.field-input::placeholder{color:var(--tl)}
.field-input--center{text-align:center;font-weight:600;font-size:16px}

/* Prefix/suffix static */
.field-prefix-static{
  padding:0 0 0 16px;font-size:13px;
  font-weight:500;color:var(--tm);white-space:nowrap;flex-shrink:0;
}
.field-suffix{
  padding:0 16px 0 0;font-size:13px;
  font-weight:600;color:var(--gp);white-space:nowrap;flex-shrink:0;
}

/* Prefix flag */
.field-prefix-flag{
  display:flex;align-items:center;gap:7px;
  padding:0 12px 0 14px;
  border-right:1.5px solid var(--bdr);
  font-size:14px;font-weight:600;color:var(--tb);
  white-space:nowrap;flex-shrink:0;
  background:var(--wh);height:100%;min-height:52px;
}
.field-prefix-flag img{width:18px;border-radius:2px}

/* Icon */
.field-icon{
  padding:0 10px 0 14px;color:var(--tl);
  display:flex;align-items:center;flex-shrink:0;
}

/* Select */
.field-wrap--select{position:relative}
.field-select-icon{
  position:absolute;left:14px;color:var(--tm);
  pointer-events:none;z-index:1;
}
.field-select{
  flex:1;border:none;outline:none;background:transparent;
  font-size:16px;font-weight:400;color:var(--td);
  padding:14px 40px 14px 38px;
  -webkit-appearance:none;appearance:none;cursor:pointer;
}
.field-chevron{
  position:absolute;right:14px;color:var(--tm);
  pointer-events:none;
}

/* Textarea */
.field-textarea{
  width:100%;border:none;outline:none;background:transparent;
  font-size:16px;font-weight:400;color:var(--td);
  padding:14px 16px;resize:none;line-height:1.6;
}
.field-textarea::placeholder{color:var(--tl)}
.field-count{
  font-size:11px;color:var(--tl);
  text-align:right;font-weight:500;
}

/* Error */
.field-err{font-size:12px;font-weight:500;color:var(--red);min-height:16px}

/* ══════════════════════════════════════
   ÉQUIPEMENTS & SERVICES — Chip design
══════════════════════════════════════ */

/* Bloc catégorie */
.equip-category{margin-top:22px}
.equip-category:first-of-type{margin-top:14px}

/* En-tête de catégorie */
.equip-cat-hd{
  display:flex;align-items:center;gap:10px;
  margin-bottom:11px;
}
.equip-cat-hd::before,.equip-cat-hd::after{
  content:'';flex:1;height:1px;background:var(--bdr);
}
.equip-cat-label{
  font-size:10px;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--tm);white-space:nowrap;
}

/* Chips */
.equip-chips{display:flex;flex-wrap:wrap;gap:8px}

.chip{cursor:pointer;-webkit-tap-highlight-color:transparent}
.chip input{display:none}
.chip__face{
  display:inline-flex;align-items:center;gap:7px;
  padding:9px 15px;
  background:var(--wh);
  border:1.5px solid var(--bdr);
  border-radius:100px;
  font-size:13px;font-weight:500;color:var(--tb);
  transition:border-color var(--t),background var(--t),
             color var(--t),box-shadow var(--t);
  user-select:none;white-space:nowrap;
}
.chip__svg{width:15px;height:15px;flex-shrink:0;transition:stroke var(--t)}
.chip__face:hover{
  border-color:var(--gm);background:var(--g50);
}
.chip input:checked + .chip__face{
  background:var(--gp);border-color:var(--gp);
  color:#fff;font-weight:600;
  box-shadow:0 3px 12px rgba(26,107,70,.28);
}

/* Carte "Autre" */
.equip-autre-card{
  margin-top:24px;
  padding:16px 18px;
  background:var(--wh);
  border:1.5px dashed rgba(26,107,70,.22);
  border-radius:var(--rmd);
}
.equip-autre-card__header{
  display:flex;align-items:flex-start;gap:11px;
  margin-bottom:12px;
}
.equip-autre-card__ico{
  width:20px;height:20px;flex-shrink:0;margin-top:1px;
  stroke:var(--gp);
}
.equip-autre-card__title{
  font-size:13px;font-weight:600;color:var(--td);margin-bottom:2px;
}
.equip-autre-card__sub{font-size:12px;color:var(--tm)}
.equip-autre-input{
  font-size:13px;color:var(--td);
  border-color:var(--bdr)!important;
}

/* ── HORAIRES ── */
.horaires-quick{
  background:var(--g50);border:1.5px solid var(--bdr);
  border-radius:var(--rmd);overflow:hidden;
}
.horaire-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;border-bottom:1px solid var(--bdr);gap:12px;
}
.horaire-row:last-child{border-bottom:none}
.horaire-jour{font-size:13px;font-weight:600;color:var(--td);min-width:72px}
.horaire-inputs{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--tm)}
.time-input{
  border:1.5px solid var(--bdr);border-radius:var(--rsm);
  padding:8px 10px;font-size:16px;font-weight:500;
  color:var(--td);background:var(--wh);outline:none;
  transition:border-color var(--t);
  -webkit-appearance:none;
}
.time-input:focus{border-color:var(--gm)}

/* ── REMEMBER ROW ── */
.remember-row{display:flex;align-items:flex-start;gap:10px;cursor:pointer;user-select:none}
.remember-row input{display:none}
.remember-box{
  width:20px;height:20px;min-width:20px;border-radius:5px;
  border:1.5px solid var(--bdr);background:var(--wh);
  transition:all var(--t);display:flex;align-items:center;
  justify-content:center;position:relative;margin-top:1px;
}
.remember-row input:checked + .remember-box{background:var(--gp);border-color:var(--gp)}
.remember-row input:checked + .remember-box::after{
  content:'';position:absolute;
  width:11px;height:6px;
  border-left:2px solid white;border-bottom:2px solid white;
  transform:rotate(-45deg) translateY(-1px);
}
.remember-label{font-size:13px;color:var(--tb);line-height:1.55}
.inline-link{color:var(--gp);font-weight:500}

/* ═══════════════════════════════════════
   ÉTAPE 4 — OFFRES
═══════════════════════════════════════ */
.offres{display:flex;flex-direction:column;gap:18px;margin-bottom:16px;padding-top:12px}

.offre-card{
  background:var(--wh);border:2px solid var(--bdr);
  border-radius:var(--rlg);padding:22px 20px 20px;
  text-align:left;width:100%;
  display:flex;flex-direction:column;
  transition:all var(--t);cursor:pointer;position:relative;
}
.offre-card:hover{border-color:var(--bdf);box-shadow:var(--shsm);transform:translateY(-2px)}
.offre-card.selected{
  border-color:var(--gp);
  box-shadow:0 0 0 4px rgba(26,107,70,.1);
}
.offre-card--recommended{
  border-color:var(--gp);
  background:linear-gradient(135deg,var(--wh) 0%,var(--gpa) 100%);
}
.offre-card--recommended.selected{
  box-shadow:0 0 0 4px rgba(26,107,70,.15),var(--shmd);
}
/* Badge flottant sur la bordure — les 3 cartes gardent la même hauteur de départ */
.offre-card__badge{
  position:absolute;top:-12px;left:18px;
  background:var(--gp);color:var(--wh);
  font-size:11px;font-weight:700;letter-spacing:.06em;
  padding:4px 12px;border-radius:50px;
  box-shadow:0 3px 10px rgba(13,61,43,.22);
  white-space:nowrap;
}
.offre-card__top{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:10px;margin-bottom:14px;
}
.offre-card__id{min-width:0;flex:1}
.offre-card__name{
  display:block;font-size:12px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--tm);margin-bottom:4px;
}
.offre-card__price{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.offre-card__price strong{font-family:var(--fd);font-size:1.9rem;color:var(--td);white-space:nowrap;line-height:1.1}
.offre-card__price span{font-size:13px;color:var(--tm);font-weight:500;white-space:nowrap}
/* Pastille essai hebdomadaire (carte Pro) */
.offre-card__try{
  display:inline-block;margin-top:9px;
  background:#FFF7E6;border:1px solid #F2D98C;color:#92400E;
  font-size:11.5px;font-weight:700;line-height:1.3;
  padding:5px 11px;border-radius:50px;
}
.offre-card__check{
  width:26px;height:26px;border-radius:50%;
  background:var(--bdr);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  transition:all var(--t);
}
.offre-card.selected .offre-card__check{background:var(--gp)}
.offre-card__features{
  list-style:none;display:flex;flex-direction:column;gap:9px;
  margin-top:auto;
}
/* Icône alignée en haut + texte dans UN SEUL bloc qui replie proprement
   (avant : le <strong> devenait un enfant flex séparé → texte en colonnes) */
.offre-card__features li{
  display:flex;align-items:flex-start;gap:8px;
  font-size:13px;color:var(--tb);
}
.offre-card__features li .txt{flex:1;min-width:0;line-height:1.45}
.ok{color:var(--gm);font-weight:700;font-size:14px;width:16px;flex-shrink:0;text-align:center;line-height:1.35}
.ok.highlight{color:var(--gp);font-size:15px}
.no{color:var(--tl);font-size:14px;width:16px;flex-shrink:0;text-align:center;line-height:1.35}
.warn{color:#D97706;font-weight:700;font-size:13px;width:16px;flex-shrink:0;text-align:center;line-height:1.4}

/* Tagline sous le nom du plan */
.offre-card__tagline{
  font-size:12px;color:var(--tm);font-style:italic;
  margin:2px 0 8px;line-height:1.4;
}

/* Plan Premium Élite — bordure dorée */
.offre-card--elite{
  border-color:var(--gld);
  background:linear-gradient(135deg,var(--wh) 0%,#FFFBEC 100%);
}
.offre-card--elite:hover{
  border-color:#B8963E;
  box-shadow:0 0 0 3px rgba(200,168,85,.15),var(--shsm);
}
.offre-card--elite.selected{
  border-color:#B8963E;
  box-shadow:0 0 0 4px rgba(200,168,85,.18),var(--shmd);
}

/* Badge Élite doré */
.offre-card__badge--elite{
  background:linear-gradient(135deg,#C8A855 0%,#E8C870 50%,#A8883A 100%);
  color:#2A1A00;
}

/* Nom du plan Premium en doré */
.offre-card__name--elite{color:#8A6520}

.paiement-note{
  display:flex;align-items:center;gap:8px;
  font-size:12px;color:var(--tl);font-weight:500;
  padding:12px 0;
}

/* ── OFFRES BILLING TOGGLE ── */
.offres-billing{display:flex;justify-content:center;margin:0 0 24px}
.offres-billing__wrap{width:100%;max-width:340px;padding:0 4px}
.offres-billing__toggle{
  position:relative;display:flex;align-items:stretch;
  background:var(--wh);border:1.5px solid var(--bdr);
  border-radius:50px;padding:4px;box-shadow:var(--shsm);
}
.offres-billing__indicator{
  position:absolute;top:4px;left:4px;height:calc(100% - 8px);
  background:var(--gp);border-radius:50px;z-index:0;
  transition:transform .38s cubic-bezier(.4,0,.2,1),width .38s cubic-bezier(.4,0,.2,1);
  box-shadow:0 2px 10px rgba(26,107,70,.22);
}
.offres-billing__btn{
  flex:1;position:relative;z-index:1;min-width:0;
  padding:11px 10px;border-radius:50px;
  font-size:13px;font-weight:600;color:var(--tm);
  white-space:nowrap;transition:color .32s ease;
  -webkit-tap-highlight-color:transparent;
}
.offres-billing__btn.is-active{color:var(--wh)}
@media(max-width:380px){.offres-billing__btn{font-size:12px;padding:10px 6px}}

/* ── Launch pricing on offre cards ── */
.offre-card__launch{
  display:inline-flex;align-items:center;gap:4px;
  font-size:10.5px;font-weight:700;letter-spacing:.04em;
  color:#B45309;background:#FFFBEB;
  border:1px solid rgba(217,119,6,.22);
  border-radius:50px;padding:3px 10px;margin-bottom:8px;
}
.offre-card__pricing{
  display:flex;flex-direction:column;gap:5px;margin-bottom:6px;
  transition:opacity .28s ease,transform .28s ease;
}
.offre-card__pricing.is-fading{opacity:0;transform:translateY(8px)}
.offre-card__old-price{
  font-size:12px;font-weight:500;color:var(--tl);
  text-decoration:line-through;line-height:1.3;
}
.offre-card__save{
  display:inline-flex;align-self:flex-start;
  font-size:11px;font-weight:700;color:var(--gp);
  background:var(--gpa);border:1px solid rgba(26,107,70,.14);
  border-radius:50px;padding:3px 10px;
}
.offre-card__equiv{
  font-size:12px;font-weight:500;color:var(--tm);line-height:1.4;margin:0;
}
.offre-card__from{
  display:block;font-size:11px;font-weight:600;
  color:var(--tm);letter-spacing:.02em;margin-bottom:2px;
}

/* ── PERIOD TOGGLE ── */
.paiement-section__label{
  font-size:12px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--tm);margin-bottom:10px;
  display:flex;align-items:center;gap:6px;
}
.period-toggle{display:flex;gap:8px;flex-wrap:wrap}
.period-btn{
  flex:1;min-width:140px;padding:12px 14px;
  background:var(--wh);border:2px solid var(--bdr);
  border-radius:var(--rmd);font-size:13px;color:var(--td);
  cursor:pointer;text-align:center;transition:all var(--t);
}
.period-btn:hover{border-color:var(--bdf)}
.period-btn--active{
  border-color:var(--gp);color:var(--gp);
  background:var(--gpa);
}

/* ── SECTION HEAD ── */
.pay-section-head{
  display:flex;align-items:center;gap:7px;
  font-size:11px;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--tm);margin-bottom:12px;
}

/* ── MONTANT BANNER ── */
.pay-amount-banner{
  background:linear-gradient(135deg,var(--gd) 0%,var(--gp) 100%);
  border-radius:var(--rlg);padding:20px 22px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-bottom:20px;
  box-shadow:0 4px 20px rgba(13,61,43,0.25);
}
.pay-amount-banner__left{display:flex;flex-direction:column;gap:3px}
.pay-amount-banner__label{
  font-size:11px;color:rgba(255,255,255,.65);font-weight:600;
  text-transform:uppercase;letter-spacing:.08em;
}
.pay-amount-banner__value{
  font-family:var(--fd);font-size:2rem;color:#fff;line-height:1;
}
.pay-amount-banner__cycle{
  font-size:12px;color:rgba(255,255,255,.55);font-weight:400;
  align-self:flex-end;margin-bottom:2px;
}

/* ── PAYMENT METHODS ── */
.payment-methods{display:flex;flex-direction:column;gap:10px;margin-bottom:6px}

.payment-btn{
  display:flex;align-items:center;gap:14px;
  padding:16px 18px;background:var(--wh);
  border:1.5px solid var(--bdr);border-radius:var(--rmd);
  cursor:pointer;text-align:left;transition:all var(--t);
  width:100%;position:relative;overflow:hidden;
}
.payment-btn::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(135deg,var(--gpa) 0%,rgba(255,255,255,0) 100%);
  opacity:0;transition:opacity var(--t);
}
.payment-btn:hover::before{opacity:1}
.payment-btn:hover{border-color:var(--bdf);transform:translateY(-1px);box-shadow:var(--shsm)}
.payment-btn.selected{
  border-color:var(--gp);border-width:2px;
  box-shadow:0 0 0 4px rgba(26,107,70,.1),var(--shsm);
  transform:translateY(-1px);
}

/* Bouton CamPay — légèrement mis en avant */
.payment-btn--campay{background:linear-gradient(to right,#FFFDF5,#fff)}
.payment-btn--campay.selected{background:linear-gradient(135deg,var(--gpa) 0%,#fff 100%)}

/* Duo logos MTN + Orange côte à côte */
.payment-btn__logos-duo{
  display:flex;align-items:center;position:relative;
  flex-shrink:0;width:52px;height:36px;
}
.duo-logo{
  width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:2px solid #fff;position:absolute;
  box-shadow:0 1px 4px rgba(0,0,0,.15);
}
.duo-logo--mtn{left:0;top:4px;background:#FFCC00;z-index:2}
.duo-logo--orange{left:18px;top:4px;background:#FF6600;z-index:1}
.duo-logo--visa{
  position:static;width:auto;height:auto;border-radius:0;
  border:none;box-shadow:none;background:transparent;
  padding:4px 0;
}
.duo-logo--mc{
  position:static;width:auto;height:auto;border-radius:0;
  border:none;box-shadow:none;background:transparent;
}

.payment-btn__info{flex:1;position:relative;z-index:1;min-width:0}
.payment-btn__info strong{display:block;font-size:14px;font-weight:700;color:var(--td)}
.payment-btn__info span{font-size:12px;color:var(--tm);margin-top:2px;display:block;line-height:1.45}

.payment-btn__tag{
  display:inline-flex;align-items:center;gap:4px;
  font-size:10px;font-weight:700;letter-spacing:.04em;
  padding:3px 8px;border-radius:20px;margin-top:6px;
}
.payment-btn__tag--pop{background:var(--gpa);color:var(--gp)}

.payment-btn__check{
  width:22px;height:22px;border-radius:50%;flex-shrink:0;
  background:rgba(26,107,70,.1);
  display:flex;align-items:center;justify-content:center;
  transition:background var(--t),transform var(--t);
  position:relative;z-index:1;
}
.payment-btn.selected .payment-btn__check{
  background:var(--gp);transform:scale(1.1);
  box-shadow:0 2px 8px rgba(26,107,70,.35);
}

/* ── CHAMP TÉLÉPHONE MOBILE MONEY ── */
.phone-prefix-wrap{display:flex;align-items:center}
.phone-prefix{
  padding:0 14px;height:50px;line-height:50px;
  background:var(--g50);border:1.5px solid var(--bdr);
  border-right:none;border-radius:var(--rmd) 0 0 var(--rmd);
  font-size:14px;font-weight:700;color:var(--td);
  white-space:nowrap;letter-spacing:.02em;flex-shrink:0;
}
.phone-prefix-wrap .field-input{border-radius:0 var(--rmd) var(--rmd) 0}

/* Info détection auto opérateur */
.campay-auto-detect{
  display:flex;align-items:flex-start;gap:6px;
  margin-top:8px;padding:8px 12px;
  background:var(--gpa);border-radius:8px;
  font-size:11px;color:var(--gp);font-weight:500;line-height:1.5;
}
.campay-auto-detect svg{flex-shrink:0;margin-top:1px}

/* ── BANDE SÉCURITÉ ── */
.pay-security-strip{
  display:flex;flex-wrap:wrap;gap:8px 16px;
  padding:12px 16px;margin-top:16px;
  background:var(--g50);border-radius:var(--rmd);
  border:1px solid var(--bdr);
}
.pay-security-strip__item{
  display:flex;align-items:center;gap:5px;
  font-size:11px;color:var(--tm);font-weight:500;
}

/* ── RECAP ── */
.recap{
  background:var(--g50);border:1.5px solid var(--bdr);
  border-radius:var(--rmd);padding:20px;margin-top:4px;
}
.recap__title{
  font-size:11px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--tm);margin-bottom:14px;
}
.recap__grid{display:flex;flex-direction:column;gap:10px}
.recap__item{display:flex;align-items:baseline;gap:10px}
.recap__label{font-size:13px;color:var(--tm);flex:0 0 96px}
.recap__val{font-size:13px;font-weight:600;color:var(--td);flex:1;min-width:0}

/* ═══════════════════════════════════════
   NAVIGATION BOUTONS
═══════════════════════════════════════ */
.step__nav{margin-top:8px}
.step__nav--2{display:flex;gap:12px;align-items:center}

.btn-next{
  width:100%;padding:17px 24px;
  background:var(--gp);color:var(--wh);
  border-radius:var(--rmd);
  font-size:15px;font-weight:600;
  display:flex;align-items:center;justify-content:center;gap:10px;
  transition:background var(--t),transform var(--t),box-shadow var(--t),opacity .3s;
  min-height:56px;
  box-shadow:0 4px 18px rgba(26,107,70,.26);
}
.btn-next:hover:not(:disabled){
  background:var(--gd);transform:translateY(-2px);
  box-shadow:0 8px 28px rgba(26,107,70,.34);
}
.btn-next:active:not(:disabled){transform:scale(.98)}

/* Désactivé — clairement grisé avec message */
.btn-next:disabled{
  opacity:.35;
  cursor:not-allowed;
  transform:none;
  box-shadow:none;
  background:var(--tm);
  filter:grayscale(.6);
}

/* Animation secousse quand on clique disabled */
@keyframes shake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-6px)}
  40%{transform:translateX(6px)}
  60%{transform:translateX(-4px)}
  80%{transform:translateX(4px)}
}
.btn-next.shake{animation:shake .35s ease both}

/* Animation pulse quand le bouton devient actif */
@keyframes pulse{
  0%{box-shadow:0 4px 18px rgba(26,107,70,.26)}
  50%{box-shadow:0 0 0 10px rgba(26,107,70,.12),0 8px 32px rgba(26,107,70,.38)}
  100%{box-shadow:0 4px 18px rgba(26,107,70,.26)}
}

/* Bandeau aide sous le bouton désactivé */
.btn-next-hint{
  text-align:center;font-size:12px;color:var(--tm);
  margin-top:10px;font-weight:500;
  display:flex;align-items:center;justify-content:center;gap:6px;
  opacity:0;transition:opacity .3s;pointer-events:none;
}
.btn-next-hint.visible{opacity:1}

.btn-prev{
  padding:17px 20px;border-radius:var(--rmd);
  border:1.5px solid var(--bdr);
  font-size:14px;font-weight:500;color:var(--tm);
  transition:all var(--t);white-space:nowrap;min-height:56px;
  flex-shrink:0;background:var(--wh);
}
.btn-prev:hover{border-color:var(--bdf);color:var(--gd);background:var(--gpa)}

.btn-submit-final{
  flex:1;padding:17px 24px;
  background:var(--gp);color:var(--wh);
  border-radius:var(--rmd);
  font-size:15px;font-weight:600;
  display:flex;align-items:center;justify-content:center;gap:10px;
  transition:all var(--t);min-height:56px;
  box-shadow:0 4px 18px rgba(26,107,70,.26);
}
.btn-submit-final:hover{
  background:var(--gd);transform:translateY(-2px);
  box-shadow:0 8px 28px rgba(26,107,70,.34);
}
.btn-submit-final:disabled{opacity:.5;cursor:not-allowed;transform:none}

/* Variante "plan payant" — dégradé or/vert pour signaler l'action financière */
.btn-submit-final--pay{
  background:linear-gradient(135deg,#0D3D2B 0%,#1A6B46 60%,#2E8B57 100%);
  box-shadow:0 4px 20px rgba(13,61,43,.35);
  letter-spacing:.01em;
}
.btn-submit-final--pay:hover{
  background:linear-gradient(135deg,#071f16 0%,#0D3D2B 60%,#1A6B46 100%);
  transform:translateY(-2px);box-shadow:0 8px 30px rgba(13,61,43,.45);
}
.spinner{display:flex;align-items:center}
.spin-p{animation:spinA .8s linear infinite}
@keyframes spinA{from{stroke-dasharray:1,200;stroke-dashoffset:0}to{stroke-dasharray:89,200;stroke-dashoffset:-135}}

/* ═══════════════════════════════════════
   SUCCESS
═══════════════════════════════════════ */
.success-wrap{
  display:flex;flex-direction:column;align-items:center;
  text-align:center;padding:32px 0 40px;
}
.success-icon{
  width:72px;height:72px;border-radius:50%;
  background:var(--gp);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:24px;
  box-shadow:0 12px 40px rgba(26,107,70,.3);
  animation:popIn .5s cubic-bezier(.34,1.56,.64,1) both;
}
@keyframes popIn{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}
.success-title{
  font-family:var(--fd);
  font-size:clamp(1.6rem,6vw,2.2rem);
  color:var(--td);line-height:1.2;letter-spacing:-.02em;margin-bottom:16px;
}
.success-title em{font-style:normal;color:var(--gp)}
.success-desc{
  font-size:15px;line-height:1.75;color:var(--tm);
  margin-bottom:32px;max-width:380px;
}
.success-desc strong{color:var(--td)}
.success-steps{
  display:flex;flex-direction:column;gap:14px;
  width:100%;text-align:left;margin-bottom:32px;
}
.success-step{
  display:flex;align-items:flex-start;gap:14px;
  background:var(--g50);border:1px solid var(--bdr);
  border-radius:var(--rmd);padding:16px;
}
.success-step__num{
  width:30px;height:30px;border-radius:50%;
  background:var(--gpa);border:2px solid var(--gp);
  color:var(--gp);font-size:12px;font-weight:700;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.success-step div strong{display:block;font-size:14px;font-weight:600;color:var(--td);margin-bottom:2px}
.success-step div span{font-size:13px;color:var(--tm)}

/* Icône en attente — bleu/violet au lieu du vert */
.success-icon--pending{
  background:linear-gradient(135deg,#3B82F6 0%,#6366F1 100%);
  box-shadow:0 12px 40px rgba(99,102,241,.3);
}

/* Bannière de statut "en attente" */
.success-pending-banner{
  display:flex;align-items:flex-start;gap:10px;
  background:#EFF6FF;border:1px solid #93C5FD;border-left:3px solid #3B82F6;
  border-radius:var(--rmd);padding:14px 16px;
  font-size:13px;color:#1E40AF;line-height:1.6;
  margin-bottom:28px;text-align:left;width:100%;
}
.success-pending-banner strong{color:#1E3A8A}

/* Étape validée (check vert) */
.success-step--done{
  background:var(--gpa);border-color:rgba(26,107,70,.25);
}
.success-step__num--done{
  background:var(--gp);border-color:var(--gp);
  display:flex;align-items:center;justify-content:center;
}

/* Étape en cours (pulsation) */
.success-step--active{
  background:#EFF6FF;border-color:#93C5FD;
}
.success-step__num--active{
  background:linear-gradient(135deg,#3B82F6,#6366F1);
  border-color:#3B82F6;color:white;
  animation:pulseStep 1.8s ease-in-out infinite;
}
@keyframes pulseStep{
  0%,100%{box-shadow:0 0 0 0 rgba(99,102,241,.4)}
  50%{box-shadow:0 0 0 6px rgba(99,102,241,0)}
}

/* Hint email sous le bouton */
.success-email-hint{
  font-size:12px;color:var(--tm);margin-top:16px;text-align:center;line-height:1.6;
}
.success-email-hint strong{color:var(--td)}

/* ═══════════════════════════════════════
   TRUST BAR — sticky bottom
═══════════════════════════════════════ */
.trust-bar{
  position:fixed;bottom:0;left:0;right:0;
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(12px);
  border-top:1px solid var(--bdr);
  padding:12px 20px;
  display:flex;align-items:center;justify-content:center;gap:20px;
  z-index:80;
}
.trust-item{
  display:flex;align-items:center;gap:5px;
  font-size:11px;font-weight:600;color:var(--tm);
  white-space:nowrap;
}
.trust-item svg{color:var(--gm)}

/* ── DESKTOP AMÉLIORATIONS ── */
@media(min-width:640px){
  .topbar__inner,.steps-wrap{max-width:600px}
  .progress-wrap{max-width:600px;margin:0 auto;padding:16px 0 20px}
  .type-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .offres{display:grid;grid-template-columns:1fr 1fr;gap:18px}
  .offre-card--recommended{grid-column:1/-1}
  .trust-bar{gap:32px}
  .trust-item{font-size:12px}
}

@media(min-width:960px){
  .steps-wrap{padding:0}
  body{padding-bottom:100px}
  .step__title{font-size:2.8rem}
  /* Les 3 cartes sortent du conteneur 600px (breakout centré) :
     avant elles y étaient compressées à ~190px chacune → prix coupés,
     texte illisible. Ici : ~330px par carte, aérées et alignées. */
  .offres{
    grid-template-columns:repeat(3,1fr);
    align-items:stretch;
    width:min(1040px,calc(100vw - 48px));
    position:relative;left:50%;transform:translateX(-50%);
  }
  .offre-card--recommended{grid-column:auto}
}

/* ══════════════════════════════════════════
   CARTE GOOGLE MAPS — LOCALISATION PICKER
══════════════════════════════════════════ */

/* Bouton "Localiser" intégré au field-wrap */
.field-locate-btn{
  flex-shrink:0;
  display:flex;align-items:center;gap:6px;
  padding:0 18px;
  height:100%;min-height:52px;
  border:none;border-left:1.5px solid var(--bdr);
  background:var(--gpa);color:var(--gp);
  font-size:12px;font-weight:700;letter-spacing:.04em;
  cursor:pointer;white-space:nowrap;
  transition:background var(--t),color var(--t);
}
.field-locate-btn:hover{background:var(--gp);color:var(--wh)}
.field-locate-btn:active{transform:scale(.97)}
.field-locate-btn.loading{opacity:.6;pointer-events:none}

/* Conteneur carte */
.gmap-picker-wrap{
  position:relative;
  width:100%;height:420px;
  border-radius:var(--rmd);
  overflow:hidden;
  border:1.5px solid var(--bdr);
  background:#e8f0ea;
  box-shadow:var(--shmd);
}
#gmap-picker{
  width:100%;height:100%;
  /* Leaflet a besoin d'un contexte de positionnement propre */
  position:relative;
  z-index:0;
}

/* ── Leaflet overrides picker ── */
.leaflet-container{font-family:inherit}
.leaflet-popup-content-wrapper{
  border-radius:14px!important;padding:0!important;
  overflow:hidden!important;
  box-shadow:0 8px 32px rgba(0,0,0,.14)!important;
}
.leaflet-popup-content{margin:0!important}
.leaflet-popup-tip-container{display:none}
.cm-pin-icon,.cm-label-icon,.cm-user-icon{background:none!important;border:none!important}
.leaflet-tile-pane{filter:saturate(1.15) contrast(1.05) brightness(1.02)}
.leaflet-control-zoom{border:none!important;box-shadow:0 4px 16px rgba(0,0,0,.18)!important;border-radius:12px!important;overflow:hidden}
.leaflet-control-zoom a{background:rgba(255,255,255,.95)!important;color:#1A6B46!important;font-size:16px!important;font-weight:700!important;border-bottom:1px solid rgba(26,107,70,.12)!important;transition:background .18s,color .18s!important}
.leaflet-control-zoom a:last-child{border-bottom:none!important}
.leaflet-control-zoom a:hover{background:linear-gradient(135deg,#1A6B46,#2E8B57)!important;color:#fff!important}
.leaflet-control-attribution{background:rgba(255,255,255,.75)!important;backdrop-filter:blur(6px)!important;font-size:9px!important;border-radius:8px 0 0 0!important;padding:3px 7px!important}

/* Overlay de chargement */
.gmap-overlay{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--g50);z-index:10;
  transition:opacity .4s,visibility .4s;
}
.gmap-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}
.gmap-overlay__inner{
  display:flex;flex-direction:column;align-items:center;gap:12px;
  color:var(--tm);font-size:13px;font-weight:500;
}
@keyframes gmap-spin{to{transform:rotate(360deg)}}
.gmap-overlay__spin{animation:gmap-spin 1s linear infinite}

/* Bouton GPS flottant */
.gmap-gps-fab{
  position:absolute;bottom:16px;right:16px;z-index:5;
  width:44px;height:44px;
  background:var(--wh);
  border:none;border-radius:50%;
  box-shadow:0 2px 14px rgba(0,0,0,.18);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:var(--gp);
  transition:background var(--t),transform var(--t),box-shadow var(--t);
}
.gmap-gps-fab:hover{background:var(--gpa);transform:scale(1.1);box-shadow:0 4px 20px rgba(0,0,0,.22)}
.gmap-gps-fab:active{transform:scale(.96)}
.gmap-gps-fab.loading{opacity:.5;pointer-events:none}

/* Instruction cliquable (badge interne) */
.gmap-click-hint{
  position:absolute;top:14px;left:50%;transform:translateX(-50%);
  background:rgba(255,255,255,.9);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  padding:6px 16px;border-radius:999px;
  font-size:11.5px;font-weight:600;color:#374151;
  display:flex;align-items:center;gap:6px;
  box-shadow:0 2px 10px rgba(0,0,0,.1);
  pointer-events:none;z-index:5;
  transition:opacity .4s;white-space:nowrap;
}
.gmap-click-hint.hidden{opacity:0}

/* Badge coordonnées */
.gmap-coords-badge{
  display:flex;align-items:center;gap:10px;
  padding:11px 16px;
  background:var(--g50);
  border:1.5px solid var(--bdr);
  border-radius:var(--rsm);
  font-size:12.5px;color:var(--tm);
  transition:all .3s;
}
.gmap-coords-badge.confirmed{
  background:rgba(26,107,70,.07);
  border-color:var(--gp);color:var(--gd);
}
.gmap-coords-badge__dot{
  width:9px;height:9px;border-radius:50%;
  background:var(--subtle);flex-shrink:0;
  transition:background .3s;
}
.gmap-coords-badge.confirmed .gmap-coords-badge__dot{background:var(--gp)}
.gmap-coords-badge__check{
  margin-left:auto;flex-shrink:0;
  width:22px;height:22px;border-radius:50%;
  background:var(--gp);color:var(--wh);
  display:flex;align-items:center;justify-content:center;
  opacity:0;transform:scale(.6);
  transition:opacity .3s,transform .3s;
}
.gmap-coords-badge.confirmed .gmap-coords-badge__check{opacity:1;transform:scale(1)}

/* Overrides Google Maps InfoWindow */
.gm-style .gm-style-iw-c{
  border-radius:14px!important;
  box-shadow:0 8px 30px rgba(0,0,0,.15)!important;
}
.gm-style .gm-style-iw-d{overflow:hidden!important;padding:0!important}
.gm-ui-hover-effect{
  top:4px!important;right:4px!important;
  background:rgba(0,0,0,.25)!important;border-radius:50%!important;
}

/* Fallback si pas de clé Maps */
.gmap-fallback{
  width:100%;height:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;padding:24px;text-align:center;
  font-size:13px;color:var(--tm);
}
.gmap-fallback strong{color:var(--gp)}
.gmap-fallback code{
  font-family:monospace;font-size:12px;
  background:var(--gpa);padding:2px 8px;border-radius:4px;
}

/* ══════════════════════════════════════════
   COORDONNÉES MANUELLES — fallback sans Maps
══════════════════════════════════════════ */
.coords-manual-toggle{
  display:flex;align-items:center;gap:8px;
  width:100%;margin-top:12px;padding:10px 14px;
  background:var(--g50);border:1.5px dashed var(--bdr);
  border-radius:var(--rmd);font-size:13px;font-weight:500;
  color:var(--tm);cursor:pointer;transition:all var(--t);
  text-align:left;
}
.coords-manual-toggle:hover{
  border-color:var(--gp);color:var(--gp);background:var(--gpa);
}
.coords-manual-toggle.open{
  border-style:solid;border-color:var(--gp);color:var(--gp);background:var(--gpa);
}
.coords-manual-toggle__chevron{
  margin-left:auto;flex-shrink:0;transition:transform var(--t);
}
.coords-manual-toggle.open .coords-manual-toggle__chevron{transform:rotate(180deg)}

.coords-manual-panel{
  display:none;margin-top:12px;
  padding:16px;background:var(--g50);
  border:1.5px solid var(--bdr);border-radius:var(--rmd);
}
.coords-manual-panel.open{display:block}

.coords-manual-hint{
  display:flex;align-items:flex-start;gap:6px;
  font-size:12px;color:var(--tm);line-height:1.55;
  margin-bottom:14px;
}
.coords-manual-link{
  color:var(--gp);font-weight:600;text-decoration:underline;
  text-underline-offset:2px;
}
.coords-manual-row{
  display:flex;gap:10px;
}

/* ══════════════════════════════════════════════════════
   MODAL PAIEMENT — Premium UX
══════════════════════════════════════════════════════ */
.pay-modal{
  position:fixed;inset:0;z-index:9999;
  display:flex;align-items:flex-end;justify-content:center;
  pointer-events:none;visibility:hidden;
  transition:visibility 0s .4s;
}
.pay-modal.open{
  pointer-events:all;visibility:visible;
  transition:visibility 0s 0s;
}
.pay-modal__backdrop{
  position:absolute;inset:0;
  background:rgba(8,24,16,.65);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  opacity:0;transition:opacity .35s ease;
}
.pay-modal.open .pay-modal__backdrop{opacity:1}

.pay-modal__sheet{
  position:relative;z-index:1;
  background:var(--wh);
  border-radius:28px 28px 0 0;
  width:100%;max-width:540px;
  padding:12px 24px 48px;
  transform:translateY(100%);
  transition:transform .42s cubic-bezier(.16,1,.3,1);
  max-height:92vh;overflow-y:auto;
  box-shadow:0 -8px 48px rgba(0,0,0,.18);
}
.pay-modal.open .pay-modal__sheet{transform:translateY(0)}

/* Drag handle */
.pay-modal__handle{
  width:40px;height:4px;border-radius:2px;
  background:var(--bdr);margin:0 auto 24px;
}

/* States */
.pay-modal__state{display:flex;flex-direction:column;align-items:center;text-align:center}
.pay-modal__state--hidden{display:none!important}

/* ── Illustration téléphone (état pending) ── */
.pay-phone-illus{
  position:relative;width:100px;height:120px;
  display:flex;align-items:center;justify-content:center;
  margin-bottom:20px;
}
.pay-phone-illus__device{
  width:64px;height:106px;background:var(--td);
  border-radius:14px;position:relative;z-index:2;
  box-shadow:0 8px 28px rgba(10,31,21,.35);
  overflow:hidden;
}
.pay-phone-illus__device::before{
  content:'';display:block;
  width:22px;height:4px;background:rgba(255,255,255,.2);
  border-radius:2px;margin:8px auto 0;
}
.pay-phone-illus__screen{
  margin:10px 4px 0;background:#1A6B46;
  border-radius:8px;padding:8px 6px;
}
.pay-phone-illus__notif{
  display:flex;align-items:center;gap:4px;
  background:rgba(255,255,255,.15);border-radius:5px;
  padding:5px 7px;
}
.pay-phone-illus__notif-dot{
  width:6px;height:6px;border-radius:50%;
  background:#FFD700;flex-shrink:0;
  animation:notifPulse 1s ease infinite;
}
@keyframes notifPulse{0%,100%{opacity:1}50%{opacity:.3}}
.pay-phone-illus__notif span{font-size:6px;color:#fff;font-weight:600;line-height:1.2}
.pay-phone-illus__amount{
  font-size:8px;font-weight:800;color:#fff;margin-top:5px;
  text-align:center;font-variant-numeric:tabular-nums;
}
/* Signal rings */
.pay-phone-illus__ring{
  position:absolute;border-radius:50%;
  border:2px solid rgba(26,107,70,.25);
  animation:ringExpand 2s ease-out infinite;
}
.pay-phone-illus__ring--1{width:80px;height:80px;animation-delay:0s}
.pay-phone-illus__ring--2{width:104px;height:104px;animation-delay:.7s}
@keyframes ringExpand{
  0%  {transform:scale(.6);opacity:.8}
  100%{transform:scale(1.1);opacity:0}
}

/* ── Titre et sous-titre ── */
.pay-modal__title{
  font-family:var(--fd);font-size:1.65rem;color:var(--td);
  line-height:1.2;margin-bottom:8px;
}
.pay-modal__sub{
  font-size:14px;color:var(--tm);line-height:1.65;
  margin-bottom:16px;max-width:340px;
}
.pay-modal__sub strong{color:var(--td)}

/* ── Montant mis en valeur ── */
.pay-modal__amount-row{
  display:flex;align-items:center;justify-content:space-between;
  width:100%;background:var(--gpa);border:1.5px solid rgba(26,107,70,.15);
  border-radius:var(--rmd);padding:13px 18px;margin-bottom:16px;
}
.pay-modal__amount-label{font-size:12px;color:var(--tm);font-weight:600}
.pay-modal__amount-value{
  font-family:var(--fd);font-size:1.35rem;color:var(--gp);
  font-variant-numeric:tabular-nums;
}

/* ── Timer ── */
.pay-modal__timer{
  display:inline-flex;align-items:center;gap:6px;
  background:var(--g50);border-radius:var(--rmd);
  padding:9px 18px;font-size:13px;color:var(--tb);
  margin-bottom:24px;border:1px solid var(--bdr);
}
.pay-modal__timer strong{
  font-size:16px;font-variant-numeric:tabular-nums;
  color:var(--gp);min-width:38px;display:inline-block;text-align:center;
  transition:color .3s;
}
.pay-modal__timer.urgent strong{color:var(--red)}

/* ── Étapes ── */
.pay-modal__steps{
  display:flex;flex-direction:column;gap:0;
  width:100%;text-align:left;margin-bottom:22px;
}
.pay-modal__step{
  display:flex;align-items:center;gap:14px;
  font-size:13px;color:var(--tm);padding:9px 0;
  position:relative;
}
.pay-modal__step+.pay-modal__step::before{
  content:'';position:absolute;top:0;left:10px;
  width:1px;height:9px;background:var(--bdr);
}
.pay-modal__step--done{color:var(--gp)}
.pay-modal__step--done .pay-modal__step+.pay-modal__step::before{background:var(--gp)}
.pay-modal__step--active{color:var(--td);font-weight:600}
.pay-step-dot{
  width:20px;height:20px;border-radius:50%;flex-shrink:0;
  background:var(--bdr);
  display:flex;align-items:center;justify-content:center;
}
.pay-modal__step--done .pay-step-dot{background:var(--gp)}
.pay-modal__step--active .pay-step-dot{
  background:var(--gp);
  box-shadow:0 0 0 5px rgba(26,107,70,.18);
  animation:payDotPulse 1.5s ease infinite;
}
@keyframes payDotPulse{
  0%,100%{box-shadow:0 0 0 5px rgba(26,107,70,.18)}
  50%     {box-shadow:0 0 0 9px rgba(26,107,70,.07)}
}

/* Bouton annuler discret */
.pay-modal__cancel{
  font-size:13px;color:var(--tm);
  text-decoration:underline;text-underline-offset:3px;
  padding:8px 0;transition:color var(--t);
}
.pay-modal__cancel:hover{color:var(--red)}

/* ── State : SUCCESS ── */
.pay-modal__success-ring{
  position:relative;margin-bottom:20px;
}
.pay-modal__success-ring::before{
  content:'';position:absolute;inset:-10px;border-radius:50%;
  background:var(--gpa);animation:successRingPop .5s ease forwards;
}
@keyframes successRingPop{
  from{transform:scale(0);opacity:0}
  to  {transform:scale(1);opacity:1}
}
.pay-modal__icon{
  width:80px;height:80px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  position:relative;z-index:1;
}
.pay-modal__icon--success{
  background:var(--gp);
  animation:iconPop .4s .15s cubic-bezier(.34,1.56,.64,1) both;
}
.pay-modal__icon--failed{background:var(--red)}
@keyframes iconPop{
  from{transform:scale(0)}
  to  {transform:scale(1)}
}
.pay-modal__success-amount{
  background:var(--gpa);border-radius:var(--rsm);
  padding:8px 20px;font-family:var(--fd);font-size:1.2rem;
  color:var(--gp);margin:8px 0;
}

/* Progress bar (redirect countdown) */
.pay-modal__progress-bar{
  width:100%;height:4px;background:var(--gpa);
  border-radius:2px;overflow:hidden;
}
.pay-modal__progress-bar div{
  height:100%;background:var(--gp);width:0;
  animation:payRedirect 3s linear forwards;
}
@keyframes payRedirect{from{width:0}to{width:100%}}

/* ── State : FAILED actions ── */
.pay-modal__fail-actions{display:flex;flex-direction:column;gap:10px;width:100%;margin-top:20px}
.pay-modal__fail-btn{
  width:100%;padding:15px;border-radius:var(--rmd);
  font-size:14px;font-weight:600;
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:all var(--t);
}
.pay-modal__fail-btn--primary{
  background:var(--gp);color:#fff;
}
.pay-modal__fail-btn--primary:hover{background:var(--gd);transform:translateY(-1px)}
.pay-modal__fail-btn--secondary{
  background:var(--g50);color:var(--td);
  border:1.5px solid var(--bdr);
}
.pay-modal__fail-btn--secondary:hover{border-color:var(--bdf)}

/* ═══════════════════════════════════════════════════
   SECTION OTP — Vérification email + WhatsApp
═══════════════════════════════════════════════════ */

.otp-section{
  margin-top:28px;
  padding:20px;
  background:#fff;
  border:1.5px solid var(--bdr);
  border-radius:var(--rlg);
  box-shadow:var(--shsm);
}

.otp-section__head{
  display:flex;align-items:flex-start;gap:14px;
  margin-bottom:22px;
}

.otp-section__icon{
  flex-shrink:0;
  width:42px;height:42px;
  background:var(--gpa);
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:var(--gp);
}

.otp-section__title{
  font-size:16px;font-weight:700;color:var(--td);
  margin-bottom:4px;
}

.otp-section__sub{
  font-size:13px;color:var(--tm);line-height:1.5;
}

/* Champ OTP centré avec espacement entre chiffres */
.otp-input{
  letter-spacing:8px;
  font-size:22px;
  font-weight:700;
  text-align:center;
  font-variant-numeric:tabular-nums;
  color:var(--gd);
}
.otp-input::placeholder{
  font-size:14px;letter-spacing:6px;color:var(--tl);font-weight:400;
}

/* Destination masquée (email/téléphone) */
.otp-dest{
  display:inline-block;margin-left:6px;
  font-size:12px;font-weight:600;
  color:var(--gp);background:var(--gpa);
  padding:2px 8px;border-radius:20px;
  max-width:160px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;vertical-align:middle;
}

/* Actions secondaires */
.otp-actions{
  display:flex;align-items:center;flex-wrap:wrap;gap:10px;
  margin:4px 0 20px;
}

.otp-resend-btn{
  display:flex;align-items:center;gap:6px;
  font-size:13px;font-weight:600;color:var(--gp);
  background:none;border:none;padding:0;cursor:pointer;
  transition:color var(--t);
}
.otp-resend-btn:hover{color:var(--gd);}
.otp-resend-btn:disabled{color:var(--tm);cursor:default;}

.otp-cooldown{
  font-size:12px;font-weight:400;color:var(--tm);
  margin-left:2px;
}

.otp-edit-btn{
  font-size:13px;color:var(--tm);
  background:none;border:none;padding:0;cursor:pointer;
  text-decoration:underline;text-underline-offset:3px;
  transition:color var(--t);
}
.otp-edit-btn:hover{color:var(--td);}

/* Spinner dans le bouton "Continuer" de step3 */
#step3NextBtn .spinner{
  display:inline-flex;margin-left:4px;
}
#step3NextBtn .spinner svg{
  animation:spin .8s linear infinite;
}

/* Erreur inline des champs OTP */
#otpEmailErr,#otpPhoneErr{
  font-size:12.5px;color:var(--red);
  margin-top:4px;display:block;
}

/* ═══════════════════════════════════
   VILLE PICKER — 3 boutons de ville
═══════════════════════════════════ */
.ville-picker {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 4px;
}
.ville-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  padding: 16px 12px;
  border-radius: 14px;
  border: 2px solid var(--bdr);
  background: var(--wh);
  cursor: pointer;
  transition: all .22s cubic-bezier(.4,0,.2,1);
  position: relative;
  font-family: var(--fb);
}
.ville-btn:hover {
  border-color: var(--gm);
  background: var(--g50);
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(26,107,70,0.13);
}
.ville-btn.active {
  border-color: var(--gp);
  background: var(--gpa);
  box-shadow: 0 0 0 3px rgba(26,107,70,0.15), 0 4px 16px rgba(26,107,70,0.15);
}
.ville-btn.active::after {
  content: '✓';
  position: absolute;
  top: 8px; right: 10px;
  font-size: 11px; font-weight: 700;
  color: var(--gp);
}
.ville-btn__flag { font-size: 22px; line-height: 1; }
.ville-btn__name {
  font-size: 14px; font-weight: 700;
  color: var(--td);
  transition: color .2s;
}
.ville-btn.active .ville-btn__name { color: var(--gp); }
.ville-btn__sub {
  font-size: 10px; font-weight: 600;
  letter-spacing: .07em; text-transform: uppercase;
  color: var(--tl);
  transition: color .2s;
}
.ville-btn.active .ville-btn__sub { color: var(--gm); }
@media(max-width:480px){
  .ville-picker { gap: 8px; }
  .ville-btn { padding: 12px 8px; }
  .ville-btn__flag { font-size: 18px; }
  .ville-btn__name { font-size: 13px; }
}

/* ═══════════════════════════════════
   QUARTIER CHIPS — navigation carte
═══════════════════════════════════ */
.qmap-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 12px;
  padding: 14px 16px;
  background: #F2FAF5;
  border: 1px solid rgba(26,107,70,0.12);
  border-radius: 12px;
}
.qmap-chip {
  display: inline-flex;
  align-items: center;
  padding: 5px 13px;
  border-radius: 999px;
  border: 1.5px solid rgba(26,107,70,0.20);
  background: #fff;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 12px;
  font-weight: 600;
  color: #1A6B46;
  cursor: pointer;
  transition: background 0.18s, border-color 0.18s, color 0.18s, transform 0.18s;
  white-space: nowrap;
}
.qmap-chip:hover {
  background: #1A6B46;
  color: #fff;
  border-color: #1A6B46;
  transform: translateY(-1px);
}
.qmap-chip.active {
  background: #0D3D2B;
  color: #fff;
  border-color: #0D3D2B;
}
