:root {
  --porcelain: #F7F3EE;
  --paper: #FFFDFA;
  --ink: #1F1A24;
  --plum: #2E1E2A;
  --sage: #3D6B52;
  --blush: #E9B9A7;
  --honey: #D9A35B;
  --muted: #5A5260;
  --line: rgba(31, 26, 36, .08);
  --serif: "Cormorant Garamond", Georgia, serif;
  --sans: "Manrope", system-ui, sans-serif;
  --ease: cubic-bezier(.2, .8, .2, 1);
  --ease-spring: cubic-bezier(.32, .72, 0, 1);
  --shadow-soft: 0 8px 40px rgba(31, 26, 36, .06), 0 2px 12px rgba(31, 26, 36, .04);
  --shadow-deep: 0 24px 80px rgba(46, 30, 42, .12), 0 8px 24px rgba(46, 30, 42, .06);
  --shadow-glow: 0 0 0 1px rgba(233, 185, 167, .15), 0 20px 60px rgba(46, 30, 42, .1);
  --inner-highlight: inset 0 1px 1px rgba(255, 255, 255, .18);
  --grain-opacity: .035;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--porcelain); color: var(--ink); font: 400 17px/1.6 var(--sans); -webkit-font-smoothing: antialiased; }
a { color: inherit; }
h1, h2, h3 { font-family: var(--serif); font-weight: 400; line-height: 1.02; margin: 0; }
h2 { font-size: clamp(2.6rem, 6vw, 5rem); letter-spacing: -.01em; }
em { font-style: italic; color: var(--sage); }
.eyebrow { font-size: .78rem; letter-spacing: .22em; text-transform: uppercase; color: var(--sage); margin: 0 0 1rem; font-weight: 600; }
.eyebrow--light { color: var(--blush); }
.grain { position: fixed; inset: 0; z-index: 100; pointer-events: none; opacity: .05; mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E"); }

/* ---------- nav ---------- */
.nav { position: fixed; inset: 0 0 auto; z-index: 50; display: flex; align-items: center; justify-content: space-between; gap: 2rem;
  padding: 1rem clamp(1rem, 4vw, 3rem); transition: all .6s var(--ease-spring); }
.nav.is-solid { background: rgba(247, 243, 238, .72); backdrop-filter: blur(24px) saturate(1.4); box-shadow: var(--shadow-soft); border-bottom: 1px solid rgba(255,255,255,.4); }
.logo { display: flex; align-items: center; gap: .7rem; text-decoration: none; font-weight: 600; letter-spacing: .02em; }
.logo img { transition: transform .7s var(--ease-spring); filter: drop-shadow(0 2px 8px rgba(31,26,36,.12)); }
.logo:hover img { transform: rotate(-8deg) scale(1.06); }
.logo i { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--ink); color: var(--blush);
  font: italic 500 1.5rem var(--serif); transition: transform .7s var(--ease-spring); box-shadow: 0 4px 16px rgba(31,26,36,.2); }
.logo:hover i { transform: rotate(-20deg) scale(1.08); }
.nav nav { display: flex; gap: 2rem; }
.nav nav a { text-decoration: none; font-size: .92rem; position: relative; transition: color .4s var(--ease); }
.nav nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -4px; height: 1px; background: currentColor; transition: right .5s var(--ease-spring); }
.nav nav a:hover::after { right: 0; }
.nav-book { position: relative; overflow: hidden; padding: .7rem 1.3rem; border: 1px solid var(--ink); border-radius: 99px; text-decoration: none; font-weight: 600; font-size: .9rem;
  transition: transform .4s var(--ease-spring), box-shadow .4s var(--ease); }
.nav-book::before { content: ""; position: absolute; inset: 0; background: var(--ink); transform: translateY(101%); transition: transform .5s var(--ease-spring); border-radius: inherit; }
.nav-book span { position: relative; transition: color .5s var(--ease); }
.nav-book:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(31,26,36,.15); }
.nav-book:hover::before { transform: none; }
.nav-book:hover span { color: var(--porcelain); }
.nav-book:active { transform: scale(.97); }

