/* ============================================================
   Lauren Bentley
   Palette: neutral near-black + champagne gold
   Type:    Italianno (display) + Jost (everything else)
   ============================================================ */

:root{
  --bg:        oklch(0.155 0.004 280);
  --bg-deep:   oklch(0.10 0.004 280);
  --surface:   oklch(0.21 0.005 280);
  --surface-2: oklch(0.26 0.006 280);
  --line:      oklch(0.33 0.005 280);
  --on-gold:   oklch(0.14 0.006 90);

  --ink:       oklch(0.965 0.004 90);
  --ink-soft:  oklch(0.83 0.006 90);
  --ink-mute:  oklch(0.71 0.007 90);

  --gold:      oklch(0.80 0.098 84);
  --gold-deep: oklch(0.66 0.095 78);
  --gold-glow: oklch(0.80 0.098 84 / 0.22);
  --gold-line: oklch(0.80 0.098 84 / 0.42);

  --script: "Italianno", "Snell Roundhand", cursive;
  --sans: "Jost", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;

  --pad: clamp(1.25rem, 5vw, 5rem);
  --sec: clamp(4.5rem, 11vw, 10rem);
  --maxw: 82rem;

  --e-out: cubic-bezier(.16,1,.3,1);

  --z-nav: 60;
  --z-fab: 65;
  --z-drawer: 70;
  --z-nav-over: 80;
  --z-lb: 90;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  background:var(--bg);
  color:var(--ink-soft);
  font-family:var(--sans);
  font-weight:300;
  font-size:clamp(1rem, 0.96rem + 0.2vw, 1.075rem);
  line-height:1.72;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
body.is-locked{ overflow:hidden; }

img{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }

h1,h2,h3{ font-weight:400; color:var(--ink); text-wrap:balance; margin:0; }
h1,h2{ font-family:var(--script); line-height:.98; letter-spacing:0; }
h3{ font-family:var(--sans); font-weight:400; line-height:1.25; letter-spacing:.005em; }
p{ text-wrap:pretty; }

:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; border-radius:2px; }

.skip{
  position:fixed; top:-100px; left:1rem; z-index:100;
  background:var(--gold); color:var(--on-gold);
  padding:.7rem 1.1rem; border-radius:2px;
}
.skip:focus{ top:1rem; }

.kicker{
  font-size:.74rem; letter-spacing:.28em; text-transform:uppercase;
  color:var(--gold); margin:0 0 1.1rem; font-weight:400;
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.6rem;
  padding:.95rem 1.7rem; min-height:48px;
  font-size:.79rem; letter-spacing:.18em; text-transform:uppercase; font-weight:400;
  border:1px solid transparent; border-radius:2px;
  position:relative; overflow:hidden; isolation:isolate;
  transition:color .5s var(--e-out), border-color .5s var(--e-out),
             transform .5s var(--e-out), box-shadow .5s var(--e-out);
}
.btn::after{
  content:""; position:absolute; inset:0; z-index:-1;
  transform:translateY(101%); transition:transform .6s var(--e-out);
}
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0); }

.btn--gold{
  background:linear-gradient(100deg, var(--gold-deep), var(--gold));
  color:var(--on-gold); box-shadow:0 10px 34px -16px var(--gold-glow);
}
.btn--gold::after{ background:var(--ink); }
.btn--gold:hover{ color:var(--on-gold); box-shadow:0 18px 44px -18px var(--gold-glow); }
.btn--gold:hover::after{ transform:translateY(0); }

.btn--line{ border-color:var(--gold-line); color:var(--ink); }
.btn--line::after{ background:var(--gold); }
.btn--line:hover{ color:var(--on-gold); border-color:var(--gold); }
.btn--line:hover::after{ transform:translateY(0); }

.btn--ghost{
  border-color:oklch(0.80 0.098 84 / .3); color:var(--ink);
  padding:.7rem 1.15rem; min-height:42px;
}
.btn--ghost:hover{ border-color:var(--gold); color:var(--gold); }

.btn--lg{ padding:1.15rem 2.3rem; font-size:.82rem; }

.ico{ width:1.05em; height:1.05em; fill:currentColor; flex:none; }

.actions{ display:flex; flex-wrap:wrap; gap:.9rem; }
.actions--center{ justify-content:center; }

