/* ============================================================
   Dermomask Paris — Design system (reconstruction indépendante)
   Typographie reprise de l'ancien site : Heebo, en sans-serif intégral.
   palette noir / blanc / gris. Polices auto-hébergées : aucune requête
   vers un CDN tiers (RGPD + perf + CSP).
   ============================================================ */

/* Palette demandée par Loïc (28/07/2026) : noir, blanc, gris très légers.
   Aucun jaune, doré, beige ni crème.
   Les anciennes variables d'accent (gold) et de fond (cream) sont CONSERVÉES
   comme alias neutres : elles sont référencées à des dizaines d'endroits
   (CSS + styles inline), les renommer casserait silencieusement des règles.
   Elles ne portent plus que du noir, du blanc ou du gris. */
:root{
  --ink:#0f0f0f;          /* noir */
  --ink-soft:#333333;
  --muted:#6b6b6b;
  --bg:#ffffff;
  --cream:#ffffff;        /* ex-crème -> blanc */
  --cream-2:#fafafa;      /* gris très léger, séparation discrète */
  --line:#e5e5e5;         /* filet gris clair */
  --gold:#0f0f0f;         /* ex-accent doré -> noir */
  --gold-dark:#000000;
  --gold-text:#0f0f0f;    /* accent lisible sur clair */
  --star:#0f0f0f;
  --ok:#2f7d54;
  --err:#b23b3b;
  --shadow:0 18px 50px -22px rgba(20,18,16,.35);
  --shadow-sm:0 8px 24px -14px rgba(20,18,16,.3);
  --radius:14px;
  --radius-lg:24px;
  --maxw:1180px;

  /* ---------- Typographie ----------
     Reprise du système de l'ancien site, relevé dans son export Elementor :
     Heebo 600 pour les titres, Heebo 400 pour le corps. Aucun serif : c'est le
     choix de Loïc. Playfair Display est abandonnée — elle n'a jamais fait partie
     de l'ancien site, et n'étant pas fournie elle se repliait chez la plupart
     des visiteurs sur Didot/Times — d'où le rendu « magazine » constaté.
     Polices auto-hébergées : la CSP interdit fonts.gstatic.com, et l'absence
     de dépendance externe est un choix RGPD assumé. */
  --font-body:"Heebo",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --font-ui:var(--font-body);
  /* Alias conservés : ils sont référencés ailleurs dans la feuille, les
     supprimer casserait des règles en silence. */
  --sans:var(--font-body);
  --serif:var(--font-body);

  --fs-h1:clamp(2rem,4.4vw,3.1rem);
  --fs-h2:clamp(1.5rem,3vw,2.1rem);
  --fs-h3:clamp(1.12rem,1.7vw,1.35rem);
  --fs-lead:clamp(1rem,1.15vw,1.1rem);
  --lh-title:1.18;
  --lh-body:1.7;
  --ls-title:-.015em;
  --ls-label:.12em;
}

/* ---------- Polices auto-hébergées (sous-ensemble latin) ---------- */
@font-face{font-family:"Heebo";font-style:normal;font-weight:400;font-display:swap;
  src:url("/assets/fonts/heebo-400.woff2") format("woff2")}
@font-face{font-family:"Heebo";font-style:normal;font-weight:500;font-display:swap;
  src:url("/assets/fonts/heebo-500.woff2") format("woff2")}
@font-face{font-family:"Heebo";font-style:normal;font-weight:600;font-display:swap;
  src:url("/assets/fonts/heebo-600.woff2") format("woff2")}
@font-face{font-family:"Heebo";font-style:normal;font-weight:700;font-display:swap;
  src:url("/assets/fonts/heebo-700.woff2") format("woff2")}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;font-family:var(--font-body);color:var(--ink);background:var(--bg);
  font-size:17px;line-height:var(--lh-body);font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
/* Tous les titres en sans-serif, comme l'ancien site. Aucun serif nulle part. */
h1,h2,h3,h4{font-family:var(--font-body);font-weight:600;line-height:var(--lh-title);
  letter-spacing:var(--ls-title);margin:0 0 .5em}