/* ---------- hero ---------- */
.hero { height: 230vh; position: relative; }
.hero-pin { position: sticky; top: 0; height: 100vh; overflow: hidden; display: grid; align-items: center; }
.strands { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-copy { position: relative; z-index: 2; max-width: 820px; padding-top: 4rem; padding: 0 clamp(1.2rem, 6vw, 6rem); }
.hero-kicker { font-size: .8rem; letter-spacing: .26em; text-transform: uppercase; color: var(--muted); margin: 0 0 1.4rem; }
.hero-title { font-size: clamp(3.2rem, 7.6vw, 8rem); letter-spacing: -.02em; line-height: .92; }
.hero-title em { color: var(--plum); }
.hero-title .ch { display: inline-block; transform: translateY(105%) rotate(4deg); opacity: 0; animation: ch-in .9s var(--ease) forwards; }
.hero-title .w { display: inline-block; white-space: nowrap; overflow: hidden; padding-bottom: .08em; vertical-align: top; }
@keyframes ch-in { to { transform: none; opacity: 1; } }
.hero-sub { max-width: 30rem; margin: 2rem 0 2.4rem; color: var(--muted); font-size: 1.1rem; opacity: 0; animation: fade-up 1s .9s var(--ease) forwards; }
@keyframes fade-up { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
.cta-scissor { display: inline-flex; align-items: center; gap: 1rem; padding: 1.1rem 1.6rem 1.1rem 2rem; background: var(--ink); color: var(--porcelain);
  border-radius: 99px; text-decoration: none; font-weight: 600; opacity: 0; animation: fade-up 1s 1.1s var(--ease) forwards; will-change: transform; }
.cta-scissor svg { width: 48px; height: 24px; fill: none; stroke: var(--blush); stroke-width: 2; stroke-linecap: round; overflow: visible; }
.cta-scissor .blade-a, .cta-scissor .blade-b { transform-origin: 26px 12px; transition: transform .25s var(--ease); }
.cta-scissor:hover .blade-a { animation: snip-a .5s 2 var(--ease); }
.cta-scissor:hover .blade-b { animation: snip-b .5s 2 var(--ease); }
@keyframes snip-a { 50% { transform: rotate(14deg); } }
@keyframes snip-b { 50% { transform: rotate(-14deg); } }
.hero-scroll { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: .6rem;
  font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); z-index: 2; }
.hero-scroll i { width: 1px; height: 46px; background: linear-gradient(var(--ink), transparent); animation: drip 2s infinite; transform-origin: top; }
@keyframes drip { 0% { transform: scaleY(0); } 60% { transform: scaleY(1); } 100% { transform: scaleY(1); opacity: 0; } }

/* ---------- marquee ---------- */
.marquee { overflow: hidden; border-block: 1px solid var(--line); padding: 1.4rem 0; background: var(--paper); }
.marquee div { display: flex; gap: 2.4rem; width: max-content; animation: marquee 38s linear infinite; font: italic 400 clamp(1.8rem, 3.6vw, 3rem) var(--serif); }
.marquee i { font-style: normal; color: var(--blush); }
@keyframes marquee { to { transform: translateX(-50%); } }

/* ---------- menu ---------- */
.menu, .team, .book { padding: clamp(5rem, 12vw, 9rem) clamp(1.2rem, 6vw, 6rem); }
.menu { display: grid; grid-template-columns: minmax(260px, 1fr) 2fr; gap: 4rem; align-items: start; }
.menu-head { position: sticky; top: 7rem; }
.menu-head > p:last-child { color: var(--muted); max-width: 22rem; }
.menu-cat { margin: 0 0 2.6rem; }
.menu-cat h3 { font: italic 500 1.9rem var(--serif); color: var(--sage); margin-bottom: .6rem; }
.menu-row { position: relative; width: 100%; display: grid; grid-template-columns: 1fr auto auto; gap: 1.4rem; align-items: baseline; padding: 1.2rem 1rem; margin: 0 -1rem;
  background: none; border: 0; border-radius: 16px; font: inherit; text-align: left; cursor: pointer; color: inherit;
  transition: background .4s var(--ease-spring), transform .4s var(--ease-spring), box-shadow .4s var(--ease); }
.menu-row .n { font-size: 1.1rem; font-weight: 500; transition: transform .5s var(--ease-spring); }
.menu-row .d { color: var(--muted); font-size: .88rem; }
.menu-row .p { font: 500 1.5rem var(--serif); min-width: 4ch; text-align: right; }
.menu-row::after { content: ""; position: absolute; left: 1rem; right: 1rem; bottom: 0; height: 1px; background: var(--line); transform: scaleX(0); transform-origin: left; transition: transform .6s var(--ease-spring); }
.menu-row::before { content: "✂"; position: absolute; left: .8rem; bottom: .2rem; font-size: .9rem; opacity: 0; transform: translateX(0) rotate(-90deg); transition: transform .6s var(--ease-spring), opacity .3s; color: var(--blush); }
.menu-row:hover, .menu-row:focus-visible { background: rgba(233, 185, 167, .06); transform: translateX(4px); box-shadow: var(--shadow-soft); }
.menu-row:hover::after, .menu-row:focus-visible::after { transform: scaleX(1); }
.menu-row:hover::before, .menu-row:focus-visible::before { opacity: 1; transform: translateX(0) rotate(0deg); }
.menu-list { container-type: inline-size; }
.menu-row:hover .n { transform: translateX(.6rem); }
.menu-row .go { position: absolute; right: 0; top: -1.1rem; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--sage); opacity: 0; transition: opacity .3s; }
.menu-row:hover .go { opacity: 1; }

