*{box-sizing:border-box}
html,body{margin:0}
:root{
  --bg:#faf9f7; --alt:#f1efeb; --ink:#1c1b19; --muted:#5f5c57; --line:rgba(28,27,25,.14);
  --action:#1f4d3a; --action-ink:#fff;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--s9:96px;--s10:128px;
  --r:8px; --nav:72px; --gut:80px; --max:1280px;
  --spring:cubic-bezier(.2,.9,.25,1);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Display","Inter","Segoe UI",system-ui,sans-serif;
}
html{scroll-behavior:auto;scroll-padding-top:var(--nav);-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--font);-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gut)}
.skip{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}
.skip:focus{width:auto;height:auto;clip-path:none;left:var(--s4);top:var(--s4);background:var(--ink);color:#fff;padding:var(--s2) var(--s4);z-index:20}
h1,h2,h3{margin:0;font-weight:600}
h1{font-size:clamp(36px,5.6vw,72px);line-height:1.04;letter-spacing:-.03em;max-width:14ch}
h2{font-size:clamp(28px,3.2vw,40px);line-height:1.1;letter-spacing:-.02em;margin-bottom:var(--s7)}
h3{font-size:20px;line-height:1.25;letter-spacing:-.01em}
p{margin:0}
:focus-visible{outline:2px solid var(--action);outline-offset:3px}

/* nav: opaque, hairline, fixed */
.nav{position:fixed;inset:0 0 auto 0;height:var(--nav);background:var(--bg);border-bottom:1px solid var(--line);z-index:10}
.nav__in{height:100%;display:flex;align-items:center;gap:var(--s6)}
.logo{font-weight:600;font-size:20px;letter-spacing:-.02em;color:var(--ink);text-decoration:none;margin-right:auto}
.logo span{font-weight:400;color:var(--muted)}
.nav__links{display:flex;gap:var(--s6)}
.link{color:var(--ink);text-decoration:none;font-size:15px;font-weight:500;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .3s var(--spring)}
.link:hover{background-size:100% 1px}

/* buttons: respond on press, instantly */
.btn{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 var(--s5);border-radius:var(--r);font:500 16px/1 var(--font);text-decoration:none;cursor:pointer;border:1px solid transparent;transition:transform .35s var(--spring),background .2s,box-shadow .2s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.btn--primary{background:var(--action);color:var(--action-ink)}
.btn--primary:hover{transform:translateY(-1px);background:#19402f}
.btn--secondary{background:transparent;color:var(--ink);border-color:var(--line)}
.btn--secondary:hover{transform:translateY(-1px);border-color:var(--ink)}
.btn:active{transform:scale(.97);transition-duration:.08s}
.btn-row{display:flex;gap:var(--s3);flex-wrap:wrap}

/* sections: one per screen */
.hero,.section{min-height:100svh;display:flex;align-items:flex-start}
.hero>.wrap,.section>.wrap{width:100%}
.hero{padding:calc(var(--nav) + var(--s9)) 0 var(--s8)}
.hero__grid{display:grid;grid-template-columns:5fr 5fr;gap:var(--s7);align-items:start}
.hero__grid:has(.hero__art[hidden]){grid-template-columns:1fr}
.hero__art{aspect-ratio:4/5;max-height:calc(100svh - var(--nav) - var(--s9) - var(--s8));overflow:hidden;border-radius:2px;justify-self:end;width:100%}
.hero__art img{width:100%;height:100%;object-fit:cover;display:block}
.hero__in{display:flex;flex-direction:column;gap:var(--s5);align-items:flex-start}
.hero__lead{font-size:clamp(18px,1.6vw,22px);line-height:1.5;max-width:34em;color:var(--muted)}
.hero__fact{font-size:14px;color:var(--muted);margin-top:var(--s5)}
.section{padding:calc(var(--nav) + var(--s8)) 0 var(--s9)}
.section--alt{background:var(--alt)}
.section[hidden]{display:none}

/* gallery */
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3)}
.shot{all:unset;display:block;position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--alt);cursor:zoom-in;border-radius:2px;-webkit-tap-highlight-color:transparent}
.shot img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s var(--spring),opacity .5s;opacity:0}
.shot img.is-in{opacity:1}
.shot:hover img{transform:scale(1.025)}
.shot:active{transform:scale(.985);transition:transform .08s}
.shot:focus-visible{outline:2px solid var(--action);outline-offset:3px}

