/* ===========================================================================
   horaa — feuille de styles unique
   Reprise des maquettes, dédupliquée entre les pages FR/EN et la page légale.
   Ordre : jetons → base → composants partagés → accueil → page légale.
   =========================================================================== */

:root{
  --majorelle:#3A49C4;
  --encre:#171B33;
  --sable:#F6F3EC;
  --blanc:#FFFFFF;
  --menthe:#2E8F6E;
  --ambre:#E8A013;
  --rouge:#C0392B;
  --hairline:rgba(23,27,51,.22);
  --hairline-light:rgba(246,243,236,.2);
  --radius:10px;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} }

body{
  font-family:'IBM Plex Sans',sans-serif;
  color:var(--encre);
  background:var(--sable);
  line-height:1.6;
  font-size:16px;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:'Sora',sans-serif;line-height:1.15;font-weight:700;}
a{color:inherit;}
img,svg{max-width:100%;}

.mono{font-family:'IBM Plex Mono',monospace;font-size:.76rem;letter-spacing:.07em;text-transform:uppercase;}
.wrap{max-width:1040px;margin:0 auto;padding:0 22px;}
.wrap--narrow{max-width:760px;}
.eyebrow{color:var(--majorelle);display:block;margin-bottom:10px;}
section{padding:66px 0;scroll-margin-top:70px;}
.section--tight{padding-top:0;}
.section-title{font-size:clamp(1.5rem,3.2vw,2.1rem);margin-bottom:10px;}
.section-title--sm{font-size:1.3rem;}
.section-sub{max-width:56ch;margin-bottom:36px;}
.section-sub--muted{opacity:.85;}

/* Accès clavier : le lien d'évitement n'apparaît qu'au focus. */
.skip-link{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--encre);color:var(--blanc);padding:12px 18px;border-radius:0 0 var(--radius) 0;
}
.skip-link:focus{left:0;}
:focus-visible{outline:3px solid var(--majorelle);outline-offset:2px;}

/* --- Bandeau des fuseaux ------------------------------------------------ */
.tz-strip{background:var(--encre);color:var(--sable);border-bottom:2px solid var(--majorelle);}
.tz-inner{display:flex;justify-content:center;align-items:stretch;}
.tz{
  flex:1;text-align:center;padding:12px 8px 11px;
  border-left:.5px solid var(--hairline-light);
  /* Sans min-width:0, un élément flex refuse de descendre sous la largeur de
     son contenu (« CASABLANCA », « 12:25 ») : les quatre cellules forcent
     alors le document à dépasser le viewport et toute la page défile
     horizontalement. C'est la cause du chevauchement observé sur mobile. */
  min-width:0;
}
.tz:first-child{border-left:none;}
/* Le nom de ville se tronque proprement dans sa cellule au lieu de déborder
   de part et d'autre — le texte est centré, il empiéterait sinon sur les
   cellules voisines et sur les bords de l'écran. */
.tz .city{
  font-family:'IBM Plex Mono',monospace;font-size:.6rem;letter-spacing:.12em;
  text-transform:uppercase;opacity:.6;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tz .time{
  display:block;
  font-family:'Sora',sans-serif;font-weight:700;font-size:1.35rem;line-height:1.15;
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.tz-hero{flex:1.5;background:rgba(58,73,196,.22);}
.tz-hero .city{color:var(--ambre);opacity:1;}
.tz-hero .time{color:var(--blanc);font-size:1.55rem;}

/* Ville du visiteur : liseré ambre. La classe est posée par le serveur puis
   déplacée par le JavaScript quand on change de devise. */
.tz.is-you{box-shadow:inset 0 -3px 0 var(--ambre);}
.tz.is-you .city{color:var(--ambre);opacity:1;}
.tz.is-you .time{color:var(--blanc);}
@media (max-width:640px){
  .tz .city{font-size:.52rem;}
  .tz .time{font-size:1.05rem;}
  .tz-hero .time{font-size:1.2rem;}
}
/* Très petits écrans (iPhone SE et assimilés) : on récupère la place prise
   par les marges pour que l'heure reste lisible sans troncature. */
@media (max-width:400px){
  .tz-inner{padding-left:10px;padding-right:10px;}
  .tz{padding-left:4px;padding-right:4px;}
  .tz .city{font-size:.5rem;letter-spacing:.08em;}
  .tz .time{font-size:.92rem;}
  .tz-hero .time{font-size:1.05rem;}
}

/* --- En-tête ------------------------------------------------------------ */
header.site{
  position:sticky;top:0;z-index:60;
  background:rgba(246,243,236,.94);
  backdrop-filter:blur(8px);
  border-bottom:.5px solid var(--hairline);
}
header.site--plain{position:static;background:var(--sable);backdrop-filter:none;}
.nav{display:flex;align-items:center;justify-content:space-between;height:62px;gap:14px;}
.nav-right{display:flex;align-items:center;gap:14px;}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--encre);}
.brand .name{font-family:'Sora',sans-serif;font-weight:700;font-size:1.2rem;letter-spacing:-.01em;}
.brand .name b{color:var(--majorelle);}
.nav-links{display:flex;gap:20px;font-size:.88rem;font-weight:500;}
.nav-links a{text-decoration:none;opacity:.8;}
.nav-links a:hover{opacity:1;color:var(--majorelle);}
@media (max-width:860px){ .nav-links{display:none;} }
.nav-cta{
  text-decoration:none;background:var(--encre);color:var(--blanc);
  padding:10px 18px;border-radius:var(--radius);font-weight:600;font-size:.88rem;
  transition:background .15s;white-space:nowrap;
}
.nav-cta:hover{background:var(--majorelle);}
.back{font-size:.88rem;text-decoration:none;font-weight:500;white-space:nowrap;}
.back:hover{color:var(--majorelle);}

