/* =========================================================
   Samy Ségal, thérapeute
   Feuille de style unique, sans dépendance.
   Palette reprise de la carte de visite.
   ========================================================= */

:root{
  --cream:      #F7F3EA;
  --cream-2:    #F1EBDE;
  --cream-3:    #E9E2D2;
  --ink:        #1F2A2E;
  --ink-soft:   #4A585E;
  --slate:      #2C4A5E;
  --slate-dark: #21394A;
  --sage:       #8FA07F;
  --sage-deep:  #6E7F60;
  --sage-soft:  #C5CFBB;
  --sage-soft-2:#DCE3D4;
  --clay:       #E8D9CC;
  --line:       #D9D1C0;

  --serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;
  --sans:  "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  --wrap: 1120px;
  --radius: 14px;
  --shadow: 0 1px 2px rgba(31,42,46,.04), 0 8px 28px rgba(31,42,46,.06);
  --shadow-lg: 0 2px 6px rgba(31,42,46,.05), 0 18px 50px rgba(31,42,46,.10);
}

*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; scroll-padding-top:88px; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--sans);
  font-size:17px;
  font-weight:300;
  line-height:1.68;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{ max-width:100%; display:block; }

a{ color:var(--slate); text-decoration:none; }
a:hover{ text-decoration:underline; text-underline-offset:3px; }

:focus-visible{ outline:2px solid var(--slate); outline-offset:3px; border-radius:3px; }

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:999;
  background:var(--slate); color:#fff; padding:12px 18px; border-radius:0 0 8px 0;
}
.skip-link:focus{ left:0; }

.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:24px; }
.wrap-narrow{ max-width:800px; }

/* ---------- Typographie ---------- */
h1,h2,h3{ font-family:var(--serif); font-weight:500; color:var(--ink); margin:0 0 .5em; line-height:1.15; letter-spacing:-.01em; }
h1{ font-size:clamp(2.3rem, 5.4vw, 4rem); }
h1 em{ font-style:italic; color:var(--slate); }
h2{ font-size:clamp(1.9rem, 3.6vw, 2.85rem); }
h3{ font-size:1.3rem; }
p{ margin:0 0 1.1em; }

.eyebrow, .section-eyebrow{
  font-family:var(--sans); font-size:.78rem; font-weight:500;
  letter-spacing:.19em; text-transform:uppercase; color:var(--sage-deep);
  margin:0 0 1.1em;
}
/* Texte courant justifié avec césure automatique, selon l'usage typographique
   français. Réservé aux colonnes assez larges : sur les cartes étroites, la
   justification creuserait des lézardes blanches entre les mots. */
.lead,
.section-intro,
.about-text > p,
.approach dd,
.faq details p,
.urgence p,
.fineprint,
.legal p,
.legal li{
  text-align:justify;
  text-justify:inter-word;
  -webkit-hyphens:auto;
  hyphens:auto;
}

/* La justification est un usage français. En anglais, la composition
   courante se fait au fer à gauche : la version /en/ reste en drapeau. */
:lang(en) .lead,
:lang(en) .section-intro,
:lang(en) .about-text > p,
:lang(en) .approach dd,
:lang(en) .faq details p,
:lang(en) .urgence p,
:lang(en) .fineprint{
  text-align:left;
  -webkit-hyphens:none;
  hyphens:none;
}

/* Sous 640 px la colonne devient trop étroite pour une justification propre. */
@media (max-width:640px){
  .lead,
  .section-intro,
  .about-text > p,
  .approach dd,
  .faq details p,
  .urgence p,
  .fineprint,
  .legal p,
  .legal li{
    text-align:left;
    -webkit-hyphens:none;
    hyphens:none;
  }
}

.lead{ font-size:1.16rem; color:var(--ink-soft); max-width:56ch; }
.section-intro{ font-size:1.06rem; color:var(--ink-soft); max-width:62ch; margin-bottom:3rem; }
.muted{ color:var(--ink-soft); font-size:.94em; }
.fineprint{ font-size:.9rem; color:var(--ink-soft); line-height:1.6; }

