/* Bundled font licenses

Source: OFL-Cormorant-Garamond.txt

Copyright 2015 the Cormorant Project Authors (github.com/CatharsisFonts/Cormorant)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

----------------------------------------

Source: OFL-Cormorant.txt

Copyright 2015 the Cormorant Project Authors (github.com/CatharsisFonts/Cormorant)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

----------------------------------------

Source: OFL-Montserrat.txt

Copyright 2024 The Montserrat.Git Project Authors (https://github.com/JulietaUla/Montserrat.git)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
*/

/* ── Locally hosted fonts ── */
@font-face {
  font-family: 'Cormorant';
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url('fonts/cormorant-variable-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Cormorant';
  font-style: italic;
  font-weight: 300 600;
  font-display: swap;
  src: url('fonts/cormorant-variable-italic.woff2') format('woff2');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url('fonts/cormorant-garamond-variable-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 300 600;
  font-display: swap;
  src: url('fonts/cormorant-garamond-variable-italic.woff2') format('woff2');
}
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url('fonts/montserrat-variable-normal.woff2') format('woff2');
}

/* ── Global variables & reset ── */
:root {
  --white: #faf9f5;
  --off: #f1ece3;
  --stone: #cdc4b7;
  --warm-gray: #3f3a35;
  --mid: #302c28;
  --dark: #201c18;
  --black: #0f0e0c;
  --accent: #8d6731;
  --accent-light: #b88b4d;
  --accent-on-dark: #c99a5b;
}
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; }
body {
  background: var(--white);
  color: var(--dark);
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-weight: 450;
  overflow-x: hidden;
}
body.menu-open { overflow: hidden; }
section { scroll-margin-top: 7rem; }
.nav-logo,
.nav-center,
.nav-right,
.hero-content,
.hero-ctas,
.about-left,
.menu-header-left,
.menu-header-right,
.row-body,
.feature-body,
.private-events-card,
.private-events-fact,
.gallery-header > *,
.gallery-item,
.res-intro,
.reservation-card,
.footer-grid > *,
.footer-bottom {
  min-width: 0;
}
.nav-center a,
.nav-right a,
.mobile-menu-link,
.mobile-menu-cta,
.hero-location,
.hero-sub,
  .hero-cta-link,
.menu-group-label,
.row-name,
.row-sub,
.private-events-fact span,
.private-events-fact strong,
  .private-events-cta,
.res-note-title,
.field label,
.submit-btn,
.footer-col-head,
.footer-copy {
  overflow-wrap: anywhere;
  hyphens: auto;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 4px;
}
.skip-link {
  position: absolute;
  left: 1rem;
  top: 1rem;
  z-index: 400;
  padding: 0.9rem 1.2rem;
  background: var(--black);
  color: var(--white);
  text-decoration: none;
  transform: translateY(-180%);
  transition: transform 0.2s ease;
}
.skip-link:focus-visible { transform: translateY(0); }
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ── Global animations ── */
@keyframes rise {
  from { opacity: 0; transform: translateY(25px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes scrollDown {
  0%   { top: -100%; }
  100% { top: 100%; }
}
@keyframes marquee {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.reveal {
  opacity: 1;
  transform: none;
}
.js.reveal-ready .reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.75s ease, transform 0.75s cubic-bezier(0.22, 1, 0.36, 1);
}
.js.reveal-ready .reveal.in { opacity: 1; transform: none; }
.d1 { transition-delay: 0.08s; }
.d2 { transition-delay: 0.16s; }
.d3 { transition-delay: 0.24s; }

/* ── Locale controls ── */
html[lang='en'] .locale-text[lang='fr'],
html[lang='fr'] .locale-text[lang='en'] {
  display: none !important;
}

/* ── Navbar ── */
.nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 2rem 6vw;
  transition: all 0.5s;
}
.nav.scrolled {
  background: rgba(250, 249, 245, 0.98);
  backdrop-filter: blur(12px);
  padding: 1.3rem 6vw;
  border-bottom: 1px solid var(--stone);
}
.nav:not(.scrolled) .nav-logo-name,
.nav:not(.scrolled) .nav-center a,
.nav:not(.scrolled) .nav-right a { color: var(--white); }
.nav:not(.scrolled) .nav-logo-stack { border-left-color: rgba(250, 249, 245, 0.42); }
.nav:not(.scrolled) .nav-logo-stack span { color: var(--accent-on-dark); }
.nav:not(.scrolled) .nav-toggle {
  border-color: rgba(250, 249, 245, 0.48);
  background: rgba(15, 14, 12, 0.34);
  backdrop-filter: blur(8px);
}
.nav:not(.scrolled) .nav-toggle span { background: var(--white); }
.nav-logo {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  text-decoration: none;
}
.nav-logo-name {
  font-family: 'Cormorant', serif;
  font-size: 1.8rem;
  font-weight: 450;
  color: var(--black);
  letter-spacing: 0.1em;
  line-height: 1;
}
.nav-logo-stack {
  display: flex;
  flex-direction: column;
  gap: 0.05em;
  border-left: 1px solid var(--stone);
  padding-left: 0.75rem;
}
.nav-logo-stack span {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.55rem;
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--accent);
  line-height: 1.4;
}
.nav-center {
  display: flex;
  gap: clamp(1.2rem, 2.25vw, 3rem);
  list-style: none;
}
.nav-center a {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--mid);
  text-decoration: none;
  position: relative;
  transition: color 0.3s;
}
.nav-center a::after {
  content: '';
  position: absolute;
  bottom: -3px; left: 50%;
  width: 0; height: 1px;
  background: var(--accent);
  transform: translateX(-50%);
  transition: width 0.4s;
}
.nav-center a:hover { color: var(--dark); }
.nav-center a:hover::after { width: 100%; }
.nav-center a.active { color: var(--accent); }
.nav-center a.active::after { width: 100%; }
.nav-right a {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--dark);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  transition: color 0.3s;
}
.nav-right a:hover { color: var(--accent); }
.nav-right {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}
.nav-toggle {
  display: none;
  width: 3rem;
  height: 3rem;
  border: 1px solid var(--stone);
  background: rgba(250, 249, 245, 0.9);
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 0.35rem;
  cursor: pointer;
}
.nav-toggle span {
  width: 1rem;
  height: 1px;
  background: var(--dark);
  transition: transform 0.25s ease, opacity 0.25s ease;
}
.nav-toggle[aria-expanded="true"] span:first-child {
  transform: translateY(0.225rem) rotate(45deg);
}
.nav-toggle[aria-expanded="true"] span:last-child {
  transform: translateY(-0.225rem) rotate(-45deg);
}
.mobile-menu {
  position: fixed;
  inset: 0;
  z-index: 180;
  background: rgba(15, 14, 12, 0.32);
  backdrop-filter: blur(14px);
  padding: 6.5rem 5vw 2rem;
}
.mobile-menu[hidden] { display: none; }
.mobile-menu-inner {
  background: rgba(250, 249, 245, 0.98);
  border: 1px solid var(--stone);
  padding: 1.5rem;
  display: grid;
  gap: 0.75rem;
  box-shadow: 0 24px 70px rgba(15, 14, 12, 0.14);
}
.mobile-menu-link,
.mobile-menu-cta {
  text-decoration: none;
  padding: 1rem 1.1rem;
  font-family: 'Montserrat', sans-serif;
  text-transform: uppercase;
  letter-spacing: 0.24em;
  font-size: 0.72rem;
}
.mobile-menu-link {
  color: var(--dark);
  border: 1px solid var(--stone);
  background: var(--white);
}
.mobile-menu-link.active {
  border-color: var(--accent);
  color: var(--accent);
}
.mobile-menu-cta {
  color: var(--white);
  background: var(--black);
  border: 1px solid var(--black);
}
.nav-right a.active { color: var(--accent); }
.mobile-menu-cta.active { background: var(--accent); border-color: var(--accent); }
.mobile-menu-close {
  justify-self: end;
  min-height: 2.75rem;
  padding: 0.6rem 0.9rem;
  border: 1px solid var(--stone);
  background: transparent;
  color: var(--mid);
  font-family: 'Montserrat', sans-serif;
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  cursor: pointer;
}
.mobile-menu-close:hover,
.mobile-menu-close:focus-visible {
  border-color: var(--accent);
  color: var(--accent);
}
@media (max-width: 900px) {
  html.js .nav-center,
  html.js .nav-right { display: none; }
  html.js .nav-toggle { display: inline-flex; }

  /* Without JavaScript the toggle cannot open the mobile menu, so keep the
     section links in a static, wrapping bar instead of hiding them. */
  html:not(.js) .nav {
    position: static;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
    padding: 1.25rem 5vw;
    background: var(--black);
    border-bottom: 1px solid rgba(250, 249, 245, 0.18);
  }
  html:not(.js) .nav-center {
    order: 3;
    width: 100%;
    flex-wrap: wrap;
    gap: 0.75rem 1.5rem;
  }
  html:not(.js) .nav-right { display: flex; }
}

