/* Page styles: contact (design system v2). Loaded on every page after main.css;
   scope rules to this group's templates (body classes / component classes).

   Covers: the light enquiry form (site-wide component), Contact &
   Reservations, Thank you, the blog listing and single post, long-form pages
   (page.php: Privacy Policy, Terms) and the 404 page. Every rule is scoped to
   a body class or to a component that only these templates output. */

/* ==========================================================
   Enquiry form (light)
   Site-wide: the contact page and the enquiry card on event pages.
   The dark BBC form (.enquiry-form--dark) is styled in bbc.css.
   ========================================================== */
.enquiry-form:not(.enquiry-form--dark) {
	--f-line: rgb(26 33 27 / .55); /* field underline: 3.5:1+ on ivory, sand and white (WCAG 1.4.11) */
	--f-error: #a3261d;            /* 6.7:1 on ivory */
	gap: 26px;
}
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__title { font-size: clamp(1.625rem, 2.4vw, 2rem); line-height: 1.15; margin: 0; }
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__intro { margin: -12px 0 6px; max-width: 56ch; color: var(--muted); }
/* Each field is label / control / messages on three shared rows (subgrid), so
   paired half-width fields line up even when one label wraps or has help text. */
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__grid { --f-row: 30px; gap: 0 36px; }
.enquiry-form:not(.enquiry-form--dark) .field { gap: 0; }
.enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent) { display: grid; grid-row: span 3; grid-template-rows: subgrid; align-content: start; }
.enquiry-form:not(.enquiry-form--dark) .field__msgs { padding-bottom: var(--f-row); }
/* Other forms (the dark BBC form): the wrapper is transparent, as before it existed. */
.enquiry-form--dark .field__msgs { display: contents; }
.enquiry-form:not(.enquiry-form--dark) .field__label {
	align-self: end; margin-bottom: 2px;
	font-size: .6875rem; font-weight: 500; line-height: 1.5; letter-spacing: .2em; text-transform: uppercase;
	color: var(--green-900); transition: color .3s var(--ease);
}
.enquiry-form:not(.enquiry-form--dark) .field:focus-within .field__label { color: var(--gold-600); }
.enquiry-form:not(.enquiry-form--dark) .field__req { color: var(--gold-600); }

.enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select, textarea) {
	min-height: 48px; padding: 10px 0;
	font: 400 1.0625rem/1.5 var(--font-sans); color: var(--ink);
	background-color: transparent; border: 0; border-bottom: 1px solid var(--f-line); border-radius: 0; box-shadow: none;
	transition: border-color .3s var(--ease), box-shadow .3s var(--ease), background-color .3s var(--ease);
}
.enquiry-form:not(.enquiry-form--dark) .field select {
	-webkit-appearance: none; appearance: none; padding-right: 30px; cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2313261a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 2px center; background-size: 16px;
}
.enquiry-form:not(.enquiry-form--dark) .field.field--textarea textarea { min-height: 120px; padding-top: 12px; line-height: 1.6; resize: vertical; }
.enquiry-form:not(.enquiry-form--dark) .field ::placeholder { color: var(--muted); opacity: 1; }
.enquiry-form:not(.enquiry-form--dark) .field ::-webkit-calendar-picker-indicator { opacity: .75; cursor: pointer; }

/* Focus: the underline doubles and turns forest green, and the label turns gold. */
.enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select, textarea):focus {
	outline: none; border-bottom-color: var(--green-900); box-shadow: 0 1px 0 var(--green-900);
}
/* Errors: red underline + message (colour is never the only cue). */
.enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select, textarea)[aria-invalid="true"] { border-bottom-color: var(--f-error); box-shadow: 0 1px 0 var(--f-error); }
.enquiry-form:not(.enquiry-form--dark) .consent input[aria-invalid="true"] { outline: 2px solid var(--f-error); outline-offset: 2px; }
.enquiry-form:not(.enquiry-form--dark) .field__error {
	display: flex; align-items: center; gap: 8px; margin: 8px 0 0;
	font-size: .8125rem; font-weight: 500; line-height: 1.45; color: var(--f-error);
}
.enquiry-form:not(.enquiry-form--dark) .field__error::before { content: ""; flex: none; width: 12px; height: 1px; background: currentColor; }
.enquiry-form:not(.enquiry-form--dark) .field__error[hidden] { display: none; }
.enquiry-form:not(.enquiry-form--dark) .field__help { margin: 8px 0 0; font-size: .8125rem; line-height: 1.5; color: var(--muted); }

