/*
 * Gather Coastal Social — global stylesheet.
 *
 * Design tokens are NOT redefined here. theme.json is the single source of
 * truth and exposes them as --wp--preset--* custom properties. The few custom
 * properties declared below are layout measurements, not tokens.
 *
 * Sections:
 *   1. Base
 *   2. Typography
 *   3. Layout
 *   4. Buttons & links
 *   5. Header
 *   6. Navigation (desktop)
 *   7. Navigation (compact / drawer)
 *   8. Announcement
 *   9. Mobile action bar
 *  10. Footer
 *  11. Responsive
 *  12. Accessibility
 *  13. Homepage (Phase 2C): sections, hero, editorial grid, promotion card,
 *      private events, gift cards, instagram strip, visit block, closing band
 *  14. Food & Drink Menus (Phase 2D1)
 *  15. Print
 *  16. Events & Specials (Phase 2D2)
 *  17. Private Events (Phase 2DE): overview, spaces, event types, packages,
 *      FAQs, enquiry form
 *  18. Visit (Phase 2D3): practical information, weekly hours, Special
 *      Hours, arrival, location story, reservation band
 *  19. About (Phase 2D4): editorial sections, contextual links, closing band
 *  20. Gallery (Phase 2D4): masthead, mixed editorial grid, native <dialog>
 *      image viewer
 *
 * Compact-navigation breakpoint: 1200px (matches GATHER_NAV_BREAKPOINT and
 * navigation.js). Change all three together.
 */

/* =========================================================================
   1. Base
   ========================================================================= */

:root {
	--gather-header-height: 76px;
	--gather-action-bar-height: 60px;
	--gather-motion: 200ms ease;
	--gather-gutter: clamp(20px, 4vw, 40px);
	/* Derived from the ivory token; a hairline for rules on navy surfaces. */
	--gather-rule-on-dark: color-mix(in srgb, var(--wp--preset--color--warm-ivory) 18%, transparent);
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	scroll-padding-top: calc(var(--gather-header-height) + var(--wp--preset--spacing--16));
}

body {
	margin: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	background: var(--wp--preset--color--warm-ivory);
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--dm-sans);
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

.gather-main {
	flex: 1 0 auto;
	padding-block: var(--wp--preset--spacing--48) var(--wp--preset--spacing--96);
}

[hidden] {
	display: none !important;
}

img,
svg,
video {
	max-width: 100%;
	height: auto;
	display: block;
}

/* Anchor targets land below the sticky header (belt and braces with scroll-padding-top). */
[id] {
	scroll-margin-top: calc(var(--gather-header-height) + var(--wp--preset--spacing--16));
}

/* =========================================================================
   2. Typography
   ========================================================================= */

h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-weight: 600;
	line-height: 1.15;
	margin: 0 0 0.5em;
	color: var(--wp--preset--color--brand-navy);
	overflow-wrap: break-word;
}

h1 {
	font-size: var(--wp--preset--font-size--display-1);
	line-height: 1;
}

h2 {
	font-size: var(--wp--preset--font-size--display-2);
}

h3 {
	font-size: var(--wp--preset--font-size--display-3);
}

h4 {
	font-size: var(--wp--preset--font-size--display-4);
}

p {
	margin: 0 0 var(--wp--preset--spacing--24);
}

a {
	color: var(--wp--preset--color--brand-navy);
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.gather-lead,
.gather-prose .has-body-large-font-size {
	font-size: var(--wp--preset--font-size--body-large);
}

.gather-eyebrow,
.gather-label {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.gather-prose > * + * {
	margin-top: var(--wp--preset--spacing--24);
}

.gather-prose > h2,
.gather-prose > h3 {
	margin-top: var(--wp--preset--spacing--48);
}

/* =========================================================================
   3. Layout
   ========================================================================= */

.gather-container {
	width: 100%;
	max-width: calc(1240px + (2 * var(--gather-gutter)));
	margin-inline: auto;
	padding-inline: var(--gather-gutter);
}

.gather-container--narrow {
	max-width: calc(720px + (2 * var(--gather-gutter)));
}

.gather-page__header {
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-page__title {
	margin-bottom: 0;
}

.gather-page__title::after {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-top: var(--wp--preset--spacing--16);
	background: var(--wp--preset--color--brand-gold);
}

/* =========================================================================
   4. Buttons & links
   ========================================================================= */

.gather-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--wp--preset--spacing--8);
	min-height: 48px;
	padding: var(--wp--preset--spacing--12) var(--wp--preset--spacing--24);
	border: 1px solid transparent;
	border-radius: 0;
	font-family: var(--wp--preset--font-family--dm-sans);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	line-height: 1.2;
	text-transform: uppercase;
	text-decoration: none;
	text-align: center;
	cursor: pointer;
	transition: background-color var(--gather-motion), color var(--gather-motion), border-color var(--gather-motion);
}

.gather-button:active {
	transform: translateY(1px);
}

.gather-button[disabled],
.gather-button[aria-disabled="true"] {
	opacity: 0.5;
	cursor: not-allowed;
	pointer-events: none;
}

/* Primary — light surface: navy / ivory. */
.gather-button--primary {
	background: var(--wp--preset--color--brand-navy);
	border-color: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
}

.gather-button--primary:hover {
	background: var(--wp--preset--color--ink);
	border-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--white);
}

/* Primary — dark surface: ivory / navy. Used on the navy header and footer. */
.gather-button--primary-dark {
	background: var(--wp--preset--color--warm-ivory);
	border-color: var(--wp--preset--color--warm-ivory);
	color: var(--wp--preset--color--brand-navy);
}

.gather-button--primary-dark:hover {
	background: var(--wp--preset--color--white);
	border-color: var(--wp--preset--color--white);
}

/* Secondary — light surface: transparent / navy border / navy text. */
.gather-button--secondary {
	background: transparent;
	border-color: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--brand-navy);
}

.gather-button--secondary:hover {
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
}

/* Secondary — dark surface: transparent / ivory border / ivory text. */
.gather-button--secondary-dark {
	background: transparent;
	border-color: var(--wp--preset--color--warm-ivory);
	color: var(--wp--preset--color--warm-ivory);
}

.gather-button--secondary-dark:hover {
	background: var(--wp--preset--color--warm-ivory);
	color: var(--wp--preset--color--brand-navy);
}

/* Gift Cards inside the drawer: secondary with a gold rule as the permitted accent. */
.gather-button--gift {
	border-color: var(--wp--preset--color--brand-gold);
}

.gather-button--compact {
	min-height: 44px;
	padding-block: var(--wp--preset--spacing--8);
	padding-inline: var(--wp--preset--spacing--16);
	font-size: 12px;
}

.gather-button--block {
	display: flex;
	width: 100%;
}

/* Editorial / accent links. */
.gather-link {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--8);
	min-height: 44px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--wp--preset--color--brand-navy);
	transition: color var(--gather-motion);
}

.gather-link--editorial::after {
	content: "\2192";
	color: var(--wp--preset--color--brand-gold);
	transition: transform var(--gather-motion);
}

.gather-link--editorial:hover::after {
	transform: translateX(4px);
}

/* Accent link: small gold detail (a short rule), never a gold fill. */
.gather-link--accent::before {
	content: "";
	display: inline-block;
	width: 14px;
	height: 2px;
	background: var(--wp--preset--color--brand-gold);
}

.gather-link--on-dark {
	color: var(--wp--preset--color--warm-ivory);
}

.gather-link--on-dark:hover {
	color: var(--wp--preset--color--white);
}

/* =========================================================================
   5. Header
   ========================================================================= */

.gather-site-header {
	position: sticky;
	top: 0;
	z-index: 1000;
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
}

/* Logged-in users: sit the sticky header (and the fixed drawer) below the
   WordPress admin toolbar. WordPress exposes --wp-admin--admin-bar--height
   (32px desktop, 46px at <=782px); the media queries are the fallback for
   browsers without custom-property support of that variable. At <=600px the
   toolbar is position:absolute and scrolls away, so the header returns to 0.
   Logged-out pages have no body.admin-bar class and are unaffected. */
body.admin-bar .gather-site-header,
body.admin-bar .gather-mobile-nav.is-enhanced {
	top: var(--wp-admin--admin-bar--height, 32px);
}

@media (max-width: 782px) {
	body.admin-bar .gather-site-header,
	body.admin-bar .gather-mobile-nav.is-enhanced {
		top: var(--wp-admin--admin-bar--height, 46px);
	}
}

@media (max-width: 600px) {
	body.admin-bar .gather-site-header {
		top: 0;
	}
}

.gather-site-header__inner {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--32);
	min-height: var(--gather-header-height);
}

.gather-site-header__brand {
	flex: 0 0 auto;
	margin-right: auto;
}

.gather-brand {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	text-decoration: none;
	color: inherit;
}

.gather-brand__logo {
	width: 175px;
	height: auto;
}

/* Temporary development fallback only — the real wordmark is artwork. */
.gather-brand__text {
	font-family: var(--wp--preset--font-family--dm-sans);
	font-size: 20px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--warm-ivory);
}

.gather-site-header__actions {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--16);
	flex: 0 0 auto;
}

.gather-site-header__gift {
	color: var(--wp--preset--color--warm-ivory);
}

.gather-site-header__gift:hover {
	color: var(--wp--preset--color--white);
}

/* Menu button — revealed by navigation.js, only below the breakpoint. */
.gather-menu-toggle {
	display: none;
	align-items: center;
	gap: var(--wp--preset--spacing--8);
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	padding: var(--wp--preset--spacing--8) var(--wp--preset--spacing--4);
	background: none;
	border: 0;
	color: var(--wp--preset--color--warm-ivory);
	font-family: var(--wp--preset--font-family--dm-sans);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	cursor: pointer;
}

.gather-menu-toggle__icon {
	position: relative;
	display: block;
	width: 22px;
	height: 2px;
	background: currentColor;
}

.gather-menu-toggle__icon::before,
.gather-menu-toggle__icon::after {
	content: "";
	position: absolute;
	left: 0;
	width: 100%;
	height: 2px;
	background: currentColor;
}

.gather-menu-toggle__icon::before {
	top: -7px;
}

.gather-menu-toggle__icon::after {
	top: 7px;
}

/* =========================================================================
   6. Navigation (desktop)
   ========================================================================= */

.gather-primary-nav {
	flex: 0 1 auto;
}

.gather-primary-nav__list {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--4);
	margin: 0;
	padding: 0;
	list-style: none;
}

.gather-primary-nav__list a {
	position: relative;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: var(--wp--preset--spacing--8) var(--wp--preset--spacing--12);
	color: var(--wp--preset--color--warm-ivory);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap;
	transition: color var(--gather-motion);
}

.gather-primary-nav__list a::after {
	content: "";
	position: absolute;
	left: var(--wp--preset--spacing--12);
	right: var(--wp--preset--spacing--12);
	bottom: 4px;
	height: 2px;
	background: var(--wp--preset--color--brand-gold);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform var(--gather-motion);
}

.gather-primary-nav__list a:hover::after,
.gather-primary-nav__list a[aria-current]::after {
	transform: scaleX(1);
}

