:root{
  --navy: #0c1826;
  --navy-2: #142335;
  --ivory: #f6f1e6;
  --gold: #c6a15b;
  --gold-soft: #e4cd9a;
  --ember-1: #ff8a3d;
  --ember-2: #ffd27a;
  --charcoal: #201c16;
  --cream: #f7f2e7;
  --scroll-stage-height: 420vh;
  --scroll-vh-per-second: 0;
  --pad: 8vw;
}
*{ margin:0; padding:0; box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  background: var(--navy);
  color: var(--cream);
  font-family: 'Plus Jakarta Sans', sans-serif;
  overflow-x:hidden;
}
.serif{ font-family:'Playfair Display', serif; }

/* ---------- navbar ---------- */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:60;
  display:flex; align-items:center; justify-content:space-between;
  gap:32px; padding: 20px var(--pad);
  background:transparent;
  transform:translateY(0); opacity:1;
  transition: opacity .4s ease, transform .45s cubic-bezier(.22,1,.36,1), background .2s ease;
}
.nav.is-scrolled{ background:rgba(12,24,38,0.18); }
.nav.is-lux{
  background:var(--navy);
  border-bottom:1px solid rgba(247,242,231,0.08);
}
.nav.is-hidden{
  opacity:0; transform:translateY(-100%); pointer-events:none;
}
.nav-brand{
  font-family:'Playfair Display', serif; font-weight:700; font-size:13px;
  letter-spacing:0.22em; text-transform:uppercase; color:var(--cream);
  text-decoration:none; flex-shrink:0;
}
.nav-brand span{ color:var(--cream); opacity:0.45; font-weight:400; }
.nav-links{ display:flex; align-items:center; gap:36px; }
.nav-links a{
  color:rgba(247,242,231,0.7); text-decoration:none;
  font-size:11px; letter-spacing:0.16em; text-transform:uppercase; font-weight:600;
  transition:opacity .15s ease, color .15s ease;
}
.nav-links a:hover{ color:var(--cream); }
.nav-cta{
  flex-shrink:0; text-decoration:none;
  color:var(--cream); font-size:11px; letter-spacing:0.16em;
  text-transform:uppercase; font-weight:700;
  border-bottom:1px solid var(--gold);
  padding-bottom:3px;
  transition:opacity .15s ease, border-color .15s ease;
}
.nav-cta:hover{ opacity:0.6; }

/* ---------- progress rail ---------- */
.rail{
  position:fixed; right:26px; top:50%; transform:translateY(-50%);
  width:1px; height:120px; background:rgba(247,242,231,0.16); z-index:50;
}
.rail-fill{
  width:100%; background:var(--gold);
  height:0%;
}

.scrub-baker{
  position:fixed; left:0; top:0; width:1280px; height:720px;
  opacity:0; pointer-events:none; z-index:-1;
}

/* ---------- scroll stage (structure — do not alter) ---------- */
.scrollstage{ position:relative; height:var(--scroll-stage-height); }
.pin{
  position:sticky; top:0; height:100vh; height:100dvh; width:100%;
  overflow:hidden; background:var(--navy);
  contain:layout style;
}
#scrubVideo,
#scrubCanvas{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center;
}
#scrubCanvas{
  opacity:0; transform:translate3d(0,0,0); will-change:opacity;
  -webkit-backface-visibility:hidden; backface-visibility:hidden;
}
#scrubCanvas.is-on{ opacity:1; }
#scrubVideo.is-hidden{ visibility:hidden; opacity:0; }