/* ── Hero ── */
.hero {
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  background: var(--black);
}
.hero-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 35% center;
}
.hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(8, 10, 13, 0.36), rgba(8, 9, 11, 0.68)),
    radial-gradient(circle at center, rgba(15, 14, 12, 0.08), rgba(15, 14, 12, 0.42));
  pointer-events: none;
  z-index: 1;
}
.hero-content {
  --hero-item-gap: clamp(3.25rem, 6.5vh, 5rem);
  text-align: center;
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--hero-item-gap);
  padding: 1.5rem 2rem 0;
}
.hero-location {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.6em;
  text-transform: uppercase;
  color: rgba(250, 249, 245, 0.84);
  margin-bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  opacity: 0;
  animation: rise 1s ease 0.3s forwards;
}
.hero-location::before,
.hero-location::after {
  content: '';
  width: 40px; height: 1px;
  background: rgba(250, 249, 245, 0.42);
}
.hero-name {
  font-family: 'Cormorant', serif;
  font-size: clamp(7rem, 19vw, 20rem);
  font-weight: 450;
  letter-spacing: 0;
  color: var(--white);
  line-height: 0.85;
  margin-bottom: 0;
  opacity: 0;
  animation: rise 1.2s cubic-bezier(0.22, 1, 0.36, 1) 0.5s forwards;
}
.hero-name span { color: var(--accent-on-dark); }
.hero-sub {
  font-family: 'Cormorant', serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1rem, 1.5vw, 1.3rem);
  color: rgba(250, 249, 245, 0.88);
  letter-spacing: 0.15em;
  margin-bottom: 0;
  opacity: 0;
  animation: rise 1.2s ease 0.8s forwards;
}
.hero-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  margin-bottom: 0;
  opacity: 0;
  animation: rise 1s ease 1s forwards;
}
.hero-divider span {
  font-size: 0.35rem;
  color: var(--accent-on-dark);
  letter-spacing: 0.5em;
}
.hero-divider::before,
.hero-divider::after {
  content: '';
  width: 80px; height: 1px;
}
.hero-divider::before { background: linear-gradient(90deg, transparent, rgba(250, 249, 245, 0.48)); }
.hero-divider::after  { background: linear-gradient(270deg, transparent, rgba(250, 249, 245, 0.48)); }
.hero-ctas {
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  animation: rise 1s ease 1.1s forwards;
}
.hero-cta-link {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: var(--white);
  text-decoration: none;
  position: relative;
  overflow: hidden;
  padding-bottom: 3px;
}
.hero-cta-link::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0;
  width: 100%; height: 1px;
  background: rgba(250, 249, 245, 0.7);
  transform: scaleX(1);
  transform-origin: right;
  transition: transform 0.4s ease;
}
.hero-cta-link:hover::after {
  transform: scaleX(0);
  transform-origin: left;
}
.hero-scroll-hint {
  position: absolute;
  bottom: 3rem;
  left: 6vw;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 1rem;
  opacity: 0;
  animation: rise 1s ease 1.5s forwards;
}
.hero-scroll-hint span {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.65rem;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: rgba(250, 249, 245, 0.72);
  writing-mode: vertical-rl;
  text-orientation: mixed;
}
.hero-scroll-bar {
  width: 1px;
  height: 60px;
  background: rgba(250, 249, 245, 0.32);
  position: relative;
  overflow: hidden;
}
.hero-scroll-bar::after {
  content: '';
  position: absolute;
  top: -100%;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--accent-on-dark);
  animation: scrollDown 2s ease-in-out infinite;
}