/* ---------- colour lab ---------- */
.lab { height: 300vh; background: var(--plum); color: var(--porcelain); position: relative; }
.lab-pin { position: sticky; top: 0; height: 100vh; display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 4rem; padding: 0 clamp(1.2rem, 6vw, 6rem); overflow: hidden; }
.lab-mirror { position: relative; justify-self: center; width: min(40vw, 460px); aspect-ratio: 3 / 4; border-radius: 50% / 40%; overflow: hidden;
  box-shadow: 0 0 0 10px #3d2a38, 0 0 0 12px rgba(233, 185, 167, .5), 0 40px 80px rgba(0, 0, 0, .45); background: #1a1018;
  clip-path: inset(calc((1 - var(--open, 1)) * 48%) round 50% / 40%); }
.lab-mirror canvas { width: 100%; height: 100%; display: block; }
.lab-glare { position: absolute; inset: -20%; background: linear-gradient(115deg, transparent 40%, rgba(255, 255, 255, .16) 48%, transparent 56%);
  transform: translateX(calc(var(--p, 0) * 60% - 30%)); pointer-events: none; }
.lab h2 em { color: var(--honey); transition: color .5s; }
.lab-steps { list-style: none; padding: 0; margin: 2.4rem 0 0; display: grid; gap: 1rem; counter-reset: s; }
.lab-steps li { counter-increment: s; padding: 1rem 0 1rem 3rem; position: relative; color: rgba(247, 243, 238, .45); border-top: 1px solid rgba(247, 243, 238, .12); transition: color .5s; }
.lab-steps li::before { content: "0" counter(s); position: absolute; left: 0; top: 1rem; font: italic 1.3rem var(--serif); color: var(--blush); }
.lab-steps li b { display: block; font-weight: 600; color: inherit; }
.lab-steps li.is-on { color: var(--porcelain); }

/* ---------- team ---------- */
.team-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 1.6rem; margin-top: 3rem; }
.member { position: relative; padding: 2.2rem 1.8rem 1.8rem; background: var(--paper); border-radius: 220px 220px 24px 24px;
  border: 1px solid rgba(255,255,255,.6); box-shadow: var(--shadow-soft);
  transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); transition: transform .4s var(--ease-spring), box-shadow .4s var(--ease); text-align: center; }
.member::before { content: ""; position: absolute; inset: 6px; border-radius: 214px 214px 18px 18px; border: 1px solid var(--line); pointer-events: none; opacity: .5; }
.member:hover { box-shadow: var(--shadow-deep); }
.member-arch { width: 70%; aspect-ratio: 1; margin: 0 auto 1.6rem; border-radius: 50%; display: grid; place-items: center; font: italic 4.5rem var(--serif); color: var(--paper);
  background: radial-gradient(circle at 30% 25%, var(--c1), var(--c2)); box-shadow: inset 0 -8px 20px rgba(0,0,0,.15), 0 8px 24px rgba(46,30,42,.12); }
.member h3 { font-size: 2rem; }
.member p { margin: .3rem 0 1.4rem; color: var(--muted); font-size: .92rem; }
.member button { border: 1px solid var(--ink); background: none; border-radius: 99px; padding: .65rem 1.4rem; font: 600 .85rem var(--sans); cursor: pointer;
  transition: all .4s var(--ease-spring); position: relative; overflow: hidden; }
