:root{--ink:#272320;--cream:#f7f3ed;--paper:#fffdf9;--rose:#b9746f;--blush:#e7d8ce;--line:#d8d0c8;--serif:'Playfair Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55}a{color:inherit}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:1rem;top:1rem;z-index:999;background:#fff;padding:.7rem}.notice{height:36px;display:flex;gap:1.5rem;justify-content:center;align-items:center;background:var(--ink);color:#f8f2eb;font-size:11px;letter-spacing:.08em;text-transform:uppercase}.notice a{text-decoration:none}.site-header{min-height:93px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,80px);border-bottom:1px solid var(--line);background:rgba(255,253,249,.95);position:sticky;top:0;z-index:20;backdrop-filter:blur(10px)}.brand{display:inline-flex;flex-direction:column;line-height:1;text-decoration:none;letter-spacing:.17em}.brand span{font-size:17px;font-weight:700}.brand small{font-size:7px;letter-spacing:.28em;margin-top:6px}.site-nav{display:flex;gap:28px}.site-nav a{font-size:13px;text-decoration:none}.site-nav a:hover,.text-link:hover{color:var(--rose)}.button{border:1px solid transparent;padding:13px 19px;background:none;font:600 12px var(--sans);letter-spacing:.05em;cursor:pointer;text-decoration:none;display:inline-flex;gap:13px;align-items:center;justify-content:center;transition:.2s}.button--dark{background:var(--ink);color:#fff}.button--dark:hover{background:var(--rose)}.button--outline{border-color:var(--ink)}.button--outline:hover{background:var(--ink);color:#fff}.menu-toggle{display:none}.hero{display:grid;grid-template-columns:1.03fr .97fr;min-height:calc(100vh - 129px)}.hero__content{padding:100px clamp(25px,7vw,110px) 50px;align-self:start}.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.19em;font-weight:700;color:#6c5d58;margin:0 0 21px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--serif);font-weight:500;letter-spacing:-.04em;line-height:.98}h1{font-size:clamp(52px,7vw,105px);margin-bottom:28px}h2{font-size:clamp(38px,4.5vw,70px);margin-bottom:26px}.hero__copy{font-size:18px;max-width:390px;color:#4b4542}.actions{display:flex;gap:25px;align-items:center;flex-wrap:wrap;margin-top:39px}.text-link{font-weight:700;font-size:12px;letter-spacing:.03em;text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:5px}.text-link span{margin-left:10px}.hero__image{position:relative;min-height:520px;margin-top:100px;height:calc(100% - 100px)}.hero__image img,.editorial__image img{width:100%;height:100%;object-fit:cover;display:block}.strip{background:var(--blush);min-height:110px;padding:25px max(25px,8vw);display:flex;align-items:center;justify-content:space-between}.strip p{font:500 clamp(17px,2vw,27px) var(--serif);margin:0}.strip a{font-size:12px;text-decoration:none;font-weight:700}.strip span{padding-left:13px}.section{padding:clamp(75px,10vw,150px) max(24px,8vw)}.services{background:var(--cream)}.section-head{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:30px;align-items:end;margin-bottom:65px}.section-head .eyebrow{align-self:start}.section-head p:last-child{max-width:270px;color:#655d58;font-size:15px}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.service-card{min-height:250px;padding:26px;display:flex;flex-direction:column;align-items:flex-start;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:.25s}.service-card:hover{background:var(--paper)}.service-card>span{font-size:10px;color:#756963;letter-spacing:.1em}.service-card h3{font:500 25px/1.1 var(--serif);margin:auto 0 10px}.service-card p{font-size:13px;color:#655d58;margin-bottom:16px}.service-card strong{font-size:13px}.service-card--accent{background:var(--rose);color:#fff}.service-card--accent p,.service-card--accent>span{color:#fff}.service-card--accent a{font-size:12px;font-weight:700;text-decoration:none}.editorial{display:grid;grid-template-columns:1fr 1fr;min-height:650px}.editorial__image{min-height:500px}.editorial__copy{align-self:center;padding:clamp(60px,9vw,135px);background:var(--paper)}.editorial__copy>p:not(.eyebrow){max-width:365px;color:#5e5652;margin-bottom:32px}.gallery{padding-bottom:0}.gallery-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:52px}.gallery-head h2{margin:0}.gallery-grid{display:grid;grid-template-columns:1.1fr .8fr 1.1fr .8fr;gap:16px}.gallery-grid img{width:100%;height:clamp(250px,33vw,470px);object-fit:cover}.gallery-grid img:nth-child(even){margin-top:65px}.about{background:var(--blush);display:grid;grid-template-columns:1fr 1fr;gap:30px;min-height:590px}.about__word{font:500 clamp(65px,10vw,155px)/.76 var(--serif);letter-spacing:-.07em;align-self:center}.about__copy{max-width:460px;align-self:center}.about__copy p:not(.eyebrow){color:#594f49}.why{padding:clamp(75px,10vw,145px) max(24px,8vw);display:grid;grid-template-columns:1fr 1fr;gap:70px}.why h2{margin:0}.why-list>div{display:grid;grid-template-columns:45px 1fr;column-gap:20px;padding:24px 0;border-top:1px solid var(--line)}.why-list>div:last-child{border-bottom:1px solid var(--line)}.why-list span{font-size:11px;color:#796e67}.why-list h3{font:500 25px var(--serif);margin:0 0 7px}.why-list p{grid-column:2;margin:0;color:#625954;font-size:14px}.booking{padding:clamp(70px,9vw,125px) max(24px,8vw);background:var(--ink);color:#fff}.booking h2{max-width:600px;margin-bottom:20px}.booking p:not(.eyebrow){max-width:440px;color:#dbd1c9}.booking .eyebrow{color:#ddc5bb}.faq{max-width:1050px;margin:auto}.faq h2{margin-bottom:55px}.faq-list{border-top:1px solid var(--line)}details{border-bottom:1px solid var(--line);padding:22px 0}summary{font:500 20px var(--serif);cursor:pointer;display:flex;justify-content:space-between;list-style:none}summary::-webkit-details-marker{display:none}details[open] summary span{transform:rotate(45deg)}details p{max-width:620px;color:#625954;margin:15px 35px 0 0;font-size:14px}.contact{background:var(--cream);padding:clamp(75px,10vw,145px) max(24px,8vw);display:grid;grid-template-columns:1fr 1fr;gap:50px}.contact h2{margin-bottom:35px}.contact__details{display:grid;grid-template-columns:repeat(2,1fr);gap:37px}.contact__details div:last-child{grid-column:span 2}.contact__details span{font-size:10px;text-transform:uppercase;letter-spacing:.16em;font-weight:700;color:#756963}.contact__details p{font:15px/1.65 var(--sans);margin-top:9px}.contact__details a{text-decoration:none;border-bottom:1px solid var(--line)}footer{padding:52px max(24px,8vw);display:flex;align-items:center;justify-content:space-between;gap:25px;font-size:11px}footer p{margin:0;color:#716762}footer div{display:flex;gap:20px}footer div a{text-decoration:none}.whatsapp-float{position:fixed;right:22px;bottom:22px;z-index:15;display:flex;align-items:center;gap:9px;padding:11px 16px 11px 11px;border-radius:99px;color:#fff;background:#286f52;box-shadow:0 5px 18px #0003;text-decoration:none;font-size:12px;font-weight:700}.whatsapp-float svg{width:23px;height:23px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(max-width:800px){.notice{justify-content:space-between;padding:0 20px;font-size:9px;gap:8px}.notice span:first-child{display:none}.site-header{min-height:73px}.header-book{display:none}.menu-toggle{display:flex;width:32px;height:25px;border:0;background:none;padding:3px 0;flex-direction:column;justify-content:space-between}.menu-toggle span:not(.sr-only){height:1px;background:var(--ink);width:100%}.site-nav{display:none;position:absolute;left:0;right:0;top:73px;background:var(--paper);padding:25px;flex-direction:column;border-bottom:1px solid var(--line)}.site-nav.is-open{display:flex}.hero{grid-template-columns:1fr}.hero__content{padding:70px 25px 57px}.hero__image{min-height:490px}.section-head{grid-template-columns:1fr;gap:8px;margin-bottom:42px}.section-head h2{margin-bottom:10px}.service-grid{grid-template-columns:1fr 1fr}.editorial,.about,.why,.contact{grid-template-columns:1fr}.editorial__copy{padding:70px 25px}.gallery-grid{grid-template-columns:1fr 1fr;gap:8px}.gallery-grid img{height:270px}.gallery-grid img:nth-child(even){margin-top:35px}.about__word{font-size:86px}.why{gap:45px}.contact__details{gap:25px}footer{align-items:flex-start;flex-direction:column}.whatsapp-float span{display:none}.whatsapp-float{padding:13px;right:16px;bottom:16px}}
@media(max-width:460px){.notice span:last-child{display:none}.service-grid{grid-template-columns:1fr}.service-card{min-height:210px}.strip{display:block}.strip p{margin-bottom:14px}.gallery-head{display:block}.gallery-head .text-link{display:inline-block;margin-top:20px}.gallery-grid img{height:220px}.contact__details{grid-template-columns:1fr}.contact__details div:last-child{grid-column:auto}}
.service-card{min-height:385px}.service-card img{width:100%;height:144px;object-fit:contain;margin:14px 0 19px}.service-card h3{margin:0 0 10px}.service-card strong{margin-top:auto}
@media(max-width:460px){.service-card{min-height:385px}}
@media(min-width:801px){.hero{height:calc(100dvh - 129px);min-height:calc(100dvh - 129px);max-height:calc(100dvh - 129px);overflow:hidden}.hero__content{padding-top:100px;padding-bottom:50px;align-self:start}.hero__image{height:100%;min-height:0;max-height:100%;margin-top:0;align-self:stretch}.hero__image img{width:100%;height:100%;object-fit:cover;object-position:center 32%}}
@media(max-width:800px){.hero{height:auto;min-height:0;max-height:none;overflow:visible}.hero__content{padding-top:70px;padding-bottom:55px}.hero__image{height:500px;min-height:0;max-height:none;margin-top:0}}
@media(max-width:460px){.hero__content{padding-top:55px;padding-bottom:45px}.hero__image{height:430px}}

/* =========================================================
   BOOKING FORM — integrated into the existing appointments section
   ========================================================= */
.booking--form{
  display:grid;
  grid-template-columns:minmax(280px,.72fr) minmax(520px,1.28fr);
  gap:clamp(45px,7vw,100px);
  align-items:start;
}
.booking__intro{padding-top:4px}
.booking__intro h2{font-size:clamp(42px,5vw,72px)}
.booking__intro p:not(.eyebrow){max-width:440px}
.booking-form-wrap{width:100%}
.booking-form-card{
  background:var(--paper);
  color:var(--ink);
  padding:clamp(30px,4vw,55px);
  box-shadow:0 18px 55px #0002;
}
.booking-form-card .eyebrow{color:#6c5d58;margin-bottom:18px}
.booking-form-card h2{font-size:clamp(34px,4vw,50px);margin-bottom:12px}
.booking-form-lead{color:#625954!important;max-width:none!important;margin-bottom:30px}
.booking-form{width:100%}
.booking-form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
}
.form-field{min-width:0}
.form-field label,.date-time-fieldset legend{
  display:block;
  font-size:12px;
  font-weight:600;
  color:#514943;
  margin:0 0 8px;
  letter-spacing:.01em;
}
.form-field label span,.date-time-fieldset legend span{color:var(--rose)}
.form-field input,.form-field select,.date-control input,.time-control select{
  width:100%;
  height:54px;
  border:1px solid #cfc7bf;
  background:#fff;
  color:var(--ink);
  padding:0 15px;
  border-radius:0;
  font:400 14px var(--sans);
  outline:none;
  transition:border-color .2s,box-shadow .2s,background .2s;
}
.form-field input:focus,.form-field select:focus,.date-control input:focus,.time-control select:focus{
  border-color:var(--ink);
  box-shadow:0 0 0 3px rgba(185,116,111,.13);
}
.form-field select,.time-control select{
  appearance:auto;
  cursor:pointer;
}
.booking-form-full{grid-column:1 / -1}
.date-time-fieldset{border:0;padding:0;margin:0;min-width:0}
.date-time-fieldset legend{padding:0}
.date-time-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}
.field-help{
  color:#756b65!important;
  font-size:11px!important;
  margin:8px 0 0!important;
  max-width:none!important;
}
.booking-submit{
  width:100%;
  min-height:54px;
  margin-top:25px;
  background:var(--rose);
  color:#fff;
  border-color:var(--rose);
}
.booking-submit:hover{background:var(--ink);border-color:var(--ink)}
.booking-submit-note{
  max-width:none!important;
  margin:12px 0 0!important;
  color:#756b65!important;
  font-size:12px!important;
  line-height:1.5!important;
}
.booking-error{
  max-width:none!important;
  margin:12px 0 0!important;
  color:#9a4e48!important;
  font-size:12px!important;
}
.form-field input:user-invalid:not(:focus),.form-field select:user-invalid:not(:focus),.date-control input:user-invalid:not(:focus),.time-control select:user-invalid:not(:focus){
  border-color:#c8847d;
}
@media(max-width:1050px){
  .booking--form{grid-template-columns:1fr;gap:42px}
  .booking__intro h2{max-width:650px}
  .booking__intro p:not(.eyebrow){max-width:650px}
}
@media(max-width:800px){
  .booking--form{padding-top:70px;padding-bottom:70px}
  .booking-form-card{padding:30px 25px}
  .booking-form-grid{gap:16px}
}
@media(max-width:600px){
  .booking-form-grid{grid-template-columns:1fr}
  .booking-form-full{grid-column:auto}
  .date-time-grid{grid-template-columns:1fr}
  .booking-form-card{padding:27px 20px}
}
@media(max-width:460px){
  .booking--form{padding-left:20px;padding-right:20px}
  .booking-form-card{padding:25px 18px}
  .booking-form-card h2{font-size:34px}
}


/* =========================================================
   SCROLL REVEAL ANIMATIONS
   Added as a progressive enhancement. Layout is unchanged.
   ========================================================= */

.reveal-up,
.reveal-blur,
.reveal-split,
.reveal-group,
.reveal-stagger,
.reveal-gallery {
  --reveal-duration: 800ms;
  --reveal-ease: cubic-bezier(.22, 1, .36, 1);
}

.js-reveal {
  opacity: 0;
  transform: translateY(34px);
  transition:
    opacity var(--reveal-duration) var(--reveal-ease),
    transform var(--reveal-duration) var(--reveal-ease);
  will-change: opacity, transform;
}

.js-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.js-reveal-blur {
  opacity: 0;
  filter: blur(8px);
  transform: scale(.985);
  transition:
    opacity 900ms var(--reveal-ease),
    filter 900ms var(--reveal-ease),
    transform 1000ms var(--reveal-ease);
  will-change: opacity, filter, transform;
}

.js-reveal-blur.is-visible {
  opacity: 1;
  filter: blur(0);
  transform: scale(1);
}

.js-reveal-split {
  opacity: 0;
  transform: translateX(-28px);
  transition:
    opacity 850ms var(--reveal-ease),
    transform 850ms var(--reveal-ease);
  will-change: opacity, transform;
}

.js-reveal-split.is-visible {
  opacity: 1;
  transform: translateX(0);
}

.js-reveal-group > * {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity 700ms var(--reveal-ease),
    transform 700ms var(--reveal-ease);
  will-change: opacity, transform;
}

.js-reveal-group.is-visible > * {
  opacity: 1;
  transform: translateY(0);
}

.js-reveal-group.is-visible > *:nth-child(1) { transition-delay: 0ms; }
.js-reveal-group.is-visible > *:nth-child(2) { transition-delay: 100ms; }
.js-reveal-group.is-visible > *:nth-child(3) { transition-delay: 180ms; }
.js-reveal-group.is-visible > *:nth-child(4) { transition-delay: 260ms; }

.js-reveal-stagger > * {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 700ms var(--reveal-ease),
    transform 700ms var(--reveal-ease);
  will-change: opacity, transform;
}

.js-reveal-stagger.is-visible > * {
  opacity: 1;
  transform: translateY(0);
}

.js-reveal-stagger.is-visible > *:nth-child(1) { transition-delay: 0ms; }
.js-reveal-stagger.is-visible > *:nth-child(2) { transition-delay: 90ms; }
.js-reveal-stagger.is-visible > *:nth-child(3) { transition-delay: 180ms; }
.js-reveal-stagger.is-visible > *:nth-child(4) { transition-delay: 270ms; }
.js-reveal-stagger.is-visible > *:nth-child(5) { transition-delay: 360ms; }
.js-reveal-stagger.is-visible > *:nth-child(6) { transition-delay: 450ms; }

.js-reveal-gallery > * {
  opacity: 0;
  filter: blur(6px);
  transform: translateY(26px) scale(.975);
  transition:
    opacity 750ms var(--reveal-ease),
    filter 750ms var(--reveal-ease),
    transform 850ms var(--reveal-ease);
  will-change: opacity, filter, transform;
}

.js-reveal-gallery.is-visible > * {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0) scale(1);
}