/* ── Marquee Strip ── */
.marquee-strip {
  background: var(--black);
  padding: 1.75rem 6vw;
  overflow: hidden;
  white-space: nowrap;
}
.marquee-inner {
  display: inline-flex;
  animation: marquee 30s linear infinite;
  gap: 3rem;
}
.marquee-item {
  font-family: 'Cormorant', serif;
  font-size: 1rem;
  font-weight: 400;
  font-style: italic;
  color: var(--stone);
  letter-spacing: 0.1em;
  display: inline-flex;
  align-items: center;
  gap: 1.5rem;
}
.marquee-item::after {
  content: '·';
  color: var(--accent);
}

/* ── About ── */
.about {
  padding: 8rem 6vw;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 0;
  align-items: center;
  background: var(--white);
}
.about-left {
  grid-column: 1 / 7;
  grid-row: 1;
  position: relative;
  z-index: 2;
  max-width: none;
  padding: clamp(2.25rem, 3vw, 3rem);
  border: 1px solid var(--stone);
  background: var(--white);
  box-shadow: 0 1.5rem 4rem rgba(32, 28, 24, 0.06);
  margin-top: -1.75rem;
}
.about-left h2,
.menu-header-left h2,
.exp-text h2,
.gallery-header h2,
.private-events-card h2,
.res-wrapper h2 {
  font-family: 'Cormorant', serif;
  font-size: clamp(2.35rem, 4vw, 3.6rem);
  font-weight: 450;
  line-height: 1.05;
  margin-bottom: 1.75rem;
  white-space: nowrap;
}
.about-left h2,
.menu-header-left h2,
.exp-text h2,
.gallery-header h2,
.private-events-card h2 {
  color: var(--black);
}
.about-left h2 em,
.menu-header-left h2 em,
.exp-text h2 em,
.gallery-header h2 em,
.private-events-card h2 em,
.res-wrapper h2 em {
  font-style: italic;
  color: var(--accent);
}
.res-wrapper h2 em { color: var(--accent-on-dark); }
.about-left p {
  font-weight: 450;
  font-size: 1.08rem;
  line-height: 1.8;
  color: var(--mid);
  margin-bottom: 1.4rem;
}
.about-copy {
  max-width: 52ch;
  padding-left: 1.5rem;
  border-left: 1px solid #b7ab9a;
}
.about-copy p:last-child { margin-bottom: 0; }
.about-right {
  grid-column: 6 / -1;
  grid-row: 1;
  position: relative;
  min-height: 42rem;
  margin-left: -1rem;
}
.story-collage {
  position: relative;
  height: 100%;
  min-height: 42rem;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--stone);
}
.story-photo {
  position: relative;
  margin: 0;
  overflow: hidden;
  background: var(--off);
}
.story-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: none;
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1), filter 0.4s ease;
}
.story-photo:hover img {
  filter: none;
  transform: scale(1.018);
}
.story-photo-primary {
  height: 100%;
  min-height: 42rem;
}
@media (max-width: 900px) {
  .about { grid-template-columns: 1fr; }
  .about-right {
    grid-column: 1;
    grid-row: 1;
    width: 100%;
    min-height: 28rem;
    margin-inline: auto;
  }
  .story-collage,
  .story-photo-primary { min-height: 28rem; }
  .about-left {
    grid-column: 1;
    grid-row: 2;
    margin: -2.75rem 0.75rem 0 2rem;
    padding: 2.5rem;
  }
}