.enquiry-form:not(.enquiry-form--dark) .enquiry-form__alert {
	padding: 16px 20px; font-size: .9375rem; line-height: 1.6; color: #7a1d14;
	background: rgb(163 38 29 / .06); border: 0; border-left: 2px solid var(--f-error); border-radius: 0;
}
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__alert a { color: inherit; font-weight: 500; text-decoration: underline; }

.enquiry-form:not(.enquiry-form--dark) .field--consent { padding-top: 26px; border-top: 1px solid var(--cream-200); }
.enquiry-form:not(.enquiry-form--dark) .consent { gap: 14px; font-size: .875rem; line-height: 1.65; color: var(--muted); }
.enquiry-form:not(.enquiry-form--dark) .consent input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--green-900); cursor: pointer; }
.enquiry-form:not(.enquiry-form--dark) .consent a { color: var(--green-900); text-decoration-color: var(--gold-600); }
.enquiry-form:not(.enquiry-form--dark) .consent a:hover { color: var(--gold-600); }

.enquiry-form:not(.enquiry-form--dark) .enquiry-form__submit { padding-block: 20px; }
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__submit::after {
	content: ""; flex: none; width: 16px; height: 16px; background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform .35s var(--ease);
}
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__submit:hover::after { transform: translateX(3px); }
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__submit:disabled::after { display: none; }
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__note { gap: 8px; margin: -8px 0 0; font-size: .8125rem; color: var(--muted); }
.enquiry-form:not(.enquiry-form--dark) .enquiry-form__note .icon { color: var(--gold-600); }
@media (max-width: 560px) {
	.enquiry-form:not(.enquiry-form--dark) .enquiry-form__grid { --f-row: 26px; }
}

/* ==========================================================
   Contact & Reservations
   ========================================================== */
.ct-main__grid {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	grid-template-areas: "head forms" "ways forms" "hours forms";
	grid-template-rows: auto auto 1fr;
	column-gap: clamp(48px, 7vw, 112px);
	align-items: start;
}
.ct-main__head { grid-area: head; }
.ct-main__head .section__title { margin-bottom: clamp(28px, 3vw, 44px); }
.ct-forms { grid-area: forms; min-width: 0; }
.ct-hours { grid-area: hours; margin-top: clamp(48px, 5vw, 72px); }

/* Ways to reach us: a hairline directory. */
.ct-ways { grid-area: ways; list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--cream-200); }
.ct-ways li { border-bottom: 1px solid var(--cream-200); }
.ct-way { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 20px; padding: 22px 0; color: inherit; text-decoration: none; }
.ct-way:hover { color: inherit; }
.ct-way__icon { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--cream-200); border-radius: 50%; color: var(--gold-600); transition: border-color .4s var(--ease); }
.ct-way__icon .icon { width: 17px; height: 17px; }
.ct-way:hover .ct-way__icon { border-color: var(--gold-600); }
.ct-way__body { display: flex; flex-direction: column; min-width: 0; }
.ct-way__label { font-size: .6875rem; font-weight: 500; line-height: 1.6; letter-spacing: .22em; text-transform: uppercase; color: var(--gold-600); }
.ct-way__value { margin-top: 2px; font-family: var(--font-serif); font-size: clamp(1.25rem, 1.8vw, 1.5rem); line-height: 1.25; color: var(--green-900); overflow-wrap: break-word; }
.ct-way__value--email { font-size: clamp(1.125rem, 1.5vw, 1.3125rem); }
.ct-way__note { margin-top: 4px; font-size: .875rem; line-height: 1.5; color: var(--muted); }
.ct-way__arrow .icon { width: 18px; height: 18px; color: var(--green-900); transition: transform .4s var(--ease); }
.ct-way:hover .ct-way__arrow .icon { transform: translateX(4px); }

/* Opening hours */
.ct-hours__title {
	display: flex; align-items: center; gap: 16px; margin: 0 0 16px;
	font-family: var(--font-sans); font-size: .6875rem; font-weight: 500; letter-spacing: .32em; text-transform: uppercase; color: var(--gold-600);
}
.ct-hours__title::before { content: ""; flex: none; width: 36px; height: 1px; background: var(--gold-600); }
.ct-hours__list { margin: 0; border-top: 1px solid var(--cream-200); }
.ct-hours__list div { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; padding: 15px 0; border-bottom: 1px solid var(--cream-200); }
.ct-hours__list dt { flex: none; font-size: .9375rem; color: var(--muted); white-space: nowrap; }
.ct-hours__list dd { margin: 0; font-family: var(--font-serif); font-size: 1.0625rem; line-height: 1.4; text-align: right; color: var(--green-900); }

/* Tabs: uppercase labels on a hairline, gold underline on the open one.
   (Shown only with JavaScript; without it every form is listed in turn.) */