.member button::before { content: ""; position: absolute; inset: 0; background: var(--ink); transform: scaleX(0); transform-origin: left; transition: transform .4s var(--ease-spring); border-radius: inherit; z-index: 0; }
.member button span { position: relative; z-index: 1; }
.member button:hover { border-color: var(--ink); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(31,26,36,.12); }
.member button:hover::before { transform: scaleX(1); }
.member button:hover span { color: var(--paper); }
.member button:active { transform: scale(.96); }

/* ---------- booking ---------- */
.book { background: var(--paper); }
.book-head { max-width: 640px; margin-bottom: 3rem; }
.book-head p:last-child { color: var(--muted); }
.book-card { background: var(--porcelain); border-radius: 32px; padding: clamp(1.4rem, 4vw, 3.2rem);
 border: 1px solid rgba(255,255,255,.5); box-shadow: var(--shadow-deep); position: relative; }
.book-card::before { content: ""; position: absolute; inset: 8px; border-radius: 24px; border: 1px solid var(--line); pointer-events: none; opacity: .4; }

.bk-steps { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; padding: 0; margin: 0 0 2rem; }
.bk-step button { display: flex; align-items: center; gap: .5rem; padding: .45rem .9rem; border-radius: 99px; border: 1px solid transparent; background: none; font: 500 .85rem var(--sans); color: var(--muted); cursor: pointer; }
.bk-step button:disabled { cursor: default; }
.bk-step span { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; border: 1px solid currentColor; font-size: .72rem; }
.bk-step.is-current button { color: var(--ink); border-color: var(--ink); }
.bk-step.is-done button { color: var(--sage); }
.bk-step.is-done span { background: var(--sage); color: #fff; border-color: var(--sage); }
.bk-enter { animation: fade-up .5s var(--ease); }
.bk-title { font-size: clamp(2rem, 4vw, 3rem); margin-bottom: 1.4rem; }
.bk-group h4, .bk-zone h4, .bk-slot-group h4 { font: 600 .75rem var(--sans); letter-spacing: .2em; text-transform: uppercase; color: var(--sage); margin: 1.6rem 0 .8rem; }
.bk-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .8rem; }
.bk-card { display: flex; flex-direction: column; gap: .5rem; padding: 1.2rem 1.4rem; text-align: left; background: var(--paper);
  border: 1px solid rgba(255,255,255,.5); border-radius: 22px; font: inherit; color: inherit; cursor: pointer;
  box-shadow: var(--shadow-soft); transition: transform .4s var(--ease-spring), border-color .4s, box-shadow .4s var(--ease); position: relative; }