h1{font-size:var(--fs-h1)}
h2{font-size:var(--fs-h2)}
h3{font-size:var(--fs-h3)}
p{margin:0 0 1rem}
.eyebrow{font-family:var(--font-ui);font-weight:600;letter-spacing:var(--ls-label);
  text-transform:uppercase;font-size:.74rem;color:var(--gold-text)}
.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:clamp(18px,4vw,40px)}
section{padding-block:clamp(52px,8vw,104px)}
/* Les sections "crème" sont désormais blanches : sans filet, elles se
   confondraient avec les sections voisines et la page perdrait son rythme. */
.bg-cream{background:var(--cream);border-block:1px solid var(--line)}
.bg-ink{background:var(--ink);color:#f2f2f2}
.bg-ink h1,.bg-ink h2,.bg-ink h3{color:#fff}
.center{text-align:center}
.lead{font-size:var(--fs-lead);line-height:1.62;color:var(--ink-soft);max-width:62ch}
.muted{color:var(--muted)}
.mw-60{max-width:60ch}.mw-46{max-width:46ch}
.mt-0{margin-top:0}.mb-0{margin-bottom:0}

/* ---------- Boutons ---------- */
.btn{display:inline-flex;align-items:center;gap:.55em;font-family:var(--font-ui);font-weight:600;letter-spacing:.04em;
  font-size:.98rem;line-height:1;padding:1.05em 1.9em;border-radius:999px;border:1.5px solid transparent;
  cursor:pointer;transition:transform .18s ease,background .18s ease,color .18s ease,box-shadow .18s;
  text-align:center;white-space:nowrap}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--ink);color:#fff}
.btn-primary:hover{background:#000;box-shadow:var(--shadow-sm)}
.btn-gold{background:var(--gold);color:#fff}
.btn-gold:hover{background:var(--gold-dark)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:#fff}
.btn-light{background:#fff;color:var(--ink)}
.btn-light:hover{background:var(--cream)}
.btn-block{display:flex;width:100%;justify-content:center}

/* ---------- Header ---------- */
.site-header{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.92);
  backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.site-header .container{display:flex;align-items:center;justify-content:space-between;gap:20px;
  min-height:72px}
/* Sans min-width:0, ces deux éléments flex gardent leur taille minimale automatique
   (celle de leur contenu, boutons en white-space:nowrap compris) : ils refusent de se
   comprimer et poussent la page au-delà du viewport sur petits écrans. */
.site-header .brand,.header-actions{min-width:0}
.brand{flex:0 1 auto}
.brand img{height:38px;width:auto;max-width:100%}
.header-actions{display:flex;align-items:center;gap:14px;flex:0 1 auto}
.tel-link{font-weight:600;display:inline-flex;align-items:center;gap:.5em;font-size:.98rem}
.tel-link svg{width:18px;height:18px}
@media(max-width:640px){.tel-link{min-width:44px;min-height:44px;justify-content:center}.tel-link .tel-text{display:none}.brand img{height:32px}}
/* Bouton stylé comme un lien (actions non navigantes) */
.linklike{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-decoration:underline}
/* Lien d'évitement */
.skip-link{position:absolute;left:8px;top:-60px;z-index:200;background:var(--ink);color:#fff;
  padding:10px 16px;border-radius:0 0 10px 10px;transition:top .15s}
.skip-link:focus{top:0}
/* Deux parcours dans le header : "Poser une question" (contour) + "Réserver sur
   Doctolib" (noir, principal). Les deux restent visibles sur mobile avec des
   libellés courts ; le téléphone reste accessible en un tap via la CTA collante. */
.header-actions .btn{padding:.85em 1.35em;font-size:.92rem}
.lbl-short{display:none}
@media(max-width:760px){
  .site-header .container{gap:10px;padding-inline:14px}
  .header-actions{gap:6px}
  .header-actions .btn{padding:.62em .82em;font-size:.8rem}
  .header-actions .tel-link{display:none}
  .brand img{height:30px;max-width:110px;object-fit:contain}
  .lbl-full{display:none}
  .lbl-short{display:inline}
}
@media(max-width:430px){
  .site-header .container{gap:8px;padding-inline:12px}
  .header-actions{gap:5px}
  .header-actions .btn{padding:.6em .68em;font-size:.74rem}
  .brand img{max-width:88px}
}
@media(max-width:360px){
  .header-actions .btn{padding:.6em .56em;font-size:.7rem}
  .brand img{max-width:74px}
}

/* ---------- Hero ---------- */
.hero{position:relative;color:#fff;background:#0f0f0f;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background-size:cover;background-position:center;
  opacity:.55;filter:saturate(.9)}
.hero.has-bg::before{background-image:var(--hero-bg)}
/* Variante mobile allégée (LCP) : 17 Ko au lieu de 299 Ko */
@media(max-width:760px){.hero.has-bg::before{background-image:var(--hero-bg-mobile,var(--hero-bg))}}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(0,0,0,.82) 0%,rgba(0,0,0,.55) 45%,rgba(0,0,0,.15) 100%)}
.hero .container{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr .95fr;
  gap:clamp(24px,4vw,56px);align-items:center;padding-block:clamp(56px,9vw,110px)}
.hero h1{color:#fff;margin-bottom:.35em}
.hero .lead{color:#e6e6e6;font-size:1.15rem;max-width:44ch}
.hero .eyebrow{color:#ffffff}
.hero-cta{margin-top:1.6em;display:flex;gap:14px;flex-wrap:wrap}
.hero-proof{margin-top:1.7em;display:flex;gap:22px;flex-wrap:wrap;font-size:.92rem;color:#dcdcdc}
.hero-proof b{font-family:var(--font-body);font-weight:700;font-size:1.45rem;display:block;line-height:1.1;color:#fff}
.beforeafter-card{background:#fff;border-radius:var(--radius);padding:10px;box-shadow:var(--shadow);
  display:grid;grid-template-columns:1fr 1fr;gap:10px}
.beforeafter-card img{border-radius:8px;aspect-ratio:1/1;object-fit:cover;width:100%}
@media(max-width:860px){
  .hero .container{grid-template-columns:1fr}
  .beforeafter-card{max-width:460px;margin-inline:auto}
}

/* ---------- Stats ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;text-align:center}
/* 1fr vaut minmax(auto,1fr) : sans min-width:0 les tuiles ne descendent jamais sous leur
   min-content et la grille déborde du viewport sur petits écrans. */
.stat{padding:26px 14px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;min-width:0}
.stat .num,.stat .lbl{overflow-wrap:break-word}
.stat .num{font-family:var(--font-body);font-weight:700;font-size:clamp(1.8rem,3.4vw,2.5rem);line-height:1.1;
  letter-spacing:-.02em;color:var(--ink)}
.stat .lbl{margin-top:.5em;font-size:.9rem;color:var(--muted);letter-spacing:.01em}
@media(max-width:760px){.stats{grid-template-columns:repeat(2,1fr)}
  /* bat le style inline repeat(3,1fr) du bloc « Résultats observés » */
  .stats[style*="repeat(3"]{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px}
  .stats[style*="repeat(3"] .stat{padding:18px 8px}}

/* ---------- Feature / why ---------- */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(26px,5vw,64px);align-items:center}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media(max-width:860px){.grid-2{grid-template-columns:1fr}.grid-3{grid-template-columns:1fr}}
.checklist{list-style:none;padding:0;margin:1.2em 0 0;display:grid;gap:.85em}
.checklist li{display:flex;gap:.7em;align-items:flex-start;font-weight:500}
.checklist li::before{content:"";flex:0 0 22px;height:22px;margin-top:2px;border-radius:50%;
  background:var(--gold);
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M9 16.2l-3.5-3.5L4 14.2 9 19.2 20 8.2 18.6 6.8z'/></svg>") center/16px no-repeat;
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M9 16.2l-3.5-3.5L4 14.2 9 19.2 20 8.2 18.6 6.8z'/></svg>") center/16px no-repeat}
.round-img{border-radius:var(--radius-lg);box-shadow:var(--shadow);object-fit:cover;width:100%}

.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px 24px}
.card h3{margin-bottom:.35em}
.card .ico{width:46px;height:46px;margin-bottom:14px}
.step-num{font-family:var(--font-body);font-weight:700;font-size:2rem;color:var(--gold);line-height:1}
@media(max-width:860px){.cards{grid-template-columns:1fr}}

/* ---------- Gallery avant/après ----------
   Les visuels sont des composés avant|après : les forcer en carré recadrait
   la moitié "après" sur les formats verticaux. On respecte donc le ratio
   natif de chaque image (width/height sont posés dans le HTML -> pas de CLS). */
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:start}
.gallery img{width:100%;aspect-ratio:1/1;object-fit:contain;border-radius:10px;background:var(--cream-2)}
@media(max-width:760px){.gallery{grid-template-columns:repeat(2,1fr)}}

/* Images supplémentaires : présentes dans le DOM mais SANS src (data-src),
   donc jamais téléchargées tant que l'utilisateur ne les demande pas. */
.gallery .ba-more{display:none}
.gallery.is-open .ba-more{display:block}
.gallery-more{margin-top:22px;text-align:center}
.gallery-more .btn{min-width:min(320px,100%)}
.gallery-count{display:block;margin-top:10px;font-size:.82rem;color:var(--muted)}

/* ---------- Reviews ---------- */
.rating-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:center;margin-bottom:8px}
.stars{color:var(--star);font-size:1.25rem;letter-spacing:2px}
.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:34px}
.review{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px}
.review .stars{font-size:1rem;margin-bottom:10px}
.review p{font-size:.98rem}
.review .who{font-weight:600;margin-top:12px;font-size:.92rem}
.review-note{font-size:.82rem;color:var(--muted);margin-top:18px;text-align:center}
@media(max-width:860px){.reviews{grid-template-columns:1fr}}

/* ---------- Form / RDV ---------- */
.form-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:clamp(24px,4vw,40px);box-shadow:var(--shadow-sm)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:flex;flex-direction:column;gap:6px}
.field.full{grid-column:1/-1}
.field label{font-size:.85rem;font-weight:600;color:var(--ink-soft)}
.field .req{color:var(--gold-text)}
.field input,.field select,.field textarea{font:inherit;font-size:1rem;padding:.8em .9em;
  border:1.5px solid var(--line);border-radius:10px;background:#fafafa;color:var(--ink);width:100%}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}
.form-legend{font-size:.8rem;color:var(--muted);margin:0 0 12px}
.field textarea{min-height:110px;resize:vertical}
.field .error{color:var(--err);font-size:.8rem;min-height:1em}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"]{border-color:var(--err)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.consent-check{display:flex;gap:.6em;align-items:flex-start;font-size:.86rem;color:var(--muted)}
.consent-check input{margin-top:3px;width:18px;height:18px;flex:0 0 auto}
.form-note{font-size:.82rem;color:var(--muted);margin-top:14px}
.form-msg{display:none;margin-top:14px;padding:14px 16px;border-radius:10px;font-size:.95rem}
.form-msg.ok{display:block;background:#eef7f1;color:var(--ok);border:1px solid #cfe7da}
.form-msg.ko{display:block;background:#fbeeee;color:var(--err);border:1px solid #f0d3d3}
@media(max-width:620px){.form-grid{grid-template-columns:1fr}}

/* ---------- Center info ---------- */
.info-list{list-style:none;padding:0;margin:0;display:grid;gap:16px}
.info-list li{display:flex;gap:.8em;align-items:flex-start}
.info-list svg{width:22px;height:22px;flex:0 0 22px;color:var(--gold-dark);margin-top:2px}
.hours{width:100%;border-collapse:collapse;font-size:.96rem}
.hours td{padding:.5em 0;border-bottom:1px solid var(--line)}
.hours td:last-child{text-align:right;color:var(--muted)}
.map-embed{border:0;width:100%;height:340px;border-radius:var(--radius);filter:grayscale(.2)}

/* ---------- Press / logos ---------- */
.press{display:flex;gap:36px;align-items:center;justify-content:center;flex-wrap:wrap;opacity:.8}
.press img{height:34px;width:auto;filter:grayscale(1)}

/* ---------- Footer ---------- */
.site-footer{background:var(--ink);color:#cfcfcf;font-size:.92rem}
.site-footer .container{padding-block:52px}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:32px}
.site-footer a:hover{color:#fff}
.site-footer .brand-f{font-family:var(--font-body);font-weight:600;color:#fff;font-size:1.25rem;
  letter-spacing:.02em;margin-bottom:10px}
.footer-bottom{border-top:1px solid #2a2a2a;margin-top:36px;padding-top:22px;display:flex;
  justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.82rem;color:#9a9a9a}
.footer-bottom a{text-decoration:underline}
@media(max-width:760px){.footer-grid{grid-template-columns:1fr}}

/* ---------- Consent banner ---------- */
.cmp{position:fixed;inset:auto 16px 16px 16px;z-index:100;max-width:520px;margin-inline:auto;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:20px 22px;display:none}
.cmp.show{display:block}
.cmp h4{font-family:var(--sans);font-weight:700;font-size:1rem;margin:0 0 6px}
.cmp p{font-size:.86rem;color:var(--ink-soft);margin:0 0 14px}
.cmp .row{display:flex;gap:10px;flex-wrap:wrap}
.cmp .btn{padding:.7em 1.2em;font-size:.85rem}
.cmp a{text-decoration:underline}

/* ---------- Sticky mobile CTA ---------- */
.mobile-cta{position:fixed;bottom:0;left:0;right:0;z-index:55;display:none;gap:10px;padding:10px 14px;
  background:rgba(255,255,255,.96);border-top:1px solid var(--line);backdrop-filter:blur(8px)}
.mobile-cta .btn{flex:1;padding:.9em 1em}
@media(max-width:760px){.mobile-cta{display:flex}body{padding-bottom:70px}
  /* Bannière cookies : au-dessus de la CTA collante et COMPACTE — elle ne doit pas
     manger le 1er écran mobile (offre + CTA), qui porte l'essentiel de la conversion Ads. */
  .cmp{inset:auto 10px 78px 10px;padding:12px 14px}
  .cmp h4{font-size:.9rem;margin-bottom:3px}
  .cmp p{font-size:.78rem;margin-bottom:9px;line-height:1.45}
  .cmp .btn{padding:.55em .95em;font-size:.8rem}
  .footer-bottom{gap:10px 18px;line-height:2}}

/* ---------- Utilities ---------- */
.section-head{max-width:640px;margin:0 auto clamp(30px,5vw,52px)}
.section-head.center{text-align:center}
.pill{display:inline-block;padding:.3em .9em;border:1px solid var(--line);border-radius:999px;
  font-size:.8rem;color:var(--muted);background:#fff}
/* Bandeau d'offre (prix / durée / déductible) — ancrage de prix visible */
.pills-offre{display:flex;flex-wrap:wrap;gap:8px;margin:1.1em 0 1.3em}
.pills-offre .pill{font-weight:600;color:var(--ink);border-color:var(--gold);background:#ffffff}
.pills-offre .pill:first-child{background:var(--gold);color:#fff;border-color:var(--gold)}

/* ---------- Les deux parcours : #contact et #rendez-vous ----------
   Desktop : côte à côte, « OU » vertical au milieu. Mobile : empilés, « OU »
   horizontal. Les deux parcours restent distincts — on ne mélange jamais
   formulaire et Doctolib dans une même carte. */
.parcours-duo{background:var(--cream-2);border-block:1px solid var(--line)}
.duo{display:grid;grid-template-columns:1.1fr auto .9fr;gap:clamp(18px,2.5vw,34px);
  align-items:start}
.duo .section-head{max-width:none;margin:0 0 clamp(18px,2.5vw,28px)}
/* Le header est sticky : sans scroll-margin-top il recouvre le haut de la cible
   et l'utilisateur atterrit sur un titre tronqué. */
.duo-col{scroll-margin-top:88px}
.rdv-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:clamp(22px,2.6vw,32px);box-shadow:var(--shadow-sm)}
.rdv-card>p:first-child{margin-top:0}
.rdv-card .pills-offre{margin:1.2em 0 1.5em}
.rdv-card .info-list{margin-top:1.6em;padding-top:1.4em;border-top:1px solid var(--line)}
/* Séparateur « OU » — vertical entre les deux colonnes */
.ou-sep{position:relative;align-self:stretch;display:flex;align-items:center;justify-content:center;
  min-width:44px}
.ou-sep::before{content:"";position:absolute;top:0;bottom:0;left:50%;border-left:1px solid var(--line)}
.ou-sep span{position:relative;display:inline-block;padding:.55em 1.05em;background:var(--cream-2);
  border:1px solid var(--line);border-radius:999px;font-family:var(--sans);font-weight:700;
  font-size:.76rem;letter-spacing:.16em;line-height:1;color:var(--muted)}

@media(max-width:1080px){
  /* Empilement : le « OU » redevient un filet horizontal */
  .duo{grid-template-columns:1fr;gap:0}
  .duo-col{max-width:720px;width:100%;margin-inline:auto}
  .ou-sep{align-self:auto;min-width:0;padding-block:clamp(26px,5vw,38px);
    max-width:720px;width:100%;margin-inline:auto}
  .ou-sep::before{top:50%;bottom:auto;left:0;right:0;border-left:0;border-top:1px solid var(--line)}
}
@media(max-width:760px){
  .duo-col{scroll-margin-top:64px}
  /* Après un clic sur « Une question ? », c'est le formulaire qu'on doit voir,
     pas trois écrans de titre. */
  .duo .section-head{margin-bottom:18px}
  .duo .section-head h2{font-size:1.5rem;margin-bottom:.35em}
  .duo .section-head .lead{font-size:.98rem}
}

/* Cartes d'intention (types de cicatrices) */
#types-cicatrices .card{display:flex;flex-direction:column}
#types-cicatrices .card .btn{align-self:flex-start;margin-top:auto}
.divider{height:1px;background:var(--line);border:0;margin:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* ---------- Deux parcours de contact (réservation / question) ----------
   Doctolib n'est plus une alternative en bas de formulaire : c'est un parcours
   de premier niveau. Le formulaire reste le formulaire principal du site et
   la SEULE conversion. Un clic Doctolib n'est jamais une conversion. */
.parcours{border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:clamp(22px,3vw,30px);background:#fff}
.parcours + .parcours{margin-top:18px}
.parcours h3{margin-bottom:.35em}
.parcours .p-txt{color:var(--ink-soft);margin-bottom:1.2em}
.parcours .form-note{margin-top:12px}
/* Parcours A — réservation directe : accent doré, le plus immédiat */
.parcours-a{border-color:var(--gold);background:#ffffff;box-shadow:var(--shadow-sm)}
.parcours-step{display:inline-block;font-family:var(--sans);font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;font-size:.72rem;color:var(--gold-text);
  margin-bottom:.6em}

/* ---------- Préférence de contact (radios) ---------- */
fieldset.field{border:0;margin:0;padding:0;min-width:0}
fieldset.field legend{font-size:.85rem;font-weight:600;color:var(--ink-soft);padding:0;margin-bottom:8px}
.radio-row{display:flex;gap:10px;flex-wrap:wrap}
.radio-opt{display:inline-flex;align-items:center;gap:.5em;border:1.5px solid var(--line);
  border-radius:999px;padding:.6em 1.05em;background:#fafafa;cursor:pointer;
  font-size:.92rem;font-weight:500;transition:border-color .15s,background .15s}
.radio-opt input{width:18px;height:18px;margin:0;flex:0 0 auto;accent-color:var(--ink)}
.radio-opt.is-checked{border-color:var(--ink);background:#fff;box-shadow:var(--shadow-sm)}
.radio-opt:focus-within{outline:2px solid var(--gold);outline-offset:2px}
fieldset.field[data-invalid="true"] .radio-opt{border-color:var(--err)}
/* Le suffixe « * / (facultatif) » des labels téléphone / e-mail bascule en JS */
.req-dyn{color:var(--gold-text)}
.opt-dyn{color:var(--muted);font-weight:400}

/* Lien d'itinéraire du parking : souligné pour être identifiable comme lien
   dans une liste où tout le reste est du texte. */
.lien-itineraire{display:inline-block;margin-top:.25em;font-weight:600;font-size:.92rem;
  text-decoration:underline;text-underline-offset:3px}
.lien-itineraire:hover{color:var(--gold-dark)}

/* Densité de lecture sur mobile : le paragraphe du hero occupait 5 lignes et
   repoussait les CTA sous la ligne de flottaison. */
@media(max-width:760px){
  .hero .lead{font-size:1.02rem;line-height:1.55}
  .hero-proof{gap:14px 20px;margin-top:1.4em}
  .hero-proof b{font-size:1.3rem}
}