.link-gold{
  display:inline-flex; align-items:center; gap:.55rem;
  color:var(--gold); font-size:.8rem; letter-spacing:.16em; text-transform:uppercase;
  border-bottom:1px solid oklch(0.80 0.098 84 / .35); padding-bottom:.4rem;
  transition:gap .45s var(--e-out), border-color .45s var(--e-out);
}
.link-gold:hover{ gap:1rem; border-color:var(--gold); }

/* ---------- nav ---------- */
.nav{
  position:fixed; inset:0 0 auto; z-index:var(--z-nav);
  padding:clamp(.85rem,2vw,1.4rem) var(--pad);
  border-bottom:1px solid transparent;
  transition:background .6s var(--e-out), border-color .6s var(--e-out), backdrop-filter .6s;
}
.nav.is-stuck{
  background:oklch(0.10 0.004 280 / .84);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom-color:oklch(0.33 0.005 280 / .5);
}
.nav.is-over{
  z-index:var(--z-nav-over); background:transparent;
  backdrop-filter:none; border-bottom-color:transparent;
}
.nav__inner{
  max-width:var(--maxw); margin-inline:auto;
  display:flex; align-items:center; gap:1.4rem;
}
.wordmark{ display:flex; align-items:center; margin-right:auto; }
.wordmark__name{
  font-family:var(--script); font-size:2rem; color:var(--ink);
  letter-spacing:.01em; line-height:1; padding-bottom:.18rem;
}
.nav__links{ display:flex; gap:1.6rem; }
.nav__links a{
  font-size:.74rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-mute);
  position:relative; padding-block:.35rem; transition:color .4s var(--e-out);
}
.nav__links a::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:100%;
  background:var(--gold); transform:scaleX(0); transform-origin:right;
  transition:transform .55s var(--e-out);
}
.nav__links a:hover{ color:var(--ink); }
.nav__links a:hover::after{ transform:scaleX(1); transform-origin:left; }
.nav__links a[aria-current="page"]{ color:var(--gold); }
.nav__links a[aria-current="page"]::after{ transform:scaleX(1); }

/* menu / close toggle: both bars centred in the same box in both states,
   so the icon morphs in place instead of jumping */
.burger{
  display:none; position:relative;
  width:46px; height:46px; margin-right:-10px;
  flex-direction:column; align-items:center; justify-content:center; gap:7px;
}
.burger span{
  display:block; height:1px; width:24px; background:var(--ink);
  transform-origin:center;
  transition:transform .55s var(--e-out), background-color .45s var(--e-out);
}
.burger span:nth-child(2){ transform:scaleX(.66); }
.burger::before{
  content:""; position:absolute; inset:-1px; border-radius:50%;
  border:1px solid oklch(0.80 0.098 84 / .55);
  opacity:0; transform:scale(.6);
  transition:opacity .5s var(--e-out), transform .55s var(--e-out);
}
.burger[aria-expanded="true"]::before{ opacity:1; transform:scale(1); }
.burger[aria-expanded="true"] span{ background:var(--gold); }
.burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(4px) rotate(45deg) scaleX(.75); }
.burger[aria-expanded="true"] span:nth-child(2){ transform:translateY(-4px) rotate(-45deg) scaleX(.75); }

/* ---------- drawer ---------- */
.drawer{
  position:fixed; inset:0; z-index:var(--z-drawer);
  background:var(--bg-deep);
  padding:clamp(6rem,18vw,8rem) var(--pad) calc(var(--pad) + env(safe-area-inset-bottom));
  display:flex; flex-direction:column; justify-content:space-between;
  opacity:0; transition:opacity .45s var(--e-out);
  overflow-y:auto;
}
.drawer[hidden]{ display:none; }
.drawer.is-open{ opacity:1; }
.drawer__nav{ display:flex; flex-direction:column; }
.drawer__nav a{
  font-family:var(--sans); font-weight:400;
  font-size:clamp(1.02rem,4.2vw,1.2rem); line-height:1.2;
  letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink); padding:1.05rem 0;
  border-bottom:1px solid oklch(0.33 0.005 280 / .45);
  opacity:0; transform:translateY(14px);
  transition:opacity .6s var(--e-out), transform .6s var(--e-out), color .3s;
}
.drawer.is-open .drawer__nav a{ opacity:1; transform:none; }
.drawer__nav a[aria-current="page"]{ color:var(--gold); }
.drawer.is-open .drawer__nav a:nth-child(1){ transition-delay:.05s; }
.drawer.is-open .drawer__nav a:nth-child(2){ transition-delay:.10s; }
.drawer.is-open .drawer__nav a:nth-child(3){ transition-delay:.15s; }
.drawer.is-open .drawer__nav a:nth-child(4){ transition-delay:.20s; }
.drawer.is-open .drawer__nav a:nth-child(5){ transition-delay:.25s; }
.drawer.is-open .drawer__nav a:nth-child(6){ transition-delay:.30s; }
.drawer.is-open .drawer__nav a:nth-child(7){ transition-delay:.35s; }
.drawer.is-open .drawer__nav a:nth-child(8){ transition-delay:.40s; }
.drawer__foot{ display:grid; gap:1.1rem; padding-top:2.2rem; }
.drawer__foot .btn{ width:100%; }
.drawer__tel{ text-align:center; color:var(--gold); letter-spacing:.16em; }

