/* ========================================================================== 
   LUNEA STUDIO — Système visuel
   Mobile-first, sans dépendance, avec réduction de mouvement respectée.
   ========================================================================== */

:root {
  --ivory: #f8f4ee;
  --paper: #fffdf9;
  --warm: #eee5da;
  --nude: #ddc8ba;
  --rose-dust: #c9a99d;
  --champagne: #b99a6f;
  --brown: #2b211d;
  --brown-soft: #554842;
  --white: #fff;
  --line: rgba(43, 33, 29, 0.16);
  --line-light: rgba(255, 255, 255, 0.28);
  --serif: "Cormorant Garamond", Georgia, serif;
  --sans: "Manrope", system-ui, sans-serif;
  --header-height: 92px;
  --ease: cubic-bezier(.22, 1, .36, 1);
  --shadow-soft: 0 18px 60px rgba(55, 39, 31, 0.12);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--header-height); }
body {
  margin: 0;
  min-width: 0;
  overflow-x: hidden;
  color: var(--brown);
  background: var(--paper);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}
body.menu-open, body.lightbox-open { overflow: hidden; }
button, input, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
address { font-style: normal; }
::selection { color: var(--white); background: var(--rose-dust); }

.skip-link {
  position: fixed;
  z-index: 9999;
  top: 8px;
  left: 8px;
  padding: 10px 16px;
  color: var(--white);
  background: var(--brown);
  transform: translateY(-150%);
  transition: transform .2s ease;
}
.skip-link:focus { transform: translateY(0); }

:focus-visible {
  outline: 2px solid var(--champagne);
  outline-offset: 4px;
}

h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 {
  font-family: var(--serif);
  font-weight: 500;
  line-height: .98;
  letter-spacing: -.035em;
}
h1 em, h2 em { font-weight: 400; }
h2 { margin-bottom: 28px; font-size: clamp(3.1rem, 14.5vw, 5.2rem); }
.page-width { width: min(100% - 40px, 1420px); margin-inline: auto; }
.section { padding-block: clamp(96px, 14vw, 180px); }
.section--dark { color: var(--ivory); background: var(--brown); }
.section--nude { background: #e2d1c6; }
.section--warm { background: var(--ivory); }
.eyebrow {
  margin-bottom: 22px;
  font-size: .68rem;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: .22em;
  text-transform: uppercase;
}
.lead {
  font-family: var(--serif);
  font-size: clamp(1.45rem, 5vw, 1.85rem);
  line-height: 1.25;
  letter-spacing: -.015em;
}
.section-heading { margin-bottom: 48px; }
.section-heading > p:last-child { max-width: 580px; color: var(--brown-soft); }
.section-heading--center { max-width: 750px; margin-inline: auto; text-align: center; }
.section-heading--center > p:last-child { margin-inline: auto; }

.button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 54px;
  padding: 15px 24px;
  overflow: hidden;
  border: 1px solid transparent;
  border-radius: 0;
  font-size: .72rem;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: .1em;
  text-align: center;
  text-transform: uppercase;
  cursor: pointer;
  transition: color .45s var(--ease), background-color .45s var(--ease), border-color .45s var(--ease), transform .45s var(--ease);
}
.button span { margin-left: 18px; font-size: 1rem; transition: transform .45s var(--ease); }
.button:hover span { transform: translate(3px, -3px); }
.button:active { transform: scale(.98); }
.button--light { color: var(--brown); background: var(--ivory); }
.button--light:hover { color: var(--white); background: var(--brown); border-color: rgba(255,255,255,.35); }
.button--dark { color: var(--white); background: var(--brown); }
.button--dark:hover { color: var(--brown); background: var(--nude); }
.button--outline { border-color: var(--brown); color: var(--brown); background: transparent; }
.button--outline:hover { color: var(--white); background: var(--brown); }
.text-link {
  display: inline-flex;
  align-items: center;
  gap: 18px;
  padding-bottom: 5px;
  border-bottom: 1px solid currentColor;
  font-size: .7rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.text-link span { font-size: .95rem; transition: transform .4s var(--ease); }
.text-link:hover span { transform: translateX(4px); }
.text-link--light { color: var(--white); }
.image-frame { overflow: hidden; background: var(--warm); }
.image-frame img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.image-frame:hover img { transform: scale(1.025); }

/* Header */
.site-header {
  position: fixed;
  z-index: 1000;
  top: 0;
  left: 0;
  width: 100%;
  color: var(--white);
  transition: color .45s var(--ease), background-color .45s var(--ease), box-shadow .45s var(--ease);
}
.site-header.is-scrolled, .site-header.menu-is-open {
  color: var(--brown);
  background: rgba(248, 244, 238, .94);
  box-shadow: 0 1px 0 rgba(43, 33, 29, .1);
  backdrop-filter: blur(14px);
}
.site-header.menu-is-open { backdrop-filter: none; }
.demo-note {
  height: 24px;
  border-bottom: 1px solid rgba(255,255,255,.2);
  font-size: .55rem;
  line-height: 24px;
  letter-spacing: .16em;
  text-align: center;
  text-transform: uppercase;
}
.site-header.is-scrolled .demo-note, .site-header.menu-is-open .demo-note { border-color: var(--line); }
.nav-shell {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: min(100% - 32px, 1540px);
  height: 68px;
  margin-inline: auto;
}
.brand { display: inline-flex; flex-direction: column; align-items: center; gap: 1px; line-height: 1; }
.brand-name { font-family: var(--serif); font-size: 1.65rem; letter-spacing: .18em; }
.brand-subtitle { font-size: .43rem; font-weight: 500; letter-spacing: .19em; text-transform: uppercase; }
.desktop-nav, .button--header { display: none; }
.menu-toggle {
  position: relative;
  z-index: 2;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.menu-toggle span {
  position: absolute;
  right: 7px;
  width: 27px;
  height: 1px;
  background: currentColor;
  transition: top .4s var(--ease), transform .4s var(--ease), width .4s var(--ease);
}
.menu-toggle span:first-child { top: 19px; }
.menu-toggle span:last-child { top: 28px; width: 19px; }
.menu-toggle[aria-expanded="true"] span:first-child { top: 24px; transform: rotate(45deg); }
.menu-toggle[aria-expanded="true"] span:last-child { top: 24px; width: 27px; transform: rotate(-45deg); }
.mobile-menu {
  position: fixed;
  z-index: 1;
  inset: 92px 0 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 32px 20px 38px;
  color: var(--brown);
  background: var(--ivory);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-18px);
  transition: opacity .42s var(--ease), visibility .42s, transform .42s var(--ease);
}
.mobile-menu.is-open { opacity: 1; visibility: visible; transform: none; }
.mobile-menu nav a {
  display: flex;
  align-items: baseline;
  gap: 18px;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
  font-family: var(--serif);
  font-size: clamp(2.4rem, 11vw, 4.5rem);
  line-height: 1;
}
.mobile-menu__footer { display: flex; justify-content: space-between; gap: 16px; font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; }

/* Hero */
.hero {
  position: relative;
  min-height: max(720px, 100svh);
  overflow: hidden;
  color: var(--white);
  background: #725f55;
}
.hero__media, .hero__veil { position: absolute; inset: 0; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 62% center; transform: scale(1.035); animation: hero-image 1.8s var(--ease) .1s forwards; }
.hero__veil { background: linear-gradient(180deg, rgba(26,17,14,.37) 0%, rgba(26,17,14,.08) 42%, rgba(26,17,14,.58) 100%), linear-gradient(90deg, rgba(26,17,14,.46), transparent 78%); }
.hero__content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: max(720px, 100svh);
  padding: 130px 0 100px;
}
.hero h1 { max-width: 1030px; margin-bottom: 28px; font-size: clamp(3.55rem, 16vw, 7.8rem); }
.hero h1 em { display: inline; }
.hero__intro { max-width: 480px; margin-bottom: 32px; font-family: var(--serif); font-size: clamp(1.25rem, 5vw, 1.7rem); line-height: 1.25; }
.hero__actions { display: flex; flex-direction: column; align-items: flex-start; gap: 26px; }
.hero__aside { display: none; }
.scroll-cue {
  position: absolute;
  z-index: 2;
  right: 20px;
  bottom: 32px;
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: .55rem;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.scroll-cue i { position: relative; display: block; width: 1px; height: 52px; overflow: hidden; background: rgba(255,255,255,.35); }
.scroll-cue i::after { position: absolute; inset: -100% 0 0; content: ""; background: var(--white); animation: scroll-line 2.2s ease-in-out infinite; }
.hero-animate { opacity: 0; transform: translateY(26px); animation: hero-copy .9s var(--ease) forwards; }
.hero .eyebrow { animation-delay: .25s; }
.hero h1 { animation-delay: .38s; }
.hero__intro { animation-delay: .55s; }
.hero__actions { animation-delay: .68s; }
@keyframes hero-copy { to { opacity: 1; transform: none; } }
@keyframes hero-image { to { transform: none; } }
@keyframes scroll-line { 0% { transform: translateY(-100%); } 55%,100% { transform: translateY(100%); } }

/* Introduction */
.intro { overflow: hidden; }
.intro__copy { position: relative; z-index: 2; margin-bottom: 64px; }
.intro__copy p:not(.eyebrow) { max-width: 610px; }
.intro__copy .text-link { margin-top: 18px; }
.intro__visual { position: relative; min-height: 520px; margin-bottom: 90px; }
.intro__image-main { position: absolute; top: 0; right: -20px; width: 84%; height: 440px; }
.intro__image-detail { position: absolute; bottom: 0; left: 0; z-index: 2; width: 46%; height: 210px; border: 8px solid var(--paper); }
.stats { display: grid; grid-template-columns: 1fr 1fr; gap: 32px 22px; padding-top: 40px; border-top: 1px solid var(--line); }
.stat strong { display: block; font-family: var(--serif); font-size: clamp(3rem, 12vw, 5rem); font-weight: 400; line-height: 1; }
.stat strong::before { content: "+"; color: var(--champagne); font-size: .48em; vertical-align: top; }
.stat:nth-child(2) strong::before { content: ""; }
.stat span { display: block; margin-top: 8px; font-size: .63rem; letter-spacing: .1em; text-transform: uppercase; }
.stats__note { grid-column: 1 / -1; margin: 5px 0 0; color: #82746d; font-size: .68rem; }

/* Services */
.section--dark .section-heading > p:last-child { color: rgba(255,255,255,.68); }
.service-category { border-top: 1px solid var(--line-light); }
.service-category:last-child { border-bottom: 1px solid var(--line-light); }
.service-category__toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 22px 0;
  border: 0;
  color: inherit;
  background: transparent;
  cursor: pointer;
}
.service-category__toggle > span { display: flex; align-items: baseline; gap: 18px; font-family: var(--serif); font-size: 2.1rem; }
.service-category__toggle i { font-family: var(--sans); font-size: 1.2rem; font-style: normal; font-weight: 300; }
.service-category__body { padding: 0 0 32px 32px; }
.price-list { margin: 0 0 26px; padding: 0; list-style: none; }
.price-list li { display: flex; justify-content: space-between; gap: 20px; padding: 8px 0; color: rgba(255,255,255,.72); font-size: .75rem; border-bottom: 1px dotted rgba(255,255,255,.13); }
.price-list li span:last-child { flex: 0 0 auto; text-align: right; }
.services__visual { display: none; }
.services__disclaimer { margin: 38px 0 0; color: rgba(255,255,255,.46); font-size: .64rem; }

/* Gallery filters */
.filter-bar { display: flex; gap: 8px; margin: 0 -20px 38px; padding: 0 20px 12px; overflow-x: auto; scrollbar-width: none; }
.filter-bar::-webkit-scrollbar { display: none; }
.filter-button { flex: 0 0 auto; padding: 10px 15px; border: 1px solid var(--line); border-radius: 0; background: transparent; font-size: .65rem; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; transition: color .3s ease, background .3s ease; }
.filter-button.is-active, .filter-button:hover { color: var(--white); background: var(--brown); }
.style-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.gallery-card { position: relative; min-width: 0; min-height: 220px; padding: 0; overflow: hidden; border: 0; background: var(--warm); cursor: zoom-in; }
.gallery-card--tall { grid-row: span 2; }
.gallery-card--wide { grid-column: span 2; min-height: 260px; }
.gallery-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease), filter .4s ease; }
.gallery-card > span { position: absolute; inset: auto 0 0; display: flex; flex-direction: column; align-items: flex-start; padding: 48px 15px 14px; color: var(--white); text-align: left; background: linear-gradient(transparent, rgba(31,22,18,.72)); opacity: 0; transform: translateY(10px); transition: opacity .45s var(--ease), transform .45s var(--ease); }
.gallery-card > span strong { font-family: var(--serif); font-size: 1.35rem; font-weight: 500; line-height: 1.1; }
.gallery-card > span small { font-size: .55rem; letter-spacing: .12em; text-transform: uppercase; }
.gallery-card:hover img, .gallery-card:focus-visible img { transform: scale(1.045); }
.gallery-card:hover > span, .gallery-card:focus-visible > span { opacity: 1; transform: none; }
.gallery-card.is-hidden { display: none; }
.gallery-card.is-filtering { animation: card-in .5s var(--ease); }
@keyframes card-in { from { opacity: 0; transform: translateY(14px); } }