.gather-primary-nav__list a:hover {
	color: var(--wp--preset--color--white);
}

/* =========================================================================
   7. Navigation (compact / drawer)
   ========================================================================= */

/* Static (no-JS) state: an inline navy panel below the header. Hidden entirely on desktop. */
.gather-mobile-nav {
	display: none;
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
	padding: var(--wp--preset--spacing--16) var(--gather-gutter) var(--wp--preset--spacing--32);
}

.gather-mobile-nav__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: 44px;
	margin-bottom: var(--wp--preset--spacing--16);
}

.gather-mobile-nav__title {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
}

.gather-mobile-nav__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin: 0 calc(-1 * var(--wp--preset--spacing--8)) 0 0;
	padding: 0;
	background: none;
	border: 0;
	color: inherit;
	cursor: pointer;
}

.gather-mobile-nav__close-icon {
	position: relative;
	display: block;
	width: 22px;
	height: 22px;
}

.gather-mobile-nav__close-icon::before,
.gather-mobile-nav__close-icon::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 0;
	width: 100%;
	height: 2px;
	background: currentColor;
}

.gather-mobile-nav__close-icon::before {
	transform: rotate(45deg);
}

.gather-mobile-nav__close-icon::after {
	transform: rotate(-45deg);
}

.gather-mobile-nav__list {
	margin: 0 0 var(--wp--preset--spacing--24);
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--gather-rule-on-dark);
}

.gather-mobile-nav__list li {
	border-bottom: 1px solid var(--gather-rule-on-dark);
}

.gather-mobile-nav__list a {
	display: flex;
	align-items: center;
	min-height: 52px;
	padding: var(--wp--preset--spacing--12) 0;
	color: var(--wp--preset--color--warm-ivory);
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: 26px;
	font-weight: 600;
	line-height: 1.1;
	text-decoration: none;
}

.gather-mobile-nav__list a[aria-current] {
	padding-left: var(--wp--preset--spacing--16);
	box-shadow: inset 3px 0 0 var(--wp--preset--color--brand-gold);
}

.gather-mobile-nav__actions {
	display: grid;
	gap: var(--wp--preset--spacing--12);
}

/* Enhanced (JS) state: off-canvas drawer. */
.gather-mobile-nav__backdrop {
	position: fixed;
	inset: 0;
	z-index: 1100;
	background: color-mix(in srgb, var(--wp--preset--color--brand-navy) 55%, transparent);
}

.gather-mobile-nav.is-enhanced {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	z-index: 1200;
	width: min(100%, 400px);
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	padding-bottom: calc(var(--wp--preset--spacing--32) + env(safe-area-inset-bottom));
	box-shadow: -1px 0 0 var(--gather-rule-on-dark);
	transform: translateX(100%);
	transition: transform var(--gather-motion);
}

.gather-mobile-nav.is-enhanced.is-open {
	transform: none;
}

.gather-drawer-open,
.gather-drawer-open body {
	overflow: hidden;
}

/* =========================================================================
   8. Announcement
   ========================================================================= */

.gather-announcement {
	background: var(--wp--preset--color--white);
	border-bottom: 1px solid var(--wp--preset--color--rule);
	color: var(--wp--preset--color--brand-navy);
	font-size: var(--wp--preset--font-size--small);
	text-align: center;
}

.gather-announcement__inner {
	margin-block: 0;
	padding-block: var(--wp--preset--spacing--8);
}

.gather-announcement__inner::before {
	content: "";
	display: inline-block;
	width: 10px;
	height: 2px;
	margin: 0 var(--wp--preset--spacing--8) 4px 0;
	background: var(--wp--preset--color--brand-gold);
}

.gather-announcement__link {
	display: inline-block;
	min-height: 44px;
	padding-block: calc((44px - 1.6em) / 2);
	font-weight: 600;
}

/* =========================================================================
   9. Mobile action bar
   ========================================================================= */

.gather-action-bar {
	display: none;
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 900;
	gap: 1px;
	background: var(--wp--preset--color--brand-navy);
	border-top: 1px solid var(--gather-rule-on-dark);
	padding-bottom: env(safe-area-inset-bottom);
}

.gather-action-bar__link {
	flex: 1 1 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--gather-action-bar-height);
	padding: var(--wp--preset--spacing--12) var(--wp--preset--spacing--16);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
	transition: background-color var(--gather-motion), color var(--gather-motion);
}

.gather-action-bar__link--primary {
	background: var(--wp--preset--color--warm-ivory);
	color: var(--wp--preset--color--brand-navy);
}

.gather-action-bar__link--primary:hover {
	background: var(--wp--preset--color--white);
}

.gather-action-bar__link--secondary {
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
}

.gather-action-bar__link--secondary:hover {
	color: var(--wp--preset--color--white);
}

/* Focus inside the bar sits on navy/ivory, so use the opposite colour ring. */
.gather-action-bar__link:focus-visible {
	outline-color: var(--wp--preset--color--brand-gold);
	outline-offset: -4px;
}

/* =========================================================================
   10. Footer
   ========================================================================= */

.gather-site-footer {
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
	padding-block: var(--wp--preset--spacing--64) var(--wp--preset--spacing--32);
}

.gather-site-footer a:not(.gather-button) {
	color: var(--wp--preset--color--warm-ivory);
}

.gather-site-footer a:not(.gather-button):hover {
	color: var(--wp--preset--color--white);
}

.gather-site-footer__brand {
	margin-bottom: var(--wp--preset--spacing--48);
	padding-bottom: var(--wp--preset--spacing--24);
	border-bottom: 1px solid var(--gather-rule-on-dark);
}

.gather-site-footer__columns {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--wp--preset--spacing--48) var(--wp--preset--spacing--32);
}

.gather-site-footer__heading {
	margin: 0 0 var(--wp--preset--spacing--16);
	color: var(--wp--preset--color--warm-ivory);
	font-family: var(--wp--preset--font-family--dm-sans);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.gather-site-footer__heading::after {
	content: "";
	display: block;
	width: 24px;
	height: 2px;
	margin-top: var(--wp--preset--spacing--8);
	background: var(--wp--preset--color--brand-gold);
}

.gather-site-footer__address {
	font-style: normal;
	margin-bottom: var(--wp--preset--spacing--12);
}

.gather-site-footer__phone {
	margin-bottom: var(--wp--preset--spacing--12);
}

.gather-site-footer__phone a {
	display: inline-block;
	min-height: 44px;
	padding-block: calc((44px - 1.6em) / 2);
}

.gather-hours {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
}

.gather-hours__row {
	display: flex;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--16);
	padding-block: var(--wp--preset--spacing--4);
}

.gather-hours dt {
	font-weight: 600;
}

.gather-hours dd {
	margin: 0;
	text-align: right;
}

.gather-site-footer__list,
.gather-site-footer__legal-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.gather-site-footer__list a,
.gather-site-footer__legal-list a {
	display: inline-block;
	min-height: 44px;
	padding-block: calc((44px - 1.6em) / 2);
	text-decoration: none;
}

.gather-site-footer__list a:hover,
.gather-site-footer__legal-list a:hover {
	text-decoration: underline;
}

.gather-site-footer__list a[aria-current] {
	box-shadow: inset 0 -2px 0 var(--wp--preset--color--brand-gold);
}

.gather-site-footer__actions {
	display: grid;
	gap: var(--wp--preset--spacing--12);
	margin-bottom: var(--wp--preset--spacing--24);
}

.gather-site-footer__social {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--16);
	margin: 0;
	padding: 0;
	list-style: none;
}

.gather-site-footer__social a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
}

.gather-site-footer__legal {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--16) var(--wp--preset--spacing--32);
	margin-top: var(--wp--preset--spacing--64);
	padding-top: var(--wp--preset--spacing--24);
	border-top: 1px solid var(--gather-rule-on-dark);
	font-size: var(--wp--preset--font-size--small);
}

.gather-site-footer__legal-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--4) var(--wp--preset--spacing--24);
}

.gather-site-footer__copyright {
	margin: 0;
}

/* =========================================================================
   11. Responsive
   ========================================================================= */

/* Desktop navigation from 1200px. */
@media (min-width: 1200px) {
	.gather-mobile-nav,
	.gather-mobile-nav__backdrop,
	.gather-menu-toggle {
		display: none !important;
	}
}

/* Tighten the desktop header between the breakpoint and 1280px so the full
   navigation, logo and commercial actions fit on one row without wrapping. */
@media (min-width: 1200px) and (max-width: 1279.98px) {
	.gather-site-header__inner {
		gap: var(--wp--preset--spacing--16);
	}

	.gather-primary-nav__list a {
		padding-inline: 9px;
		font-size: 12px;
		letter-spacing: 0.1em;
	}

	.gather-primary-nav__list a::after {
		left: 9px;
		right: 9px;
	}

	.gather-site-header__actions {
		gap: var(--wp--preset--spacing--12);
	}

	.gather-site-header__actions .gather-button--compact {
		padding-inline: var(--wp--preset--spacing--12);
	}

	.gather-brand__logo {
		width: 165px;
	}
}

/* Compact header, drawer and action bar below 1200px. */
@media (max-width: 1199.98px) {
	:root {
		--gather-header-height: 64px;
	}

	.gather-primary-nav,
	.gather-site-header__actions {
		display: none;
	}

	.gather-menu-toggle:not([hidden]) {
		display: inline-flex;
	}

	.gather-mobile-nav {
		display: block;
	}

	.gather-brand__logo {
		width: 132px;
	}

	.gather-brand__text {
		font-size: 18px;
	}

	.gather-action-bar {
		display: flex;
	}

	/* Bottom clearance only when the bar is actually rendered (body class from PHP). */
	body.has-gather-action-bar {
		padding-bottom: calc(var(--gather-action-bar-height) + env(safe-area-inset-bottom));
	}
}

@media (max-width: 599.98px) {
	.gather-site-footer__legal {
		flex-direction: column;
		align-items: flex-start;
	}

	.gather-hours__row {
		flex-direction: column;
		gap: 0;
	}

	.gather-hours dd {
		text-align: left;
	}
}

/* =========================================================================
   12. Accessibility
   ========================================================================= */

/* Skip-to-content link: visually hidden until it receives keyboard focus. */
.gather-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100000;
	padding: var(--wp--preset--spacing--12) var(--wp--preset--spacing--16);
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--micro);
	text-decoration: none;
}

.gather-skip-link:focus {
	left: var(--wp--preset--spacing--16);
	top: var(--wp--preset--spacing--16);
	outline: 2px solid var(--wp--preset--color--brand-gold);
	outline-offset: 2px;
}

.gather-visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* A visible focus state is a WCAG 2.2 AA requirement and must never be removed. */
:focus-visible {
	outline: 2px solid var(--wp--preset--color--brand-navy);
	outline-offset: 2px;
}

/* On navy surfaces the navy ring would vanish, so use gold there. */
.gather-site-header :focus-visible,
.gather-mobile-nav :focus-visible,
.gather-site-footer :focus-visible {
	outline-color: var(--wp--preset--color--brand-gold);
}