/* ---------- hero ---------- */
.hero{
  position:relative; min-height:100svh;
  display:grid; align-items:end;
  padding:calc(var(--pad) + 5rem) var(--pad) clamp(3.5rem,8vw,5rem);
  overflow:hidden; isolation:isolate;
}
.hero__media{ position:absolute; inset:-8% 0; z-index:-2; will-change:transform; }
.hero__media img{
  width:100%; height:100%; object-fit:cover; object-position:52% 22%;
  filter:saturate(.9) contrast(1.04) brightness(.82);
  animation:heroIn 1.8s var(--e-out) both;
}
@keyframes heroIn{ from{ transform:scale(1.1); opacity:0; } to{ transform:scale(1); opacity:1; } }
.hero__veil{
  position:absolute; inset:0;
  background:
    linear-gradient(to top, var(--bg) 2%, oklch(0.155 0.004 280 / .82) 34%,
                    oklch(0.155 0.004 280 / .26) 66%, oklch(0.155 0.004 280 / .55) 100%),
    linear-gradient(to right, oklch(0.10 0.004 280 / .88) 0%,
                    oklch(0.10 0.004 280 / .25) 55%, transparent 80%);
}
.hero__copy{ max-width:var(--maxw); margin-inline:auto; width:100%; position:relative; }
.hero h1{
  font-size:clamp(4.6rem, 15vw, 8.6rem);
  line-height:.86; display:flex; flex-direction:column; margin:0 0 1.4rem;
}
.hero h1 span{ display:block; }
.hero__last{ color:var(--gold); padding-left:.09em; }
.lede{
  max-width:34ch; font-size:clamp(1.05rem,2.4vw,1.3rem);
  color:var(--ink); line-height:1.6; margin:0 0 2.2rem;
}
.hero__rail{
  position:absolute; right:var(--pad); top:50%; transform:translateY(-50%);
  display:flex; flex-direction:column; align-items:center; gap:1.1rem;
  font-size:.7rem; letter-spacing:.24em; text-transform:uppercase; color:var(--ink-mute);
}
.hero__rail span{ writing-mode:vertical-rl; }
.hero__rail i{ width:1px; height:2rem; background:oklch(0.80 0.098 84 / .5); }
.hero__scroll{
  position:absolute; left:50%; bottom:1.4rem; translate:-50% 0;
  width:1px; height:3.2rem; background:var(--line); overflow:hidden;
}
.hero__scroll span{ position:absolute; inset:0; background:var(--gold); animation:scrollDot 2.4s ease-in-out infinite; }
@keyframes scrollDot{
  0%{ transform:translateY(-100%); } 50%{ transform:translateY(0); } 100%{ transform:translateY(100%); }
}

/* ---------- inner page header ---------- */
.phead{
  position:relative; min-height:clamp(24rem, 66svh, 40rem);
  display:grid; align-items:end;
  padding:calc(var(--pad) + 6rem) var(--pad) clamp(3rem,6vw,4.5rem);
  overflow:hidden; isolation:isolate;
}
.phead__media{ position:absolute; inset:-6% 0; z-index:-2; will-change:transform; }
.phead__media img{
  width:100%; height:100%; object-fit:cover; object-position:52% 24%;
  filter:saturate(.88) brightness(.78);
  animation:heroIn 1.6s var(--e-out) both;
}
.phead__veil{
  position:absolute; inset:0;
  background:
    linear-gradient(to top, var(--bg) 1%, oklch(0.155 0.004 280 / .8) 42%, oklch(0.155 0.004 280 / .3) 100%),
    linear-gradient(to right, oklch(0.10 0.004 280 / .8) 0%, transparent 70%);
}
.phead__copy{ max-width:var(--maxw); margin-inline:auto; width:100%; position:relative; }
.phead h1{ font-size:clamp(3.6rem,11vw,7rem); margin-bottom:1rem; }
.phead .lede{ margin-bottom:0; max-width:44ch; }

