/** Shopify CDN: Minification failed

Line 1582:11 Expected identifier but found whitespace
Line 1583:4 Unexpected "0"

**/
/* ==========================================================================
   The Pressoir editorial design system
   Paste into: Online Store > Themes > Customise > Theme settings > Custom CSS
   Everything is namespaced under .tpx so it cannot affect anything else.
   ========================================================================== */

/* Hide the theme's own page/article title only where a .tpx hero supplies one */
.shopify-section:has(.tpx-hero) .main-page-title { display: none !important; }
.article-template:has(.tpx-hero) > header { display: none !important; }

/* ---------- tokens ---------- */
.tpx {
  --serif: var(--font-heading-family, Georgia, "Times New Roman", serif);
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --hs: var(--font-heading-scale, 1);
  --fg: var(--color-foreground, 37 70 32);
  --bg: var(--color-background, 242 239 221);
  --w: 64rem;
  --p: .5;
  --lum: 1;
  --ease: cubic-bezier(.22, .7, .28, 1);
  --gfill: rgba(var(--fg), .05);
  --gbd: rgba(var(--fg), .16);
  --gin: 0 1px 0 rgba(var(--fg), .16) inset;
  --gsh: none;
  font-family: var(--serif);
  color: rgb(var(--fg));
  max-width: none;
  margin: 0;
  text-align: center;
  overflow-x: clip;
}
.tpx * { box-sizing: border-box; }
.tpx ul, .tpx ol {
  list-style: none !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.tpx li { list-style: none !important; margin-left: 0 !important; }
.tpx p { font-family: var(--serif); line-height: 1.62; margin: 0 0 1.2rem; text-wrap: pretty; }
.tpx h1, .tpx h2, .tpx h3 {
  font-family: var(--serif);
  font-weight: var(--font-heading-weight, 400);
  font-style: var(--font-heading-style, normal);
  text-wrap: balance;
  margin: 0;
}
.tpx h1 {
  font-size: clamp(calc(var(--hs) * 3rem), 3.6vw, calc(var(--hs) * 4.4rem));
  line-height: 1.14; letter-spacing: -.008em;
  margin: 0 0 clamp(1.5rem, 2vw, 2rem); color: rgb(var(--fg));
}
.tpx h2 {
  font-size: clamp(calc(var(--hs) * 2.2rem), 2.6vw, calc(var(--hs) * 3.2rem));
  line-height: 1.18; letter-spacing: -.006em;
  margin: 0 0 clamp(1.4rem, 2vw, 1.8rem); color: rgb(var(--fg));
}

/* ---------- eyebrow, diamond rule, lede, note ---------- */
.tpx-brow {
  font-family: var(--sans); font-size: clamp(1.15rem, 1vw, 1.35rem);
  letter-spacing: .26em; text-transform: uppercase; font-weight: 600;
  line-height: 1.5; margin: 0 0 1.5rem; text-indent: .26em;
  color: rgba(var(--fg), .72);
}
.tpx-rule {
  display: flex; align-items: center; justify-content: center; gap: 1.1rem;
  margin: 0 auto clamp(2rem, 3.2vw, 2.9rem); max-width: 20rem;
}
.tpx-rule::before, .tpx-rule::after {
  content: ""; flex: 1 1 auto; height: 1px;
  background: linear-gradient(90deg, rgba(var(--fg), 0), rgba(var(--fg), .28), rgba(var(--fg), 0));
}
.tpx-dia {
  font-size: .9rem; letter-spacing: .55em; line-height: 1;
  text-indent: .55em; color: rgba(var(--fg), .42);
}
.tpx-lede {
  color: rgba(var(--fg), .9); font-size: clamp(1.7rem, 1.4vw, 2rem);
  line-height: 1.62; max-width: 52rem;
  margin: 0 auto clamp(2.6rem, 4.4vw, 3.6rem);
}
.tpx-note {
  max-width: 48rem; margin: 0 auto; font-size: clamp(1.5rem, 1.2vw, 1.65rem);
  color: rgba(var(--fg), .85); line-height: 1.7;
}
.tpx-cap {
  font-family: var(--sans); font-size: clamp(1.1rem, .95vw, 1.25rem);
  letter-spacing: .1em; text-transform: uppercase;
  color: rgba(var(--fg), .58); line-height: 1.6; margin: 1.4rem 0 0; text-align: center;
}

/* ---------- layout ---------- */
.tpx-sec {
  margin: 0 auto clamp(3.4rem, 6vw, 5.4rem);
  padding: 0 clamp(1.6rem, 4vw, 2rem);
  max-width: var(--w); text-align: center;
}
.tpx-sec > * { margin-left: auto; margin-right: auto; }
.tpx-rows, .tpx-fine, .tpx-grid2, .tpx-grid3, .tpx-bento { margin-left: auto !important; margin-right: auto !important; }
/* panels sit at content width, on the same centre axis as everything else */
.tpx .tpx-bleed { width: 100%; margin-left: auto; margin-right: auto; transform: none; }
.tpx-inner {
  position: relative; z-index: 3; max-width: var(--w); margin: 0 auto; width: 100%;
  display: flex; flex-direction: column; align-items: center; text-align: center;
}
.tpx-inner > * { width: 100%; margin-left: auto; margin-right: auto; text-align: center; }

/* ---------- dark panel ---------- */
.tpx-dark .tpx-v { text-shadow: 0 1px 3px rgba(0, 0, 0, .3); }
.tpx-dark {
  --fg: 242 239 221; --bg: 37 70 32;
  --gfill: rgba(var(--fg), .07); --gbd: rgba(var(--fg), .16);
  --gin: 0 1px 0 rgba(var(--fg), .16) inset;
  --gsh: 0 24px 48px rgba(0, 0, 0, .30);
  position: relative; isolation: isolate; overflow: hidden;
  background: #254620; color: rgb(var(--fg)); text-align: center;
  padding: clamp(4.2rem, 8vw, 7.5rem) clamp(1.6rem, 4vw, 3rem);
  margin: 0 0 clamp(3.4rem, 6vw, 5.4rem);
  border-radius: 18px;
}
.tpx-glow {
  position: absolute; inset: -20% -10%; z-index: 0; pointer-events: none;
  background:
    radial-gradient(58% 42% at 50% calc(8% + var(--p) * 78%), rgba(150,196,120,.28) 0%, rgba(96,148,74,.14) 34%, rgba(37,70,32,0) 72%),
    radial-gradient(90% 70% at 50% 50%, #2d5427 0%, #254620 48%, #1b3317 100%);
  opacity: calc(.55 + var(--lum) * .45);
  transition: opacity .9s var(--ease);
}
.tpx-vig {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: radial-gradient(78% 62% at 50% 46%, rgba(0,0,0,0) 42%, rgba(0,0,0,.42) 100%);
}
.tpx-grain {
  position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: .05;
  background-image: radial-gradient(rgba(242,239,221,.9) .5px, transparent .6px);
  background-size: 3px 3px; mix-blend-mode: overlay;
}
.tpx-frame {
  position: absolute; z-index: 1; pointer-events: none;
  inset: clamp(1rem, 2vw, 1.8rem);
  border: 1px solid rgba(var(--fg), .13); border-radius: 10px;
}

/* ---------- reveals ---------- */
.tpx-el {
  opacity: 0; transform: translateY(20px);
  transition: opacity 1s var(--ease), transform 1s var(--ease);
}
.tpx-panel.is-in .tpx-el { opacity: 1; transform: none; }
.tpx-panel.is-in .tpx-el:nth-child(1) { transition-delay: .04s; }
.tpx-panel.is-in .tpx-el:nth-child(2) { transition-delay: .14s; }
.tpx-panel.is-in .tpx-el:nth-child(3) { transition-delay: .24s; }
.tpx-panel.is-in .tpx-el:nth-child(4) { transition-delay: .34s; }
.tpx-panel.is-in .tpx-el:nth-child(5) { transition-delay: .46s; }
.tpx-panel.is-in .tpx-el:nth-child(n+6) { transition-delay: .62s; }
.tpx-line { display: block; overflow: hidden; padding-bottom: .06em; }
.tpx-line > span {
  display: block; transform: translateY(105%);
  transition: transform 1.1s cubic-bezier(.16, .78, .22, 1);
}
.tpx-panel.is-in .tpx-line > span { transform: translateY(0); }
/* content must never depend on JS to become visible */
.tpx:not(.tpx-js) .tpx-el { opacity: 1; transform: none; }
.tpx:not(.tpx-js) .tpx-line > span { transform: none; }

/* ---------- glass stats plate ---------- */
.tpx-glass {
  display: grid; grid-template-columns: repeat(4, 1fr);
  max-width: min(52rem, 100%); margin: 0 auto;
  border-radius: 14px; overflow: hidden;
  background: var(--gfill); border: 1px solid var(--gbd);
  box-shadow: var(--gin), var(--gsh);
}
.tpx-glass--2 { grid-template-columns: repeat(2, 1fr); max-width: min(40rem, 100%); }
.tpx-glass--3 { grid-template-columns: repeat(3, 1fr); }
.tpx-cell {
  padding: clamp(1.6rem, 3vw, 2.4rem) clamp(.6rem, 1.4vw, 1.2rem);
  border-right: 1px solid rgba(var(--fg), .12);
  transition: background .4s ease;
}
.tpx-cell:last-child { border-right: 0; }
.tpx-glass:hover .tpx-cell { background: rgba(var(--fg), .03); }
.tpx-k {
  display: block; font-family: var(--sans);
  font-size: clamp(.85rem, 1.7vw, 1.15rem);
  letter-spacing: clamp(.1em, .6vw, .22em); text-transform: uppercase;
  color: rgba(var(--fg), .6); margin: 0 0 .7rem; line-height: 1.4;
}
.tpx-v {
  display: block; font-family: var(--serif);
  font-size: clamp(1.7rem, 1.9vw, 2.2rem); line-height: 1.2;
  color: rgb(var(--fg));
}
.tpx-v small {
  display: block; font-family: var(--sans);
  font-size: clamp(.8rem, 1.4vw, 1.05rem); letter-spacing: .12em;
  text-transform: uppercase; color: rgba(var(--fg), .58);
  margin-top: .6rem; line-height: 1.4; text-shadow: none;
}

/* ---------- bento cards ---------- */
.tpx-bento {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(1rem, 1.8vw, 1.4rem); text-align: left;
}
.tpx-bento--2 { grid-template-columns: repeat(2, 1fr); }
.tpx-bento--4 { grid-template-columns: repeat(4, 1fr); }
.tpx-bento > li {
  position: relative; overflow: hidden; border-radius: 14px;
  background: var(--gfill); border: 1px solid var(--gbd);
  box-shadow: var(--gin), var(--gsh);
  padding: clamp(2rem, 3vw, 2.6rem) clamp(1.6rem, 2.2vw, 2rem);
  transition: transform .5s var(--ease), border-color .5s ease, background .5s ease;
}
.tpx-bento > li:hover {
  transform: translateY(-4px);
  border-color: rgba(var(--fg), .34);
  background: rgba(var(--fg), .08);
}
.tpx-num {
  display: block; font-family: var(--serif);
  font-size: clamp(2.4rem, 2.6vw, 3rem); line-height: 1;
  color: rgba(var(--fg), .28); margin: 0 0 clamp(1.2rem, 1.8vw, 1.6rem);
}
.tpx-bento h3 {
  font-size: clamp(1.6rem, 1.35vw, 1.85rem); line-height: 1.3;
  margin: 0 0 .8rem; color: rgb(var(--fg));
}
.tpx-bento p {
  margin: 0; font-size: clamp(1.4rem, 1.1vw, 1.55rem);
  line-height: 1.62; color: rgba(var(--fg), .8);
}
.tpx-bento p + p { margin-top: .9rem; }

/* ---------- dot-leader rows (menus, price lists, service lists) ---------- */
.tpx-rows {
  max-width: 56rem; margin: 0 auto !important; width: 100%;
  border-top: 1px solid rgba(var(--fg), .18); text-align: left;
}
.tpx-row {
  padding: 1.7rem .4rem;
  border-bottom: 1px solid rgba(var(--fg), .18);
  transition: transform .4s var(--ease);
}
.tpx-row:hover { transform: translateX(.5rem); }
.tpx-rowtop { display: flex; align-items: baseline; gap: 1rem; }
.tpx-rowname {
  font-family: var(--serif); font-size: clamp(1.75rem, 1.5vw, 2rem);
  line-height: 1.3; margin: 0; color: rgb(var(--fg));
}
.tpx-lead {
  flex: 1 1 auto; border-bottom: 1px dotted rgba(var(--fg), .4);
  transform: translateY(-.4rem); min-width: 2rem;
}
.tpx-rowval {
  font-family: var(--serif); font-size: clamp(1.6rem, 1.35vw, 1.85rem);
  white-space: nowrap; color: rgb(var(--fg));
}
.tpx-rowdesc {
  font-family: var(--serif); font-size: clamp(1.4rem, 1.1vw, 1.55rem);
  line-height: 1.6; color: rgba(var(--fg), .78);
  margin: .7rem 0 0 !important; max-width: 44rem;
}
.tpx-rowtag {
  font-family: var(--sans); font-size: clamp(1rem, .85vw, 1.15rem);
  letter-spacing: .2em; text-transform: uppercase;
  color: rgba(var(--fg), .55); margin-left: .8rem;
}
.tpx-group {
  font-family: var(--sans); font-size: clamp(1.15rem, 1vw, 1.35rem);
  letter-spacing: .3em; text-transform: uppercase; font-weight: 600;
  color: rgba(var(--fg), .6); text-align: center;
  margin: clamp(3rem, 4vw, 4.5rem) auto 1.6rem;
}
.tpx-group:first-child { margin-top: 0; }

/* ---------- plain column grids (for grouped row lists) ---------- */
.tpx-grid2, .tpx-grid3 {
  display: grid; gap: clamp(2.4rem, 3.4vw, 4rem);
  max-width: 76rem; margin: 0 auto; width: 100%; text-align: center;
}
.tpx-grid2 { grid-template-columns: repeat(2, 1fr); }
.tpx-grid3 { grid-template-columns: repeat(3, 1fr); }

/* ---------- newsletter field ---------- */
.tpx-form { max-width: 46rem; margin: 0 auto; width: 100%; }
.tpx-form .field {
  position: relative; display: flex; align-items: stretch;
  border: 1px solid rgba(var(--fg), .42); border-radius: 999px; overflow: hidden;
  transition: border-color .45s ease, box-shadow .45s ease;
}
.tpx-form .field:focus-within {
  border-color: rgb(var(--fg));
  box-shadow: 0 0 0 3px rgba(var(--fg), .12);
}
.tpx-form input[type=email] {
  flex: 1 1 auto; min-width: 0; background: transparent; border: 0; outline: 0;
  color: rgb(var(--fg)); font-family: var(--serif);
  font-size: clamp(1.6rem, 1.3vw, 1.8rem);
  padding: clamp(1.5rem, 1.7vw, 1.9rem) 2.2rem;
  line-height: 1.3; text-align: left;
}
.tpx-form input[type=email]::placeholder { color: rgba(var(--fg), .55); opacity: 1; }
.tpx-form .field__label { display: none; }
.tpx-form button {
  flex: 0 0 auto; background: transparent; border: 0; cursor: pointer;
  color: rgb(var(--fg)); padding: 0 2.2rem 0 1.2rem;
  display: flex; align-items: center; transition: opacity .35s ease;
}
.tpx-form button:hover { opacity: .75; }
.tpx-form svg { width: 2.2rem; height: auto; }

/* ---------- fine print list ---------- */
.tpx-fine {
  max-width: 48rem; margin: 0 auto !important;
  border-top: 1px solid rgba(var(--fg), .2);
}
.tpx-fine > li {
  padding: 1.4rem .4rem;
  border-bottom: 1px solid rgba(var(--fg), .2);
  font-size: clamp(1.4rem, 1.1vw, 1.55rem);
  color: rgba(var(--fg), .85); line-height: 1.62;
}

/* ---------- figure, split, map ---------- */
.tpx-fig {
  margin: 0 0 clamp(1.6rem, 2.4vw, 2.2rem);
  position: relative; border-radius: 16px; overflow: hidden;
  border: 1px solid rgba(var(--fg), .2);
}
.tpx-fig img { display: block; width: 100%; height: auto; }
.tpx-split {
  display: grid; grid-template-columns: 1fr 1.05fr;
  gap: clamp(3rem, 4.5vw, 6rem); align-items: center; text-align: left;
}
.tpx-split--reverse .tpx-fig { order: 2; }
.tpx-split .tpx-fig { margin: 0; }
.tpx-map { position: relative; padding-bottom: 60%; height: 0; overflow: hidden; }
.tpx-map iframe {
  position: absolute; top: 0; left: 0;
  width: 100%; height: 100%; border: 0; display: block;
}

/* ---------- buttons ---------- */
.tpx-btns {
  display: flex; flex-wrap: wrap; gap: 1.2rem; justify-content: center;
  margin: 0 0 clamp(1rem, 1.6vw, 1.4rem);
}
.tpx a.tpx-btn {
  position: relative; overflow: hidden; display: inline-flex; align-items: center;
  white-space: nowrap;
  background: rgb(var(--fg)); color: rgb(var(--bg));
  border: 1px solid rgb(var(--fg)); border-radius: 999px;
  font-family: var(--sans); font-size: clamp(1.3rem, 1.05vw, 1.5rem);
  letter-spacing: .18em; text-transform: uppercase; font-weight: 600;
  text-indent: .18em;
  padding: clamp(1.4rem, 1.4vw, 1.8rem) clamp(2.6rem, 2.6vw, 3.6rem);
  text-decoration: none; line-height: 1;
  transition: background .45s var(--ease), color .45s var(--ease), letter-spacing .45s var(--ease);
}
.tpx a.tpx-btn:hover, .tpx a.tpx-btn:focus {
  background: transparent; color: rgb(var(--fg)); letter-spacing: .22em;
}
.tpx a.tpx-btn--ghost { background: transparent; color: rgb(var(--fg)); }
.tpx a.tpx-btn--ghost:hover, .tpx a.tpx-btn--ghost:focus {
  background: rgb(var(--fg)); color: rgb(var(--bg));
}
.tpx a.tpx-btn:focus-visible { outline: 2px solid rgb(var(--fg)); outline-offset: 4px; }
.tpx a:not(.tpx-btn):not(.tpx-chip) {
  color: rgb(var(--fg)); text-decoration: underline; text-underline-offset: 2px;
}

/* ---------- chips ---------- */
.tpx-chips {
  display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center;
  margin: 0 auto clamp(2.2rem, 3vw, 2.8rem) !important; max-width: 56rem;
}
.tpx-chips > li { display: block; }
.tpx a.tpx-chip {
  display: inline-flex; align-items: center; justify-content: center;
  text-align: center; padding: 1.2rem 2rem; text-decoration: none;
  font-family: var(--serif); font-size: clamp(1.45rem, 1.2vw, 1.6rem);
  line-height: 1.2; color: rgb(var(--fg));
  background: var(--gfill); border: 1px solid rgba(var(--fg), .24);
  border-radius: 999px;
  transition: background .4s ease, color .4s ease, border-color .4s ease, transform .4s var(--ease);
}
.tpx a.tpx-chip:hover, .tpx a.tpx-chip:focus-visible {
  background: rgb(var(--fg)); color: rgb(var(--bg));
  border-color: rgb(var(--fg)); transform: translateY(-3px);
}
.tpx a.tpx-chip:focus-visible { outline: 2px solid rgb(var(--fg)); outline-offset: 3px; }

/* ---------- frosted glass, only where the browser supports it ---------- */
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {
  .tpx { --gfill: rgba(var(--fg), .04); }
  .tpx-dark { --gfill: rgba(var(--fg), .055); }
  .tpx-glass, .tpx-bento > li, .tpx a.tpx-chip {
    -webkit-backdrop-filter: blur(16px) saturate(1.25);
    backdrop-filter: blur(16px) saturate(1.25);
  }
}

/* ---------- mobile ---------- */
@media (max-width: 900px) {
  .tpx-bento, .tpx-bento--2, .tpx-bento--4 { grid-template-columns: 1fr; text-align: center; }
  .tpx-split { grid-template-columns: 1fr; gap: 2.8rem; text-align: center; }
  .tpx-split .tpx-fig, .tpx-split--reverse .tpx-fig { order: -1; }
  .tpx-grid2, .tpx-grid3 { grid-template-columns: 1fr; gap: 3.4rem; }
  .tpx-glass { grid-template-columns: 1fr 1fr; }
  .tpx-glass--3 { grid-template-columns: 1fr; }
  .tpx-cell { border-right: 0; border-bottom: 1px solid rgba(var(--fg), .12); }
  .tpx-cell:last-child { border-bottom: 0; }
  .tpx-glass:not(.tpx-glass--3) .tpx-cell:nth-child(odd) {
    border-right: 1px solid rgba(var(--fg), .12);
  }
  /* a dot leader across a narrow screen just looks broken */
  .tpx-row { text-align: center; }
  .tpx-row:hover { transform: none; }
  .tpx-rowtop { flex-direction: column; align-items: center; gap: .4rem; }
  .tpx-lead { display: none; }
  .tpx-rowval { order: 3; margin-top: .5rem; }
  .tpx-rowdesc { margin-left: auto !important; margin-right: auto !important; }
  .tpx-map { padding-bottom: 82%; }
}

/* ---------- accessibility preferences ---------- */
@media (hover: none) {
  .tpx-bento > li:hover, .tpx a.tpx-chip:hover { transform: none; }
}
@media (prefers-reduced-transparency: reduce) {
  .tpx-glass, .tpx-bento > li, .tpx a.tpx-chip {
    -webkit-backdrop-filter: none; backdrop-filter: none;
  }
  .tpx-dark .tpx-glass, .tpx-dark .tpx-bento > li { background: #2d5427; }
}
@media (prefers-reduced-motion: reduce) {
  .tpx-el { opacity: 1; transform: none; transition: none; }
  .tpx-line > span { transform: none; transition: none; }
  .tpx-bento > li:hover, .tpx-row:hover, .tpx a.tpx-chip:hover { transform: none !important; }
}

/* ==========================================================================
   Booking page (.tpb) — glass card, segmented controls, inline validation
   ========================================================================== */

.tpb-stage { position: relative; isolation: isolate; overflow: hidden;
  background: #254620; color: rgb(242 239 221);
  padding: clamp(3.4rem,6vw,6rem) clamp(1.4rem,4vw,3rem) clamp(4rem,7vw,7rem);
  margin: 0 0 clamp(3.4rem,6vw,5.4rem); border-radius: 18px; }

/* illumination + highlight + shadow, the three depth layers */
.tpb-lum { position: absolute; inset: -25% -12%; z-index: 0; pointer-events: none;
  background:
    radial-gradient(46% 38% at 50% calc(4% + var(--p,.5) * 62%), rgba(168,206,140,.30) 0%, rgba(96,148,74,.13) 38%, rgba(37,70,32,0) 74%),
    radial-gradient(92% 72% at 50% 50%, #2d5427 0%, #254620 46%, #17300f 100%); }
.tpb-spec { position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: linear-gradient(148deg, rgba(242,239,221,.10) 0%, rgba(242,239,221,0) 34%); }
.tpb-shade { position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: radial-gradient(80% 64% at 50% 44%, rgba(0,0,0,0) 44%, rgba(0,0,0,.44) 100%); }

.tpb-head { position: relative; z-index: 2; max-width: 60rem; margin: 0 auto clamp(2.8rem,4vw,4rem); text-align: center; }
.tpb-head h1 { font-size: clamp(3.2rem,4.4vw,5.2rem); line-height: 1.1; letter-spacing: -.012em;
  margin: 0 0 1.4rem; color: rgb(242 239 221); }
.tpb-head p { color: rgba(242,239,221,.86); font-size: clamp(1.6rem,1.3vw,1.85rem); line-height: 1.6; margin: 0; }

/* the floating card */
.tpb-card { position: relative; z-index: 3; max-width: 62rem; margin: 0 auto; width: 100%;
  border-radius: 22px; padding: clamp(2.4rem,3.4vw,3.6rem);
  background: rgba(242,239,221,.09); border: 1px solid rgba(242,239,221,.20);
  box-shadow: 0 1px 0 rgba(242,239,221,.22) inset, 0 30px 60px rgba(0,0,0,.34);
  text-align: left; }
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {
  .tpb-card { background: rgba(242,239,221,.065);
    -webkit-backdrop-filter: blur(22px) saturate(1.3); backdrop-filter: blur(22px) saturate(1.3); } }

.tpb-field { margin: 0 0 clamp(1.8rem,2.2vw,2.2rem); }
.tpb-field:last-of-type { margin-bottom: 0; }
.tpb-row { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.2rem,1.8vw,1.8rem); }
.tpb-lab { display: block; font-family: var(--sans,-apple-system,sans-serif);
  font-size: 1.25rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600;
  color: rgba(242,239,221,.66); margin: 0 0 .9rem; }
.tpb-req { color: rgba(242,239,221,.44); margin-left: .5rem; letter-spacing: 0; }

.tpb input[type=text], .tpb input[type=email], .tpb input[type=tel],
.tpb input[type=date], .tpb select, .tpb textarea {
  width: 100% !important; display: block; min-height: 4.8rem;
  background: rgba(0,0,0,.20) !important; color: rgb(242 239 221) !important;
  border: 1px solid rgba(242,239,221,.26) !important; border-radius: 12px !important;
  box-shadow: 0 1px 2px rgba(0,0,0,.22) inset !important;
  font-family: var(--font-body-family, sans-serif) !important; font-size: 1.7rem !important;
  padding: 1.4rem 1.6rem !important; margin: 0 !important; line-height: 1.4;
  transition: border-color .3s ease, box-shadow .3s ease, background .3s ease; }
.tpb textarea { min-height: 10rem; resize: vertical; }
.tpb select { appearance: none; -webkit-appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, rgba(242,239,221,.7) 50%), linear-gradient(135deg, rgba(242,239,221,.7) 50%, transparent 50%) !important;
  background-position: calc(100% - 2.1rem) 50%, calc(100% - 1.6rem) 50% !important;
  background-size: .6rem .6rem, .6rem .6rem !important; background-repeat: no-repeat !important;
  padding-right: 4rem !important; }
.tpb ::placeholder { color: rgba(242,239,221,.46); opacity: 1; }
.tpb input:focus, .tpb select:focus, .tpb textarea:focus { outline: none;
  border-color: rgba(242,239,221,.72) !important;
  box-shadow: 0 0 0 3px rgba(242,239,221,.14), 0 1px 2px rgba(0,0,0,.22) inset !important;
  background: rgba(0,0,0,.26) !important; }
.tpb [aria-invalid="true"] { border-color: #e8a49a !important; }
.tpb-err { display: none; font-family: var(--sans,sans-serif); font-size: 1.3rem;
  color: #f0b7ae; margin: .7rem 0 0; line-height: 1.4; }
.tpb-field.has-err .tpb-err { display: block; }

/* guest count as tap targets, 44px minimum */
.tpb-seg { display: flex; flex-wrap: wrap; gap: .8rem; margin: 0; padding: 0; list-style: none; }
.tpb-seg input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.tpb-seg label { display: flex; align-items: center; justify-content: center;
  min-width: 5.2rem; min-height: 4.8rem; padding: 0 1.4rem; cursor: pointer;
  border-radius: 12px; border: 1px solid rgba(242,239,221,.26);
  background: rgba(0,0,0,.16); color: rgba(242,239,221,.9);
  font-family: var(--font-body-family, sans-serif); font-size: 1.7rem; line-height: 1;
  transition: background .28s ease, border-color .28s ease, color .28s ease, transform .28s cubic-bezier(.22,.7,.28,1); }
.tpb-seg label:hover { border-color: rgba(242,239,221,.5); transform: translateY(-2px); }
.tpb-seg input:checked + label { background: rgb(242 239 221); color: #254620;
  border-color: rgb(242 239 221); font-weight: 600; }
.tpb-seg input:focus-visible + label { outline: 2px solid rgb(242 239 221); outline-offset: 3px; }

/* honeypot */
.tpb-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

.tpb-submit { width: 100%; min-height: 5.4rem; margin: clamp(2.2rem,3vw,2.8rem) 0 0;
  cursor: pointer; border-radius: 999px; border: 1px solid rgb(242 239 221);
  background: rgb(242 239 221); color: #254620;
  font-family: var(--sans,sans-serif); font-size: 1.45rem; font-weight: 600;
  letter-spacing: .18em; text-transform: uppercase; text-indent: .18em;
  transition: background .4s cubic-bezier(.22,.7,.28,1), color .4s cubic-bezier(.22,.7,.28,1), letter-spacing .4s ease; }
.tpb-submit:hover { background: transparent; color: rgb(242 239 221); letter-spacing: .22em; }
.tpb-submit:focus-visible { outline: 2px solid rgb(242 239 221); outline-offset: 4px; }
.tpb-legal { font-size: 1.3rem; color: rgba(242,239,221,.6); line-height: 1.6; margin: 1.6rem 0 0; text-align: center; }
.tpb-legal a { color: rgba(242,239,221,.85); }

/* success */
.tpb-done { position: relative; z-index: 3; max-width: 52rem; margin: 0 auto; text-align: center;
  border-radius: 22px; padding: clamp(3rem,4vw,4.4rem);
  background: rgba(242,239,221,.09); border: 1px solid rgba(242,239,221,.22);
  box-shadow: 0 1px 0 rgba(242,239,221,.22) inset, 0 30px 60px rgba(0,0,0,.34); }
.tpb-done h2 { color: rgb(242 239 221); font-size: clamp(2.4rem,2.6vw,3.2rem); margin: 0 0 1.4rem; }
.tpb-done p { color: rgba(242,239,221,.86); font-size: 1.7rem; line-height: 1.62; margin: 0 0 1.2rem; }

/* sticky mobile action */
.tpb-sticky { display: none; }
@media (max-width: 749px) {
  .tpb-row { grid-template-columns: 1fr; }
  .tpb-stage { border-radius: 14px; }
  .tpb-sticky { display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
    padding: 1rem 1.4rem calc(1rem + env(safe-area-inset-bottom));
    background: rgba(37,70,32,.92); border-top: 1px solid rgba(242,239,221,.18);
    transform: translateY(110%); transition: transform .45s cubic-bezier(.22,.7,.28,1); }
  @supports (backdrop-filter: blur(1px)) { .tpb-sticky { background: rgba(37,70,32,.78);
    -webkit-backdrop-filter: blur(20px) saturate(1.3); backdrop-filter: blur(20px) saturate(1.3); } }
  .tpb-sticky.is-on { transform: translateY(0); }
  .tpb-sticky a { display: flex; align-items: center; justify-content: center; min-height: 5rem;
    border-radius: 999px; background: rgb(242 239 221); color: #254620; text-decoration: none;
    font-family: var(--sans,sans-serif); font-size: 1.4rem; font-weight: 600;
    letter-spacing: .18em; text-transform: uppercase; text-indent: .18em; }
}

/* FAQ */
.tpb-faq { max-width: 56rem; margin: 0 auto !important; text-align: left; }
.tpb-faq details { border-bottom: 1px solid rgba(var(--fg),.2); }
.tpb-faq summary { cursor: pointer; list-style: none; padding: 1.8rem .4rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1.6rem;
  font-family: var(--serif, serif); font-size: clamp(1.65rem,1.4vw,1.9rem); color: rgb(var(--fg)); }
.tpb-faq summary::-webkit-details-marker { display: none; }
.tpb-faq summary::after { content: "+"; font-size: 2.2rem; line-height: 1; color: rgba(var(--fg),.5);
  transition: transform .35s cubic-bezier(.22,.7,.28,1); }
.tpb-faq details[open] summary::after { transform: rotate(45deg); }
.tpb-faq details > div { padding: 0 .4rem 1.8rem; font-size: clamp(1.45rem,1.15vw,1.6rem);
  line-height: 1.65; color: rgba(var(--fg),.82); }

@media (prefers-reduced-transparency: reduce) {
  .tpb-card, .tpb-done { background: #2d5427; -webkit-backdrop-filter: none; backdrop-filter: none; }
}
@media (prefers-reduced-motion: reduce) {
  .tpb-seg label:hover { transform: none; }
  .tpb-sticky { transition: none; }
  .tpb-faq summary::after { transition: none; }
}

/* ---------- booking: quick dates, live summary, party size, states ---------- */
.tpb-quick { display: flex; flex-wrap: wrap; gap: .8rem; margin: 0 0 1.2rem; padding: 0; list-style: none; }
.tpb-quick button { min-height: 4rem; padding: 0 1.6rem; cursor: pointer; border-radius: 999px;
  border: 1px solid rgba(242,239,221,.24); background: rgba(0,0,0,.14); color: rgba(242,239,221,.88);
  font-family: var(--font-body-family, sans-serif); font-size: 1.45rem; line-height: 1;
  transition: background .28s ease, border-color .28s ease, color .28s ease; }
.tpb-quick button:hover { border-color: rgba(242,239,221,.55); }
.tpb-quick button[aria-pressed="true"] { background: rgba(242,239,221,.92); color: #254620; border-color: rgba(242,239,221,.92); }
.tpb-quick button:focus-visible { outline: 2px solid rgb(242 239 221); outline-offset: 3px; }

.tpb-exact { margin: 1.2rem 0 0; }
.tpb-exact[hidden] { display: none; }

.tpb-sum { margin: clamp(2rem,2.6vw,2.6rem) 0 0; padding: 1.6rem 1.8rem; border-radius: 14px;
  background: rgba(0,0,0,.18); border: 1px solid rgba(242,239,221,.16);
  font-family: var(--font-body-family, sans-serif); font-size: 1.55rem; line-height: 1.5;
  color: rgba(242,239,221,.92); text-align: center; }
.tpb-sum strong { font-weight: 600; }
.tpb-sum span { color: rgba(242,239,221,.6); }

.tpb fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.tpb legend { padding: 0; }

.tpb-submit[data-busy="true"] { opacity: .6; pointer-events: none; }
.tpb-note-closed { margin: 1rem 0 0; font-family: var(--sans, sans-serif); font-size: 1.3rem;
  color: rgba(242,239,221,.66); line-height: 1.5; }

@media (prefers-contrast: more) {
  .tpb-card, .tpb-done { background: #1f3a1a; border-color: rgba(242,239,221,.6); }
  .tpb input, .tpb select, .tpb textarea { border-color: rgba(242,239,221,.7) !important; }
  .tpb-lab { color: rgb(242 239 221); }
}

/* ---------- booking: guest stepper ---------- */
.tpb-step { display: inline-flex; align-items: stretch; border-radius: 999px; overflow: hidden;
  border: 1px solid rgba(242,239,221,.26); background: rgba(0,0,0,.18); }
.tpb-step button { width: 5.2rem; min-height: 5.2rem; cursor: pointer; border: 0;
  background: transparent; color: rgb(242 239 221); font-size: 2.4rem; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  transition: background .25s ease, opacity .25s ease; }
.tpb-step button:hover { background: rgba(242,239,221,.12); }
.tpb-step button:disabled { opacity: .3; cursor: default; background: transparent; }
.tpb-step button:focus-visible { outline: 2px solid rgb(242 239 221); outline-offset: -3px; }
.tpb-step output { min-width: 11rem; display: flex; align-items: center; justify-content: center;
  gap: .7rem; padding: 0 1.2rem; font-family: var(--font-body-family, sans-serif);
  font-size: 1.9rem; color: rgb(242 239 221);
  border-left: 1px solid rgba(242,239,221,.18); border-right: 1px solid rgba(242,239,221,.18); }
.tpb-step output span { font-size: 1.45rem; color: rgba(242,239,221,.6); }
.tpb-big { margin: 1.1rem 0 0; font-family: var(--sans, sans-serif); font-size: 1.3rem;
  color: rgba(242,239,221,.66); line-height: 1.5; }
.tpb-big[hidden] { display: none; }

/* links inside the booking stage sit on green, so they must use the light foreground.
   .tpx.tpb matches the same specificity as the general .tpx a:not() rule and comes later. */
.tpx.tpb .tpb-stage a { color: rgba(242,239,221,.88); text-decoration: underline; text-underline-offset: 2px; }
.tpx.tpb .tpb-stage a:hover, .tpx.tpb .tpb-stage a:focus-visible { color: rgb(242 239 221); }

/* ---------- centring, made structural rather than margin-dependent ----------
   auto margins can be beaten by inherited padding or a stray margin from the
   theme's .rte styles. flex alignment cannot. */
.tpx .tpx-sec { display: flex; flex-direction: column; align-items: center; }
.tpx .tpx-sec > * { width: 100%; margin-left: auto !important; margin-right: auto !important; }
.tpx .tpx-inner > * { margin-left: auto !important; margin-right: auto !important; }
.tpx .tpx-note, .tpx .tpx-lede, .tpx .tpx-cap, .tpx .tpx-brow,
.tpx .tpx-rule, .tpx .tpx-glass, .tpx .tpx-rows, .tpx .tpx-fine,
.tpx .tpx-bento, .tpx .tpx-chips, .tpx .tpx-grid2, .tpx .tpx-grid3,
.tpx .tpb-faq, .tpx h1, .tpx h2, .tpx h3 {
  padding-left: 0; padding-right: 0;
  margin-left: auto !important; margin-right: auto !important;
}
.tpx .tpx-brow { text-indent: 0; padding-left: .26em; }

/* ==========================================================================
   Blog listing (.tpxb) — pairs with sections/main-blog.liquid
   ========================================================================== */
.tpxb-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(1.4rem, 2.2vw, 2.2rem);
  max-width: 108rem; margin: 0 auto clamp(3rem, 5vw, 4.4rem) !important;
  padding: 0; list-style: none; text-align: left;
}
.tpxb-card {
  border-radius: 16px; overflow: hidden;
  border: 1px solid rgba(var(--fg), .16);
  background: var(--gfill);
  box-shadow: var(--gin), var(--gsh);
  transition: transform .5s var(--ease), border-color .5s ease, background .5s ease;
}
.tpxb-card:hover { transform: translateY(-5px); border-color: rgba(var(--fg), .34); background: rgba(var(--fg), .08); }
.tpx a.tpxb-link { display: flex; flex-direction: column; height: 100%; text-decoration: none; color: rgb(var(--fg)); }
.tpxb-media { position: relative; overflow: hidden; aspect-ratio: 3 / 2; background: rgba(var(--fg), .06); }
.tpxb-media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s var(--ease); }
.tpxb-card:hover .tpxb-media img { transform: scale(1.04); }
.tpxb-media--tall { aspect-ratio: 3 / 4; }
.tpxb-media--wide { aspect-ratio: 16 / 9; }
.tpxb-body { padding: clamp(1.8rem, 2.4vw, 2.4rem); display: flex; flex-direction: column; flex: 1 1 auto; }
.tpxb-meta {
  font-family: var(--sans); font-size: 1.2rem; letter-spacing: .2em;
  text-transform: uppercase; color: rgba(var(--fg), .58);
  margin: 0 0 1rem !important; line-height: 1.4;
}
.tpx .tpxb-title {
  font-family: var(--serif); font-size: clamp(1.9rem, 1.55vw, 2.25rem);
  line-height: 1.25; letter-spacing: -.004em; margin: 0 0 1rem !important;
  text-align: left; text-wrap: balance;
}
.tpxb-ex {
  font-family: var(--serif); font-size: clamp(1.45rem, 1.15vw, 1.6rem);
  line-height: 1.62; color: rgba(var(--fg), .82); margin: 0 0 1.8rem !important; flex: 1 1 auto;
}
.tpxb-more {
  font-family: var(--sans); font-size: 1.25rem; letter-spacing: .2em;
  text-transform: uppercase; font-weight: 600; color: rgb(var(--fg));
  display: inline-flex; align-items: center; gap: .7rem; margin-top: auto;
}
.tpxb-more::after { content: "\2192"; transition: transform .4s var(--ease); }
.tpxb-card:hover .tpxb-more::after { transform: translateX(.4rem); }

/* pagination */
.tpxb .pagination-wrapper { margin: 0 auto; }
.tpxb .pagination__list { justify-content: center; }

@supports (backdrop-filter: blur(1px)) {
  .tpxb-card { -webkit-backdrop-filter: blur(16px) saturate(1.25); backdrop-filter: blur(16px) saturate(1.25); }
}
@media (max-width: 989px) { .tpxb-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 749px) { .tpxb-grid { grid-template-columns: 1fr; } }
@media (hover: none) { .tpxb-card:hover { transform: none; } .tpxb-card:hover .tpxb-media img { transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .tpxb-card, .tpxb-media img, .tpxb-more::after { transition: none; }
  .tpxb-card:hover { transform: none; }
  .tpxb-card:hover .tpxb-media img, .tpxb-card:hover .tpxb-more::after { transform: none; }
}

/* the whole card is one link, so it must not inherit the underlined link style */
.tpx a.tpxb-link, .tpx a.tpxb-link:hover { text-decoration: none; }
.tpx a.tpxb-link .tpxb-title { text-decoration: none; }
.tpxb-card:hover .tpxb-title { text-decoration: underline; text-underline-offset: 3px; }

/* ---------- blog: featured post ---------- */
.tpxb-feature {
  display: grid; grid-template-columns: 1.05fr 1fr; align-items: stretch;
  max-width: 108rem; margin: 0 auto clamp(1.4rem, 2.2vw, 2.2rem) !important;
  border-radius: 18px; overflow: hidden;
  border: 1px solid rgba(var(--fg), .18); background: var(--gfill);
  box-shadow: var(--gin), var(--gsh);
  transition: transform .5s var(--ease), border-color .5s ease;
}
.tpxb-feature:hover { transform: translateY(-4px); border-color: rgba(var(--fg), .34); }
.tpx a.tpxb-feature__link { display: contents; text-decoration: none; color: rgb(var(--fg)); }
.tpxb-feature .tpxb-media { aspect-ratio: auto; min-height: 32rem; height: 100%; }
.tpxb-feature .tpxb-body { padding: clamp(2.4rem, 3.4vw, 4rem); justify-content: center; text-align: left; }
.tpxb-feature .tpxb-title { font-size: clamp(2.4rem, 2.4vw, 3.4rem); line-height: 1.18; }
.tpxb-feature .tpxb-ex { font-size: clamp(1.55rem, 1.25vw, 1.75rem); flex: 0 0 auto; }
.tpxb-flag {
  font-family: var(--sans); font-size: 1.15rem; letter-spacing: .24em;
  text-transform: uppercase; font-weight: 600; color: rgba(var(--fg), .62);
  margin: 0 0 1.2rem !important; display: flex; align-items: center; gap: .8rem;
}
.tpxb-flag::before { content: "◆"; font-size: .7rem; letter-spacing: 0; color: rgba(var(--fg), .45); }

/* ---------- blog: cards with no featured image ---------- */
.tpxb-media--none {
  display: flex; align-items: center; justify-content: center;
  background: #254620;
  background-image:
    radial-gradient(52% 40% at 50% 34%, rgba(168,206,140,.22) 0%, rgba(37,70,32,0) 72%),
    radial-gradient(92% 74% at 50% 50%, #2d5427 0%, #254620 48%, #17300f 100%);
  position: relative;
}
.tpxb-media--none::before {
  content: "◆◆◆";
  font-size: 1rem; letter-spacing: .55em; text-indent: .55em;
  color: rgba(242,239,221,.42); line-height: 1;
}
.tpxb-media--none::after {
  content: ""; position: absolute; inset: 1.4rem;
  border: 1px solid rgba(242,239,221,.14); border-radius: 8px;
}

/* ---------- blog: filters ---------- */
.tpxb-filters {
  display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center;
  max-width: 76rem; margin: 0 auto clamp(2.6rem, 4vw, 3.6rem) !important;
  padding: 0; list-style: none;
}
.tpxb-filters button {
  cursor: pointer; min-height: 4.4rem; padding: 0 2rem;
  font-family: var(--serif); font-size: clamp(1.4rem, 1.15vw, 1.55rem); line-height: 1;
  color: rgb(var(--fg)); background: var(--gfill);
  border: 1px solid rgba(var(--fg), .24); border-radius: 999px;
  transition: background .4s ease, color .4s ease, border-color .4s ease, transform .4s var(--ease);
}
.tpxb-filters button:hover { transform: translateY(-3px); border-color: rgba(var(--fg), .45); }
.tpxb-filters button[aria-pressed="true"] {
  background: rgb(var(--fg)); color: rgb(var(--bg)); border-color: rgb(var(--fg));
}
.tpxb-filters button:focus-visible { outline: 2px solid rgb(var(--fg)); outline-offset: 3px; }
.tpxb-card[hidden], .tpxb-feature[hidden] { display: none; }

/* ---------- blog: meta and pagination ---------- */
.tpxb-meta .tpxb-dot { margin: 0 .7rem; opacity: .5; }
.tpxb .pagination-wrapper { margin: clamp(1rem, 2vw, 2rem) auto 0; }
.tpxb .pagination__list { display: flex; justify-content: center; gap: .6rem; flex-wrap: wrap; }
.tpxb .pagination__item {
  min-width: 4.4rem; min-height: 4.4rem; display: flex; align-items: center; justify-content: center;
  border-radius: 999px; border: 1px solid rgba(var(--fg), .2);
  font-family: var(--sans); font-size: 1.35rem; text-decoration: none; color: rgb(var(--fg));
  transition: background .35s ease, color .35s ease, border-color .35s ease;
}
.tpxb .pagination__item:hover { border-color: rgba(var(--fg), .5); }
.tpxb .pagination__item--current {
  background: rgb(var(--fg)); color: rgb(var(--bg)); border-color: rgb(var(--fg));
}
.tpxb .pagination__item .svg-wrapper { width: 1.6rem; height: 1.6rem; }

@media (max-width: 749px) {
  .tpxb-feature { grid-template-columns: 1fr; }
  .tpxb-feature .tpxb-media { min-height: 0; aspect-ratio: 3 / 2; }
}
@media (hover: none) {
  .tpxb-feature:hover, .tpxb-filters button:hover { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .tpxb-feature, .tpxb-filters button { transition: none; }
  .tpxb-feature:hover, .tpxb-filters button:hover { transform: none; }
}

/* an element can be both the panel and the revealed item (the featured blog card,
   the filter row). the descendant rule never matches itself, so it would stay
   invisible while still taking up space. */
.tpx .tpx-el.is-in { opacity: 1; transform: none; }
.tpx .tpx-line.is-in > span { transform: none; }

/* belt and braces on the card underlines */
.tpx .tpxb-link, .tpx .tpxb-link:hover, .tpx .tpxb-link:focus,
.tpx .tpxb-feature__link, .tpx .tpxb-feature__link:hover,
.tpx .tpxb-link .tpxb-meta, .tpx .tpxb-link .tpxb-ex,
.tpx .tpxb-link .tpxb-title, .tpx .tpxb-link .tpxb-more,
.tpx .tpxb-feature__link .tpxb-meta, .tpx .tpxb-feature__link .tpxb-ex,
.tpx .tpxb-feature__link .tpxb-title, .tpx .tpxb-feature__link .tpxb-more,
.tpx .tpxb-link time, .tpx .tpxb-feature__link time { text-decoration: none !important; }
.tpxb-card:hover .tpxb-title, .tpxb-feature:hover .tpxb-title {
  text-decoration: underline !important; text-underline-offset: 3px;
}

/* any media box with nothing in it gets the designed panel, not a blank gap */
.tpxb-media:empty, .tpxb-media--none {
  display: flex; align-items: center; justify-content: center; position: relative;
  background: #254620;
  background-image:
    radial-gradient(52% 40% at 50% 34%, rgba(168,206,140,.22) 0%, rgba(37,70,32,0) 72%),
    radial-gradient(92% 74% at 50% 50%, #2d5427 0%, #254620 48%, #17300f 100%);
  min-height: 18rem;
}
.tpxb-media:empty::before, .tpxb-media--none::before {
  content: "◆◆◆"; font-size: 1rem; letter-spacing: .55em; text-indent: .55em;
  color: rgba(242,239,221,.42); line-height: 1;
}
.tpxb-media:empty::after, .tpxb-media--none::after {
  content: ""; position: absolute; inset: 1.4rem;
  border: 1px solid rgba(242,239,221,.14); border-radius: 8px;
}

/* ---------- blog: spacing and the newsletter field ---------- */
.tpxb .pagination-wrapper { margin-bottom: clamp(3rem, 5vw, 4.6rem) !important; }

/* Dawn's own .field styles were winning, so the pill had no visible edge.
   These are scoped tighter and mirror the booking card inputs. */
.tpx-dark .tpx-form { max-width: 46rem; margin-left: auto !important; margin-right: auto !important; }
.tpx-dark .tpx-form .field {
  display: flex !important; align-items: stretch !important;
  width: 100%; position: relative;
  background: rgba(0, 0, 0, .22) !important;
  border: 1px solid rgba(242, 239, 221, .45) !important;
  border-radius: 999px !important;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .22) inset !important;
  overflow: hidden;
  transition: border-color .4s ease, box-shadow .4s ease;
}
.tpx-dark .tpx-form .field:focus-within {
  border-color: rgb(242 239 221) !important;
  box-shadow: 0 0 0 3px rgba(242, 239, 221, .14), 0 1px 2px rgba(0, 0, 0, .22) inset !important;
}
.tpx-dark .tpx-form .field::before,
.tpx-dark .tpx-form .field::after { display: none !important; content: none !important; }
.tpx-dark .tpx-form .field__label { display: none !important; }
.tpx-dark .tpx-form input[type="email"] {
  flex: 1 1 auto; min-width: 0;
  background: transparent !important; border: 0 !important; outline: 0 !important;
  box-shadow: none !important;
  color: rgb(242 239 221) !important;
  font-family: var(--font-body-family, sans-serif) !important;
  font-size: 1.65rem !important;
  padding: 1.6rem 1rem 1.6rem 2.4rem !important;
  margin: 0 !important; line-height: 1.3; text-align: left;
}
.tpx-dark .tpx-form input[type="email"]::placeholder { color: rgba(242, 239, 221, .58); opacity: 1; }
.tpx-dark .tpx-form button {
  flex: 0 0 auto; background: transparent; border: 0; cursor: pointer;
  color: rgb(242 239 221); padding: 0 2.2rem 0 1.4rem;
  display: flex; align-items: center; transition: opacity .35s ease;
}
.tpx-dark .tpx-form button:hover { opacity: .72; }
.tpx-dark .tpx-form button:focus-visible { outline: 2px solid rgb(242 239 221); outline-offset: -4px; }
.tpx-dark .tpx-form svg { width: 2.2rem; height: auto; display: block; }

/* ---------- blog: centring ---------- */
.tpxb { text-align: center; }
.tpxb .tpx-inner, .tpxb .tpx-inner > * { text-align: center; }
.tpxb-filters { justify-content: center; }
.tpxb-grid { justify-content: center; }
/* a final row that does not fill the grid should sit centred, not left */
.tpxb-grid { justify-items: stretch; }
.tpxb-feature { margin-left: auto !important; margin-right: auto !important; }
.tpxb .pagination__list { justify-content: center; }
.tpxb-empty, #tpxb-empty { text-align: center; margin-left: auto !important; margin-right: auto !important; }

/* .tpx ul resets list margins with !important and outranks .tpxb-grid,
   which pinned the grid to the left. these are more specific again. */
.tpx .tpxb-grid, .tpx ul.tpxb-grid {
  margin-left: auto !important; margin-right: auto !important;
}
.tpx .tpxb-filters, .tpx ul.tpxb-filters {
  margin-left: auto !important; margin-right: auto !important;
}

/* the current page number was inheriting the foreground colour on a
   foreground-filled pill, so it vanished. force the contrast both ways. */
.tpxb .pagination__item--current,
.tpxb .pagination__item--current * {
  color: rgb(var(--color-background, 242 239 221)) !important;
  text-decoration: none !important;
}
.tpxb .pagination__item--current {
  background: rgb(var(--fg)) !important;
  border-color: rgb(var(--fg)) !important;
  font-weight: 600;
}
.tpxb .pagination__item:not(.pagination__item--current) { text-decoration: none; }
.tpxb .pagination__item:not(.pagination__item--current):hover {
  background: rgba(var(--fg), .10);
  border-color: rgba(var(--fg), .5);
}
.tpxb .pagination__item svg, .tpxb .pagination__item .icon { color: rgb(var(--fg)); }
.tpxb .pagination__item--current svg { color: rgb(var(--color-background, 242 239 221)) !important; }

/* ==========================================================================
   Footer (.tpf)
   Glass needs something behind it. The glow sits under the panels so the
   blur has variation to work with, and each panel carries its own sheen.
   ========================================================================== */
.tpf {
  --serif: var(--font-heading-family, Georgia, serif);
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --fg: 242 239 221;
  --ease: cubic-bezier(.22, .7, .28, 1);
  position: relative; isolation: isolate; overflow: hidden;
  background: #1f3b1a; color: rgb(var(--fg));
}
.tpf * { box-sizing: border-box; }

/* the light source, sitting under the panels */
.tpf-glow { position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(38% 46% at 22% 18%, rgba(168,206,140,.30) 0%, rgba(96,148,74,.12) 42%, rgba(37,70,32,0) 76%),
    radial-gradient(34% 44% at 78% 26%, rgba(140,190,120,.22) 0%, rgba(37,70,32,0) 72%),
    radial-gradient(60% 60% at 50% 96%, rgba(96,148,74,.16) 0%, rgba(28,55,23,0) 74%),
    linear-gradient(180deg, #2a5024 0%, #254620 46%, #1a3315 100%); }
.tpf-grain { position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: .05;
  background-image: radial-gradient(rgba(242,239,221,.9) .5px, transparent .6px);
  background-size: 3px 3px; mix-blend-mode: overlay; }
.tpf-in { position: relative; z-index: 2; max-width: 122rem; margin: 0 auto;
  padding: clamp(3.4rem,5vw,5.4rem) clamp(2rem,4vw,4rem) clamp(2.4rem,3vw,3rem); }

.tpf-el { opacity: 0; transform: translateY(18px);
  transition: opacity .9s var(--ease), transform .9s var(--ease); }
.tpf.is-in .tpf-el { opacity: 1; transform: none; }
.tpf.is-in .tpf-el:nth-child(2) { transition-delay: .09s; }
.tpf.is-in .tpf-nav { transition-delay: .18s; }
.tpf:not(.tpf-js) .tpf-el { opacity: 1; transform: none; }

/* ---------- the glass material ---------- */
.tpf-glass {
  position: relative; overflow: hidden; border-radius: 20px;
  background: rgba(242,239,221,.10);
  border: 1px solid rgba(242,239,221,.24);
  box-shadow:
    0 1px 0 rgba(242,239,221,.30) inset,
    0 -1px 0 rgba(0,0,0,.18) inset,
    0 28px 56px rgba(0,0,0,.34);
}
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {
  .tpf-glass { background: rgba(242,239,221,.075);
    -webkit-backdrop-filter: blur(24px) saturate(1.6); backdrop-filter: blur(24px) saturate(1.6); }
}
/* specular highlight, top left, the way light actually falls on glass */
.tpf-glass::before { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background: linear-gradient(142deg, rgba(242,239,221,.16) 0%, rgba(242,239,221,.04) 26%, rgba(242,239,221,0) 52%); }
.tpf-glass > * { position: relative; z-index: 1; }
.tpf-frame { position: absolute; inset: clamp(.9rem,1.4vw,1.3rem); pointer-events: none; z-index: 1;
  border: 1px solid rgba(242,239,221,.12); border-radius: 13px; }

/* ---------- band A ---------- */
.tpf-act { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(1.6rem,2vw,2.2rem);
  margin: 0 0 clamp(1.6rem,2vw,2.2rem); }
.tpf-card { padding: clamp(2.6rem,3.4vw,3.8rem); }
.tpf-card h2 { font-family: var(--serif); font-weight: 400;
  font-size: clamp(2.1rem,2.2vw,2.8rem); line-height: 1.16; margin: 0 0 1rem; color: rgb(var(--fg)); }
.tpf-card p { font-family: var(--serif); font-size: clamp(1.5rem,1.15vw,1.65rem);
  line-height: 1.62; margin: 0 0 2.2rem; color: rgba(var(--fg),.82); }
.tpf-brow { font-family: var(--sans); font-size: 1.1rem; letter-spacing: .24em;
  text-transform: uppercase; font-weight: 600; color: rgba(var(--fg),.66);
  margin: 0 0 1.1rem !important; padding-left: .24em; }

.tpf a.tpf-btn { display: inline-flex; align-items: center; white-space: nowrap; text-decoration: none;
  background: rgb(var(--fg)); color: #254620; border: 1px solid rgb(var(--fg)); border-radius: 999px;
  font-family: var(--sans); font-size: 1.3rem; letter-spacing: .18em; text-transform: uppercase;
  font-weight: 600; text-indent: .18em; padding: 1.6rem 3.2rem; line-height: 1;
  box-shadow: 0 10px 24px rgba(0,0,0,.22);
  transition: background .45s var(--ease), color .45s var(--ease), letter-spacing .45s var(--ease), box-shadow .45s ease; }
.tpf a.tpf-btn:hover { background: transparent; color: rgb(var(--fg));
  letter-spacing: .22em; box-shadow: 0 0 0 rgba(0,0,0,0); }
.tpf a.tpf-btn:focus-visible { outline: 2px solid rgb(var(--fg)); outline-offset: 4px; }

.tpf-field { display: flex !important; align-items: stretch; width: 100%; position: relative;
  background: rgba(0,0,0,.26) !important; border: 1px solid rgba(var(--fg),.4) !important;
  border-radius: 999px !important; overflow: hidden;
  box-shadow: 0 2px 4px rgba(0,0,0,.26) inset !important;
  transition: border-color .4s ease, box-shadow .4s ease; }
.tpf-field:focus-within { border-color: rgb(var(--fg)) !important;
  box-shadow: 0 0 0 3px rgba(var(--fg),.16), 0 2px 4px rgba(0,0,0,.26) inset !important; }
.tpf-field::before, .tpf-field::after { display: none !important; content: none !important; }
.tpf-field .field__label { display: none !important; }
.tpf-field input[type="email"] { flex: 1 1 auto; min-width: 0; background: transparent !important;
  border: 0 !important; outline: 0 !important; box-shadow: none !important; color: rgb(var(--fg)) !important;
  font-family: var(--font-body-family, sans-serif) !important; font-size: 1.6rem !important;
  padding: 1.6rem 1rem 1.6rem 2.4rem !important; margin: 0 !important; }
.tpf-field input[type="email"]::placeholder { color: rgba(var(--fg),.6); opacity: 1; }
.tpf-field button { flex: 0 0 auto; background: transparent; border: 0; cursor: pointer;
  color: rgb(var(--fg)); padding: 0 2.2rem 0 1.2rem; display: flex; align-items: center;
  transition: opacity .3s ease, transform .3s var(--ease); }
.tpf-field button:hover { opacity: .78; transform: translateX(.25rem); }
.tpf-field svg { width: 2.1rem; height: auto; display: block; }
.tpf-micro { font-family: var(--sans); font-size: 1.15rem; color: rgba(var(--fg),.55);
  margin: 1.4rem 0 0 !important; line-height: 1.65; }

/* ---------- band B ---------- */
.tpf-nav { padding: clamp(2.8rem,3.4vw,4rem) clamp(2.4rem,3vw,3.4rem);
  display: grid; grid-template-columns: 1.45fr repeat(4, minmax(0,1fr));
  gap: clamp(2.4rem,3vw,3.6rem); text-align: left; align-items: start; }
/* nav: Visit on the left, dropdown stack on the right */
.tpf .tpf-nav { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1.5fr); align-items: start; }
.tpf .tpf-stack { display: flex; flex-direction: column; }

.tpf .tpf-col {
  border: 0; border-bottom: 1px solid rgba(242,239,221,.16);
}
.tpf .tpf-col:last-of-type { border-bottom: 0; }

.tpf summary.tpf-h {
  display: flex; align-items: center; justify-content: space-between; gap: 1.6rem;
  font-family: var(--sans); font-size: 1.15rem; letter-spacing: .2em; text-transform: uppercase;
  font-weight: 600; color: rgba(242,239,221,.86); margin: 0;
  padding: 1.7rem .2rem; border-bottom: 0;
  list-style: none; cursor: pointer; user-select: none;
  transition: color .3s ease, padding-left .35s var(--ease);
}
.tpf summary.tpf-h::-webkit-details-marker { display: none; }
.tpf summary.tpf-h:hover { color: rgb(242 239 221); padding-left: .6rem; }
.tpf summary.tpf-h:focus-visible { outline: 2px solid rgb(242 239 221); outline-offset: 2px; }
.tpf details[open] > summary.tpf-h { color: rgb(242 239 221); }

/* plus that becomes a minus */
.tpf .tpf-chev { display: block; width: 1.1rem; height: 1.1rem; flex: 0 0 auto; position: relative; }
.tpf .tpf-chev::before, .tpf .tpf-chev::after {
  content: ""; position: absolute; top: 50%; left: 0; width: 100%; height: 1px;
  background: currentColor; opacity: .8;
  transition: transform .4s var(--ease), opacity .4s ease;
}
.tpf .tpf-chev::after { transform: rotate(90deg); }
.tpf details[open] .tpf-chev::after { transform: rotate(0deg); opacity: 0; }

@keyframes tpfReveal { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.tpf details[open] .tpf-list { animation: tpfReveal .45s var(--ease) both; }

.tpf-list { list-style: none; margin: 0; padding: 0; }
.tpf-list li { margin: 0 0 1rem; }
.tpf-list li:last-child { margin-bottom: 0; }
.tpf a.tpf-link { font-family: var(--serif); font-size: 1.55rem; line-height: 1.4;
  color: rgba(var(--fg),.78); text-decoration: none; display: inline-block;
  transition: color .3s ease, transform .3s var(--ease); }
.tpf a.tpf-link:hover { color: rgb(var(--fg)); transform: translateX(.4rem); }
.tpf a.tpf-link:focus-visible { outline: 2px solid rgb(var(--fg)); outline-offset: 3px; }

/* visit column: opening hours as a contained unit */
.tpf .tpf-open {
  border-radius: 14px; padding: 1.8rem 1.8rem 1.4rem;
  background: rgba(0,0,0,.16); border: 1px solid rgba(242,239,221,.14);
  margin: 0 0 1.8rem; max-width: 32rem;
}
.tpf .tpf-status {
  display: inline-flex !important; align-items: center; gap: .8rem;
  font-family: var(--sans); font-size: 1.1rem; letter-spacing: .16em; text-transform: uppercase;
  color: rgb(242 239 221) !important; padding: .8rem 1.5rem; border-radius: 999px;
  border: 1px solid rgba(242,239,221,.4); background: rgba(242,239,221,.14);
  margin: 0 0 1.6rem !important; text-align: left; line-height: 1;
}
.tpf .tpf-dot { width: .7rem; height: .7rem; border-radius: 50%;
  background: rgba(242,239,221,.5); flex: 0 0 auto; }
.tpf .tpf-status[data-open="true"] { border-color: rgba(168,206,140,.6); background: rgba(168,206,140,.14); }
.tpf .tpf-status[data-open="true"] .tpf-dot { background: #a8ce8c; box-shadow: 0 0 0 4px rgba(168,206,140,.25); }

.tpf .tpf-hours { margin: 0; padding: 0; }
.tpf .tpf-hrow {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1.2rem;
  padding: .7rem 0; border-bottom: 1px solid rgba(242,239,221,.10);
}
.tpf .tpf-hrow:last-child { border-bottom: 0; }
.tpf .tpf-hrow dt, .tpf .tpf-hrow dd {
  margin: 0; font-family: var(--serif); font-size: 1.42rem; line-height: 1.4;
  color: rgba(242,239,221,.66);
}
.tpf .tpf-hrow dd { text-align: right; white-space: nowrap; }
.tpf .tpf-hrow[data-today="true"] dt, .tpf .tpf-hrow[data-today="true"] dd { color: rgb(242 239 221); }
.tpf .tpf-hrow[data-today="true"] dt::before {
  content: "\25C6"; font-size: .6rem; vertical-align: middle;
  margin-right: .7rem; color: #a8ce8c;
}

.tpf .tpf-addr p { font-family: var(--serif); font-size: 1.5rem; line-height: 1.62;
  color: rgba(242,239,221,.78); margin: 0 0 1rem; max-width: 30rem; }
.tpf .tpf-addr p:last-child { margin-bottom: 0; }
.tpf a.tpf-mail, .tpf .tpf-addr a, .tpf .tpf-visit a {
  color: rgb(242 239 221) !important; text-decoration: none !important;
  border-bottom: 1px solid rgba(242,239,221,.35);
  transition: border-color .3s ease;
}
.tpf a.tpf-mail:hover, .tpf .tpf-addr a:hover, .tpf .tpf-visit a:hover {
  border-bottom-color: rgb(242 239 221);
}
.tpf a.tpf-mail:focus-visible { outline: 2px solid rgb(242 239 221); outline-offset: 3px; }

/* ---------- band C ---------- */
.tpf-legal { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 1.4rem 2.4rem; margin: clamp(2.4rem,3vw,3rem) 0 0;
  padding: clamp(2rem,2.6vw,2.6rem) clamp(1rem,1.6vw,1.6rem);
  border-top: 1px solid rgba(var(--fg),.16); }
.tpf-policies { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.8rem;
  font-family: var(--sans); font-size: 1.2rem; color: rgba(var(--fg),.55); margin: 0; list-style: none; padding: 0; }
.tpf-policies a { color: rgba(var(--fg),.68); text-decoration: none; }
.tpf-policies a:hover { color: rgb(var(--fg)); text-decoration: underline; text-underline-offset: 2px; }
.tpf-social { display: flex; align-items: center; gap: .7rem; list-style: none; margin: 0; padding: 0; }
.tpf-social a { display: flex; align-items: center; justify-content: center; width: 4.4rem; height: 4.4rem;
  border-radius: 50%; border: 1px solid rgba(var(--fg),.3); color: rgba(var(--fg),.88);
  background: rgba(var(--fg),.08);
  transition: background .35s ease, border-color .35s ease, color .35s ease, transform .35s var(--ease); }
.tpf-social a:hover { background: rgb(var(--fg)); border-color: rgb(var(--fg)); color: #254620; transform: translateY(-3px); }
.tpf-social a:focus-visible { outline: 2px solid rgb(var(--fg)); outline-offset: 3px; }
.tpf-social svg { width: 1.85rem; height: 1.85rem; }

.tpf-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 1.2rem 2.4rem; padding: clamp(1.6rem,2vw,2rem) clamp(1rem,1.6vw,1.6rem) 0;
  border-top: 1px solid rgba(var(--fg),.1); }
.tpf-pay { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; opacity: .55; }
.tpf-pay svg, .tpf-pay img { height: 2rem; width: auto; display: block; }
.tpf-credit { font-family: var(--sans); font-size: 1.15rem; letter-spacing: .1em;
  color: rgba(var(--fg),.5); margin: 0; line-height: 1.7; }
.tpf-credit a { color: rgba(var(--fg),.72); text-decoration: none;
  border-bottom: 1px solid rgba(var(--fg),.28); padding-bottom: .1rem;
  transition: color .35s ease, border-color .35s ease; }
.tpf-credit a:hover { color: rgb(var(--fg)); border-color: rgb(var(--fg)); }
.tpf-credit a:focus-visible { outline: 2px solid rgb(var(--fg)); outline-offset: 3px; }

@media (max-width: 1200px) { .tpf-nav { grid-template-columns: 1fr 1fr 1fr; } .tpf-visit { grid-column: 1 / -1; } }
@media (max-width: 749px) {
  .tpf-act { grid-template-columns: 1fr; }
  .tpf-nav { grid-template-columns: 1fr 1fr; }
  .tpf-visit { grid-column: 1 / -1; }
  .tpf-legal, .tpf-foot { flex-direction: column; text-align: center; justify-content: center; }
  .tpf-policies, .tpf-social, .tpf-pay { justify-content: center; }
}
@media (max-width: 460px) { .tpf-nav { grid-template-columns: 1fr; } }
@media (hover: none) { .tpf a.tpf-link:hover, .tpf-social a:hover, .tpf-field button:hover { transform: none; } }
@media (prefers-reduced-transparency: reduce) {
  .tpf-glass { background: #2d5427 !important; -webkit-backdrop-filter: none; backdrop-filter: none; }
  .tpf-glass::before { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .tpf-el { opacity: 1; transform: none; transition: none; }
  .tpf a, .tpf-social a, .tpf-field button { transition: none !important; transform: none !important; }
}

/* dropdown lists, all widths */
.tpf .tpf-list { padding: 0 .2rem 1.8rem; }
.tpf .tpf-list li { margin: 0 0 1.1rem; }
.tpf .tpf-list li:last-child { margin-bottom: 0; }
@media (max-width: 749px) {
  .tpf .tpf-nav { grid-template-columns: 1fr; }
  .tpf summary.tpf-h:hover { padding-left: .2rem; }
}
@media (prefers-reduced-motion: reduce) {
  .tpf details[open] .tpf-list { animation: none; }
  .tpf summary.tpf-h:hover { padding-left: .2rem; }
}

/* ==========================================================================
   Product page (.tpp) — restyles Dawn's main-product and related-products
   to match the editorial system. No template changes, CSS only.
   ========================================================================== */

.product,
.related-products {
  --serif: var(--font-heading-family, Georgia, "Times New Roman", serif);
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --fg: var(--color-foreground, 37 70 32);
  --bg: var(--color-background, 242 239 221);
  --ease: cubic-bezier(.22, .7, .28, 1);
}

/* ---------- layout: give the two columns room and let media stick ---------- */
.product--large:not(.product--no-media) .product__media-wrapper,
.product--medium:not(.product--no-media) .product__media-wrapper { padding-right: clamp(2rem, 4vw, 5rem); }
.product__info-container { max-width: 52rem; }

@media screen and (min-width: 990px) {
  .product__media-wrapper { position: sticky; top: 3rem; align-self: start; }
}

/* ---------- media ---------- */
.product__media-item .media,
.product__media-wrapper .global-media-settings {
  border-radius: 16px !important;
  border: 1px solid rgba(var(--fg), .18) !important;
  box-shadow: 0 18px 44px rgba(37, 70, 32, .10) !important;
  overflow: hidden;
}
.product__media img { transition: transform 1.2s var(--ease); }
.product__media:hover img { transform: scale(1.02); }
.thumbnail { border-radius: 10px !important; }
.thumbnail-list__item .thumbnail[aria-current] { border-color: rgb(var(--fg)); box-shadow: 0 0 0 2px rgb(var(--fg)); }

/* ---------- vendor line, used as an eyebrow ---------- */
.product__text.caption-with-letter-spacing,
.product__info-container .product__text {
  font-family: var(--sans);
  font-size: clamp(1.15rem, 1vw, 1.3rem);
  letter-spacing: .26em; text-transform: uppercase; font-weight: 600;
  color: rgba(var(--fg), .6); margin: 0 0 1.4rem; text-indent: .26em;
}

/* ---------- title ---------- */
.product__title > h1,
.product__title > .h1 {
  font-family: var(--serif);
  font-size: clamp(2.8rem, 3.2vw, 4rem) !important;
  line-height: 1.12; letter-spacing: -.01em;
  margin: 0 0 1.6rem; text-wrap: balance;
  color: rgb(var(--fg));
}

/* ---------- price ---------- */
.product__info-container .price {
  font-family: var(--serif);
  font-size: clamp(2rem, 1.8vw, 2.4rem) !important;
  line-height: 1.2; color: rgb(var(--fg));
}
.product__info-container .price--on-sale .price-item--regular { opacity: .5; }
.product__tax,
.product__info-container .product__tax a {
  font-family: var(--sans); font-size: 1.25rem; letter-spacing: .06em;
  color: rgba(var(--fg), .58);
}

/* a hairline under the price block, the way the rest of the site separates ideas */
.product__info-container .product__tax { padding-bottom: 2rem; border-bottom: 1px solid rgba(var(--fg), .16); margin-bottom: 2.2rem; }

/* ---------- option labels ---------- */
.product-form__input .form__label,
.product__info-container legend.form__label {
  font-family: var(--sans);
  font-size: clamp(1.05rem, .9vw, 1.2rem);
  letter-spacing: .22em; text-transform: uppercase; font-weight: 600;
  color: rgba(var(--fg), .55); margin: 0 0 1.2rem; text-indent: .22em;
}

/* ---------- variant pills, matched to .tpx-chip ---------- */
.product-form__input--pill input[type=radio] + label {
  font-family: var(--serif) !important;
  font-size: clamp(1.45rem, 1.2vw, 1.6rem) !important;
  line-height: 1.2;
  padding: 1.2rem 2rem !important;
  border-radius: 999px !important;
  border: 1px solid rgba(var(--fg), .24) !important;
  background: rgba(var(--fg), .04) !important;
  color: rgb(var(--fg)) !important;
  letter-spacing: 0 !important;
  transition: background .4s ease, color .4s ease, border-color .4s ease, transform .4s var(--ease);
}
.product-form__input--pill input[type=radio] + label:hover {
  border-color: rgba(var(--fg), .5) !important;
  transform: translateY(-3px);
}
.product-form__input--pill input[type=radio]:checked + label {
  background: rgb(var(--fg)) !important;
  color: rgb(var(--bg)) !important;
  border-color: rgb(var(--fg)) !important;
}
.product-form__input--pill input[type=radio]:focus-visible + label {
  outline: 2px solid rgb(var(--fg)); outline-offset: 3px;
}
@supports (backdrop-filter: blur(1px)) {
  .product-form__input--pill input[type=radio] + label {
    -webkit-backdrop-filter: blur(16px) saturate(1.25); backdrop-filter: blur(16px) saturate(1.25);
  }
}

/* ---------- quantity ---------- */
.product-form__quantity .form__label { margin-bottom: 1.2rem; }
.quantity {
  border-radius: 999px !important;
  border: 1px solid rgba(var(--fg), .3) !important;
  overflow: hidden; width: 15rem; min-height: 5rem;
  background: rgba(var(--fg), .03);
}
.quantity::after { display: none !important; }
.quantity__input { font-family: var(--serif) !important; font-size: 1.7rem !important; color: rgb(var(--fg)); }
.quantity__button { color: rgb(var(--fg)); transition: background .3s ease; }
.quantity__button:hover { background: rgba(var(--fg), .08); }

/* ---------- buttons ---------- */
.product-form__submit,
.product__info-container .shopify-payment-button__button--unbranded {
  border-radius: 999px !important;
  min-height: 5.4rem;
  font-family: var(--sans) !important;
  font-size: clamp(1.3rem, 1.05vw, 1.45rem) !important;
  letter-spacing: .18em !important; text-transform: uppercase; font-weight: 600;
  text-indent: .18em;
  background: rgb(var(--fg)) !important;
  color: rgb(var(--bg)) !important;
  border: 1px solid rgb(var(--fg)) !important;
  box-shadow: none !important;
  transition: background .45s var(--ease), color .45s var(--ease), letter-spacing .45s var(--ease);
}
.product-form__submit:hover:not([disabled]),
.product__info-container .shopify-payment-button__button--unbranded:hover {
  background: transparent !important;
  color: rgb(var(--fg)) !important;
  letter-spacing: .22em !important;
}
.product-form__submit[disabled] { opacity: .45; }
.product-form__submit::after,
.product-form__submit::before { display: none !important; }
.shopify-payment-button__more-options {
  font-family: var(--sans) !important; font-size: 1.25rem !important;
  letter-spacing: .12em; text-transform: uppercase; color: rgba(var(--fg), .6) !important;
}

/* ---------- subscription / purchase options block ---------- */
.product__info-container .product-form__input--dropdown select,
.product__info-container fieldset.js.product-form__input {
  border-radius: 14px;
}

/* ---------- description and accordions ---------- */
.product__description {
  font-family: var(--serif);
  font-size: clamp(1.55rem, 1.2vw, 1.7rem);
  line-height: 1.68; color: rgba(var(--fg), .88);
}
.product__accordion .accordion__title,
.product__accordion summary {
  font-family: var(--serif) !important;
  font-size: clamp(1.65rem, 1.35vw, 1.85rem) !important;
  color: rgb(var(--fg));
}
.product__accordion { border-top: 1px solid rgba(var(--fg), .18); border-bottom: 1px solid rgba(var(--fg), .18); }

/* ---------- related products ---------- */
.related-products h2,
.related-products .h2 {
  font-family: var(--serif);
  font-size: clamp(2.2rem, 2.6vw, 3.2rem) !important;
  line-height: 1.18; letter-spacing: -.006em;
  margin: 0 0 clamp(2.4rem, 3.4vw, 3.4rem);
  text-align: center; color: rgb(var(--fg));
}

/* every tile the same shape, which is what makes the row read as a row */
.related-products .card__inner,
.related-products .card__media,
.related-products .card .media {
  aspect-ratio: 1 / 1 !important;
  padding-bottom: 0 !important;
  border-radius: 14px !important;
  overflow: hidden;
}
.related-products .card__inner { border: 1px solid rgba(var(--fg), .16); background: rgba(var(--fg), .04); }
.related-products .card__media img,
.related-products .card .media img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); }
.related-products .card:hover .card__media img { transform: scale(1.04); }

.related-products .card-wrapper { transition: transform .5s var(--ease); }
.related-products .card-wrapper:hover { transform: translateY(-5px); }

/* titles sit on one baseline no matter how long they run */
.related-products .card__content { padding-top: 1.6rem; }
.related-products .card__information { padding: 0; }
.related-products .card__heading,
.related-products .card__heading a {
  font-family: var(--serif) !important;
  font-size: clamp(1.55rem, 1.25vw, 1.75rem) !important;
  line-height: 1.35; color: rgb(var(--fg));
  text-decoration: none;
}
.related-products .card__heading a:hover { text-decoration: underline; text-underline-offset: 3px; }
.related-products .card-information > .card__heading { min-height: 4.8rem; }
.related-products .price {
  font-family: var(--serif) !important;
  font-size: clamp(1.4rem, 1.15vw, 1.55rem) !important;
  color: rgba(var(--fg), .78);
}

@supports (backdrop-filter: blur(1px)) {
  .related-products .card__inner {
    -webkit-backdrop-filter: blur(16px) saturate(1.25); backdrop-filter: blur(16px) saturate(1.25);
  }
}

/* ---------- preferences ---------- */
@media (hover: none) {
  .related-products .card-wrapper:hover,
  .product-form__input--pill input[type=radio] + label:hover { transform: none; }
  .product__media:hover img,
  .related-products .card:hover .card__media img { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .product__media img, .related-products .card__media img,
  .related-products .card-wrapper, .product-form__submit,
  .product-form__input--pill input[type=radio] + label { transition: none !important; transform: none !important; }
}

/* ==========================================================================
   Header mega menu — editorial panel, constrained, hover-opened
   ========================================================================== */

.header details.mega-menu > .mega-menu__content {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 2rem 3rem !important;
  overflow: visible !important;
}

.header details.mega-menu > .mega-menu__content > .mega-menu__list,
.header details.mega-menu > .mega-menu__content > .mega-menu__list--condensed {
  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  align-content: flex-start !important;
  gap: 0 clamp(3rem, 4vw, 5rem) !important;
  width: fit-content !important;
  max-width: 92vw !important;
  margin: 0 auto !important;
  padding: clamp(2.4rem, 2.8vw, 3.2rem) clamp(3rem, 3.5vw, 4rem) !important;
  border: 1px solid rgba(37, 70, 32, .14) !important;
  border-radius: 4px !important;
 background: rgb(var(--color-background, 242 239 221)) !important;
  box-shadow:
    0 1px 2px rgba(37, 70, 32, .04),
    0 10px 20px rgba(37, 70, 32, .06),
    0 30px 60px rgba(37, 70, 32, .12) !important;
  animation: tpmmPanel .5s cubic-bezier(.22, .7, .28, 1) both;
  transform-origin: 50% 0;
}
@keyframes tpmmPanel {
  from { opacity: 0; transform: translateY(-1.2rem); clip-path: inset(0 0 100% 0); }
  to   { opacity: 1; transform: none; clip-path: inset(0 0 0 0); }
}

/* two fixed columns */
.header details.mega-menu .mega-menu__list > li {
  flex: 0 0 25rem !important;
  width: 25rem !important;
  max-width: 25rem !important;
  display: block !important;
  border-bottom: 1px solid rgba(37, 70, 32, .11);
}
.header details.mega-menu .mega-menu__list > li:nth-last-child(1),
.header details.mega-menu .mega-menu__list > li:nth-last-child(2) { border-bottom: 0; }

.header details.mega-menu .mega-menu__list a.mega-menu__link {
  position: relative !important;
  display: block !important;
  padding: 1.5rem 2.6rem 1.5rem .2rem !important;
  font-family: var(--font-heading-family, Georgia, serif) !important;
  font-size: 1.75rem !important;
  font-weight: 400 !important;
  line-height: 1.32 !important;
  letter-spacing: -.002em !important;
  color: rgba(37, 70, 32, .8) !important;
  text-decoration: none !important;
  transition:
    color .4s cubic-bezier(.22, .7, .28, 1),
    padding-left .5s cubic-bezier(.22, .7, .28, 1) !important;
}
.header details.mega-menu .mega-menu__list a.mega-menu__link:hover,
.header details.mega-menu .mega-menu__list a.mega-menu__link:focus-visible {
  color: rgb(37, 70, 32) !important;
  padding-left: 1.4rem !important;
}

/* hairline draws in from the left */
.header details.mega-menu .mega-menu__list a.mega-menu__link::before {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px;
  height: 1px; background: rgb(37, 70, 32);
  transform: scaleX(0); transform-origin: 0 50%;
  transition: transform .55s cubic-bezier(.22, .7, .28, 1);
}
.header details.mega-menu .mega-menu__list a.mega-menu__link:hover::before { transform: scaleX(1); }

/* arrow slides in on the right */
.header details.mega-menu .mega-menu__list a.mega-menu__link::after {
  content: "→";
  position: absolute; right: .2rem; top: 50%;
  font-size: 1.45rem; line-height: 1;
  color: rgba(37, 70, 32, .6);
  opacity: 0; transform: translate(-.8rem, -50%);
  transition: opacity .4s ease, transform .45s cubic-bezier(.22, .7, .28, 1);
}
.header details.mega-menu .mega-menu__list a.mega-menu__link:hover::after,
.header details.mega-menu .mega-menu__list a.mega-menu__link:focus-visible::after {
  opacity: 1; transform: translate(0, -50%);
}

.header details.mega-menu .mega-menu__list a.mega-menu__link--active { color: rgb(37, 70, 32) !important; }
.header details.mega-menu .mega-menu__list a.mega-menu__link:focus-visible { outline: none; }

/* rows rise in */
.header details.mega-menu[open] > .mega-menu__content .mega-menu__list > li {
  animation: tpmmRow .55s cubic-bezier(.22, .7, .28, 1) both;
}
@keyframes tpmmRow {
  from { opacity: 0; transform: translateY(1.1rem); }
  to   { opacity: 1; transform: none; }
}
.header details.mega-menu[open] .mega-menu__list > li:nth-child(1) { animation-delay: .10s; }
.header details.mega-menu[open] .mega-menu__list > li:nth-child(2) { animation-delay: .15s; }
.header details.mega-menu[open] .mega-menu__list > li:nth-child(3) { animation-delay: .20s; }
.header details.mega-menu[open] .mega-menu__list > li:nth-child(4) { animation-delay: .25s; }
.header details.mega-menu[open] .mega-menu__list > li:nth-child(5) { animation-delay: .30s; }
.header details.mega-menu[open] .mega-menu__list > li:nth-child(6) { animation-delay: .35s; }
.header details.mega-menu[open] .mega-menu__list > li:nth-child(7) { animation-delay: .40s; }

/* ---------- top level ---------- */
.header .header__inline-menu .header__menu-item { position: relative; padding: 1.2rem 1.6rem !important; }
.header .header__inline-menu .header__menu-item span { text-decoration: none !important; }
.header .header__inline-menu .header__menu-item::after {
  content: ""; position: absolute; left: 1.6rem; right: 1.6rem; bottom: .4rem;
  height: 1px; background: rgb(37, 70, 32);
  transform: scaleX(0); transform-origin: 50% 50%;
  transition: transform .5s cubic-bezier(.22, .7, .28, 1);
}
.header .header__inline-menu .header__menu-item:hover::after,
.header .header__inline-menu details[open] > .header__menu-item::after { transform: scaleX(1); }
.header .header__inline-menu .icon-caret {
  height: .6rem;
  transition: transform .45s cubic-bezier(.22, .7, .28, 1);
}
.header .header__inline-menu details[open] > .header__menu-item .icon-caret { transform: rotate(180deg); }

@media screen and (max-width: 989px) {
  .header details.mega-menu .mega-menu__list > li { flex: 0 0 22rem !important; width: 22rem !important; max-width: 22rem !important; }
}
@media (hover: none) {
  .header details.mega-menu .mega-menu__list a.mega-menu__link:hover { padding-left: .2rem !important; }
}
@media (prefers-reduced-motion: reduce) {
  .header .header__inline-menu .header__menu-item::after,
  .header .header__inline-menu .icon-caret,
  .header details.mega-menu .mega-menu__list a.mega-menu__link,
  .header details.mega-menu .mega-menu__list a.mega-menu__link::before,
  .header details.mega-menu .mega-menu__list a.mega-menu__link::after { transition: none !important; }
  .header details.mega-menu > .mega-menu__content > .mega-menu__list,
  .header details.mega-menu[open] .mega-menu__list > li { animation: none !important; }
}
box-shadow:
    0 1px 2px rgba(37, 70, 32, .05),
    0 12px 24px rgba(37, 70, 32, .08),
    0 36px 70px rgba(37, 70, 32, .16) !important;