/* ---------- intro overlay ---------- */
.intro-overlay{
  position:absolute; inset:0; z-index:8;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding: 0 var(--pad) 10vh;
  pointer-events:none;
}
.intro-overlay::before{
  content:""; position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(12,24,38,0.15) 0%, rgba(12,24,38,0.55) 70%, rgba(12,24,38,0.82) 100%);
}
.intro-overlay .eyebrow,
.intro-overlay h1,
.intro-overlay p,
.intro-overlay .scrolldown{ position:relative; z-index:1; }
.intro-overlay .eyebrow{
  font-size:11px; letter-spacing:0.28em; text-transform:uppercase;
  color:var(--gold); margin-bottom:20px; font-weight:700;
}
.intro-overlay h1{
  font-family:'Playfair Display', serif; font-weight:800;
  font-size:clamp(56px,11vw,132px);
  line-height:0.88; letter-spacing:-0.035em;
  max-width:12ch; color:var(--cream);
}
.intro-overlay h1 em{
  font-style:italic; font-weight:500; color:var(--gold-soft);
}
.intro-overlay p{
  margin-top:28px; max-width:36ch; font-size:16px; line-height:1.55;
  color:rgba(247,242,231,0.68); font-weight:400;
}
.scrolldown{
  margin-top:48px; display:flex; align-items:center; gap:14px;
  font-size:11px; letter-spacing:0.22em; text-transform:uppercase;
  color:rgba(247,242,231,0.5); font-weight:600;
}
.scrolldown .line{ width:40px; height:1px; background:rgba(247,242,231,0.35); position:relative; overflow:hidden;}
.scrolldown .line::after{
  content:""; position:absolute; left:-100%; top:0; width:100%; height:100%;
  background:var(--gold); animation:slide 1.8s ease-in-out infinite;
}
@keyframes slide{ 0%{left:-100%;} 50%{left:0;} 100%{left:100%;} }

.vignette{
  position:absolute; inset:0; pointer-events:none;
  box-shadow: inset 0 0 18vw 4vw rgba(12,24,38,0.7);
  z-index:5;
}
.grain{
  position:absolute; inset:0; pointer-events:none; opacity:0.04; z-index:6;
  transform:translateZ(0); contain:strict;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.flood{
  position:absolute; inset:0; z-index:7; pointer-events:none;
  background: radial-gradient(circle at 43% 57%, var(--ember-2) 0%, var(--ember-1) 32%, #ffb15c 52%, transparent 72%);
  opacity:0;
}

/* editorial captions — no cards */
.cap{
  position:absolute; z-index:10; max-width:280px;
  opacity:0; transform:translateY(18px);
  padding-left:16px;
  border-left:1px solid var(--gold);
  background:none;
}
.cap .num{
  font-size:10px; letter-spacing:0.22em; color:var(--gold);
  text-transform:uppercase; font-weight:700; margin-bottom:12px; display:block;
}
.cap h3{
  font-family:'Playfair Display', serif; font-weight:700; font-size:28px;
  letter-spacing:-0.03em; color:var(--cream); margin-bottom:10px; line-height:1.05;
}
.cap p{
  font-size:14px; line-height:1.55; color:rgba(247,242,231,0.72);
}
#cap1{ left:var(--pad); top:22%; }
#cap2{ right:var(--pad); bottom:16%; text-align:left; }

.reveal{
  position:absolute; inset:0; z-index:12; display:flex; flex-direction:column;
  align-items:center; justify-content:center; text-align:center;
  opacity:0; pointer-events:none;
}
.reveal .word{
  font-family:'Playfair Display', serif; font-weight:800;
  font-size:clamp(52px,10vw,128px);
  letter-spacing:-0.04em; line-height:0.9;
  color:var(--navy);
}
.reveal .tag{
  margin-top:18px; font-size:12px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--navy); font-weight:600; opacity:0.7;
}
.reveal .cta{
  margin-top:36px; padding:14px 0; border:none;
  border-bottom:1px solid var(--navy);
  color:var(--navy); font-weight:700; font-size:12px; letter-spacing:0.18em;
  text-transform:uppercase; text-decoration:none; border-radius:0;
  transition:opacity .15s ease;
}
.reveal .cta:hover{ opacity:0.5; background:transparent; color:var(--navy); }

@media (max-width:760px){
  .nav{ padding: 16px 6vw; padding-top: max(16px, env(safe-area-inset-top)); }
  .nav-links{ display:none; }
  .intro-overlay{
    padding: 0 6vw max(32px, env(safe-area-inset-bottom));
    justify-content:flex-end;
  }
  .intro-overlay h1{ font-size:clamp(48px,16vw,72px); }
  .intro-overlay p{ font-size:15px; }
  #cap1, #cap2{
    left:6vw; right:auto; max-width:78vw; text-align:left;
    padding:0 0 0 14px;
    background:none; border:none;
    border-left:1px solid var(--gold);
    border-radius:0;
    -webkit-backdrop-filter:none; backdrop-filter:none;
    text-shadow: 0 1px 12px rgba(12,24,38,0.55);
  }
  #cap1{ top:max(20%, calc(env(safe-area-inset-top) + 72px)); }
  #cap2{ bottom:max(14%, calc(env(safe-area-inset-bottom) + 20px)); }
  .cap h3{ font-size:24px; }
  .rail{ display:none; }
  .pin{ height:100svh; }
}