/* ---------- section head ---------- */
.sec-head{ max-width:var(--maxw); margin:0 auto clamp(2.5rem,6vw,4rem); }
.sec-head h2{ font-size:clamp(3.1rem,8vw,5.2rem); margin-bottom:.6rem; }
.sec-head p{ color:var(--ink-mute); max-width:54ch; margin:0; }

/* ---------- split ---------- */
.split{
  max-width:var(--maxw); margin-inline:auto;
  padding:var(--sec) var(--pad);
  display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(2.5rem,6vw,5.5rem);
  align-items:center;
}
.split--flip .split__text{ order:2; }
.split h2{ font-size:clamp(2.9rem,7vw,4.7rem); margin-bottom:1.4rem; max-width:15ch; }
.split p{ max-width:62ch; margin:0 0 1.3rem; }
.split__media{ position:relative; }
.split__media img{ width:100%; aspect-ratio:3/4; object-fit:cover; filter:saturate(.92); }
.split__media::before{
  content:""; position:absolute; inset:1.1rem -1.1rem -1.1rem 1.1rem;
  border:1px solid oklch(0.80 0.098 84 / .38); z-index:-1;
}
.split--flip .split__media::before{ inset:1.1rem 1.1rem -1.1rem -1.1rem; }
.split__tag{
  position:absolute; left:0; bottom:0; transform:translate(-6%, 45%);
  background:var(--bg-deep); border:1px solid var(--line);
  padding:.7rem 1.1rem; font-size:.68rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--gold); white-space:nowrap;
}
.quote{ margin:2.4rem 0 1.6rem; padding-left:1.5rem; border-left:1px solid var(--gold-line); }
.quote blockquote{
  margin:0; font-family:var(--script); font-size:clamp(2.2rem,5vw,2.9rem);
  line-height:1.15; color:var(--ink);
}
.quote figcaption{
  margin-top:.6rem; font-size:.74rem; letter-spacing:.24em;
  text-transform:uppercase; color:var(--gold);
}

/* ---------- full width band ---------- */
.band{
  position:relative; display:grid; place-items:center;
  min-height:clamp(20rem,52svh,34rem);
  padding:var(--sec) var(--pad); overflow:hidden; isolation:isolate;
}
.band__media{ position:absolute; inset:-10% 0; z-index:-2; will-change:transform; }
.band__media img{ width:100%; height:100%; object-fit:cover; filter:saturate(.85) brightness(.5); }
.band__quote{
  margin:0; max-width:24ch; text-align:center;
  font-family:var(--script); font-size:clamp(2.6rem,7vw,4.6rem);
  line-height:1.05; color:var(--ink);
  text-shadow:0 2px 30px oklch(0.05 0 0 / .7);
}

/* ---------- gallery ---------- */
.gallery{ padding:var(--sec) var(--pad); background:var(--bg-deep); }
.grid{
  max-width:var(--maxw); margin-inline:auto;
  display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(.6rem,1.5vw,1.1rem);
}
.shot{ position:relative; overflow:hidden; padding:0; display:block; background:var(--surface); }
.shot img{
  width:100%; height:100%; object-fit:cover; aspect-ratio:3/4;
  filter:saturate(.88) brightness(.92);
  transition:transform 1.1s var(--e-out), filter .8s var(--e-out);
}
.shot--wide{ grid-column:span 2; }
.shot--wide img{ aspect-ratio:16/10; }
.shot::after{
  content:""; position:absolute; inset:.5rem;
  border:1px solid oklch(0.80 0.098 84 / .55);
  opacity:0; transform:scale(1.04); pointer-events:none;
  transition:opacity .6s var(--e-out), transform .6s var(--e-out);
}
.shot:hover img, .shot:focus-visible img{ transform:scale(1.06); filter:saturate(1) brightness(1); }
.shot:hover::after, .shot:focus-visible::after{ opacity:1; transform:scale(1); }
.grid__more{ max-width:var(--maxw); margin:clamp(2rem,4vw,3rem) auto 0; }