/* ---------- Boutons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  font-family:var(--sans); font-size:.95rem; font-weight:500; letter-spacing:.01em;
  padding:15px 30px; border-radius:100px; border:1px solid transparent;
  cursor:pointer; transition:transform .18s ease, background .18s ease, color .18s ease, box-shadow .18s ease;
  text-decoration:none !important; white-space:nowrap;
}
.btn-primary{ background:var(--slate); color:var(--cream); box-shadow:0 6px 18px rgba(44,74,94,.18); }
.btn-primary:hover{ background:var(--slate-dark); transform:translateY(-2px); box-shadow:0 10px 24px rgba(44,74,94,.24); }
.btn-ghost{ border-color:var(--line); color:var(--ink); background:transparent; }
.btn-ghost:hover{ border-color:var(--sage-deep); color:var(--sage-deep); transform:translateY(-2px); }
.btn-sm{ padding:10px 20px; font-size:.88rem; }
.btn-block{ display:flex; width:100%; }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(247,243,234,.82);
  backdrop-filter:saturate(180%) blur(12px);
  -webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid transparent;
  transition:border-color .3s ease, box-shadow .3s ease;
}
.site-header.is-scrolled{ border-bottom-color:var(--line); box-shadow:0 4px 20px rgba(31,42,46,.04); }
.header-inner{ display:flex; align-items:center; justify-content:space-between; gap:24px; min-height:74px; }

.brand{ display:flex; flex-direction:column; line-height:1.1; }
.brand:hover{ text-decoration:none; }
.brand-name{ font-family:var(--serif); font-size:1.45rem; color:var(--ink); letter-spacing:.01em; }
.brand-role{ font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--sage-deep); }

.nav ul{ display:flex; align-items:center; gap:28px; list-style:none; margin:0; padding:0; }
.nav a{ font-size:.93rem; color:var(--ink-soft); }
.nav a:hover{ color:var(--slate); text-decoration:none; }
.nav .btn{ color:var(--cream); }

/* Sélecteur de langue : discret, mais identifiable au premier coup d'œil. */
.nav-lang a{
  display:inline-block; padding:5px 11px; border:1px solid var(--line); border-radius:100px;
  font-size:.78rem; font-weight:500; letter-spacing:.09em; color:var(--sage-deep);
  transition:border-color .2s ease, color .2s ease;
}
.nav-lang a:hover{ border-color:var(--sage-deep); color:var(--slate); text-decoration:none; }
@media (max-width:940px){
  .nav-lang a{ padding:5px 14px; margin:10px 0; }
}

.nav-toggle{
  display:none; flex-direction:column; justify-content:center; gap:5px;
  width:44px; height:44px; padding:0 10px; background:none; border:0; cursor:pointer;
}
.nav-toggle span{ display:block; height:1.5px; background:var(--ink); border-radius:2px; transition:transform .25s ease, opacity .2s ease; }
.nav-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

@media (max-width:940px){
  .nav-toggle{ display:flex; }
  .nav{
    position:fixed; inset:74px 0 auto 0;
    background:var(--cream); border-bottom:1px solid var(--line);
    max-height:0; overflow:hidden; transition:max-height .32s ease;
  }
  .nav.is-open{ max-height:78vh; overflow-y:auto; box-shadow:var(--shadow-lg); }
  .nav ul{ flex-direction:column; align-items:stretch; gap:0; padding:8px 24px 28px; }
  .nav li{ border-bottom:1px solid var(--cream-3); }
  .nav li:last-child{ border:0; padding-top:20px; }
  .nav a{ display:block; padding:15px 0; font-size:1.02rem; }
  .nav .btn{ justify-content:center; padding:15px 24px; }
}

/* ---------- Hero ---------- */
.hero{ position:relative; padding:clamp(72px,11vw,140px) 0 clamp(72px,10vw,128px); overflow:hidden; }
.hero-decor{ position:absolute; top:-40px; right:-90px; width:min(46vw,520px); opacity:.9; pointer-events:none; }
.hero-decor svg{ width:100%; height:auto; }
.hero-inner{ position:relative; z-index:1; max-width:min(100%, 760px); }
.hero-cta{ display:flex; flex-wrap:wrap; gap:14px; margin:2.4rem 0 3.4rem; }