.gather-main:focus {
	outline: none;
}

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

/* =========================================================================
   13. Homepage
   -------------------------------------------------------------------------
   Everything below is scoped to the nine homepage sections rendered by
   front-page.php. Components marked "reusable" (editorial feature, promotion
   card, gift panel, instagram strip, visit block, closing band) are written
   without homepage-only assumptions so later pages can reuse them.
   Surfaces alternate ivory / white / navy to create editorial rhythm; gold
   appears only as rules, accents and the feature arrow.
   ========================================================================= */

/* The homepage is full-bleed; the main element's generic padding is removed. */
body.home .gather-main {
	padding-block: 0;
}

.gather-section {
	padding-block: clamp(var(--wp--preset--spacing--48), 8vw, var(--wp--preset--spacing--96));
}

.gather-section--rule {
	border-top: 1px solid var(--wp--preset--color--rule);
}

.gather-section--navy {
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
}

.gather-section--navy h2,
.gather-section--navy h3,
.gather-section--navy a:not(.gather-button) {
	color: var(--wp--preset--color--warm-ivory);
}

.gather-section--navy :focus-visible,
.gather-hero :focus-visible {
	outline-color: var(--wp--preset--color--brand-gold);
}

.gather-section__header {
	max-width: 720px;
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-section__header--row {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--8) var(--wp--preset--spacing--32);
	max-width: none;
}

.gather-section__heading {
	margin-bottom: 0;
}

.gather-section__heading::after {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-top: var(--wp--preset--spacing--16);
	background: var(--wp--preset--color--brand-gold);
}

.gather-section__intro {
	margin: var(--wp--preset--spacing--16) 0 0;
	font-size: var(--wp--preset--font-size--body-large);
	color: var(--wp--preset--color--muted);
}

/* ---- 13.1 Hero ------------------------------------------------------- */

.gather-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: clamp(520px, 74vh, 780px);
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
	overflow: hidden;
}

.gather-hero--surface {
	min-height: clamp(420px, 56vh, 580px);
}

.gather-hero__media {
	position: absolute;
	inset: 0;
}

.gather-hero__media picture,
.gather-hero__image {
	display: block;
	width: 100%;
	height: 100%;
}

.gather-hero__image {
	object-fit: cover;
	object-position: center;
}

/* Restrained navy veil, heavier towards the text so ivory type stays legible. */
.gather-hero__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(to top, color-mix(in srgb, var(--wp--preset--color--brand-navy) 82%, transparent) 0%, color-mix(in srgb, var(--wp--preset--color--brand-navy) 35%, transparent) 55%, transparent 100%);
}

.gather-hero__inner {
	position: relative;
	z-index: 1;
	padding-block: clamp(var(--wp--preset--spacing--48), 8vw, var(--wp--preset--spacing--96));
}

.gather-hero__content {
	max-width: 680px;
}

.gather-hero__eyebrow {
	margin: 0 0 var(--wp--preset--spacing--16);
	color: var(--wp--preset--color--brand-gold);
}

.gather-hero__heading {
	margin-bottom: var(--wp--preset--spacing--24);
	color: var(--wp--preset--color--warm-ivory);
	text-wrap: balance;
}

.gather-hero__statement {
	max-width: 560px;
	margin: 0 0 var(--wp--preset--spacing--32);
	font-size: var(--wp--preset--font-size--body-large);
	line-height: 1.5;
}

.gather-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--12) var(--wp--preset--spacing--16);
}

.gather-hero__cta {
	min-width: 200px;
}

/* ---- 13.2 Introduction ------------------------------------------------ */

.gather-home-intro__inner {
	max-width: calc(720px + (2 * var(--gather-gutter)));
}

.gather-home-intro__inner::before {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-bottom: var(--wp--preset--spacing--24);
	background: var(--wp--preset--color--brand-gold);
}

.gather-home-intro__heading {
	margin-bottom: var(--wp--preset--spacing--16);
}

.gather-home-intro__copy p:last-child {
	margin-bottom: 0;
}

/* ---- 13.3 Editorial grid + Editorial Feature (reusable) -------------- */

.gather-editorial {
	background: var(--wp--preset--color--white);
}

.gather-editorial__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32) var(--wp--preset--spacing--24);
	margin: 0;
	padding: 0;
	list-style: none;
}

.gather-feature {
	display: flex;
	flex-direction: column;
	height: 100%;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

.gather-feature__media {
	display: block;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: var(--wp--preset--color--warm-ivory);
}

.gather-feature__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 400ms ease;
}

.gather-feature:hover .gather-feature__image {
	transform: scale(1.03);
}

/* A feature without an image becomes a framed ivory panel, not an empty box. */
.gather-feature--text {
	justify-content: flex-end;
	min-height: 240px;
	padding: var(--wp--preset--spacing--32);
	border: 1px solid var(--wp--preset--color--rule);
	background: var(--wp--preset--color--warm-ivory);
}

.gather-feature__body {
	display: block;
	padding-top: var(--wp--preset--spacing--16);
}

.gather-feature--text .gather-feature__body {
	padding-top: 0;
}

.gather-feature__heading {
	display: block;
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-4);
	font-weight: 600;
	line-height: 1.15;
	color: var(--wp--preset--color--brand-navy);
}

.gather-feature__copy {
	display: block;
	margin-top: var(--wp--preset--spacing--8);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-feature__cue {
	display: inline-block;
	margin-top: var(--wp--preset--spacing--12);
	font-size: var(--wp--preset--font-size--body-large);
	line-height: 1;
	color: var(--wp--preset--color--brand-gold);
	transition: transform var(--gather-motion);
}

.gather-feature:hover .gather-feature__cue,
.gather-feature:focus-visible .gather-feature__cue {
	transform: translateX(6px);
}

.gather-feature:hover .gather-feature__heading {
	text-decoration: underline;
	text-underline-offset: 0.15em;
	text-decoration-thickness: 1px;
}

/* Tablet: two columns, the lead feature spanning both. */
@media (min-width: 768px) {
	.gather-editorial__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gather-editorial__cell:first-child {
		grid-column: 1 / -1;
	}

	.gather-editorial__cell:first-child .gather-feature__media {
		aspect-ratio: 2 / 1;
	}
}

/* Desktop: a 12-column editorial composition. Row 1 = 7 + 5, row 2 = 4 + 4 + 4,
   row 3 = one wide horizontal feature. Shorter lists re-balance so no cell is
   left dangling. */
@media (min-width: 1024px) {
	.gather-editorial__grid {
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--wp--preset--spacing--48) var(--wp--preset--spacing--32);
	}

	.gather-editorial__cell:nth-child(1) {
		grid-column: 1 / 8;
	}

	.gather-editorial__cell:nth-child(1) .gather-feature__media {
		aspect-ratio: 4 / 3;
	}

	.gather-editorial__cell:nth-child(2) {
		grid-column: 8 / 13;
	}

	.gather-editorial__cell:nth-child(2) .gather-feature__media {
		aspect-ratio: 4 / 5;
	}

	.gather-editorial__cell:nth-child(3) {
		grid-column: 1 / 5;
	}

	.gather-editorial__cell:nth-child(4) {
		grid-column: 5 / 9;
	}

	.gather-editorial__cell:nth-child(5) {
		grid-column: 9 / 13;
	}

	.gather-editorial__cell:nth-child(6) {
		grid-column: 1 / 13;
	}

	/* Four features: second row is 6 + 6. */
	.gather-editorial__grid--count-4 .gather-editorial__cell:nth-child(3) {
		grid-column: 1 / 7;
	}

	.gather-editorial__grid--count-4 .gather-editorial__cell:nth-child(4) {
		grid-column: 7 / 13;
	}

	/* One or three features: the odd feature becomes the wide horizontal cell. */
	.gather-editorial__grid--count-1 .gather-editorial__cell:nth-child(1),
	.gather-editorial__grid--count-3 .gather-editorial__cell:nth-child(3) {
		grid-column: 1 / 13;
	}

	.gather-editorial__grid--count-1 .gather-editorial__cell:nth-child(1) .gather-feature__media {
		aspect-ratio: auto;
	}

	/* Wide horizontal feature: image left (5/12), text right. */
	.gather-editorial__cell:nth-child(6) .gather-feature--has-image,
	.gather-editorial__grid--count-3 .gather-editorial__cell:nth-child(3) .gather-feature--has-image,
	.gather-editorial__grid--count-1 .gather-editorial__cell:nth-child(1) .gather-feature--has-image {
		display: grid;
		grid-template-columns: 5fr 7fr;
		gap: var(--wp--preset--spacing--48);
		align-items: center;
	}

	.gather-editorial__cell:nth-child(6) .gather-feature--has-image .gather-feature__media,
	.gather-editorial__grid--count-3 .gather-editorial__cell:nth-child(3) .gather-feature--has-image .gather-feature__media,
	.gather-editorial__grid--count-1 .gather-editorial__cell:nth-child(1) .gather-feature--has-image .gather-feature__media {
		aspect-ratio: 3 / 2;
	}

	.gather-editorial__cell:nth-child(6) .gather-feature--has-image .gather-feature__body,
	.gather-editorial__grid--count-3 .gather-editorial__cell:nth-child(3) .gather-feature--has-image .gather-feature__body,
	.gather-editorial__grid--count-1 .gather-editorial__cell:nth-child(1) .gather-feature--has-image .gather-feature__body {
		padding-top: 0;
	}

	.gather-editorial__cell:nth-child(6) .gather-feature__heading,
	.gather-editorial__grid--count-3 .gather-editorial__cell:nth-child(3) .gather-feature__heading,
	.gather-editorial__grid--count-1 .gather-editorial__cell:nth-child(1) .gather-feature__heading,
	.gather-editorial__cell:nth-child(1) .gather-feature__heading {
		font-size: var(--wp--preset--font-size--display-3);
	}
}

/* ---- 13.4 Promotions + Promotion Card (reusable) --------------------- */

.gather-promotions__list {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--24);
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 768px) {
	.gather-promotions__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.gather-promotions__list--count-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	/* A single promotion reads as a wide editorial card rather than a lonely column. */
	.gather-promotions__list--count-1 .gather-promo-card {
		grid-template-columns: 1fr 1fr;
	}
}

.gather-promo-card {
	display: grid;
	grid-template-rows: auto 1fr;
	height: 100%;
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--rule);
}

.gather-promo-card__media {
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.gather-promo-card__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.gather-promo-card__body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	padding: var(--wp--preset--spacing--24);
}

.gather-promo-card--no-image .gather-promo-card__body {
	padding-top: var(--wp--preset--spacing--32);
	border-top: 2px solid var(--wp--preset--color--brand-gold);
}

.gather-promo-card__eyebrow {
	margin: 0 0 var(--wp--preset--spacing--8);
	color: var(--wp--preset--color--muted);
}

.gather-promo-card__title {
	margin-bottom: var(--wp--preset--spacing--8);
}

.gather-promo-card__schedule {
	margin: 0 0 var(--wp--preset--spacing--12);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--brand-navy);
}