/* ---------- after: editorial blocks ---------- */
.after{
  position:relative; z-index:2;
  background:var(--ivory); color:var(--navy);
  padding: 140px var(--pad) 0;
  scroll-margin-top: 72px;
}
.after .head{
  display:grid; grid-template-columns: 1.2fr 0.8fr;
  gap:48px; align-items:end;
  margin-bottom:72px; padding-bottom:0;
  border:none;
}
.after .head h2{
  font-family:'Playfair Display', serif; font-weight:800;
  font-size:clamp(52px,8vw,108px);
  letter-spacing:-0.04em; line-height:0.88;
  max-width:10ch; color:var(--navy);
}
.after .head p{
  max-width:28ch; color:rgba(12,24,38,0.55);
  font-size:16px; line-height:1.55; padding-bottom:8px;
}
.grid3{
  display:grid; grid-template-columns:repeat(3,1fr); gap:12px;
}
.grid3 figure{
  position:relative; border-radius:0; overflow:hidden; aspect-ratio:3/4;
}
.grid3 img{ width:100%; height:100%; object-fit:cover; display:block; filter:none; }
.grid3 figcaption{
  position:static; padding:16px 0 0;
  background:none; color:var(--navy);
  font-size:11px; letter-spacing:0.16em; text-transform:uppercase; font-weight:700;
}

.kicker{
  font-size:11px; letter-spacing:0.26em; text-transform:uppercase;
  color:var(--gold); font-weight:700; margin-bottom:16px;
}

.stats{
  list-style:none; display:grid; grid-template-columns:repeat(4,1fr);
  gap:0; margin: 120px calc(-1 * var(--pad)) 0;
  padding: 0 var(--pad);
  background:var(--navy); color:var(--cream);
}
.stats li{
  padding:56px 0; border-right:1px solid rgba(247,242,231,0.1);
}
.stats li:last-child{ border-right:none; }
.stats strong{
  display:block; font-family:'Playfair Display', serif; font-weight:700;
  font-size:clamp(40px,5vw,72px); letter-spacing:-0.04em;
  color:var(--cream); line-height:0.9;
}
.stats span{
  display:block; margin-top:14px; font-size:11px; letter-spacing:0.2em;
  text-transform:uppercase; font-weight:600;
  color:rgba(247,242,231,0.45);
}

.story{
  margin-top:140px; display:grid;
  grid-template-columns: minmax(0,1fr) minmax(0,0.85fr);
  gap:64px 10vw; align-items:start;
  padding-bottom:20px;
}
.story h3{
  font-weight:700; font-size:clamp(44px,6vw,84px);
  letter-spacing:-0.04em; line-height:0.9;
  max-width:10ch; color:var(--navy);
}
.story-copy p{
  font-size:17px; line-height:1.65; color:rgba(12,24,38,0.62);
}
.story-copy p + p{ margin-top:20px; }