.lang{display:flex;gap:4px;font-size:.66rem;}
.lang a,.lang .lang-on{
  padding:4px 9px;border-radius:16px;text-decoration:none;
  border:.5px solid var(--hairline);color:var(--encre);
}
.lang .lang-on{background:var(--encre);color:var(--blanc);border-color:var(--encre);}
.lang a:hover{border-color:var(--majorelle);color:var(--majorelle);}

/* --- Boutons ------------------------------------------------------------ */
.btn{
  display:inline-block;text-decoration:none;font-weight:600;
  padding:14px 26px;border-radius:var(--radius);font-size:1rem;
  border:none;cursor:pointer;font-family:'IBM Plex Sans',sans-serif;
  transition:background .15s;
}
.btn-primary{background:var(--majorelle);color:var(--blanc);}
.btn-primary:hover{background:var(--encre);}
.btn-wa{background:var(--menthe);color:var(--blanc);}
.btn-wa:hover{background:var(--encre);}

/* --- Hero --------------------------------------------------------------- */
.hero{padding:78px 0 60px;}
.hero h1{font-size:clamp(2.1rem,5.4vw,3.4rem);margin-bottom:20px;max-width:18ch;}
.hero h1 em{font-style:normal;color:var(--majorelle);}
.hero p{max-width:52ch;font-size:1.06rem;margin-bottom:30px;}
.hero-ctas{display:flex;gap:12px;flex-wrap:wrap;}
.hero-facts{margin-top:44px;display:flex;flex-wrap:wrap;border-top:.5px solid var(--hairline);}
.fact{padding:14px 26px 0 0;margin-right:14px;}
.fact strong{display:block;font-family:'Sora',sans-serif;font-size:.98rem;margin-top:3px;}

/* --- Prix géo-personnalisé ---------------------------------------------- */
.geo-price{
  background:var(--blanc);border:.5px solid var(--hairline);border-radius:14px;
  padding:24px 26px;margin-bottom:28px;max-width:620px;scroll-margin-top:90px;
}
.gp-line{font-family:'Sora',sans-serif;font-weight:600;font-size:1.02rem;}
.gp-accent{color:var(--ambre);}
.gp-hero-dual{margin:8px 0 4px;}
.gp-amount-xl{
  font-family:'Sora',sans-serif;font-weight:700;
  font-size:clamp(2.6rem,8vw,3.8rem);color:var(--ambre);line-height:1.05;
}
.gp-dual-label{font-size:1rem;margin-top:2px;}
.gp-dual-label strong{font-family:'Sora',sans-serif;color:var(--encre);}
.gp-solo-line{font-size:.95rem;margin-top:12px;padding-top:12px;border-top:.5px solid var(--hairline);}
.gp-solo-line strong{font-family:'Sora',sans-serif;color:var(--majorelle);}
.gp-max{font-size:.9rem;margin-top:8px;opacity:.85;}
.gp-switch{
  margin-top:14px;padding-top:14px;border-top:.5px solid var(--hairline);
  font-size:.68rem;opacity:.95;display:flex;flex-wrap:wrap;gap:8px;align-items:center;
}
.gp-pill{
  display:inline-block;text-decoration:none;
  font-family:'IBM Plex Mono',monospace;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;
  background:transparent;border:.5px solid var(--hairline);border-radius:20px;
  padding:4px 12px;cursor:pointer;color:var(--encre);
  transition:background .15s,border-color .15s,color .15s;
}
.gp-pill:hover{border-color:var(--majorelle);color:var(--majorelle);}
.gp-pill.on{background:var(--majorelle);border-color:var(--majorelle);color:var(--blanc);}