/* ---------- services ---------- */
.svc{ padding:var(--sec) var(--pad); }
.svc__list{
  max-width:var(--maxw); margin-inline:auto; padding:0; list-style:none;
  border-top:1px solid oklch(0.33 0.005 280 / .55);
}
.svc__list li{
  display:grid; grid-template-columns:4rem 1fr 9rem;
  gap:clamp(1rem,3vw,2.5rem); align-items:start;
  padding:clamp(1.8rem,3.5vw,3rem) clamp(.4rem,2vw,1.2rem);
  border-bottom:1px solid oklch(0.33 0.005 280 / .55);
  position:relative; isolation:isolate;
}
.svc__list li::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(90deg, var(--surface), transparent);
  opacity:0; transition:opacity .6s var(--e-out);
}
.svc__list li:hover::before{ opacity:1; }
.svc__list li > *{ transition:transform .6s var(--e-out); }
.svc__list li:hover > *{ transform:translateX(.5rem); }
.svc__n{
  font-family:var(--sans); font-size:.85rem; color:var(--gold);
  letter-spacing:.2em; padding-top:.75rem;
}
.svc__list h3{ font-size:clamp(1.45rem,3.4vw,2.05rem); margin-bottom:.7rem; }
.svc__list p{ margin:0 0 .9rem; max-width:62ch; color:var(--ink-mute); }
.svc__list p:last-child{ margin-bottom:0; }
.svc__meta{
  font-size:.72rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-mute); text-align:right; padding-top:.9rem;
}

/* ---------- profile ---------- */
.profile{ padding:var(--sec) var(--pad); background:var(--bg-deep); }
.profile__cols{
  max-width:var(--maxw); margin-inline:auto;
  display:grid; grid-template-columns:1fr 1fr .9fr; gap:clamp(1.5rem,4vw,3.5rem);
  align-items:start;
}
.specs{ margin:0; }
.specs > div{
  display:flex; justify-content:space-between; align-items:baseline; gap:1.5rem;
  padding:1.05rem 0; border-bottom:1px solid oklch(0.33 0.005 280 / .55);
}
.specs dt{ font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--ink-mute); }
.specs dd{
  margin:0; font-weight:400; font-size:1.02rem; color:var(--ink);
  text-align:right; letter-spacing:.01em;
}
.profile__aside{
  background:var(--surface); padding:clamp(1.6rem,3vw,2.2rem);
  border:1px solid oklch(0.33 0.005 280 / .6);
}
.profile__where{ margin:0 0 1.4rem; display:grid; gap:.25rem; }
.profile__where strong{ font-family:var(--script); font-weight:400; font-size:3rem; color:var(--ink); line-height:1; }
.profile__where span{ font-size:.85rem; color:var(--ink-mute); }
.ticks{ list-style:none; margin:0 0 1.8rem; padding:0; display:grid; gap:.7rem; }
.ticks li{ position:relative; padding-left:1.6rem; font-size:.95rem; }
.ticks li::before{ content:"✦"; position:absolute; left:0; top:-.05em; color:var(--gold); font-size:.75rem; }

/* ---------- rates ---------- */
.rates{ padding:var(--sec) var(--pad); }
.rates__table{ max-width:64rem; margin-inline:auto; border-top:1px solid oklch(0.33 0.005 280 / .7); }
.rates__head{
  display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:1.5rem;
  padding:1.1rem clamp(.4rem,1.6vw,1.2rem);
  border-bottom:1px solid oklch(0.33 0.005 280 / .7);
}
.rates__head span{ font-size:.7rem; letter-spacing:.24em; text-transform:uppercase; color:var(--gold); }
.rate{
  display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:1.5rem; align-items:center;
  padding:1.35rem clamp(.4rem,1.6vw,1.2rem);
  border-bottom:1px solid oklch(0.33 0.005 280 / .45);
  position:relative; isolation:isolate;
}
.rate::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(90deg, var(--surface), transparent);
  opacity:0; transition:opacity .55s var(--e-out);
}
.rate:hover::before{ opacity:1; }
.rate__dur{ font-size:1.08rem; color:var(--ink); display:grid; gap:.15rem; letter-spacing:.01em; }
.rate__dur em{
  font-style:normal; font-size:.66rem; letter-spacing:.22em;
  text-transform:uppercase; color:var(--gold);
}
.rate__cell{ display:grid; gap:.1rem; }
.rate__cell b{
  font-weight:400; font-size:1.3rem; color:var(--ink);
  letter-spacing:.02em; font-variant-numeric:lining-nums tabular-nums;
}
.rate__cell i{ font-style:normal; font-size:.82rem; color:var(--ink-mute); }
.rate__lbl{ display:none; }
.rate--feature .rate__cell b{ color:var(--gold); }
.rates__note{ max-width:64rem; margin:2rem auto 0; font-size:.86rem; color:var(--ink-mute); }