.steps-head{ margin-top:140px; max-width:14ch; scroll-margin-top:72px; }
.steps-head h3{
  font-weight:700; font-size:clamp(44px,6vw,84px);
  letter-spacing:-0.04em; line-height:0.9; color:var(--navy);
}
.steps{
  list-style:none; display:grid; grid-template-columns:repeat(4,1fr);
  gap:0; margin-top:64px;
}
.steps li{
  padding:28px 28px 0 0;
  border-top:1px solid rgba(12,24,38,0.14);
}
.steps .n{
  display:block; font-size:11px; letter-spacing:0.2em; font-weight:700;
  color:var(--gold); margin-bottom:20px;
}
.steps h4{
  font-family:'Playfair Display', serif;
  font-weight:700; font-size:26px; letter-spacing:-0.03em;
  color:var(--navy); margin-bottom:14px;
}
.steps p{ font-size:14.5px; line-height:1.6; color:rgba(12,24,38,0.55); }

.split{
  margin-top:140px; display:grid; grid-template-columns:1fr 1fr; gap:0 8vw;
  padding-top:48px; border-top:1px solid rgba(12,24,38,0.14);
}
.split article{
  background:transparent; border:none; border-radius:0; padding:0;
}
.split h3{
  font-weight:700; font-size:clamp(32px,4vw,52px);
  letter-spacing:-0.035em; line-height:0.95;
  color:var(--navy); max-width:12ch; margin-bottom:22px;
}
.split article > p:last-child{
  font-size:16px; line-height:1.65; color:rgba(12,24,38,0.58);
}
.notes{ list-style:none; }
.notes li{
  position:relative; padding:16px 0;
  font-size:15px; line-height:1.55; color:rgba(12,24,38,0.62);
  border-bottom:1px solid rgba(12,24,38,0.1);
}
.notes li:last-child{ border-bottom:none; }
.notes li::before{ content:none; }

.menu{
  margin-top:140px; display:grid;
  grid-template-columns: 0.8fr 1.2fr; gap:64px 8vw;
  scroll-margin-top:72px;
}
.menu-head h3{
  font-weight:700; font-size:clamp(44px,6vw,84px);
  letter-spacing:-0.04em; line-height:0.9; color:var(--navy);
}
.menu-list{ list-style:none; }
.menu-list li{
  display:flex; justify-content:space-between; align-items:baseline; gap:24px;
  padding:18px 0; border-bottom:1px solid rgba(12,24,38,0.12);
  font-size:18px; color:var(--navy);
}
.menu-list em{
  font-style:normal; font-size:13px; letter-spacing:0.12em;
  text-transform:uppercase; color:rgba(12,24,38,0.4); font-weight:600;
}

.care{ margin-top:140px; }
.care > h3{
  font-weight:700; font-size:clamp(44px,6vw,84px);
  letter-spacing:-0.04em; line-height:0.9; color:var(--navy);
  max-width:12ch; margin-bottom:56px;
}
.care-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:0;
}
.care-grid article{
  padding:28px 28px 0 0;
  border-top:1px solid rgba(12,24,38,0.14);
}
.care-grid h4{
  font-weight:700; font-size:24px; letter-spacing:-0.03em;
  color:var(--navy); margin:20px 0 12px;
}
.care-grid p{ font-size:14.5px; line-height:1.6; color:rgba(12,24,38,0.55); }

.quotes{ margin-top:140px; scroll-margin-top:72px; }
.quotes > h3{
  font-weight:700; font-size:clamp(44px,6vw,84px);
  letter-spacing:-0.04em; line-height:0.9; color:var(--navy);
  margin-bottom:56px;
}
.quote-list{
  list-style:none; display:grid; grid-template-columns:repeat(3,1fr); gap:0 48px;
}
.quote-list li{
  padding-top:28px; border-top:1px solid var(--gold);
}
.quote-list blockquote{
  font-family:'Playfair Display', serif; font-weight:500; font-style:italic;
  font-size:clamp(20px,2vw,26px); line-height:1.25; letter-spacing:-0.02em;
  color:var(--navy);
}
.quote-list cite{
  display:block; margin-top:22px; font-style:normal;
  font-size:11px; letter-spacing:0.16em; text-transform:uppercase;
  font-weight:600; color:rgba(12,24,38,0.4);
}