/* sessions */
.rows{max-width:760px}
.row{display:flex;justify-content:space-between;gap:var(--s6);padding:var(--s5) 0;border-top:1px solid var(--line)}
.row:last-child{border-bottom:1px solid var(--line)}
.row p{color:var(--muted);margin-top:var(--s1)}
.row__price{font-size:28px;font-weight:600;letter-spacing:-.02em;color:var(--ink)!important;margin:0!important}

/* booking */
.book{display:grid;grid-template-columns:5fr 7fr;gap:var(--s7);align-items:start}
.book__head p{color:var(--muted);max-width:30em;margin-bottom:var(--s6)}
.book__head h2{margin-bottom:var(--s5)}
.tabs{display:flex;flex-direction:column;gap:var(--s2);align-items:flex-start}
.tab{all:unset;cursor:pointer;padding:var(--s2) 0;font-size:16px;font-weight:500;color:var(--muted);transition:color .2s,transform .3s var(--spring)}
.tab:hover{color:var(--ink)}
.tab[aria-selected=true]{color:var(--ink);box-shadow:inset 0 -1px 0 var(--ink)}
.tab:active{transform:scale(.97)}
.tab:focus-visible{outline:2px solid var(--action);outline-offset:3px}
.book__frame{min-height:640px;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff;display:flex}
.book__frame iframe{border:0;width:100%;min-height:640px;opacity:0;transition:opacity .4s}
.book__frame iframe.is-in{opacity:1}
.book__empty{margin:auto;padding:var(--s6);text-align:center;color:var(--muted);display:flex;flex-direction:column;gap:var(--s4);align-items:center}

.about{max-width:var(--max)}
.about p{max-width:36em;margin-bottom:var(--s5);font-size:18px}
.foot{border-top:1px solid var(--line);padding:var(--s6) 0;font-size:14px;color:var(--muted)}
.foot__in{display:flex;justify-content:space-between}

/* lightbox: translucent material, drag to dismiss */
.lb{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;touch-action:none}
.lb[hidden]{display:none}
.lb__scrim{position:absolute;inset:0;background:rgba(20,19,18,.82);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);opacity:var(--o,1);transition:opacity .3s}
.lb__img{position:relative;max-width:92vw;max-height:86vh;object-fit:contain;border-radius:2px;will-change:transform;user-select:none;-webkit-user-drag:none}
.lb__btn{all:unset;position:absolute;color:#fff;font:500 15px var(--font);padding:var(--s3) var(--s4);cursor:pointer;border-radius:var(--r);background:rgba(255,255,255,.12);transition:background .2s,transform .3s var(--spring)}
.lb__btn:hover{background:rgba(255,255,255,.22)}
.lb__btn:active{transform:scale(.96);transition-duration:.08s}
.lb__btn:focus-visible{outline:2px solid #fff}
.lb__close{top:var(--s5);right:var(--s5)}
.lb__prev{left:var(--s5);top:50%;translate:0 -50%}
.lb__next{right:var(--s5);top:50%;translate:0 -50%}

/* tablet and phone */
@media (max-width:1023px){.hero__grid{grid-template-columns:1fr}.hero__art{max-height:none;aspect-ratio:4/3}:root{--gut:48px}.gallery{grid-template-columns:repeat(2,1fr)}.book{grid-template-columns:1fr}.book__frame,.book__frame iframe{min-height:600px}}
@media (max-width:639px){
  :root{--gut:24px;--nav:56px}
  .nav__links{display:none}
  .nav__cta{height:40px;padding:0 var(--s4)}
  .logo{font-size:17px}
  .hero{padding-top:calc(var(--nav) + var(--s8))}
  .btn-row .btn{width:100%}
  .section{padding:calc(var(--nav) + var(--s7)) 0 var(--s8);min-height:0}
  .gallery{gap:var(--s2)}
  .row{flex-direction:column;gap:var(--s2)}
  .lb__prev,.lb__next{display:none}
}

/* accessibility preferences */
@media (prefers-reduced-motion:reduce){
  *{transition-duration:.01ms!important;animation:none!important}
  .shot:hover img,.btn:hover{transform:none}
}
@media (prefers-reduced-transparency:reduce){.lb__scrim{background:#141312;backdrop-filter:none;-webkit-backdrop-filter:none}}
@media (prefers-contrast:more){:root{--line:rgba(28,27,25,.6);--muted:#3d3b37}}
