:root {
  --background: #f2eee7;
  --surface: #fffdf8;
  --elevated: #e4e9e4;
  --text: #2d292b;
  --muted: #6b6366;
  --border: #cfc5bd;
  --accent: #5b2b45;
  --accent-hover: #3d1b2d;
  --cta: #a64c2d;
  --cta-hover: #80371f;
  --cta-text: #fffaf2;
  --focus: #207a82;
  --success: #3d7057;
  --error: #a83c35;
  --header: #2d2029;
  --footer: #ddd6ce;
  --form: #f8f4ed;
  --sage: #71837a;
  --plum-soft: #eadfe5;
  --display: Georgia, "Times New Roman", serif;
  --sans: "Helvetica Neue", Helvetica, Arial, sans-serif;
  --rail: 248px;
  --wrap: min(1120px, calc(100% - 88px));
  --shadow: 0 22px 55px rgba(45, 32, 41, .13);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 32px; }
body {
  margin: 0;
  padding-left: var(--rail);
  color: var(--text);
  background: var(--background);
  font: 17px/1.68 var(--sans);
  -webkit-font-smoothing: antialiased;
}
body.menu-open,
body.modal-open { overflow: hidden; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
button,
input,
select,
textarea { font: inherit; }
button,
select { cursor: pointer; }
h1,
h2,
h3,
p { margin-top: 0; }
h1,
h2,
h3 {
  font-family: var(--display);
  font-weight: 400;
  letter-spacing: -.025em;
  line-height: 1.04;
  text-wrap: balance;
}
h1 { font-size: clamp(3rem, 6.2vw, 4.5rem); }
h2 { font-size: clamp(2rem, 3.8vw, 2.8rem); }
h3 { font-size: clamp(1.2rem, 2vw, 1.55rem); }
p,
li { max-width: 70ch; }
address { font-style: normal; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }
.wrap { width: var(--wrap); margin-inline: auto; }
.narrow { width: min(760px, calc(100% - 88px)); margin-inline: auto; }
.section { padding: clamp(76px, 9vw, 124px) 0; border-top: 1px solid var(--border); }
.section.tight { padding-block: 48px; }
.surface { background: var(--surface); }
.forest { color: #fffaf2; background: var(--accent); }
.warm { background: #e8e0d7; }
.small { font-size: .84rem; }
.eyebrow {
  margin-bottom: 18px;
  color: var(--cta);
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .17em;
  line-height: 1.4;
  text-transform: uppercase;
}
.forest .eyebrow,
.page-hero.green .eyebrow,
.poker-feature .eyebrow,
.poker-hero .eyebrow,
.booking-copy .eyebrow { color: #edb497; }
.lead { color: var(--muted); font-size: clamp(1.03rem, 1.6vw, 1.2rem); line-height: 1.7; }
.section-intro {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(290px, .62fr);
  gap: clamp(42px, 8vw, 106px);
  align-items: end;
  margin-bottom: 50px;
}
.section-intro h2 { max-width: 720px; margin-bottom: 0; }
.section-intro > p { margin-bottom: 3px; color: var(--muted); }
.forest .section-intro > p { color: #e5dce1; }
.action-row { display: flex; flex-wrap: wrap; gap: 14px 24px; align-items: center; margin-top: 30px; }
.section-actions { margin-top: 38px; }
.button {
  display: inline-flex;
  min-height: 50px;
  align-items: center;
  justify-content: center;
  padding: 11px 20px;
  border: 1px solid var(--cta);
  border-radius: 0;
  color: var(--cta-text);
  background: var(--cta);
  font-size: .9rem;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  transition: color .2s, background .2s, border-color .2s, transform .2s;
}
.button:hover { border-color: var(--cta-hover); background: var(--cta-hover); transform: translate(-2px, -2px); }
.button.secondary { color: var(--accent); border-color: var(--accent); background: transparent; }
.button.secondary:hover { color: #fff; background: var(--accent); }
.text-link { position: relative; color: var(--accent); font-weight: 700; text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); }
.text-link:hover { color: var(--cta-hover); text-decoration-color: currentColor; }
.text-link.light,
.forest .text-link { color: #fffaf2; }
.skip-link { position: fixed; z-index: 300; top: 8px; left: 8px; padding: 10px 14px; color: white; background: var(--focus); transform: translateY(-160%); }
.skip-link:focus { transform: none; }

/* Desktop signature: a permanent editorial navigation rail. */
.site-header {
  position: fixed;
  z-index: 90;
  inset: 0 auto 0 0;
  width: var(--rail);
  color: #f7f0e8;
  background: var(--header);
  border-right: 1px solid rgba(255, 255, 255, .16);
}
.rail-shell { display: flex; height: 100%; flex-direction: column; padding: 34px 26px 28px; }
.brand { display: block; width: 100%; }
.brand img { width: 196px; filter: brightness(0) invert(1); }
.rail-kicker { margin: 12px 0 42px; color: #bcaeb6; font-size: .64rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.menu-toggle { display: none; }
.main-nav { display: flex; min-height: 0; flex: 1; flex-direction: column; }
.nav-primary { border-bottom: 1px solid rgba(255, 255, 255, .18); }
.nav-primary > a,
.nav-group > button {
  display: grid;
  width: 100%;
  min-height: 49px;
  grid-template-columns: 28px 1fr auto;
  gap: 9px;
  align-items: center;
  padding: 11px 0;
  border: 0;
  border-top: 1px solid rgba(255, 255, 255, .18);
  color: #f7f0e8;
  background: none;
  font-family: var(--display);
  font-size: 1.08rem;
  text-align: left;
  text-decoration: none;
  transition: padding .2s, color .2s;
}
.nav-primary > a > span,
.nav-group > button > span { color: #a896a0; font-family: var(--sans); font-size: .58rem; font-weight: 700; letter-spacing: .08em; }
.nav-primary > a:hover,
.nav-primary > a.active,
.nav-group > button:hover,
.nav-group.open > button,
.nav-group.current > button { padding-left: 8px; color: #f0a07a; }
.nav-group > button b { color: #f0a07a; font: 400 1.2rem/1 var(--sans); transition: transform .2s; }
.nav-group.open > button b { transform: rotate(45deg); }
.nav-panel { display: none; padding: 4px 0 12px 36px; }
.nav-group.open .nav-panel { display: grid; }
.nav-panel a { padding: 7px 0; color: #d9cfd5; font-size: .74rem; text-decoration: none; }
.nav-panel a:hover { color: #fff; }
.nav-panel small { color: #f0a07a; font-weight: 700; }
.rail-contact { display: grid; gap: 2px; margin-top: auto; padding: 22px 0 18px; border-top: 1px solid rgba(255, 255, 255, .18); }
.rail-contact span,
.rail-contact small { color: #a997a1; font-size: .62rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.rail-contact a { color: #fffaf3; font-family: var(--display); font-size: 1.05rem; text-decoration: none; }
.header-cta { width: 100%; justify-content: space-between; border-color: #f0a07a; background: transparent; }
.header-cta:hover { border-color: #f0a07a; background: #f0a07a; color: #2d2029; }

.breadcrumbs { padding-block: 15px; color: var(--muted); font-size: .7rem; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.breadcrumbs li + li::before { margin-right: 8px; color: var(--cta); content: "—"; }
.breadcrumbs a { text-decoration: none; }

.page-hero { position: relative; padding: clamp(62px, 8vw, 105px) 0; border-block: 1px solid var(--border); background: var(--surface); overflow: hidden; }
.page-hero::after { position: absolute; top: 0; right: 0; width: 20%; height: 8px; background: var(--cta); content: ""; }
.page-hero-grid { display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(300px, .58fr); gap: clamp(40px, 7vw, 90px); align-items: end; }
.page-title-block { position: relative; }
.page-title-block::before { position: absolute; top: -48px; left: -28px; color: rgba(91, 43, 69, .07); content: "H"; font: 400 clamp(7rem, 16vw, 13rem)/1 var(--display); pointer-events: none; }
.page-hero h1 { position: relative; max-width: 790px; margin-bottom: 0; }
.page-hero .hero-lead { margin: 0; padding: 4px 0 4px 28px; border-left: 1px solid var(--cta); color: var(--muted); font-size: 1.03rem; }
.page-hero.green { color: #fffaf2; background: var(--accent); }
.page-hero.green::after { background: #edb497; }
.page-hero.green .page-title-block::before { color: rgba(255, 255, 255, .06); }
.page-hero.green .hero-lead { color: #e7dde2; border-color: #edb497; }

.home-hero { padding: clamp(68px, 7vw, 100px) 0 0; background: #f7f2ea; overflow: hidden; }
.hero-shell { display: grid; grid-template-columns: minmax(340px, .9fr) minmax(430px, 1.1fr); gap: clamp(48px, 7vw, 100px); align-items: center; }
.hero-copy { position: relative; z-index: 2; padding-bottom: 72px; }
.hero-copy::after { position: absolute; bottom: 18px; left: 0; color: #b7aaa4; content: "H / 3517"; font-size: .62rem; font-weight: 700; letter-spacing: .18em; }
.hero-copy h1 { max-width: 660px; margin-bottom: 26px; font-size: clamp(3.45rem, 6.6vw, 5.1rem); line-height: .96; }
.hero-copy .lead { max-width: 590px; margin-bottom: 0; }
.hero-facts { display: grid; margin: 38px 0 0; padding: 0; border-top: 1px solid var(--border); }
.hero-facts div { display: grid; grid-template-columns: minmax(145px, .85fr) 1fr; gap: 18px; padding: 11px 0; border-bottom: 1px solid var(--border); }
.hero-facts dt { color: var(--muted); font-size: .62rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
.hero-facts dd { margin: 0; color: var(--accent); font-size: .81rem; font-weight: 700; text-align: right; }
.hero-media { display: grid; grid-template-columns: 1fr 1fr; align-self: stretch; margin: 0; padding: 0; }
.hero-media > picture { grid-column: 1 / -1; }
.hero-media > picture img { width: 100%; height: 100%; min-height: 590px; max-height: 720px; aspect-ratio: .92 / 1; object-fit: cover; }
.hero-food-card { position: static; display: grid; width: auto; margin: 0; grid-template-columns: 92px 1fr; border: 1px solid var(--border); border-top: 0; background: var(--surface); }
.hero-food-card img { width: 92px; height: 100%; min-height: 104px; object-fit: cover; }
.hero-food-card figcaption { display: flex; flex-direction: column; justify-content: center; padding: 14px; }
.hero-food-card span,
.hero-reservation span { color: var(--muted); font-size: .58rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.hero-food-card strong { margin-top: 4px; font-family: var(--display); font-size: .82rem; font-weight: 400; line-height: 1.28; }
.hero-reservation { position: static; display: grid; max-width: none; grid-template-columns: 1fr auto; align-content: center; padding: 16px 18px; border: 0; color: #fffaf2; background: var(--accent); box-shadow: none; text-decoration: none; }
.hero-reservation span,
.hero-reservation strong { grid-column: 1; }
.hero-reservation span { color: #cbbbc4; }
.hero-reservation strong { margin-top: 4px; font-size: .78rem; line-height: 1.3; }
.hero-reservation b { grid-column: 2; grid-row: 1 / 3; align-self: center; margin-left: 12px; color: #f0a07a; font-size: 1.2rem; }
.planning-strip { border-block: 1px solid var(--border); background: #e5e9e4; }
.visit-strip { display: grid; grid-template-columns: repeat(4, 1fr); }
.visit-strip > div { min-height: 92px; padding: 22px 20px; border-right: 1px solid var(--border); }
.visit-strip > div:first-child { padding-left: 0; }
.visit-strip > div:last-child { border-right: 0; }
.visit-strip span { display: block; color: var(--muted); font-size: .59rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.visit-strip strong { display: block; margin-top: 5px; font-family: var(--display); font-size: .92rem; font-weight: 400; }

.menu-showcase { display: grid; grid-template-columns: minmax(250px, .42fr) minmax(0, 1.58fr); gap: clamp(40px, 6vw, 78px); align-items: start; }
.menu-overview { position: sticky; top: 34px; padding: 0 24px 0 0; border-right: 1px solid var(--border); }
.menu-index { color: var(--cta); font-size: .65rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.menu-overview h3 { margin: 22px 0 16px; font-size: 1.75rem; }
.menu-overview p { color: var(--muted); }
.menu-preview { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--accent); }
.menu-preview article { min-height: 180px; padding: 22px 20px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.menu-preview article:nth-child(3n) { border-right: 0; }
.menu-preview h3 { margin: 0 0 9px; font-size: 1.18rem; }
.menu-preview p { margin: 0 0 26px; color: var(--muted); font-size: .8rem; }
.menu-preview strong { display: block; margin-top: auto; color: var(--accent); font-size: .88rem; font-weight: 700; }
.price-note { padding: 20px 0; color: var(--muted); font-size: .83rem; }

.editorial-split { display: grid; grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr); gap: clamp(42px, 8vw, 98px); align-items: center; }
.editorial-split.reverse > :first-child { order: 2; }
.editorial-split .copy h2 { margin-bottom: 24px; }
.editorial-split .copy p { color: var(--muted); }
.forest .editorial-split .copy p,
.forest .poker-rules p { color: #e5dce1; }
.forest .diet-note .eyebrow { color: var(--cta); }
.image-frame { position: relative; margin: 0; }
.image-frame::after { position: absolute; top: 18px; right: -18px; bottom: -18px; left: 18px; z-index: 0; border: 1px solid var(--cta); content: ""; }
.image-frame img { position: relative; z-index: 1; width: 100%; aspect-ratio: 4 / 3; border-radius: 0; object-fit: cover; }
.image-frame.arch img { aspect-ratio: 1 / 1; border-radius: 48% 48% 0 0; }
.kitchen-story { grid-template-columns: minmax(0, 1.15fr) minmax(360px, .85fr); gap: 0; }
.kitchen-story .copy { position: relative; z-index: 3; margin-left: -110px; padding: clamp(40px, 5vw, 64px); border: 1px solid var(--border); background: var(--surface); }
.fact-column { display: grid; margin: 27px 0 30px; border-top: 1px solid var(--border); }
.fact-column > div { display: grid; grid-template-columns: 88px 1fr; gap: 18px; padding: 13px 0; border-bottom: 1px solid var(--border); }
.fact-column span { color: var(--cta); font-size: .63rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.fact-column p { margin: 0; font-size: .82rem; }

.principles { display: grid; border-top: 1px solid var(--border); }
.principles article { display: grid; min-height: 130px; grid-template-columns: 100px minmax(190px, .65fr) minmax(0, 1fr); gap: 24px; align-items: start; padding: 28px 0; border-bottom: 1px solid var(--border); }
.principles .number { color: var(--cta); font-size: .63rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
.principles h3 { margin: 0; }
.principles p { margin: 0; color: var(--muted); font-size: .86rem; }
.forest .principles { border-color: rgba(255, 255, 255, .24); }
.forest .principles article { border-color: rgba(255, 255, 255, .24); }
.forest .principles p { color: #e5dce1; }

.program-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 18px; }
.program-card { position: relative; display: grid; min-height: 190px; grid-column: span 6; grid-template-columns: 122px 1fr; grid-template-rows: auto 1fr; gap: 8px 24px; padding: 30px 54px 30px 26px; border: 1px solid var(--border); background: transparent; text-decoration: none; transition: color .2s, background .2s, transform .2s; }
.program-card:nth-child(1),
.program-card:nth-child(4) { grid-column: span 7; }
.program-card:nth-child(2),
.program-card:nth-child(3) { grid-column: span 5; }
.program-card::after { position: absolute; top: 28px; right: 26px; color: var(--cta); content: "↗"; font-size: 1.1rem; }
.program-card:hover { color: #fffaf2; background: var(--accent); transform: translateY(-3px); }
.program-card:hover p,
.program-card:hover span { color: #eadfe5; }
.program-card span { grid-row: 1 / 3; color: var(--cta); font-size: .62rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.program-card h3 { margin: 0; font-size: 1.27rem; }
.program-card p { margin: 0; color: var(--muted); font-size: .82rem; transition: color .2s; }

.poker-feature { display: grid; grid-template-columns: minmax(350px, .82fr) minmax(0, 1.18fr); min-height: 570px; color: #fffaf2; background: var(--accent); }
.poker-feature figure { margin: 0; order: 2; }
.poker-feature img { width: 100%; height: 100%; object-fit: cover; }
.poker-feature .content { display: flex; flex-direction: column; justify-content: center; padding: clamp(42px, 6vw, 78px); }
.poker-feature .content p { color: #e5dce1; }
.policy-list { display: grid; margin: 24px 0 0; padding: 0; border-top: 1px solid rgba(255, 255, 255, .27); list-style: none; }
.policy-list li { padding: 10px 0; border-bottom: 1px solid rgba(255, 255, 255, .22); font-size: .83rem; }
.poker-hero { display: grid; grid-template-columns: minmax(350px, .78fr) minmax(0, 1.22fr); min-height: 570px; color: #fffaf2; background: var(--accent); }
.poker-hero .copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(42px, 6vw, 78px); }
.poker-hero .copy p { color: #e5dce1; }
.poker-hero img { width: 100%; height: 100%; object-fit: cover; }
.poker-rules { display: grid; border-block: 1px solid var(--border); }
.poker-rules > div { display: grid; grid-template-columns: .42fr 1fr; gap: 24px; padding: 25px 0; border-bottom: 1px solid var(--border); }
.poker-rules > div:last-child { border-bottom: 0; }
.poker-rules strong { font-family: var(--display); font-size: 1.2rem; font-weight: 400; }
.poker-rules p { margin: 0; color: var(--muted); font-size: .84rem; }

.location-panel { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(330px, .72fr); border: 1px solid var(--border); background: var(--surface); }
.location-copy { padding: clamp(38px, 6vw, 72px); }
.location-copy address { margin: 18px 0; color: var(--accent); font-family: var(--display); font-size: 1.25rem; line-height: 1.42; }
.location-visual { position: relative; display: grid; min-height: 430px; place-items: center; color: #fffaf2; background: var(--sage); overflow: hidden; }
.location-visual::before { position: absolute; inset: 22px; border: 1px solid rgba(255, 255, 255, .42); content: ""; }
.location-visual::after { position: absolute; right: -20%; bottom: -30%; width: 72%; aspect-ratio: 1; border: 1px solid rgba(255, 255, 255, .3); border-radius: 50%; content: ""; }
.location-visual > div,
.location-visual > span { position: relative; z-index: 2; max-width: 280px; text-align: center; }
.location-visual > div span { display: block; color: #ffe1d1; font-family: var(--display); font-size: 5.4rem; line-height: 1; }
.location-visual > div strong { display: block; margin-top: 8px; font-family: var(--display); font-size: 1.22rem; font-weight: 400; }
.location-visual > div p { margin: 6px 0 0; color: #edf3ef; }
.hours-list { display: grid; border-top: 1px solid var(--border); }
.hours-list > div { display: flex; gap: 18px; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--border); }
.hours-list strong { color: var(--accent); text-align: right; }
.hours-list.compact { font-size: .8rem; }
.hours-list.compact > div { padding: 6px 0; }

.booking-wrap { padding: clamp(76px, 10vw, 132px) 0; }
.booking-panel { display: grid; grid-template-columns: minmax(290px, .72fr) minmax(0, 1.28fr); border: 1px solid var(--border); background: var(--surface); }
.booking-copy { padding: clamp(40px, 6vw, 70px); color: #fffaf2; background: var(--accent); }
.booking-copy p { color: #e6dce2; }
.form-trust { display: grid; gap: 10px; margin-top: 32px; padding-top: 22px; border-top: 1px solid rgba(255, 255, 255, .25); color: #f2e9ee; font-size: .75rem; }
.form-trust span { display: block; }
.enquiry-form { padding: clamp(38px, 6vw, 70px); background: var(--form); }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 24px; }
.enquiry-form label { display: grid; gap: 7px; margin-bottom: 18px; color: #4a4145; font-size: .79rem; font-weight: 700; }
.enquiry-form input,
.enquiry-form select,
.enquiry-form textarea { width: 100%; min-height: 49px; padding: 11px 12px; border: 1px solid #aaa09a; border-radius: 3px; color: var(--text); background: var(--surface); }
.enquiry-form textarea { min-height: 138px; resize: vertical; }
.enquiry-form input:focus,
.enquiry-form select:focus,
.enquiry-form textarea:focus { border-color: var(--focus); outline: 2px solid color-mix(in srgb, var(--focus) 28%, transparent); outline-offset: 1px; }
.check-line { grid-template-columns: 20px 1fr !important; gap: 11px !important; align-items: start; font-size: .76rem !important; font-weight: 400 !important; line-height: 1.5; }
.check-line input { width: 19px; min-height: 19px; height: 19px; margin-top: 2px; padding: 0; accent-color: var(--accent); box-shadow: none !important; }
.check-line a { color: var(--accent); }
.form-submit { width: 100%; margin-top: 10px; }
.form-note { margin: 10px 0 0; color: var(--muted); font-size: .71rem; }
.form-message { margin-bottom: 22px; padding: 14px 16px; border-left: 4px solid; }
.form-message.error { color: #7f2923; border-color: var(--error); background: #f8e8e3; }
.honeypot { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap !important; }

.menu-layout { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: clamp(44px, 7vw, 82px); align-items: start; }
.menu-rail { position: sticky; top: 32px; display: grid; border-top: 1px solid var(--accent); }
.menu-rail a { padding: 11px 2px; border-bottom: 1px solid var(--border); color: var(--muted); font-size: .76rem; text-decoration: none; }
.menu-rail a:hover { color: var(--cta); padding-left: 7px; }
.menu-category { padding: 0 0 60px; scroll-margin-top: 30px; }
.menu-category h2 { margin-bottom: 0; padding: 0 0 18px; border-bottom: 2px solid var(--accent); font-size: 2rem; }
.menu-item { display: grid; grid-template-columns: 1fr auto; gap: 4px 22px; padding: 18px 0; border-bottom: 1px solid var(--border); }
.menu-item h3 { margin: 0; font-size: 1.13rem; }
.menu-item p { margin: 0; color: var(--muted); font-size: .81rem; }
.menu-item strong { grid-column: 2; grid-row: 1 / 3; align-self: center; color: var(--accent); font-size: .9rem; white-space: nowrap; }
.diet-note { padding: 28px; border: 1px solid var(--border); color: var(--text); background: var(--elevated); }
.diet-note h2 { font-size: 1.65rem; }
.diet-note p,
.diet-note li { color: var(--muted); }

.price-table { width: 100%; border-collapse: collapse; }
.price-table caption { margin-bottom: 18px; font-family: var(--display); font-size: 1.85rem; text-align: left; }
.price-table th,
.price-table td { padding: 14px 10px; border-bottom: 1px solid var(--border); text-align: left; }
.price-table th { color: var(--muted); font-size: .65rem; letter-spacing: .1em; text-transform: uppercase; }
.price-table td:last-child,
.price-table th:last-child { color: var(--accent); font-weight: 700; text-align: right; white-space: nowrap; }
.price-table + .price-table { margin-top: 56px; }
.pricing-band { padding: 27px 0; border-bottom: 1px solid var(--border); transition: padding .2s, background .2s; }
.pricing-band:hover { padding-inline: 16px; background: var(--surface); }
.pricing-band .row { display: grid; grid-template-columns: minmax(190px, .72fr) minmax(0, 1.28fr) auto; gap: 28px; align-items: start; }
.pricing-band h3,
.pricing-band p { margin-bottom: 0; }
.pricing-band p { color: var(--muted); }
.pricing-band strong { color: var(--accent); font-size: .9rem; white-space: nowrap; }

.timeline { display: grid; grid-template-columns: repeat(5, 1fr); margin-top: 40px; border-top: 1px solid var(--accent); }
.timeline article { min-height: 215px; padding: 26px 20px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.timeline article:first-child { border-left: 1px solid var(--border); }
.timeline .step { display: block; margin-bottom: 34px; color: var(--cta); font-size: .63rem; font-weight: 700; letter-spacing: .12em; }
.timeline h3 { font-size: 1.12rem; }
.timeline p { margin: 0; color: var(--muted); font-size: .78rem; }
.evening-flow { counter-reset: flow; display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 40px; border-top: 1px solid var(--accent); }
.evening-flow article { position: relative; min-height: 220px; padding: 52px 23px 26px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.evening-flow article:first-child { border-left: 1px solid var(--border); }
.evening-flow article::before { position: absolute; top: 19px; left: 23px; color: var(--cta); counter-increment: flow; content: "0" counter(flow); font-size: .63rem; font-weight: 700; letter-spacing: .1em; }
.evening-flow h3 { font-size: 1.12rem; }
.evening-flow p { color: var(--muted); font-size: .79rem; }
.service-details { display: grid; grid-template-columns: minmax(0, 1.28fr) minmax(280px, .72fr); gap: clamp(46px, 8vw, 94px); align-items: start; }
.service-copy p { color: var(--muted); }
.service-copy h2 { margin-top: 50px; }
.service-copy h2:first-of-type { margin-top: 0; }
.service-sidebar { position: sticky; top: 32px; padding: 30px; border: 1px solid var(--border); background: var(--surface); }
.service-sidebar h2 { font-size: 1.65rem; }
.included-list { display: grid; margin: 20px 0; padding: 0; border-top: 1px solid var(--border); list-style: none; }
.included-list li { padding: 11px 0; border-bottom: 1px solid var(--border); font-size: .82rem; }
.included-list li::before { display: inline-block; width: 16px; color: var(--success); content: "—"; }
.price-callout { margin: 24px 0; padding: 18px 0; border-block: 1px solid var(--border); color: var(--accent); font-family: var(--display); font-size: 1.12rem; }

.faq-list { border-top: 2px solid var(--accent); }
.faq-list details { border-bottom: 1px solid var(--border); }
.faq-list summary { display: flex; min-height: 70px; gap: 24px; align-items: center; justify-content: space-between; padding: 17px 0; font-family: var(--display); font-size: 1.18rem; cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary span { color: var(--cta); font-family: var(--sans); font-size: 1.25rem; transition: transform .2s; }
.faq-list details[open] summary span { transform: rotate(45deg); }
.faq-list details > div { padding: 0 48px 22px 0; color: var(--muted); }
.legal-layout { display: grid; grid-template-columns: 190px minmax(0, 780px); gap: clamp(44px, 8vw, 88px); align-items: start; }
.legal-nav { position: sticky; top: 32px; display: grid; border-top: 1px solid var(--accent); }
.legal-nav a { padding: 11px 0; border-bottom: 1px solid var(--border); color: var(--muted); font-size: .77rem; }
.legal-content h2 { margin: 52px 0 18px; font-size: 1.85rem; scroll-margin-top: 30px; }
.legal-content h2:first-child { margin-top: 0; }
.legal-content h3 { margin: 32px 0 12px; font-size: 1.3rem; }
.legal-content p,
.legal-content li { color: #4e474a; }
.legal-content table { width: 100%; margin: 22px 0; border-collapse: collapse; font-size: .83rem; }
.legal-content th,
.legal-content td { padding: 12px; border: 1px solid var(--border); text-align: left; vertical-align: top; }
.legal-content th { background: var(--elevated); }
.legal-content .updated { padding: 14px 0; border-block: 1px solid var(--border); font-weight: 700; }

.cookie-banner { position: fixed; z-index: 150; right: 20px; bottom: 20px; left: calc(var(--rail) + 20px); display: grid; max-width: 1040px; grid-template-columns: minmax(0, 1.1fr) minmax(330px, .9fr); gap: 28px; align-items: center; margin: auto; padding: 24px 26px; border: 1px solid #988c91; color: var(--text); background: var(--surface); box-shadow: var(--shadow); }
.cookie-banner h2 { margin-bottom: 7px; font-size: 1.35rem; }
.cookie-banner p { margin: 0; color: var(--muted); font-size: .78rem; }
.cookie-actions { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.cookie-actions .button { min-height: 44px; padding: 8px 10px; font-size: .7rem; }
.cookie-close { position: absolute; top: 5px; right: 8px; border: 0; color: var(--muted); background: none; font-size: 1.3rem; }
.modal-backdrop { position: fixed; z-index: 180; inset: 0; display: grid; padding: 20px; place-items: center; background: rgba(35, 25, 32, .78); }
.cookie-modal { width: min(660px, 100%); max-height: calc(100vh - 40px); padding: 32px; border: 1px solid var(--border); background: var(--surface); box-shadow: var(--shadow); overflow: auto; }
.modal-head { display: flex; gap: 20px; align-items: start; justify-content: space-between; }
.modal-head h2 { margin-bottom: 18px; font-size: 2rem; }
.modal-head button { border: 0; background: none; font-size: 1.7rem; }
.consent-row { display: grid; grid-template-columns: 1fr auto; gap: 22px; align-items: center; padding: 18px 0; border-top: 1px solid var(--border); }
.consent-row strong { font-family: var(--display); font-size: 1.08rem; font-weight: 400; }
.consent-row p { margin: 4px 0 0; color: var(--muted); font-size: .78rem; }
.consent-row input { width: 44px; height: 23px; accent-color: var(--accent); }
.always-on { color: var(--success); font-size: .72rem; font-weight: 700; }
.modal-actions { display: flex; gap: 10px; justify-content: flex-end; padding-top: 22px; border-top: 1px solid var(--border); }

.site-footer { color: var(--text); background: var(--footer); }
.footer-invite { padding: 54px 0; color: #fffaf2; background: var(--accent); }
.footer-invite-grid { display: grid; grid-template-columns: 110px 1fr auto; gap: 36px; align-items: center; }
.footer-index { color: #cbbac3; font-size: .65rem; font-weight: 700; letter-spacing: .15em; }
.footer-invite span:not(.footer-index) { color: #d9cbd2; font-size: .65rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.footer-invite h2 { margin: 7px 0 0; }
.footer-invite .action-row { margin: 0; }
.footer-invite .text-link { color: #fffaf2; }
.footer-grid { display: grid; grid-template-columns: minmax(270px, .72fr) minmax(0, 1.28fr); gap: clamp(54px, 9vw, 120px); padding-block: 72px; }
.footer-brand { padding-right: 40px; border-right: 1px solid #bdb3ad; }
.footer-brand img { width: 230px; margin-bottom: 24px; }
.footer-brand p,
.footer-brand address { color: #5f575a; font-size: .82rem; }
.footer-brand a { display: block; width: fit-content; margin: 6px 0; color: #463e42; font-size: .81rem; }
.footer-directory { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.footer-directory h2 { margin-bottom: 18px; color: var(--accent); font-family: var(--sans); font-size: .65rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.footer-directory a { display: block; width: fit-content; margin: 7px 0; color: #4f474b; font-size: .81rem; }
.footer-hours { margin-top: 22px; padding-top: 15px; border-top: 1px solid #bdb3ad; color: #655d60; font-size: .77rem; }
.footer-legal { color: #ddd0d7; background: var(--header); }
.footer-legal .wrap { display: flex; min-height: 66px; gap: 24px; align-items: center; justify-content: space-between; font-size: .68rem; }
.footer-legal nav { display: flex; flex-wrap: wrap; gap: 14px; justify-content: flex-end; }
.footer-legal a,
.footer-legal button { border: 0; color: inherit; background: none; font: inherit; text-decoration: underline; }
.mobile-booking { display: none; }

.not-found { display: grid; min-height: 66vh; place-items: center; text-align: center; }
.not-found .code { color: var(--cta); font-family: var(--display); font-size: clamp(5rem, 14vw, 10rem); line-height: 1; }
.thank-you-mark { display: grid; width: 82px; height: 82px; margin: 0 auto 28px; place-items: center; border: 1px solid var(--accent); border-radius: 50%; color: var(--accent); font-size: 2rem; }

@media (max-width: 1190px) {
  :root { --rail: 226px; --wrap: min(calc(100% - 64px), 1040px); }
  .rail-shell { padding-inline: 22px; }
  .brand img { width: 182px; }
  .hero-shell { grid-template-columns: .95fr 1.05fr; gap: 50px; }
  .hero-copy h1 { font-size: clamp(3.2rem, 5.9vw, 4.45rem); }
  .menu-preview { grid-template-columns: 1fr 1fr; }
  .menu-preview article:nth-child(3n) { border-right: 1px solid var(--border); }
  .menu-preview article:nth-child(2n) { border-right: 0; }
  .program-card,
  .program-card:nth-child(n) { grid-column: span 6; }
  .timeline { grid-template-columns: repeat(3, 1fr); }
  .timeline article:nth-child(4) { border-left: 1px solid var(--border); }
}

@media (max-width: 1119px) {
  :root { --wrap: min(calc(100% - 64px), 1100px); }
  html { scroll-padding-top: 96px; }
  body { padding-left: 0; }
  .site-header { position: sticky; inset: 0 0 auto; width: 100%; height: 82px; border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .16); }
  .rail-shell { display: grid; width: var(--wrap); height: 82px; grid-template-columns: 190px 1fr auto; gap: 28px; align-items: center; margin-inline: auto; padding: 0; }
  .brand img { width: 180px; }
  .rail-kicker,
  .rail-contact { display: none; }
  .main-nav { display: block; min-height: auto; }
  .nav-primary { display: flex; gap: clamp(16px, 2.5vw, 30px); align-items: center; justify-content: flex-end; border: 0; }
  .nav-primary > a,
  .nav-group > button { display: block; width: auto; min-height: auto; padding: 30px 0 27px; border: 0; font-family: var(--sans); font-size: .76rem; font-weight: 700; }
  .nav-primary > a > span,
  .nav-group > button > span { display: none; }
  .nav-primary > a:hover,
  .nav-primary > a.active,
  .nav-group > button:hover,
  .nav-group.open > button,
  .nav-group.current > button { padding-left: 0; color: #f0a07a; }
  .nav-group > button b { margin-left: 3px; }
  .nav-group { position: relative; }
  .nav-panel { position: absolute; top: calc(100% - 1px); right: 0; width: 230px; padding: 12px 18px 18px; border: 1px solid #5b4a54; background: var(--header); }
  .header-cta { width: auto; min-height: 42px; padding: 9px 14px; font-size: .75rem; }
  .cookie-banner { left: 20px; }
}

@media (max-width: 900px) {
  :root { --wrap: min(calc(100% - 36px), 760px); }
  html { scroll-padding-top: 78px; }
  body { padding-bottom: 62px; }
  .site-header,
  .rail-shell { height: 74px; }
  .rail-shell { width: calc(100% - 36px); grid-template-columns: 1fr auto; }
  .brand img { width: 174px; }
  .menu-toggle { display: grid; width: 68px; height: 48px; grid-template-columns: 22px 1fr; grid-template-rows: 6px 6px; gap: 2px 8px; align-content: center; justify-self: end; padding: 0; border: 0; color: #fffaf2; background: none; }
  .menu-toggle span { display: block; width: 22px; height: 1px; grid-column: 1; background: #fffaf2; }
  .menu-toggle b { grid-column: 2; grid-row: 1 / 3; align-self: center; font-size: .68rem; }
  .main-nav { position: fixed; z-index: 95; top: 74px; right: 0; bottom: 62px; left: 0; display: none; padding: 28px 22px 36px; background: var(--header); overflow: auto; }
  .main-nav.open { display: flex; flex-direction: column; }
  .nav-primary { display: block; }
  .nav-primary > a,
  .nav-group > button { display: grid; width: 100%; min-height: 58px; grid-template-columns: 36px 1fr auto; padding: 14px 0; border-top: 1px solid rgba(255, 255, 255, .18); font-family: var(--display); font-size: 1.3rem; text-align: left; }
  .nav-primary > a > span,
  .nav-group > button > span { display: block; }
  .nav-group > button b { justify-self: end; }
  .nav-panel { position: static; width: 100%; padding: 4px 0 12px 44px; border: 0; background: transparent; }
  .rail-contact { display: grid; margin-top: auto; }
  .header-cta { display: none; }
  .breadcrumbs { padding-block: 11px; }
  .page-hero-grid,
  .section-intro,
  .hero-shell,
  .editorial-split,
  .kitchen-story,
  .poker-feature,
  .poker-hero,
  .location-panel,
  .booking-panel,
  .service-details,
  .legal-layout { grid-template-columns: 1fr; }
  .page-hero-grid { gap: 30px; }
  .page-hero .hero-lead { padding-left: 20px; }
  .home-hero { padding-top: 48px; }
  .hero-copy { padding-bottom: 52px; }
  .hero-copy h1 { font-size: clamp(3.15rem, 9vw, 4.5rem); }
  .hero-media > picture img { min-height: 520px; aspect-ratio: 1.12 / 1; }
  .menu-showcase { grid-template-columns: 1fr; gap: 36px; }
  .menu-overview,
  .menu-rail,
  .service-sidebar,
  .legal-nav { position: static; }
  .menu-overview { padding: 0 0 26px; border-right: 0; border-bottom: 1px solid var(--border); }
  .editorial-split.reverse > :first-child { order: 0; }
  .kitchen-story .copy { margin: -56px 22px 0; padding: 38px; }
  .principles article { grid-template-columns: 84px minmax(180px, .65fr) 1fr; }
  .program-grid { gap: 12px; }
  .program-card,
  .program-card:nth-child(n) { grid-column: 1 / -1; }
  .poker-feature figure { order: 0; }
  .poker-feature img,
  .poker-hero img { max-height: 500px; }
  .location-visual { min-height: 360px; }
  .menu-layout { grid-template-columns: 1fr; gap: 32px; }
  .menu-rail { display: flex; gap: 8px; padding-bottom: 8px; border-top: 0; overflow-x: auto; }
  .menu-rail a { min-width: max-content; padding: 8px 10px; border: 1px solid var(--border); background: var(--surface); }
  .evening-flow { grid-template-columns: 1fr 1fr; }
  .evening-flow article:nth-child(odd) { border-left: 1px solid var(--border); }
  .legal-nav { grid-template-columns: repeat(2, 1fr); }
  .footer-invite-grid { grid-template-columns: 1fr; }
  .footer-index { display: none; }
  .footer-invite .action-row { margin-top: 12px; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-brand { padding: 0 0 38px; border-right: 0; border-bottom: 1px solid #bdb3ad; }
  .mobile-booking { position: fixed; z-index: 120; right: 0; bottom: 0; left: 0; display: grid; height: 62px; grid-template-columns: .72fr 1.28fr; border-top: 1px solid var(--header); background: var(--surface); }
  .mobile-booking a { display: grid; place-items: center; color: var(--accent); font-size: .79rem; font-weight: 700; text-decoration: none; }
  .mobile-booking a:last-child { color: #fffaf2; background: var(--cta); }
  .footer-legal .wrap { align-items: flex-start; flex-direction: column; padding-block: 20px; }
  .footer-legal nav { justify-content: flex-start; }
  .cookie-banner { right: 10px; bottom: 72px; left: 10px; grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
  :root { --wrap: calc(100% - 32px); }
  body { font-size: 16px; }
  .section { padding: 66px 0; }
  .narrow { width: calc(100% - 32px); }
  h1 { font-size: 2.8rem; }
  h2 { font-size: 2.05rem; }
  .page-title-block::before { left: -10px; }
  .hero-copy h1 { font-size: 3.08rem; }
  .hero-facts div { grid-template-columns: 1fr; gap: 2px; }
  .hero-facts dd { text-align: left; }
  .hero-media { grid-template-columns: 1fr; }
  .hero-media > picture { grid-column: 1; }
  .hero-media > picture img { min-height: 390px; aspect-ratio: .9 / 1; }
  .hero-food-card { border-right: 1px solid var(--border); }
  .hero-reservation { min-height: 90px; }
  .visit-strip { grid-template-columns: 1fr 1fr; }
  .visit-strip > div,
  .visit-strip > div:first-child { min-height: 80px; padding: 16px 10px; border-bottom: 1px solid var(--border); }
  .visit-strip > div:nth-child(2n) { border-right: 0; }
  .menu-preview { grid-template-columns: 1fr; }
  .menu-preview article,
  .menu-preview article:nth-child(n) { min-height: auto; border-right: 0; }
  .kitchen-story .copy { margin: -28px 8px 0; padding: 30px 22px; }
  .image-frame::after { display: none; }
  .principles article { grid-template-columns: 60px 1fr; gap: 14px; }
  .principles p { grid-column: 2; }
  .program-card { grid-template-columns: 1fr; padding: 26px 48px 26px 22px; }
  .program-card span { grid-row: auto; }
  .poker-rules > div { grid-template-columns: 1fr; gap: 8px; }
  .field-grid { grid-template-columns: 1fr; gap: 0; }
  .enquiry-form,
  .booking-copy { padding: 32px 22px; }
  .pricing-band .row { grid-template-columns: 1fr; gap: 8px; }
  .price-table { display: block; overflow-x: auto; }
  .timeline,
  .evening-flow { grid-template-columns: 1fr; }
  .timeline article,
  .timeline article:nth-child(n),
  .evening-flow article,
  .evening-flow article:nth-child(n) { min-height: auto; border-right: 0; border-left: 1px solid var(--border); }
  .modal-actions,
  .action-row { align-items: stretch; flex-direction: column; }
  .action-row .button { width: 100%; }
  .cookie-banner { padding: 20px; }
  .cookie-actions { grid-template-columns: 1fr; }
  .cookie-modal { padding: 25px 20px; }
  .consent-row { grid-template-columns: 1fr; gap: 10px; }
  .footer-directory { grid-template-columns: 1fr 1fr; gap: 36px 24px; }
  .footer-directory > div:last-child { grid-column: 1 / -1; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,
  *::before,
  *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