.place{
  margin-top:140px; display:grid; grid-template-columns:1fr 1fr;
  gap:64px 8vw; padding-top:48px;
  border-top:1px solid rgba(12,24,38,0.14);
}
.place h3{
  font-weight:700; font-size:clamp(36px,5vw,64px);
  letter-spacing:-0.04em; line-height:0.9; color:var(--navy);
  margin-bottom:22px;
}
.place p{ font-size:16px; line-height:1.65; color:rgba(12,24,38,0.58); }
.place-meta{ margin-top:20px; }

.faq{
  margin: 140px calc(-1 * var(--pad)) 0;
  padding: 120px var(--pad);
  background:var(--navy); color:var(--cream);
  display:grid; grid-template-columns:0.85fr 1.15fr; gap:64px 8vw;
  scroll-margin-top:72px;
}
.faq .kicker{ color:var(--gold); }
.faq-head h3{
  font-weight:700; font-size:clamp(44px,6vw,84px);
  letter-spacing:-0.04em; line-height:0.9;
  color:var(--cream); max-width:8ch;
}
.faq-list details{ border-bottom:1px solid rgba(247,242,231,0.12); }
.faq-list summary{
  cursor:pointer; list-style:none; padding:26px 40px 26px 0;
  font-family:'Playfair Display', serif; font-weight:700; font-size:26px;
  letter-spacing:-0.03em; color:var(--cream); position:relative;
  transition:opacity .15s ease;
}
.faq-list summary:hover{ opacity:0.55; }
.faq-list summary::-webkit-details-marker{ display:none; }
.faq-list summary::after{
  content:"+"; position:absolute; right:0; top:50%; transform:translateY(-50%);
  font-family:'Plus Jakarta Sans', sans-serif; font-weight:500; font-size:20px; color:var(--gold);
}
.faq-list details[open] summary::after{ content:"–"; }
.faq-list details p{
  padding:0 8px 26px 0; font-size:16px; line-height:1.65;
  color:rgba(247,242,231,0.58); max-width:52ch;
}

.ctaband{
  margin:0 calc(-1 * var(--pad)); padding: 120px var(--pad) 130px;
  scroll-margin-top:72px;
  background:var(--ivory); border:none; border-radius:0;
  text-align:left; color:var(--navy);
}
.ctaband h3{
  font-family:'Playfair Display', serif; font-weight:800;
  font-size:clamp(52px,8vw,108px);
  letter-spacing:-0.04em; line-height:0.88;
}
.ctaband p{ margin-top:22px; color:rgba(12,24,38,0.5); font-size:16px; }
.ctaband a{
  display:inline-block; margin-top:40px; padding:0 0 6px;
  background:transparent; color:var(--navy);
  font-weight:700; font-size:12px; letter-spacing:0.2em;
  text-transform:uppercase; text-decoration:none; border-radius:0;
  border-bottom:1px solid var(--gold);
  transition:opacity .15s ease;
}
.ctaband a:hover{ opacity:0.5; }

footer{
  position:relative; z-index:2; background:var(--navy);
  text-align:left; padding:28px var(--pad);
  color:rgba(247,242,231,0.35);
  font-size:11px; letter-spacing:0.12em; text-transform:uppercase;
  border:none;
}