.gather-promo-card__summary {
	margin: 0 0 var(--wp--preset--spacing--16);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-promo-card__cta {
	margin-top: auto;
}

/* ---- 13.5 Private Events --------------------------------------------- */

.gather-private-events__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32);
	align-items: center;
}

.gather-private-events__media {
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.gather-private-events__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.gather-private-events__heading::before {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-bottom: var(--wp--preset--spacing--24);
	background: var(--wp--preset--color--brand-gold);
}

.gather-private-events__intro {
	max-width: 520px;
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-private-events--no-image .gather-private-events__body {
	max-width: 720px;
}

@media (min-width: 1024px) {
	.gather-private-events__inner {
		grid-template-columns: 7fr 5fr;
		gap: var(--wp--preset--spacing--96);
	}

	.gather-private-events--no-image .gather-private-events__inner {
		grid-template-columns: 1fr;
	}
}

/* ---- 13.6 Gift Cards (reusable gift panel) --------------------------- */

.gather-gift__panel {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32);
	align-items: center;
	padding: clamp(var(--wp--preset--spacing--32), 5vw, var(--wp--preset--spacing--64));
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--brand-gold);
	box-shadow: inset 0 0 0 6px var(--wp--preset--color--white), inset 0 0 0 7px var(--wp--preset--color--brand-gold);
}

.gather-gift__media {
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.gather-gift__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.gather-gift__heading::before {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-bottom: var(--wp--preset--spacing--16);
	background: var(--wp--preset--color--brand-gold);
}

.gather-gift__copy {
	max-width: 520px;
	font-size: var(--wp--preset--font-size--body-large);
}

@media (min-width: 1024px) {
	.gather-gift--has-image .gather-gift__panel {
		grid-template-columns: 5fr 7fr;
		gap: var(--wp--preset--spacing--64);
	}
}

/* ---- 13.7 Instagram strip (reusable) --------------------------------- */

.gather-instagram__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--wp--preset--spacing--8);
	margin: 0;
	padding: 0;
	list-style: none;
}

.gather-instagram__tile {
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background: var(--wp--preset--color--rule);
}

.gather-instagram__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Show complete rows only: six tiles on phones and desktop, eight on tablet. */
.gather-instagram__tile:nth-child(n + 7) {
	display: none;
}

@media (min-width: 480px) {
	.gather-instagram__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 768px) and (max-width: 1023.98px) {
	.gather-instagram__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.gather-instagram__tile:nth-child(7),
	.gather-instagram__tile:nth-child(8) {
		display: block;
	}
}

@media (min-width: 1024px) {
	.gather-instagram__grid {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}
}

/* ---- 13.8 Visit block (reusable) ------------------------------------- */

.gather-visit {
	background: var(--wp--preset--color--white);
}

.gather-visit__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32) var(--wp--preset--spacing--64);
}

.gather-visit__heading::after {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-top: var(--wp--preset--spacing--16);
	background: var(--wp--preset--color--brand-gold);
}

.gather-visit__facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: var(--wp--preset--spacing--32);
	margin: 0;
}

.gather-visit__fact dt {
	margin-bottom: var(--wp--preset--spacing--8);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}

.gather-visit__fact dd {
	margin: 0;
}

.gather-visit__address {
	margin-bottom: var(--wp--preset--spacing--8);
	font-style: normal;
}

.gather-visit__hours,
.gather-visit__note {
	display: block;
}

.gather-visit__hours {
	font-weight: 600;
}

.gather-visit__note {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-visit__phone {
	display: inline-block;
	min-height: 44px;
	padding-block: calc((44px - 1.6em) / 2);
	font-size: var(--wp--preset--font-size--body-large);
	text-decoration: none;
}

.gather-visit__phone:hover {
	text-decoration: underline;
}

@media (min-width: 1024px) {
	.gather-visit__inner {
		grid-template-columns: 4fr 8fr;
	}
}

/* ---- 13.9 Closing band (reusable CTA band) --------------------------- */

.gather-closing {
	padding-block: clamp(var(--wp--preset--spacing--48), 7vw, var(--wp--preset--spacing--96));
}

.gather-closing__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--24) var(--wp--preset--spacing--48);
}

.gather-closing__line {
	margin: 0;
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-2);
	font-weight: 600;
	line-height: 1.1;
	color: var(--wp--preset--color--warm-ivory);
	text-wrap: balance;
}

.gather-closing__cta {
	min-width: 220px;
}

/* ---- 13.10 Small screens --------------------------------------------- */

@media (max-width: 599.98px) {
	.gather-hero {
		min-height: min(82vh, 680px);
	}

	.gather-hero--surface {
		min-height: 0;
	}

	.gather-hero__actions {
		flex-direction: column;
		align-items: stretch;
	}

	.gather-hero__cta {
		width: 100%;
	}

	.gather-closing__inner {
		flex-direction: column;
		align-items: stretch;
	}

	.gather-closing__cta {
		width: 100%;
	}
}

/* =========================================================================
   14. Food & Drink Menus (Phase 2D1)
   -------------------------------------------------------------------------
   The /menus/ archive and single Menu templates. Editorial, food-led and
   text-first: whitespace and subtle rules instead of boxes, navy/ivory
   dominant, gold as small accents only. No JavaScript is involved anywhere
   in this section.
   ========================================================================= */

/* ---- 14.1 Archive ----------------------------------------------------- */

.gather-menu-archive {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32);
}

@media (min-width: 700px) {
	.gather-menu-archive {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (min-width: 1100px) {
	.gather-menu-archive {
		grid-template-columns: repeat(3, 1fr);
	}
}

.gather-menu-card {
	display: grid;
	grid-template-rows: auto 1fr;
	height: 100%;
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--rule);
}

.gather-menu-card__media {
	aspect-ratio: 3 / 2;
	overflow: hidden;
}

.gather-menu-card__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.gather-menu-card__body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	padding: var(--wp--preset--spacing--24);
}

/* Text-led presentation when no image exists: a deliberate gold rule, never
   an empty media area or placeholder. */
.gather-menu-card--no-image .gather-menu-card__body {
	padding-top: var(--wp--preset--spacing--32);
	border-top: 2px solid var(--wp--preset--color--brand-gold);
}

.gather-menu-card__title {
	margin-bottom: var(--wp--preset--spacing--8);
	font-size: var(--wp--preset--font-size--display-3);
}

.gather-menu-card__availability {
	list-style: none;
	margin: 0 0 var(--wp--preset--spacing--12);
	padding: 0;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--brand-navy);
}

.gather-menu-card__availability-row {
	margin-bottom: var(--wp--preset--spacing--4);
}

.gather-menu-card__availability-label {
	display: inline-block;
	margin-right: var(--wp--preset--spacing--8);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}

.gather-menu-card__intro {
	margin: 0 0 var(--wp--preset--spacing--16);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-menu-card__cta {
	margin-top: auto;
}

.gather-menu-archive__empty {
	font-size: var(--wp--preset--font-size--body-large);
	color: var(--wp--preset--color--muted);
}

/* ---- 14.2 Single Menu masthead ---------------------------------------- */

.gather-menu__masthead {
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-menu__intro {
	max-width: 720px;
	margin-top: var(--wp--preset--spacing--24);
	font-size: var(--wp--preset--font-size--body-large);
}

.gather-menu__intro > :last-child {
	margin-bottom: 0;
}

/* Restrained informational treatment — a note, not an alert. */
.gather-menu__effective {
	max-width: 720px;
	margin: var(--wp--preset--spacing--16) 0 0;
	padding-left: var(--wp--preset--spacing--12);
	border-left: 2px solid var(--wp--preset--color--brand-gold);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

/* Editorial featured image: a constant 3:2 crop at every width (Coastal
   Social editorial ratio — never panoramic). On wide screens the media sits
   on the masthead's left axis at a bounded width so a 3:2 image reads as
   restaurant photography without swallowing the whole desktop viewport. */
.gather-menu__media {
	max-width: 960px;
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-menu__image {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

/* ---- 14.3 Availability ------------------------------------------------ */

.gather-menu__meta {
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-menu-availability {
	margin-bottom: var(--wp--preset--spacing--24);
}

.gather-menu-availability__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.gather-menu-availability__row {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--wp--preset--spacing--4) var(--wp--preset--spacing--12);
	padding-block: var(--wp--preset--spacing--4);
}

.gather-menu-availability__label {
	min-width: 96px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand-navy);
}

.gather-menu-availability__schedule {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--wp--preset--spacing--8);
	font-size: var(--wp--preset--font-size--body);
	color: var(--wp--preset--color--ink);
}

.gather-menu-availability__sep {
	color: var(--wp--preset--color--brand-gold);
}

/* Restrained "Today" marker: identifies the applicable schedule row only —
   it never claims open/closed state. */
.gather-menu-availability__today {
	padding: 1px var(--wp--preset--spacing--8);
	border: 1px solid var(--wp--preset--color--brand-gold);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand-navy);
}

/* ---- 14.4 Menu switcher ----------------------------------------------- */

.gather-menu-switcher__list {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--8) var(--wp--preset--spacing--8);
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--wp--preset--color--rule);
	padding-top: var(--wp--preset--spacing--16);
}

.gather-menu-switcher__link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: var(--wp--preset--spacing--8) var(--wp--preset--spacing--16);
	border: 1px solid var(--wp--preset--color--rule);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--wp--preset--color--brand-navy);
	transition: background-color var(--gather-motion), color var(--gather-motion), border-color var(--gather-motion);
}

.gather-menu-switcher__link:hover {
	border-color: var(--wp--preset--color--brand-navy);
}

.gather-menu-switcher__link[aria-current="page"] {
	background: var(--wp--preset--color--brand-navy);
	border-color: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
}

/* ---- 14.5 Menu sections & items --------------------------------------- */

/* A grid of whole sections — never CSS multi-column flow, so a section is
   never split across columns and DOM reading order is preserved. */
.gather-menu__sections {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--48) var(--wp--preset--spacing--64);
	margin-bottom: var(--wp--preset--spacing--48);
}

@media (min-width: 960px) {
	.gather-menu__sections {
		grid-template-columns: repeat(2, 1fr);
	}
}

.gather-menu-section__title {
	margin-bottom: var(--wp--preset--spacing--16);
	padding-bottom: var(--wp--preset--spacing--8);
	border-bottom: 1px solid var(--wp--preset--color--rule);
	font-size: var(--wp--preset--font-size--display-3);
}

.gather-menu-items {
	list-style: none;
	margin: 0;
	padding: 0;
}

.gather-menu-item {
	padding-block: var(--wp--preset--spacing--12);
}

.gather-menu-item + .gather-menu-item {
	border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--rule) 55%, transparent);
}

/* Name flexible, price aligned right; no dotted leaders. Long names wrap;
   the price never collides and renders exactly as stored (no added "$"). */
.gather-menu-item__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--16);
}

.gather-menu-item__name {
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: 20px;
	font-weight: 600;
	color: var(--wp--preset--color--brand-navy);
	overflow-wrap: break-word;
	min-width: 0;
}

