:root {
  --paper:#f6f5f2; --paper-deep:#eef0ed; --ink:#202423; --muted:#58615d;
  --line:#cfd4d0; --green:#345a54; --green-deep:#24413d; --white:#fff;
  --display:"Manrope",Arial,sans-serif; --sans:"DM Sans",Arial,sans-serif;
  --gutter:clamp(1.25rem,6.5vw,7rem); --shadow:0 18px 48px rgb(28 37 34 / 9%);
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:6.5rem; }
body { margin:0; background:var(--paper); color:var(--ink); font:1rem/1.65 var(--sans); }
::selection { background:var(--green); color:white; }
a { color:inherit; text-underline-offset:.25em; }
button { font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
img { display:block; max-width:100%; height:auto; }
h1,h2,h3 { margin:0; font-family:var(--display); font-weight:600; text-wrap:balance; }
h1 { font-size:clamp(2.75rem,4.7vw,4.7rem); line-height:1.07; letter-spacing:-.055em; }
h2 { font-size:clamp(2rem,3.4vw,3.5rem); line-height:1.13; letter-spacing:-.045em; }
h3 { font-size:1.4rem; line-height:1.3; letter-spacing:-.025em; }
h1 em,h2 em { color:var(--green); font-style:normal; font-weight:500; }
p,figure { margin:0; }
section,main { outline:none; }
section[id],[id="visuels"] { scroll-margin-top:1rem; }
:focus-visible { outline:3px solid #6d9388; outline-offset:5px; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.skip-link { position:fixed; top:-6rem; left:1rem; z-index:100; background:var(--ink); color:white; padding:1rem; }
.skip-link:focus { top:1rem; }
[hidden] { display:none !important; }
.site-header { position:sticky; top:0; z-index:50; display:flex; align-items:center; justify-content:space-between; gap:1.5rem; min-height:5rem; padding:.75rem clamp(1.25rem,4vw,4rem); background:rgb(246 245 242 / 96%); border-bottom:1px solid transparent; }
@supports (backdrop-filter:blur(12px)) { .site-header { backdrop-filter:blur(12px); background:rgb(246 245 242 / 90%); } }
.site-header.scrolled { border-color:var(--line); }
.brand { display:inline-flex; align-items:center; gap:.75rem; text-decoration:none; flex-shrink:0; }
.brand-mark { display:grid; place-items:center; width:2.5rem; height:2.5rem; background:var(--ink); color:var(--paper); font:700 .75rem/1 var(--display); letter-spacing:.035em; }
.brand-name { font:700 .95rem/1.2 var(--display); letter-spacing:-.025em; }
.desktop-nav { display:flex; align-items:center; gap:clamp(1rem,2vw,2rem); }
.desktop-nav a { padding:.6rem 0; font-size:.875rem; text-decoration:none; }
.desktop-nav a:hover { color:var(--green); text-decoration:underline; }
.menu-button,.mobile-nav { display:none; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:1.2rem; min-height:3.5rem; padding:.9rem 1.35rem; border:1px solid var(--green); border-radius:2px; background:var(--green); color:white; font-weight:600; line-height:1.4; text-align:center; text-decoration:none; cursor:pointer; transition:background .18s,border-color .18s; }
.button:hover { background:var(--green-deep); border-color:var(--green-deep); }
.button-small { min-height:2.875rem; padding:.7rem 1.05rem; font-size:.875rem; }
.text-link { display:inline-flex; align-items:center; gap:.75rem; padding:.55rem 0; color:var(--green); font-weight:600; line-height:1.5; text-decoration:none; border-bottom:1px solid #869e97; }
.text-link:hover { border-color:var(--green); }
.eyebrow,.card-tag,.section-label { color:var(--green); font-size:.8125rem; font-weight:600; letter-spacing:.09em; text-transform:uppercase; }
.eyebrow { margin-bottom:1.5rem; }
.microcopy,.visual-caption,.ai-disclosure,.booking-note { font-size:.875rem; line-height:1.6; color:var(--muted); }
.hero { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); align-items:center; gap:clamp(2rem,5vw,5rem); padding:clamp(2.5rem,5vw,5rem) var(--gutter) clamp(3rem,6vw,6rem); border-bottom:1px solid var(--line); }
.hero-copy { max-width:44rem; }
.hero h1 { max-width:13ch; }
.hero h1 em { display:block; }
.hero-lead { max-width:36rem; margin-top:1.5rem; color:#48534e; font-size:clamp(1rem,1.3vw,1.125rem); line-height:1.7; }
.hero-actions { display:flex; align-items:center; flex-wrap:wrap; gap:.6rem 1.5rem; margin-top:1.9rem; }
.hero .microcopy { margin-top:.9rem; }
.hero-visual { position:relative; width:100%; max-width:34rem; justify-self:end; }
.hero-visual::before { content:""; position:absolute; inset:-2% 8% 7% -5%; border:1px solid #b9c8c0; transform:rotate(-2deg); }
.hero-photo-wrap { position:relative; aspect-ratio:4/5; overflow:hidden; background:#dde3df; box-shadow:var(--shadow); }
.hero-photo-wrap img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:78% center; }
.hero-photo-index { position:absolute; right:1rem; left:1rem; bottom:1rem; width:fit-content; max-width:calc(100% - 2rem); padding:.6rem .85rem; background:rgb(32 36 35 / 91%); color:white; font-size:.75rem; letter-spacing:.025em; }
.visual-caption { position:relative; margin-top:.9rem; text-align:right; font-size:.8125rem; }
.section { padding:clamp(4rem,7.5vw,7rem) var(--gutter); }
.diagnostic { background:var(--ink); color:white; }
.diagnostic .eyebrow { color:#b7d0c6; }
.diagnostic-intro { display:grid; grid-template-columns:.65fr 1.5fr; gap:clamp(2rem,6vw,6rem); }
.diagnostic-intro h2 { font-size:clamp(1.8rem,3vw,3rem); max-width:28ch; }
.diagnostic-intro > div > p:last-child { color:#cad2ce; max-width:42rem; }
.diagnostic-intro h2 + p { margin-top:1.5rem; }
.diagnostic-note { max-width:16rem !important; font-size:1rem; }
.journey { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin-top:3rem; border:1px solid #505b56; }
.journey article { padding:1.5rem 1.7rem 1.8rem; border-right:1px solid #505b56; }
.journey article:last-child { border-right:0; }
.journey span { color:#b9c8c1; font-size:.8125rem; }
.journey h3 { margin-top:1.8rem; font-size:1.2rem; }
.journey p { margin-top:.7rem; color:#cad2ce; }
.journey .active { background:var(--green); }
.journey .active p { color:#e2ebe7; }
.visual-direction-heading { display:grid; grid-template-columns:1.2fr .8fr; gap:1.5rem clamp(2rem,7vw,7rem); align-items:end; }
.visual-direction-heading .section-label { grid-column:1 / -1; }
.section-label { display:flex; align-items:center; gap:.6rem; margin-bottom:1.5rem; }
.section-label > span { font-size:.75rem; }
.visual-direction-heading h2 { max-width:17ch; }
.visual-direction-heading > p { max-width:25rem; padding-bottom:.2rem; color:var(--muted); font-size:1.0625rem; }
.visual-grid { display:grid; grid-template-columns:1fr 1.4fr 1fr; gap:1.25rem; align-items:start; margin-top:3rem; }
.visual-card { min-width:0; }
.visual-card img { width:100%; height:auto; aspect-ratio:3/4; object-fit:cover; background:#dfe5e2; }
.visual-card:nth-child(2) { margin-top:3.5rem; }
.visual-card:nth-child(2) img { aspect-ratio:4/3; object-position:48% center; }
.visual-card:first-child img { object-position:center 38%; }
.visual-card figcaption { display:grid; grid-template-columns:1.3rem 1fr; gap:.4rem .7rem; margin-top:1.1rem; }
.visual-card figcaption > span { grid-row:1 / span 2; color:var(--green); font-size:.75rem; padding-top:.15rem; }
.visual-card strong { display:block; font:600 1rem/1.4 var(--display); letter-spacing:-.02em; }
.visual-card small { display:block; color:var(--muted); font-size:.875rem; }
.ai-disclosure { margin-top:2rem; max-width:60rem; font-size:.8125rem; }
.method { background:var(--paper-deep); }
.method-heading { display:grid; grid-template-columns:1fr; gap:0; }
.method-heading h2 { max-width:22ch; }
.method-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.25rem; margin-top:3rem; }
.method-card { display:flex; flex-direction:column; border:1px solid var(--line); background:var(--paper); }
.method-image { width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; }
.card-number { display:none; }
.method-card > div { display:flex; flex:1; flex-direction:column; padding:clamp(1.25rem,2.3vw,2rem); }
.card-tag { font-size:.8125rem; margin-bottom:1rem; }
.method-card h3 { max-width:20ch; }
.method-card h3 + p { margin-top:1.1rem; margin-bottom:1.5rem; color:var(--muted); }
.method-card .deliverable { margin-top:auto; padding-top:1rem; border-top:1px solid var(--line); color:#46584f; font-size:.9375rem; }
.deliverable strong { font-weight:600; }
.services { display:grid; grid-template-columns:.95fr 1.05fr; gap:clamp(3rem,8vw,7rem); align-items:start; }
.services-copy h2 { max-width:17ch; }
.services-copy > p { margin:1.5rem 0 1.2rem; color:var(--muted); max-width:28rem; }
.service-list { border-top:1px solid var(--ink); }
.service-list article { display:grid; grid-template-columns:1.75rem 1fr; gap:.85rem; padding:1.5rem 0; border-bottom:1px solid var(--line); }
.service-list article > span { font-size:.8125rem; color:var(--muted); padding-top:.15rem; }
.service-list h3 { font-size:1.15rem; }
.service-list p { margin-top:.6rem; color:var(--muted); }
.fit { background:var(--green); color:white; }
.fit-copy { display:grid; grid-template-columns:1fr; }
.fit .eyebrow { color:#d0dfd9; }
.fit-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2.5rem; margin-top:3rem; }
.fit-grid article { border-top:1px solid #91afa3; padding-top:1rem; }
.fit-grid span { color:#d0dfd9; font-size:.875rem; }
.fit-grid h3 { margin-top:1.5rem; font-size:1.3rem; }
.fit-grid p { margin-top:.85rem; color:#e2ebe7; }
.about { display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(3rem,8vw,7rem); align-items:center; }
.about-portrait { max-width:30rem; }
.about-portrait img { width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; }
.about-portrait figcaption { margin-top:.75rem; color:var(--muted); font-size:.8125rem; }
.about-lead { margin-top:1.5rem; color:var(--green); font-size:1.2rem; line-height:1.6; }
.about-copy > p:not(.about-lead,.eyebrow,.location) { margin-top:1.25rem; color:var(--muted); }
.location { margin:1.75rem 0 1rem; padding-top:1.25rem; border-top:1px solid var(--line); color:var(--muted); font-size:.875rem; }
.faq { display:grid; grid-template-columns:.65fr 1.35fr; gap:clamp(2.5rem,7vw,7rem); background:var(--paper-deep); }
.faq-list { border-top:1px solid var(--ink); }
.faq-list details { border-bottom:1px solid #bfc9c2; }
.faq-list summary { position:relative; padding:1.5rem 2.5rem 1.5rem 0; cursor:pointer; list-style:none; font:600 1.0625rem/1.5 var(--display); letter-spacing:-.02em; }
.faq-list summary::-webkit-details-marker { display:none; }
.faq-list summary::after { content:"+"; position:absolute; right:.4rem; top:1.35rem; color:var(--green); font-size:1.5rem; font-weight:400; }
.faq-list details[open] summary::after { content:"−"; }
.faq-list details p { max-width:42rem; margin:-.1rem 1.5rem 1.5rem 0; color:var(--muted); }
.contact { display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(2.5rem,7vw,7rem); align-items:center; background:#e3e6e8; }
.contact h2 { max-width:20ch; }
.contact-copy > p:not(.eyebrow) { margin-top:1.5rem; max-width:30rem; color:#4b5952; }
.booking-card { padding:clamp(1.5rem,3vw,2.5rem); border:1px solid #c6cfca; background:var(--paper); box-shadow:var(--shadow); }
.booking-card h3 { font-size:1.8rem; }
.booking-steps { padding-left:1.3rem; margin:1.5rem 0 2rem; color:var(--muted); }
.booking-steps li { padding-left:.4rem; margin-top:.85rem; }
.booking-steps li::marker { color:var(--green); font-size:.875rem; }
.booking-button { width:100%; }
.booking-note { margin-top:1rem; font-size:.8125rem; }
footer { padding:3rem var(--gutter) 1.5rem; background:var(--ink); color:white; }
.footer-top { display:flex; align-items:center; justify-content:space-between; gap:2rem; padding-bottom:2rem; }
.footer-brand .brand-mark { color:var(--ink); background:var(--paper); }
.footer-top > p { color:#cad2ce; font-size:.9375rem; }
.footer-bottom { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.75rem 1.5rem; padding-top:1.5rem; border-top:1px solid #505b56; color:#cad2ce; font-size:.8125rem; }
.footer-bottom a { padding:.4rem 0; }
@media (min-width:1700px) { :root { --gutter:max(7rem,calc((100vw - 1440px) / 2)); } }
@media (max-width:1120px) {
  .desktop-nav { display:none; }
  .site-header { justify-content:flex-start; gap:1rem; }
  .header-cta { margin-left:auto; }
  .menu-button { display:flex; flex:0 0 2.75rem; flex-direction:column; align-items:center; justify-content:center; gap:6px; width:2.75rem; height:2.75rem; padding:0; border:0; background:transparent; cursor:pointer; }
  .menu-button span { display:block; width:22px; height:2px; background:var(--ink); transition:transform .15s; }
  .menu-button[aria-expanded="true"] span:first-child { transform:translateY(4px) rotate(45deg); }
  .menu-button[aria-expanded="true"] span:last-child { transform:translateY(-4px) rotate(-45deg); }
  .mobile-nav { position:absolute; left:0; right:0; top:100%; display:grid; padding:.75rem var(--gutter) 1.5rem; max-height:calc(100dvh - 5rem); overflow:auto; background:var(--paper); border-bottom:1px solid var(--line); box-shadow:var(--shadow); }
  .mobile-nav > a:not(.button) { padding:.85rem 0; border-bottom:1px solid var(--line); text-decoration:none; }
  .mobile-nav .button { margin-top:1rem; }
  .hero { grid-template-columns:1.1fr .9fr; gap:2rem; }
  .hero h1 { font-size:clamp(2.6rem,4.8vw,3.6rem); }
  .hero-photo-wrap { aspect-ratio:3/4; }
  .visual-grid { gap:1rem; }
  .visual-card figcaption { grid-template-columns:1fr; gap:.35rem; }
  .visual-card figcaption > span { grid-row:auto; }
  .fit-grid { gap:1.75rem; }
}
@media (max-width:800px) {
  .hero { grid-template-columns:1fr; gap:2.5rem; }
  .hero-copy { max-width:39rem; }
  .hero h1 { max-width:16ch; font-size:clamp(2.6rem,7.8vw,3.6rem); }
  .hero-lead { max-width:37rem; }
  .hero-visual { max-width:none; }
  .hero-photo-wrap { aspect-ratio:3/2; }
  .hero-photo-wrap img { object-position:75% center; }
  .hero-visual::before { display:none; }
  .visual-caption { text-align:left; }
  .diagnostic-intro,.visual-direction-heading { grid-template-columns:1fr; gap:1.5rem; }
  .diagnostic-note { max-width:none !important; }
  .visual-direction-heading > p { max-width:35rem; }
  .journey { grid-template-columns:1fr; margin-top:2rem; }
  .journey article { border-right:0; border-bottom:1px solid #505b56; }
  .journey article:last-child { border-bottom:0; }
  .journey h3 { margin-top:.75rem; }
  .method-grid { grid-template-columns:1fr; }
  .method-card { display:grid; grid-template-columns:.85fr 1.15fr; }
  .method-image { height:100%; aspect-ratio:auto; object-position:center; }
  .method-card > div { padding:1.5rem; }
  .services,.faq,.contact { grid-template-columns:1fr; }
  .services-copy h2,.contact h2 { max-width:22ch; }
  .booking-card { max-width:35rem; width:100%; }
  .about { grid-template-columns:.9fr 1.1fr; gap:2rem; }
  .about h2 { font-size:2.1rem; }
}
@media (max-width:600px) {
  .site-header { min-height:4.5rem; padding:.65rem 1.25rem; }
  .brand-name { font-size:.875rem; }
  .header-cta { display:none; }
  .menu-button { margin-left:auto; }
  .hero { padding-top:2rem; }
  .hero h1 { max-width:13ch; font-size:clamp(2.4rem,9.3vw,3.5rem); }
  .hero .eyebrow { max-width:29ch; margin-bottom:1.2rem; }
  .hero-lead { margin-top:1.25rem; line-height:1.65; }
  .hero-actions { align-items:stretch; flex-direction:column; gap:.7rem; margin-top:1.5rem; }
  .hero-actions .text-link { align-self:flex-start; }
  .hero-photo-wrap { aspect-ratio:4/3; }
  .section { padding-top:3.5rem; padding-bottom:3.5rem; }
  .eyebrow { font-size:.8125rem; letter-spacing:.065em; }
  .visual-grid { grid-template-columns:1fr 1fr; gap:2rem 1rem; }
  .visual-card:nth-child(2) { grid-column:1 / -1; grid-row:2; margin-top:0; }
  .visual-card:nth-child(2) img { aspect-ratio:3/2; }
  .visual-card strong { font-size:.9375rem; }
  .visual-card small { font-size:.875rem; }
  .visual-card:nth-child(2) figcaption { grid-template-columns:1.3rem 1fr; gap:.4rem .7rem; }
  .visual-card:nth-child(2) figcaption > span { grid-row:1 / span 2; }
  .method-card { display:flex; }
  .method-image { height:auto; aspect-ratio:3/2; }
  .method-card h3 { max-width:24ch; }
  .fit-grid { grid-template-columns:1fr; gap:2rem; }
  .fit-grid h3 { margin-top:.7rem; }
  .about { grid-template-columns:1fr; }
  .about-portrait { width:min(100%,25rem); }
  .about h2 { font-size:clamp(2rem,8vw,2.75rem); }
  .about-lead { font-size:1.125rem; }
  .faq-list summary { padding-top:1.25rem; padding-bottom:1.25rem; }
  .faq-list summary::after { top:1.1rem; }
  .footer-top { align-items:flex-start; flex-direction:column; gap:1.25rem; }
  .footer-bottom { align-items:flex-start; flex-direction:column; gap:.5rem; }
}
@media (max-width:360px) {
  .brand { gap:.5rem; }
  .hero h1 { font-size:2.25rem; }
  .visual-grid { grid-template-columns:1fr; }
  .visual-card:nth-child(2) { grid-row:auto; grid-column:auto; }
  .visual-card img { aspect-ratio:4/5; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { transition:none !important; }
}

.legal { background:#eef1ef; display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(2rem,8vw,8rem); }
.legal-heading h2 { max-width:10ch; }
.legal-copy { max-width:48rem; font-size:1rem; line-height:1.7; }
.legal-copy p { margin:0 0 1rem; }
.legal-note { color:#5b6661; font-size:.875rem; }
.legal-copy a { color:inherit; text-underline-offset:3px; }
.privacy-settings { border:0; background:none; padding:0; color:inherit; font:inherit; text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
.cookie-banner { position:fixed; z-index:30; inset:auto 1.25rem 1.25rem; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:1.5rem; align-items:end; max-width:70rem; margin:auto; padding:1.25rem 1.5rem; background:#222426; color:#f6f5f2; border:1px solid rgba(246,245,242,.22); box-shadow:0 18px 60px rgba(0,0,0,.22); }
.cookie-banner[hidden] { display:none; }
.cookie-banner h2 { margin:.25rem 0 .5rem; font:600 1.25rem/1.2 'Manrope',sans-serif; }
.cookie-banner p { margin:0; max-width:58ch; color:#d7dedb; font-size:.9375rem; line-height:1.55; }
.cookie-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:.65rem; }
.cookie-actions a { color:#f6f5f2; font-size:.875rem; text-underline-offset:3px; }
.cookie-actions .button { white-space:nowrap; }
.button-quiet { background:transparent; color:#f6f5f2; border-color:rgba(246,245,242,.45); }
@media (max-width:800px) { .legal { grid-template-columns:1fr; gap:1.5rem; } .legal-heading h2 { max-width:18ch; } .cookie-banner { inset: auto .75rem .75rem; grid-template-columns:1fr; gap:1rem; padding:1.15rem; } .cookie-actions { justify-content:flex-start; } }