@media (max-width:900px){
  .after .head, .steps, .split, .story, .faq, .menu, .care-grid, .quote-list, .place, .services, .booking{ grid-template-columns:1fr; }
  .stats{
    margin-left: calc(-1 * var(--pad));
    margin-right: calc(-1 * var(--pad));
    grid-template-columns: repeat(2, 1fr);
    text-align: center;
  }
  .stats li{
    padding: 36px 16px;
    border-right: none;
    border-bottom: 1px solid rgba(247,242,231,0.1);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
  }
  .stats li:nth-child(odd){ border-right: 1px solid rgba(247,242,231,0.1); }
  .stats li:nth-last-child(-n+2){ border-bottom: none; }
  .stats li:last-child{ border-bottom: none; }
  .story{ gap:28px; }
  .faq{ margin-left:0; margin-right:0; gap:28px; padding:80px 0; }
  .ctaband{ margin:0; padding:80px 0 100px; }
  .steps li{ padding:28px 0 0; }
  .split{ gap:48px; }
}
@media (max-width:760px){
  .grid3{ grid-template-columns:1fr; }
  .after{ padding: 100px 6vw 0; }
  .stats{
    margin-left: -6vw;
    margin-right: -6vw;
    width: calc(100% + 12vw);
    padding: 0;
  }
  footer{ padding:24px 6vw 36px; }
}

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .nav{ transition:none; }
  .scrolldown .line::after{ animation:none; }
}

/* ---------- Maira: services ---------- */
.services{
  display:grid; grid-template-columns:repeat(2,1fr); gap:12px;
}
.service-card{
  display:flex; flex-direction:column;
  border-top:1px solid rgba(12,24,38,0.14);
}
.service-card figure{
  aspect-ratio:4/3; overflow:hidden; margin:0;
}
.service-card img{
  width:100%; height:100%; object-fit:cover; display:block;
}
.service-body{ padding:24px 0 32px; }
.service-tag{
  font-size:11px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--gold); font-weight:700;
}
.service-body h3{
  font-size:clamp(26px,3vw,36px); margin:12px 0 10px;
  letter-spacing:-0.03em; color:var(--navy);
}
.service-body p{
  font-size:15px; line-height:1.6; color:rgba(12,24,38,0.58);
  max-width:38ch;
}
.service-body a{
  display:inline-block; margin-top:18px;
  font-size:11px; letter-spacing:0.18em; text-transform:uppercase;
  font-weight:700; color:var(--navy); text-decoration:none;
  border-bottom:1px solid var(--gold); padding-bottom:4px;
  transition:opacity .15s ease;
}
.service-body a:hover{ opacity:0.5; }

.stars{ color:var(--gold); font-size:14px; letter-spacing:2px; margin-bottom:12px; }
.owner-reply{
  margin-top:16px; padding-top:14px;
  border-top:1px solid rgba(12,24,38,0.1);
  font-size:13px; line-height:1.55; color:rgba(12,24,38,0.5);
}
.owner-reply strong{ color:var(--navy); font-weight:600; }

.hours{ list-style:none; margin-top:8px; }
.hours li{
  display:flex; justify-content:space-between; align-items:baseline;
  padding:10px 0; border-bottom:1px solid rgba(12,24,38,0.1);
  font-size:15px; color:var(--navy);
}
.hours li.closed em{ color:rgba(12,24,38,0.4); }
.hours em{ font-style:normal; font-weight:600; font-size:14px; }

.place-meta a{
  color:var(--navy); text-decoration:none;
  border-bottom:1px solid var(--gold);
  transition:opacity .15s ease;
}
.place-meta a:hover{ opacity:0.55; }