.gather-menu-item__price {
	flex-shrink: 0;
	max-width: 40%;
	text-align: right;
	font-size: var(--wp--preset--font-size--body);
	font-weight: 600;
	color: var(--wp--preset--color--brand-navy);
	overflow-wrap: break-word;
}

.gather-menu-item__markers {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wp--preset--spacing--8);
	margin-top: var(--wp--preset--spacing--4);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gather-menu-item__diet {
	padding: 1px var(--wp--preset--spacing--8);
	border: 1px solid var(--wp--preset--color--rule);
	color: var(--wp--preset--color--muted);
}

/* Gather Favorite: visible text with a small gold accent — never icon-only. */
.gather-menu-item__favorite {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--4);
	color: var(--wp--preset--color--brand-navy);
}

.gather-menu-item__favorite-mark {
	width: 8px;
	height: 8px;
	background: var(--wp--preset--color--brand-gold);
	transform: rotate(45deg);
}

.gather-menu-item__raw {
	color: var(--wp--preset--color--muted);
}

.gather-menu-item__description {
	max-width: 62ch;
	margin: var(--wp--preset--spacing--8) 0 0;
	font-size: 15px;
	line-height: 1.55;
	color: var(--wp--preset--color--ink);
}

.gather-menu-item__note {
	margin: var(--wp--preset--spacing--4) 0 0;
	font-size: var(--wp--preset--font-size--micro);
	color: var(--wp--preset--color--muted);
}

/* Temporarily unavailable: identified by visible text; muted styling stays
   within accessible contrast and is never the only signal. */
.gather-menu-item__state {
	margin: var(--wp--preset--spacing--4) 0 0;
	font-size: var(--wp--preset--font-size--micro);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}

.gather-menu-item--unavailable .gather-menu-item__name,
.gather-menu-item--unavailable .gather-menu-item__price,
.gather-menu-item--unavailable .gather-menu-item__description {
	color: var(--wp--preset--color--muted);
}

/* ---- 14.6 Menu information -------------------------------------------- */

.gather-menu-information {
	margin-bottom: var(--wp--preset--spacing--32);
	padding-top: var(--wp--preset--spacing--24);
	border-top: 1px solid var(--wp--preset--color--rule);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-menu-information__legend {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--8) var(--wp--preset--spacing--24);
	margin: 0 0 var(--wp--preset--spacing--16);
	padding: 0;
}

.gather-menu-information__legend-code {
	display: inline-block;
	padding: 1px var(--wp--preset--spacing--8);
	border: 1px solid var(--wp--preset--color--rule);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gather-menu-information__legend-sep {
	color: var(--wp--preset--color--brand-gold);
}

.gather-menu-information__footnotes > :last-child,
.gather-menu-information__advisory > :last-child,
.gather-menu-information__payment > :last-child {
	margin-bottom: 0;
}

.gather-menu-information__footnotes,
.gather-menu-information__advisory,
.gather-menu-information__payment {
	max-width: 62ch;
	margin-bottom: var(--wp--preset--spacing--16);
}

.gather-menu-information__chef {
	margin: 0;
	font-style: italic;
}

/* ---- 14.7 PDF + CTA band ---------------------------------------------- */

.gather-menu__pdf {
	margin: 0 0 var(--wp--preset--spacing--32);
}

.gather-menu__pdf-size {
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--wp--preset--color--muted);
}

.gather-menu-cta {
	margin-top: var(--wp--preset--spacing--48);
	padding-block: clamp(var(--wp--preset--spacing--48), 6vw, var(--wp--preset--spacing--64));
}

.gather-menu-cta__inner {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--wp--preset--spacing--16);
}

@media (max-width: 599px) {
	.gather-menu-cta__inner {
		flex-direction: column;
		align-items: stretch;
	}
}

/* =========================================================================
   15. Print
   -------------------------------------------------------------------------
   A clean HTML-menu print experience: content only, white background, dark
   readable text. Hidden items never reach the DOM, so they never print.
   ========================================================================= */

@media print {

	/* Global chrome and interactive UI disappear. */
	.gather-site-header,
	.gather-mobile-nav,
	.gather-menu-toggle,
	.gather-announcement,
	.gather-action-bar,
	.gather-site-footer,
	.gather-skip-link,
	.gather-menu-switcher,
	.gather-menu-cta,
	.gather-menu__pdf,
	#wpadminbar {
		display: none !important;
	}

	body {
		background: #fff !important;
		color: #000 !important;
		font-size: 11pt;
	}

	.gather-main {
		padding-block: 0;
	}

	h1,
	h2,
	h3,
	.gather-menu-item__name,
	.gather-menu-item__price,
	.gather-menu-availability__label,
	.gather-menu-availability__today {
		color: #000 !important;
	}

	.gather-menu-item__description,
	.gather-menu-item__note,
	.gather-menu-item__state,
	.gather-menu-item__diet,
	.gather-menu-item__raw,
	.gather-menu-information,
	.gather-menu__effective,
	.gather-menu-availability__schedule {
		color: #222 !important;
	}

	/* No large ink-heavy blocks. */
	.gather-page__title::after {
		background: #000;
	}

	.gather-menu__image {
		display: none; /* Keep the printed menu content-led and ink-light. */
	}

	/* One column; keep each item and legend intact across page breaks. */
	.gather-menu__sections {
		display: block;
	}

	.gather-menu-section {
		margin-bottom: 18pt;
	}

	.gather-menu-section__title {
		break-after: avoid;
		page-break-after: avoid;
	}

	.gather-menu-item,
	.gather-menu-availability__row,
	.gather-menu-information__legend {
		break-inside: avoid;
		page-break-inside: avoid;
	}

	a {
		text-decoration: none;
		color: #000;
	}
}

/* =========================================================================
   16. Events & Specials (Phase 2D2)
   -------------------------------------------------------------------------
   The /events-specials/ landing page and the Promotion single. The Promotion
   Card itself is defined once in 13.4 and reused here unchanged; this section
   only adds the two page layouts. Square edges, minimal shadow, gold as a
   rule or an arrow — never a filled surface.
   ========================================================================= */

/* ---- 16.1 Landing masthead -------------------------------------------- */

.gather-events__masthead {
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-events__eyebrow {
	margin: 0 0 var(--wp--preset--spacing--12);
	color: var(--wp--preset--color--muted);
}

.gather-events__intro {
	max-width: 720px;
	margin: var(--wp--preset--spacing--24) 0 0;
	font-size: var(--wp--preset--font-size--body-large);
}

/* Editorial masthead image: a constant 3:2 crop at every width, bounded on
   wide screens so it sits on the masthead's left axis rather than swallowing
   the viewport. Never a panoramic band. */
.gather-events__media {
	max-width: 960px;
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-events__image {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

/* ---- 16.2 Current promotion listing ----------------------------------- */

.gather-events__list {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--24);
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 768px) {
	.gather-events__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.gather-events__list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.gather-events__item {
	display: flex;
}

.gather-events__item > .gather-promo-card {
	width: 100%;
}

.gather-events__empty {
	font-size: var(--wp--preset--font-size--body-large);
	color: var(--wp--preset--color--muted);
}

/* ---- 16.3 Promotion single masthead ----------------------------------- */

.gather-promotion__masthead {
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-promotion__eyebrow {
	margin: 0 0 var(--wp--preset--spacing--12);
	color: var(--wp--preset--color--muted);
}

/* Restrained informational treatment — a statement of fact, not an alert.
   The message is carried by the words; the rule is decoration only. */
.gather-promotion__notice {
	max-width: 720px;
	margin: var(--wp--preset--spacing--24) 0 0;
	padding-left: var(--wp--preset--spacing--12);
	border-left: 2px solid var(--wp--preset--color--brand-gold);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-promotion__summary {
	max-width: 720px;
	margin: var(--wp--preset--spacing--24) 0 0;
	font-size: var(--wp--preset--font-size--body-large);
}

.gather-promotion__media {
	max-width: 960px;
	margin-bottom: var(--wp--preset--spacing--32);
}

.gather-promotion__image {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

/* ---- 16.4 Promotion single body --------------------------------------- */

.gather-promotion__body {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32);
	align-items: start;
}

/* Desktop editorial split: the description holds the main column while the
   schedule, actions and terms stack in a narrower rail. Source order is
   unchanged (schedule → description → actions → terms), so the single column
   at narrow widths reads in the specified order without any reordering. */
@media (min-width: 1024px) {
	.gather-promotion__body {
		grid-template-columns: minmax(0, 1fr) 320px;
		column-gap: var(--wp--preset--spacing--64);
	}

	.gather-promotion__body .gather-promotion__schedule {
		grid-column: 2;
		grid-row: 1;
	}

	.gather-promotion__description {
		grid-column: 1;
		grid-row: 1 / span 3;
	}

	.gather-promotion__actions {
		grid-column: 2;
		grid-row: 2;
	}

	.gather-promotion__terms {
		grid-column: 2;
		grid-row: 3;
	}

	/* Nothing to split when there is no description. */
	.gather-promotion__body--no-description {
		grid-template-columns: minmax(0, 720px);
	}

	.gather-promotion__body--no-description .gather-promotion__schedule,
	.gather-promotion__body--no-description .gather-promotion__actions,
	.gather-promotion__body--no-description .gather-promotion__terms {
		grid-column: 1;
		grid-row: auto;
	}
}

.gather-promotion__schedule-heading {
	margin: 0 0 var(--wp--preset--spacing--12);
	color: var(--wp--preset--color--muted);
}

.gather-promotion__schedule-list {
	margin: 0;
	padding-top: var(--wp--preset--spacing--12);
	border-top: 1px solid var(--wp--preset--color--rule);
}

.gather-promotion__schedule-row {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--8) var(--wp--preset--spacing--16);
	padding-block: var(--wp--preset--spacing--8);
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.gather-promotion__schedule-label {
	flex: 0 0 auto;
	min-width: 72px;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-promotion__schedule-value {
	flex: 1 1 auto;
	margin: 0;
	font-weight: 600;
	color: var(--wp--preset--color--brand-navy);
	overflow-wrap: anywhere;
}

.gather-promotion__description > :last-child {
	margin-bottom: 0;
}

.gather-promotion__actions {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--16);
}

.gather-promotion__action {
	margin: 0;
}

/* Ordinary small print, never an alert. */
.gather-promotion__terms {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-promotion__nav {
	margin-top: var(--wp--preset--spacing--48);
	padding-top: var(--wp--preset--spacing--24);
	border-top: 1px solid var(--wp--preset--color--rule);
}

/* =========================================================================
   17. Private Events (Phase 2DE)
   -------------------------------------------------------------------------
   The /private-events/ lead-generation page: full-bleed hero (13.1 reused),
   editorial overview, alternating event-space compositions, text-led event
   types, packages, native <details> FAQs and the server-rendered enquiry
   form. Square edges, hairline rules, gold only as an accent. No JavaScript.
   ========================================================================= */

/* The page is full-bleed like the homepage; the hero sits under the header. */
body.page-template-private-events .gather-main {
	padding-block: 0;
}

/* ---- 17.1 Overview ---------------------------------------------------- */

.gather-pe-overview__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--48);
	align-items: start;
}

.gather-pe-overview__main {
	max-width: 720px;
}

.gather-pe-overview__main::before {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-bottom: var(--wp--preset--spacing--24);
	background: var(--wp--preset--color--brand-gold);
}

.gather-pe-overview__intro > :last-child {
	margin-bottom: 0;
}

/* Selling points: an editorial list with hairline rules — not feature cards. */
.gather-pe-points {
	margin: var(--wp--preset--spacing--32) 0 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--wp--preset--color--rule);
}

.gather-pe-points__item {
	position: relative;
	padding: var(--wp--preset--spacing--12) 0 var(--wp--preset--spacing--12) var(--wp--preset--spacing--32);
	border-bottom: 1px solid var(--wp--preset--color--rule);
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-4);
	line-height: 1.3;
	color: var(--wp--preset--color--brand-navy);
}

.gather-pe-points__item::before {
	content: "";
	position: absolute;
	left: 0;
	top: calc(var(--wp--preset--spacing--12) + 0.65em);
	width: 14px;
	height: 2px;
	background: var(--wp--preset--color--brand-gold);
}

/* Capacity and setting: two distinct labelled blocks in a narrow rail. */
.gather-pe-overview__aside {
	display: grid;
	gap: var(--wp--preset--spacing--32);
}

.gather-pe-overview__block {
	padding-top: var(--wp--preset--spacing--16);
	border-top: 2px solid var(--wp--preset--color--brand-navy);
}

.gather-pe-overview__label {
	margin: 0 0 var(--wp--preset--spacing--12);
	font-family: var(--wp--preset--font-family--dm-sans);
	color: var(--wp--preset--color--muted);
}

.gather-pe-overview__copy {
	margin: 0;
	color: var(--wp--preset--color--ink);
}

@media (min-width: 1024px) {
	.gather-pe-overview__inner {
		grid-template-columns: minmax(0, 1fr) 320px;
		column-gap: var(--wp--preset--spacing--96);
	}

	.gather-pe-overview__inner--single {
		grid-template-columns: minmax(0, 720px);
	}
}

/* ---- 17.2 Event spaces / options -------------------------------------- */

.gather-pe-spaces__list {
	display: grid;
	gap: var(--wp--preset--spacing--48);
}

.gather-pe-space {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--24);
	align-items: center;
}

.gather-pe-space__media {
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: var(--wp--preset--color--white);
}

.gather-pe-space__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.gather-pe-space__body {
	max-width: 560px;
}

.gather-pe-space--no-image .gather-pe-space__body {
	max-width: 720px;
}

.gather-pe-space__name {
	margin-bottom: var(--wp--preset--spacing--12);
}

/* Capacity: only populated rows exist; the words are exactly Seated / Standing. */
.gather-pe-space__capacity {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--8) var(--wp--preset--spacing--24);
	margin: 0 0 var(--wp--preset--spacing--16);
	padding: 0;
	list-style: none;
}

