:root{
  --ink:#20281f;
  --paper:#f1ede1;
  --paper-2:#e8e2d2;
  --card:#faf8f1;
  --sage:#4b6b4f;
  --sage-deep:#2c4530;
  --gold:#a97f31;
  --line: rgba(32,40,31,0.15);
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{font-family:'Work Sans', sans-serif; background:var(--paper); color:var(--ink); line-height:1.62;}
.display{font-family:'Lora', serif;}
a{color:inherit;}
img{max-width:100%; display:block;}
ul{list-style:none;}
:focus-visible{outline:2px solid var(--sage); outline-offset:3px;}
.wrap{max-width:1040px; margin:0 auto; padding:0 24px;}

/* NAV */
nav{position:sticky; top:0; z-index:60; background:var(--paper); border-bottom:1px solid var(--line);}
nav .wrap{display:flex; justify-content:space-between; align-items:center; height:78px;}
.brand{font-family:'Lora', serif; font-weight:600; font-size:20px; text-decoration:none; color:var(--ink); display:flex; align-items:center; gap:10px;}
.brand .mark{width:9px; height:9px; border-radius:50%; border:1.5px solid var(--gold); flex:none;}
.navlinks{display:flex; gap:32px; align-items:center;}
.navlinks a{position:relative; text-decoration:none; font-size:14.5px; color:var(--ink); opacity:0.68; padding:4px 0; transition:opacity 0.2s;}
.navlinks a:hover, .navlinks a.active{opacity:1;}
.navlinks a:not(.cta)::after{
  content:""; position:absolute; left:0; right:100%; bottom:-1px; height:1px; background:var(--sage);
  transition:right 0.25s cubic-bezier(0.22,1,0.36,1);
}
.navlinks a:not(.cta):hover::after, .navlinks a.active:not(.cta)::after{right:0;}
.navlinks .cta{background:var(--sage); color:#fff; padding:10px 20px; border-radius:3px; opacity:1; border-bottom:none;}
.navlinks .cta:hover{background:var(--sage-deep);}
.burger{display:none; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer; padding:8px;}
.burger span{width:20px; height:1.5px; background:var(--ink); display:block;}
.mobile-panel{display:none; flex-direction:column; background:var(--paper); border-bottom:1px solid var(--line); padding:8px 24px 18px;}
.mobile-panel.open{display:flex;}
.mobile-panel a{padding:13px 0; text-decoration:none; color:var(--ink); border-bottom:1px solid var(--line); font-size:15px;}
.mobile-panel a:last-child{border-bottom:none;}

/* HERO generic (page header) */
.pagehead{padding:60px 0 52px; position:relative; overflow:hidden;}
.pagehead .arc{
  position:absolute; top:0; right:24px; width:1px; height:100%;
  background:var(--line); pointer-events:none; display:none;
}
.pagehead .mesh{position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none;}
.pagehead .blob{position:absolute; border-radius:50%; filter:blur(75px); opacity:0.3; will-change:transform;}
.pagehead .blob.b1{width:400px; height:400px; background:var(--sage); top:-160px; right:-100px; animation:driftA 24s ease-in-out infinite;}
.pagehead .blob.b2{width:300px; height:300px; background:var(--gold); bottom:-150px; left:4%; opacity:0.2; animation:driftB 28s ease-in-out infinite;}
@keyframes driftA{0%,100%{transform:translate(0,0) scale(1);} 50%{transform:translate(-36px,28px) scale(1.1);}}
@keyframes driftB{0%,100%{transform:translate(0,0) scale(1);} 50%{transform:translate(28px,-20px) scale(1.14);}}
.pagehead .wrap{position:relative; z-index:1;}
.eyebrow{font-family:'Work Sans', sans-serif; font-weight:600; font-size:12.5px; text-transform:uppercase; letter-spacing:0.09em; color:var(--sage-deep); margin-bottom:18px; display:flex; align-items:center; gap:9px;}
.eyebrow::before{content:""; width:0; height:1.5px; background:var(--gold); transition:width 0.7s cubic-bezier(0.22,1,0.36,1) 0.1s;}
.pagehead .eyebrow::before{width:18px; transition-delay:0s;}
.reveal.in .eyebrow::before{width:18px;}

/* statut ouvert / ferme */
.status-pill{
  display:inline-flex; align-items:center; gap:7px; font-family:'Work Sans', sans-serif; font-weight:600; font-size:12px;
  text-transform:uppercase; letter-spacing:0.04em; opacity:0.85;
}
.status-pill .dot{width:6px; height:6px; border-radius:50%; background:var(--sage); flex:none;}
.status-pill.closed .dot{background:#9a8f7a;}
.status-pill.open .dot{animation:pulseDotK 2.2s ease infinite;}
@keyframes pulseDotK{
  0%{box-shadow:0 0 0 0 rgba(75,107,79,0.5);}
  70%{box-shadow:0 0 0 7px rgba(75,107,79,0);}
  100%{box-shadow:0 0 0 0 rgba(75,107,79,0);}
}
h1{font-family:'Lora', serif; font-weight:600; font-size:clamp(34px,5.4vw,52px); line-height:1.14; max-width:680px; letter-spacing:-0.01em;}
.pagehead p.lede{max-width:520px; margin-top:20px; font-size:16.5px; color:#465043;}
.hero-cta{margin-top:34px; display:flex; gap:18px; flex-wrap:wrap;}
.btn{background:var(--sage); color:#fff; text-decoration:none; padding:14px 26px; border-radius:3px; font-size:14.5px; font-weight:500; display:inline-block; transition:background 0.2s, transform 0.2s;}
.btn:hover{background:var(--sage-deep); transform:translateY(-2px);}
.btn-outline{border:1px solid var(--ink); color:var(--ink); text-decoration:none; padding:13px 25px; border-radius:3px; font-size:14.5px; transition:background 0.2s, color 0.2s, transform 0.2s;}
.btn-outline:hover{background:var(--ink); color:var(--paper); transform:translateY(-2px);}

/* entree de page */
@keyframes riseIn{from{opacity:0; transform:translateY(16px);} to{opacity:1; transform:translateY(0);}}
.pagehead .eyebrow{animation:riseIn 0.6s cubic-bezier(0.22,1,0.36,1) both;}
.pagehead h1{animation:riseIn 0.6s cubic-bezier(0.22,1,0.36,1) 0.08s both;}
.pagehead p.lede{animation:riseIn 0.6s cubic-bezier(0.22,1,0.36,1) 0.16s both;}
.pagehead .hero-cta{animation:riseIn 0.6s cubic-bezier(0.22,1,0.36,1) 0.24s both;}

/* SECTION */
.section{padding:72px 0;}
.section h2{font-family:'Lora', serif; font-weight:600; font-size:clamp(25px,3.2vw,33px); max-width:600px; letter-spacing:-0.01em;}
.section .sub{max-width:540px; margin-top:14px; color:#465043; font-size:15px;}

/* CARDS */
.grid-3{margin-top:48px; display:grid; grid-template-columns:repeat(3,1fr); gap:0; border-top:1px solid var(--line);}
.grid-2{margin-top:44px; display:grid; grid-template-columns:1fr 1fr; gap:26px;}
.card{background:none; border-right:1px solid var(--line); padding:30px 30px 0; transition:transform 0.3s cubic-bezier(0.22,1,0.36,1);}
.grid-3 > .card:first-child{padding-left:0;}
.grid-3 > .card:last-child{border-right:none; padding-right:0;}
.card:hover{transform:translateY(-5px);}
.card .num{font-family:'Work Sans', sans-serif; font-weight:600; font-size:12.5px; color:var(--gold); letter-spacing:0.03em;}
.card h3{font-family:'Lora', serif; font-weight:600; font-size:20px; margin-top:14px;}
.card p{margin-top:10px; font-size:14px; color:#465043;}

.photoblock{background:var(--paper-2); border-radius:3px; min-height:220px; display:flex; align-items:center; justify-content:center; color:var(--sage-deep); font-family:'Work Sans', sans-serif; font-weight:500; font-size:12px; text-transform:uppercase; letter-spacing:0.06em; border:1px solid var(--line); transition:background 0.3s;}
.photoblock:hover{background:#ded5bb;}

/* tilt 3D + spotlight sur les cartes */
.card, .avis-card, .photoblock{position:relative;}
.card.tilt::after, .avis-card.tilt::after, .photoblock.tilt::after{
  content:""; position:absolute; inset:0; opacity:0; transition:opacity 0.3s; pointer-events:none; border-radius:inherit;
  background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%), rgba(75,107,79,0.16), transparent 62%);
}
.card.tilt:hover::after, .avis-card.tilt:hover::after, .photoblock.tilt:hover::after{opacity:1;}

/* ---------- STATISTIQUES ---------- */
.stats{margin-top:52px; display:grid; grid-template-columns:repeat(3,1fr); gap:24px; text-align:center; border-top:1px solid var(--line); padding-top:40px;}
.stat b{display:block; font-family:'Lora', serif; font-size:clamp(30px,4vw,42px); font-weight:600; color:var(--sage-deep);}
.stat span{font-family:'Work Sans', sans-serif; font-weight:500; font-size:12px; text-transform:uppercase; letter-spacing:0.05em; color:#5c6a5c; margin-top:6px; display:block;}

/* ---------- AVIS CLIENTS ---------- */
.avis-grid{margin-top:48px; display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
.avis-card{
  background:var(--card); border:1px solid var(--line); padding:26px 24px; border-radius:3px;
  transition:transform 0.3s cubic-bezier(0.22,1,0.36,1), box-shadow 0.3s;
}
.avis-card:hover{transform:translateY(-5px); box-shadow:0 18px 32px -20px rgba(32,40,31,0.3);}
.avis-stars{color:var(--gold); font-size:13px; letter-spacing:2px;}
.avis-card p{margin-top:14px; font-size:14.5px; color:#3c463c; line-height:1.55;}
.avis-card .who{margin-top:16px; font-family:'Work Sans', sans-serif; font-weight:600; font-size:11.5px; text-transform:uppercase; letter-spacing:0.04em; color:var(--sage);}

/* ---------- BIO PRATICIEN ---------- */
.bio-card{margin-top:36px; display:grid; grid-template-columns:220px 1fr; gap:36px; align-items:start;}
.bio-photo{aspect-ratio:1; border-radius:3px;}
.bio-list{margin-top:18px; display:flex; flex-direction:column; gap:10px;}
.bio-list li{display:flex; gap:10px; font-size:14.5px; align-items:flex-start;}
.bio-list li::before{content:"✓"; color:var(--sage); font-weight:700; flex:none;}

/* barre de RDV flottante mobile */
.call-bar{
  display:none; position:fixed; left:0; right:0; bottom:0; z-index:70;
  background:var(--ink); padding:12px 20px; text-align:center;
  box-shadow:0 -8px 24px -12px rgba(32,40,31,0.4);
}
.call-bar a{color:#fff; text-decoration:none; font-weight:600; font-size:14.5px; display:flex; align-items:center; justify-content:center; gap:8px;}

/* FAQ mini (details) */
.faq-mini{margin-top:20px; max-width:640px;}
.faq-mini details{border-bottom:1px solid var(--line); padding:16px 0;}
.faq-mini summary{cursor:pointer; font-weight:600; font-size:15px; list-style:none; display:flex; justify-content:space-between; align-items:center; gap:16px;}
.faq-mini summary::-webkit-details-marker{display:none;}
.faq-mini summary::after{content:"+"; color:var(--sage); font-size:18px; transition:transform 0.3s;}
.faq-mini details[open] summary::after{transform:rotate(45deg);}
.faq-mini details p{margin-top:10px; font-size:14px; color:#465043; max-width:560px;}

/* apparition en cascade au defilement */
.reveal{opacity:0; transform:translateY(18px); transition:opacity 0.6s ease, transform 0.6s ease;}
.reveal.in{opacity:1; transform:translateY(0);}
.grid-3 > .card, .grid-2 > .photoblock, .grid-2 > div, .pricetable > .pricerow, .contact-grid .infoline,
.stats > .stat, .avis-grid > .avis-card{
  opacity:0; transform:translateY(16px); transition:opacity 0.55s ease, transform 0.55s ease;
}
.reveal.in .grid-3 > .card, .reveal.in .grid-2 > .photoblock, .reveal.in .grid-2 > div,
.reveal.in .pricetable > .pricerow, .reveal.in .contact-grid .infoline,
.reveal.in .stats > .stat, .reveal.in .avis-grid > .avis-card{
  opacity:1; transform:translateY(0);
}
.grid-3 > .card:nth-child(1), .grid-2 > *:nth-child(1), .pricetable > .pricerow:nth-child(1), .contact-grid .infoline:nth-child(1),
.stats > .stat:nth-child(1), .avis-grid > .avis-card:nth-child(1){transition-delay:0.05s;}
.grid-3 > .card:nth-child(2), .grid-2 > *:nth-child(2), .pricetable > .pricerow:nth-child(2), .contact-grid .infoline:nth-child(2),
.stats > .stat:nth-child(2), .avis-grid > .avis-card:nth-child(2){transition-delay:0.14s;}
.grid-3 > .card:nth-child(3), .grid-2 > *:nth-child(3), .pricetable > .pricerow:nth-child(3), .contact-grid .infoline:nth-child(3),
.stats > .stat:nth-child(3), .avis-grid > .avis-card:nth-child(3){transition-delay:0.23s;}
.grid-3 > .card:nth-child(4), .grid-2 > *:nth-child(4), .contact-grid .infoline:nth-child(4){transition-delay:0.32s;}

/* REASSURANCE STRIP */
.strip{background:var(--ink); color:var(--paper);}
.strip .wrap{padding:40px 24px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:20px;}
.strip .item{font-family:'Work Sans', sans-serif; font-weight:500; font-size:13.5px; display:flex; align-items:center; gap:10px; color:rgba(241,237,225,0.82);}
.strip .item .dot{width:5px; height:5px; border-radius:50%; background:var(--gold); flex:none;}

/* TABLE (tarifs) */
.pricetable{margin-top:44px; border-top:1px solid var(--line); max-width:640px;}
.pricerow{display:flex; justify-content:space-between; align-items:center; padding:22px 0; border-bottom:1px solid var(--line); gap:16px; transition:padding-left 0.25s cubic-bezier(0.22,1,0.36,1);}
.pricerow:hover{padding-left:10px;}
.pricerow .label{font-weight:600; font-family:'Lora', serif; font-size:17px;}
.pricerow .desc{font-size:13.5px; color:#5c6a5c; margin-top:4px;}
.pricerow .amount{font-family:'Work Sans', sans-serif; font-weight:600; font-size:17px; color:var(--sage-deep); white-space:nowrap;}
.note{margin-top:22px; font-size:13.5px; color:#5c6a5c; max-width:560px;}

/* CONTACT / FORM */
.contact-grid{margin-top:44px; display:grid; grid-template-columns:1fr 1fr; gap:56px;}
.infoline{padding:17px 0; border-bottom:1px solid var(--line);}
.infoline h3{font-family:'Work Sans', sans-serif; font-weight:600; font-size:11.5px; text-transform:uppercase; letter-spacing:0.07em; color:var(--sage);}
.infoline p{margin-top:7px; font-size:15px;}
form{display:flex; flex-direction:column; gap:16px;}
form label{font-size:12.5px; font-family:'Work Sans', sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:0.06em; color:var(--sage-deep); margin-bottom:7px; display:block;}
form input, form textarea{
  width:100%; padding:12px 14px; border:1px solid var(--line); border-radius:3px; background:var(--card);
  font-family:'Work Sans', sans-serif; font-size:14.5px; color:var(--ink);
  transition:border-color 0.2s, box-shadow 0.2s;
}
form input:focus, form textarea:focus{border-color:var(--sage); outline:none; box-shadow:0 0 0 3px rgba(75,107,79,0.14);}
form button{
  background:var(--sage); color:#fff; border:none; padding:14px; border-radius:3px; font-size:14.5px;
  font-weight:600; cursor:pointer; margin-top:6px; transition:background 0.2s, transform 0.2s;
}
form button:hover{background:var(--sage-deep); transform:translateY(-2px);}

footer{background:var(--ink); color:rgba(241,237,225,0.5); font-family:'Work Sans', sans-serif; font-size:12.5px; padding:28px 0;}
footer .wrap{display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;}

@media (max-width:820px){
  .navlinks{display:none;}
  .burger{display:flex;}
  .grid-3{grid-template-columns:1fr; border-top:none;}
  .card{border-right:none; border-top:1px solid var(--line); padding:26px 0 0;}
  .grid-3 > .card:first-child{border-top:none;}
  .grid-2{grid-template-columns:1fr; gap:24px;}
  .contact-grid{grid-template-columns:1fr; gap:36px;}
  .strip .wrap{flex-direction:column;}
  .stats{grid-template-columns:1fr; gap:20px;}
  .avis-grid{grid-template-columns:1fr;}
  .bio-card{grid-template-columns:1fr;}
  .bio-photo{max-width:220px;}
  .call-bar{display:block;}
  body{padding-bottom:56px;}
}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{transition:none !important; animation:none !important;}
  .reveal, .grid-3 > .card, .grid-2 > .photoblock, .grid-2 > div,
  .pricetable > .pricerow, .contact-grid .infoline,
  .stats > .stat, .avis-grid > .avis-card{opacity:1; transform:none;}
  .pagehead .mesh{display:none;}
  .eyebrow::before{width:18px;}
}