.page-contact .enquiry-tabs { gap: 0; padding: 0; margin: 0 0 clamp(36px, 4vw, 52px); background: none; border-radius: 0; border-bottom: 1px solid var(--cream-200); }
.page-contact .enquiry-tabs__tab {
	position: relative; flex: 0 0 auto; gap: 10px; min-height: 56px; padding: 16px 0; margin-right: clamp(24px, 3.2vw, 48px);
	font: 500 .75rem/1.3 var(--font-sans); letter-spacing: .18em; text-transform: uppercase; color: var(--muted);
	background: none; border-radius: 0; transition: color .3s var(--ease);
}
.page-contact .enquiry-tabs__tab:last-child { margin-right: 0; }
.page-contact .enquiry-tabs__tab::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--gold-600);
	transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease);
}
.page-contact .enquiry-tabs__tab .icon { width: 17px; height: 17px; color: var(--gold-600); }
.page-contact .enquiry-tabs__tab:hover { color: var(--green-900); }
.page-contact .enquiry-tabs__tab[aria-selected="true"] { color: var(--green-900); background: none; }
.page-contact .enquiry-tabs__tab[aria-selected="true"]::after { transform: none; }
.page-contact .enquiry-tabs__tab:focus-visible { outline-offset: -2px; }
.page-contact .enquiry-panel + .enquiry-panel { margin-top: 72px; padding-top: 64px; border-top: 1px solid var(--cream-200); }
.js .page-contact .enquiry-panel + .enquiry-panel { margin-top: 0; padding-top: 0; border-top: 0; }
.js .page-contact .enquiry-panel.is-active { animation: ct-panel-in .6s var(--ease) both; }
@keyframes ct-panel-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* The contact page's forms: submit button and note side by side. */
@media (min-width: 700px) {
	.page-contact .enquiry-form { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 28px; align-items: center; }
	.page-contact .enquiry-form > * { grid-column: 1 / -1; }
	.page-contact .enquiry-form > .enquiry-form__submit { grid-column: 1; width: auto; padding-inline: 40px; }
	.page-contact .enquiry-form > .enquiry-form__note { grid-column: 2; margin: 0; justify-content: flex-start; }
}