/* ── Menu ── */
.menu {
  padding: 8rem 6vw;
  background: var(--off);
  border-top: 1px solid var(--stone);
}
.menu-shell {
  width: min(72rem, 100%);
  margin-inline: auto;
}
.menu-header {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: clamp(2rem, 5vw, 4rem);
  align-items: center;
  width: calc(100% - 3rem);
  margin: 0 auto -1.5rem;
  padding: clamp(2rem, 4vw, 3.5rem);
  border: 1px solid rgba(205, 196, 183, 0.65);
  background: var(--white);
}
.menu-header-left h2 {
  margin-bottom: 0;
  white-space: normal;
  text-wrap: balance;
}
.menu-header-right p {
  font-style: italic;
  color: var(--mid);
  line-height: 1.8;
  font-size: 1.05rem;
  padding-left: 1.5rem;
  border-left: 1px solid var(--stone);
}
.menu-list {
  padding: 1.5rem clamp(1.5rem, 4vw, 4rem) 0;
  border: 1px solid var(--stone);
  background: var(--white);
  box-shadow: 0 1.5rem 4rem rgba(32, 28, 24, 0.05);
}
.menu-group {
  padding-block: clamp(2.5rem, 4vw, 4rem);
  scroll-margin-top: 7rem;
}
.menu-group + .menu-group {
  border-top: 1px solid var(--stone);
}
.menu-group-head,
.menu-group-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.8fr);
  column-gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
}
.menu-group-head {
  align-items: baseline;
  margin-bottom: 2rem;
}
.menu-group-label {
  font-family: 'Cormorant', serif;
  font-size: clamp(1.75rem, 2.5vw, 2.2rem);
  font-weight: 500;
  line-height: 1.15;
  color: var(--accent);
}
.menu-group-copy {
  color: var(--warm-gray);
  font-style: italic;
  font-size: 1rem;
  line-height: 1.65;
  max-width: 38rem;
}
.menu-group-items {
  min-width: 0;
  display: grid;
  gap: 1.75rem;
}
.menu-photo {
  min-width: 0;
  margin: 0;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: var(--off);
}
.menu-photo-mains {
  aspect-ratio: 1;
  width: 100%;
  max-width: 60rem;
  margin-inline: auto;
}
.menu-photo-desserts { aspect-ratio: 1; }
.menu-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}
.menu-photo:hover img { transform: scale(1.018); }
.menu-group-mains .menu-group-layout {
  grid-template-columns: 1fr;
  gap: 2rem;
}
.menu-row + .menu-row {
  padding-top: 1.75rem;
  border-top: 1px solid rgba(205, 196, 183, 0.5);
}
.row-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: baseline;
  column-gap: 1.5rem;
  margin-bottom: 0.6rem;
}
.row-name {
  font-family: 'Cormorant', serif;
  font-size: clamp(1.4rem, 1.9vw, 1.7rem);
  font-weight: 500;
  line-height: 1.25;
  color: var(--black);
  text-wrap: pretty;
}
.row-sub {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.75rem;
  font-weight: 400;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--warm-gray);
  margin-bottom: 0.6rem;
  line-height: 1.8;
}
.row-desc {
  font-size: 1.05rem;
  color: var(--mid);
  line-height: 1.7;
  max-width: 62ch;
}
.row-price {
  font-family: 'Cormorant', serif;
  font-size: 1.15rem;
  font-weight: 500;
  font-variant-numeric: lining-nums tabular-nums;
  color: var(--accent);
  white-space: nowrap;
}
@media (min-width: 601px) {
  .menu-photo-mains {
    aspect-ratio: 3 / 1;
    max-height: 20rem;
  }
  .menu-photo-mains img { object-position: center 58%; }
}
@media (min-width: 901px) {
  .menu-group-mains .menu-group-items {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2rem clamp(2rem, 5vw, 4.5rem);
  }
  .menu-group-mains .menu-row {
    padding-top: 1.5rem;
    border-top: 1px solid rgba(205, 196, 183, 0.5);
  }
  @supports (grid-template-rows: subgrid) {
    .menu-group-mains .menu-group-items {
      row-gap: 0;
    }
    .menu-group-mains .menu-row,
    .menu-group-mains .row-body {
      display: grid;
      grid-row: span 3;
      grid-template-rows: subgrid;
      row-gap: 0.65rem;
    }
    .menu-group-mains .menu-row {
      padding-bottom: 1.75rem;
    }
    .menu-group-mains .menu-row:nth-last-child(-n + 2) {
      padding-bottom: 0;
    }
    .menu-group-mains .row-heading,
    .menu-group-mains .row-sub {
      margin-bottom: 0;
    }
  }
}
@media (max-width: 900px) {
  .menu { padding: 5rem 5vw; }
  .menu-header {
    width: calc(100% - 2rem);
    grid-template-columns: 1fr;
    gap: 1.5rem;
    padding: 2rem;
  }
  .menu-group-head,
  .menu-group-layout {
    grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.8fr);
    column-gap: 2rem;
  }
}
@media (max-width: 600px) {
  .menu-header {
    width: calc(100% - 1rem);
    padding: 1.5rem;
    gap: 1.25rem;
    margin-bottom: -1rem;
  }
  .menu-header-right p {
    padding-left: 0;
    border-left: 0;
  }
  .menu-list { padding: 1rem 1.25rem 0; }
  .menu-group { padding-block: 1.75rem; }
  .menu-group-head,
  .menu-group-layout {
    grid-template-columns: 1fr;
    gap: 1.25rem;
  }
  .menu-group-head {
    gap: 0.65rem;
    margin-bottom: 1.5rem;
  }
  .menu-photo {
    width: 100%;
    aspect-ratio: 3 / 2;
    max-height: 16rem;
  }
  .menu-photo-starters img { object-position: center 60%; }
  .menu-group-items { gap: 1.25rem; }
  .menu-group-mains .menu-group-layout { gap: 1.25rem; }
  .menu-row + .menu-row { padding-top: 1.25rem; }
  .row-heading { column-gap: 0.75rem; }
  .row-name { font-size: 1.4rem; }
  .row-sub { font-size: 0.72rem; line-height: 1.65; }
  .row-price { font-size: 1.1rem; }
}

/* ── Experience ── */
.experience {
  padding: 8rem 6vw;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 0;
  align-items: center;
  background: var(--off);
  border-top: 1px solid var(--stone);
}
.exp-text {
  grid-column: 8 / -1;
  grid-row: 1;
  position: relative;
  z-index: 2;
  padding: clamp(2.5rem, 4vw, 4.5rem);
  border: 1px solid var(--stone);
  background: var(--white);
  box-shadow: 0 2rem 5rem rgba(32, 28, 24, 0.14);
  margin-top: 2.5rem;
}
.exp-text blockquote {
  font-style: italic;
  font-size: 1.15rem;
  color: var(--mid);
  line-height: 1.8;
  padding-left: 1.5rem;
  border-left: 1px solid #b7ab9a;
  margin-bottom: 1.75rem;
}
.exp-features { display: flex; flex-direction: column; gap: 0; }
.feature-row {
  display: flex;
  gap: 1.5rem;
  align-items: flex-start;
  padding: 1.15rem 0;
  border-bottom: 1px solid var(--stone);
}
.feature-num {
  font-family: 'Cormorant', serif;
  font-size: 2rem;
  font-weight: 400;
  color: #968b7d;
  min-width: 3rem;
  line-height: 1;
}
.feature-body h3 {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--dark);
  margin-bottom: 0.5rem;
}
.feature-body p { font-size: 0.98rem; color: var(--mid); line-height: 1.65; font-weight: 450; }
.exp-visual {
  grid-column: 1 / 9;
  grid-row: 1;
  position: relative;
}
.exp-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: minmax(0, 1.1fr) minmax(0, 0.9fr);
  gap: 1rem;
  height: 42rem;
  background: transparent;
}
.exp-photo {
  position: relative;
  margin: 0;
  overflow: hidden;
  min-width: 0;
  background: var(--dark);
}
.exp-photo-featured { grid-column: 1 / -1; }
.exp-photo-featured,
.exp-photo-detail { aspect-ratio: auto; }
.exp-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: none;
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1), filter 0.4s ease;
}
.exp-photo img.photo-focus-right { object-position: 75% center; }
.exp-photo:hover img {
  filter: none;
  transform: scale(1.018);
}
.exp-photo::after {
  content: '';
  position: absolute;
  inset: 40% 0 0;
  background: linear-gradient(180deg, transparent, rgba(18, 15, 12, 0.92));
  pointer-events: none;
}
.exp-photo figcaption {
  position: absolute;
  z-index: 1;
  left: 1.1rem;
  right: 1.1rem;
  bottom: 1rem;
  color: var(--white);
}
.exp-photo figcaption strong,
.exp-photo figcaption span { display: block; }
.exp-photo figcaption strong {
  margin-bottom: 0.2rem;
  font-family: 'Cormorant', serif;
  font-size: 1.3rem;
  font-weight: 500;
}
.exp-photo figcaption span {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  line-height: 1.5;
  text-transform: uppercase;
}
@media (max-width: 900px) {
  .experience { grid-template-columns: 1fr; }
  .exp-visual {
    grid-column: 1;
    grid-row: 1;
  }
  .exp-text {
    grid-column: 1;
    grid-row: 2;
    margin: -3.75rem 2rem 0 0.75rem;
    padding: 2.5rem;
  }
  .exp-grid {
    grid-template-rows: none;
    height: auto;
  }
  .exp-photo-featured { aspect-ratio: 16 / 9; }
  .exp-photo-detail { aspect-ratio: 1; }
}