.gather-pe-space__capacity-item {
	display: inline-flex;
	align-items: baseline;
	gap: var(--wp--preset--spacing--8);
	font-size: var(--wp--preset--font-size--small);
	letter-spacing: 0.04em;
}

.gather-pe-space__capacity-label {
	color: var(--wp--preset--color--muted);
	text-transform: uppercase;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.14em;
}

.gather-pe-space__capacity-value {
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-4);
	font-weight: 600;
	line-height: 1;
	color: var(--wp--preset--color--brand-navy);
}

.gather-pe-space__description {
	margin-bottom: var(--wp--preset--spacing--16);
}

.gather-pe-space__features {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--8) var(--wp--preset--spacing--16);
	margin: 0 0 var(--wp--preset--spacing--16);
	padding: 0;
	list-style: none;
}

.gather-pe-space__feature {
	padding-left: var(--wp--preset--spacing--16);
	position: relative;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--ink);
}

.gather-pe-space__feature::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.75em;
	width: 8px;
	height: 2px;
	background: var(--wp--preset--color--brand-gold);
}

/* Ordinary small print, never an alert. */
.gather-pe-space__notes {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

@media (min-width: 1024px) {
	.gather-pe-space {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--wp--preset--spacing--64);
	}

	/* Alternate image left / image right; source order stays media-first. */
	.gather-pe-space--flip .gather-pe-space__media {
		order: 2;
	}

	.gather-pe-space--flip .gather-pe-space__body {
		order: 1;
		justify-self: end;
	}

	.gather-pe-space--no-image {
		grid-template-columns: minmax(0, 720px);
	}

	.gather-pe-space--no-image .gather-pe-space__body {
		order: 0;
		justify-self: start;
	}
}

/* ---- 17.3 Event types -------------------------------------------------- */

.gather-pe-types__inner {
	max-width: calc(960px + (2 * var(--gather-gutter)));
}

.gather-pe-types__list {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0 var(--wp--preset--spacing--48);
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--wp--preset--color--rule);
}

.gather-pe-types__item {
	padding-block: var(--wp--preset--spacing--16);
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.gather-pe-types__name {
	margin: 0;
	font-size: var(--wp--preset--font-size--display-4);
}

.gather-pe-types__description {
	margin: var(--wp--preset--spacing--4) 0 0;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

@media (min-width: 768px) {
	.gather-pe-types__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ---- 17.4 Packages ------------------------------------------------------ */

.gather-pe-packages__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32);
}

.gather-pe-package {
	padding-top: var(--wp--preset--spacing--16);
	border-top: 2px solid var(--wp--preset--color--brand-navy);
}

.gather-pe-package__title {
	margin-bottom: var(--wp--preset--spacing--12);
}

.gather-pe-package__description {
	margin-bottom: var(--wp--preset--spacing--16);
}

.gather-pe-package__action {
	margin: 0;
}

@media (min-width: 768px) {
	.gather-pe-packages__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--wp--preset--spacing--48);
	}
}

@media (min-width: 1024px) {
	.gather-pe-packages__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* ---- 17.5 FAQs (native details/summary) --------------------------------- */

.gather-pe-faqs__inner {
	max-width: calc(720px + (2 * var(--gather-gutter)));
}

.gather-pe-faqs__list {
	border-top: 1px solid var(--wp--preset--color--rule);
}

.gather-faq {
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.gather-faq__question {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--16);
	min-height: 44px;
	padding-block: var(--wp--preset--spacing--16);
	cursor: pointer;
	list-style: none;
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-4);
	font-weight: 600;
	line-height: 1.25;
	color: var(--wp--preset--color--brand-navy);
}

.gather-faq__question::-webkit-details-marker {
	display: none;
}

/* Open/closed state: a plus that becomes a minus. Gold, never a filled surface. */
.gather-faq__question::after {
	content: "+";
	flex: 0 0 auto;
	width: 24px;
	line-height: 1;
	font-family: var(--wp--preset--font-family--dm-sans);
	font-size: 22px;
	font-weight: 300;
	text-align: right;
	color: var(--wp--preset--color--brand-gold);
}

.gather-faq[open] > .gather-faq__question::after {
	content: "\2212";
}

.gather-faq__question:focus-visible {
	outline: 2px solid var(--wp--preset--color--brand-navy);
	outline-offset: 2px;
}

.gather-faq__answer {
	max-width: 640px;
	padding-bottom: var(--wp--preset--spacing--24);
}

.gather-faq__answer > :last-child {
	margin-bottom: 0;
}

/* ---- 17.6 Enquiry form --------------------------------------------------- */

.gather-pe-enquiry__inner {
	max-width: calc(880px + (2 * var(--gather-gutter)));
}

.gather-pe-enquiry__admin-note {
	margin: 0;
	padding-left: var(--wp--preset--spacing--12);
	border-left: 2px solid var(--wp--preset--color--brand-gold);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-form {
	display: block;
}

.gather-form__required-note {
	margin: 0 0 var(--wp--preset--spacing--24);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

/* Honeypot: removed from the visual flow and from assistive technology. */
.gather-form__hp {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
	opacity: 0;
}

.gather-form__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--24) var(--wp--preset--spacing--32);
}

.gather-form__field {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.gather-form__label {
	display: block;
	margin-bottom: var(--wp--preset--spacing--8);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--wp--preset--color--brand-navy);
}

.gather-form__required {
	font-weight: 400;
	color: var(--wp--preset--color--muted);
}

.gather-form__control {
	display: block;
	width: 100%;
	min-height: 48px;
	padding: var(--wp--preset--spacing--12) var(--wp--preset--spacing--16);
	border: 1px solid var(--wp--preset--color--muted);
	border-radius: 0;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--dm-sans);
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.4;
}

.gather-form__control:focus-visible {
	outline: 2px solid var(--wp--preset--color--brand-navy);
	outline-offset: 2px;
	border-color: var(--wp--preset--color--brand-navy);
}

.gather-form__textarea {
	min-height: 160px;
	resize: vertical;
}

.gather-form__select {
	appearance: none;
	-webkit-appearance: none;
	padding-right: var(--wp--preset--spacing--48);
	background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
	background-position: calc(100% - 22px) 50%, calc(100% - 16px) 50%;
	background-size: 6px 6px, 6px 6px;
	background-repeat: no-repeat;
}

/* Error state: text + border + rule, never colour alone. */
.gather-form__field--error .gather-form__control {
	border-color: var(--wp--preset--color--brand-navy);
	border-width: 2px;
}

.gather-form__error {
	margin: 0 0 var(--wp--preset--spacing--8);
	padding-left: var(--wp--preset--spacing--12);
	border-left: 2px solid var(--wp--preset--color--brand-navy);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--brand-navy);
}

.gather-form__summary {
	margin: 0 0 var(--wp--preset--spacing--32);
	padding: var(--wp--preset--spacing--16) var(--wp--preset--spacing--24);
	border: 2px solid var(--wp--preset--color--brand-navy);
	background: var(--wp--preset--color--white);
}

.gather-form__summary:focus-visible,
.gather-form__success:focus-visible {
	outline: 2px solid var(--wp--preset--color--brand-gold);
	outline-offset: 2px;
}

.gather-form__summary-heading {
	margin: 0;
	font-weight: 600;
	color: var(--wp--preset--color--brand-navy);
}

.gather-form__summary-list {
	margin: var(--wp--preset--spacing--12) 0 0;
	padding-left: 1.25em;
}

.gather-form__summary-list li + li {
	margin-top: var(--wp--preset--spacing--4);
}

.gather-form__summary-list li {
	padding-block: 2px;
	line-height: 1.6;
}

.gather-form__consent {
	padding-top: var(--wp--preset--spacing--16);
	border-top: 1px solid var(--wp--preset--color--rule);
}

/* A floated legend sits inside the fieldset like an ordinary label instead of
   being cut into the top border. */
.gather-form__consent .gather-form__label {
	float: left;
	width: 100%;
	padding: 0;
}

.gather-form__consent .gather-form__error,
.gather-form__consent .gather-form__check {
	clear: both;
}

.gather-form__check {
	display: flex;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--12);
}

