@font-face { font-family: "Bodoni Moda"; src: url("../fonts/bodoni-moda-latin-wght-normal.woff2") format("woff2"); font-weight: 400 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Bodoni Moda"; src: url("../fonts/bodoni-moda-latin-wght-italic.woff2") format("woff2"); font-weight: 400 900; font-style: italic; font-display: swap; }
@font-face { font-family: "Jost"; src: url("../fonts/jost-latin-wght-normal.woff2") format("woff2"); font-weight: 100 900; font-display: swap; }

:root {
  --pearl: #fbf4f3;
  --ivory: #fffcfb;
  --blush: #f3dade;
  --blush-2: #ebc6cf;
  --rose: #efc6d2;
  --ink: #2a1d24;
  --soft: #66505c;
  --hair: #e6cfd5;
  --plum: #7a2e6b;
  --plum-deep: #5e2052;
  --gold: #c9a253;
  --gold-ink: #84601f;

  --display: "Bodoni Moda", "Didot", Georgia, serif;
  --body: "Jost", "Futura", "Segoe UI", sans-serif;

  --gutter: clamp(16px, 4.5vw, 64px);
  --gap: clamp(14px, 2.4vw, 32px);
  --space: clamp(64px, 9vw, 132px);
  --lift: 0 1px 1px rgb(42 29 36 / .05), 0 10px 24px -10px rgb(42 29 36 / .16), 0 30px 60px -30px rgb(42 29 36 / .2);
  --ease: cubic-bezier(.16, 1, .3, 1);
  --diamond: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath d='M6 0 12 6 6 12 0 6z' fill='%23c9a253'/%3E%3C/svg%3E");
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 76px; -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--pearl); color: var(--ink); font: 400 1.0625rem/1.65 var(--body); scrollbar-color: var(--plum) var(--pearl); }
::selection { background: var(--plum); color: #fff; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-underline-offset: .25em; text-decoration-thickness: 1px; text-decoration-color: var(--blush-2); transition: text-decoration-color .3s, color .3s; }
a:hover { text-decoration-color: var(--plum); }
:focus-visible { outline: 2px solid var(--plum); outline-offset: 3px; }
.site-footer :focus-visible { outline-color: #f2a5f2; }
h1, h2, h3 { font-family: var(--display); font-weight: 400; margin: 0; line-height: 1.06; letter-spacing: -.015em; text-wrap: balance; }
h1 em, h2 em { font-style: italic; }
h2 { font-size: clamp(2.2rem, 1.4rem + 3.4vw, 4.2rem); }
h3 { font-size: clamp(1.45rem, 1.2rem + 1vw, 1.95rem); }
p { margin: 0; text-wrap: pretty; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.lede { font-size: clamp(1.08rem, 1rem + .35vw, 1.25rem); line-height: 1.6; color: var(--soft); max-width: 50ch; }
.center { text-align: center; }
.center .lede { margin-inline: auto; }

.wrap { width: min(1220px, 100% - 2 * var(--gutter)); margin-inline: auto; }
.wide-wrap { width: min(1420px, 100% - 2 * var(--gutter)); margin-inline: auto; }
.section { padding-block: var(--space); }
.band { background: var(--blush); }

/* a gold hairline with a diamond, under headings */
.rule { display: flex; align-items: center; gap: 12px; width: min(220px, 64%); margin-top: 18px; color: var(--gold); }
.center .rule { margin-inline: auto; }
.rule::before, .rule::after { content: ""; flex: 1; height: 1px; background: currentColor; }
.rule span { width: 9px; height: 9px; background: var(--diamond) center / contain no-repeat; }

/* ivory card with a fine gold double rule */
.card { position: relative; background: var(--ivory); box-shadow: var(--lift); }
.card.blush { background: #fbe9ec; }
.ruled::before { content: ""; position: absolute; inset: 9px; pointer-events: none; border: 1px solid rgb(201 162 83 / .75); box-shadow: inset 0 0 0 3px transparent, inset 0 0 0 4px rgb(201 162 83 / .35); }

.btn { display: inline-flex; align-items: center; justify-content: center; gap: .7em; min-height: 52px; padding: .9em 1.7em; font: 500 .98rem/1.2 var(--body); letter-spacing: .03em; text-decoration: none; border: 0; cursor: pointer; transition: background-color .35s, box-shadow .35s, color .35s; }
.btn svg { width: 18px; height: 18px; flex: none; transition: translate .45s var(--ease); }
.btn:hover svg { translate: 4px 0; }
.btn-plum { background: var(--plum); color: #fff; }
.btn-plum:hover { background: var(--plum-deep); }
.btn-line { background: transparent; color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.btn-line:hover { color: var(--plum); box-shadow: inset 0 0 0 1px var(--plum), inset 0 0 0 2px var(--plum); }
.link { display: inline-flex; align-items: center; gap: .5em; font-weight: 500; text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 3px; }
.link svg { width: 16px; height: 16px; transition: translate .45s var(--ease); }
.link:hover { color: var(--plum); }
.link:hover svg { translate: 4px 0; }
.ph { display: inline-block; font: 600 .78rem/1.35 var(--body); color: var(--plum-deep); background: #fff3f8; border: 1px dashed var(--plum); padding: .35em .65em; }
.venue { display: block; font-style: normal; font-family: var(--body); font-size: .86rem; font-weight: 500; color: var(--plum); margin-top: 2px; }

/* ---------- Top strip and header ---------- */
.topbar { background: var(--blush); color: var(--ink); font-size: .86rem; }
.topbar .wrap { display: flex; justify-content: center; align-items: center; gap: 28px; min-height: 36px; text-align: center; }
.topbar a { font-weight: 600; text-decoration: none; white-space: nowrap; }
.topbar .wide { display: none; }
/* the awards line first; showroom hours only where there's room for all three on one line */
.topbar .wider { display: none; }
.topbar a.topbar-award { display: inline-flex; align-items: center; gap: 7px; font-weight: 400; }
.topbar-award img { width: 20px; height: auto; }
.topbar-award b { font-weight: 600; color: var(--plum); }
.topbar-award:hover b { text-decoration: underline; }
.site-header { position: sticky; top: 0; z-index: 30; background: var(--pearl); box-shadow: 0 1px 0 var(--hair); }
.site-header .bar { display: flex; align-items: center; gap: 18px; min-height: 66px; width: min(1420px, 100% - 2 * var(--gutter)); margin-inline: auto; }
.brand { margin-right: auto; }
.brand img { width: clamp(160px, 42vw, 230px); }
.nav { display: none; gap: clamp(18px, 2.2vw, 32px); font-size: .98rem; }
.nav a { text-decoration: none; padding-block: 6px; border-bottom: 1px solid transparent; }
.nav a:hover, .nav a[aria-current="page"] { border-bottom-color: var(--plum); color: var(--plum); }
.head-cta { display: none; }
.menu-btn { display: grid; place-items: center; width: 44px; height: 44px; background: none; border: 0; color: var(--ink); cursor: pointer; }
.menu-btn svg { width: 26px; height: 26px; }
.mobile-nav { display: none; border-top: 1px solid var(--hair); }
.mobile-nav.open { display: block; }
.mobile-nav a { display: block; padding: 14px var(--gutter); text-decoration: none; border-bottom: 1px solid var(--hair); font: 400 1.4rem/1.2 var(--display); }
.mobile-nav a:hover { color: var(--plum); }
@media (min-width: 700px) { .topbar .wide { display: inline; } }
@media (min-width: 1100px) { .topbar .wider { display: inline; } }
@media (min-width: 1000px) {
  .site-header .bar { min-height: 76px; }
  .nav { display: flex; }
  .head-cta { display: inline-flex; min-height: 44px; padding: .6em 1.2em; font-size: .92rem; }
  .menu-btn, .mobile-nav { display: none !important; }
}

/* ---------- The cover: the room full width, the words on pearl panels over it ---------- */
/* phones and tablets: the headline on the photo, the rest on paper below it */
.cover { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); }
.cover > img { grid-area: 1 / 1; width: 100%; height: 58svh; min-height: 320px; object-fit: cover; object-position: 50% 30%; }
.cover-credit { position: absolute; z-index: 2; right: 10px; top: 10px; margin: 0; background: rgb(251 244 243 / .92); padding: .3em .7em; font-size: .8rem; }
.cover-credit .venue { display: inline; font-size: inherit; margin: 0; }
.cover-inner, .cover-copy { display: contents; }
.cover h1 { grid-area: 1 / 1; align-self: end; justify-self: start; position: relative; z-index: 1; margin: 0 clamp(10px, 3vw, 24px) clamp(10px, 3vw, 24px); padding: clamp(8px, 2.2vw, 18px) clamp(12px, 3.4vw, 26px) clamp(10px, 2.6vw, 20px); background: rgb(251 244 243 / .9); box-shadow: 0 18px 40px -24px rgb(42 29 36 / .45); font-size: clamp(1.6rem, .7rem + 4.6vw, 3rem); line-height: 1.02; max-width: calc(100% - 2 * clamp(10px, 3vw, 24px)); }
.cover h1 em { color: var(--plum); }
.cover .lede { padding: 20px var(--gutter) 0; max-width: 46ch; color: var(--soft); }
.cover .long { display: none; }
.cover-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 28px; padding: 18px var(--gutter) 30px; }
.cover-actions .link b { font-weight: 600; }
@media (max-width: 520px) { .cover-actions .btn { width: 100%; } }
@media (max-width: 639px) { .cover h1 em { display: block; } }
/* phones: under the buttons, so the booking button stays near the top (the strip above carries the award) */
.cover-award { display: block; order: 1; padding: 0 var(--gutter) 28px; }
.cover-award img { width: 150px; height: auto; }
.coverlines { display: none; list-style: none; margin: 0; padding: 0; }
.coverlines a { display: grid; gap: 2px; padding: 14px 0; text-decoration: none; border-top: 1px solid var(--blush-2); }
.coverlines li:first-child a { border-top: 0; }
.coverlines b { font: 400 1.45rem/1.15 var(--display); }
.coverlines span { font-size: .94rem; color: #5a4450; }
.coverlines a:hover b { color: var(--plum); font-style: italic; }
@media (min-width: 640px) and (max-width: 999px) { .cover > img { height: 62svh; object-position: 50% 20%; } .cover .long { display: inline; } }

/* laptops: everything on the photo, words and cover lines on pearl panels */
@media (min-width: 1000px) {
  .cover { height: clamp(560px, calc(100svh - 112px), 900px); align-items: end; overflow: hidden; background: var(--blush-2); }
  .cover > img { position: absolute; inset: 0; height: 100%; min-height: 0; object-position: 50% 6%; }
  .cover-inner { position: relative; z-index: 1; display: grid; grid-area: 1 / 1; grid-template-columns: clamp(280px, 27vw, 500px) clamp(196px, 17vw, 240px); justify-content: space-between; align-items: end; gap: 16px; width: min(1420px, 100% - 2 * var(--gutter)); margin-inline: auto; padding-bottom: clamp(20px, 3vw, 48px); }
  /* frosted pearl: the flowers show through as colour, the words stay sharp */
  .cover-copy, .coverlines { display: block; background: rgb(251 244 243 / .8); -webkit-backdrop-filter: blur(14px) saturate(1.15); backdrop-filter: blur(14px) saturate(1.15); box-shadow: 0 20px 44px -28px rgb(42 29 36 / .4); }
  .cover-copy { padding: clamp(20px, 2vw, 30px) clamp(20px, 2.1vw, 32px) clamp(22px, 2.1vw, 30px); }
  .coverlines { padding: 2px clamp(16px, 1.4vw, 20px); }
  /* the award badge heads the cover-lines panel, on the same frosted pearl */
  .cover-inner { grid-template-rows: auto auto; row-gap: 0; }
  .cover-copy { grid-column: 1; grid-row: 1 / 3; }
  .cover-award { grid-column: 2; grid-row: 1; order: 0; padding: clamp(14px, 1.3vw, 18px) clamp(16px, 1.4vw, 20px) 10px; background: rgb(251 244 243 / .8); -webkit-backdrop-filter: blur(14px) saturate(1.15); backdrop-filter: blur(14px) saturate(1.15); }
  .cover-award img { width: 100%; max-width: 190px; }
  .coverlines { grid-column: 2; grid-row: 2; }
  .coverlines li:first-child a { border-top: 1px solid var(--blush-2); }
  .coverlines a { padding: 11px 0; }
  .coverlines b { font-size: clamp(1.05rem, .5rem + .9vw, 1.2rem); }
  .coverlines span { font-size: .82rem; }
  .cover h1 { margin: 0; padding: 0; background: none; box-shadow: none; font-size: clamp(1.9rem, min(2.75vw, 5.6vh), 3.4rem); line-height: 1.04; max-width: none; }
  .cover .lede { padding: 0; margin-top: 10px; font-size: clamp(.92rem, .55rem + .45vw, 1.05rem); color: #4f3a46; }
  .cover .long { display: none; }
  .cover-actions { padding: 0; margin-top: clamp(14px, 1.4vw, 20px); gap: 12px 20px; }
  .cover-actions .btn { min-height: 48px; padding: .8em 1.3em; white-space: nowrap; }
  @media (max-width: 1279px) { .cover-actions .btn { width: 100%; padding-inline: 1em; } }
}

/* ---------- Since 2013: the folio strip ---------- */
.folio-line { border-block: 1px solid var(--ink); }
.folio-line p { padding-block: clamp(14px, 2vw, 22px); font: italic 400 clamp(1.15rem, .95rem + 1.1vw, 2rem)/1.25 var(--display); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 28px; }
.folio-line span { font-style: normal; }
@media (max-width: 899px) { .folio-line .issue { display: none; } }

/* ---------- Showroom feature ---------- */
.feature { display: grid; gap: var(--gap); align-items: center; }
.feature-photo { margin: 0; position: relative; }
.feature-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.feature-photo figcaption { margin-top: 12px; font: italic 400 1rem/1.4 var(--display); color: var(--soft); }
.feature-photo .ph { position: absolute; left: 14px; top: 14px; }
.feature-text h2 { max-width: 12ch; }
.feature-text .lede { margin-top: 22px; }
.details { margin: 30px 0 0; padding: 0; }
.details div { display: grid; gap: 2px; padding: 14px 0; border-top: 1px solid var(--hair); }
.details dt { font-weight: 600; font-size: .95rem; }
.details dd { margin: 0; color: var(--soft); }
.feature-text .btn { margin-top: 30px; }
@media (min-width: 900px) {
  .feature { grid-template-columns: 7fr 5fr; gap: clamp(36px, 6vw, 96px); }
  .feature-photo img { aspect-ratio: 5 / 6; max-height: calc(100svh - 140px); }
  .details div { grid-template-columns: 6em 1fr; }
}

/* ---------- Your way ---------- */
.yourway-head { margin-bottom: clamp(32px, 5vw, 52px); }
.yourway-head .lede { margin-top: 18px; }

/* phones and tablets: each piece with its own photo, no switching */
.ways { display: grid; gap: 40px; }
.way h3 { font-size: 1.7rem; padding-bottom: 12px; border-bottom: 1px solid var(--blush-2); margin-bottom: 14px; }
.way-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.way figure { margin: 0; }
.way img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.way figure:first-child { grid-column: 1 / -1; }
.way figure:first-child img { aspect-ratio: 4 / 3; }
.way figcaption { margin-top: 8px; font-size: .98rem; line-height: 1.35; }
.way figcaption .venue { font-size: .82rem; }
@media (min-width: 640px) and (max-width: 899px) {
  .way-grid { grid-template-columns: repeat(3, 1fr); }
  .way figure:first-child { grid-column: auto; }
  .way figure:first-child img { aspect-ratio: 1; }
}

/* laptops: the room chooser, photo always fits the screen */
.chooser { display: none; }
@media (min-width: 900px) {
  .ways { display: none; }
  .chooser { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, 300px); gap: clamp(28px, 4vw, 64px); align-items: center; }
  .chooser-frame { position: relative; margin: 0; width: min(100%, calc((100svh - 150px) * 4 / 3)); aspect-ratio: 4 / 3; overflow: hidden; background: var(--blush-2); justify-self: end; }
  .chooser-frame img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: opacity .7s var(--ease), scale 1.2s var(--ease); }
  .chooser-frame img[hidden] { display: block; opacity: 0; scale: 1.04; pointer-events: none; }
  .chooser-frame figcaption { position: absolute; left: 12px; bottom: 12px; z-index: 1; background: rgb(251 244 243 / .94); padding: .35em .8em; font: italic 400 1rem/1.3 var(--display); }
  .chooser-frame figcaption .venue { display: inline; margin-left: .4em; }
}
.choices { list-style: none; margin: 0; padding: 0; }
.choices .group { font: italic 400 1.2rem/1.2 var(--display); color: var(--soft); padding: 22px 0 6px; }
.choices .group:first-child { padding-top: 0; }
.choice { display: flex; align-items: center; gap: 14px; width: 100%; min-height: 46px; padding: 8px 0; background: none; border: 0; border-top: 1px solid var(--blush-2); font: 400 1.06rem/1.3 var(--body); color: var(--ink); text-align: left; cursor: pointer; }
.choice::before { content: ""; width: 10px; height: 10px; border-radius: 50%; border: 1px solid var(--soft); flex: none; transition: background-color .3s, border-color .3s; }
.choice:hover { color: var(--plum); }
.choice[aria-pressed="true"] { color: var(--plum); font-weight: 500; }
.choice[aria-pressed="true"]::before { background: var(--plum); border-color: var(--plum); }

/* ---------- Packages: three cards, full contents, aligned ---------- */
.menus { display: grid; gap: clamp(28px, 4vw, 40px); margin-top: clamp(32px, 5vw, 52px); justify-items: center; }
.menu { display: flex; flex-direction: column; width: 100%; max-width: 560px; padding: 12px; text-align: center; }
.menu > img { width: 100%; aspect-ratio: 5 / 4; object-fit: cover; }
.menu-body { display: flex; flex-direction: column; align-items: center; flex: 1; padding: 0 clamp(16px, 2.6vw, 26px) clamp(24px, 3vw, 32px); }
.menu h3 { margin-top: 24px; min-height: 2.2em; display: flex; align-items: center; justify-content: center; }
.price { font: 400 clamp(2.6rem, 2.1rem + 1.8vw, 3.4rem)/1 var(--display); margin-top: 8px; color: var(--plum); font-variant-numeric: lining-nums; }
.menu-intro { margin-top: 12px; font: italic 400 1.08rem/1.4 var(--display); color: var(--soft); max-width: 30ch; min-height: 2.8em; }
.menu ul { list-style: none; width: 100%; margin: 20px 0 14px; padding: 0; border-top: 1px solid rgb(201 162 83 / .6); text-align: left; }
.menu li { position: relative; padding: 8px 0 8px 22px; font-size: .98rem; border-bottom: 1px solid var(--hair); }
.menu li::before { content: ""; position: absolute; left: 2px; top: 1.05em; width: 7px; height: 7px; background: var(--diamond) center / contain no-repeat; }
.menu li.plus { padding-left: 0; font-weight: 600; }
.menu li.plus::before { display: none; }
.menu .extra { font-size: .92rem; color: var(--soft); }
.menu .extra { margin-top: auto; padding-top: 14px; margin-bottom: 22px; }
.ribbon { position: absolute; z-index: 2; top: 26px; left: -8px; margin: 0; background: var(--plum); color: #fff; padding: 8px 14px 8px 16px; font: 500 .82rem/1.2 var(--body); letter-spacing: .04em; text-align: left; box-shadow: 0 6px 14px -8px rgb(0 0 0 / .45); }
.ribbon small { display: block; font-weight: 400; font-size: .8rem; color: #f6dcef; margin-top: 2px; }
@media (min-width: 960px) {
  .menus { grid-template-columns: repeat(3, 1fr); align-items: stretch; }
  .menu { max-width: none; }
}

.pkg-terms { margin-top: 28px; text-align: center; font-size: .95rem; color: var(--soft); }
.pkg-terms a { color: var(--plum); }
/* the price list request */
.slip { margin-top: clamp(48px, 7vw, 88px); display: grid; gap: var(--gap); padding: clamp(28px, 5vw, 52px); }
.slip h3 { font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.6rem); }
.slip p { margin-top: 12px; color: var(--soft); max-width: 42ch; }
@media (min-width: 900px) { .slip { grid-template-columns: 4fr 6fr; gap: clamp(32px, 5vw, 72px); align-items: start; } }

/* forms */
.fields { display: grid; gap: 20px; }
@media (min-width: 600px) { .fields.two { grid-template-columns: 1fr 1fr; } .fields .full { grid-column: 1 / -1; } }
.fields label, legend { display: grid; gap: 6px; font-size: .92rem; font-weight: 500; color: var(--soft); }
legend { display: block; }
.fields label .opt, legend .opt { font-weight: 400; }
.fields input, .fields textarea { font: 400 1.05rem/1.4 var(--body); color: var(--ink); background: transparent; border: 0; border-bottom: 1px solid var(--soft); padding: 9px 0; border-radius: 0; width: 100%; caret-color: var(--plum); }
.fields textarea { min-height: 104px; resize: vertical; border: 1px solid var(--hair); border-bottom-color: var(--soft); padding: 10px; }
.fields input:focus, .fields textarea:focus { outline: none; border-bottom-color: var(--plum); box-shadow: 0 1px 0 var(--plum); }
.fields input::placeholder, .fields textarea::placeholder { color: #7a6170; }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
legend { padding: 0; margin-bottom: 12px; }
.radios { display: grid; gap: 10px; }
.radio { display: flex; align-items: center; gap: 12px; cursor: pointer; }
.radio input { appearance: none; width: 22px; height: 22px; margin: 0; border: 1px solid var(--soft); border-radius: 50%; display: grid; place-items: center; flex: none; }
.radio input::after { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--plum); transform: scale(0); transition: transform .25s var(--ease); }
.radio input:checked::after { transform: scale(1); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { position: relative; cursor: pointer; }
.chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.chip span { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 16px; border: 1px solid var(--blush-2); background: var(--ivory); font-size: .98rem; transition: background-color .25s, border-color .25s, color .25s; }
.chip span::before { content: ""; width: 12px; height: 7px; border: solid currentColor; border-width: 0 0 2px 2px; rotate: -45deg; translate: 0 -2px; display: none; }
.chip input:checked + span { background: var(--plum); border-color: var(--plum); color: #fff; }
.chip input:checked + span::before { display: block; }
.chip input:focus-visible + span { outline: 2px solid var(--plum); outline-offset: 2px; }
.chip:hover span { border-color: var(--plum); }
.form-status:empty { display: none; }
.form-status { padding: 14px 16px; font-size: .98rem; }
.form-status.is-ok { background: var(--blush); border-left: 3px solid var(--plum); color: var(--ink); }
.form-status.is-error { background: #fbe9ec; border-left: 3px solid #a3263f; color: #6d1328; }
.form-small { font-size: .84rem; color: var(--soft); }
.form-small a { color: var(--plum); }
.h-captcha { min-height: 78px; }

/* ---------- A room, full width ---------- */
.room { position: relative; margin: 0; }
.room img { width: 100%; height: clamp(380px, 76vh, 820px); object-fit: cover; object-position: 50% 45%; }
.room figcaption { position: absolute; left: var(--gutter); bottom: clamp(16px, 3vw, 36px); max-width: calc(100% - 2 * var(--gutter)); background: var(--pearl); padding: 12px 18px; font: italic 400 clamp(1.1rem, 1rem + .5vw, 1.4rem)/1.3 var(--display); box-shadow: var(--lift); }

/* ---------- How it works: the order of the day ---------- */
.order { padding: clamp(40px, 6vw, 72px) clamp(22px, 5vw, 56px); text-align: center; }
.order .rule { margin-inline: auto; }
.order ol { list-style: none; margin: 26px 0 0; padding: 0; }
.order li { padding-block: 16px; }
.order li + li::before { content: ""; display: block; width: 1px; height: 26px; background: var(--gold); margin: -16px auto 16px; }
.order h3 { font-size: clamp(1.35rem, 1.2rem + .7vw, 1.7rem); }
.order li p { margin: 8px auto 0; max-width: 40ch; color: var(--soft); }
/* laptops: the same steps in a row, joined by one gold line */
@media (min-width: 1000px) {
  .order ol { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); margin-top: 44px; }
  .order li { position: relative; padding: 30px 0 0; }
  .order li + li::before { display: none; }
  .order li:not(:last-child)::before { content: ""; display: block; position: absolute; top: 6px; left: calc(50% + 14px); width: calc(100% + clamp(16px, 2vw, 28px) - 28px); height: 1px; margin: 0; background: var(--gold); }
  .order li::after { content: ""; position: absolute; top: 0; left: calc(50% - 6px); width: 12px; height: 12px; background: var(--diamond) center / contain no-repeat; }
  .order h3 { font-size: clamp(1.15rem, .9rem + .5vw, 1.35rem); line-height: 1.15; min-height: 2.3em; display: flex; align-items: flex-start; justify-content: center; }
  .order li p { font-size: .96rem; line-height: 1.55; }
}

/* the timeline draws itself in gold, once, when it comes into view (only with JS and motion allowed) */
.motion .order li > h3, .motion .order li > p { opacity: 0; translate: 0 12px; transition: opacity .6s var(--ease) calc(var(--i) * 230ms + 90ms), translate .8s var(--ease) calc(var(--i) * 230ms + 90ms); }
.motion .order li + li::before { transform: scaleY(0); transform-origin: top; transition: transform .32s cubic-bezier(.4, 0, .2, 1) calc(var(--i) * 230ms - 40ms); }
@media (min-width: 1000px) {
  .motion .order li::after { scale: 0; rotate: -45deg; transition: scale .5s var(--ease) calc(var(--i) * 230ms), rotate .6s var(--ease) calc(var(--i) * 230ms); }
  .motion .order li:not(:last-child)::before { transform: scaleX(0); transform-origin: left; transition: transform .3s cubic-bezier(.4, 0, .2, 1) calc(var(--i) * 230ms + 160ms); }
}
.motion .order ol.drawn li > h3, .motion .order ol.drawn li > p { opacity: 1; translate: 0 0; }
.motion .order ol.drawn li::before { transform: none; }
.motion .order ol.drawn li::after { scale: 1; rotate: 0deg; }

/* ---------- Real weddings: prints ---------- */
.real-head { display: grid; gap: 18px; align-items: end; }
.real-head .lede { margin-top: 14px; }
.real-links { display: flex; flex-wrap: wrap; gap: 12px; }
@media (min-width: 900px) { .real-head { grid-template-columns: 1fr auto; } }
.prints { display: grid; grid-auto-flow: dense; grid-template-columns: repeat(2, 1fr); gap: clamp(10px, 2vw, 22px); margin-top: clamp(28px, 4vw, 44px); }
.print { margin: 0; background: var(--ivory); padding: clamp(6px, 1vw, 10px) clamp(6px, 1vw, 10px) 0; box-shadow: var(--lift); }
.print img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.print figcaption { font-size: .86rem; line-height: 1.35; padding: 10px 4px 12px; color: var(--soft); }
.print figcaption .venue { font-size: .8rem; }
.print.wide { grid-column: span 2; }
.print.wide img { aspect-ratio: 16 / 10; }
@media (min-width: 900px) { .prints { grid-template-columns: repeat(4, 1fr); } }

/* ---------- Kind words ---------- */
.google { margin-top: clamp(28px, 4vw, 44px); display: grid; gap: 14px; justify-items: center; text-align: center; padding: clamp(24px, 4vw, 36px); border: 1px dashed var(--plum); background: var(--ivory); }
.google h3 { font-size: clamp(1.4rem, 1.2rem + .8vw, 1.8rem); }
.stars { display: flex; gap: 4px; color: var(--gold); }
.stars svg { width: 22px; height: 22px; }
.google p { max-width: 56ch; color: var(--soft); }
.places-title { margin-top: clamp(40px, 6vw, 64px); text-align: center; font-size: clamp(1.4rem, 1.2rem + .8vw, 1.8rem); }
.places { columns: 1; column-gap: var(--gap); margin-top: 24px; }
@media (min-width: 640px) { .places { columns: 2; } }
@media (min-width: 1000px) { .places { columns: 3; } }
.place { break-inside: avoid; margin: 0 0 var(--gap); padding: 28px 28px 26px; text-align: center; }
.place blockquote { margin: 0; font-size: 1.04rem; line-height: 1.6; }
.place figcaption { margin-top: 16px; font: italic 400 1.35rem/1.2 var(--display); color: var(--plum); }
.place .for { display: block; margin-top: 4px; font: 400 .9rem/1.4 var(--body); color: var(--soft); }
.place.loud blockquote { font-family: var(--display); font-size: 1.25rem; line-height: 1.4; }
.place.loud .wow { display: block; font-size: 2.4em; line-height: 1; color: var(--plum); }
.kind-foot { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 14px 30px; margin-top: 12px; }

/* ---------- A welcome from Sian & Ian, on a block of colour ---------- */
.welcome-band { background: var(--rose); }
.hosts { display: grid; gap: var(--gap); align-items: center; }
.letter { padding: clamp(32px, 6vw, 68px); }
.letter h2 { font-size: clamp(2rem, 1.5rem + 2.4vw, 3.3rem); }
.letter p { margin-top: 18px; max-width: 56ch; }
.letter .first::first-letter { float: left; font: 400 4.1em/.82 var(--display); color: var(--plum); margin: .06em .1em 0 0; }
.letter .sign { margin-top: 26px; font: italic 400 clamp(2rem, 1.6rem + 1.6vw, 2.8rem)/1 var(--display); color: var(--plum); }
.letter .since { margin-top: 8px; font-size: .9rem; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-ink); }
.hosts-photo { aspect-ratio: 4 / 5; display: grid; place-items: center; text-align: center; padding: 24px; background: var(--ivory); box-shadow: var(--lift); }
.hosts-photo p { font: italic 400 1.4rem/1.3 var(--display); color: var(--soft); margin-top: 10px; }
.hosts-photo.has-photo { display: block; padding: 8px; margin: 0; }
.hosts-photo.has-photo img { width: 100%; height: 100%; object-fit: cover; box-shadow: none; aspect-ratio: auto; }
@media (min-width: 900px) { .hosts { grid-template-columns: 7fr 5fr; gap: clamp(32px, 5vw, 72px); } }

/* ---------- Directory: where and what ---------- */
.directory { display: grid; gap: var(--space); }
@media (min-width: 900px) { .directory { grid-template-columns: 1fr 1fr; gap: clamp(40px, 6vw, 96px); } }
.directory h2 { font-size: clamp(1.9rem, 1.4rem + 2vw, 2.9rem); }
.directory p { margin-top: 16px; color: var(--soft); }
.towns { list-style: none; margin: 22px 0 0; padding: 0; columns: 2; column-gap: 28px; }
.towns li { padding: 7px 0; border-bottom: 1px solid var(--hair); break-inside: avoid; }
.venues-title { font-size: clamp(1.7rem, 1.35rem + 1.4vw, 2.4rem); }
.venues { list-style: none; margin: 16px 0 0; padding: 0; }
.venues li { break-inside: avoid; display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--hair); }
.venues b { font-weight: 500; }
.venues span { color: var(--soft); font-size: .92rem; text-align: right; }
.directory .ph { margin-top: 16px; }
@media (min-width: 900px) { .venues-block { grid-column: 1 / -1; } .venues { columns: 3; column-gap: clamp(28px, 4vw, 56px); } }
@media (min-width: 640px) and (max-width: 899px) { .venues { columns: 2; column-gap: 32px; } }
.services { list-style: none; margin: 22px 0 0; padding: 0; }
.services li { border-bottom: 1px solid var(--hair); }
.services a { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 0; text-decoration: none; }
.services a:hover { color: var(--plum); }
.services svg { width: 18px; height: 18px; flex: none; color: var(--gold-ink); transition: translate .35s var(--ease); }
.services a:hover svg { translate: 4px 0; }

/* ---------- Book a visit ---------- */
.book { display: grid; gap: var(--gap); align-items: start; }
@media (min-width: 900px) { .book { grid-template-columns: 7fr 5fr; } }
.book-card { padding: clamp(32px, 6vw, 60px); }
.book-card h2 { font-size: clamp(2.2rem, 1.6rem + 2.6vw, 3.6rem); }
.book-card .lede { margin-top: 14px; }
.book-card form { margin-top: clamp(26px, 4vw, 36px); display: grid; gap: 26px; }
.book-card .btn { justify-self: start; }
.talk { padding: clamp(30px, 5vw, 46px); }
.talk h3 { font-size: clamp(1.7rem, 1.4rem + 1vw, 2.1rem); }
.phones { display: grid; gap: 12px; margin-top: 20px; }
.phone { display: flex; align-items: center; gap: 14px; padding: 14px 16px; text-decoration: none; background: rgb(255 255 255 / .6); border: 1px solid var(--blush-2); transition: background-color .3s, border-color .3s; }
.phone:hover { background: var(--ivory); border-color: var(--plum); }
.phone svg { width: 22px; height: 22px; flex: none; color: var(--plum); }
.phone span { display: grid; }
.phone small { font-size: .88rem; color: var(--soft); }
.phone strong { font: 400 1.6rem/1.15 var(--display); font-variant-numeric: lining-nums; }
.talk .meta { margin-top: 18px; color: var(--soft); font-size: .96rem; }
.talk address { font-style: normal; margin-top: 22px; line-height: 1.6; }
.talk .row { display: flex; flex-wrap: wrap; gap: 10px 26px; margin-top: 20px; }

/* ---------- Footer ---------- */
.site-footer { background: var(--ink); color: #dccbd3; padding-block: clamp(56px, 8vw, 96px) 28px; }
.foot { display: grid; gap: 32px; }
.site-footer img { width: 250px; }
.site-footer .footer-award { justify-self: start; }
.site-footer .footer-award img { width: 170px; height: auto; }
.site-footer p { margin-top: 14px; max-width: 42ch; font-size: .95rem; }
.footer-links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px 26px; }
.footer-links a { color: #fff3f6; text-decoration: none; }
.footer-links a:hover { text-decoration: underline; text-decoration-color: #f2a5f2; }
.footer-base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; padding-top: 18px; border-top: 1px solid rgb(255 255 255 / .14); font-size: .84rem; }
.footer-base a { color: #dccbd3; }
@media (min-width: 900px) {
  .foot { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr auto auto; row-gap: 0; }
  .foot > div:first-child { grid-row: 1 / 3; }
  /* the award badge sits at the top of the right column, the links at the bottom, so the footer is no taller */
  .site-footer .footer-award { grid-column: 2; grid-row: 1; justify-self: end; align-self: start; }
  .footer-links { grid-column: 2; grid-row: 2; align-self: end; justify-content: flex-end; }
  .footer-base { grid-column: 1 / -1; margin-top: 32px; }
}

/* phone bar */
.thumb-bar { position: fixed; z-index: 25; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: 1fr 1fr; padding-bottom: env(safe-area-inset-bottom); background: var(--pearl); box-shadow: 0 -1px 0 var(--hair); transform: translateY(110%); transition: transform .5s var(--ease); }
.thumb-bar.show { transform: none; }
.thumb-bar a { display: grid; place-items: center; min-height: 56px; text-decoration: none; font-weight: 500; }
.thumb-bar a:first-child { background: var(--plum); color: #fff; }
@media (min-width: 1000px) { .thumb-bar { display: none; } }

/* the cover settles in once */
@media (prefers-reduced-motion: no-preference) {
  .cover > img { animation: settle 2s var(--ease) both; }
  .cover h1, .coverlines { animation: lift 1.2s .2s var(--ease) both; }
}
@keyframes settle { from { scale: 1.04; opacity: .6; } }
@keyframes lift { from { translate: 0 18px; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: .01ms !important; } html { scroll-behavior: auto; } }

/* ---------- Hire terms page ---------- */
.terms.terms-head { padding-block: clamp(48px, 7vw, 96px) clamp(28px, 4vw, 48px); }
.terms-head h1 { font-size: clamp(2.4rem, 1.5rem + 3.6vw, 4.4rem); }
.terms-head .lede { margin-top: 22px; }
.terms { width: min(760px, 100% - 2 * var(--gutter)); margin-inline: auto; padding-bottom: var(--space); }
.terms .notice { padding: clamp(22px, 3vw, 32px) clamp(22px, 3.4vw, 40px); font-weight: 500; }
.terms h2 { font-size: clamp(1.7rem, 1.35rem + 1.4vw, 2.4rem); margin-top: clamp(40px, 5vw, 64px); }
.terms ol { margin: 24px 0 0; padding: 0; list-style: none; counter-reset: term; }
.terms li { counter-increment: term; position: relative; padding: 18px 0 18px 3rem; border-top: 1px solid var(--blush-2); }
.terms li::before { content: counter(term); position: absolute; left: 0; top: 16px; font: italic 400 1.35rem/1.2 var(--display); color: var(--plum); font-variant-numeric: lining-nums; }
.terms li strong { font-weight: 600; }
.terms .notice + .notice, .terms ol + .notice { margin-top: clamp(32px, 4vw, 48px); }
.terms-foot { margin-top: clamp(40px, 5vw, 56px); color: var(--soft); }
.terms-foot a { color: var(--plum); }

/* ---------- Cookie consent: a long bar across the bottom at every size ---------- */
.consent { position: fixed; z-index: 40; left: 8px; right: 8px; bottom: 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 24px; padding: 12px 14px; background: var(--ivory); box-shadow: 0 18px 50px -20px rgb(42 29 36 / .55), 0 0 0 1px rgb(201 162 83 / .5); font-size: .86rem; line-height: 1.45; }
.consent[hidden] { display: none; }
.consent p { flex: 1 1 300px; color: var(--soft); }
.consent a { color: var(--plum); }
.consent-actions { flex: 1 1 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; max-width: 320px; }
.consent .btn { min-height: 40px; padding: .5em 1em; font-size: .92rem; }
html.consent-open .thumb-bar { display: none; }
@media (min-width: 640px) {
  .consent { left: var(--gutter); right: var(--gutter); bottom: 14px; flex-wrap: nowrap; padding: 14px 16px 14px 24px; font-size: .92rem; }
  .consent-actions { flex: none; grid-template-columns: 140px 140px; }
  .consent .btn { min-height: 44px; }
}
/* lift the desktop hero panels above the bar while it's showing */
@media (min-width: 1000px) {
  html.consent-open .cover-inner { padding-bottom: calc(var(--consent-h, 0px) + 32px); transition: padding-bottom .3s var(--ease); }
}
.cookie-settings { background: none; border: 0; padding: 0; font: inherit; color: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }

/* ---------- Inner pages ---------- */
.page-head { padding-block: clamp(48px, 7vw, 96px) clamp(28px, 4vw, 52px); }
.page-head h1 { font-size: clamp(2.4rem, 1.5rem + 3.6vw, 4.4rem); max-width: 16ch; }
.page-head .lede { margin-top: 22px; max-width: 60ch; }
.page-head .lede + .lede { margin-top: 14px; }
.page-head .ph { margin-top: 18px; }
.page-award { display: inline-block; margin-top: 24px; }
.page-award img { width: 170px; height: auto; }

/* venue décor: one section per kind of décor, photo beside the words */
.cats { display: grid; gap: clamp(64px, 9vw, 128px); padding-bottom: var(--space); }
.cat-block { scroll-margin-top: 100px; }
.cat-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
.cat-nav a { padding: 7px 14px; font-size: .92rem; text-decoration: none; background: var(--ivory); box-shadow: 0 0 0 1px var(--hair); }
.cat-nav a:hover { color: var(--plum); box-shadow: 0 0 0 1px var(--plum); }
.item-grid { list-style: none; margin: clamp(32px, 4vw, 48px) 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 210px), 1fr)); gap: clamp(14px, 2vw, 22px); }
.item-card { background: var(--ivory); box-shadow: var(--lift); padding: 8px; display: grid; grid-template-rows: auto 1fr; }
.item-card img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.item-grid.square .item-card img { aspect-ratio: 1; }
@media (max-width: 520px) { .item-grid.compact { grid-template-columns: 1fr 1fr; gap: 10px; } .item-grid.compact .item-card h3 { font-size: 1.05rem; } }
.item-card div { padding: 12px 6px 8px; }
.item-card h3 { font-size: 1.22rem; line-height: 1.15; }
.item-card p { margin-top: 6px; font-size: .9rem; line-height: 1.45; color: var(--soft); }
.cat-note { margin-top: 22px; color: var(--soft); max-width: 70ch; }
.cat-extra { margin-top: clamp(40px, 5vw, 64px); }
.cat-sub { font-size: clamp(1.7rem, 1.3rem + 1.6vw, 2.4rem); }
.cat-extra p { margin-top: 14px; color: var(--soft); max-width: 58ch; }
.cat { display: grid; gap: var(--gap); align-items: center; }
.cat-photo { margin: 0; }
.cat-photo img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; box-shadow: var(--lift); max-height: 82vh; }
.cat-photo figcaption { margin-top: 10px; font: italic 400 .98rem/1.4 var(--display); color: var(--soft); }
.cat h2 { font-size: clamp(1.9rem, 1.4rem + 2vw, 2.9rem); }
.cat .rule { margin-top: 14px; }
.cat p { margin-top: 16px; color: var(--soft); max-width: 54ch; }
.cat .from { margin-top: 18px; font: italic 400 1.3rem/1.3 var(--display); color: var(--plum); }
.cat .items-list { list-style: none; margin: 18px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.cat .items-list li { padding: 5px 12px; font-size: .9rem; background: var(--ivory); box-shadow: 0 0 0 1px var(--hair); }
@media (min-width: 900px) {
  .cat { grid-template-columns: 6fr 5fr; gap: clamp(36px, 5vw, 80px); }
  .cat-block:nth-child(even) > .cat .cat-photo { order: 2; }
}

/* décor hub tiles, and the child pages' breadcrumb and "more décor" list */
.decor-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: clamp(16px, 2vw, 24px); }
.decor-tile { display: grid; grid-template-rows: auto 1fr; height: 100%; padding: 10px; background: var(--ivory); box-shadow: var(--lift); text-decoration: none; color: inherit; }
.decor-tile img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.decor-tile div { display: flex; flex-direction: column; padding: 18px 10px 10px; }
.decor-tile h2 { font-size: clamp(1.6rem, 1.3rem + 1vw, 2.1rem); line-height: 1.1; }
.decor-tile p { margin-top: 10px; color: var(--soft); font-size: .98rem; }
.decor-tile .more { margin-top: auto; padding-top: 16px; display: inline-flex; align-items: center; gap: 10px; color: var(--plum); font: italic 400 1.2rem/1.3 var(--display); }
.decor-tile .more svg { width: 18px; height: 18px; transition: translate .35s var(--ease); }
.decor-tile:hover h2 { color: var(--plum); }
.decor-tile:hover .more svg { translate: 4px 0; }
.crumbs { margin-bottom: 18px; font-size: .92rem; color: var(--soft); }
.crumbs a { color: inherit; }
.decor-more { padding-bottom: var(--space); max-width: 720px; }
.decor-more h2 { font-size: clamp(1.9rem, 1.4rem + 2vw, 2.9rem); }

/* gallery */
.gallery { columns: 1; column-gap: clamp(12px, 2vw, 22px); padding-bottom: var(--space); }
.gallery .print { break-inside: avoid; margin-bottom: clamp(12px, 2vw, 22px); }
.gallery .print img { aspect-ratio: auto; height: auto; }
@media (min-width: 600px) { .gallery { columns: 2; } }
@media (min-width: 1000px) { .gallery { columns: 3; } }

/* selfie pods and audio guestbooks */
.products { display: grid; gap: var(--gap); }
.product { display: grid; align-content: start; padding: 12px; }
.product .shot-img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.product .shot { aspect-ratio: 4 / 3; display: grid; place-items: center; text-align: center; padding: 20px; background: var(--blush); color: var(--soft); font: italic 400 1.15rem/1.3 var(--display); }
.product-body { padding: clamp(18px, 3vw, 28px) clamp(12px, 2.5vw, 22px) clamp(14px, 2.5vw, 20px); }
.product h3 { font-size: clamp(1.5rem, 1.25rem + 1vw, 2rem); }
.product .price { font-size: clamp(2rem, 1.7rem + 1.2vw, 2.6rem); }
.product p:not(.price) { margin-top: 14px; color: var(--soft); }
.product p.price-alt { margin-top: 8px; font: italic 400 1.15rem/1.35 var(--display); color: var(--plum); }
.booth-shots .print:first-child { grid-column: span 2; }
.booth-shots .print.landscape img { aspect-ratio: 4 / 3; }
@media (min-width: 600px) { .booth-shots { grid-template-columns: repeat(3, 1fr); } .booth-shots .print:first-child { grid-column: auto; } .booth-shots .print.landscape img { aspect-ratio: 4 / 5; } }
.product .btn { margin-top: 22px; }
.section-title { font-size: clamp(2rem, 1.5rem + 2.4vw, 3.2rem); }
@media (min-width: 900px) { .products { grid-template-columns: 1fr 1fr; } }

/* testimonials */
.reviews-all { columns: 1; column-gap: var(--gap); padding-bottom: var(--space); }
@media (min-width: 760px) { .reviews-all { columns: 2; } }
@media (min-width: 1100px) { .reviews-all { columns: 3; } }

/* about */
.about-grid { display: grid; gap: var(--gap); align-items: start; padding-bottom: var(--space); }
.about-grid .prose-col p { margin-top: 18px; max-width: 60ch; }
.about-grid .prose-col p:first-child { margin-top: 0; }
.award { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; margin-top: 30px; padding: 20px 22px; background: var(--blush); scroll-margin-top: 100px; }
.award img { width: 190px; height: auto; }
.about-grid .prose-col .award p { flex: 1 1 22ch; margin: 0; }
.about-grid h2 { font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.6rem); margin-top: clamp(36px, 5vw, 56px); }
.about-photo { margin: 0; }
.about-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; box-shadow: var(--lift); }
.area-list { list-style: none; margin: 18px 0 0; padding: 0; columns: 2; column-gap: 24px; font-size: .95rem; }
.area-list li { padding: 4px 0; break-inside: avoid; }
@media (min-width: 640px) { .area-list { columns: 3; } }
@media (min-width: 900px) { .about-grid { grid-template-columns: 7fr 5fr; gap: clamp(40px, 6vw, 96px); } .about-photo { position: sticky; top: 110px; } }

/* privacy policy and website terms */
.prose { width: min(760px, 100% - 2 * var(--gutter)); margin-inline: auto; padding-bottom: var(--space); }
.prose h2 { font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.2rem); margin-top: clamp(40px, 5vw, 60px); scroll-margin-top: 110px; }
.prose h3 { font-size: clamp(1.25rem, 1.1rem + .6vw, 1.5rem); margin-top: 28px; }
.prose p, .prose li { margin-top: 12px; }
.prose ul { padding-left: 1.2em; margin: 0; }
.prose a { color: var(--plum); }
.prose .updated { color: var(--soft); font-size: .95rem; }
.prose table { width: 100%; border-collapse: collapse; margin-top: 18px; font-size: .94rem; }
.prose th, .prose td { text-align: left; vertical-align: top; padding: 10px 12px 10px 0; border-bottom: 1px solid var(--hair); }
.prose th { font-weight: 600; color: var(--soft); font-size: .86rem; }
.prose .ph { margin-top: 12px; }
.table-scroll { overflow-x: auto; }

.yourway-head .lede + .lede { margin-top: 14px; }
.letter .more { margin-top: 22px; }

/* venue pages */
.venue-hero { margin-bottom: clamp(8px, 2vw, 20px); }
.venue-hero img { width: 100%; height: auto; box-shadow: var(--lift); }
.venue-hero figcaption { margin-top: 12px; max-width: 80ch; font-size: .9rem; color: var(--soft); }
.venue-text { padding-bottom: 0; }
.venue-shots { width: min(1100px, 100% - 2 * var(--gutter)); margin: clamp(24px, 3vw, 36px) auto 0; columns: 1; column-gap: clamp(12px, 2vw, 22px); }
.venue-shots .print { break-inside: avoid; margin-bottom: clamp(12px, 2vw, 22px); }
.venue-shots .print img { aspect-ratio: auto; height: auto; }
@media (min-width: 640px) { .venue-shots { columns: 2; } }
@media (min-width: 1000px) { .venue-shots { columns: 3; } }
.venue-review { margin-top: 28px; }
.venue-review .place { margin: 0; }
.venue-more { padding-top: var(--space); }
.venue-more .prints { margin-top: 24px; }
.venue-cards { display: grid; gap: var(--gap); padding-bottom: var(--space); }
.venue-cards .venues-block { grid-column: 1 / -1; margin-top: clamp(16px, 3vw, 32px); }
@media (min-width: 760px) { .venue-cards { grid-template-columns: repeat(2, 1fr); } }
.venues a { color: inherit; text-decoration-color: var(--plum); text-underline-offset: 3px; }
.venue-card { display: block; color: inherit; text-decoration: none; }
.venue-card img { width: 100%; height: auto; }
.venue-card div { padding: 20px 24px 24px; }
.venue-card h2 { font-size: clamp(1.5rem, 1.3rem + .8vw, 2rem); }
.venue-card p + p { margin-top: 12px; }