/* ── Gallery ── */
.gallery {
  padding: 8rem 6vw;
  border-top: 1px solid var(--stone);
  background: var(--white);
}
.gallery-header {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.8fr);
  gap: 3rem 6rem;
  align-items: center;
  width: min(74rem, calc(100% - 5rem));
  margin: 0 auto -2rem;
  padding: clamp(2.25rem, 3vw, 3.5rem);
  border: 1px solid var(--stone);
  background: var(--white);
}
.gallery-header h2 {
  margin-bottom: 0;
  color: var(--black);
  white-space: normal;
  text-wrap: balance;
}
.gallery-intro {
  max-width: 34rem;
  padding-left: 1.5rem;
  border-left: 1px solid #b7ab9a;
  color: var(--mid);
  font-size: 1.08rem;
  font-style: italic;
  line-height: 1.8;
}
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
  width: min(78rem, 100%);
  margin-inline: auto;
  padding: 3.5rem 1.5rem 1.5rem;
  border: 1px solid var(--stone);
  background: var(--off);
  align-items: stretch;
  height: 48rem;
}
.gallery-item {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  height: 100%;
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--stone);
  background: var(--off);
  transition: border-color 0.35s ease, box-shadow 0.35s ease;
}
.gallery-item:hover {
  border-color: #b4a795;
  box-shadow: 0 1rem 2.5rem rgba(32, 28, 24, 0.1);
}
.gallery-item-wide { grid-column: span 7; }
.gallery-item-portrait { grid-column: span 5; }
.gallery-item img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: none;
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1), filter 0.4s ease;
}
.gallery-item-wide img,
.gallery-item-portrait img { aspect-ratio: auto; }
.gallery-item:hover img {
  filter: none;
  transform: scale(1.018);
}
.zoomable-image {
  cursor: zoom-in;
  touch-action: manipulation;
}
.zoomable-image:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 4px;
}
.image-lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  padding: 6rem 5vw 2rem;
  overflow-y: auto;
  background: rgba(10, 9, 8, 0.92);
  backdrop-filter: blur(10px);
}
.image-lightbox[hidden] { display: none; }
.image-lightbox-image {
  display: block;
  width: min(80vw, 80rem);
  height: calc(100vh - 15rem);
  height: calc(100svh - 15rem);
  min-height: 6rem;
  flex-shrink: 1;
  object-fit: contain;
  touch-action: pan-y pinch-zoom;
  filter: drop-shadow(0 2rem 6rem rgba(0, 0, 0, 0.42));
}
.image-lightbox-close {
  position: fixed;
  top: 2rem;
  right: 2rem;
  z-index: 1;
  min-width: 5.5rem;
  padding: 0.8rem 1rem;
  border: 1px solid rgba(250, 249, 245, 0.5);
  background: rgba(15, 14, 12, 0.78);
  color: var(--white);
  font-family: 'Montserrat', sans-serif;
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  cursor: pointer;
}
.image-lightbox-close:hover,
.image-lightbox-close:focus-visible {
  border-color: var(--accent-on-dark);
  color: var(--accent-on-dark);
}
body.lightbox-open { overflow: hidden; }
.image-lightbox-toolbar {
  width: min(60rem, 100%);
  display: grid;
  grid-template-columns: 3rem minmax(0, 1fr) 3rem;
  gap: 1rem;
  align-items: center;
}
.image-lightbox-details {
  grid-column: 2;
  grid-row: 1;
  color: var(--off);
  text-align: center;
  font-size: 1.05rem;
  line-height: 1.5;
}
.image-lightbox-count {
  display: block;
  margin-bottom: 0.4rem;
  color: var(--accent-on-dark);
  font: 500 0.7rem / 1.5 'Montserrat', sans-serif;
  letter-spacing: 0.15em;
  font-variant-numeric: tabular-nums;
}
.image-lightbox-arrow {
  width: 3rem;
  height: 3rem;
  border: 1px solid rgba(250, 249, 245, 0.5);
  color: var(--white);
  background: transparent;
  font-size: 1.5rem;
  cursor: pointer;
}
#image-lightbox-next { grid-column: 3; }
.image-lightbox-arrow:hover { border-color: var(--accent-on-dark); color: var(--accent-on-dark); }
.image-lightbox button:focus-visible { outline-color: var(--accent-on-dark); }
.gallery-caption {
  padding: 1.1rem 1.25rem;
  color: var(--mid);
  font-family: 'Montserrat', sans-serif;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  line-height: 1.55;
  text-transform: uppercase;
}
@media (max-width: 900px) {
  .gallery-header {
    grid-template-columns: 1fr;
    gap: 1rem;
    width: calc(100% - 3rem);
    margin: 0 auto -1.75rem;
    padding: 2.5rem;
  }
  .gallery-grid {
    grid-template-rows: none;
    height: auto;
    padding: 3rem 1rem 1rem;
  }
  .gallery-item {
    grid-template-rows: auto 1fr;
    height: auto;
  }
  .gallery-item-wide img { aspect-ratio: 4 / 3; height: auto; }
  .gallery-item-portrait img { aspect-ratio: 20 / 21; height: auto; }
}
@media (max-width: 700px) {
  .gallery-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
    padding: 2.5rem 0.75rem 0.75rem;
  }
  .gallery-item-wide,
  .gallery-item-portrait { grid-column: auto; }
  .gallery-item:nth-child(1),
  .gallery-item:nth-child(4) { grid-column: 1 / -1; }
  .gallery-item:nth-child(1) img,
  .gallery-item:nth-child(4) img { aspect-ratio: 4 / 3; }
  .gallery-item:nth-child(2) img,
  .gallery-item:nth-child(3) img { aspect-ratio: 3 / 4; }
  .gallery-caption {
    padding: 0.9rem;
    font-size: 0.7rem;
    line-height: 1.65;
  }
  .image-lightbox-close {
    top: 1rem;
    right: 1rem;
  }
  .image-lightbox { padding: 5rem 1rem 1.5rem; }
  .image-lightbox-image { width: 100%; }
  .image-lightbox-toolbar { gap: 0.75rem; }
  .image-lightbox-details { font-size: 0.95rem; }
}