.bk-card::before { content: ""; position: absolute; inset: 4px; border-radius: 18px; border: 1px solid var(--line); pointer-events: none; opacity: .3; transition: opacity .4s; }
.bk-card:hover { transform: translateY(-4px); border-color: var(--ink); box-shadow: var(--shadow-deep); }
.bk-card:hover::before { opacity: .6; }
.bk-card.is-picked { border-color: var(--sage); box-shadow: var(--shadow-glow); }
.bk-card.is-picked::before { opacity: .8; border-color: var(--sage); }
.bk-card:active { transform: scale(.97); }
.bk-card-name { font-weight: 600; }
.bk-card-meta { display: flex; justify-content: space-between; color: var(--muted); font-size: .88rem; }
.bk-card-meta b { font: 500 1.2rem var(--serif); color: var(--ink); }
.bk-person { align-items: center; text-align: center; }
.bk-avatar { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: var(--plum); color: var(--blush); font: italic 2rem var(--serif); }
.bk-back { background: none; border: 0; color: var(--muted); font: 500 .9rem var(--sans); cursor: pointer; padding: 0; margin-bottom: 1rem; }
.bk-back:hover { color: var(--ink); }
.bk-days { display: flex; gap: .5rem; overflow-x: auto; padding-bottom: .6rem; scroll-snap-type: x mandatory; }
.bk-day { flex: 0 0 72px; scroll-snap-align: start; display: flex; flex-direction: column; align-items: center; padding: .7rem 0; border-radius: 40px; border: 1px solid var(--line); background: var(--paper); font: inherit; cursor: pointer; transition: all .25s; }
.bk-day b { font: 500 1.7rem var(--serif); line-height: 1.1; }
.bk-day small { font-size: .72rem; color: var(--muted); }
.bk-day:hover:not(:disabled) { border-color: var(--ink); }
.bk-day.is-picked { background: var(--ink); color: var(--porcelain); border-color: var(--ink); }
.bk-day.is-picked small { color: var(--blush); }
.bk-day:disabled { opacity: .4; cursor: not-allowed; }
.bk-slot-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.bk-slot { padding: .65rem 1rem; border-radius: 99px; border: 1px solid var(--line); background: var(--paper); font: 600 .95rem var(--sans); cursor: pointer; transition: all .2s; font-variant-numeric: tabular-nums; }
.bk-slot:hover { background: var(--sage); color: #fff; border-color: var(--sage); transform: translateY(-2px); }
.bk-muted { color: var(--muted); }
.bk-error { color: #A3374A; font-weight: 600; }
.bk-floor { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 1rem; padding: 1.4rem; border-radius: 22px; background:
  repeating-linear-gradient(45deg, rgba(31, 26, 36, .025) 0 14px, transparent 14px 28px), var(--paper); border: 1px solid var(--line); }
.bk-zone-row { display: flex; flex-wrap: wrap; gap: .9rem; }
.bk-chair { width: 128px; display: flex; flex-direction: column; align-items: center; gap: .3rem; padding: 1rem .6rem; border-radius: 70px 70px 16px 16px; border: 1px solid var(--line); background: var(--porcelain); font: 600 .85rem var(--sans); cursor: pointer; transition: all .3s var(--ease); color: var(--ink); }
.bk-chair svg { width: 54px; height: 64px; }
.bk-chair small { font-weight: 400; color: var(--sage); }
.bk-chair:hover:not(:disabled) { transform: translateY(-4px); border-color: var(--ink); }
.bk-chair.is-own { box-shadow: 0 0 0 2px var(--blush); }
.bk-chair.is-picked { background: var(--ink); color: var(--porcelain); }
.bk-chair.is-taken { opacity: .38; cursor: not-allowed; }
.bk-chair.is-taken small { color: #A3374A; }
.bk-next { display: inline-flex; margin-top: 1.4rem; padding: .8rem 1.3rem; border-radius: 99px; border: 1px dashed var(--ink); background: none; font: 600 .9rem var(--sans); color: var(--ink); cursor: pointer; text-decoration: none; }
.bk-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 1rem; padding: 1.3rem; border-radius: 18px; background: var(--paper); border: 1px solid var(--line); margin-bottom: 1.6rem; }
.bk-summary small { display: block; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.bk-form { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.bk-form label { display: flex; flex-direction: column; gap: .4rem; font-weight: 600; font-size: .88rem; }
.bk-form .bk-wide, .bk-form .bk-error, .bk-form .bk-submit { grid-column: 1 / -1; }
.bk-form input, .bk-form textarea { font: inherit; padding: .9rem 1rem; border-radius: 14px; border: 1px solid var(--line); background: var(--paper); color: var(--ink); font-weight: 400; }
.bk-form input:focus, .bk-form textarea:focus { outline: 2px solid var(--sage); outline-offset: 1px; }
.bk-submit { justify-self: start; padding: 1.1rem 2.2rem; border: 0; border-radius: 99px; background: var(--ink); color: var(--porcelain); font: 700 1rem var(--sans); cursor: pointer; transition: transform .3s var(--ease), background .3s; }
.bk-submit:hover { background: var(--sage); transform: translateY(-2px); }
.bk-done { text-align: center; padding: 2rem 0; }
.bk-done-mark { width: 84px; height: 84px; margin: 0 auto 1.4rem; border-radius: 50%; display: grid; place-items: center; background: var(--sage); color: #fff; font-size: 2.4rem; animation: pop .6s var(--ease); }
@keyframes pop { from { transform: scale(0) rotate(-40deg); } }
.bk-done-actions { display: flex; gap: 1rem; justify-content: center; align-items: center; flex-wrap: wrap; }
.bk-done-actions .bk-back { margin: 1.4rem 0 0; }

/* ---------- location ---------- */
.location { padding: clamp(5rem, 10vw, 8rem) clamp(1.2rem, 6vw, 6rem); display: grid; grid-template-columns: 1fr 1.4fr; gap: 3rem; align-items: center; background: var(--paper); }
.location-frame { position: relative; overflow: hidden; border-radius: 32px; aspect-ratio: 4 / 3; box-shadow: var(--shadow-deep); }
.location-frame::before { content: ""; position: absolute; inset: 6px; border-radius: 26px; border: 1px solid rgba(255,255,255,.3); pointer-events: none; z-index: 2; }
.location-frame img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease-spring); }
.location-frame:hover img { transform: scale(1.04); }
.location-copy h2 { margin-bottom: .8rem; }
.location-copy p { color: var(--muted); max-width: 28rem; margin: 0 0 1.6rem; line-height: 1.7; }
.location-map { margin-top: 1.2rem; border-radius: 22px; overflow: hidden; border: 1px solid var(--line); aspect-ratio: 16 / 9; background: #e9e1d8; display: grid; place-items: center; color: var(--muted); font-size: .9rem; box-shadow: var(--shadow-soft); }
@media (max-width: 860px) { .location { grid-template-columns: 1fr; } }

/* ---------- scroll reveal ---------- */
.reveal { opacity: 0; transform: translateY(40px); transition: opacity .9s var(--ease-spring), transform .9s var(--ease-spring); }
.reveal.is-visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: .1s; }
.reveal-delay-2 { transition-delay: .2s; }
.reveal-delay-3 { transition-delay: .3s; }

/* ---------- contact + foot ---------- */
.contact { display: grid; grid-template-columns: 1.2fr 1fr; gap: 3rem; padding: clamp(5rem, 10vw, 8rem) clamp(1.2rem, 6vw, 6rem); background: var(--ink); color: var(--porcelain); }
.contact-line { font-size: 1.2rem; margin: .4rem 0; color: rgba(247, 243, 238, .75); }
.contact-line a { color: var(--blush); text-decoration: none; font-size: 1.6rem; font-family: var(--serif); }
.hours { display: grid; grid-template-columns: auto 1fr; gap: .6rem 2rem; align-self: end; margin: 0; }
.hours dt { color: rgba(247, 243, 238, .55); }
.hours dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.hours .is-today { color: var(--blush); font-weight: 700; }
.foot { display: flex; flex-wrap: wrap; gap: 1.5rem; justify-content: space-between; padding: 1.4rem clamp(1.2rem, 6vw, 6rem); background: var(--ink); color: rgba(247, 243, 238, .5); font-size: .85rem; border-top: 1px solid rgba(247, 243, 238, .1); }
.foot a { text-decoration: none; }
.foot a:hover { color: var(--blush); }

@media (max-width: 860px) {
  .nav nav { display: none; }
  .menu { grid-template-columns: 1fr; gap: 2rem; }
  .menu-head { position: static; }
  .lab-pin { grid-template-columns: 1fr; gap: 1.5rem; padding-top: 5rem; align-content: center; }
  .lab-mirror { width: 52vw; }
  .lab h2 { font-size: 2.4rem; }
  .lab-steps { margin-top: 1rem; } .lab-steps li { padding: .5rem 0 .5rem 2.6rem; font-size: .9rem; } .lab-steps li::before { top: .5rem; }
  .contact { grid-template-columns: 1fr; }
  .bk-form { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition: none !important; }
  .hero { height: auto; } .hero-pin { position: relative; }
  .lab { height: auto; } .lab-pin { position: relative; padding-block: 6rem; }
}

/* ---------- Higgsfield photography ---------- */
.hero-photo { position: absolute; top: 0; right: 0; bottom: 0; width: 60%; margin: 0; overflow: hidden;
  clip-path: inset(calc(var(--a, 0) * 9%) calc(var(--a, 0) * 7%) calc(var(--a, 0) * 9%) calc(var(--a, 0) * 7%) round calc(var(--a, 0) * 50vw) calc(var(--a, 0) * 50vw) calc(var(--a, 0) * 24px) calc(var(--a, 0) * 24px)); }
.hero-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 70% 50%; transform: scale(var(--z, 1.12)); transform-origin: 60% 40%; }
.hero-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, var(--porcelain) 0%, rgba(247,243,238,.0) 32%); }
.hero .strands { z-index: 1; }

