:root{
  --ink:#28332e;
  --ink-deep:#1e2723;
  --paper:#faf8f3;
  --sand:#eee6d9;
  --sage:#a9b9a7;
  --sage-light:#dbe3d8;
  --line:rgba(40,51,46,.16);
  --muted:#6e7772;
  --serif:"Newsreader",Georgia,serif;
  --sans:"DM Sans",Arial,sans-serif;
  --radius:2px;
  --shadow:0 22px 70px rgba(48,56,48,.12)
}
*{
  box-sizing:border-box
}
html{
  max-width:100%;
  overflow-x:clip;
  scroll-behavior:smooth
}
body{
  max-width:100%;
  margin:0;
  overflow-x:clip;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased
}
body.menu-open{
  overflow:hidden
}
main,.site-footer{
  min-width:0;
  overflow-x:clip
}
img{
  display:block;
  max-width:100%
}
a{
  color:inherit;
  text-decoration:none
}
button,input,select,textarea{
  font:inherit
}
button{
  cursor:pointer
}
::selection{
  background:var(--sage);
  color:var(--ink-deep)
}
.container{
  width:min(calc(100% - 48px),1280px);
  margin-inline:auto
}
.section{
  padding-block:120px;
  scroll-margin-top:78px
}
.section--sage{
  background:var(--sage-light)
}
.section--sand{
  background:var(--sand)
}
.section--ink{
  background:var(--ink-deep);
  color:#f7f4ed
}
.stack{
  display:flex;
  flex-direction:column
}
.stack--lg{
  gap:30px
}
.stack--xl{
  gap:64px
}
.grid{
  display:grid
}
.grid--3{
  grid-template-columns:repeat(3,1fr);
  gap:18px
}
.media-cover{
  width:100%;
  height:100%;
  object-fit:cover
}
.media-frame{
  position:relative;
  margin:0;
  overflow:hidden;
  background:#d9dcd4;
  box-shadow:var(--shadow)
}
.media-frame--landscape{
  aspect-ratio:5/4
}
.media-frame--portrait{
  aspect-ratio:4/5
}
.media-frame figcaption{
  position:absolute;
  inset:auto 0 0;
  padding:55px 28px 24px;
  background:linear-gradient(transparent,rgba(20,28,24,.62));
  color:#fff;
  font-family:var(--serif);
  font-size:21px;
  font-style:italic
}
.button-row{
  display:flex;
  align-items:center;
  gap:28px;
  flex-wrap:wrap
}
.button{
  min-height:56px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 25px;
  border:1px solid transparent;
  border-radius:var(--radius);
  font-size:12px;
  font-weight:600;
  letter-spacing:.08em;
  text-transform:uppercase;
  transition:transform .25s,background .25s,border-color .25s
}
.button:hover{
  transform:translateY(-2px)
}
.button--small{
  min-height:44px;
  padding-inline:20px
}
.button--dark{
  background:var(--ink);
  color:#fff
}
.button--dark:hover{
  background:#111814
}
.button--sage{
  background:var(--sage);
  color:var(--ink-deep)
}
.button--sage:hover{
  background:#bdcaba
}
.button--outline{
  border-color:var(--line);
  background:transparent
}
.button--outline:hover{
  border-color:var(--ink)
}
.button--full{
  width:100%
}
.text-link{
  font-size:13px;
  font-weight:600
}
.text-link span{
  display:inline-block;
  margin-left:8px;
  transition:transform .2s
}
.text-link:hover span{
  transform:translate(3px,3px)
}
.site-header{
  position:fixed;
  max-width:100%;
  z-index:100;
  inset:0 0 auto;
  background:rgba(250,248,243,.86);
  border-bottom:1px solid transparent;
  backdrop-filter:blur(16px);
  transition:border-color .25s
}
.site-header.is-scrolled{
  border-color:var(--line)
}
.nav-row{
  min-width:0;
  height:78px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px
}
.brand{
  display:inline-flex;
  align-items:center;
  gap:10px;
  flex-shrink:0;
  font-family:var(--serif);
  font-size:21px;
  line-height:1
}
.brand__symbol{
  font-size:31px;
  color:#738675
}
.brand--light{
  color:#fff
}
.nav-links{
  display:flex;
  align-items:center;
  gap:30px
}
.nav-links a{
  position:relative;
  font-size:11px;
  font-weight:600;
  letter-spacing:.07em;
  text-transform:uppercase
}
.nav-links a:after{
  content:"";
  position:absolute;
  left:0;
  right:100%;
  bottom:-7px;
  height:1px;
  background:var(--ink);
  transition:right .2s
}
.nav-links a:hover:after{
  right:0
}
.nav-toggle{
  display:none;
  width:44px;
  height:44px;
  padding:11px;
  flex:0 0 44px;
  border:1px solid var(--line);
  background:transparent
}
.nav-toggle span{
  display:block;
  height:1px;
  margin:6px 0;
  background:var(--ink);
  transition:.2s
}
.nav-toggle[aria-expanded=true] span:first-child{
  transform:translateY(3.5px) rotate(45deg)
}
.nav-toggle[aria-expanded=true] span:last-child{
  transform:translateY(-3.5px) rotate(-45deg)
}
.hero{
  position:relative;
  min-height:860px;
  display:flex;
  align-items:center;
  padding:130px 0 90px;
  overflow:hidden
}
.hero__media,.hero__veil{
  position:absolute;
  inset:0
}
.hero__media{
  object-position:center
}
.hero__veil{
  background:linear-gradient(90deg,rgba(247,244,237,.95) 0%,rgba(247,244,237,.84) 38%,rgba(247,244,237,.08) 72%)
}
.hero__content{
  position:relative;
  z-index:1
}
.eyebrow{
  display:flex;
  align-items:center;
  gap:12px;
  margin:0;
  color:#5e7063;
  font-size:10px;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase
}
.eyebrow>span{
  display:block;
  width:34px;
  height:1px;
  background:currentColor
}
.eyebrow--light{
  color:#b8c8b8
}
.hero h1,.section-heading h2,.feature-copy h2,.booking-grid h2,.contact-grid h2{
  margin:0;
  font-family:var(--serif);
  font-weight:400;
  letter-spacing:-.045em
}
.hero h1{
  max-width:860px;
  margin-top:34px;
  font-size:clamp(66px,8vw,124px);
  line-height:.88
}
.hero h1 em,.section-heading h2 em,.feature-copy h2 em,.booking-grid h2 em,.contact-grid h2 em{
  font-weight:400;
  color:#6f8273
}
.hero__lead{
  max-width:560px;
  margin:34px 0;
  color:#4e5c55;
  font-size:18px
}
.hero__scroll{
  position:absolute;
  z-index:2;
  right:4%;
  bottom:55px;
  display:flex;
  align-items:center;
  gap:15px;
  font-size:10px;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
  transform:rotate(90deg);
  transform-origin:right center
}
.hero__scroll i{
  display:block;
  width:55px;
  height:1px;
  background:currentColor
}
.section-heading h2,.feature-copy h2,.booking-grid h2,.contact-grid h2{
  font-size:clamp(50px,5.5vw,80px);
  line-height:.98
}
.split-heading{
  display:grid;
  grid-template-columns:1.5fr .5fr;
  gap:70px;
  align-items:end
}
.split-heading>div{
  display:flex;
  flex-direction:column;
  gap:24px
}
.split-heading>p,.intro{
  margin:0;
  color:var(--muted);
  font-size:15px
}
.card{
  border:1px solid var(--line);
  background:rgba(255,255,255,.48)
}
.practice-card{
  min-height:430px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:28px
}
.practice-card--sage{
  background:var(--sage);
  border-color:transparent
}
.card__number{
  font-family:var(--serif);
  font-size:15px
}
.card__body h3,.price-card h3{
  margin:12px 0 16px;
  font-family:var(--serif);
  font-size:39px;
  font-weight:400;
  line-height:1
}
.card__body>p:not(.tag),.price-card>div>p:not(.tag){
  color:var(--muted);
  font-size:14px
}
.practice-card--sage .card__body>p:not(.tag){
  color:#405047
}
.tag{
  margin:0;
  font-size:9px;
  font-weight:600;
  letter-spacing:.15em;
  text-transform:uppercase
}
.meta-list,.check-list,.credential-list{
  margin:24px 0 0;
  padding:0;
  list-style:none
}
.meta-list{
  display:flex;
  gap:20px;
  padding-top:18px;
  border-top:1px solid var(--line);
  font-size:10px;
  font-weight:600;
  text-transform:uppercase
}
.feature-grid{
  display:grid;
  grid-template-columns:1.08fr .92fr;
  gap:9%;
  align-items:center
}
.feature-grid--reverse{
  grid-template-columns:.92fr 1.08fr
}
.feature-copy .prose{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:28px
}
.prose p{
  margin:0;
  color:#516058;
  font-size:14px
}
.prose--light p{
  color:rgba(255,255,255,.62)
}
.detail-list{
  margin:4px 0 0;
  border-top:1px solid var(--line)
}
.detail-list>div{
  display:grid;
  grid-template-columns:110px 1fr;
  padding:16px 0;
  border-bottom:1px solid var(--line)
}
.detail-list dt{
  font-size:10px;
  font-weight:600;
  letter-spacing:.1em;
  text-transform:uppercase
}
.detail-list dd{
  margin:0;
  color:#5b685f;
  font-size:13px
}
.credential-list{
  display:grid;
  gap:12px
}
.credential-list li{
  padding:13px 0;
  border-bottom:1px solid rgba(255,255,255,.13);
  color:rgba(255,255,255,.68);
  font-size:12px
}
.credential-list li:before{
  content:"○";
  margin-right:12px;
  color:var(--sage)
}
.pricing-grid{
  align-items:stretch
}
.price-card{
  position:relative;
  min-height:560px;
  display:flex;
  flex-direction:column;
  padding:34px
}
.price-card--featured{
  background:var(--sage-light);
  transform:translateY(-12px)
}
.pill{
  position:absolute;
  right:24px;
  top:24px;
  padding:6px 10px;
  background:var(--ink);
  color:#fff;
  font-size:8px;
  font-weight:600;
  letter-spacing:.1em;
  text-transform:uppercase
}
.price{
  margin:35px 0;
  padding-block:24px;
  border-block:1px solid var(--line)
}
.price strong{
  font-family:var(--serif);
  font-size:57px;
  font-weight:400
}
.price span{
  color:var(--muted);
  font-size:12px
}
.check-list{
  display:grid;
  gap:12px;
  margin-bottom:35px;
  color:#56635c;
  font-size:13px
}
.check-list li:before{
  content:"✓";
  margin-right:10px
}
.price-card .button{
  margin-top:auto
}
.fine-print{
  margin:0;
  text-align:center;
  color:var(--muted);
  font-size:11px
}
.booking-grid,.contact-grid{
  display:grid;
  grid-template-columns:.8fr 1.2fr;
  gap:10%;
  align-items:start
}
.booking-grid>*,.contact-grid>*,.footer-grid>*{
  min-width:0
}
.booking-note{
  display:flex;
  gap:16px;
  padding-top:24px;
  border-top:1px solid var(--line)
}
.booking-note>span{
  font-size:24px
}
.booking-note p{
  margin:0;
  color:#59665e;
  font-size:13px
}
.form-card,.contact-form{
  width:100%;
  max-width:100%;
  min-width:0;
  padding:38px;
  border:1px solid var(--line);
  background:var(--paper)
}
.form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:22px
}
.field{
  min-width:0;
  display:grid;
  gap:8px
}
.field--full{
  grid-column:1/-1
}
.field>span{
  font-size:9px;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase
}
.field input,.field select,.field textarea{
  width:100%;
  max-width:100%;
  min-width:0;
  min-height:52px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:0;
  outline:0;
  background:rgba(255,255,255,.5);
  color:var(--ink);
  transition:border-color .2s
}
.field textarea{
  resize:vertical
}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:#718576
}
.choice-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px
}
.choice input{
  position:absolute;
  width:1px;
  max-width:1px;
  height:1px;
  min-height:0;
  margin:0;
  padding:0;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
  opacity:0;
}
.choice span{
  display:grid;
  place-items:center;
  min-height:48px;
  border:1px solid var(--line);
  font-size:12px;
  cursor:pointer
}
.choice input:checked+span{
  background:var(--ink);
  color:#fff;
  border-color:var(--ink)
}
.form-card>.button{
  margin-top:28px
}
.form-status{
  min-height:22px;
  margin:12px 0 0;
  color:#53675a;
  font-size:12px;
  overflow-wrap:anywhere
}
.contact-grid{
  grid-template-columns:1fr 1fr
}
.contact-list{
  display:grid;
  gap:16px
}
.contact-list p{
  display:grid;
  grid-template-columns:100px minmax(0,1fr);
  margin:0;
  padding-bottom:15px;
  border-bottom:1px solid var(--line);
  color:var(--muted);
  font-size:13px;
  overflow-wrap:anywhere
}
.contact-list span{
  color:var(--ink);
  font-size:10px;
  font-weight:600;
  text-transform:uppercase
}
.contact-form{
  display:grid;
  gap:20px;
  background:var(--sand)
}
.site-footer{
  padding-top:70px;
  background:var(--ink-deep);
  color:rgba(255,255,255,.66)
}
.footer-grid{
  display:grid;
  grid-template-columns:1.6fr .6fr .8fr;
  gap:60px;
  padding-bottom:60px
}
.footer-grid>div{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:10px
}
.footer-grid p{
  margin:10px 0 0;
  font-size:12px
}
.footer-title{
  margin-bottom:5px;
  color:#fff;
  font-size:9px;
  font-weight:600;
  letter-spacing:.13em;
  text-transform:uppercase
}
.footer-grid a:not(.brand){
  font-size:12px
}
.footer-bottom{
  display:flex;
  justify-content:space-between;
  padding-block:18px;
  border-top:1px solid rgba(255,255,255,.1);
  font-size:9px;
  letter-spacing:.08em;
  text-transform:uppercase
}
[data-reveal]{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .7s ease,transform .7s ease
}
[data-reveal].is-visible{
  opacity:1;
  transform:none
}
@media(max-width:1120px){
  .nav-links{
    position:absolute;
    top:78px;
    inset-inline:0;
    max-width:100%;
    max-height:0;
    overflow:hidden;
    display:grid;
    gap:0;
    background:var(--paper);
    transition:max-height .3s
  }
  .nav-links.is-open{
    max-height:420px;
    border-bottom:1px solid var(--line)
  }
  .nav-links a{
    padding:17px 24px;
    border-top:1px solid var(--line)
  }
  .nav-toggle{
    display:block
  }
  .header-cta{
    margin-left:auto
  }
  .feature-grid,.feature-grid--reverse,.booking-grid,.contact-grid{
    grid-template-columns:minmax(0,1fr);
    gap:60px
  }
  .feature-grid--reverse .feature-copy{
    order:2
  }
  .feature-grid--reverse .media-frame{
    order:1
  }
  .media-frame--landscape{
    aspect-ratio:16/10
  }
  .pricing-grid{
    grid-template-columns:1fr
  }
  .price-card{
    min-height:0
  }
  .price-card--featured{
    transform:none
  }
  .split-heading{
    grid-template-columns:1fr;
    gap:24px
  }
  .split-heading>p{
    max-width:560px
  }
}
@media(max-width:720px){
  .container{
    width:min(calc(100% - 30px),1280px)
  }
  .section{
    padding-block:82px
  }
  .header-cta{
    display:none
  }
  .hero{
    min-height:780px;
    padding-top:110px;
    align-items:flex-end
  }
  .hero__media{
    object-position:64% center
  }
  .hero__veil{
    background:linear-gradient(0deg,rgba(247,244,237,.98) 0%,rgba(247,244,237,.85) 48%,rgba(247,244,237,.08) 84%)
  }
  .hero h1{
    font-size:clamp(55px,16vw,82px)
  }
  .hero__lead{
    font-size:16px
  }
  .hero__scroll{
    display:none
  }
  .grid--3,.contact-grid,.footer-grid{
    grid-template-columns:minmax(0,1fr)
  }
  .practice-card{
    min-height:350px
  }
  .feature-copy .prose{
    grid-template-columns:1fr
  }
  .form-card,.contact-form{
    padding:24px
  }
  .form-grid{
    grid-template-columns:minmax(0,1fr)
  }
  .field--full{
    grid-column:auto
  }
  .choice-grid{
    grid-template-columns:minmax(0,1fr)
  }
  .contact-grid{
    gap:48px
  }
  .contact-form{
    align-self:start
  }
  .footer-grid{
    gap:34px
  }
  .footer-bottom{
    display:grid;
    gap:8px
  }
}
@media(prefers-reduced-motion:reduce){
  *{
    scroll-behavior:auto!important;
    transition-duration:.01ms!important
  }
  [data-reveal]{
    opacity:1;
    transform:none
  }
}

/* BOUTON DE RETOUR */

.bouton_retour{
	position:fixed;
	left:50%;
	transform:translateX(-50%);
	bottom:24px;
	z-index:9999;
	display:inline-flex;
	align-items:center;
	justify-content:center;
	gap:10px;
	padding:14px 20px;
	border:1px solid rgba(32,35,33,.12);
	border-radius:999px;
	background:#fff;
	color:#202321;
	box-shadow:0 12px 35px rgba(0,0,0,.16);
	text-decoration:none;
	font:600 14px "DM Sans",sans-serif;
	transition:transform .25s ease,box-shadow .25s ease;
}

.bouton_retour:hover{
	transform:translateX(-50%) translateY(-3px);
	box-shadow:0 16px 40px rgba(0,0,0,.22);
}

.bouton_retour:focus-visible{
	outline:3px solid #202321;
	outline-offset:4px;
}

.bouton_retour span{
	font-size:18px;
	line-height:1;
}

@media(max-width:600px){

	.bouton_retour{
		bottom:max(15px,env(safe-area-inset-bottom));
		padding:12px 16px;
		font-size:13px;
	}
}

@media(prefers-reduced-motion:reduce){

	.bouton_retour{
		transition:none;
	}
}