/* ── Shared calls to action ── */
.cta-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.8rem;
  min-height: 3.5rem;
  padding: 1rem 1.4rem;
  border: 1px solid;
  font-family: 'Montserrat', sans-serif;
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.24em;
  line-height: 1.35;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  cursor: pointer;
  transition: transform 0.3s, background 0.3s, border-color 0.3s, color 0.3s;
}
.cta-button:hover { transform: translateY(-2px); }
.cta-button-dark {
  border-color: var(--black);
  background: var(--black);
  color: var(--white);
}
.cta-button-dark:hover {
  border-color: var(--accent);
  background: var(--accent);
}
.cta-button-accent {
  border-color: var(--accent-on-dark);
  background: var(--accent-on-dark);
  color: var(--black);
}
.cta-button-accent:hover {
  border-color: var(--accent-light);
  background: var(--accent-light);
}
/* ── Private Events ── */
.private-events {
  padding: 8rem 6vw;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 0;
  align-items: center;
  background: var(--off);
  border-top: 1px solid var(--stone);
}
.private-events-media {
  grid-column: 1 / 9;
  grid-row: 1;
  position: relative;
  min-height: 42rem;
  overflow: hidden;
  border: 1px solid #bfb5a7;
  background: var(--white);
}
.private-events-media img {
  width: 100%;
  height: 100%;
  min-height: 42rem;
  object-fit: cover;
  display: block;
  filter: none;
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1), filter 0.4s ease;
}
.private-events-media:hover img {
  filter: none;
  transform: scale(1.018);
}
.private-events-card {
  grid-column: 7 / -1;
  grid-row: 1;
  position: relative;
  z-index: 2;
  padding: clamp(2.5rem, 4vw, 4.5rem);
  border: 1px solid var(--stone);
  background: var(--white);
  box-shadow: 0 2rem 5rem rgba(32, 28, 24, 0.16);
  margin-top: -2rem;
}
.private-events-card > p {
  padding-left: 1.5rem;
  border-left: 1px solid #b7ab9a;
  color: var(--mid);
  font-size: 1.08rem;
  line-height: 1.85;
  max-width: 620px;
}
.private-events-facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 2rem 0;
  border-top: 1px solid var(--stone);
  border-bottom: 1px solid var(--stone);
}
.private-events-fact {
  padding: 1.15rem 0;
}
.private-events-fact + .private-events-fact {
  margin-left: 1.25rem;
  padding-left: 1.25rem;
  border-left: 1px solid var(--stone);
}
.private-events-fact span {
  display: block;
  margin-bottom: 0.65rem;
  color: var(--warm-gray);
  font-family: 'Montserrat', sans-serif;
  font-size: 0.66rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}
.private-events-fact strong {
  color: var(--black);
  font-family: 'Cormorant', serif;
  font-size: 1.18rem;
  font-weight: 400;
  line-height: 1.35;
}
.private-events-cta {
  width: fit-content;
}
@media (max-width: 900px) {
  .private-events {
    grid-template-columns: 1fr;
  }
  .private-events-media {
    grid-column: 1;
    grid-row: 1;
    min-height: 28rem;
  }
  .private-events-media img { min-height: 28rem; }
  .private-events-card {
    grid-column: 1;
    grid-row: 2;
    margin: -2.25rem 0.75rem 0 2.25rem;
    padding: 2.5rem;
  }
}