.room { position: relative; padding: clamp(4rem, 9vw, 7rem) clamp(1.2rem, 6vw, 6rem); display: grid; grid-template-columns: 1.6fr 1fr; gap: 3rem; align-items: center; }
.room-frame { overflow: hidden; border-radius: 28px; aspect-ratio: 16 / 10; box-shadow: 0 40px 90px rgba(46,30,42,.18); }
.room-frame img { width: 100%; height: 100%; object-fit: cover; transform: scale(var(--z, 1.25)); will-change: transform; }
.room-copy p:last-child { color: var(--muted); max-width: 24rem; }

.lab-mirror img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lab-before { filter: saturate(.25) brightness(.55) sepia(.35) hue-rotate(-12deg); transform: scale(1.04); }
.lab-after { clip-path: inset(0 0 calc((1 - var(--p, 0)) * 100%) 0); transform: scale(calc(1.04 + var(--p, 0) * .04)); }
.lab-line { position: absolute; left: 0; right: 0; top: calc(var(--p, 0) * 100%); height: 2px; background: linear-gradient(90deg, transparent, #F4DDB0, transparent); box-shadow: 0 0 22px 6px rgba(244,221,176,.5); opacity: calc(1 - var(--p, 0) * var(--p, 0)); }

.menu { position: relative; }
.menu-peek { position: fixed; left: 0; top: 0; z-index: 30; width: 240px; aspect-ratio: 3 / 4; margin: 0; border-radius: 120px 120px 16px 16px; overflow: hidden; pointer-events: none;
  opacity: 0; transform: translate(var(--x, 0), var(--y, 0)) scale(.85) rotate(-4deg); transition: opacity .3s, transform .25s var(--ease); box-shadow: 0 30px 60px rgba(46,30,42,.25); }
.menu-peek.is-on { opacity: 1; transform: translate(var(--x, 0), var(--y, 0)) scale(1) rotate(-2deg); }
.menu-peek img { width: 100%; height: 100%; object-fit: cover; }

.member-photo { width: 100%; aspect-ratio: 4 / 5; margin: -0.4rem 0 1.2rem; border-radius: 200px 200px 14px 14px; overflow: hidden; background: #e9e1d8; }
.member-photo div { width: 100%; height: 100%; background-size: 400% auto; transition: transform .8s var(--ease); }
.member:hover .member-photo div { transform: scale(1.06); }
.member { padding-top: 1.2rem; border-radius: 210px 210px 18px 18px; }

@media (max-width: 860px) {
  .hero-photo { width: 100%; opacity: .32; }
  .room { grid-template-columns: 1fr; }
  .menu-peek { display: none; }
}
@media (prefers-reduced-motion: reduce) { .hero-photo { clip-path: none; } .lab-after { clip-path: none; } }

/* audience choice */
.bk-grid--aud { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.bk-aud { position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-height: 260px; padding: 1.2rem; overflow: hidden; text-align: left;
  border: 0; border-radius: 22px; background: var(--ink); color: #fff; font: inherit; cursor: pointer; isolation: isolate; }
.bk-aud-img { position: absolute; inset: 0; z-index: -1; background-size: cover; background-position: center 30%; transition: transform .8s var(--ease); }
.bk-aud::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 35%, rgba(31,26,36,.85)); }
.bk-aud:hover .bk-aud-img { transform: scale(1.06); }
.bk-aud-label { font: italic 400 2.6rem/1 var(--serif); }
.bk-aud-sub { font-size: .85rem; opacity: .85; margin-top: .3rem; }
.bk-steps[hidden] { display: none; }

/* ---------- split landing ---------- */
.split { position: relative; height: 100vh; min-height: 560px; display: flex; overflow: hidden; background: var(--ink); }
.split-half { position: relative; flex: 1; display: flex; align-items: flex-end; overflow: hidden; color: #fff; text-decoration: none; isolation: isolate;
  transition: flex 1s var(--ease); animation: split-in 1.3s var(--ease) both; }
.split-half--women { animation-delay: .12s; }
@keyframes split-in { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0); } }
.split-half img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transform: scale(1.12); transition: transform 1.4s var(--ease), filter .8s; animation: split-zoom 2.4s var(--ease) both; }
.split-half--men img { object-position: 50% 30%; } .split-half--women img { object-position: 78% 40%; }
@keyframes split-zoom { from { transform: scale(1.35); } }
.split-shade { position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(31,26,36,.25) 0%, rgba(31,26,36,0) 30%, rgba(31,26,36,.78) 100%); transition: background .8s; }
.split-copy { display: flex; flex-direction: column; padding: 0 clamp(1.4rem, 5vw, 5rem) clamp(5rem, 12vh, 8rem); transform: translateY(1.4rem); transition: transform .8s var(--ease); }
.split-copy small { font-size: .8rem; letter-spacing: .28em; text-transform: uppercase; color: var(--blush); font-weight: 600; }
.split-copy b { font: italic 400 clamp(4.2rem, 11vw, 10rem)/.9 var(--serif); margin: .6rem 0 .8rem; }
.split-copy em { font-style: normal; color: rgba(255,255,255,.82); font-size: 1.05rem; }
.split-cta { display: inline-flex; align-items: center; gap: .7rem; width: max-content; margin-top: 1.6rem; padding: .95rem 1.5rem; border-radius: 99px; background: rgba(247,243,238,.14); border: 1px solid rgba(247,243,238,.5);
  backdrop-filter: blur(10px); font-weight: 600; opacity: 0; transform: translateY(10px); transition: opacity .5s, transform .6s var(--ease), background .3s; }