.js-reveal-gallery.is-visible > *:nth-child(1) { transition-delay: 0ms; }
.js-reveal-gallery.is-visible > *:nth-child(2) { transition-delay: 100ms; }
.js-reveal-gallery.is-visible > *:nth-child(3) { transition-delay: 200ms; }
.js-reveal-gallery.is-visible > *:nth-child(4) { transition-delay: 300ms; }

/* Split sections use a softer horizontal reveal on their visual side. */
.js-reveal-split .editorial__image,
.js-reveal-split .about__word {
  opacity: 0;
  transform: translateX(-24px);
  transition:
    opacity 850ms var(--reveal-ease),
    transform 850ms var(--reveal-ease);
}

.js-reveal-split .editorial__copy,
.js-reveal-split .about__copy {
  opacity: 0;
  transform: translateX(24px);
  transition:
    opacity 850ms var(--reveal-ease) 120ms,
    transform 850ms var(--reveal-ease) 120ms;
}

.js-reveal-split.is-visible .editorial__image,
.js-reveal-split.is-visible .about__word,
.js-reveal-split.is-visible .editorial__copy,
.js-reveal-split.is-visible .about__copy {
  opacity: 1;
  transform: translateX(0);
}

/* Gentle hero-image motion after the reveal. */
.js-hero-image.is-visible img {
  animation: heroImageBreath 8s ease-in-out 900ms both;
}

@keyframes heroImageBreath {
  from { transform: scale(1.015); }
  to { transform: scale(1.035); }
}

/* Accessibility: remove motion for users who request it. */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .js-reveal,
  .js-reveal-blur,
  .js-reveal-split,
  .js-reveal-group > *,
  .js-reveal-stagger > *,
  .js-reveal-gallery > *,
  .js-reveal-split .editorial__image,
  .js-reveal-split .about__word,
  .js-reveal-split .editorial__copy,
  .js-reveal-split .about__copy {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
  }

  .js-hero-image.is-visible img {
    animation: none !important;
  }
}