.gather-form__checkbox {
	flex: 0 0 auto;
	width: 24px;
	height: 24px;
	margin: 2px 0 0;
	accent-color: var(--wp--preset--color--brand-navy);
}

.gather-form__check-label {
	/* The label extends the 44px target across the whole consent sentence. */
	min-height: 28px;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.6;
	color: var(--wp--preset--color--ink);
}

.gather-form__actions {
	margin-top: var(--wp--preset--spacing--32);
}

.gather-form__submit {
	min-width: 220px;
}

/* Success: a strong, calm statement carrying the inert conversion marker. */
.gather-form__success {
	max-width: 720px;
	padding: var(--wp--preset--spacing--32) 0 0;
	border-top: 2px solid var(--wp--preset--color--brand-navy);
}

.gather-form__success-heading {
	margin: 0;
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-3);
	font-weight: 600;
	line-height: 1.2;
	color: var(--wp--preset--color--brand-navy);
}

@media (min-width: 768px) {
	.gather-form__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gather-form__field--wide {
		grid-column: 1 / -1;
	}
}

/* =========================================================================
   18. Visit (Phase 2D3)
   -------------------------------------------------------------------------
   The /visit/ practical-information page: full-bleed hero (13.1 reused),
   a restrained practical block (address, directions, today, call), the
   weekly schedule and Special Hours as readable lists, the arrival note,
   an editorial location story with one context image, and the reservation
   band. Hairline rules and gold accents only — no cards, no map, no
   JavaScript. Every fact is server-rendered from Restaurant Settings.
   ========================================================================= */

/* The page is full-bleed like the homepage; the hero sits under the header. */
body.page-template-visit .gather-main {
	padding-block: 0;
}

/* ---- 18.1 Practical information ---------------------------------------- */

.gather-vp {
	background: var(--wp--preset--color--white);
}

.gather-vp__facts {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0;
	margin: 0;
	border-top: 1px solid var(--wp--preset--color--rule);
}

.gather-vp__fact {
	padding-block: var(--wp--preset--spacing--24);
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.gather-vp__fact dt {
	margin-bottom: var(--wp--preset--spacing--8);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}

.gather-vp__fact dd {
	margin: 0;
}

.gather-vp__address {
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-4);
	font-style: normal;
	line-height: 1.3;
	color: var(--wp--preset--color--brand-navy);
}

.gather-vp__hours,
.gather-vp__note {
	display: block;
}

.gather-vp__hours {
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-4);
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--brand-navy);
}

/* Closed / special states are carried by the words themselves; the rule
   colour is a secondary cue only. */
.gather-vp__fact--closed dd,
.gather-vp__fact--modified dd {
	padding-left: var(--wp--preset--spacing--16);
	border-left: 2px solid var(--wp--preset--color--brand-gold);
}

.gather-vp__note {
	margin-top: var(--wp--preset--spacing--4);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-vp__phone {
	display: inline-block;
	min-height: 44px;
	padding-block: calc((44px - 1.3em) / 2);
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-4);
	font-weight: 600;
	line-height: 1.3;
	text-decoration: none;
	color: var(--wp--preset--color--brand-navy);
}

.gather-vp__phone:hover {
	text-decoration: underline;
}

.gather-vp__action {
	min-width: 220px;
}

@media (max-width: 599.98px) {
	.gather-vp__action {
		display: flex;
		width: 100%;
	}
}

@media (min-width: 768px) {
	.gather-vp__facts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: var(--wp--preset--spacing--64);
	}
}

@media (min-width: 1024px) {
	.gather-vp__facts {
		column-gap: var(--wp--preset--spacing--96);
	}

	.gather-vp__fact {
		padding-block: var(--wp--preset--spacing--32);
	}
}

/* ---- 18.2 Weekly hours ---------------------------------------------------- */

.gather-vh__inner,
.gather-vs__inner,
.gather-va__inner {
	max-width: calc(960px + (2 * var(--gather-gutter)));
	margin-inline: auto;
}

.gather-week,
.gather-special {
	margin: 0;
	border-top: 1px solid var(--wp--preset--color--rule);
}

.gather-week__row,
.gather-special__row {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--4) var(--wp--preset--spacing--32);
	padding-block: var(--wp--preset--spacing--16);
	border-bottom: 1px solid var(--wp--preset--color--rule);
}

.gather-week__day,
.gather-special__date {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--wp--preset--spacing--12);
	font-family: var(--wp--preset--font-family--cormorant-garamond);
	font-size: var(--wp--preset--font-size--display-4);
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--brand-navy);
}

.gather-week__times,
.gather-special__detail {
	margin: 0;
	line-height: 1.5;
}

.gather-week__period,
.gather-special__state,
.gather-special__note,
.gather-week__closed {
	display: block;
}

.gather-week__closed,
.gather-special__row--closed .gather-special__state {
	color: var(--wp--preset--color--muted);
}

/* The current weekday: a text indicator plus a gold rule — never colour alone. */
.gather-week__today {
	font-family: var(--wp--preset--font-family--dm-sans);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand-gold);
}

.gather-week__row--today {
	padding-left: var(--wp--preset--spacing--16);
	border-left: 2px solid var(--wp--preset--color--brand-gold);
}

.gather-special__note {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

@media (min-width: 600px) {
	.gather-week__row,
	.gather-special__row {
		grid-template-columns: minmax(0, 220px) minmax(0, 1fr);
		align-items: baseline;
	}
}

/* Manager-only note when the schedule is incomplete (never for visitors). */
.gather-admin-note {
	padding-block: var(--wp--preset--spacing--24);
}

.gather-admin-note__text {
	max-width: 720px;
	margin: 0;
	padding: var(--wp--preset--spacing--12) var(--wp--preset--spacing--16);
	border: 1px dashed var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

/* ---- 18.3 Arrival & Parking ------------------------------------------------ */

.gather-va__copy {
	max-width: 720px;
}

.gather-va__copy > :last-child {
	margin-bottom: 0;
}

/* ---- 18.4 Location story ---------------------------------------------------- */

.gather-vl {
	background: var(--wp--preset--color--white);
}

.gather-vl__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32) var(--wp--preset--spacing--64);
	align-items: center;
}

.gather-vl__body {
	max-width: 720px;
}

.gather-vl__heading::after {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-top: var(--wp--preset--spacing--16);
	background: var(--wp--preset--color--brand-gold);
}

.gather-vl__heading {
	margin-bottom: var(--wp--preset--spacing--24);
}

.gather-vl__copy > :last-child {
	margin-bottom: 0;
}

.gather-vl__figure {
	margin: 0;
}

.gather-vl__media {
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: var(--wp--preset--color--warm-ivory);
}

.gather-vl__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.gather-vl__caption {
	margin-top: var(--wp--preset--spacing--12);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.gather-vl--image-only .gather-vl__figure {
	max-width: 960px;
}

@media (min-width: 1024px) {
	.gather-vl__inner {
		grid-template-columns: 6fr 6fr;
		gap: var(--wp--preset--spacing--96);
	}

	.gather-vl--no-image .gather-vl__inner,
	.gather-vl--image-only .gather-vl__inner {
		grid-template-columns: 1fr;
	}
}

/* ---- 18.5 Reservation band --------------------------------------------------- */

.gather-vr {
	padding-block: clamp(var(--wp--preset--spacing--48), 7vw, var(--wp--preset--spacing--96));
}

.gather-vr__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--24) var(--wp--preset--spacing--48);
}

.gather-vr__heading {
	margin: 0;
	font-size: var(--wp--preset--font-size--display-2);
	line-height: 1.1;
	color: var(--wp--preset--color--warm-ivory);
	text-wrap: balance;
}

.gather-vr__cta {
	min-width: 220px;
}

@media (max-width: 599.98px) {
	.gather-vr__inner {
		flex-direction: column;
		align-items: stretch;
	}

	.gather-vr__cta {
		width: 100%;
	}
}

/* =========================================================================
   19. About (Phase 2D4)
   -------------------------------------------------------------------------
   The /about/ editorial page: full-bleed hero (13.1 reused) followed by four
   optional editorial sections and the closing reservation band. The four
   sections share one template part and get their rhythm from surface
   (ivory / white), which side the photograph sits on, its proportion (3:2,
   4:3, square) and the column split (even, 7/5, 8/4) — never from generic
   cards. Source order is always heading, copy, image; on desktop the figure
   is simply placed in the other grid column, so the one-column phone reading
   order is unchanged. A hairline rule appears only where two sections of the
   same surface end up adjacent because the section between them is empty.
   ========================================================================= */

/* The page is full-bleed like the homepage; the hero sits under the header. */
body.page-template-about .gather-main {
	padding-block: 0;
}

/* ---- 19.1 Section surfaces and rhythm ---------------------------------- */

.gather-ab--ivory {
	background: var(--wp--preset--color--warm-ivory);
}

.gather-ab--white {
	background: var(--wp--preset--color--white);
}

/*
 * Sections alternate surfaces, so no divider is needed between them. When one
 * section is empty and two of the same surface meet, this hairline keeps them
 * from reading as a single block.
 */
.gather-ab--ivory + .gather-ab--ivory,
.gather-ab--white + .gather-ab--white {
	border-top: 1px solid var(--wp--preset--color--rule);
}

.gather-ab__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32);
	align-items: center;
}

/* ---- 19.2 Section copy -------------------------------------------------- */

.gather-ab__body {
	max-width: 720px;
}

.gather-ab__heading {
	margin-bottom: var(--wp--preset--spacing--24);
}

.gather-ab__heading::after {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-top: var(--wp--preset--spacing--16);
	background: var(--wp--preset--color--brand-gold);
}

.gather-ab__copy > :last-child {
	margin-bottom: 0;
}

/* ---- 19.3 Contextual internal link -------------------------------------- */

.gather-ab__link-wrap {
	margin: var(--wp--preset--spacing--24) 0 0;
}

.gather-ab__link {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--8);
	min-height: 44px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--body);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--wp--preset--color--brand-navy);
	border-bottom: 1px solid var(--wp--preset--color--brand-gold);
}

.gather-ab__link:hover,
.gather-ab__link:focus-visible {
	color: var(--wp--preset--color--brand-gold);
}

.gather-ab__arrow {
	color: var(--wp--preset--color--brand-gold);
	transition: transform 180ms ease;
}

.gather-ab__link:hover .gather-ab__arrow {
	transform: translateX(4px);
}

/* ---- 19.4 Section photography ------------------------------------------- */

.gather-ab__figure {
	margin: 0;
}

.gather-ab__media {
	overflow: hidden;
}

.gather-ab--white .gather-ab__media {
	background: var(--wp--preset--color--warm-ivory);
}

.gather-ab--ivory .gather-ab__media {
	background: var(--wp--preset--color--white);
}

.gather-ab--ratio-3-2 .gather-ab__media {
	aspect-ratio: 3 / 2;
}

.gather-ab--ratio-4-3 .gather-ab__media {
	aspect-ratio: 4 / 3;
}

.gather-ab--ratio-square .gather-ab__media {
	aspect-ratio: 1 / 1;
}