/* BBC and site-visit photo panels */
.ct-more { padding-top: 0; }
.ct-more__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 14px; }
.ct-panel {
	position: relative; isolation: isolate; display: flex; flex-direction: column; justify-content: flex-end;
	min-height: clamp(440px, 42vw, 580px); padding: clamp(28px, 3.6vw, 56px); overflow: hidden;
	color: rgb(255 255 255 / .84); background: var(--green-950);
}
.ct-panel__img { position: absolute; inset: 0; z-index: -2; }
.ct-panel__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.6s var(--ease); }
.ct-panel:hover .ct-panel__img img { transform: scale(1.04); }
.ct-panel::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgb(8 18 11 / .9) 0%, rgb(8 18 11 / .5) 48%, rgb(8 18 11 / .12) 100%); }
.ct-panel--bbc { background: #110d0a; }
.ct-panel--bbc::after { background: linear-gradient(0deg, rgb(17 13 10 / .95) 0%, rgb(17 13 10 / .72) 55%, rgb(17 13 10 / .3) 100%); }
.ct-panel__kicker { margin: 0 0 12px; font-size: .6875rem; font-weight: 500; letter-spacing: .3em; text-transform: uppercase; color: var(--gold-400); }
.ct-panel--bbc .ct-panel__kicker { color: #e0a94a; }
.ct-panel__title { margin: 0 0 16px; font-size: clamp(2rem, 3.4vw, 3rem); line-height: 1.06; color: var(--white); }
.ct-panel__title em { color: var(--gold-400); }
.ct-panel--bbc .ct-panel__title { font-family: "Oswald", var(--font-sans); font-weight: 500; letter-spacing: .02em; text-transform: uppercase; line-height: 1; }
.ct-panel__text { max-width: 40ch; margin: 0 0 28px; font-size: 1.0625rem; }
.ct-panel__links { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 32px; margin: 0; }
.ct-panel__phone { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; font-family: var(--font-serif); font-size: 1.25rem; color: var(--white); text-decoration: none; }
.ct-panel__phone:hover { color: #e0a94a; }
.ct-panel__phone .icon { width: 18px; height: 18px; color: #e0a94a; }
.ct-panel__link {
	display: inline-flex; align-items: center; gap: 10px; min-height: 44px;
	font-size: .75rem; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; text-decoration: none; color: #e0a94a;
	background: linear-gradient(currentColor, currentColor) left calc(100% - 8px) / 100% 1px no-repeat; transition: background-size .4s var(--ease);
}
.ct-panel__link:hover { color: #e0a94a; background-size: 40% 1px; }
.ct-panel__link .icon { width: 16px; height: 16px; transition: transform .35s var(--ease); }
.ct-panel__link:hover .icon { transform: translateX(4px); }
.ct-more .photo-note { margin-top: 14px; }

/* Map */
.ct-map__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 7vw, 112px); align-items: center; }
.ct-map__address {
	margin: 0 0 22px; padding-bottom: 24px; border-bottom: 1px solid var(--cream-200);
	font-family: var(--font-serif); font-style: normal; font-size: clamp(1.25rem, 1.8vw, 1.5rem); line-height: 1.45; color: var(--green-900);
}
.ct-map__text { max-width: 44ch; color: var(--muted); }
.ct-map__ctas { margin: 32px 0 0; }
.ct-map__legal { margin: 36px 0 0; font-size: .6875rem; font-weight: 500; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.ct-map__frame { aspect-ratio: 4 / 3; overflow: hidden; background: var(--green-100); }
.ct-map__frame iframe { display: block; width: 100%; height: 100%; border: 0; filter: grayscale(.35) sepia(.08); transition: filter .6s var(--ease); }
.ct-map__frame:hover iframe, .ct-map__frame:focus-within iframe { filter: none; }

/* FAQs: title beside the questions on wide screens. */
.page-contact .faqs .section__title::before { content: ""; display: block; width: 36px; height: 1px; margin: 0 auto 28px; background: var(--gold-600); }
@media (min-width: 961px) {
	.page-contact .faqs .container { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(48px, 7vw, 112px); align-items: start; max-width: var(--container); }
	.page-contact .faqs .section__title { position: sticky; top: calc(var(--header-h) + 40px); text-align: left; }
	.page-contact .faqs .section__title::before { margin-left: 0; }
}

@media (max-width: 960px) {
	.ct-main__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "ways" "forms" "hours"; grid-template-rows: auto; }
	.ct-forms { margin-top: clamp(64px, 10vw, 88px); }
	.ct-more__grid, .ct-map__grid { grid-template-columns: minmax(0, 1fr); }
	.ct-panel { min-height: clamp(400px, 70vw, 520px); }
}
@media (max-width: 560px) {
	.ct-way { grid-template-columns: 40px minmax(0, 1fr) auto; gap: 16px; padding: 18px 0; }
	.ct-way__icon { width: 40px; height: 40px; }
	.page-contact .enquiry-tabs__tab {
		flex: 1 1 0; min-width: 0; margin: 0; flex-direction: column; gap: 8px; padding: 14px 4px 16px;
		font-size: .6875rem; letter-spacing: .1em; line-height: 1.35; text-align: center; white-space: normal;
	}
	.ct-panel { min-height: 420px; padding: 28px 24px; }
	.ct-map__frame { aspect-ratio: 1 / 1; }
}

/* ==========================================================
   Thank you
   ========================================================== */
.page-thank-you .page-hero { min-height: min(62vh, 560px); }
.ty__grid {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	grid-template-areas: "head steps" "cta steps";
	grid-template-rows: auto 1fr;
	column-gap: clamp(48px, 7vw, 112px);
	align-items: start;
}
.ty__head { grid-area: head; }
.ty__head .section__title { margin-bottom: 0; font-size: clamp(2.125rem, 3.8vw, 3.25rem); }
.ty-ref { display: flex; flex-direction: column; gap: 8px; margin: 0 0 clamp(40px, 5vw, 64px); padding: 26px 0 28px; border-block: 1px solid var(--cream-200); }
.ty-ref__label { font-size: .6875rem; font-weight: 500; letter-spacing: .3em; text-transform: uppercase; color: var(--gold-600); }
.ty-ref__code { font-family: var(--font-serif); font-weight: 400; font-size: clamp(2.125rem, 4vw, 3rem); line-height: 1.05; letter-spacing: .04em; color: var(--green-900); }
.ty-steps { grid-area: steps; list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--cream-200); }
.ty-step { display: grid; grid-template-columns: 80px minmax(0, 1fr); gap: 24px; padding: clamp(28px, 3vw, 40px) 0; border-bottom: 1px solid var(--cream-200); }
.ty-step__num { font-family: var(--font-serif); font-style: italic; font-size: clamp(1.75rem, 2.6vw, 2.25rem); line-height: 1; color: var(--gold-600); }
.ty-step__title { margin: 0 0 8px; font-size: clamp(1.375rem, 2vw, 1.75rem); }
.ty-step__text { max-width: 52ch; margin: 0; color: var(--muted); }
.ty__cta { grid-area: cta; margin-top: clamp(40px, 5vw, 56px); }
.ty__cta-title { margin: 0 0 20px; font-family: var(--font-serif); font-size: 1.375rem; color: var(--green-900); }
.ty__cta-btns { display: grid; gap: 12px; max-width: 360px; margin: 0 0 36px; }
.ty__back { margin: 0; }
@media (max-width: 900px) {
	.ty__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "steps" "cta"; grid-template-rows: auto; }
	.ty__head { margin-bottom: 36px; }
	.ty-step { grid-template-columns: 56px minmax(0, 1fr); gap: 16px; }
}
@media (max-width: 900px) {
	.ty__cta-btns { max-width: none; }
}

/* ==========================================================
   Blog listing
   ========================================================== */
.blog .page-hero, .archive:not(.post-type-archive) .page-hero { min-height: min(62vh, 560px); }
.jn-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; margin: 0 0 16px; font-size: .6875rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: var(--gold-600); }
.jn-meta__sep { opacity: .6; }
.jn-feature__title a, .jn-card__title a {
	color: inherit; text-decoration: none;
	background: linear-gradient(currentColor, currentColor) left 96% / 0 1px no-repeat; transition: background-size .5s var(--ease);
}
.jn-feature__title a:hover, .jn-card__title a:hover { color: inherit; background-size: 100% 1px; }