/* ── Reservations ── */
.reservations {
  padding: 8rem 6vw;
  min-height: 58rem;
  display: flex;
  align-items: center;
  background: var(--black);
  color: var(--off);
}
.res-wrapper {
  width: 100%;
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(16rem, 0.8fr) minmax(0, 1.2fr);
  gap: clamp(4rem, 7vw, 7rem);
  align-items: stretch;
}
.res-intro {
  display: flex;
  flex-direction: column;
  padding-top: 0.25rem;
}
.res-wrapper h2 {
  color: var(--white);
  white-space: normal;
  text-wrap: balance;
}
.res-intro > p {
  font-style: italic;
  color: #dfd6c9;
  font-size: 1.08rem;
  line-height: 1.8;
  margin-bottom: 2.5rem;
}
.res-notes {
  display: grid;
  gap: 1rem;
  margin-top: auto;
}
.res-note {
  padding: 1rem 0;
  border-top: 1px solid rgba(230, 222, 210, 0.22);
}
.res-note:last-child { padding-bottom: 0; }
.res-note-title,
.res-note-copy {
  display: block;
}
.res-note-title {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.66rem;
  text-transform: uppercase;
  letter-spacing: 0.28em;
  color: var(--accent-light);
  margin-bottom: 0.55rem;
}
.res-note-copy {
  color: #e6ded2;
  line-height: 1.6;
}
.reservation-card {
  padding: clamp(1.5rem, 3vw, 2.5rem);
  border: 1px solid rgba(230, 222, 210, 0.3);
  background: rgba(250, 249, 245, 0.025);
  color-scheme: dark;
}
.field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
  margin-bottom: 1.5rem;
}
.field { margin-bottom: 1.5rem; min-width: 0; }
.field-row > .field { margin-bottom: 0; }
.field label {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.68rem;
  font-weight: 400;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #e6ded2;
  display: block;
  margin-bottom: 0.8rem;
}
.field input,
.field select {
  width: 100%;
  background: rgba(250, 249, 245, 0.05);
  border: 1px solid rgba(230, 222, 210, 0.5);
  min-height: 3.25rem;
  border-radius: 0;
  padding: 0.95rem 1rem;
  color: var(--white);
  font-family: 'Cormorant Garamond', serif;
  font-size: 1rem;
  outline: none;
  transition: border-color 0.3s, background 0.3s, box-shadow 0.3s;
  -webkit-appearance: none;
  appearance: none;
}
.field select option { background: var(--black); }
.field select {
  padding-right: 2.5rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23e6ded2' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1rem center;
}
.field input:focus,
.field select:focus {
  border-color: var(--accent-on-dark);
  background-color: rgba(250, 249, 245, 0.08);
  outline: 2px solid var(--accent-on-dark);
  outline-offset: 3px;
  box-shadow: 0 0 0 4px rgba(184, 139, 77, 0.12);
}
.field input::placeholder { color: rgba(230, 222, 210, 0.78); }
.honeypot {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.submit-btn {
  margin-top: 1rem;
  width: 100%;
}
.form-status {
  min-height: 1.5rem;
  margin-top: 1rem;
  color: #dfd6c9;
  font-size: 1rem;
  line-height: 1.5;
}
.form-status:empty { display: none; }
.form-assurance {
  margin-top: 1rem;
  color: #e6ded2;
  font-size: 1rem;
  line-height: 1.6;
  text-align: center;
}
.form-assurance a { color: var(--accent-on-dark); }
/* The form needs JavaScript to compose the WhatsApp request. Without it, show a
   direct-contact fallback instead of submitting personal data as a GET request. */
html:not(.js) #res-form { display: none; }
.res-fallback {
  padding: clamp(1.5rem, 3vw, 2.5rem);
  border: 1px solid rgba(230, 222, 210, 0.3);
  background: rgba(250, 249, 245, 0.025);
  display: grid;
  gap: 1.25rem;
  justify-items: start;
}
.res-fallback p {
  color: #e6ded2;
  font-size: 1rem;
  line-height: 1.7;
}
@media (max-width: 900px) {
  .reservations {
    display: block;
    min-height: 0;
  }
  .res-wrapper {
    grid-template-columns: 1fr;
    gap: 3rem;
  }
  .res-intro {
    padding: 0;
  }
  .res-notes { margin-top: 2rem; }
  .reservation-card {
    margin: 0;
  }
  .field-row { grid-template-columns: 1fr 1fr; }
}

/* Reservation shortcut stays out of the way of dialogs and the form. */
.mobile-reserve { display: none; }
@media (max-width: 900px) {
  .mobile-reserve {
    position: fixed;
    z-index: 170;
    bottom: max(1rem, env(safe-area-inset-bottom));
    left: 50%;
    transform: translateX(-50%);
    width: min(26rem, calc(100% - 2rem));
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 3.5rem;
    padding: 1rem 1.25rem;
    color: var(--white);
    background: var(--dark);
    border: 1px solid var(--accent-on-dark);
    box-shadow: 0 0.5rem 2rem rgba(15, 14, 12, 0.2);
    font: 500 0.72rem / 1.5 'Montserrat', sans-serif;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    text-decoration: none;
  }
  body.menu-open .mobile-reserve,
  body.lightbox-open .mobile-reserve { display: none; }
  .footer { padding-bottom: 7rem; }
}

/* ── Footer ── */
.footer {
  position: relative;
  padding: 5.5rem 6vw 2.5rem;
  border-top: 1px solid var(--stone);
  background: var(--off);
  color: var(--dark);
}
.footer-grid {
  display: grid;
  grid-template-columns: minmax(17rem, 1.35fr) repeat(3, minmax(9rem, 0.75fr));
  gap: clamp(2rem, 4vw, 4.5rem);
  width: min(78rem, 100%);
  margin: 0 auto 2rem;
  padding-bottom: 3.75rem;
  border-bottom: 1px solid var(--stone);
  align-items: start;
}
.footer-brand {
  max-width: 25rem;
  padding-right: clamp(2rem, 4vw, 4rem);
  border-right: 1px solid var(--stone);
  text-align: center;
}
.footer-logo-image {
  display: block;
  width: 7rem;
  height: auto;
  margin: 0 auto 1.5rem;
}
.footer-tagline {
  margin-top: 0.9rem;
  font-style: italic;
  color: var(--mid);
  font-size: 1.04rem;
  line-height: 1.8;
}
.footer-location {
  color: var(--mid);
  font-size: 1.04rem;
  line-height: 1.8;
}
.footer-column {
  padding-top: 0.4rem;
}
.footer-col-head {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: #765329;
  margin-bottom: 1.5rem;
}
.footer-nav-list { list-style: none; }
.footer-nav-list li { margin-bottom: 0.85rem; }
.footer-nav-list a {
  color: var(--mid);
  text-decoration: none;
  font-size: 1rem;
  transition: color 0.3s;
}
.footer-nav-list a:hover { color: var(--accent); }
.footer-info {
  color: var(--mid);
  font-size: 1rem;
  line-height: 1.85;
}
.footer-info a {
  color: var(--dark);
  text-decoration: none;
  border-bottom: 1px solid rgba(141, 103, 49, 0.45);
  transition: color 0.3s, border-color 0.3s;
  overflow-wrap: anywhere;
}
.footer-info a:hover {
  color: var(--accent);
  border-color: var(--accent);
}
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  width: min(78rem, 100%);
  margin-inline: auto;
}
.footer-copy {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.65rem;
  font-weight: 400;
  letter-spacing: 0.3em;
  color: var(--warm-gray);
}
@media (max-width: 900px) {
  .footer {
    padding-top: 4.5rem;
  }
  .footer-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 2.5rem 2rem;
  }
  .footer-brand {
    grid-column: 1 / -1;
    width: 100%;
    max-width: none;
    padding: 0 0 2.5rem;
    border-right: 0;
    border-bottom: 1px solid var(--stone);
  }
}
@media (max-width: 700px) {
  section { scroll-margin-top: 5.5rem; }
  .mobile-menu {
    padding: 5.5rem 1rem 1rem;
  }
  .mobile-menu-inner {
    padding: 1rem;
    gap: 0.6rem;
  }
  .mobile-menu-link,
  .mobile-menu-cta {
    min-height: 3.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
  }
  .nav {
    padding: 1rem 5vw;
    gap: 1rem;
  }
  .nav.scrolled { padding: 0.9rem 5vw; }
  .nav-logo-name { font-size: 1.5rem; }
  .nav-logo-stack span {
    font-size: 0.5rem;
    letter-spacing: 0.24em;
  }
  .hero {
    min-height: auto;
    padding: 6.5rem 0 3.25rem;
  }
  .hero-content {
    --hero-item-gap: 2.5rem;
    padding: 1rem 1.25rem 0;
  }
  .hero-location {
    margin-bottom: 0;
    gap: 0.75rem;
    letter-spacing: 0.32em;
    line-height: 1.8;
    flex-wrap: wrap;
  }
  .hero-location::before,
  .hero-location::after {
    width: 22px;
  }
  .hero-name {
    font-size: clamp(5.4rem, 32vw, 9rem);
    margin-bottom: 0;
  }
  .hero-sub {
    font-size: 1rem;
    letter-spacing: 0.08em;
    margin-bottom: 0;
  }
  .hero-divider { margin-bottom: 0; }
  .hero-ctas {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    width: 100%;
  }
  .hero-cta-link {
    width: 100%;
    text-align: center;
    padding: 1rem 1.1rem;
    border: 1px solid rgba(250, 249, 245, 0.48);
    background: rgba(15, 14, 12, 0.34);
    backdrop-filter: blur(8px);
  }
  .hero-cta-link::after { display: none; }
  .marquee-strip {
    padding: 1.25rem 5vw;
  }
  .marquee-item {
    font-size: 0.92rem;
    gap: 1rem;
  }
  .about,
  .menu,
  .experience,
  .gallery,
  .private-events,
  .reservations,
  .footer {
    padding-left: 5vw;
    padding-right: 5vw;
  }
  .about,
  .menu,
  .experience,
  .gallery,
  .private-events,
  .reservations {
    padding-top: 4.5rem;
    padding-bottom: 4.5rem;
  }
  .about { gap: 0; }
  .about-left h2,
  .menu-header-left h2,
  .exp-text h2,
  .gallery-header h2,
  .private-events-card h2,
  .res-wrapper h2 {
    font-size: clamp(1.55rem, 7vw, 2.15rem);
  }
  .about-left p,
  .menu-header-right p,
  .exp-text blockquote,
  .res-intro > p {
    font-size: 1rem;
    line-height: 1.75;
  }
  .hero-scroll-hint {
    display: none;
  }
  .footer-bottom {
    flex-direction: column;
    align-items: flex-start;
  }
  .experience { gap: 0; }
  .feature-row {
    gap: 1rem;
    padding: 1.2rem 0;
  }
  .exp-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .exp-photo-featured { grid-column: 1 / -1; }
  .exp-photo-featured { aspect-ratio: 4 / 3; }
  .exp-photo-detail { aspect-ratio: 3 / 4; }
  .exp-photo-detail figcaption > span { display: none; }
  .about-right,
  .story-collage,
  .story-photo-primary { min-height: 20rem; }
  .about-left {
    margin: -1.5rem 0.5rem 0;
    padding: 1.5rem;
  }
  .about-copy { padding-left: 1rem; }
  .exp-text {
    margin: -2.5rem 1.25rem 0 0.5rem;
    padding: 1.5rem;
  }
  .gallery-header {
    width: calc(100% - 1.5rem);
    margin: 0 auto -1.5rem;
    padding: 1.5rem;
  }
  .private-events-media,
  .private-events-media img { min-height: 20rem; }
  .private-events-card {
    margin: -1rem 0.5rem 0 1.25rem;
    padding: 1.5rem;
  }
  .private-events-facts { margin: 1.5rem 0; }
  .res-wrapper { gap: 2.5rem; }
  .res-intro { padding: 0; }
  .reservation-card { margin: 0; }
  .res-notes { gap: 0.75rem; }
  .reservation-card { padding: 1.25rem; }
  .field-row,
  .field { margin-bottom: 1rem; }
  .field label {
    letter-spacing: 0.28em;
    margin-bottom: 0.55rem;
  }
  .field input,
  .field select {
    padding: 0.9rem;
    font-size: 1rem;
  }
  .field select { padding-right: 2.5rem; }
  .submit-btn {
    padding: 1rem 1.2rem;
    letter-spacing: 0.18em;
  }
  .footer {
    padding-top: 4rem;
    padding-bottom: 7rem;
  }
  .footer-grid {
    grid-template-columns: 1fr;
    gap: 0;
    margin-bottom: 2rem;
    padding-bottom: 1.25rem;
  }
  .footer-brand {
    grid-column: 1;
    width: 100%;
    max-width: none;
    margin: 0 0 1rem;
    padding: 0 0 2rem;
  }
  .footer-logo-image {
    width: 6.5rem;
    margin-bottom: 1.25rem;
  }
  .footer-column {
    grid-column: 1;
    padding: 1.5rem 0;
    border-top: 1px solid var(--stone);
  }
  .footer-hours { grid-column: 1; }
  .footer-info {
    overflow-wrap: anywhere;
    font-size: 0.94rem;
    line-height: 1.65;
  }
  .footer-col-head {
    margin-bottom: 0.9rem;
  }
  .footer-nav-list li { margin-bottom: 0.5rem; }
  .footer-copy {
    letter-spacing: 0.12em;
    line-height: 1.8;
  }
  .field label,
  .mobile-menu-link,
  .mobile-menu-cta,
  .private-events-cta,
  .footer-col-head {
    letter-spacing: 0.14em;
  }
}

@media (max-width: 420px) {
  .field-row { grid-template-columns: 1fr; }
  .hero { padding-top: 7rem; }
  .hero-location {
    font-size: 0.62rem;
    letter-spacing: 0.22em;
  }
  .hero-name {
    font-size: clamp(4.8rem, 31vw, 7rem);
  }
  .hero-sub {
    font-size: 0.95rem;
  }
  .menu-header-right p,
  .row-desc,
  .feature-body p,
  .res-note-copy,
  .footer-info {
    font-size: 0.98rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
  }
  .reveal {
    opacity: 1;
    transform: none;
  }
  .hero-location,
  .hero-name,
  .hero-sub,
  .hero-divider,
  .hero-ctas,
  .hero-scroll-hint {
    opacity: 1;
  }
  .hero-scroll-bar::after { display: none; }
}