/* ---------- booking ---------- */
.booking{
  margin:140px calc(-1 * var(--pad)) 0;
  padding:100px var(--pad) 120px;
  background:var(--ivory);
  display:grid; grid-template-columns:0.9fr 1.1fr; gap:64px 8vw;
  scroll-margin-top:72px;
}
.booking-head h3{
  font-weight:700; font-size:clamp(44px,6vw,84px);
  letter-spacing:-0.04em; line-height:0.9; color:var(--navy);
}
.booking-head p{ margin-top:18px; font-size:16px; line-height:1.6; color:rgba(12,24,38,0.55); max-width:36ch; }
.booking-form{
  display:grid; grid-template-columns:1fr 1fr; gap:16px;
}
.booking-form label{ display:flex; flex-direction:column; gap:8px; }
.booking-form label.full{ grid-column:1 / -1; }
.booking-form span{
  font-size:11px; letter-spacing:0.14em; text-transform:uppercase;
  font-weight:700; color:rgba(12,24,38,0.45);
}
.booking-form input,
.booking-form select,
.booking-form textarea{
  font-family:'Plus Jakarta Sans', sans-serif; font-size:15px;
  padding:14px 16px; border:1px solid rgba(12,24,38,0.15);
  background:#fff; color:var(--navy); border-radius:0;
  transition:border-color .15s ease;
}
.booking-form input:focus,
.booking-form select:focus,
.booking-form textarea:focus{
  outline:none; border-color:var(--gold);
}
.booking-submit{
  grid-column:1 / -1; margin-top:8px;
  padding:16px 24px; background:var(--navy); color:var(--cream);
  border:none; font-family:'Plus Jakarta Sans', sans-serif;
  font-size:12px; letter-spacing:0.18em; text-transform:uppercase;
  font-weight:700; cursor:pointer;
  transition:opacity .15s ease;
}
.booking-submit:hover{ opacity:0.85; }
.booking-note{
  grid-column:1 / -1; font-size:13px; color:rgba(12,24,38,0.45);
}
.booking-done{
  padding:32px 0;
}
.booking-done h4{
  font-size:clamp(28px,4vw,40px); color:var(--navy); margin-bottom:14px;
}
.booking-done p{ font-size:16px; line-height:1.6; color:rgba(12,24,38,0.6); max-width:42ch; }
.wa-btn{
  display:inline-block; margin-top:24px; margin-right:20px;
  padding:0 0 6px; color:var(--navy); font-weight:700;
  font-size:12px; letter-spacing:0.16em; text-transform:uppercase;
  text-decoration:none; border-bottom:1px solid var(--gold);
}
#bookingReset{
  margin-top:24px; background:none; border:none;
  font-size:12px; letter-spacing:0.14em; text-transform:uppercase;
  color:rgba(12,24,38,0.45); cursor:pointer; font-weight:600;
}
#bookingReset:hover{ color:var(--navy); }