/* --- Bandeau bilingue --------------------------------------------------- */
.bi-strip{background:var(--ambre);color:var(--encre);}
.bi-inner{
  display:flex;justify-content:space-between;align-items:center;gap:14px;
  padding-top:13px;padding-bottom:13px;flex-wrap:wrap;
}
.bi-fr,.bi-ar{font-size:.95rem;}
.bi-ar{font-family:'IBM Plex Sans','Segoe UI',Tahoma,sans-serif;font-size:1.05rem;}
.bi-fr strong{font-family:'Sora',sans-serif;font-weight:700;}
.bi-ar strong{font-weight:700;}
@media (max-width:700px){ .bi-inner{justify-content:center;text-align:center;} }

/* --- Rémunération par pays ---------------------------------------------- */
.remu{background:var(--encre);color:var(--sable);}
.remu .section-title{color:var(--blanc);}
.remu .eyebrow{color:var(--ambre);}
.pays-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.pays{
  display:block;text-decoration:none;color:inherit;cursor:pointer;
  background:rgba(246,243,236,.05);border:.5px solid var(--hairline-light);
  border-radius:14px;padding:24px 20px;
  transition:border-color .2s,background .2s,transform .15s;
}
.pays:hover{border-color:var(--ambre);background:rgba(246,243,236,.1);}
.pays:active{transform:scale(.99);}
.pays.on{border-color:var(--ambre);background:rgba(232,160,19,.08);}
@media (prefers-reduced-motion: reduce){ .pays{transition:none;} .pays:active{transform:none;} }
/* Drapeau : le liseré clair détache les zones blanches (Tunisie) du fond
   sombre de la section, et le rayon suit celui des cartes. */
.pays .flag{
  display:block;width:30px;height:22px;
  border-radius:3px;
  box-shadow:0 0 0 .5px var(--hairline-light);
  object-fit:cover;
}
.pays h3{color:var(--blanc);font-size:1.05rem;margin:8px 0 14px;}
.pays .amount{font-family:'Sora',sans-serif;font-weight:700;font-size:2rem;color:var(--ambre);line-height:1.1;}
.pays .per{font-size:.85rem;opacity:.8;margin-bottom:12px;}
.pays .max{font-size:.92rem;padding-top:12px;border-top:.5px solid var(--hairline-light);}
.pays .max strong{color:var(--menthe);}
.remu-note{font-size:.82rem;opacity:.65;margin-top:22px;max-width:70ch;}

/* --- Projecteur de gains ------------------------------------------------ */
.projector{
  margin-top:34px;background:rgba(246,243,236,.05);
  border:.5px solid var(--hairline-light);border-radius:14px;padding:26px;max-width:720px;
}
.projector h3{color:var(--blanc);font-size:1.05rem;margin-bottom:18px;}
.pj-control{margin-bottom:20px;}
.pj-control .row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:4px;}
.pj-control .row .mono{opacity:.7;font-size:.7rem;}
.pj-control .val{font-family:'Sora',sans-serif;font-weight:700;font-size:1.1rem;color:var(--blanc);}
.projector input[type=range]{width:100%;accent-color:var(--ambre);}
.pj-out{
  text-align:center;padding:20px;background:rgba(23,27,51,.5);
  border:.5px solid var(--hairline-light);border-radius:10px;
}
.pj-out .mono{opacity:.65;font-size:.68rem;}
.pj-out .total{
  font-family:'Sora',sans-serif;font-weight:700;
  font-size:clamp(1.9rem,5vw,2.6rem);color:var(--ambre);display:block;margin:4px 0 2px;
}
.pj-out .detail{font-size:.84rem;opacity:.8;}
.pj-out .tier{font-size:.84rem;margin-top:8px;}
.pj-out .tier strong{color:var(--menthe);}
/* Sans JavaScript, le projecteur ne peut rien calculer : on le masque. */
.no-js .projector{display:none;}