.gather-ab__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.gather-ab--image-only .gather-ab__figure {
	max-width: 960px;
}

/* ---- 19.5 Desktop composition ------------------------------------------- */

@media (min-width: 1024px) {
	.gather-ab__inner {
		gap: var(--wp--preset--spacing--96);
	}

	.gather-ab--split-even .gather-ab__inner {
		grid-template-columns: 1fr 1fr;
	}

	.gather-ab--split-text-wide.gather-ab--media-right .gather-ab__inner {
		grid-template-columns: 7fr 5fr;
	}

	.gather-ab--split-text-wide.gather-ab--media-left .gather-ab__inner {
		grid-template-columns: 5fr 7fr;
	}

	.gather-ab--split-media-narrow.gather-ab--media-right .gather-ab__inner {
		grid-template-columns: 8fr 4fr;
	}

	.gather-ab--split-media-narrow.gather-ab--media-left .gather-ab__inner {
		grid-template-columns: 4fr 8fr;
	}

	/*
	 * Alternating rhythm. This places the figure in the first column of a
	 * two-column row; it does not change the reading order, which stays
	 * heading, copy, image at every width.
	 */
	.gather-ab--media-left .gather-ab__body {
		grid-column: 2;
		grid-row: 1;
	}

	.gather-ab--media-left .gather-ab__figure {
		grid-column: 1;
		grid-row: 1;
	}

	/*
	 * A section with only copy, or only a photograph, carries no split or
	 * side class at all (see template-parts/about/section.php), so the
	 * single-column default above already applies and needs no override.
	 * The lone photograph is held to the editorial measure.
	 */
}

/* ---- 19.6 Closing reservation band --------------------------------------- */

.gather-ac {
	padding-block: clamp(var(--wp--preset--spacing--48), 7vw, var(--wp--preset--spacing--96));
}

.gather-ac__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--24) var(--wp--preset--spacing--48);
}

.gather-ac__heading {
	max-width: 720px;
	margin: 0;
	font-size: var(--wp--preset--font-size--display-2);
	line-height: 1.1;
	color: var(--wp--preset--color--warm-ivory);
	text-wrap: balance;
}

.gather-ac__cta {
	min-width: 220px;
}

@media (max-width: 599.98px) {
	.gather-ac__inner {
		flex-direction: column;
		align-items: stretch;
	}

	.gather-ac__cta {
		width: 100%;
	}
}

/* =========================================================================
   20. Gallery (Phase 2D4)
   -------------------------------------------------------------------------
   The /gallery/ page: a restrained masthead, then a deterministic mixed
   editorial grid. The pattern is fixed by the theme and keyed to each item's
   position, so nothing is reordered in PHP and no CSS `order` or dense
   auto-flow is used — source order, visual order and tab order are all the
   owner's order.

     phone   (<600px)   one column, proportions cycling 3:2, 4:5, 1:1
     tablet  (>=600px)  two columns, pairs cycling 3:2, 3:2, 4:5, 4:5
     desktop (>=1024px) six columns, repeating five-item block:
                          1  span 4  3:2   (wide feature)
                          2  span 2  4:5
                          3  span 2  4:3
                          4  span 2  1:1
                          5  span 2  4:3
                        which tiles exactly two rows and leaves the deliberate
                        negative space the design calls for.

   The viewer is the browser's native <dialog>; there is no lightbox library
   and no masonry script.
   ========================================================================= */

body.page-template-gallery .gather-main {
	padding-block: 0;
}

/* ---- 20.1 Masthead ------------------------------------------------------ */

.gather-gm {
	background: var(--wp--preset--color--warm-ivory);
	padding-block: clamp(var(--wp--preset--spacing--48), 7vw, var(--wp--preset--spacing--96));
}

.gather-gm__inner {
	max-width: calc(720px + (2 * var(--gather-gutter)));
}

.gather-gm__heading {
	margin-bottom: 0;
}

.gather-gm__intro {
	margin: var(--wp--preset--spacing--24) 0 0;
	font-size: var(--wp--preset--font-size--body-large);
	line-height: 1.5;
	color: var(--wp--preset--color--muted);
}

/* ---- 20.2 Grid ---------------------------------------------------------- */

.gather-gg {
	background: var(--wp--preset--color--white);
}

.gather-gg__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--32);
}

.gather-gg__item {
	margin: 0;
	min-width: 0;
}

.gather-gg__link {
	display: block;
	text-decoration: none;
}

.gather-gg__media {
	display: block;
	overflow: hidden;
	background: var(--wp--preset--color--warm-ivory);
}

.gather-gg__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 240ms ease;
}

.gather-gg__link:hover .gather-gg__image,
.gather-gg__link:focus-visible .gather-gg__image {
	transform: scale(1.02);
}

.gather-gg__caption {
	margin-top: var(--wp--preset--spacing--12);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
	color: var(--wp--preset--color--muted);
}

/* Phone: one column, three-step proportion cycle. */
.gather-gg__item:nth-child(3n + 1) .gather-gg__media {
	aspect-ratio: 3 / 2;
}

.gather-gg__item:nth-child(3n + 2) .gather-gg__media {
	aspect-ratio: 4 / 5;
}

.gather-gg__item:nth-child(3n + 3) .gather-gg__media {
	aspect-ratio: 1 / 1;
}

/* Tablet: a clean two-column composition; each row is internally even. */
@media (min-width: 600px) {
	.gather-gg__grid {
		grid-template-columns: repeat(2, 1fr);
		gap: var(--wp--preset--spacing--32);
	}

	.gather-gg__item:nth-child(4n + 1) .gather-gg__media,
	.gather-gg__item:nth-child(4n + 2) .gather-gg__media {
		aspect-ratio: 3 / 2;
	}

	.gather-gg__item:nth-child(4n + 3) .gather-gg__media,
	.gather-gg__item:nth-child(4n + 4) .gather-gg__media {
		aspect-ratio: 4 / 5;
	}
}

/* Desktop: the six-column editorial pattern. */
@media (min-width: 1024px) {
	.gather-gg__grid {
		grid-template-columns: repeat(6, 1fr);
		gap: var(--wp--preset--spacing--48) var(--wp--preset--spacing--32);
	}

	.gather-gg__item {
		grid-column: span 2;
		align-self: start;
	}

	.gather-gg__item:nth-child(5n + 1) {
		grid-column: span 4;
	}

	.gather-gg__item:nth-child(5n + 1) .gather-gg__media {
		aspect-ratio: 3 / 2;
	}

	.gather-gg__item:nth-child(5n + 2) .gather-gg__media {
		aspect-ratio: 4 / 5;
	}

	.gather-gg__item:nth-child(5n + 3) .gather-gg__media {
		aspect-ratio: 4 / 3;
	}

	.gather-gg__item:nth-child(5n + 4) .gather-gg__media {
		aspect-ratio: 1 / 1;
	}

	.gather-gg__item:nth-child(5n + 5) .gather-gg__media {
		aspect-ratio: 4 / 3;
	}
}

/* ---- 20.3 Empty state --------------------------------------------------- */

.gather-gg-empty {
	background: var(--wp--preset--color--white);
}

.gather-gg-empty__message {
	max-width: 640px;
	margin: 0;
	font-size: var(--wp--preset--font-size--body-large);
	color: var(--wp--preset--color--muted);
}

/* ---- 20.4 Image viewer (native <dialog>) --------------------------------- */

/*
 * A closed <dialog> is display:none, so nothing inside it is focusable or
 * reachable until the viewer is opened.
 */
.gather-gv {
	width: min(92vw, 1200px);
	max-width: 92vw;
	max-height: 92vh;
	padding: 0;
	border: 0;
	background: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--warm-ivory);
	overflow: hidden;
}

.gather-gv::backdrop {
	background: color-mix(in srgb, var(--wp--preset--color--brand-navy) 88%, transparent);
}

.gather-gv__inner {
	position: relative;
	display: flex;
	flex-direction: column;
	max-height: 92vh;
}

.gather-gv__close {
	position: absolute;
	inset-block-start: var(--wp--preset--spacing--12);
	inset-inline-end: var(--wp--preset--spacing--12);
	z-index: 1;
	min-height: 44px;
	padding: var(--wp--preset--spacing--8) var(--wp--preset--spacing--16);
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--small);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand-navy);
	background: var(--wp--preset--color--warm-ivory);
	border: 0;
	cursor: pointer;
}

.gather-gv__close:hover {
	background: var(--wp--preset--color--brand-gold);
}

.gather-gv :focus-visible {
	outline: 2px solid var(--wp--preset--color--brand-gold);
	outline-offset: 2px;
}

.gather-gv__figure {
	display: flex;
	flex-direction: column;
	min-height: 0;
	margin: 0;
}

.gather-gv__image {
	display: block;
	width: auto;
	max-width: 100%;
	max-height: calc(92vh - 96px);
	margin-inline: auto;
	object-fit: contain;
}

.gather-gv__caption {
	padding: var(--wp--preset--spacing--16) var(--wp--preset--spacing--24);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
	color: var(--wp--preset--color--warm-ivory);
}

.gather-gv__caption[hidden] {
	display: none;
}

/*
 * Scroll lock while the viewer is open. Deliberately a class of its own so it
 * can never clear, or be cleared by, the navigation drawer's lock.
 */
.gather-viewer-open,
.gather-viewer-open body {
	overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
	.gather-gg__image,
	.gather-ab__arrow {
		transition: none;
	}

	.gather-gg__link:hover .gather-gg__image,
	.gather-gg__link:focus-visible .gather-gg__image {
		transform: none;
	}

	.gather-ab__link:hover .gather-ab__arrow {
		transform: none;
	}
}

/* =========================================================================
   21. Breadcrumbs (Phase 3A)
   -------------------------------------------------------------------------
   Visible only on genuinely deep content — Menu singles and Promotion
   singles — where "where am I" needs answering. Top-level pages carry none.
   The trail is Rank Math's (corrected by Site Core), rendered here as a
   plain ordered list: real links, a plain-text current item with
   aria-current="page", and a decorative gold separator drawn in CSS so
   assistive technology never announces it. Text stays at the label size
   (13px) with 44px-tall touch targets.
   ========================================================================= */

.gather-breadcrumb {
	margin-bottom: var(--wp--preset--spacing--16);
}

.gather-breadcrumb__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0 var(--wp--preset--spacing--8);
	margin: 0;
	padding: 0;
	list-style: none;
}

.gather-breadcrumb__item {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--8);
	margin: 0;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}

/* Gold is an accent only: a short rule between items, never a text colour. */
.gather-breadcrumb__item + .gather-breadcrumb__item::before {
	content: "";
	display: inline-block;
	width: 10px;
	height: 2px;
	background: var(--wp--preset--color--brand-gold);
}

.gather-breadcrumb__link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--wp--preset--color--brand-navy);
	text-decoration: none;
	transition: color var(--gather-motion);
}

.gather-breadcrumb__link:hover {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.gather-breadcrumb__current {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--wp--preset--color--muted);
}

@media print {
	.gather-breadcrumb {
		display: none;
	}
}