.hero-quote{ margin:0; padding-left:26px; border-left:2px solid var(--sage-soft); max-width:44ch; position:relative; }
.quote-mark{ font-family:var(--serif); font-size:3rem; line-height:0; color:var(--sage); position:absolute; left:22px; top:14px; opacity:.5; }
.hero-quote blockquote{ margin:0; font-family:var(--serif); font-style:italic; font-size:1.28rem; color:var(--ink); }
.hero-quote blockquote::before{ content:"« "; }
.hero-quote blockquote::after{ content:" »"; }
/* Guillemets anglais sur la version anglaise du site. */
:lang(en) .hero-quote blockquote::before{ content:"\201C"; }
:lang(en) .hero-quote blockquote::after{ content:"\201D"; }
.hero-quote figcaption{ margin-top:.4em; font-size:.88rem; color:var(--slate); letter-spacing:.04em; }

@media (max-width:860px){
  .hero-decor{ width:66vw; right:-24vw; top:auto; bottom:-30px; opacity:.4; }
}

/* ---------- En-tête des pages intérieures ---------- */
.page-hero{ position:relative; padding:clamp(48px,7vw,84px) 0 clamp(40px,5vw,64px); overflow:hidden; }
.page-hero-decor{ position:absolute; top:-70px; right:-110px; width:min(38vw,400px); pointer-events:none; }
.page-hero-decor svg{ width:100%; height:auto; }
.page-hero-inner{ position:relative; z-index:1; max-width:min(100%,760px); }
.page-hero h1{ font-size:clamp(2rem,4.4vw,3.2rem); margin-bottom:.35em; }
.page-hero .lead{ margin-bottom:0; }
.page-hero .hero-cta{ margin:2rem 0 0; }

.breadcrumb{ font-size:.86rem; color:var(--ink-soft); margin-bottom:1.4rem; }
.breadcrumb a{ color:var(--sage-deep); }
.breadcrumb span[aria-hidden]{ margin:0 .45em; color:var(--line); }

/* ---------- Paroles rapportées ---------- */
.quotes-title{
  font-family:var(--sans); font-size:.8rem; font-weight:500;
  letter-spacing:.17em; text-transform:uppercase; color:var(--sage-deep);
  margin:2.2rem 0 1rem;
}
.quotes-title:first-of-type{ margin-top:0; }
.quotes{ list-style:none; margin:0 0 2.2rem; padding:0; display:grid; gap:14px; }
.quotes li{
  position:relative; padding:16px 22px 16px 26px;
  background:#FCFAF5; border:1px solid var(--line); border-left:3px solid var(--sage-soft);
  border-radius:0 var(--radius) var(--radius) 0;
  font-family:var(--serif); font-style:italic; font-size:1.1rem; color:var(--ink);
  line-height:1.5;
}
/* Les phrases tournées vers l'avenir prennent la teinte bleue du site,
   pour marquer visuellement le passage de ce qui pèse à ce qui s'ouvre. */
.quotes-goal li{ border-left-color:var(--slate); color:var(--slate); }

/* ---------- Encadré de cadrage déontologique ---------- */
.cadre-note{
  margin:2.4rem 0 0; padding:24px 28px;
  background:var(--cream-3); border-left:3px solid var(--sage-deep);
  border-radius:0 var(--radius) var(--radius) 0;
}
.cadre-note p{ margin:0; font-size:.97rem; color:var(--ink-soft); }
.cadre-note strong{ color:var(--ink); font-weight:500; }

/* ---------- Liste de faits pratiques ---------- */
.facts{ margin:0 0 1.6rem; display:grid; gap:0; }
.facts > div{
  display:grid; grid-template-columns:180px 1fr; gap:20px;
  padding:15px 0; border-bottom:1px solid var(--line);
}
.facts > div:last-child{ border-bottom:0; }
.facts dt{ font-family:var(--serif); font-size:1.08rem; color:var(--slate); }
.facts dd{ margin:0; color:var(--ink-soft); font-size:.98rem; }
@media (max-width:560px){
  .facts > div{ grid-template-columns:1fr; gap:3px; padding:13px 0; }
}

/* ---------- Renvoi vers l'autre page ---------- */
.next-page{
  margin:2.6rem 0 0; padding-top:1.8rem; border-top:1px solid var(--line);
  text-align:center; font-size:1.02rem; color:var(--ink-soft);
}