/* --- Étapes ------------------------------------------------------------- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.step{background:var(--blanc);border:.5px solid var(--hairline);border-radius:var(--radius);padding:24px;}
.step-no{color:var(--majorelle);display:block;margin-bottom:10px;font-size:.7rem;letter-spacing:.1em;}
.step h3{font-size:.98rem;margin-bottom:6px;}
.step p{font-size:.92rem;}

/* --- Avantages ---------------------------------------------------------- */
.adv{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:26px;}
.adv .item{
  background:var(--blanc);border:.5px solid var(--hairline);border-radius:var(--radius);
  padding:18px 20px;display:flex;gap:14px;align-items:flex-start;
}
.adv .dot{width:11px;height:11px;border-radius:50%;border:3px solid var(--menthe);flex-shrink:0;margin-top:6px;}
.adv p{font-size:.95rem;}
.adv p strong{font-family:'Sora',sans-serif;font-weight:600;display:block;font-size:.95rem;}

/* --- Formulaire --------------------------------------------------------- */
.apply{background:var(--majorelle);color:var(--blanc);}
.apply .section-title{color:var(--blanc);}
.apply .eyebrow{color:var(--ambre);}
.apply .section-sub{opacity:.92;}
.apply a{color:inherit;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:680px;}
.field{display:flex;flex-direction:column;gap:6px;}
.field.full{grid-column:1/-1;}
label{font-size:.84rem;font-weight:500;}
input,select{
  font-family:'IBM Plex Sans',sans-serif;font-size:1rem;color:var(--encre);
  background:var(--blanc);border:none;border-radius:8px;padding:13px 14px;width:100%;
}
input:focus,select:focus{outline:3px solid var(--ambre);}

/* Retour visuel immédiat de la casse pendant la frappe. La valeur réelle est
   normalisée à la sortie du champ, puis par le serveur. */
#prenom{text-transform:capitalize;}
#nom{text-transform:uppercase;}
input[aria-invalid="true"],select[aria-invalid="true"]{box-shadow:0 0 0 2px var(--rouge);}
.field-err{font-size:.8rem;font-weight:500;background:rgba(192,57,43,.9);border-radius:6px;padding:4px 8px;display:inline-block;}

/* --- Pays de résidence : drapeau accolé à gauche du champ ------------------
   Même principe que le champ téléphone : le conteneur porte l'apparence du
   champ, le select perd la sienne, et la zone de droite est légèrement teintée
   pour signaler qu'elle n'est pas saisissable. */
.select-flag{
  display:flex;align-items:stretch;
  background:var(--blanc);border-radius:8px;overflow:hidden;
}
.select-flag:focus-within{outline:3px solid var(--ambre);}
.select-flag select{border-radius:0;flex:1 1 auto;min-width:0;}
.select-flag select:focus{outline:none;}
.select-flag[data-err]{box-shadow:0 0 0 2px var(--rouge);}
.flag-slot{
  display:flex;align-items:center;justify-content:center;
  flex:0 0 auto;width:54px;
  border-right:1px solid var(--hairline);
  background:rgba(23,27,51,.05);
}
/* Sur fond clair, le liseré du drapeau doit être sombre. */
.flag-slot .flag{
  display:block;width:30px;height:22px;
  border-radius:3px;box-shadow:0 0 0 .5px var(--hairline);
  object-fit:cover;
}
/* Sans cette règle, le « display:block » ci-dessus l'emporte sur le
   [hidden]{display:none} du navigateur et « Autre » afficherait une image
   cassée à la place de rien. */
.flag-slot .flag[hidden]{display:none;}

/* --- Téléphone : indicatif et numéro dans un seul bloc --------------------
   Les deux contrôles perdent leur bordure et sont réunis dans un conteneur
   qui porte l'apparence du champ, y compris le focus. */
.tel-group{
  display:flex;align-items:stretch;
  background:var(--blanc);border-radius:8px;overflow:hidden;
}
.tel-group:focus-within{outline:3px solid var(--ambre);}
.tel-group.has-err{box-shadow:0 0 0 2px var(--rouge);}
.tel-code{
  width:auto;flex:0 0 auto;border-radius:0;cursor:pointer;
  padding-right:8px;
  border-right:1px solid var(--hairline);
  /* Monospace : les indicatifs se placent tous à la même colonne dans la
     liste déroulante, quelle que soit leur longueur (+1, +33, +351). */
  font-family:'IBM Plex Mono',monospace;
  font-size:.95rem;
  letter-spacing:.02em;
}
/* Le contour global du groupe suffit : pas de double liseré à l'intérieur. */
.tel-code:focus,.tel-number:focus{outline:none;}
.tel-number{border-radius:0;flex:1 1 auto;min-width:0;}
.tel-number[aria-invalid="true"],.tel-code[aria-invalid="true"]{box-shadow:none;}
/* Le champ reste une colonne (comme les autres) : la case et son texte sont
   groupés dans une rangée, et le message d'erreur s'étend dessous. */