/* ---------- AI assistant ---------- */
.ai-widget{
  position:fixed; right:24px; bottom:24px; z-index:70;
  display:flex; flex-direction:column; align-items:flex-end; gap:10px;
}
.ai-hint{
  font-size:12px; font-weight:600; letter-spacing:0.04em;
  color:var(--navy); background:#fff;
  padding:8px 14px; margin:0;
  border:1px solid rgba(12,24,38,0.1);
  box-shadow:0 2px 12px rgba(12,24,38,0.08);
  transition:opacity .25s ease, transform .25s ease;
}
.ai-hint.is-hidden{ opacity:0; transform:translateY(6px); pointer-events:none; }
.ai-fab{
  position:relative; right:auto; bottom:auto;
  width:52px; height:52px; border-radius:50%;
  background:var(--navy); color:var(--cream); border:none;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
  box-shadow:0 4px 24px rgba(12,24,38,0.25);
  transition:transform .2s ease, background .2s ease;
}
.ai-fab:hover{ transform:scale(1.05); }
.ai-fab.is-active{ background:var(--gold); color:var(--navy); }
.ai-panel{
  position:fixed; right:24px; bottom:100px; z-index:70;
  width:min(360px, calc(100vw - 32px)); height:min(520px, 72vh);
  background:#fff; border:1px solid rgba(12,24,38,0.12);
  flex-direction:column;
  box-shadow:0 8px 40px rgba(12,24,38,0.18);
}
.ai-panel:not([hidden]){
  display:flex;
}
.ai-panel[hidden]{
  display:none !important;
}
.ai-header{
  display:flex; justify-content:space-between; align-items:flex-start;
  padding:16px 18px; border-bottom:1px solid rgba(12,24,38,0.08);
  background:var(--navy); color:var(--cream);
}
.ai-header strong{ display:block; font-size:14px; letter-spacing:0.06em; }
.ai-header span{ font-size:11px; opacity:0.6; margin-top:4px; display:block; }
.ai-header button{
  background:none; border:none; color:var(--cream);
  font-size:24px; line-height:1; cursor:pointer; opacity:0.7;
}
.ai-messages{
  flex:1; overflow-y:auto; padding:16px;
  display:flex; flex-direction:column; gap:10px;
}
.ai-msg{
  max-width:88%; padding:12px 14px; font-size:14px; line-height:1.5;
  border-radius:2px;
}
.ai-msg--bot{
  align-self:flex-start; background:rgba(12,24,38,0.06); color:var(--navy);
}
.ai-msg--user{
  align-self:flex-end; background:var(--navy); color:var(--cream);
}
.ai-questions{
  padding:12px; border-top:1px solid rgba(12,24,38,0.08);
  display:flex; flex-direction:column; gap:8px;
  max-height:220px; overflow-y:auto;
}
.ai-q{
  text-align:left; width:100%;
  padding:12px 14px; background:rgba(12,24,38,0.04);
  border:1px solid rgba(12,24,38,0.1); border-radius:0;
  font-family:'Plus Jakarta Sans', sans-serif; font-size:13px;
  line-height:1.4; color:var(--navy); cursor:pointer;
  transition:background .15s ease, opacity .15s ease;
}
.ai-q:hover{ background:rgba(12,24,38,0.08); }
.ai-q:disabled{ opacity:0.5; cursor:wait; }

/* ---------- nav mobile ---------- */
.nav-toggle{
  display:none; background:none; border:none; cursor:pointer;
  width:32px; height:24px; position:relative; flex-shrink:0; z-index:61;
}
.nav-toggle span{
  display:block; width:100%; height:2px; background:var(--cream);
  position:absolute; left:0; transition:transform .2s ease, opacity .2s ease;
}
.nav-toggle span:first-child{ top:4px; }
.nav-toggle span:last-child{ bottom:4px; }

footer a{ color:rgba(247,242,231,0.5); text-decoration:none; }
footer a:hover{ color:var(--cream); }
footer p + p{ margin-top:8px; }

@media (max-width:900px){
  .services{ grid-template-columns:1fr; }
  .quote-list{ grid-template-columns:1fr 1fr; gap:32px 24px; }
  .booking{ grid-template-columns:1fr; margin-left:0; margin-right:0; gap:32px; padding:80px 0 100px; }
}
@media (max-width:760px){
  .nav-toggle{ display:block; }
  .nav-links{
    position:fixed; top:0; left:0; right:0; bottom:0; z-index:55;
    background:rgba(12,24,38,0.96); flex-direction:column;
    justify-content:center; align-items:center; gap:28px;
    opacity:0; pointer-events:none; transition:opacity .25s ease;
  }
  .nav-links.is-open{ opacity:1; pointer-events:auto; }
  .nav-links a{ font-size:14px; color:var(--cream); }
  .nav-mobile-cta{
    margin-top:12px; padding-bottom:4px;
    border-bottom:1px solid var(--gold); font-weight:700;
  }
  .nav-cta{ display:none; }
  .booking-form{ grid-template-columns:1fr; }
  .quote-list{ grid-template-columns:1fr; }
  .ai-widget{ right:16px; bottom:16px; }
  .ai-panel{ right:16px; bottom:92px; width:calc(100vw - 32px); }
  .ai-hint{ font-size:11px; max-width:160px; text-align:right; }
  .service-card figure{ aspect-ratio:16/10; }
}