/* ---------- areas ---------- */
.areas{ padding:var(--sec) var(--pad); background:var(--bg-deep); }
.areas__list{
  max-width:var(--maxw); margin-inline:auto; padding:0; list-style:none;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));
  gap:1px; background:oklch(0.33 0.005 280 / .5); border:1px solid oklch(0.33 0.005 280 / .5);
}
.areas__list li{
  background:var(--bg-deep); padding:clamp(1.6rem,3vw,2.2rem);
  transition:background .5s var(--e-out);
}
.areas__list li:hover{ background:var(--surface); }
.areas__list h3{ font-size:1.15rem; color:var(--gold); margin-bottom:.5rem; letter-spacing:.06em; }
.areas__list p{ margin:0; font-size:.95rem; color:var(--ink-mute); }

/* ---------- faq ---------- */
.faq{ padding:var(--sec) var(--pad); }
.faq__list{ max-width:56rem; margin-inline:auto; border-top:1px solid oklch(0.33 0.005 280 / .6); }
.faq__item{ border-bottom:1px solid oklch(0.33 0.005 280 / .6); }
.faq__item summary{
  list-style:none; cursor:pointer; display:flex; align-items:baseline; gap:1.2rem;
  padding:1.5rem .25rem; font-size:1.08rem; color:var(--ink);
  transition:color .35s var(--e-out);
}
.faq__item summary::-webkit-details-marker{ display:none; }
.faq__item summary::after{
  content:"+"; margin-left:auto; color:var(--gold); font-size:1.5rem; line-height:1;
  transition:transform .45s var(--e-out);
}
.faq__item[open] summary::after{ transform:rotate(45deg); }
.faq__item summary:hover{ color:var(--gold); }
.faq__a{ padding:0 3rem 1.6rem .25rem; }
.faq__a p{ margin:0; color:var(--ink-mute); max-width:62ch; }

/* ---------- steps ---------- */
.steps{ padding:var(--sec) var(--pad); }
.steps__list{
  max-width:var(--maxw); margin-inline:auto; padding:0; list-style:none;
  counter-reset:step;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(15rem,1fr)); gap:clamp(1.5rem,3vw,2.5rem);
}
.steps__list li{ counter-increment:step; padding-top:2.6rem; position:relative; }
.steps__list li::before{
  content:counter(step,decimal-leading-zero);
  position:absolute; top:0; left:0;
  font-size:.8rem; letter-spacing:.2em; color:var(--gold);
}
.steps__list li::after{
  content:""; position:absolute; top:1.9rem; left:0; width:2.2rem; height:1px; background:var(--gold-line);
}
.steps__list h3{ font-size:1.2rem; margin-bottom:.6rem; }
.steps__list p{ margin:0; color:var(--ink-mute); font-size:.98rem; }

/* ---------- rules ---------- */
.rules{ list-style:none; margin:0; padding:0; display:grid; gap:1.3rem; }
.rules li{
  padding-top:1.3rem; border-top:1px solid oklch(0.33 0.005 280 / .55);
  color:var(--ink-mute); font-size:.98rem;
}
.rules strong{
  display:block; font-weight:400; font-size:1.02rem; color:var(--ink);
  letter-spacing:.14em; text-transform:uppercase; margin-bottom:.4rem;
}

/* ---------- prose ---------- */
.prose{ max-width:44rem; margin-inline:auto; padding:var(--sec) var(--pad); }
.prose h2{ font-size:clamp(2.6rem,6vw,3.6rem); margin:2.6rem 0 1rem; }
.prose h2:first-child{ margin-top:0; }
.prose p{ margin:0 0 1.2rem; }