/* ---------- Sections ---------- */
.section{ padding:clamp(72px,9vw,118px) 0; }
.section-alt{ background:var(--cream-2); }

/* ---------- Cartes accompagnements ---------- */
.cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:26px; }
.card{
  background:#FCFAF5; border:1px solid var(--line); border-radius:var(--radius);
  padding:36px 32px 30px; box-shadow:var(--shadow);
  transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-lg); border-color:var(--sage-soft); }
.card-icon{ width:52px; height:52px; color:var(--sage-deep); margin-bottom:20px; }
.card-icon svg{ width:100%; height:100%; }
.card h3{ margin-bottom:.45em; }
.card p{ color:var(--ink-soft); font-size:.98rem; }

.tags{ list-style:none; display:flex; flex-wrap:wrap; gap:8px; margin:20px 0 0; padding:0; }
.tags li{
  font-size:.79rem; letter-spacing:.02em; color:var(--sage-deep);
  background:var(--sage-soft-2); border-radius:100px; padding:5px 13px;
}

/* Lien de la carte vers sa page dédiée, ancré en bas quelle que soit
   la hauteur des étiquettes au-dessus. */
.card{ display:flex; flex-direction:column; }
.card .tags{ flex:1 0 auto; align-content:flex-start; }
.card-link{
  display:inline-block; margin-top:22px; padding-top:18px;
  border-top:1px solid var(--cream-3);
  font-size:.93rem; font-weight:500; color:var(--slate);
}
.card-link::after{ content:" →"; color:var(--sage-deep); }
.card-link:hover{ text-decoration:none; color:var(--sage-deep); }

/* ---------- À propos ---------- */
.about{ display:grid; grid-template-columns:minmax(240px,340px) 1fr; gap:clamp(36px,6vw,72px); align-items:start; }
@media (max-width:880px){ .about{ grid-template-columns:1fr; } }

.portrait{
  position:relative; aspect-ratio:4/5; border-radius:var(--radius); overflow:hidden;
  background:linear-gradient(150deg,var(--clay),var(--sage-soft));
  box-shadow:var(--shadow-lg); display:grid; place-items:center;
}
.portrait img{ width:100%; height:100%; object-fit:cover; position:relative; z-index:1; }
.portrait-fallback{
  position:absolute; font-family:var(--serif); font-size:1.1rem; color:#fff;
  letter-spacing:.06em; opacity:0;
}
.portrait--empty .portrait-fallback{ opacity:.9; }

.credentials{ list-style:none; margin:26px 0 0; padding:0; display:grid; gap:12px; }
.credentials li{
  position:relative; padding-left:26px;
  font-size:.96rem; color:var(--ink-soft); line-height:1.5;
}
.leaf{
  position:absolute; left:0; top:6px; width:14px; height:14px;
  background:var(--sage); border-radius:0 100% 0 100%; transform:rotate(-20deg);
}