.consent{font-size:.8rem;opacity:.92;}
.consent-row{display:flex;gap:11px;align-items:flex-start;}
.consent label{font-size:.8rem;font-weight:400;line-height:1.5;}

/* --- Case à cocher ---------------------------------------------------------
   La case native ignore border-radius et garde sa taille système. On la
   redessine pour retrouver le rayon et les couleurs de la charte : fond blanc
   comme les autres champs, coche ambre à la sélection.
   La marque est une image SVG en data URI plutôt qu'un ::before — les
   pseudo-éléments sur input restent inégalement pris en charge. */
.apply input[type="checkbox"]{
  appearance:none;-webkit-appearance:none;
  flex:0 0 auto;width:20px;height:20px;
  margin:1px 0 0;padding:0;
  background-color:var(--blanc);
  border:1.5px solid rgba(23,27,51,.25);
  border-radius:6px;
  cursor:pointer;
  transition:background-color .15s,border-color .15s;
  background-repeat:no-repeat;background-position:center;background-size:13px 13px;
}
.apply input[type="checkbox"]:hover{border-color:var(--ambre);}
.apply input[type="checkbox"]:checked{
  background-color:var(--ambre);
  border-color:var(--ambre);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23171B33' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E");
}
.apply input[type="checkbox"]:focus-visible{outline:3px solid var(--ambre);outline-offset:2px;}
.apply input[type="checkbox"][aria-invalid="true"]{
  border-color:var(--rouge);
  box-shadow:0 0 0 2px rgba(192,57,43,.5);
}
@media (prefers-reduced-motion: reduce){ .apply input[type="checkbox"]{transition:none;} }

/* Piège à robots : invisible pour l'humain, présent pour le script. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}

.submit{
  background:var(--encre);color:var(--blanc);font-weight:600;font-size:1.02rem;
  padding:15px 30px;border-radius:var(--radius);border:none;cursor:pointer;
  font-family:'IBM Plex Sans',sans-serif;transition:background .15s;
}
.submit:hover{background:#0d1024;}
.submit:disabled{opacity:.6;cursor:default;}
.form-msg{display:none;margin-top:16px;padding:14px 18px;border-radius:var(--radius);font-size:.95rem;}
.form-msg.is-visible{display:block;}
.form-msg.ok{background:rgba(46,143,110,.25);border:.5px solid var(--menthe);}
.form-msg.err{background:rgba(192,57,43,.3);border:.5px solid var(--rouge);}
.trust{
  font-family:'IBM Plex Mono',monospace;font-size:.72rem;letter-spacing:.12em;
  text-transform:uppercase;margin-top:22px;opacity:.85;
}

/* Rappel du contact WhatsApp au pied du formulaire, séparé par un filet. */
.apply-wa{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  max-width:680px;margin-top:24px;padding-top:22px;
  border-top:.5px solid rgba(246,243,236,.25);
  font-size:.95rem;
}
@media (max-width:520px){
  .apply-wa{gap:12px;}
  .apply-wa .btn{width:100%;text-align:center;}
}

/* --- FAQ / accordéons --------------------------------------------------- */
.faq-list{margin-top:18px;}
.faq details{border-bottom:.5px solid var(--hairline);}
.faq summary{
  cursor:pointer;padding:16px 0;font-weight:600;font-family:'Sora',sans-serif;
  font-size:.98rem;list-style:none;display:flex;justify-content:space-between;gap:14px;align-items:center;
}
.faq summary::-webkit-details-marker{display:none;}
.faq summary:hover{color:var(--majorelle);}
/* Le marqueur pivote au lieu de changer de glyphe : « content » ne se
   transitionne pas, un + tourné d'un huitième de tour se lit comme une croix
   et accompagne le mouvement du panneau. */