/* ---------- booking cta ---------- */
.book{
  position:relative; padding:calc(var(--sec) * 1.05) var(--pad);
  text-align:center; overflow:hidden;
  background:radial-gradient(120% 90% at 50% 0%, oklch(0.235 0.012 85) 0%, var(--bg-deep) 62%);
  border-top:1px solid oklch(0.33 0.005 280 / .5);
}
.book::before{
  content:""; position:absolute; inset:auto 50% -55% 50%; translate:-50% 0;
  width:min(120vw, 62rem); aspect-ratio:1; pointer-events:none;
  background:radial-gradient(circle, var(--gold-glow) 0%, transparent 62%);
}
.book__inner{ max-width:46rem; margin-inline:auto; position:relative; }
.book h2{ font-size:clamp(3.3rem,9vw,5.8rem); margin-bottom:1.1rem; }
.book__lede{ color:var(--ink); margin:0 auto 2.4rem; max-width:46ch; }
.book__note{ margin:2.4rem 0 0; font-size:.8rem; letter-spacing:.1em; color:var(--ink-mute); }

/* ---------- breadcrumbs ---------- */
.crumbs{ padding:1.6rem var(--pad) 0; background:var(--bg-deep); }
.crumbs ol{
  max-width:var(--maxw); margin-inline:auto; padding:0; list-style:none;
  display:flex; flex-wrap:wrap; gap:.6rem;
  font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-mute);
}
.crumbs li + li::before{ content:"/"; margin-right:.6rem; color:var(--gold); }
.crumbs a:hover{ color:var(--gold); }

/* ---------- footer ---------- */
.foot{
  background:var(--bg-deep); border-top:1px solid oklch(0.33 0.005 280 / .5);
  padding:clamp(3rem,7vw,5rem) var(--pad) calc(2rem + env(safe-area-inset-bottom));
}
.foot__inner{
  max-width:var(--maxw); margin-inline:auto;
  display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:clamp(2rem,4vw,3.5rem);
}
.foot__brand p{ margin:.8rem 0 1.6rem; font-size:.92rem; color:var(--ink-mute); max-width:38ch; }
.foot__name{ font-family:var(--script); font-size:2.4rem; color:var(--ink); line-height:1; }
.foot__col h2{
  font-family:var(--sans); font-size:.7rem; letter-spacing:.24em;
  text-transform:uppercase; color:var(--gold); margin-bottom:1.1rem;
}
.foot__col ul{ list-style:none; margin:0; padding:0; display:grid; gap:.6rem; }
.foot__col a{ font-size:.94rem; color:var(--ink-mute); transition:color .35s var(--e-out); }
.foot__col a:hover{ color:var(--gold); }
.foot__col li{ font-size:.94rem; color:var(--ink-mute); }
.foot__legal{
  max-width:var(--maxw); margin:clamp(2.5rem,5vw,4rem) auto 0;
  padding-top:1.6rem; border-top:1px solid oklch(0.33 0.005 280 / .5);
  font-size:.78rem; color:var(--ink-mute);
}

/* ---------- sticky mobile CTA ---------- */
.fab{
  position:fixed; z-index:var(--z-fab);
  left:var(--pad); right:var(--pad); bottom:calc(1rem + env(safe-area-inset-bottom));
  display:none; align-items:center; justify-content:center; gap:.65rem;
  padding:1.05rem 1.3rem; min-height:54px;
  background:linear-gradient(100deg, var(--gold-deep), var(--gold));
  color:var(--on-gold);
  font-size:.8rem; letter-spacing:.18em; text-transform:uppercase;
  border-radius:2px; box-shadow:0 14px 40px -14px oklch(0.05 0 0 / .9);
  transform:translateY(160%); transition:transform .7s var(--e-out);
}
.fab.is-in{ transform:translateY(0); }
.fab .ico{ width:1.2em; height:1.2em; }

/* ---------- lightbox ---------- */
.lb{
  border:0; padding:0; margin:0; inset:0;
  max-width:100%; max-height:100%; width:100%; height:100%;
  background:oklch(0.07 0.003 280 / .97); color:var(--ink); place-items:center;
}
.lb[open]{ display:grid; }
.lb::backdrop{ background:oklch(0.07 0.003 280 / .9); }
.lb img{
  max-width:min(92vw, 46rem); max-height:82svh; object-fit:contain; width:auto;
  animation:lbIn .55s var(--e-out) both;
}
@keyframes lbIn{ from{ opacity:0; transform:scale(.97); } to{ opacity:1; transform:none; } }
.lb__x{
  position:absolute; top:1rem; right:1rem; width:48px; height:48px;
  font-size:2rem; line-height:1; color:var(--ink-mute); transition:color .3s;
}
.lb__x:hover{ color:var(--gold); }
.lb__nav{
  position:absolute; top:50%; translate:0 -50%;
  width:52px; height:52px; font-size:2.4rem; line-height:1;
  color:var(--ink-mute); border:1px solid oklch(0.33 0.005 280 / .7); border-radius:50%;
  display:grid; place-items:center; padding-bottom:.2rem;
  transition:color .35s, border-color .35s;
}
.lb__nav:hover{ color:var(--gold); border-color:var(--gold); }
.lb__nav--prev{ left:clamp(.6rem,3vw,2.5rem); }
.lb__nav--next{ right:clamp(.6rem,3vw,2.5rem); }
.lb__count{
  position:absolute; bottom:1.4rem; left:50%; translate:-50% 0; margin:0;
  font-size:.75rem; letter-spacing:.24em; color:var(--ink-mute);
}