.parcours{ margin-top:2.6rem; padding:28px 30px; background:#FCFAF5; border:1px solid var(--line); border-radius:var(--radius); }
.parcours h3{ font-size:1.1rem; margin-bottom:1em; }
.parcours ul{ list-style:none; margin:0; padding:0; display:grid; gap:13px; }
.parcours li{
  display:grid; grid-template-columns:104px 1fr; gap:14px; align-items:baseline;
  font-size:.95rem; color:var(--ink-soft); line-height:1.5;
}
.parcours .year{ font-family:var(--serif); font-size:1rem; color:var(--sage-deep); white-space:nowrap; }
.parcours-note{
  margin:18px 0 0; padding-top:15px; border-top:1px solid var(--cream-3);
  font-size:.92rem; color:var(--ink-soft); font-style:italic;
}
@media (max-width:520px){
  .parcours li{ grid-template-columns:1fr; gap:2px; }
}

.approach{ margin-top:2.6rem; padding:28px 30px; background:#FCFAF5; border:1px solid var(--line); border-radius:var(--radius); }
.approach h3{ font-size:1.1rem; margin-bottom:.5em; }
.approach-intro{ margin:0 0 1.3em; font-size:.94rem; color:var(--ink-soft); font-style:italic; }
.approach dl{ margin:0; display:grid; gap:16px; }
.approach dt{ font-family:var(--serif); font-size:1.12rem; color:var(--slate); }
.approach dd{ margin:2px 0 0; font-size:.96rem; color:var(--ink-soft); }

/* ---------- Étapes ---------- */
.steps{ list-style:none; counter-reset:step; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:34px 30px; }
.steps li{ position:relative; padding-top:8px; }
.step-num{
  display:grid; place-items:center; width:44px; height:44px; margin-bottom:18px;
  border:1px solid var(--sage); border-radius:50%;
  font-family:var(--serif); font-size:1.2rem; color:var(--sage-deep); background:#FCFAF5;
}
.steps h3{ font-size:1.16rem; margin-bottom:.4em; }
.steps p{ font-size:.97rem; color:var(--ink-soft); margin:0; }

/* ---------- Tarifs ---------- */
.pricing{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:22px; margin-bottom:2.4rem; }
.price-card{
  background:#FCFAF5; border:1px solid var(--line); border-radius:var(--radius);
  padding:32px 28px; text-align:center;
}
.price-card h3{ font-size:1.08rem; min-height:2.6em; display:flex; align-items:center; justify-content:center; margin-bottom:.3em; }
.price{ font-family:var(--serif); font-size:2.4rem; color:var(--slate); margin:0 0 .15em; line-height:1; }
.price-meta{ font-size:.88rem; color:var(--ink-soft); margin:0; }
.price-second{
  margin:16px 0 0; padding-top:14px; border-top:1px solid var(--cream-3);
  font-size:.9rem; color:var(--ink-soft);
}
.price-second span{ font-family:var(--serif); font-size:1.35rem; color:var(--sage-deep); margin-right:.25em; }

/* ---------- Rendez-vous ---------- */
.section-book{ background:linear-gradient(180deg,var(--cream) 0%,var(--cream-2) 100%); }
.calendly-shell{
  background:#FCFAF5; border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow-lg); overflow:hidden; min-height:520px;
}
.calendly-inline-widget{ width:100%; }
.calendly-placeholder{ display:grid; place-items:center; gap:16px; min-height:520px; text-align:center; padding:40px 24px; color:var(--ink-soft); }
.calendly-placeholder .spinner{
  width:34px; height:34px; border:2px solid var(--sage-soft); border-top-color:var(--slate);
  border-radius:50%; animation:spin 1s linear infinite;
}
@keyframes spin{ to{ transform:rotate(360deg); } }
.book-alt{ margin-top:1.8rem; text-align:center; color:var(--ink-soft); font-size:.98rem; }

/* ---------- FAQ ---------- */
.faq{ display:grid; gap:2px; margin-bottom:3rem; }
.faq details{ border-bottom:1px solid var(--line); }
.faq summary{
  list-style:none; cursor:pointer; padding:22px 40px 22px 0; position:relative;
  font-family:var(--serif); font-size:1.18rem; color:var(--ink);
}
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{
  content:""; position:absolute; right:8px; top:50%; width:10px; height:10px;
  border-right:1.5px solid var(--sage-deep); border-bottom:1.5px solid var(--sage-deep);
  transform:translateY(-70%) rotate(45deg); transition:transform .25s ease;
}
.faq details[open] summary::after{ transform:translateY(-25%) rotate(-135deg); }
.faq summary:hover{ color:var(--slate); }
.faq details p{ margin:0 0 24px; padding-right:40px; color:var(--ink-soft); font-size:.99rem; }

.urgence{ background:var(--cream-3); border-left:3px solid var(--slate); border-radius:0 var(--radius) var(--radius) 0; padding:26px 30px; }
.urgence h3{ font-size:1.1rem; margin-bottom:.5em; }
.urgence p{ font-size:.95rem; color:var(--ink-soft); }
.urgence ul{ margin:0; padding-left:20px; font-size:.95rem; color:var(--ink-soft); }
.urgence li{ margin-bottom:6px; }
.urgence strong{ color:var(--slate); font-weight:600; }

/* ---------- Contact ---------- */
.contact{ display:grid; grid-template-columns:1.35fr 1fr; gap:clamp(36px,6vw,72px); align-items:start; }
@media (max-width:880px){ .contact{ grid-template-columns:1fr; } }

.contact-list{ list-style:none; margin:2rem 0 0; padding:0; display:grid; gap:22px; }
.contact-list li{ display:flex; align-items:flex-start; gap:16px; }
.ci{ flex:0 0 auto; width:38px; height:38px; display:grid; place-items:center; border-radius:50%; background:var(--sage-soft-2); color:var(--sage-deep); }
.ci svg{ width:19px; height:19px; }

/* WhatsApp : moyen de contact mis en avant. Le vert de la marque reste
   discret, limité à la pastille, pour ne pas rompre la palette du site. */
.ci-wa{ background:#25D366; color:#fff; }
.ci-wa svg{ width:21px; height:21px; }
.contact-primary a{ font-weight:500; }

.wa-link{ white-space:nowrap; }
.wa-glyph{ display:inline-block; width:1em; height:1em; vertical-align:-.12em; margin-right:.3em; color:#25D366; }
.wa-glyph svg{ width:100%; height:100%; display:block; }

.contact-hours{ background:#FCFAF5; border:1px solid var(--line); border-radius:var(--radius); padding:32px 30px; box-shadow:var(--shadow); }
.contact-hours h3{ font-size:1.15rem; }
.hours{ margin:0 0 26px; display:grid; gap:12px; }
.hours > div{ display:flex; justify-content:space-between; gap:16px; padding-bottom:11px; border-bottom:1px solid var(--cream-3); font-size:.95rem; }
.hours dt{ color:var(--ink-soft); }
.hours dd{ margin:0; color:var(--ink); }
.contact-hours .fineprint{ margin:14px 0 0; text-align:center; }

/* ---------- Footer ---------- */
.site-footer{ background:var(--slate); color:#DCE4E8; padding:56px 0 34px; }
.footer-inner{ display:grid; grid-template-columns:1fr auto; gap:32px; align-items:start; }
@media (max-width:720px){ .footer-inner{ grid-template-columns:1fr; } }
.footer-brand{ font-family:var(--serif); font-size:1.6rem; color:#fff; margin:0; }
.footer-role{ font-size:.85rem; letter-spacing:.1em; text-transform:uppercase; color:var(--sage-soft); margin:.2em 0 0; }
.site-footer nav ul{ list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.site-footer a{ color:#DCE4E8; font-size:.93rem; }
.site-footer a:hover{ color:#fff; }
.copyright{ grid-column:1/-1; margin:22px 0 0; padding-top:22px; border-top:1px solid rgba(255,255,255,.14); font-size:.85rem; color:var(--sage-soft); }

/* ---------- Animations d'apparition ---------- */
.reveal{ opacity:0; transform:translateY(18px); transition:opacity .7s cubic-bezier(.2,.7,.3,1), transform .7s cubic-bezier(.2,.7,.3,1); }
.reveal.is-visible{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
  .card:hover, .btn:hover{ transform:none; }
}

/* ---------- Page mentions légales ---------- */
.legal{ padding:clamp(56px,8vw,96px) 0; }
.legal h1{ font-size:clamp(2rem,4vw,3rem); margin-bottom:.6em; }
.legal h2{ font-size:1.5rem; margin-top:2.2em; }
.legal p, .legal li{ color:var(--ink-soft); font-size:1rem; }
.legal ul{ padding-left:22px; }
.legal .back{ display:inline-block; margin-bottom:2rem; font-size:.93rem; }
.legal-table{
  width:100%; border-collapse:collapse; margin:1.4em 0 1.6em;
  font-size:.93rem; display:block; overflow-x:auto;
}
.legal-table th, .legal-table td{
  text-align:left; padding:11px 14px; border-bottom:1px solid var(--line);
  vertical-align:top; color:var(--ink-soft);
}
.legal-table th{ font-weight:500; color:var(--ink); background:var(--cream-2); white-space:nowrap; }
.legal-table tr:last-child td{ border-bottom:0; }

/* ---------- Impression ---------- */
@media print{
  .site-header,.nav,.hero-decor,.calendly-shell,.btn{ display:none !important; }
  body{ background:#fff; }
}