.faq summary::after{
  content:"+";font-size:1.25rem;color:var(--majorelle);flex-shrink:0;
  line-height:1;transition:transform .22s cubic-bezier(.4,0,.2,1);
}
.faq details[open] summary::after{transform:rotate(45deg);}
@media (prefers-reduced-motion: reduce){
  .faq summary::after{transition:none;}
}
.faq details p{padding:0 0 16px;max-width:62ch;font-size:.96rem;}
.legal-more{margin-top:22px;font-size:.9rem;}
.legal-more a{color:var(--majorelle);}

/* --- Clôture ------------------------------------------------------------ */
.closing{background:var(--encre);color:var(--sable);text-align:center;}
.closing h2{color:var(--blanc);font-size:clamp(1.4rem,3.4vw,2rem);margin-bottom:8px;}
.closing p{opacity:.8;margin-bottom:22px;}

/* --- Pied de page ------------------------------------------------------- */
footer.site{border-top:.5px solid var(--hairline);padding:30px 0;font-size:.8rem;opacity:.75;}
footer.site .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;}
footer.site a{text-decoration:none;}
footer.site a:hover{color:var(--majorelle);}

/* --- CTA flottant mobile ------------------------------------------------ */
.float-cta{
  position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--encre);
  padding:10px 16px calc(10px + env(safe-area-inset-bottom));display:none;justify-content:center;
}
.float-cta a{
  display:block;width:100%;max-width:480px;text-align:center;
  background:var(--majorelle);color:var(--blanc);text-decoration:none;
  font-weight:600;padding:13px 0;border-radius:10px;font-size:1rem;
}
@media (max-width:820px){ .float-cta.show{display:flex;} }

/* --- Apparition douce au défilement ------------------------------------- */
@media (prefers-reduced-motion: no-preference){
  .reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease;}
  .reveal.in{opacity:1;transform:none;}
}

/* --- Adaptatif ---------------------------------------------------------- */
@media (max-width:820px){
  .pays-grid{grid-template-columns:1fr 1fr;}
  .steps{grid-template-columns:1fr;}
  .adv{grid-template-columns:1fr;}
  .form-grid{grid-template-columns:1fr;}
  .tz .time{font-size:.85rem;}
}
@media (max-width:520px){ .pays-grid{grid-template-columns:1fr;} }

/* ===========================================================================
   Page légale — styles réservés à <body class="page-legal">
   =========================================================================== */
.page-legal{line-height:1.65;}
.page-legal a{color:var(--majorelle);}
.page-legal main{padding:56px 0 80px;}
.page-legal .kicker{color:var(--majorelle);display:block;margin-bottom:10px;}
.page-legal h1{font-size:clamp(1.7rem,4vw,2.3rem);margin-bottom:8px;}
.page-legal .updated{font-size:.85rem;opacity:.65;margin-bottom:40px;}
.page-legal article{
  background:var(--blanc);border:.5px solid var(--hairline);border-radius:14px;
  padding:34px 34px 10px;
}
.page-legal article h2{
  font-family:'Sora',sans-serif;font-size:1.1rem;font-weight:700;
  margin:26px 0 10px;padding-top:24px;border-top:.5px solid var(--hairline);
}
.page-legal article h2:first-of-type{margin-top:0;padding-top:0;border-top:none;}
.page-legal article p{margin-bottom:16px;max-width:66ch;}
.page-legal article ul{margin:0 0 16px 20px;}
.page-legal article li{margin-bottom:6px;}
.page-legal .todo{background:rgba(232,160,19,.14);border-radius:4px;padding:0 4px;font-weight:500;}
@media (max-width:560px){ .page-legal article{padding:24px 20px 6px;} }

/* --- Page d'erreur ------------------------------------------------------ */
.error-page{padding:80px 0 100px;text-align:center;}
.error-page h1{font-size:clamp(1.7rem,4vw,2.3rem);margin-bottom:12px;}
.error-page p{margin-bottom:22px;}

/* --- Indicatif imposé par le pays -----------------------------------------
   Maroc, Tunisie et Sénégal n'ont qu'un indicatif possible : le select est
   remplacé par une valeur fixe, sur fond légèrement teinté pour signaler
   qu'il n'y a rien à choisir. Un champ caché porte la valeur à l'envoi. */
.tel-code-slot{display:flex;flex:0 0 auto;}
.tel-code--fixed{
  display:flex;align-items:center;
  padding:13px 8px 13px 14px;
  border-right:1px solid var(--hairline);
  background:rgba(23,27,51,.05);
  color:var(--encre);
  font-family:'IBM Plex Mono',monospace;font-size:.95rem;letter-spacing:.02em;
  white-space:nowrap;cursor:default;
}