/* ---------- reveal ---------- */
.reveal{ opacity:1; }
html.js .reveal{
  opacity:0; transform:translateY(26px);
  transition:opacity .95s var(--e-out), transform .95s var(--e-out);
  transition-delay:calc(var(--d, 0) * 110ms);
}
html.js .reveal.is-in{ opacity:1; transform:none; }

/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width: 1180px){
  .nav__links{ gap:1.15rem; }
  .nav__links a{ font-size:.7rem; letter-spacing:.14em; }
  .svc__list li{ grid-template-columns:3.5rem 1fr 8rem; }
}

@media (max-width: 1080px){
  .profile__cols{ grid-template-columns:1fr 1fr; }
  .profile__aside{ grid-column:1 / -1; }
  .hero__rail{ display:none; }
  .foot__inner{ grid-template-columns:1fr 1fr; }
  .foot__brand{ grid-column:1 / -1; }
}

@media (max-width: 960px){
  .nav__links, .nav__cta{ display:none; }
  .burger{ display:flex; }
}

@media (max-width: 900px){
  .split, .split--flip{ grid-template-columns:1fr; }
  .split--flip .split__text{ order:0; }
  .split__media{ order:-1; max-width:26rem; }
  .split__media::before,
  .split--flip .split__media::before{ inset:.8rem -.8rem -.8rem .8rem; }
  .split__tag{ transform:translate(0,45%); left:.8rem; }
  .svc__list li{ grid-template-columns:3.2rem 1fr; }
  .svc__meta{ grid-column:2; text-align:left; padding-top:.9rem; }
  .fab{ display:flex; }
  .foot{ padding-bottom:calc(6rem + env(safe-area-inset-bottom)); }
  .book{ padding-bottom:calc(var(--sec) + 3rem); }
  .hero__scroll{ display:none; }
}

@media (max-width: 700px){
  .grid{ grid-template-columns:repeat(2,1fr); }
  .shot--wide{ grid-column:span 2; }
  .profile__cols{ grid-template-columns:1fr; gap:0; }
  .specs + .specs > div:first-child{ border-top:0; }
  .profile__aside{ margin-top:2.5rem; }
  .lede{ max-width:30ch; }
  .foot__inner{ grid-template-columns:1fr 1fr; }
  .rates__head{ display:none; }
  .rate{ grid-template-columns:1fr 1fr; gap:1rem 1.25rem; padding:1.35rem 0; }
  .rate__dur{ grid-column:1 / -1; font-size:1.35rem; }
  .rate__lbl{
    display:block; font-size:.66rem; letter-spacing:.22em;
    text-transform:uppercase; color:var(--gold); margin-bottom:.2rem;
  }
  .rate__cell b{ font-size:1.2rem; }
  .lb__nav{ display:none; }
  .lb img{ max-height:74svh; }
  .lb__count::after{ content:" · swipe"; }
  .faq__a{ padding-right:1rem; }
}

@media (max-width: 420px){
  .hero h1{ font-size:clamp(4rem, 19vw, 5.8rem); }
  .actions .btn{ width:100%; }
  .specs dd{ font-size:1rem; }
  .foot__inner{ grid-template-columns:1fr; }
}

/* short phones: keep the whole drawer on one screen */
@media (max-height: 760px){
  .drawer{ padding-top:4.8rem; }
  .drawer__nav a{ padding:.72rem 0; }
  .drawer__foot{ padding-top:1.2rem; gap:.8rem; }
}

@media (hover: none){
  .btn:hover{ transform:none; }
  .svc__list li:hover > *{ transform:none; }
}

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  html.js .reveal{ opacity:1; transform:none; }
  .hero__media img, .phead__media img{ animation:none; }
  .hero__scroll{ display:none; }
}