.jn-feature { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 88px); align-items: center; }
.jn-feature--text { grid-template-columns: minmax(0, 1fr); max-width: 760px; }
.jn-feature__media { display: block; aspect-ratio: 4 / 3; background: var(--green-100); }
.jn-feature__media img { width: 100%; height: 100%; object-fit: cover; }
.jn-feature__title { margin: 0 0 20px; font-size: clamp(2rem, 3.6vw, 3rem); line-height: 1.1; }
.jn-feature__text { margin: 0 0 28px; font-size: 1.125rem; color: var(--muted); }

.jn-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 64px clamp(24px, 3vw, 40px); }
.jn-feature + .jn-grid { margin-top: clamp(72px, 8vw, 120px); padding-top: clamp(56px, 6vw, 88px); border-top: 1px solid var(--cream-200); }
.jn-card__media { display: block; aspect-ratio: 4 / 3; margin-bottom: 22px; background: var(--green-100); }
.jn-card__media img { width: 100%; height: 100%; object-fit: cover; }
.jn-card__title { margin: 0 0 10px; font-size: clamp(1.375rem, 2vw, 1.625rem); line-height: 1.2; }
.jn-card__text { margin: 0; font-size: .9375rem; color: var(--muted); }

.jn .pagination { margin-top: clamp(56px, 6vw, 88px); padding-top: 32px; border-top: 1px solid var(--cream-200); }
.jn .nav-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.jn .page-numbers {
	display: inline-grid; place-items: center; min-width: 44px; height: 44px; padding: 0 10px;
	font-family: var(--font-serif); font-size: 1.125rem; color: var(--green-900); text-decoration: none;
	border-bottom: 1px solid transparent; transition: color .3s, border-color .3s;
}
.jn .page-numbers.current { border-bottom-color: var(--gold-600); }
.jn a.page-numbers:hover { color: var(--gold-600); }
.jn .page-numbers .icon { width: 18px; height: 18px; }

/* No articles yet */
.jn-empty__head { max-width: 760px; margin: 0 auto clamp(48px, 6vw, 88px); }
.jn-empty__head .lead { margin: 0; }
.jn-empty__tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2.2vw, 32px); list-style: none; margin: 0; padding: 0; }
.jn-tile { display: flex; flex-direction: column; color: inherit; text-decoration: none; }
.jn-tile:hover { color: inherit; }
.jn-tile__media { display: block; aspect-ratio: 4 / 5; margin-bottom: 22px; background: var(--green-100); }
.jn-tile__media img { width: 100%; height: 100%; object-fit: cover; }
.jn-tile__kicker { font-size: .6875rem; font-weight: 500; letter-spacing: .28em; text-transform: uppercase; color: var(--gold-600); }
.jn-tile__title { display: flex; align-items: center; gap: 14px; margin-top: 6px; font-family: var(--font-serif); font-size: clamp(1.375rem, 2vw, 1.75rem); line-height: 1.2; color: var(--green-900); }
.jn-tile__title .icon { width: 18px; height: 18px; transition: transform .4s var(--ease); }
.jn-tile:hover .jn-tile__title .icon { transform: translateX(4px); }
.jn-empty .photo-note { margin-top: 24px; }