/* Latest */
.latest { padding-top: 30px; }
.editorial-gallery { display: grid; grid-template-columns: 1fr 1fr; gap: 28px 12px; align-items: start; }
.editorial-gallery figure { margin: 0; }
.editorial-gallery img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.editorial-gallery__large { grid-column: span 2; }
.editorial-gallery__large img { aspect-ratio: 4 / 5; }
.editorial-gallery figcaption { margin-top: 9px; font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; }

/* About */
.about { color: var(--white); background: #816d63; }
.about__portrait { position: relative; margin: 0 -20px 70px; }
.about__portrait img { width: 100%; max-height: 720px; object-fit: cover; object-position: center top; }
.about__label { position: absolute; right: 0; bottom: 0; display: flex; flex-direction: column; width: 185px; padding: 20px; color: var(--brown); background: var(--ivory); }
.about__label span { font-size: .56rem; letter-spacing: .13em; text-transform: uppercase; }
.about__label strong { font-family: var(--serif); font-size: 1.65rem; font-weight: 500; }
.about__copy p:not(.eyebrow) { color: rgba(255,255,255,.8); }
.about__copy .lead { color: var(--white) !important; }
.about__copy small { color: rgba(255,255,255,.56); font-size: .65rem; }

/* Values */
.values { padding-bottom: 120px; }
.values__grid { border-top: 1px solid var(--line); }
.value { position: relative; padding: 34px 0; border-bottom: 1px solid var(--line); }
.value h3 { margin: 12px 0 10px; font-size: 2rem; }
.value p { max-width: 440px; margin: 0; color: var(--brown-soft); font-size: .82rem; }

/* Reviews */
.reviews__top { display: grid; grid-template-columns: 1fr auto; gap: 40px 10px; align-items: end; margin-bottom: 48px; }
.reviews__top .section-heading { grid-column: 1 / -1; grid-row: 1; margin: 0; }
.rating { grid-column: 1; grid-row: 2; }
.rating strong { font-family: var(--serif); font-size: 3.5rem; font-weight: 500; line-height: 1; }
.rating > span { font-size: .8rem; }
.rating > div { color: #8f6446; letter-spacing: .15em; }
.rating small { display: block; color: #735f54; font-size: .58rem; }
.slider-controls { display: flex; grid-column: 2; grid-row: 2; gap: 8px; }
.slider-controls button, .lightbox__prev, .lightbox__next, .lightbox__close { display: grid; place-items: center; width: 48px; height: 48px; border: 1px solid rgba(43,33,29,.35); border-radius: 50%; background: transparent; cursor: pointer; transition: color .3s ease, background .3s ease; }
.slider-controls button:hover { color: var(--white); background: var(--brown); }
.reviews-track { display: flex; gap: 14px; margin: 0 -20px; padding: 0 20px 10px; overflow-x: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; scrollbar-width: none; }
.reviews-track::-webkit-scrollbar { display: none; }
.review-card { display: flex; flex: 0 0 min(86vw, 390px); flex-direction: column; justify-content: space-between; min-height: 375px; padding: 30px; border: 1px solid rgba(43,33,29,.2); background: rgba(255,255,255,.22); scroll-snap-align: start; }
.review-card__stars { color: #8f6446; font-size: .7rem; letter-spacing: .15em; }
.review-card blockquote { margin: 45px 0; font-family: var(--serif); font-size: 1.75rem; line-height: 1.25; }
.review-card p { display: flex; flex-direction: column; margin: 0; }
.review-card p strong { font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; }
.review-card p span { color: #755f54; font-size: .63rem; }
.reviews__footer { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; margin-top: 36px; }
.reviews__footer p { max-width: 520px; margin: 0; color: #755f54; font-size: .68rem; }

/* Social */
.social__handle { font-family: var(--serif); font-size: 1.6rem; font-weight: 500; }
.social-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 5px; }
.social-tile { position: relative; aspect-ratio: 1; overflow: hidden; background: var(--warm); }
.social-tile img { width: 100%; height: 100%; object-fit: cover; transition: transform .75s var(--ease), filter .5s ease; }
.social-tile span { position: absolute; inset: 50% auto auto 50%; display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid rgba(255,255,255,.8); border-radius: 50%; color: var(--white); font-size: .63rem; letter-spacing: .08em; background: rgba(43,33,29,.38); opacity: 0; transform: translate(-50%, -40%); transition: opacity .4s ease, transform .4s var(--ease); }
.social-tile:hover img { transform: scale(1.055); filter: brightness(.82); }
.social-tile:hover span { opacity: 1; transform: translate(-50%, -50%); }
.social__actions { display: flex; flex-direction: column; align-items: flex-start; gap: 26px; margin-top: 36px; }

/* Booking CTA */
.booking-cta { position: relative; min-height: 680px; overflow: hidden; color: var(--white); background: #766159; }
.booking-cta__media, .booking-cta__veil { position: absolute; inset: 0; }
.booking-cta__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.booking-cta__veil { background: linear-gradient(90deg, rgba(31,22,18,.75), rgba(31,22,18,.18)), linear-gradient(0deg, rgba(31,22,18,.35), transparent); }
.booking-cta__content { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: center; min-height: 680px; padding-block: 100px; }
.booking-cta h2 { max-width: 930px; }
.booking-cta__content > p:not(.eyebrow) { max-width: 480px; font-family: var(--serif); font-size: 1.45rem; line-height: 1.35; }
.booking-cta__actions { display: flex; flex-direction: column; align-items: flex-start; gap: 28px; margin-top: 20px; }

/* Visit */
.visit__content address { display: flex; flex-direction: column; gap: 8px; margin-bottom: 24px; }
.visit__content address strong { font-size: .68rem; letter-spacing: .16em; }
.visit__content address span { font-family: var(--serif); font-size: 1.45rem; line-height: 1.35; }
.visit__contacts { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; margin-bottom: 32px; font-size: .78rem; }
.visit__contacts a { border-bottom: 1px solid transparent; }
.visit__contacts a:hover { border-color: currentColor; }
.visit__contacts span { margin-left: 10px; }
.visit__buttons { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.visit__content > small { display: block; color: #80716a; font-size: .6rem; }
.hours { margin: 65px 0; padding: 35px 0; border-block: 1px solid var(--line); }
.hours h3 { margin-bottom: 28px; font-size: 2rem; }
.hours dl { margin: 0; }
.hours dl div { display: flex; justify-content: space-between; gap: 20px; padding: 7px 0; font-size: .76rem; }
.hours dd { margin: 0; }
.hours > p { margin: 24px 0 0; font-size: .64rem; letter-spacing: .08em; text-transform: uppercase; }
.status-dot { display: inline-block; width: 7px; height: 7px; margin-right: 9px; border-radius: 50%; background: #6e8f62; box-shadow: 0 0 0 4px rgba(110,143,98,.15); }
.map-placeholder { position: relative; min-height: 430px; overflow: hidden; color: var(--white); background: #88756b; }
.map-placeholder iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.map-placeholder__art { position: absolute; inset: 0; overflow: hidden; opacity: .65; }
.map-placeholder__art::before, .map-placeholder__art::after { position: absolute; content: ""; border: 1px solid rgba(255,255,255,.23); border-radius: 50%; }
.map-placeholder__art::before { width: 440px; height: 440px; top: -170px; left: -100px; }
.map-placeholder__art::after { width: 360px; height: 360px; right: -100px; bottom: -130px; }
.map-road { position: absolute; width: 150%; height: 2px; background: rgba(255,255,255,.28); transform-origin: left; }
.map-road--one { top: 25%; left: -10%; transform: rotate(32deg); }
.map-road--two { top: 75%; left: -18%; transform: rotate(-18deg); }
.map-placeholder__art i { position: absolute; top: 43%; left: 52%; width: 18px; height: 18px; border: 5px solid var(--ivory); border-radius: 50% 50% 50% 0; transform: rotate(-45deg); }
.map-placeholder__content { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 430px; padding: 30px; text-align: center; }
.map-placeholder__content > span { margin-bottom: 18px; font-family: var(--serif); font-size: 2rem; }
.map-placeholder__content small { margin-top: 12px; font-size: .58rem; }

/* FAQ */
.faq__intro { margin-bottom: 58px; }
.faq__intro > p:not(.eyebrow) { max-width: 420px; color: var(--brown-soft); }
.faq-item { border-top: 1px solid var(--line); }
.faq-item:last-child { border-bottom: 1px solid var(--line); }
.faq-item h3 { margin: 0; }
.faq-item h3 button { display: flex; align-items: center; justify-content: space-between; gap: 24px; width: 100%; min-height: 76px; padding: 16px 0; border: 0; background: transparent; font-family: var(--sans); font-size: .82rem; font-weight: 500; line-height: 1.4; text-align: left; cursor: pointer; }
.faq-item h3 i { flex: 0 0 auto; font-size: 1.1rem; font-style: normal; font-weight: 300; }
.faq-answer { overflow: hidden; }
.faq-answer p { max-width: 640px; margin: 0; padding: 0 38px 26px 0; color: var(--brown-soft); font-size: .78rem; }

/* Contact */
.contact__intro > p:not(.eyebrow) { max-width: 520px; color: var(--brown-soft); }
.contact__aside { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; margin: 38px 0 55px; padding-left: 18px; border-left: 2px solid var(--nude); }
.contact__aside span { color: #85746c; font-size: .62rem; }
.contact__aside a { font-family: var(--serif); font-size: 1.3rem; }
.form-row { display: grid; gap: 26px; }
.field { margin-bottom: 26px; }
.field label { display: block; margin-bottom: 7px; font-size: .65rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.field label span { color: #8b7a72; font-size: .58rem; font-weight: 400; text-transform: none; }
.field input, .field textarea { display: block; width: 100%; padding: 12px 0; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; color: var(--brown); background: transparent; transition: border-color .3s ease; }
.field textarea { min-height: 130px; resize: vertical; }
.field input:focus, .field textarea:focus { outline: 0; border-color: var(--brown); }
.field input[aria-invalid="true"], .field textarea[aria-invalid="true"] { border-color: #9f443e; }
.field-error { display: block; min-height: 16px; color: #8d332f; font-size: .62rem; }
.field-error--consent { margin: 5px 0 16px; }
.checkbox-field { display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: start; color: var(--brown-soft); font-size: .65rem; cursor: pointer; }
.checkbox-field input { width: 17px; height: 17px; margin: 3px 0 0; accent-color: var(--brown); }
.contact-form .button { width: 100%; }
.form-success { display: flex; flex-direction: column; margin-top: 22px; padding: 20px; border-left: 3px solid #6e8f62; background: rgba(110,143,98,.1); }
.form-success[hidden] { display: none; }
.form-success:not([hidden]) { animation: form-success-in .38s var(--ease) both; }
.form-success strong { font-family: var(--serif); font-size: 1.4rem; }
.form-success span { font-size: .67rem; }
@keyframes form-success-in { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }

/* Footer */
.site-footer { padding: 80px 0 92px; color: rgba(255,255,255,.68); background: #241b18; }
.footer__top { display: flex; flex-direction: column; align-items: flex-start; gap: 30px; padding-bottom: 55px; border-bottom: 1px solid var(--line-light); }
.brand--footer { align-items: flex-start; color: var(--white); }
.brand--footer .brand-name { font-size: 2.6rem; }
.footer__top p { max-width: 390px; margin: 0; font-family: var(--serif); font-size: 1.5rem; line-height: 1.3; }
.footer__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 45px 24px; padding-block: 55px; }
.footer__grid h2 { margin-bottom: 16px; color: var(--white); font-family: var(--sans); font-size: .6rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.footer__grid a { display: block; width: fit-content; margin: 6px 0; font-size: .7rem; }
.footer__grid a:hover { color: var(--white); }
.footer__grid p { margin: 0 0 8px; font-size: .7rem; }
.footer__bottom { display: flex; flex-direction: column; gap: 12px; padding-top: 24px; border-top: 1px solid var(--line-light); font-size: .57rem; letter-spacing: .04em; }
.footer__bottom > span:nth-child(2) { display: flex; flex-wrap: wrap; gap: 18px; }
.footer__bottom a { color: var(--white); border-bottom: 1px solid rgba(255,255,255,.25); }

/* Lightbox — visionneuse premium, légère et contextuelle */
.lightbox {
  position: fixed;
  z-index: 3000;
  inset: 0;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) 44px;
  place-items: center;
  padding: 56px 8px 20px;
  color: var(--ivory);
  background: rgba(43, 33, 29, .76);
  backdrop-filter: blur(4px);
  opacity: 0;
  visibility: hidden;
  transition: opacity .38s var(--ease), visibility .38s;
}
.lightbox.is-open { opacity: 1; visibility: visible; }
.lightbox figure {
  grid-column: 2;
  grid-row: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: calc(100svh - 76px);
  margin: 0;
  pointer-events: none;
}
.lightbox figure img {
  max-width: 100%;
  max-height: calc(100svh - 128px);
  border-radius: 5px 24px 5px 24px;
  object-fit: contain;
  box-shadow: 0 24px 70px rgba(18, 12, 10, .3);
  opacity: 0;
  pointer-events: auto;
  transform: translateY(10px) scale(.985);
  transition: opacity .34s var(--ease), transform .42s var(--ease);
}
.lightbox.is-open figure img { opacity: 1; transform: none; }
.lightbox figure img.is-switching { opacity: 0; transform: translateX(var(--lightbox-shift, 8px)) scale(.99); }
.lightbox figcaption {
  margin-top: 12px;
  padding: 6px 13px;
  border-radius: 999px;
  color: rgba(255,255,255,.86);
  background: rgba(248,244,238,.1);
  font-family: var(--serif);
  font-size: 1.05rem;
  line-height: 1.2;
  pointer-events: auto;
}
.lightbox__prev, .lightbox__next {
  grid-row: 1;
  width: 40px;
  height: 68px;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 999px;
  color: var(--white);
  background: rgba(248,244,238,.08);
  box-shadow: none;
  font-size: 1rem;
  cursor: pointer;
  transition: color .3s ease, background .3s ease, transform .3s var(--ease);
}
.lightbox__prev { grid-column: 1; }
.lightbox__next { grid-column: 3; }
.lightbox__prev:hover, .lightbox__next:hover { color: var(--brown); background: var(--ivory); transform: scale(1.04); }
.lightbox__close {
  position: absolute;
  z-index: 2;
  top: 10px;
  right: 10px;
  width: 46px;
  height: 46px;
  border: 0;
  border-radius: 999px;
  color: var(--white);
  background: rgba(248,244,238,.1);
  box-shadow: none;
  font-size: 1.45rem;
  cursor: pointer;
  transition: color .3s ease, background .3s ease, transform .3s var(--ease);
}
.lightbox__close:hover { color: var(--brown); background: var(--ivory); transform: rotate(6deg); }

/* Reveal system */
.js .reveal { opacity: 0; transform: translateY(28px); transition: opacity .9s var(--ease), transform .9s var(--ease); }
.js .reveal.is-visible { opacity: 1; transform: none; }

/* Legal pages */
.legal-page { background: var(--ivory); }
.legal-page .site-header { color: var(--brown); background: rgba(248,244,238,.96); box-shadow: 0 1px 0 var(--line); }
.legal-back { font-size: .62rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.legal-back span { margin-right: 10px; transition: transform .3s ease; }
.legal-back:hover span { transform: translateX(-3px); }
.legal-main { min-height: 75vh; padding: 155px 0 110px; }
.legal-hero { max-width: 880px; margin-bottom: 70px; }
.legal-hero h1 { margin-bottom: 20px; font-size: clamp(3.5rem, 13vw, 7rem); }
.legal-hero p { max-width: 620px; color: var(--brown-soft); }
.legal-notice { margin-bottom: 45px; padding: 18px 20px; border-left: 3px solid var(--champagne); background: var(--warm); font-size: .75rem; }
.legal-content { max-width: 850px; }
.legal-content section { padding: 30px 0; border-top: 1px solid var(--line); }
.legal-content h2 { margin-bottom: 15px; font-family: var(--serif); font-size: 2rem; }
.legal-content h3 { margin: 24px 0 8px; font-family: var(--sans); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }
.legal-content p, .legal-content li { color: var(--brown-soft); font-size: .78rem; }
.legal-content a { border-bottom: 1px solid currentColor; }

@media (min-width: 560px) {
  .page-width { width: min(100% - 64px, 1420px); }
  .nav-shell { width: min(100% - 48px, 1540px); }
  .intro__image-main { right: 0; }
  .intro__image-detail { left: 15px; }
  .about__portrait { margin-inline: 0; }
  .form-row { grid-template-columns: 1fr 1fr; }
  .social-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (min-width: 768px) {
  body { font-size: 16px; }
  .section-heading--split { display: flex; align-items: flex-end; justify-content: space-between; gap: 60px; }
  .section-heading--split > p:last-child, .section-heading--split > div:last-child { max-width: 440px; margin-bottom: 15px; }
  .hero__content { padding-bottom: 120px; }
  .hero__actions, .booking-cta__actions, .social__actions { flex-direction: row; align-items: center; }
  .intro__grid { display: grid; grid-template-columns: .95fr 1.05fr; gap: 7vw; align-items: center; }
  .intro__copy { margin-bottom: 0; }
  .intro__visual { min-height: 680px; margin-bottom: 0; }
  .intro__image-main { width: 87%; height: 600px; }
  .intro__image-detail { width: 46%; height: 270px; }
  .stats { grid-template-columns: repeat(3, 1fr); margin-top: 110px; }
  .stats__note { grid-column: 1 / -1; }
  .service-category__toggle { padding: 27px 0; }
  .style-grid { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 260px; gap: 16px; }
  .gallery-card { min-height: 0; }
  .gallery-card--wide { grid-column: span 2; }
  .editorial-gallery { grid-template-columns: 1.5fr 1fr 1fr; gap: 38px 18px; }
  .editorial-gallery__large { grid-column: auto; grid-row: span 2; }
  .editorial-gallery__large img { aspect-ratio: 3 / 4; }
  .about__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8vw; align-items: center; }
  .about__portrait { margin-bottom: 0; }
  .values__grid { display: grid; grid-template-columns: 1fr 1fr; }
  .value { padding: 42px 35px 42px 0; }
  .value:nth-child(even) { padding-inline: 35px 0; border-left: 1px solid var(--line); }
  .reviews__top { grid-template-columns: 200px 1fr auto; align-items: end; }
  .reviews__top .section-heading { grid-column: 2; grid-row: 1; }
  .rating { grid-column: 1; grid-row: 1; }
  .slider-controls { grid-column: 3; grid-row: 1; }
  .review-card { flex-basis: min(44vw, 460px); }
  .reviews__footer { flex-direction: row; align-items: center; justify-content: space-between; }
  .visit__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 70px; }
  .hours { margin: 0; align-self: end; }
  .map-placeholder { grid-column: 1 / -1; min-height: 520px; }
  .map-placeholder__content { min-height: 520px; }
  .faq__grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: 9vw; align-items: start; }
  .faq__intro { position: sticky; top: 140px; margin-bottom: 0; }
  .contact__grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 10vw; }
  .contact__aside { margin-bottom: 0; }
  .footer__top { flex-direction: row; align-items: center; justify-content: space-between; }
  .footer__grid { grid-template-columns: repeat(4, 1fr); }
  .footer__bottom { flex-direction: row; justify-content: space-between; }
  .lightbox { grid-template-columns: 80px 1fr 80px; padding: 40px; }
}

@media (min-width: 1080px) {
  :root { --header-height: 112px; }
  .demo-note { height: 25px; line-height: 25px; }
  .nav-shell { height: 86px; }
  .brand { align-items: flex-start; }
  .brand-name { font-size: 1.85rem; }
  .desktop-nav { display: flex; align-items: center; gap: clamp(20px, 2.2vw, 38px); }
  .desktop-nav a { position: relative; padding-block: 10px; font-size: .63rem; font-weight: 500; letter-spacing: .09em; text-transform: uppercase; }
  .desktop-nav a::after { position: absolute; right: 0; bottom: 4px; left: 0; height: 1px; content: ""; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .4s var(--ease); }
  .desktop-nav a:hover::after { transform: scaleX(1); transform-origin: left; }
  .button--header { display: inline-flex; min-height: 43px; padding: 12px 18px; border-color: currentColor; color: inherit; background: transparent; }
  .site-header:not(.is-scrolled) .button--header:hover { color: var(--brown); background: var(--white); }
  .site-header.is-scrolled .button--header:hover { color: var(--white); background: var(--brown); }
  .menu-toggle, .mobile-menu { display: none; }
  .hero__media img { object-position: center 56%; }
  .hero__content { justify-content: center; padding-top: 160px; padding-bottom: 90px; }
  .hero h1 { max-width: 1180px; font-size: clamp(5.8rem, 8vw, 8.6rem); }
  .hero__aside { position: absolute; z-index: 1; top: 50%; right: 32px; display: block; font-size: .55rem; letter-spacing: .16em; text-transform: uppercase; transform: rotate(90deg) translateX(50%); transform-origin: right center; }
  .scroll-cue { right: 50%; bottom: 20px; flex-direction: column; transform: translateX(50%); }
  .intro__grid { grid-template-columns: .85fr 1.15fr; }
  .intro__image-main { width: 78%; height: 680px; }
  .intro__image-detail { width: 44%; height: 310px; }
  .services__layout { display: grid; grid-template-columns: 1.05fr .95fr; gap: 9vw; align-items: start; }
  .services__visual { position: sticky; top: 145px; display: block; }
  .services__image-wrap { height: min(67vh, 760px); overflow: hidden; background: #4e403a; }
  .services__image-wrap img { width: 100%; height: 100%; object-fit: cover; transition: opacity .35s ease, transform .7s var(--ease); }
  .services__image-wrap img.is-changing { opacity: .2; transform: scale(1.025); }
  .services__visual > span { display: block; margin-top: 12px; color: rgba(255,255,255,.48); font-family: var(--serif); font-size: 1.1rem; font-style: italic; text-align: right; }
  .service-category__toggle:hover { color: var(--nude); }
  .style-grid { grid-auto-rows: 330px; }
  .gallery-card > span { padding: 80px 24px 22px; }
  .gallery-card > span strong { font-size: 1.65rem; }
  .about__grid { grid-template-columns: 1.05fr .95fr; }
  .about__portrait img { min-height: 760px; }
  .values__grid { grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid var(--line); }
  .value, .value:nth-child(even) { min-height: 280px; padding: 42px 30px; border-right: 1px solid var(--line); border-bottom: 0; border-left: 0; }
  .value:first-child { padding-left: 0; }
  .value:last-child { padding-right: 0; border-right: 0; }
  .review-card { flex-basis: calc((100% - 28px) / 3); }
  .reviews-track { margin: 0; padding-inline: 0; }
  .social-grid { grid-template-columns: repeat(6, 1fr); gap: 8px; }
  .visit__grid { grid-template-columns: .72fr .58fr 1.25fr; gap: 55px; align-items: end; }
  .hours { align-self: end; }
  .map-placeholder { grid-column: 3; grid-row: 1; min-height: 600px; }
  .map-placeholder__content { min-height: 600px; }
  .contact__grid { grid-template-columns: 1fr 1fr; }
  .contact-form .button { width: auto; }
  .site-footer { padding-bottom: 34px; }
}

@media (min-width: 1500px) {
  .page-width { width: min(100% - 9vw, 1520px); }
  .hero h1 { font-size: 8.8rem; }
  .section { padding-block: 180px; }
  .style-grid { grid-auto-rows: 380px; }
}

@media (max-width: 374px) {
  h2 { font-size: 2.85rem; }
  .hero h1 { font-size: 3.05rem; }
  .page-width { width: calc(100% - 32px); }
  .gallery-card { min-height: 190px; }
  .style-grid { gap: 8px; }
  .review-card { flex-basis: 88vw; padding: 25px; }
  .review-card blockquote { font-size: 1.55rem; }
  .footer__grid { grid-template-columns: 1fr; }
}

@media (hover: none) {
  .gallery-card > span { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
  .js .reveal { opacity: 1; transform: none; }
}

/* ========================================================================== 
   V2 — Lunea comme espace : pierre, lumière, courbes et profondeur.
   Les règles ci-dessous affinent la DA sans modifier l'architecture V1.
   ========================================================================== */
:root {
  --stone: #d8d0c5;
  --greige: #b7aa9e;
  --taupe: #8f7d73;
  --cacao: #392a25;
  --sand: #ece4da;
  --header-height: 84px;
  --shadow-soft: 0 22px 70px rgba(67, 50, 42, .11);
}

body {
  background:
    radial-gradient(circle at 12% 18%, rgba(185, 154, 111, .07), transparent 23rem),
    var(--paper);
}

.section { position: relative; padding-block: clamp(82px, 12vw, 180px); }
.section h2 { text-wrap: balance; }

.button {
  min-height: 52px;
  padding: 15px 25px;
  border-radius: 999px;
  box-shadow: 0 8px 26px rgba(43, 33, 29, .08);
  letter-spacing: .09em;
}
.button::before {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  content: "";
  background: rgba(255,255,255,.09);
  opacity: 0;
  transform: scale(.82);
  transition: opacity .4s var(--ease), transform .4s var(--ease);
}
.button:hover::before { opacity: 1; transform: scale(1); }
.button--dark { background: var(--cacao); }
.button--dark:hover { color: var(--cacao); background: #d9c7ba; }
.button--outline { border-color: rgba(57,42,37,.42); background: rgba(255,255,255,.16); box-shadow: none; }
.button--light { box-shadow: 0 12px 38px rgba(33,23,19,.16); }
.text-link { border: 0; }
.text-link::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 1px;
  content: "";
  background: currentColor;
  transform: scaleX(.26);
  transform-origin: left;
  transition: transform .45s var(--ease);
}
.text-link { position: relative; }
.text-link:hover::after { transform: scaleX(1); }

/* Header mobile réellement centré */
.site-header { color: var(--brown); }
.demo-note {
  height: 19px;
  border-color: rgba(43,33,29,.1);
  color: rgba(43,33,29,.58);
  font-size: .47rem;
  line-height: 19px;
  letter-spacing: .13em;
  background: rgba(248,244,238,.48);
}
.nav-shell { position: relative; height: 65px; }
.nav-shell > .brand {
  position: absolute;
  top: 50%;
  left: 50%;
  align-items: center;
  transform: translate(-50%, -50%);
}
.brand-name { font-size: 1.72rem; }
.menu-toggle { position: absolute; top: 50%; right: -7px; transform: translateY(-50%); }
.menu-toggle span { transition: top .48s var(--ease), transform .48s var(--ease), width .48s var(--ease); }

.mobile-menu {
  inset: 84px 0 0;
  display: grid;
  grid-template-rows: 1fr auto auto;
  gap: 26px;
  padding: clamp(24px, 7vh, 58px) 24px 28px;
  overflow-x: hidden;
  overflow-y: auto;
  background:
    radial-gradient(circle at 87% 12%, rgba(185,154,111,.25), transparent 13rem),
    radial-gradient(circle at 4% 95%, rgba(143,125,115,.16), transparent 16rem),
    #f3ece3;
  clip-path: inset(0 0 100% 0 round 0 0 36px 36px);
  opacity: 1;
  transform: none;
  transition: clip-path .7s var(--ease), visibility .7s;
}
.mobile-menu::before {
  position: absolute;
  top: 8%;
  right: -45px;
  width: 150px;
  height: 210px;
  border: 1px solid rgba(143,125,115,.22);
  border-radius: 50%;
  content: "";
  transform: rotate(24deg);
}
.mobile-menu.is-open { clip-path: inset(0 round 0); }
.mobile-menu nav { align-self: center; }
.mobile-menu nav a {
  width: fit-content;
  padding: 6px 0;
  border: 0;
  font-size: clamp(2.65rem, 13vw, 4.9rem);
  opacity: 0;
  transform: translateY(30px);
  transition: opacity .55s var(--ease), transform .55s var(--ease), color .3s ease;
}
.mobile-menu nav a:hover { color: var(--taupe); }
.mobile-menu.is-open nav a { opacity: 1; transform: none; }
.mobile-menu.is-open nav a:nth-child(1) { transition-delay: .12s; }
.mobile-menu.is-open nav a:nth-child(2) { transition-delay: .17s; }
.mobile-menu.is-open nav a:nth-child(3) { transition-delay: .22s; }
.mobile-menu.is-open nav a:nth-child(4) { transition-delay: .27s; }
.mobile-menu.is-open nav a:nth-child(5) { transition-delay: .32s; }
.mobile-menu.is-open nav a:nth-child(6) { transition-delay: .37s; }
.mobile-menu__booking {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: 54px;
  padding: 0 21px;
  border-radius: 999px;
  color: var(--white);
  background: var(--cacao);
  font-size: .65rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .5s var(--ease) .42s, transform .5s var(--ease) .42s;
}
.mobile-menu.is-open .mobile-menu__booking { opacity: 1; transform: none; }
.mobile-menu__booking span { font-size: 1rem; }
.mobile-menu__footer {
  padding-top: 17px;
  border-top: 1px solid rgba(43,33,29,.13);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .5s var(--ease) .48s, transform .5s var(--ease) .48s;
}
.mobile-menu.is-open .mobile-menu__footer { opacity: 1; transform: none; }

/* Hero mobile composé comme une couverture spatiale, pas comme un fond plein écran */
.hero {
  min-height: max(780px, 100svh);
  overflow: hidden;
  color: var(--brown);
  background:
    radial-gradient(circle at 96% 82%, rgba(185,154,111,.16), transparent 15rem),
    var(--ivory);
}
.hero__media {
  inset: 106px 20px auto;
  height: clamp(330px, 45svh, 400px);
  overflow: hidden;
  border-radius: 76px 10px 88px 10px;
  box-shadow: var(--shadow-soft);
  clip-path: inset(0 100% 0 0 round 76px 10px 88px 10px);
  animation: hero-mask 1.25s var(--ease) .08s forwards;
}
.hero__media img { object-position: 56% center; animation: hero-image-v2 1.55s var(--ease) .08s both; }
.hero__veil {
  inset: 106px 20px auto;
  height: clamp(330px, 45svh, 400px);
  border-radius: 76px 10px 88px 10px;
  background: linear-gradient(180deg, rgba(28,19,16,.1), rgba(28,19,16,.26));
  pointer-events: none;
}
.hero__detail {
  position: absolute;
  z-index: 3;
  top: clamp(342px, 43svh, 390px);
  right: 6px;
  width: 108px;
  height: 142px;
  margin: 0;
  overflow: hidden;
  border: 6px solid var(--ivory);
  border-radius: 54px 8px 54px 8px;
  box-shadow: 0 16px 40px rgba(55,39,31,.18);
  opacity: 0;
  transform: translate(22px, 18px) rotate(3deg);
  animation: hero-detail .85s var(--ease) .7s forwards;
}
.hero__detail img { width: 100%; height: 100%; object-fit: cover; }
.hero__stone {
  position: absolute;
  z-index: 0;
  right: -70px;
  bottom: 15px;
  width: 185px;
  height: 145px;
  border: 1px solid rgba(143,125,115,.18);
  border-radius: 55% 45% 39% 61% / 59% 37% 63% 41%;
  transform: rotate(-16deg);
}
.hero__content {
  min-height: max(780px, 100svh);
  justify-content: flex-start;
  padding: calc(76px + clamp(330px, 45svh, 400px)) 0 38px;
}
.hero .eyebrow { margin-bottom: 13px; color: rgba(43,33,29,.72); }
.hero h1 {
  max-width: 350px;
  margin: 0 0 19px -2px;
  font-size: clamp(3.05rem, 13.5vw, 4.05rem);
  text-shadow: 0 1px 0 rgba(255,255,255,.32);
}
.hero h1 em { color: #765f54; }
.hero__intro { max-width: 320px; margin-bottom: 16px; color: var(--brown-soft); font-size: 1.1rem; }
.hero .button--light { color: var(--white); background: var(--cacao); }
.hero .text-link--light { color: var(--brown); }
.hero__actions { gap: 14px; }
.scroll-cue { display: none; }
@keyframes hero-mask { to { clip-path: inset(0 round 76px 10px 88px 10px); } }
@keyframes hero-image-v2 { from { transform: scale(1.1); } to { transform: scale(1.01); } }
@keyframes hero-detail { to { opacity: 1; transform: rotate(3deg); } }

/* Transitions et matière */
.intro {
  z-index: 2;
  margin-top: -18px;
  overflow: hidden;
  border-radius: 30px 30px 0 0;
  background:
    linear-gradient(115deg, rgba(255,255,255,.82), transparent 38%),
    var(--paper);
  box-shadow: 0 -20px 45px rgba(65,48,40,.05);
}
.intro::before, .values::before {
  position: absolute;
  inset: 0;
  content: "";
  pointer-events: none;
  opacity: .25;
  background-image: repeating-linear-gradient(115deg, rgba(75,56,47,.025) 0, rgba(75,56,47,.025) 1px, transparent 1px, transparent 6px);
}
.intro__visual { min-height: 470px; }
.intro__image-main { right: -8px; width: 86%; height: 375px; border-radius: 8px 72px 8px 72px; }
.intro__image-detail { width: 43%; height: 170px; border: 7px solid var(--paper); border-radius: 46px 6px 46px 6px; box-shadow: var(--shadow-soft); }
.stats { gap: 18px 12px; padding: 20px; border: 0; border-radius: 18px 4px 18px 4px; background: rgba(236,228,218,.65); }
.stat strong { font-size: clamp(2.8rem, 11vw, 5rem); }

.section--dark {
  overflow: hidden;
  background:
    radial-gradient(ellipse at 90% 10%, rgba(185,154,111,.18), transparent 32rem),
    radial-gradient(ellipse at -8% 92%, rgba(143,125,115,.2), transparent 27rem),
    var(--cacao);
}
.section--dark::before {
  position: absolute;
  top: 6%;
  right: -110px;
  width: 270px;
  height: 380px;
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 50%;
  content: "";
  transform: rotate(22deg);
}
.service-category { margin-bottom: 8px; padding-inline: 17px; border: 0; border-radius: 16px 3px 16px 3px; background: rgba(255,255,255,.025); transition: background .4s ease, transform .4s var(--ease); }
.service-category:last-child { border: 0; }
.service-category.is-active { background: rgba(255,255,255,.075); }
.service-category__toggle { padding: 18px 0; }
.service-category__toggle > span { gap: 0; font-size: 2.1rem; }
.service-category__body { padding: 0 0 26px; }
.price-list li { padding: 7px 0; border-bottom-color: rgba(255,255,255,.08); }

.style-finder {
  overflow: hidden;
  background:
    radial-gradient(circle at -5% 24%, rgba(201,169,157,.13), transparent 19rem),
    var(--paper);
}
.filter-bar {
  flex-wrap: wrap;
  justify-content: center;
  gap: 7px;
  margin: 0 0 36px;
  padding: 0;
  overflow: visible;
}
.filter-button { min-height: 40px; padding: 9px 14px; border-color: rgba(43,33,29,.14); border-radius: 999px; background: rgba(255,255,255,.68); transition: color .35s ease, background .35s ease, transform .35s var(--ease); }
.filter-button:active { transform: scale(.96); }
.filter-button.is-active, .filter-button:hover { background: var(--cacao); }
.style-grid { grid-template-rows: none; grid-auto-flow: dense; grid-auto-rows: 96px; gap: 9px; }
.gallery-card { grid-row: span 2; height: 100%; min-height: 0; border-radius: 16px 3px 16px 3px; box-shadow: 0 12px 38px rgba(64,47,39,.08); }
.gallery-card--tall { grid-row: auto; }
.gallery-card--tall:first-child { grid-column: 1 / -1; grid-row: span 3; min-height: 0; }
.gallery-card--wide { grid-row: span 2; min-height: 0; border-radius: 3px 22px 3px 22px; }
.gallery-card:nth-child(3n) { border-radius: 3px 20px 3px 20px; }

.latest { padding-top: 36px; }
.editorial-gallery { gap: 20px 9px; }
.editorial-gallery figure { display: grid; grid-template-rows: minmax(0, 1fr) auto; height: 225px; }
.editorial-gallery__large { height: min(76vw, 300px) !important; }
.editorial-gallery figure img { width: 100%; height: 100%; min-height: 0; object-fit: cover; }
.editorial-gallery__large img { aspect-ratio: auto; border-radius: 8px 42px 8px 42px; }
.editorial-gallery figure:not(.editorial-gallery__large) img { aspect-ratio: auto; border-radius: 18px 3px 18px 3px; }

/* Fondatrice : portrait plus court, sans signature manuscrite */
.about {
  overflow: hidden;
  background:
    radial-gradient(circle at 100% 0, rgba(237,219,204,.22), transparent 24rem),
    #74635a;
}
.about::after {
  position: absolute;
  right: -95px;
  bottom: -100px;
  width: 300px;
  height: 300px;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 41% 59% 50% 50% / 52% 38% 62% 48%;
  content: "";
}
.about__portrait { width: 92%; height: min(108vw, 480px); margin: 0 0 64px; }
.about__portrait img { width: 100%; height: 100%; max-height: none; aspect-ratio: auto; border-radius: 6px 72px 6px 72px; object-fit: cover; box-shadow: 0 28px 70px rgba(39,28,23,.2); }
.about__label { right: -9%; bottom: -28px; width: 176px; padding: 17px 20px; border-radius: 18px 3px 18px 3px; box-shadow: var(--shadow-soft); }
.about__copy { position: relative; }
.about__quote { margin: 30px 0 22px; padding-left: 17px; border-left: 1px solid rgba(255,255,255,.36); font-family: var(--serif); font-size: 1.35rem; line-height: 1.3; }

/* Réassurance organique, sans numérotation */
.values { overflow: hidden; background: #eee8df; }
.values__grid { display: grid; gap: 13px; border: 0; }
.value {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  width: 92%;
  min-height: 190px;
  padding: 30px 27px;
  border: 0;
  border-radius: 24px 5px 24px 5px;
  background: rgba(255,253,249,.78);
  box-shadow: 0 16px 48px rgba(67,50,42,.07);
}
.value:nth-child(even) { margin-left: 8%; border: 0; border-radius: 5px 28px 5px 28px; background: rgba(216,208,197,.5); }
.value h3 { font-size: 2.15rem; }

/* Avis plus proches d'un salon de lecture que de cartes UI */
.testimonials {
  overflow: hidden;
  background:
    radial-gradient(circle at 92% 12%, rgba(255,255,255,.24), transparent 18rem),
    #d8c6ba;
}
.review-card {
  position: relative;
  flex-basis: min(88vw, 390px);
  min-height: 325px;
  padding: 32px 22px 24px 34px;
  border: 0;
  border-left: 1px solid rgba(57,42,37,.26);
  background: transparent;
}
.review-card::before {
  position: absolute;
  top: 0;
  left: 18px;
  color: rgba(57,42,37,.15);
  content: "“";
  font-family: var(--serif);
  font-size: 7rem;
  line-height: .8;
}
.review-card blockquote { position: relative; margin: 62px 0 34px; font-size: 1.72rem; }
.review-card__stars { color: rgba(91,62,47,.72); font-size: .58rem; }
.slider-controls button { border-color: rgba(57,42,37,.24); background: rgba(255,255,255,.18); }

.social-tile { border-radius: 14px 3px 14px 3px; }
.social-tile:nth-child(3n + 2) { border-radius: 3px 20px 3px 20px; }

.booking-cta { min-height: 620px; margin-inline: 10px; border-radius: 30px 8px 30px 8px; box-shadow: var(--shadow-soft); }
.booking-cta__content { min-height: 620px; }
.booking-cta__media img { object-position: 62% center; }

.map-placeholder { min-height: 360px; border-radius: 8px 52px 8px 52px; box-shadow: var(--shadow-soft); }
.map-placeholder__content { min-height: 360px; }
.hours { padding: 30px; border: 0; border-radius: 22px 4px 22px 4px; background: var(--sand); }

.faq-item { margin-bottom: 8px; padding-inline: 17px; border: 0; border-radius: 14px 3px 14px 3px; background: rgba(255,255,255,.5); }
.faq-item:last-child { border: 0; }
.faq-item h3 button { min-height: 70px; }
.contact-form { padding: 26px 20px; border-radius: 24px 5px 24px 5px; background: rgba(238,229,218,.48); }
.site-footer { position: relative; margin-top: -1px; border-radius: 34px 34px 0 0; }

/* Révélations par masque sur les surfaces visuelles */
.js .intro__visual.reveal .image-frame,
.js figure.reveal img,
.js .gallery-card.reveal,
.js .about__portrait.reveal img,
.js .social-tile.reveal {
  clip-path: inset(0 0 14% 0 round 18px);
  transform: scale(.97);
  transition: clip-path 1s var(--ease), transform 1s var(--ease), opacity .8s var(--ease);
}
.js .intro__visual.reveal.is-visible .image-frame,
.js figure.reveal.is-visible img,
.js .gallery-card.reveal.is-visible,
.js .about__portrait.reveal.is-visible img,
.js .social-tile.reveal.is-visible {
  clip-path: inset(0 round 0);
  transform: scale(1);
}

/* Les pages légales gardent un header calme et lisible. */
.legal-page .nav-shell > .brand { position: static; align-items: flex-start; transform: none; }

@media (min-width: 768px) {
  :root { --header-height: 92px; }
  .intro__visual { min-height: 620px; }
  .intro__image-main { height: 540px; }
  .intro__image-detail { height: 240px; }
  .style-grid { grid-template-rows: none; grid-auto-flow: row; grid-auto-rows: 250px; }
  .gallery-card { grid-row: auto; }
  .gallery-card--tall, .gallery-card--tall:first-child { grid-row: span 2; grid-column: auto; min-height: 0; }
  .editorial-gallery { grid-template-columns: 1.4fr 1fr; grid-template-rows: 300px 300px; }
  .editorial-gallery figure { height: 300px; }
  .editorial-gallery__large { grid-column: 1; grid-row: 1 / span 2; height: 638px !important; }
  .editorial-gallery figure:nth-child(2) { grid-column: 2; grid-row: 1; }
  .editorial-gallery figure:nth-child(3) { grid-column: 2; grid-row: 2; }
  .about__portrait { width: 100%; height: min(74vw, 70svh, 680px); margin-bottom: 0; }
  .values__grid { grid-template-columns: 1fr 1fr; }
  .value, .value:nth-child(even) { width: 100%; min-height: 220px; margin: 0; padding: 32px; }
  .review-card { flex-basis: min(43vw, 460px); }
  .booking-cta { margin-inline: 20px; }
  .map-placeholder, .map-placeholder__content { min-height: 500px; }
  .contact-form { padding: 38px; }
}

@media (min-width: 1080px) {
  :root { --header-height: 112px; }
  .site-header { color: var(--white); }
  .site-header .demo-note { height: 25px; color: rgba(255,255,255,.7); line-height: 25px; background: transparent; border-color: rgba(255,255,255,.2); }
  .site-header.is-scrolled { color: var(--brown); }
  .site-header.is-scrolled .demo-note { color: rgba(43,33,29,.58); }
  .nav-shell { height: 86px; }
  .nav-shell > .brand { position: static; align-items: flex-start; transform: none; }
  .button--header { border-radius: 999px; }
  .hero { min-height: max(720px, 100svh); color: var(--white); background: #725f55; }
  .hero__media { inset: 0; height: auto; border-radius: 0; box-shadow: none; clip-path: none; animation: none; }
  .hero__media img { object-position: center 56%; animation: hero-image 1.8s var(--ease) .1s forwards; }
  .hero__veil { inset: 0; height: auto; border-radius: 0; background: linear-gradient(180deg, rgba(26,17,14,.37) 0%, rgba(26,17,14,.08) 42%, rgba(26,17,14,.58) 100%), linear-gradient(90deg, rgba(26,17,14,.46), transparent 78%); }
  .hero__detail, .hero__stone { display: none; }
  .hero__content { min-height: max(720px, 100svh); justify-content: center; padding: 160px 0 90px; }
  .hero .eyebrow { margin-bottom: 22px; color: inherit; }
  .hero h1 { max-width: 1180px; margin: 0 0 28px; color: inherit; font-size: clamp(5.8rem, 8vw, 8.6rem); text-shadow: none; }
  .hero h1 em { color: inherit; }
  .hero__intro { max-width: 480px; margin-bottom: 32px; color: inherit; font-size: clamp(1.25rem, 2vw, 1.7rem); }
  .hero .button--light { color: var(--brown); background: var(--ivory); }
  .hero .text-link--light { color: var(--white); }
  .scroll-cue { display: flex; }
  .intro { margin-top: 0; border-radius: 0; }
  .service-category { padding-inline: 22px; }
  .services__image-wrap { border-radius: 8px 72px 8px 72px; box-shadow: 0 28px 70px rgba(15,10,8,.2); }
  .style-grid { grid-auto-rows: 330px; }
  .about__portrait { height: 730px; }
  .about__portrait img { min-height: 0; max-height: none; }
  .values__grid { grid-template-columns: 1fr 1fr; max-width: 1120px; margin-inline: auto; gap: 18px; }
  .value, .value:nth-child(even) { min-height: 238px; padding: 38px 40px; border: 0; transform: none; }
  .value:first-child { padding: 38px 40px; }
  .review-card { flex-basis: calc((100% - 28px) / 3); }
  .booking-cta { margin-inline: 24px; }
  .map-placeholder, .map-placeholder__content { min-height: 570px; }
}

@media (min-width: 1500px) {
  .style-grid { grid-auto-rows: 380px; }
  .booking-cta { margin-inline: 38px; }
}

@media (max-width: 374px) {
  .mobile-menu { padding-inline: 18px; }
  .mobile-menu nav a { font-size: clamp(2.35rem, 12.5vw, 3.2rem); }
  .hero__media, .hero__veil { inset-inline: 16px; }
  .hero h1 { font-size: 3rem; }
  .hero__detail { width: 94px; height: 124px; }
  .intro__visual { min-height: 430px; }
  .intro__image-main { height: 345px; }
  .style-grid { grid-auto-rows: 88px; }
  .value { min-height: 176px; }
}

@media (prefers-reduced-motion: reduce) {
  .hero__media { clip-path: none; }
  .hero__detail { opacity: 1; transform: none; }
  .js .intro__visual.reveal .image-frame,
  .js figure.reveal img,
  .js .gallery-card.reveal,
  .js .about__portrait.reveal img,
  .js .social-tile.reveal { clip-path: none; transform: none; }
}