.split-cta i { font-style: normal; transition: transform .3s var(--ease); }
.split-half:hover, .split-half:focus-visible { flex: 1.55; }
.split-half:hover img { transform: scale(1.03); }
.split-half:hover .split-copy { transform: none; }
.split-half:hover .split-cta, .split-half:focus-visible .split-cta { opacity: 1; transform: none; }
.split-cta:hover { background: var(--porcelain); color: var(--ink); } .split-cta:hover i { transform: translateX(4px); }
.split:hover .split-half:not(:hover) img { filter: grayscale(.7) brightness(.6); }
.split-seal { position: absolute; left: 50%; top: 50%; z-index: 3; display: flex; flex-direction: column; align-items: center; gap: .6rem; transform: translate(-50%, -50%); pointer-events: none; transition: left 1s var(--ease); animation: fade-up 1s .8s var(--ease) both; }
.split-seal i { display: grid; place-items: center; width: 92px; height: 92px; border-radius: 50%; background: var(--porcelain); color: var(--plum); font: italic 500 3.2rem var(--serif); box-shadow: 0 0 0 10px rgba(247,243,238,.18), 0 20px 50px rgba(0,0,0,.35); }
.split-seal span { padding: .3rem .9rem; border-radius: 99px; background: rgba(31,26,36,.55); color: #fff; font-size: .78rem; letter-spacing: .22em; text-transform: uppercase; backdrop-filter: blur(8px); }
.split:has(.split-half--men:hover) .split-seal { left: 60.8%; }
.split:has(.split-half--women:hover) .split-seal { left: 39.2%; }
.split::after { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 1px; background: rgba(247,243,238,.45); z-index: 2; transition: left 1s var(--ease); }
.split:has(.split-half--men:hover)::after { left: 60.8%; } .split:has(.split-half--women:hover)::after { left: 39.2%; }
.split-hint { position: absolute; left: 0; right: 0; bottom: 1.6rem; z-index: 3; margin: 0; text-align: center; color: rgba(255,255,255,.85); font-size: .9rem; animation: fade-up 1s 1.2s var(--ease) both; }
.split-hint a { color: var(--blush); }
.nav.on-split:not(.is-solid) { color: #fff; } .nav.on-split:not(.is-solid) .nav-book { border-color: #fff; }
@media (max-width: 860px) {
  .split { flex-direction: column; height: 100svh; }
  .split-half { animation-name: split-in-m; } @keyframes split-in-m { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0); } }
  .split-copy { padding: 0 1.4rem 1.6rem; transform: none; }
  .split-copy b { font-size: 4rem; margin: .3rem 0 .4rem; } .split-copy em { font-size: .9rem; }
  .split-cta { opacity: 1; transform: none; margin-top: .9rem; padding: .7rem 1.1rem; font-size: .9rem; }
  .split-half--men .split-copy { padding-top: 5rem; }
  .split::after { top: 50%; bottom: auto; left: 0; right: 0; width: auto; height: 1px; }
  .split-seal { top: 50%; } .split-seal i { width: 70px; height: 70px; font-size: 2.4rem; } .split-seal span { display: none; }
  .split-hint { bottom: .6rem; font-size: .75rem; padding: 0 1rem; }
}
@media (prefers-reduced-motion: reduce) { .split-half, .split-half img { animation: none; } }
@media (max-width: 860px) { .split-hint { display: none; } }
.split-seal { top: 30%; } .split:hover .split-seal span { opacity: 0; } .split-seal span { transition: opacity .4s; }
@media (max-width: 860px) { .split-seal { top: 50%; } }