@media (max-width: 1000px) { .jn-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 900px) { .jn-feature { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 700px) {
	.jn-grid { grid-template-columns: minmax(0, 1fr); gap: 56px; }
	.jn-empty__tiles { grid-template-columns: minmax(0, 1fr); gap: 44px; }
	.jn-tile__media { aspect-ratio: 16 / 11; }
}

/* ==========================================================
   Long-form reading: blog posts and page.php (Privacy, Terms)
   ========================================================== */
:is(.article__body, .longform__body).prose { font-size: 1.125rem; line-height: 1.8; color: var(--ink); }
:is(.article__body, .longform__body) > * + * { margin-top: 1.2em; }
:is(.article__body, .longform__body) > :first-child { margin-top: 0; }
:is(.article__body, .longform__body) p { margin-bottom: 0; }
:is(.article__body, .longform__body) h2 { margin: 2.4em 0 .7em; font-size: clamp(1.75rem, 2.8vw, 2.375rem); line-height: 1.15; }
:is(.article__body, .longform__body) h3 { margin: 1.9em 0 .5em; font-size: clamp(1.3125rem, 2vw, 1.5rem); line-height: 1.25; }
:is(.article__body, .longform__body) :is(h2, h3) + * { margin-top: 0; }
:is(.article__body, .longform__body) a { color: var(--green-900); text-decoration-color: var(--gold-600); text-underline-offset: 4px; }
:is(.article__body, .longform__body) a:hover { color: var(--gold-600); }
:is(.article__body, .longform__body) strong { font-weight: 500; color: var(--green-900); }
:is(.article__body, .longform__body) ul { list-style: none; padding-left: 0; }
:is(.article__body, .longform__body) ul li { position: relative; padding-left: 1.9em; }
:is(.article__body, .longform__body) ul li::before { content: ""; position: absolute; left: 0; top: .9em; width: .95em; height: 1px; background: var(--gold-600); }
:is(.article__body, .longform__body) ol { padding-left: 1.4em; }
:is(.article__body, .longform__body) ol li::marker { font-family: var(--font-serif); font-style: italic; color: var(--gold-600); }
:is(.article__body, .longform__body) li + li { margin-top: .55em; }
:is(.article__body, .longform__body) blockquote {
	margin: 2em 0; padding: 4px 0 4px 28px; border-left: 1px solid var(--gold-600);
	font-family: var(--font-serif); font-style: italic; font-size: clamp(1.25rem, 2vw, 1.5rem); line-height: 1.55; color: var(--green-900);
}
:is(.article__body, .longform__body) blockquote p { margin: 0; }
:is(.article__body, .longform__body) blockquote cite { display: block; margin-top: 12px; font-family: var(--font-sans); font-style: normal; font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
:is(.article__body, .longform__body) :is(figure, .wp-block-image) { margin-block: 2.2em; }
:is(.article__body, .longform__body) figcaption { margin-top: 10px; font-size: .8125rem; color: var(--muted); }
:is(.article__body, .longform__body) hr { height: 1px; margin: 3em 0; background: var(--cream-200); border: 0; }
:is(.article__body, .longform__body) .wp-block-table { overflow-x: auto; }
:is(.article__body, .longform__body) table { width: 100%; border-collapse: collapse; font-size: .9375rem; }
:is(.article__body, .longform__body) :is(th, td) { padding: 12px 16px 12px 0; text-align: left; vertical-align: top; border-bottom: 1px solid var(--cream-200); }
:is(.article__body, .longform__body) th { font-size: .75rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }

/* Blog post */
.single-post .page-hero__title { max-width: 22ch; font-size: clamp(2.375rem, 4.8vw, 4.25rem); }
.article__grid {
	display: grid;
	grid-template-columns: minmax(180px, 240px) minmax(0, 720px);
	grid-template-areas: "meta body" ". foot";
	justify-content: center; column-gap: clamp(48px, 8vw, 128px); align-items: start;
}
.article__meta { grid-area: meta; position: sticky; top: calc(var(--header-h) + 40px); }
.article__body { grid-area: body; min-width: 0; }
.article__body h2::before { content: ""; display: block; width: 36px; height: 1px; margin-bottom: 24px; background: var(--gold-600); }
.article__body > p:first-of-type::first-letter { float: left; margin: .1em .12em 0 0; font-family: var(--font-serif); font-size: 4.1em; line-height: .8; color: var(--gold-600); }
.article__facts { margin: 0 0 32px; border-top: 1px solid var(--cream-200); }
.article__facts div { padding: 16px 0; border-bottom: 1px solid var(--cream-200); }
.article__facts dt { font-size: .6875rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: var(--gold-600); }
.article__facts dd { margin: 4px 0 0; font-family: var(--font-serif); font-size: 1.0625rem; line-height: 1.4; color: var(--green-900); }
.article__foot { grid-area: foot; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 32px; margin-top: 72px; padding-top: 32px; border-top: 1px solid var(--cream-200); }
.article__foot .photo-note { margin: 0; }
@media (max-width: 900px) {
	.article__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "meta" "body" "foot"; }
	.article__meta { position: static; margin-bottom: 44px; }
	.article__facts { display: flex; flex-wrap: wrap; gap: 0 32px; margin: 0; border-bottom: 1px solid var(--cream-200); }
	.article__facts div { padding: 14px 0; border: 0; }
	.article__back { display: none; }
}

/* page.php: Privacy Policy, Terms & Cancellation */
body:has(.longform) .page-hero { min-height: min(58vh, 520px); }
.longform__grid {
	display: grid; grid-template-columns: minmax(200px, 280px) minmax(0, 720px);
	justify-content: center; column-gap: clamp(48px, 8vw, 128px); align-items: start;
}
.longform__grid--solo { grid-template-columns: minmax(0, 720px); }
.longform__grid--solo .longform__aside { position: static; margin-bottom: 40px; }
.longform__aside { position: sticky; top: calc(var(--header-h) + 40px); }
.longform__updated { margin: 0 0 36px; padding-bottom: 18px; border-bottom: 1px solid var(--cream-200); font-size: .75rem; font-weight: 500; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.longform__toc-title {
	display: flex; align-items: center; gap: 16px; margin: 0 0 16px;
	font-size: .6875rem; font-weight: 500; letter-spacing: .32em; text-transform: uppercase; color: var(--gold-600);
}
.longform__toc-title::before { content: ""; flex: none; width: 36px; height: 1px; background: var(--gold-600); }
.longform__toc ol { list-style: none; margin: 0; padding: 0; counter-reset: toc; border-top: 1px solid var(--cream-200); }
.longform__toc li { counter-increment: toc; border-bottom: 1px solid var(--cream-200); break-inside: avoid; }
.longform__toc a { display: flex; align-items: baseline; gap: 14px; min-height: 44px; padding: 11px 0; font-size: .9375rem; line-height: 1.45; color: var(--ink); text-decoration: none; transition: color .3s var(--ease); }
.longform__toc a::before { content: counter(toc, decimal-leading-zero); flex: none; min-width: 1.6em; font-family: var(--font-serif); font-style: italic; color: var(--gold-600); }
.longform__toc a:hover { color: var(--gold-600); }
/* Numbered sections, matching the list. */
.longform__grid:not(.longform__grid--solo) .longform__body { counter-reset: sec; }
.longform__grid:not(.longform__grid--solo) .longform__body h2 { counter-increment: sec; }
.longform__grid:not(.longform__grid--solo) .longform__body h2::before { content: counter(sec, decimal-leading-zero); display: block; margin-bottom: 12px; font-size: 1.0625rem; font-style: italic; letter-spacing: 0; color: var(--gold-600); }
.longform__body > p:first-child { font-size: clamp(1.1875rem, 1.6vw, 1.3125rem); line-height: 1.7; color: var(--muted); }
@media (max-width: 960px) {
	.longform__grid { grid-template-columns: minmax(0, 1fr); }
	.longform__aside { position: static; margin-bottom: 56px; }
}
@media (min-width: 600px) and (max-width: 960px) {
	.longform__toc ol { columns: 2; column-gap: 32px; border-top: 0; }
	.longform__toc li:first-child { border-top: 1px solid var(--cream-200); }
}

/* ==========================================================
   404
   ========================================================== */
.error404 .page-hero { min-height: min(66vh, 600px); }
.nf__grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(48px, 8vw, 128px); align-items: start; }
.nf__copy .section__title { max-width: 14ch; }
.nf__ctas { display: flex; flex-wrap: wrap; gap: 12px; margin: 40px 0 0; }
.nf__nav-title {
	display: flex; align-items: center; gap: 16px; margin: 0 0 16px;
	font-size: .6875rem; font-weight: 500; letter-spacing: .32em; text-transform: uppercase; color: var(--gold-600);
}
.nf__nav-title::before { content: ""; flex: none; width: 36px; height: 1px; background: var(--gold-600); }
.nf__links { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--cream-200); }
.nf__links a {
	display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; padding: 14px 0;
	font-family: var(--font-serif); font-size: clamp(1.1875rem, 1.8vw, 1.4375rem); line-height: 1.3; color: var(--green-900);
	text-decoration: none; border-bottom: 1px solid var(--cream-200); transition: color .3s var(--ease);
}
.nf__links a:hover { color: var(--gold-600); }
.nf__links .icon { width: 18px; height: 18px; color: var(--gold-600); transition: transform .4s var(--ease); }
.nf__links a:hover .icon { transform: translateX(4px); }
@media (max-width: 900px) { .nf__grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 480px) { .nf__ctas .btn { width: 100%; } }

/* ==========================================================
   Reduced motion: no panel fade, no hover movement.
   ========================================================== */
@media (prefers-reduced-motion: reduce) {
	.js .page-contact .enquiry-panel.is-active { animation: none; }
	.ct-panel:hover .ct-panel__img img,
	.ct-way:hover .ct-way__arrow .icon,
	.ct-panel__link:hover .icon,
	.jn-tile:hover .jn-tile__title .icon,
	.nf__links a:hover .icon,
	.enquiry-form:not(.enquiry-form--dark) .enquiry-form__submit:hover::after { transform: none; }
}

/* ==========================================================
   Contact forms as a premium panel (same language as the room booking card,
   in light): white cells framed by gold hairlines, gold small-caps labels,
   serif values, gold icons, a tinted cell and gold underline on focus.
   ========================================================== */
.page-contact .enquiry-form:not(.enquiry-form--dark) .enquiry-form__grid { gap: 0; margin-top: 4px; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent) {
	position: relative; display: grid; grid-row: span 3; grid-template-rows: subgrid; align-content: start; row-gap: 2px; /* label, control and message rows line up across paired cells */
	padding: 14px 18px 10px; background: var(--white);
	box-shadow: 0 0 0 1px rgb(138 98 21 / .28); /* adjacent cells share one hairline */
	transition: background-color .3s var(--ease);
}
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent)::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--gold-grad);
	transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease);
}
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent):hover { background: #fffdf8; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent):focus-within { z-index: 1; background: #fdf8ec; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent):focus-within::after { transform: scaleX(1); }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:has(:focus-visible) { box-shadow: 0 0 0 1px var(--gold-600), inset 0 0 0 1px var(--gold-600); }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field__label { align-self: end; margin: 0; font-size: .65rem; font-weight: 600; letter-spacing: .24em; color: var(--gold-600); }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:focus-within .field__label { color: var(--green-900); }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select, textarea) {
	min-height: 36px; padding: 4px 0 2px;
	font: 400 1.125rem/1.35 var(--font-serif); color: var(--green-900);
	background-color: transparent; border: 0; border-radius: 0; box-shadow: none; outline: none;
}
.page-contact .enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select, textarea):focus { border: 0; box-shadow: none; outline: none; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field select {
	padding-right: 24px; cursor: pointer;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a6215' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right center / 16px;
}
.page-contact .enquiry-form:not(.enquiry-form--dark) .field select option { font-family: var(--font-sans); }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field.field--textarea textarea { min-height: 96px; padding-top: 6px; font-size: 1.0625rem; line-height: 1.6; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field ::placeholder { font-style: italic; color: #8b8f86; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field ::-webkit-calendar-picker-indicator { cursor: pointer; opacity: .9; filter: invert(38%) sepia(62%) saturate(720%) hue-rotate(15deg) brightness(88%); }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field__msgs { padding: 0; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field__help { margin: 6px 0 2px; font-size: .75rem; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field__error { margin: 6px 0 2px; }
/* Errors: the cell tints red with a red underline; the message stays in the cell. */
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:has([aria-invalid="true"]) { background: #fdf3f1; }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field:has([aria-invalid="true"])::after { transform: scaleX(1); background: var(--f-error, #a3261d); }
.page-contact .enquiry-form:not(.enquiry-form--dark) .field :is(input, select, textarea)[aria-invalid="true"] { box-shadow: none; }
/* Consent sits under the panel, not as a cell. */
.page-contact .enquiry-form:not(.enquiry-form--dark) .field--consent { margin-top: 22px; padding-top: 0; border-top: 0; }
@media (max-width: 560px) {
	.page-contact .enquiry-form:not(.enquiry-form--dark) .field:not(.field--consent) { padding: 12px 14px 8px; }
	.page-contact .enquiry-form:not(.enquiry-form--dark) .field :is(input:not([type="checkbox"]), select) { font-size: 1rem; }
}
/* Phones: paired cells (name | phone, dates, guests) keep the form short. */
@media (max-width: 560px) {
	.page-contact .enquiry-form:not(.enquiry-form--dark) .enquiry-form__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.page-contact .enquiry-form:not(.enquiry-form--dark) .field { grid-column: 1 / -1; }
	.page-contact .enquiry-form:not(.enquiry-form--dark) .field.field--half { grid-column: span 1; }
}
