/* Northborough Events theme — generated from assets/css/src by tools/build-css.mjs. Do not edit directly. */
/* ---- 01-base.css ---- */
/* ==========================================================================
   Northborough Events — 01 Base: fonts, tokens, reset, typography, layout
   Source partials live in assets/css/src and are joined into main.css by
   `npm run css` (tools/build-css.mjs). Edit the partials, not main.css.
   ========================================================================== */

@font-face {
	font-family: "Fraunces";
	src: url("../fonts/fraunces-var.woff2") format("woff2");
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Fraunces";
	src: url("../fonts/fraunces-var-italic.woff2") format("woff2");
	font-weight: 100 900;
	font-style: italic;
	font-display: swap;
}
@font-face {
	font-family: "Atkinson Hyperlegible Next";
	src: url("../fonts/atkinson-next-var.woff2") format("woff2");
	font-weight: 200 800;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Atkinson Hyperlegible Next";
	src: url("../fonts/atkinson-next-var-italic.woff2") format("woff2");
	font-weight: 200 800;
	font-style: italic;
	font-display: swap;
}

:root {
	/* Oak — the green of the original logo, deepened */
	--oak-950: #0a2119;
	--oak-900: #0f3326;
	--oak-800: #134030;
	--oak-700: #17533d;
	--oak-600: #1f6b4e;
	--oak-500: #2f7f5d;
	--oak-300: #8dbfa5;
	--oak-100: #e2eee7;
	--oak-50: #f0f6f2;

	/* Acorn — the gold of the acorn */
	--acorn-700: #85570a; /* text-safe gold on light backgrounds (≥4.5:1) */
	--acorn-600: #b57a12;
	--acorn-500: #e3a92b;
	--acorn-400: #efc05a;
	--acorn-200: #f7e2b0;
	--acorn-100: #fbf0d6;

	/* Paper */
	--paper: #fbf7ee;
	--paper-2: #f5eedf;
	--linen: #efe5d0;
	--card: #fffdf8;

	/* Ink */
	--ink: #14231c;
	--ink-2: #33423b;
	--ink-3: #55625b;
	--line: rgba(20, 35, 28, 0.14);
	--line-strong: rgba(20, 35, 28, 0.28);

	--berry: #a3172b;
	--berry-100: #fbe8ea;
	--amber-100: #fff3d4;
	--amber-800: #5c3d00;

	--font-display: "Fraunces", "Iowan Old Style", Georgia, "Times New Roman", serif;
	--font-body: "Atkinson Hyperlegible Next", "Atkinson Hyperlegible", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;

	/* Fluid type: body never below 18px — comfortable for older readers */
	--step--1: clamp(0.95rem, 0.93rem + 0.1vw, 1rem);
	--step-0: clamp(1.125rem, 1.09rem + 0.18vw, 1.25rem);
	--step-1: clamp(1.28rem, 1.2rem + 0.4vw, 1.5rem);
	--step-2: clamp(1.5rem, 1.33rem + 0.85vw, 2rem);
	--step-3: clamp(1.8rem, 1.5rem + 1.5vw, 2.75rem);
	--step-4: clamp(2.15rem, 1.7rem + 2.3vw, 3.6rem);
	--step-5: clamp(2.55rem, 1.8rem + 3.8vw, 5.4rem);

	--space-3xs: 0.25rem;
	--space-2xs: 0.5rem;
	--space-xs: 0.75rem;
	--space-s: 1rem;
	--space-m: 1.5rem;
	--space-l: clamp(2rem, 1.6rem + 2vw, 3rem);
	--space-xl: clamp(3rem, 2.2rem + 4vw, 5.5rem);
	--space-2xl: clamp(4rem, 2.8rem + 6vw, 8rem);

	--gutter: clamp(1rem, 0.6rem + 2vw, 2.5rem);
	--container: 1240px;
	--container-narrow: 780px;
	--header-h: 72px;

	--radius-s: 8px;
	--radius: 14px;
	--radius-l: 22px;
	--radius-xl: 32px;

	--shadow-1: 0 1px 2px rgba(15, 51, 38, 0.06), 0 2px 8px rgba(15, 51, 38, 0.06);
	--shadow-2: 0 2px 4px rgba(15, 51, 38, 0.05), 0 14px 34px -10px rgba(15, 51, 38, 0.22);
	--shadow-3: 0 30px 70px -24px rgba(6, 22, 16, 0.55);

	--ease: cubic-bezier(0.2, 0.7, 0.2, 1);
	--ease-out: cubic-bezier(0.16, 1, 0.3, 1);

	--focus-ring: var(--oak-900);
	--notch-bg: var(--paper);

	--grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

@media (min-width: 1100px) {
	:root { --header-h: 88px; }
}

/* Reset ------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-padding-top: calc(var(--header-h) + 1rem);
}
@media (prefers-reduced-motion: no-preference) {
	html { scroll-behavior: smooth; }
}
body {
	margin: 0;
	background: var(--paper);
	color: var(--ink);
	font-family: var(--font-body);
	font-size: var(--step-0);
	line-height: 1.6;
	font-optical-sizing: auto;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}
html.menu-open, html.menu-open body { overflow: hidden; }
img, svg, video { display: block; max-width: 100%; height: auto; }
img { border-style: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
p, ul, ol, dl, figure, blockquote, address { margin: 0; }
:where(ul[class], ol[class]) { list-style: none; padding: 0; }
address { font-style: normal; }
[hidden] { display: none !important; }
:where(a) { color: var(--oak-700); text-decoration-thickness: 0.08em; text-underline-offset: 0.18em; }
:where(a):hover { color: var(--oak-900); text-decoration-thickness: 0.12em; }
:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--acorn-200); color: var(--ink); }

.icon { width: 1.25em; height: 1.25em; flex: none; }

/* Typography ---------------------------------------------------------------- */
h1, h2, h3, h4 {
	margin: 0;
	font-family: var(--font-display);
	font-weight: 600;
	line-height: 1.12;
	letter-spacing: -0.012em;
	color: inherit;
	font-variation-settings: "SOFT" 40, "WONK" 0;
	text-wrap: balance;
}
p { text-wrap: pretty; }

.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	margin-bottom: var(--space-xs);
	font-family: var(--font-body);
	font-size: var(--step--1);
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--acorn-700);
}
.eyebrow::before {
	content: "";
	width: 1.6em;
	height: 2px;
	border-radius: 2px;
	background: currentColor;
	opacity: 0.7;
}
.eyebrow--light { color: var(--acorn-400); }

.lede { font-size: var(--step-1); line-height: 1.5; color: var(--ink-2); }
.note { margin-top: var(--space-s); font-size: var(--step--1); color: var(--ink-3); }

.prose { color: var(--ink-2); }
.prose > * + * { margin-top: 1em; }
.prose h2 { font-size: var(--step-2); color: var(--oak-900); margin-top: 1.6em; }
.prose h3 { font-size: var(--step-1); color: var(--oak-900); margin-top: 1.4em; }
.prose ul, .prose ol { padding-left: 1.3em; }
.prose li + li { margin-top: 0.35em; }
.prose li::marker { color: var(--acorn-600); }
.prose strong { color: var(--ink); }
.prose blockquote { border-left: 4px solid var(--acorn-500); padding: 0.25em 0 0.25em 1em; font-family: var(--font-display); font-size: var(--step-1); color: var(--oak-900); }
.prose--page { font-size: var(--step-0); }
.prose .wp-block-details, .prose details { border-bottom: 1px solid var(--line); padding: 0; margin-top: 0; }
.prose .wp-block-details:first-of-type, .prose details:first-of-type { border-top: 1px solid var(--line); }
.prose .wp-block-details summary, .prose details summary {
	display: flex; align-items: center; justify-content: space-between; gap: 1rem;
	min-height: 3.5rem; padding: 0.9rem 0; cursor: pointer; list-style: none;
	font-weight: 700; color: var(--oak-900); font-size: var(--step-0);
}
.prose details summary::-webkit-details-marker { display: none; }
.prose details summary::after {
	content: ""; width: 0.65rem; height: 0.65rem; flex: none; margin-right: 0.3rem;
	border-right: 2.5px solid var(--oak-700); border-bottom: 2.5px solid var(--oak-700);
	transform: rotate(45deg) translateY(-3px); transition: transform 0.25s var(--ease);
}
.prose details[open] summary::after { transform: rotate(225deg) translateY(-1px); }
.prose details > :not(summary) { padding-bottom: 1rem; margin-top: 0; }
.prose details > p + p { margin-top: 0.75em; }

/* Layout -------------------------------------------------------------------- */
.container { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; }
.container--narrow { width: min(100% - 2 * var(--gutter), var(--container-narrow)); }
.section { position: relative; padding-block: var(--space-xl); }
.section--tight { padding-block: var(--space-l) var(--space-xl); }
.section--paper { background: var(--paper); --notch-bg: var(--paper); }
.section--linen { background: var(--linen); --notch-bg: var(--linen); }
.section--oak { background: var(--oak-900); color: var(--paper); --notch-bg: var(--oak-900); --focus-ring: var(--acorn-400); }
.section--oak a:not(.btn):not(.stretched-link) { color: var(--acorn-400); }

.section-heading { max-width: 46rem; margin-bottom: var(--space-l); }
.section-heading__title { font-size: var(--step-4); color: var(--oak-900); }
.section-heading__title em { font-style: italic; font-weight: 500; color: var(--oak-600); font-variation-settings: "SOFT" 100, "WONK" 1; }
.section-heading__title--sm { font-size: var(--step-2); margin-top: var(--space-l); margin-bottom: var(--space-xs); }
.section-heading__intro { margin-top: var(--space-s); font-size: var(--step-1); line-height: 1.5; color: var(--ink-2); }
.section-heading--light .section-heading__title { color: var(--paper); }
.section-heading--light .section-heading__title em { color: var(--acorn-400); }
.section-heading--light .section-heading__intro { color: rgba(251, 247, 238, 0.82); }
.section-heading--light .eyebrow { color: var(--acorn-400); }

.button-row { display: flex; flex-wrap: wrap; gap: var(--space-xs); align-items: center; }
.button-row--center { justify-content: center; }

.split { display: grid; gap: var(--space-l); }
@media (min-width: 900px) { .split { grid-template-columns: 1fr 1fr; gap: var(--space-xl); } }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link {
	position: absolute; left: 1rem; top: -100px; z-index: 1000;
	padding: 0.85rem 1.25rem; border-radius: var(--radius-s);
	background: var(--acorn-500); color: var(--ink); font-weight: 700; text-decoration: none;
}
.skip-link:focus { top: 1rem; }
.site-main:focus { outline: none; }

/* Makes a whole card clickable from one real link (no duplicate links for screen readers). */
.stretched-link::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.stretched-link { text-decoration: none; color: inherit; }
.stretched-link:focus-visible { outline: none; }
.stretched-link:focus-visible::after { outline: 3px solid var(--focus-ring); outline-offset: 4px; }

.text-link { display: inline-flex; align-items: center; gap: 0.45em; min-height: 44px; font-weight: 700; }
.text-link .icon { width: 1.05em; height: 1.05em; }
.text-link--light { color: var(--acorn-400) !important; }

.empty-note { padding: var(--space-l); text-align: center; color: var(--ink-3); }

/* ---- 02-chrome.css ---- */
/* ==========================================================================
   02 Chrome: buttons, badges, header, menus, festoon lights, page header
   ========================================================================== */

/* Buttons ------------------------------------------------------------------- */
.btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.6em;
	min-height: 3.25rem;
	padding: 0.7rem 1.5rem;
	border: 2px solid transparent;
	border-radius: 999px;
	font-family: var(--font-body);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: transform 0.22s var(--ease), box-shadow 0.22s var(--ease), background-color 0.2s, color 0.2s, border-color 0.2s;
	-webkit-tap-highlight-color: transparent;
}
.btn .icon { width: 1.25em; height: 1.25em; transition: transform 0.25s var(--ease); }
.btn:hover .icon-arrow-right { transform: translateX(4px); }
.btn:hover .icon-arrow-left { transform: translateX(-4px); }
.btn:active { transform: translateY(1px) scale(0.985); }

.btn--acorn {
	background: var(--acorn-500);
	color: var(--ink);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.45), 0 8px 20px -10px rgba(133, 87, 10, 0.75);
}
.btn--acorn:hover { background: #ebb43c; color: var(--ink); transform: translateY(-2px); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), 0 14px 26px -12px rgba(133, 87, 10, 0.8); }
.btn--oak { background: var(--oak-700); color: var(--paper); box-shadow: 0 8px 20px -12px rgba(15, 51, 38, 0.8); }
.btn--oak:hover { background: var(--oak-800); color: var(--paper); transform: translateY(-2px); }
.btn--ghost { border-color: var(--oak-700); color: var(--oak-800); background: transparent; }
.btn--ghost:hover { background: var(--oak-50); color: var(--oak-900); }
.btn--ghost-light { border-color: rgba(251, 247, 238, 0.55); color: var(--paper); background: rgba(255, 255, 255, 0.04); }
.btn--ghost-light:hover { border-color: var(--paper); background: rgba(255, 255, 255, 0.12); color: #fff; }
.btn--lg { min-height: 3.5rem; padding-inline: 1.8rem; font-size: 1.125rem; }
.btn--sm { min-height: 2.75rem; padding: 0.45rem 1.1rem; font-size: 1rem; }
.btn--block { width: 100%; }

/* Badges & chips ------------------------------------------------------------ */
.badge {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	padding: 0.32em 0.8em 0.32em 0.65em;
	border-radius: 999px;
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1.2;
	white-space: nowrap;
	background: var(--oak-100);
	color: var(--oak-800);
}
.badge__dot { width: 0.55em; height: 0.55em; border-radius: 50%; background: currentColor; }
.badge--available .badge__dot { background: #1f8a58; box-shadow: 0 0 0 3px rgba(31, 138, 88, 0.2); }
.badge--limited { background: var(--amber-100); color: var(--amber-800); }
.badge--limited .badge__dot { background: #d98a00; box-shadow: 0 0 0 3px rgba(217, 138, 0, 0.22); }
.badge--soldout, .badge--soldout-past { background: var(--ink); color: var(--paper); }
.badge--cancelled { background: var(--berry); color: #fff; }
.badge--postponed { background: var(--amber-100); color: var(--amber-800); }
.badge--ended { background: #e8e4da; color: #3f4842; }
.badge--soon, .badge--closed { background: #ece8de; color: var(--ink-2); }
@media (prefers-reduced-motion: no-preference) {
	.badge--available .badge__dot, .badge--limited .badge__dot { animation: pulse-dot 2.4s ease-in-out infinite; }
}
@keyframes pulse-dot { 50% { box-shadow: 0 0 0 6px transparent; } }

.chip {
	display: inline-flex;
	align-items: center;
	padding: 0.3em 0.85em;
	border-radius: 999px;
	font-size: 0.9375rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	background: color-mix(in srgb, var(--mood-accent, var(--acorn-500)) 22%, transparent);
	color: var(--mood-accent, var(--acorn-400));
	border: 1px solid color-mix(in srgb, var(--mood-accent, var(--acorn-500)) 45%, transparent);
}

/* Environment ribbon (non-production only) ---------------------------------- */
.env-ribbon {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;
	padding: 0.45rem var(--gutter);
	background: var(--amber-100);
	color: var(--amber-800);
	font-size: 0.875rem;
	font-weight: 700;
	text-align: center;
	line-height: 1.35;
}
.env-ribbon .icon { width: 1.1em; height: 1.1em; }

/* Header -------------------------------------------------------------------- */
.site-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: rgba(251, 247, 238, 0.94);
	backdrop-filter: saturate(1.4) blur(10px);
	-webkit-backdrop-filter: saturate(1.4) blur(10px);
	border-bottom: 1px solid transparent;
	transition: box-shadow 0.25s, border-color 0.25s;
}
/* Logged-in staff: sit below WordPress's fixed admin bar on desktop. Visitors never see it. */
@media (min-width: 783px) { .admin-bar .site-header { top: 32px; } }
.site-header.is-scrolled { border-bottom-color: var(--line); box-shadow: 0 6px 24px -14px rgba(15, 51, 38, 0.35); }
.site-header__inner { display: flex; align-items: center; gap: var(--space-s); min-height: var(--header-h); }

.brand { display: inline-flex; align-items: center; gap: 0.6rem; min-height: 44px; color: inherit; text-decoration: none; flex: none; }
.brand__mark { display: block; width: 46px; height: 46px; transition: transform 0.4s var(--ease-out); }
.brand__mark svg { width: 100%; height: 100%; }
a.brand:hover .brand__mark { transform: rotate(-8deg) scale(1.04); }
.brand__word { display: flex; flex-direction: column; line-height: 1; }
.brand__name {
	font-family: var(--font-display);
	font-size: 1.42rem;
	font-weight: 640;
	letter-spacing: -0.015em;
	color: var(--oak-800);
	font-variation-settings: "SOFT" 60, "WONK" 0, "opsz" 48;
}
.brand__events {
	display: flex;
	align-items: center;
	gap: 0.45em;
	margin-top: 0.28em;
	font-size: 0.66rem;
	font-weight: 800;
	letter-spacing: 0.42em;
	text-transform: uppercase;
	color: var(--acorn-700);
}
.brand__events::before, .brand__events::after { content: ""; height: 1.5px; flex: 1; background: var(--acorn-500); opacity: 0.8; }
.brand__events::after { margin-right: 0.42em; }
.brand--reverse .brand__name { color: var(--paper); }
.brand--reverse .brand__events { color: var(--acorn-400); }

.primary-nav { display: none; margin-left: auto; }
.primary-nav__list { display: flex; gap: 0.15rem; }
.primary-nav__list a {
	position: relative;
	display: block;
	padding: 0.6rem 0.8rem;
	border-radius: 999px;
	font-weight: 700;
	font-size: 1.03rem;
	color: var(--ink-2);
	text-decoration: none;
	transition: color 0.2s, background-color 0.2s;
}
.primary-nav__list a::after {
	content: "";
	position: absolute;
	left: 0.8rem;
	right: 0.8rem;
	bottom: 0.3rem;
	height: 2.5px;
	border-radius: 2px;
	background: var(--acorn-500);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.3s var(--ease-out);
}
.primary-nav__list a:hover { color: var(--oak-900); }
.primary-nav__list a:hover::after, .primary-nav__list .current-menu-item > a::after { transform: scaleX(1); }
.primary-nav__list .current-menu-item > a { color: var(--oak-900); }

.site-header__actions { display: flex; align-items: center; gap: 0.5rem; margin-left: auto; }
.header-call {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	min-width: 48px;
	min-height: 48px;
	border-radius: 999px;
	color: var(--oak-800);
	text-decoration: none;
	background: var(--oak-50);
	border: 1px solid var(--oak-100);
}
.header-call .icon { width: 1.35rem; height: 1.35rem; }
.header-call__text { display: none; flex-direction: column; line-height: 1.15; }
.header-call__label { font-size: 0.875rem; font-weight: 700; color: var(--ink-3); }
.header-call__number { font-weight: 800; font-size: 1.05rem; color: var(--oak-900); letter-spacing: 0.01em; }
.header-call:hover { background: var(--oak-100); color: var(--oak-900); }

.menu-toggle, .menu-close {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	min-height: 48px;
	padding: 0 1rem;
	border: 2px solid var(--oak-700);
	border-radius: 999px;
	background: transparent;
	color: var(--oak-800);
	font-weight: 800;
	font-size: 1rem;
}
.menu-toggle:hover, .menu-close:hover { background: var(--oak-50); }
.menu-toggle .icon, .menu-close .icon { width: 1.3rem; height: 1.3rem; }

@media (max-width: 429px) {
	.site-header__inner { gap: 0.5rem; }
	.brand { gap: 0.45rem; }
	.brand__mark { width: 38px; height: 38px; }
	.brand__name { font-size: 1.16rem; }
	.brand__events { font-size: 0.6rem; letter-spacing: 0.34em; }
	.menu-toggle { padding: 0 0.85rem; }
}
/* Very small phones: the phone number stays one tap away inside the menu. */
@media (max-width: 359px) {
	.header-call { display: none; }
}
@media (min-width: 1100px) {
	.primary-nav { display: block; }
	.site-header__actions { margin-left: var(--space-s); }
	.menu-toggle { display: none; }
	.brand__mark { width: 52px; height: 52px; }
	.brand__name { font-size: 1.55rem; }
}
@media (min-width: 1280px) {
	.header-call { padding: 0.35rem 1.1rem 0.35rem 0.5rem; }
	.header-call .icon { width: 2.2rem; height: 2.2rem; padding: 0.45rem; border-radius: 50%; background: var(--oak-700); color: var(--paper); }
	.header-call__text { display: flex; }
}

/* Mobile menu (dialog) ------------------------------------------------------ */
.mobile-menu { position: fixed; inset: 0; z-index: 100; }
.mobile-menu__backdrop { position: absolute; inset: 0; background: rgba(10, 33, 25, 0.55); opacity: 0; transition: opacity 0.26s; }
.mobile-menu__panel {
	position: absolute;
	inset: 0 0 0 auto;
	width: min(100%, 440px);
	display: flex;
	flex-direction: column;
	gap: var(--space-m);
	padding: 0.75rem var(--gutter) var(--space-l);
	overflow-y: auto;
	background: var(--paper);
	box-shadow: var(--shadow-3);
	transform: translateX(100%);
	transition: transform 0.32s var(--ease-out);
}
.mobile-menu.is-open .mobile-menu__backdrop { opacity: 1; }
.mobile-menu.is-open .mobile-menu__panel { transform: none; }
.mobile-menu__top { display: flex; align-items: center; justify-content: space-between; min-height: calc(var(--header-h) - 0.75rem); }
.mobile-menu__list { border-top: 1px solid var(--line); }
.mobile-menu__list li { border-bottom: 1px solid var(--line); }
.mobile-menu__list a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: 3.75rem;
	padding: 0.5rem 0.25rem;
	font-family: var(--font-display);
	font-size: 1.6rem;
	font-weight: 600;
	color: var(--oak-900);
	text-decoration: none;
}
.mobile-menu__list a::after { content: "→"; font-family: var(--font-body); font-size: 1.2rem; color: var(--acorn-600); transition: transform 0.25s var(--ease); }
.mobile-menu__list a:hover::after { transform: translateX(4px); }
.mobile-menu__list .current-menu-item > a { color: var(--oak-600); box-shadow: inset 4px 0 0 var(--acorn-500); padding-left: 0.9rem; }
.mobile-menu__help { margin-bottom: var(--space-xs); font-weight: 700; color: var(--ink-2); }
.mobile-menu__contact .contact-action { min-height: 4.25rem; } /* the same height whether or not a number is shown */
@media (prefers-reduced-motion: no-preference) {
	.mobile-menu.is-open .mobile-menu__list li { animation: menu-in 0.45s var(--ease-out) both; }
	.mobile-menu.is-open .mobile-menu__list li:nth-child(2) { animation-delay: 0.04s; }
	.mobile-menu.is-open .mobile-menu__list li:nth-child(3) { animation-delay: 0.08s; }
	.mobile-menu.is-open .mobile-menu__list li:nth-child(4) { animation-delay: 0.12s; }
	.mobile-menu.is-open .mobile-menu__list li:nth-child(5) { animation-delay: 0.16s; }
	.mobile-menu.is-open .mobile-menu__list li:nth-child(6) { animation-delay: 0.2s; }
}
@keyframes menu-in { from { opacity: 0; transform: translateX(18px); } }

/* Contact actions ----------------------------------------------------------- */
.contact-actions { display: grid; gap: 0.6rem; }
.contact-action {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	min-height: 3.75rem;
	padding: 0.65rem 1rem;
	border-radius: var(--radius);
	background: var(--card);
	border: 1px solid var(--line);
	color: var(--ink);
	text-decoration: none;
	transition: transform 0.2s var(--ease), box-shadow 0.2s, border-color 0.2s;
}
.contact-action:hover { transform: translateY(-2px); box-shadow: var(--shadow-2); border-color: var(--oak-300); color: var(--ink); }
.contact-action > .icon { width: 2.6rem; height: 2.6rem; padding: 0.6rem; border-radius: 50%; background: var(--oak-700); color: var(--paper); }
.contact-action > span { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.contact-action__label { font-weight: 800; color: var(--oak-900); }
.contact-action__value { color: var(--ink-2); overflow-wrap: anywhere; }
.contact-actions--footer .contact-action { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.16); color: var(--paper); }
.contact-actions--footer .contact-action:hover { background: rgba(255, 255, 255, 0.1); border-color: var(--acorn-400); }
.contact-actions--footer .contact-action > .icon { background: var(--acorn-500); color: var(--ink); }
.contact-actions--footer .contact-action__label { color: var(--paper); }
.contact-actions--footer .contact-action__value { color: rgba(251, 247, 238, 0.78); }
.contact-actions--inline { display: flex; flex-wrap: wrap; margin-top: var(--space-s); }
.contact-actions--cards { margin-block: var(--space-m); }
@media (min-width: 600px) { .contact-actions--cards { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } }

.social { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.social__link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 48px;
	padding: 0.4rem 1rem 0.4rem 0.6rem;
	border-radius: 999px;
	font-weight: 700;
	text-decoration: none;
	border: 1px solid var(--line-strong);
	color: var(--oak-800);
	transition: background-color 0.2s, transform 0.2s var(--ease);
}
.social__link:hover { background: var(--oak-50); transform: translateY(-1px); }
.social__link .icon { width: 1.5rem; height: 1.5rem; }
.social--footer .social__link { border-color: rgba(255, 255, 255, 0.22); color: var(--paper); }
.social--footer .social__link:hover { background: rgba(255, 255, 255, 0.08); color: #fff; }

/* Festoon lights ------------------------------------------------------------ */
.festoon { position: absolute; left: 0; right: 0; top: 0; width: 100%; height: 72px; pointer-events: none; overflow: visible; }
.festoon__wire { fill: none; stroke: rgba(255, 238, 200, 0.28); stroke-width: 1.6; }
.festoon__bulb path { stroke: rgba(255, 238, 200, 0.3); stroke-width: 1.4; }
.festoon__bulb ellipse { fill: #ffd889; }
.festoon__glow { fill: rgba(255, 205, 110, 0.18); }
@media (min-width: 900px) { .festoon { height: 96px; } }
@media (prefers-reduced-motion: no-preference) {
	.festoon__bulb { animation: twinkle 4.8s ease-in-out infinite; animation-delay: calc(var(--i) * -0.53s); }
}
@keyframes twinkle {
	0%, 100% { opacity: 1; }
	45% { opacity: 0.55; }
	55% { opacity: 0.9; }
}

/* Breadcrumbs --------------------------------------------------------------- */
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 0.25rem 0.5rem; margin: 0; padding: 0; list-style: none; font-size: 0.95rem; }
.breadcrumbs li { display: inline-flex; align-items: center; gap: 0.5rem; color: var(--ink-3); }
.breadcrumbs li + li::before { content: "/"; opacity: 0.55; }
.breadcrumbs a { display: inline-block; padding: 10px 6px; margin: -10px -6px; color: var(--ink-2); font-weight: 700; text-decoration: none; } /* 44px tap area, same layout */
.breadcrumbs a:hover { text-decoration: underline; }
.breadcrumbs--light li { color: rgba(255, 255, 255, 0.72); }
.breadcrumbs--light a { color: #fff; }

/* Page header --------------------------------------------------------------- */
.page-header {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: calc(var(--space-xl) + 1.5rem) 0 var(--space-xl);
	background: radial-gradient(120% 140% at 85% 0%, #1d5c43 0%, var(--oak-900) 55%, var(--oak-950) 100%);
	color: var(--paper);
	--focus-ring: var(--acorn-400);
}
.page-header::after { content: ""; position: absolute; inset: 0; z-index: -1; background-image: var(--grain); opacity: 0.07; mix-blend-mode: overlay; }
.page-header .breadcrumbs { margin-bottom: var(--space-m); }
.page-header .breadcrumbs li { color: rgba(251, 247, 238, 0.7); }
.page-header .breadcrumbs a { color: var(--paper); }
.page-header__title { font-size: var(--step-5); max-width: 18ch; color: var(--paper); line-height: 1.02; letter-spacing: -0.025em; }
.page-header__intro { margin-top: var(--space-m); max-width: 40rem; font-size: var(--step-1); line-height: 1.5; color: rgba(251, 247, 238, 0.85); }

/* ---- 03-home-cards.css ---- */
/* ==========================================================================
   03 Home & cards: hero, ticket cards, planning card, steps, types, archive
   ========================================================================== */

/* Colour moods: each event's page and card pick up the feel of its artwork. */
.mood-oak      { --mood-bg: #0f3326; --mood-bg-2: #1d5c43; --mood-accent: #efc05a; --mood-ink: #fbf7ee; }
.mood-midnight { --mood-bg: #0b0c12; --mood-bg-2: #3a2c12; --mood-accent: #f0c457; --mood-ink: #fbf7ee; }
.mood-festive  { --mood-bg: #4a0b16; --mood-bg-2: #8e1c2e; --mood-accent: #f4ca62; --mood-ink: #fff8ef; }
.mood-harvest  { --mood-bg: #2e1c10; --mood-bg-2: #6f4724; --mood-accent: #f2c47e; --mood-ink: #fff6ea; }
.mood-velvet   { --mood-bg: #240b2e; --mood-bg-2: #5c2266; --mood-accent: #f6b0cf; --mood-ink: #fff5fa; }
.mood-jukebox  { --mood-bg: #0b3133; --mood-bg-2: #166163; --mood-accent: #f5c552; --mood-ink: #f3fbfa; }

/* Home hero ----------------------------------------------------------------- */
.home-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: calc(var(--space-xl) + 2rem) 0 var(--space-xl);
	background: var(--oak-900);
	color: var(--paper);
	--notch-bg: var(--oak-900);
	--focus-ring: var(--acorn-400);
}
.home-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background-image: var(--grain); opacity: 0.08; mix-blend-mode: overlay; }
.home-hero__glow {
	position: absolute;
	inset: 0;
	z-index: -2;
	background:
		radial-gradient(60% 55% at 88% 18%, rgba(227, 169, 43, 0.22), transparent 70%),
		radial-gradient(70% 60% at 0% 100%, rgba(47, 127, 93, 0.45), transparent 70%),
		linear-gradient(180deg, var(--oak-900), var(--oak-950));
}
.home-hero__inner { display: grid; gap: var(--space-l); align-items: center; }
.home-hero__title {
	font-size: var(--step-5);
	line-height: 1.02;
	letter-spacing: -0.028em;
	font-weight: 620;
	max-width: 13ch;
	color: var(--paper);
	font-variation-settings: "SOFT" 60, "WONK" 0, "opsz" 144;
}
.home-hero__title em {
	display: block;
	font-style: italic;
	font-weight: 480;
	color: var(--acorn-400);
	font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 144;
}
.home-hero__lede { margin-block: var(--space-m) var(--space-l); max-width: 36rem; font-size: var(--step-1); line-height: 1.5; color: rgba(251, 247, 238, 0.86); }
.home-hero__next { display: inline-flex; align-items: center; gap: 0.6rem; margin-bottom: var(--space-xs); font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; font-size: var(--step--1); color: var(--acorn-400); }
.home-hero__next-dot { width: 0.6rem; height: 0.6rem; border-radius: 50%; background: var(--acorn-400); box-shadow: 0 0 0 4px rgba(239, 192, 90, 0.25); }
.home-hero__feature { width: 100%; max-width: 460px; justify-self: center; }
@media (min-width: 1024px) {
	.home-hero__inner { grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); gap: var(--space-xl); }
	.home-hero__feature { justify-self: end; }
	.home-hero__feature .ticket { transform: rotate(1.4deg); }
	.home-hero__feature .ticket:hover { transform: rotate(0) translateY(-6px); }
}
@media (prefers-reduced-motion: no-preference) {
	.home-hero__copy > * { animation: rise 0.8s var(--ease-out) both; }
	.home-hero__copy > :nth-child(2) { animation-delay: 0.06s; }
	.home-hero__copy > :nth-child(3) { animation-delay: 0.14s; }
	.home-hero__copy > :nth-child(4) { animation-delay: 0.2s; }
	.home-hero__feature { animation: rise 0.9s 0.18s var(--ease-out) both; }
}
@keyframes rise { from { opacity: 0; transform: translateY(18px); } }

/* Ticket card ----------------------------------------------------------------
   A printed-ticket metaphor: artwork, a perforated tear line with punched
   notches, a coloured date stub and the details. Whole card is one link. */
.ticket {
	position: relative;
	display: grid;
	grid-template-rows: auto 0 1fr;
	background: var(--card);
	border-radius: var(--radius-l);
	box-shadow: var(--shadow-2);
	color: var(--ink);
	transition: transform 0.35s var(--ease-out), box-shadow 0.35s var(--ease-out);
}
.ticket:hover { transform: translateY(-5px); box-shadow: 0 4px 8px rgba(15, 51, 38, 0.06), 0 26px 44px -16px rgba(15, 51, 38, 0.32); }
.ticket:focus-within { box-shadow: 0 0 0 3px var(--focus-ring), var(--shadow-2); }
.ticket__art {
	position: relative;
	overflow: hidden;
	aspect-ratio: 1;
	border-radius: var(--radius-l) var(--radius-l) 0 0;
	background: var(--mood-bg);
}
.ticket__art img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s var(--ease-out); }
.ticket:hover .ticket__art img { transform: scale(1.035); }
.ticket__perf { position: relative; border-top: 2px dashed var(--line-strong); margin-inline: 18px; }
.ticket__perf::before, .ticket__perf::after {
	content: "";
	position: absolute;
	top: -14px;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--notch-bg);
	box-shadow: inset 0 2px 3px rgba(15, 51, 38, 0.1);
}
.ticket__perf::before { left: -32px; }
.ticket__perf::after { right: -32px; }
.ticket__body { display: grid; grid-template-columns: auto 1fr; gap: var(--space-s); padding: var(--space-m) var(--space-m) var(--space-m) var(--space-s); }
.ticket__stub {
	align-self: start;
	min-width: 4.4rem;
	padding: 0.55rem 0.4rem 0.6rem;
	border-radius: var(--radius);
	background: var(--mood-bg);
	color: var(--mood-ink);
	text-align: center;
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06);
}
.ticket__stub time { display: flex; flex-direction: column; align-items: center; line-height: 1; }
.stub__dow { font-size: 0.875rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; opacity: 0.85; }
.stub__day { margin-block: 0.12em 0.06em; font-family: var(--font-display); font-size: 2.35rem; font-weight: 650; letter-spacing: -0.03em; color: var(--mood-accent); font-variation-settings: "SOFT" 80, "opsz" 72; }
.stub__mon { font-size: 0.95rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
.stub__year { margin-top: 0.3em; font-size: 0.875rem; font-weight: 700; opacity: 0.8; }
.ticket__main { display: flex; flex-direction: column; min-width: 0; }
.ticket__eyebrow { font-size: 0.9rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--acorn-700); }
.ticket__title { margin-top: 0.3rem; font-size: var(--step-2); line-height: 1.12; color: var(--oak-900); }
.ticket__title a { text-decoration: none; color: inherit; }
.ticket__meta { display: grid; gap: 0.35rem; margin-top: var(--space-xs); color: var(--ink-2); font-size: 1.02rem; }
.ticket__meta li { display: flex; align-items: flex-start; gap: 0.55rem; }
.ticket__meta .icon { margin-top: 0.18em; width: 1.15rem; height: 1.15rem; color: var(--oak-600); }
.ticket__summary { margin-top: var(--space-xs); color: var(--ink-2); font-size: 1.02rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ticket__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.6rem 1rem; margin-top: auto; padding-top: var(--space-s); }
.ticket__price { display: flex; align-items: baseline; gap: 0.35rem; color: var(--ink-2); font-size: 0.98rem; }
.ticket__price__amount { font-family: var(--font-display); font-size: 1.9rem; font-weight: 650; letter-spacing: -0.02em; color: var(--oak-900); line-height: 1; }
.ticket__cta { display: inline-flex; align-items: center; gap: 0.45rem; margin-top: var(--space-s); font-weight: 800; color: var(--oak-700); }
.ticket__cta .icon { transition: transform 0.3s var(--ease); }
.ticket:hover .ticket__cta .icon { transform: translateX(5px); }
.ticket__countdown {
	position: absolute;
	left: 0.85rem;
	top: 0.85rem;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.4rem 0.8rem;
	border-radius: 999px;
	background: rgba(10, 20, 15, 0.78);
	backdrop-filter: blur(6px);
	color: #fff;
	font-weight: 800;
	font-size: 0.92rem;
}
.ticket__countdown .icon { width: 1rem; height: 1rem; color: var(--acorn-400); }

/* Horizontal ticket on wider screens. */
@media (min-width: 720px) {
	.ticket--ticket { grid-template-columns: minmax(220px, 38%) 0 1fr; grid-template-rows: none; }
	/* The full square poster sits centred on its mood colour, so no artwork text is ever cropped. */
	.ticket--ticket .ticket__art { display: grid; align-content: center; aspect-ratio: auto; border-radius: var(--radius-l) 0 0 var(--radius-l); }
	.ticket--ticket .ticket__art img { aspect-ratio: 1; height: auto; }
	.ticket--ticket .ticket__perf { border-top: 0; border-left: 2px dashed var(--line-strong); margin: 18px 0; }
	.ticket--ticket .ticket__perf::before, .ticket--ticket .ticket__perf::after { left: -14px; right: auto; }
	.ticket--ticket .ticket__perf::before { top: -32px; }
	.ticket--ticket .ticket__perf::after { top: auto; bottom: -32px; }
	.ticket--ticket .ticket__body { padding: var(--space-l) var(--space-l) var(--space-l) var(--space-m); gap: var(--space-m); }
	.ticket--ticket .stub__day { font-size: 2.8rem; }
	.ticket--ticket .ticket__stub { min-width: 5.2rem; padding-block: 0.8rem; }
}

/* Tablet: the hero's featured card sits side by side (like the diary cards) instead of a tall poster. */
@media (min-width: 720px) and (max-width: 1023px) {
	.home-hero__feature { max-width: none; justify-self: stretch; }
	.home-hero__feature .ticket--feature { grid-template-columns: minmax(220px, 38%) 0 1fr; grid-template-rows: none; }
	.home-hero__feature .ticket--feature .ticket__art { display: grid; align-content: center; aspect-ratio: auto; border-radius: var(--radius-l) 0 0 var(--radius-l); }
	.home-hero__feature .ticket--feature .ticket__art img { aspect-ratio: 1; height: auto; }
	.home-hero__feature .ticket--feature .ticket__perf { border-top: 0; border-left: 2px dashed var(--line-strong); margin: 18px 0; }
	.home-hero__feature .ticket--feature .ticket__perf::before, .home-hero__feature .ticket--feature .ticket__perf::after { left: -14px; right: auto; }
	.home-hero__feature .ticket--feature .ticket__perf::before { top: -32px; }
	.home-hero__feature .ticket--feature .ticket__perf::after { top: auto; bottom: -32px; }
	.home-hero__feature .ticket--feature .ticket__body { padding: var(--space-l) var(--space-l) var(--space-l) var(--space-m); gap: var(--space-m); }
}

.ticket-list { display: grid; gap: var(--space-m); }
.ticket-list--stacked { gap: var(--space-l); }
@media (min-width: 1100px) {
	.ticket-list--with-planning { grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); align-items: stretch; }
	.ticket-list--with-planning > .ticket:only-of-type ~ .planning-card { min-height: 100%; }
	.ticket-list--with-planning > :only-child { grid-column: 1 / -1; }
}

/* Poster card (archive) ------------------------------------------------------ */
.ticket--poster { grid-template-rows: auto 1fr; box-shadow: var(--shadow-1); border-radius: var(--radius); }
.ticket--poster .ticket__art { border-radius: var(--radius) var(--radius) 0 0; }
.ticket--poster .ticket__body { display: flex; flex-direction: column; gap: 0.25rem; padding: 0.85rem 1rem 1.1rem; }
.ticket--poster .ticket__date { font-size: 1rem; font-weight: 700; color: var(--ink-3); }
.ticket--poster .ticket__title { margin-top: 0; font-size: 1.12rem; line-height: 1.25; }
.ticket--poster .ticket__eyebrow { order: -1; font-size: 0.9rem; }
.ticket__badge { position: absolute; left: 0.6rem; bottom: 0.6rem; font-size: 0.9rem; }
.ticket--poster.is-cancelled .ticket__art img { filter: grayscale(0.9) contrast(0.9); opacity: 0.7; }
.ticket--poster.is-cancelled .ticket__title { text-decoration: line-through; text-decoration-color: rgba(163, 23, 43, 0.6); text-decoration-thickness: 2px; }

/* Planning card -------------------------------------------------------------- */
.planning-card {
	position: relative;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
	padding: var(--space-l) var(--space-m);
	border-radius: var(--radius-l);
	background: var(--oak-800);
	color: var(--paper);
	--focus-ring: var(--acorn-400);
}
.planning-card__leaf { position: absolute; right: -2.5rem; top: -1.5rem; width: 11rem; color: rgba(255, 255, 255, 0.06); transform: rotate(24deg); pointer-events: none; }
.planning-card .eyebrow { color: var(--acorn-400); }
.planning-card__title { font-size: var(--step-2); color: var(--paper); max-width: 18ch; }
.planning-card p { color: rgba(251, 247, 238, 0.84); }
.planning-card .social { margin-top: var(--space-xs); }
.planning-card .social__link { border-color: rgba(255, 255, 255, 0.25); color: var(--paper); }
.planning-card .social__link:hover { background: rgba(255, 255, 255, 0.08); }
.planning-card__phone { display: flex; align-items: center; gap: 0.5rem; margin-top: auto; padding-top: var(--space-s); font-weight: 800; font-size: 1.15rem; }
.planning-card__phone a { display: inline-flex; align-items: center; min-height: 44px; color: var(--acorn-400); text-decoration: none; }
.home-hero .planning-card { background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.14); }

/* How booking works ---------------------------------------------------------- */
.how-booking__inner { display: grid; gap: var(--space-l); }
@media (min-width: 1024px) { .how-booking__inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: var(--space-xl); align-items: start; } }
.steps { display: grid; gap: var(--space-s); counter-reset: step; }
.step {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: var(--space-s);
	padding: var(--space-m);
	border-radius: var(--radius-l);
	background: var(--card);
	box-shadow: var(--shadow-1);
}
.step__num {
	display: grid;
	place-items: center;
	width: 3rem;
	height: 3rem;
	border-radius: 50%;
	background: var(--oak-700);
	color: var(--acorn-400);
	font-family: var(--font-display);
	font-size: 1.5rem;
	font-weight: 650;
}
.step__title { font-size: var(--step-1); color: var(--oak-900); margin-bottom: 0.3rem; }
.step p { color: var(--ink-2); }
.step--link { display: block; padding: 0; background: none; box-shadow: none; }
.steps--row { gap: var(--space-m); }
@media (min-width: 900px) { .steps--row { grid-template-columns: repeat(3, 1fr); } .steps--row .step { grid-template-columns: 1fr; } }

.paper-ticket {
	display: grid;
	grid-template-columns: 1fr auto;
	max-width: 440px;
	margin-top: var(--space-l);
	border-radius: 14px;
	background: #fffaf0;
	color: var(--ink);
	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.04), 0 22px 40px -22px rgba(15, 51, 38, 0.55);
	transform: rotate(-2.5deg);
	background-image: repeating-linear-gradient(135deg, rgba(227, 169, 43, 0.06) 0 2px, transparent 2px 10px);
}
.paper-ticket__main { display: flex; flex-direction: column; gap: 0.2rem; padding: 1.2rem 1.3rem; border-right: 2px dashed rgba(20, 35, 28, 0.25); }
.paper-ticket__brand { display: flex; align-items: center; gap: 0.45rem; font-size: 0.78rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--oak-700); }
.paper-ticket__brand svg { width: 1.6rem; height: 1.6rem; }
.paper-ticket__event { margin-top: 0.5rem; font-family: var(--font-display); font-size: 1.35rem; font-weight: 650; line-height: 1.15; color: var(--oak-900); }
.paper-ticket__date { font-weight: 700; color: var(--ink-2); }
.paper-ticket__venue { font-size: 0.9rem; color: var(--ink-3); }
.paper-ticket__stub { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 1rem 1.2rem; text-transform: uppercase; font-weight: 800; letter-spacing: 0.14em; font-size: 0.75rem; color: var(--oak-700); }
.paper-ticket__stub strong { font-family: var(--font-display); font-size: 2.4rem; letter-spacing: 0; color: var(--acorn-600); line-height: 1; }

/* Event types ---------------------------------------------------------------- */
.type-grid { display: grid; gap: var(--space-s); }
@media (min-width: 600px) { .type-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .type-grid { grid-template-columns: repeat(3, 1fr); gap: var(--space-m); } }
.type-tile {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	display: flex;
	min-height: 15rem;
	border-radius: var(--radius-l);
	background: var(--mood-bg);
	color: var(--mood-ink);
	--focus-ring: var(--acorn-400);
	transition: transform 0.35s var(--ease-out), box-shadow 0.35s;
}
.type-tile:hover { transform: translateY(-4px); box-shadow: var(--shadow-2); }
.type-tile__art { position: absolute; inset: 0; z-index: -1; }
.type-tile__art img { width: 100%; height: 100%; object-fit: cover; opacity: 0.45; filter: saturate(1.1); transition: transform 0.8s var(--ease-out), opacity 0.4s; }
.type-tile:hover .type-tile__art img { transform: scale(1.06); opacity: 0.55; }
.type-tile::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 10%, color-mix(in srgb, var(--mood-bg) 92%, transparent) 72%); }
.type-tile__body { display: flex; flex-direction: column; justify-content: flex-end; gap: 0.35rem; width: 100%; padding: var(--space-m); }
.type-tile__icon { display: grid; place-items: center; width: 2.6rem; height: 2.6rem; margin-bottom: auto; border-radius: 50%; background: var(--mood-accent); color: var(--mood-bg); }
.type-tile__title { font-size: var(--step-2); color: inherit; }
.type-tile__desc { font-size: 1rem; line-height: 1.45; opacity: 0.9; }
.type-tile__count { font-size: 0.9rem; font-weight: 700; color: var(--mood-accent); }

/* Archive rail ---------------------------------------------------------------- */
.archive-rail__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--space-s); margin-bottom: var(--space-l); }
.archive-rail__head .section-heading { margin-bottom: 0; }
.rail { overflow: hidden; }
.rail__track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(200px, 62vw);
	gap: var(--space-s);
	padding: 0.5rem max(var(--gutter), calc((100vw - var(--container)) / 2)) 1.5rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: max(var(--gutter), calc((100vw - var(--container)) / 2));
	scrollbar-width: thin;
	scrollbar-color: rgba(255, 255, 255, 0.3) transparent;
}
.rail__track:focus-visible { outline-offset: -3px; }
.rail__item { scroll-snap-align: start; }
@media (min-width: 600px) { .rail__track { grid-auto-columns: 240px; } }
@media (min-width: 1024px) { .rail__track { grid-auto-columns: 260px; gap: var(--space-m); } }
.section--oak .ticket--poster { background: var(--oak-800); color: var(--paper); box-shadow: none; border: 1px solid rgba(255, 255, 255, 0.08); }
.section--oak .ticket--poster .ticket__title { color: var(--paper); }
.section--oak .ticket--poster .ticket__date { color: rgba(251, 247, 238, 0.72); }
.section--oak .ticket--poster .ticket__eyebrow { color: var(--acorn-400); }

/* Poster grid & past-events filter --------------------------------------------- */
.poster-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-s); }
@media (min-width: 720px) { .poster-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-m); } }
@media (min-width: 1100px) { .poster-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 359px) { .poster-grid { grid-template-columns: 1fr; } }
.year-group + .year-group { margin-top: var(--space-l); }
.year-group__title { display: flex; align-items: center; gap: var(--space-s); margin-bottom: var(--space-m); font-size: var(--step-3); color: var(--oak-900); }
.year-group__title::after { content: ""; flex: 1; height: 2px; background: linear-gradient(90deg, var(--acorn-500), transparent); opacity: 0.6; }
.filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1rem; margin-bottom: var(--space-l); }
.filter-bar__label { font-weight: 800; color: var(--ink-2); }
.filter-bar__chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.filter-chip {
	min-height: 44px;
	padding: 0.4rem 1rem;
	border-radius: 999px;
	border: 2px solid var(--line-strong);
	background: var(--card);
	font-weight: 700;
	color: var(--ink-2);
	transition: background-color 0.2s, border-color 0.2s, color 0.2s;
}
.filter-chip:hover { border-color: var(--oak-600); color: var(--oak-900); }
.filter-chip[aria-pressed="true"] { background: var(--oak-700); border-color: var(--oak-700); color: var(--paper); }
.filter-bar__count { font-size: 0.95rem; color: var(--ink-3); }
.archive-note { margin-top: var(--space-xl); padding: var(--space-m); border-radius: var(--radius); border: 1px dashed var(--line-strong); text-align: center; color: var(--ink-3); }
.type-history { margin-top: var(--space-xl); }

/* Visiting / facts / venue ------------------------------------------------------ */
.visit__inner { display: grid; gap: var(--space-l); }
@media (min-width: 1024px) { .visit__inner { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: var(--space-xl); align-items: start; } }
.visit__address { display: flex; gap: 0.75rem; margin-bottom: var(--space-m); font-size: var(--step-1); line-height: 1.45; color: var(--ink-2); }
.visit__address .icon { width: 1.6rem; height: 1.6rem; margin-top: 0.2rem; color: var(--acorn-600); }
.visit__address strong { color: var(--oak-900); }
.fact-cards { display: grid; gap: var(--space-s); }
@media (min-width: 600px) { .fact-cards { grid-template-columns: 1fr 1fr; } }
.fact-card { padding: var(--space-m); border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-1); }
.fact-card .icon { width: 2.4rem; height: 2.4rem; padding: 0.5rem; margin-bottom: var(--space-xs); border-radius: 12px; background: var(--oak-50); color: var(--oak-700); }
.fact-card h3 { font-size: var(--step-1); color: var(--oak-900); margin-bottom: 0.3rem; }
.fact-card p { color: var(--ink-2); font-size: 1.02rem; }

.cta-band { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-m); }
.cta-band__title { font-size: var(--step-2); color: var(--oak-900); margin-bottom: 0.3rem; }
.cta-band p { color: var(--ink-2); }
.cta-band--card { padding: var(--space-l); border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-1); }

.rail__item > .ticket { height: 100%; }

/* ---- 04-event.css ---- */
/* ==========================================================================
   04 Event page: hero, facts, sections, booking panel, mobile booking bar
   ========================================================================== */

.event-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: var(--space-m) 0 var(--space-xl);
	background: var(--mood-bg);
	color: var(--mood-ink);
	--focus-ring: var(--mood-accent);
}
.event-hero__backdrop { position: absolute; inset: -12%; z-index: -2; opacity: 0.5; }
.event-hero__backdrop img { width: 100%; height: 100%; object-fit: cover; filter: blur(56px) saturate(1.35); transform: scale(1.15); }
.event-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		radial-gradient(80% 70% at 85% 30%, color-mix(in srgb, var(--mood-bg-2) 55%, transparent), transparent 70%),
		linear-gradient(180deg, color-mix(in srgb, var(--mood-bg) 55%, transparent) 0%, var(--mood-bg) 92%);
}
.event-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background-image: var(--grain); opacity: 0.09; mix-blend-mode: overlay; pointer-events: none; }

.event-hero__inner { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; }
.event-hero__inner > * { grid-column: 1; }
.event-hero .breadcrumbs { margin-bottom: var(--space-m); }
.event-hero__eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.9rem; margin-bottom: var(--space-xs); }
.event-hero__presenter { font-size: 0.98rem; font-weight: 700; opacity: 0.85; }
.event-hero__title {
	font-size: var(--step-5);
	line-height: 1.02;
	letter-spacing: -0.028em;
	font-weight: 620;
	max-width: 16ch;
	color: var(--mood-ink);
	font-variation-settings: "SOFT" 60, "WONK" 0, "opsz" 144;
}
.event-hero__poster { margin-block: var(--space-m) 0; }
.event-hero__summary { margin-top: var(--space-m); max-width: 38rem; font-size: var(--step-1); line-height: 1.5; color: color-mix(in srgb, var(--mood-ink) 88%, transparent); }

.poster-frame {
	position: relative;
	max-width: 440px;
	margin: 0;
	border-radius: var(--radius-l);
	box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.12), var(--shadow-3);
	overflow: hidden;
	background: var(--mood-bg-2);
}
.poster-frame img { width: 100%; aspect-ratio: 1; object-fit: cover; }

.event-facts {
	display: grid;
	gap: 1px;
	margin-top: var(--space-l);
	border-radius: var(--radius-l);
	overflow: hidden;
	background: rgba(255, 255, 255, 0.14);
	border: 1px solid rgba(255, 255, 255, 0.14);
}
.event-facts__item { display: grid; gap: 0.2rem; padding: 0.95rem 1.1rem; background: color-mix(in srgb, var(--mood-bg) 82%, transparent); backdrop-filter: blur(8px); }
.event-facts dt { display: flex; align-items: center; gap: 0.5rem; font-size: 0.9rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--mood-accent); }
.event-facts dt .icon { width: 1.1rem; height: 1.1rem; }
.event-facts dd { margin: 0; font-size: 1.18rem; font-weight: 700; line-height: 1.35; }
.event-facts__note { display: block; font-size: 1rem; font-weight: 400; opacity: 0.82; }
@media (min-width: 600px) { .event-facts { grid-template-columns: 1fr 1fr; } }

.event-hero__actions { margin-top: var(--space-l); }
.event-hero .btn--ghost-light { border-color: color-mix(in srgb, var(--mood-ink) 50%, transparent); }
.share-feedback { margin-top: 0.5rem; min-height: 1.5em; font-weight: 700; color: var(--mood-accent); }

.status-banner {
	display: flex;
	gap: 0.85rem;
	margin-bottom: var(--space-m);
	padding: 1rem 1.15rem;
	border-radius: var(--radius);
	background: rgba(255, 255, 255, 0.1);
	border: 1px solid rgba(255, 255, 255, 0.18);
}
.status-banner .icon { width: 1.6rem; height: 1.6rem; flex: none; margin-top: 0.1rem; }
.status-banner__title { font-weight: 800; font-size: 1.15rem; }
.status-banner--cancelled { background: var(--berry); border-color: transparent; color: #fff; }
.status-banner--postponed { background: var(--amber-100); color: var(--amber-800); }

@media (min-width: 1024px) {
	.event-hero { padding-block: var(--space-l) var(--space-xl); }
	.event-hero__inner { grid-template-columns: minmax(0, 1fr) minmax(300px, 420px); column-gap: var(--space-xl); }
	.event-hero__poster { grid-column: 2; grid-row: 1 / span 9; align-self: center; margin: 0; }
	.poster-frame { transform: rotate(2deg); transition: transform 0.6s var(--ease-out); }
	.poster-frame:hover { transform: rotate(0) scale(1.01); }
}
@media (prefers-reduced-motion: no-preference) {
	.event-hero__inner > * { animation: rise 0.75s var(--ease-out) both; }
	.event-hero__title { animation-delay: 0.05s; }
	.event-hero__poster { animation-delay: 0.12s; }
	.event-facts { animation-delay: 0.16s; }
}

/* Layout below the hero ------------------------------------------------------- */
.event-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas: "a" "aside" "b";
	gap: var(--space-l);
	padding-block: var(--space-l) var(--space-xl);
}
.event-layout__a { grid-area: a; }
.event-layout__aside { grid-area: aside; outline: none; }
.event-layout__b { grid-area: b; }
.event-layout__a, .event-layout__b { display: grid; gap: var(--space-l); align-content: start; }
@media (min-width: 1024px) {
	.event-layout { grid-template-columns: minmax(0, 1fr) 390px; grid-template-areas: "a aside" "b aside"; column-gap: var(--space-xl); row-gap: var(--space-l); }
	/*
	 * Sticky at every desktop height. It stays inside its grid column (which ends before the
	 * "You might also like"/footer area), so it can never overlap the footer. If a window is too
	 * short for the whole panel, it scrolls inside itself rather than cutting off its end.
	 */
	.event-layout__aside .booking-panel {
		position: sticky;
		top: calc(var(--header-h) + 1rem);
		margin-top: calc(-1 * var(--space-xl));
		max-height: calc(100vh - var(--header-h) - 2rem);
		max-height: calc(100dvh - var(--header-h) - 2rem);
		overflow-y: auto;
		overscroll-behavior: contain;
		scrollbar-width: thin;
	}
}
/* Logged-in staff see WordPress's fixed 32px admin bar on desktop: keep the panel clear of it. */
@media (min-width: 1024px) {
	.admin-bar .event-layout__aside .booking-panel { top: calc(var(--header-h) + 1rem + 32px); max-height: calc(100vh - var(--header-h) - 2rem - 32px); }
}
/* Shorter desktop windows (most laptops): tighter spacing so the whole panel fits. */
@media (min-width: 1024px) and (max-height: 900px) {
	.event-layout__aside .booking-panel__head { padding: 1rem 1.25rem 1.15rem; }
	.event-layout__aside .booking-panel__price { margin-block: 0 0.45rem; }
	.event-layout__aside .booking-panel__price span { font-size: 2.5rem; }
	.event-layout__aside .booking-panel__deposit { margin-bottom: 0.55rem; }
	.event-layout__aside .booking-panel__body { gap: 0.75rem; padding: 1rem 1.25rem 1.1rem; }
	.event-layout__aside .book-primary { gap: 0.4rem; }
	.event-layout__aside .book-call { padding: 0.55rem 0.8rem; }
	.event-layout__aside .book-call > .icon { width: 2.2rem; height: 2.2rem; padding: 0.45rem; }
	.event-layout__aside .booking-panel__delivery { padding-top: 0.6rem; }
}

.event-section__title { font-size: var(--step-3); color: var(--oak-900); margin-bottom: var(--space-s); }
.event-section__title::before { content: ""; display: block; width: 2.6rem; height: 4px; margin-bottom: 0.85rem; border-radius: 2px; background: var(--acorn-500); }
.event-section .prose { font-size: var(--step-0); }
.event-section .prose p:first-child { font-size: var(--step-1); line-height: 1.5; color: var(--ink); }

.included-list { display: grid; gap: 0.6rem; }
@media (min-width: 600px) { .included-list { grid-template-columns: 1fr 1fr; } }
.included-list li { display: flex; align-items: flex-start; gap: 0.7rem; padding: 0.85rem 1rem; border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow-1); font-weight: 700; color: var(--ink); }
.included-list .icon { width: 1.6rem; height: 1.6rem; padding: 0.3rem; border-radius: 50%; background: var(--oak-700); color: var(--acorn-400); stroke-width: 2.4; }

.performer-list { display: grid; gap: var(--space-s); }
@media (min-width: 600px) { .performer-list { grid-template-columns: 1fr 1fr; } }
.performer { display: flex; gap: 0.9rem; padding: var(--space-m); border-radius: var(--radius-l); background: var(--oak-900); color: var(--paper); }
.performer__icon { display: grid; place-items: center; flex: none; width: 3rem; height: 3rem; border-radius: 50%; background: var(--acorn-500); color: var(--ink); }
.performer__name { font-size: var(--step-1); color: var(--paper); }
.performer p { margin-top: 0.2rem; color: rgba(251, 247, 238, 0.82); font-size: 1rem; }

.timeline { position: relative; display: grid; gap: 0; padding-left: 0; }
.timeline__item { position: relative; display: grid; grid-template-columns: 7.5rem 1fr; gap: var(--space-s); padding: 0.9rem 0 0.9rem 1.6rem; border-bottom: 1px solid var(--line); }
.timeline__item::before { content: ""; position: absolute; left: 0.2rem; top: 1.35rem; width: 0.75rem; height: 0.75rem; border-radius: 50%; background: var(--acorn-500); box-shadow: 0 0 0 4px var(--acorn-100); }
.timeline__item::after { content: ""; position: absolute; left: 0.52rem; top: 2.3rem; bottom: -1rem; width: 2px; background: var(--acorn-200); }
.timeline__item:last-child::after { display: none; }
.timeline__time { font-family: var(--font-display); font-weight: 650; font-size: 1.15rem; color: var(--oak-800); }
.timeline__what { color: var(--ink-2); }
@media (max-width: 479px) { .timeline__item { grid-template-columns: 1fr; gap: 0.15rem; } }

.know-grid { display: grid; gap: var(--space-s); }
@media (min-width: 600px) { .know-grid { grid-template-columns: 1fr 1fr; } }
.know-card { padding: var(--space-m); border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-1); }
.know-card > .icon { width: 2.4rem; height: 2.4rem; padding: 0.5rem; margin-bottom: 0.6rem; border-radius: 12px; background: var(--acorn-100); color: var(--acorn-700); }
.know-card h3 { font-size: var(--step-1); color: var(--oak-900); margin-bottom: 0.25rem; }
.know-card p { color: var(--ink-2); }

.venue-card { display: grid; gap: var(--space-m); padding: var(--space-m); border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-1); }
@media (min-width: 720px) { .venue-card:not(.venue-card--stacked) { grid-template-columns: 1fr 1fr; padding: var(--space-l); } }
.venue-card__main { display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; }
.venue-card__name { font-size: var(--step-2); color: var(--oak-900); }
.venue-card address { color: var(--ink-2); margin-bottom: 0.5rem; }
.venue-card__facts { display: grid; gap: var(--space-s); }
.venue-card__facts dt { display: flex; align-items: center; gap: 0.5rem; font-weight: 800; color: var(--oak-900); }
.venue-card__facts dt .icon { color: var(--acorn-600); }
.venue-card__facts dd { margin: 0.15rem 0 0; color: var(--ink-2); }

.accordion { border-top: 1px solid var(--line); }
.accordion__item { border-bottom: 1px solid var(--line); }
.accordion__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 3.75rem;
	padding: 0.9rem 0.25rem;
	cursor: pointer;
	list-style: none;
	font-weight: 800;
	font-size: var(--step-0);
	color: var(--oak-900);
}
.accordion__item summary::-webkit-details-marker { display: none; }
.accordion__item summary .icon { flex: none; width: 2rem; height: 2rem; padding: 0.35rem; border-radius: 50%; background: var(--oak-50); color: var(--oak-700); transition: transform 0.3s var(--ease), background-color 0.2s; }
.accordion__item summary:hover .icon { background: var(--oak-100); }
.accordion__item[open] summary .icon { transform: rotate(180deg); background: var(--acorn-200); }
.accordion__body { padding: 0 0.25rem 1.1rem; color: var(--ink-2); }

.delivery-grid { display: grid; gap: var(--space-s); }
@media (min-width: 600px) { .delivery-grid { grid-template-columns: 1fr 1fr; } }
.delivery-card { padding: var(--space-m); border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-1); }
.delivery-card h3 { font-size: var(--step-1); color: var(--oak-900); margin-bottom: var(--space-xs); }
.icon-list { display: grid; gap: 0.6rem; }
.icon-list li { display: flex; align-items: flex-start; gap: 0.65rem; color: var(--ink-2); }
.icon-list .icon { margin-top: 0.15rem; color: var(--oak-600); }
.icon-list em { font-style: normal; color: var(--ink-3); }
.icon-list--large li { font-size: var(--step-0); }
.icon-list--large .icon { width: 1.6rem; height: 1.6rem; }
.sponsor-line { padding: var(--space-s) var(--space-m); border-radius: var(--radius); background: var(--paper-2); color: var(--ink-2); text-align: center; }

/* Booking panel ------------------------------------------------------------------ */
.booking-panel { position: relative; border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-2); }
.booking-panel__head {
	position: relative;
	overflow: hidden;
	padding: var(--space-m) var(--space-m) calc(var(--space-m) + 4px);
	border-radius: var(--radius-l) var(--radius-l) 0 0;
	background: var(--mood-bg);
	color: var(--mood-ink);
}
.booking-panel__head::after { content: ""; position: absolute; inset: 0; background: radial-gradient(90% 120% at 100% 0%, color-mix(in srgb, var(--mood-bg-2) 80%, transparent), transparent 70%); pointer-events: none; }
.booking-panel__head > * { position: relative; z-index: 1; }
.booking-panel__label { font-size: 0.9rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--mood-accent); }
.booking-panel__price { display: flex; align-items: baseline; gap: 0.5rem; margin-block: 0.15rem 0.75rem; font-weight: 700; }
.booking-panel__price span { font-family: var(--font-display); font-size: 3rem; font-weight: 650; line-height: 1; letter-spacing: -0.03em; color: var(--mood-ink); }
.booking-panel__perf { position: relative; height: 0; border-top: 2px dashed var(--line-strong); margin: 0 18px; }
/* Ticket notches: half-discs drawn inside the card edge (a full circle half outside the card made the
   scrollable desktop panel 14px wider than itself, which showed as a horizontal scrollbar). */
.booking-panel__perf::before, .booking-panel__perf::after { content: ""; position: absolute; top: -14px; width: 13px; height: 26px; background: var(--notch-bg); box-shadow: inset 0 2px 3px rgba(15, 51, 38, 0.1); }
.booking-panel__perf::before { left: -18px; border-radius: 0 13px 13px 0; }
.booking-panel__perf::after { right: -18px; border-radius: 13px 0 0 13px; }
.booking-panel__body { display: grid; gap: var(--space-m); padding: var(--space-m); }
.booking-panel__note { display: flex; gap: 0.6rem; font-weight: 700; color: var(--ink-2); }
.booking-panel__note .icon { margin-top: 0.15rem; color: var(--oak-600); }
.booking-panel__message { font-family: var(--font-display); font-size: var(--step-1); font-weight: 600; color: var(--oak-900); }
.booking-panel__sub { font-weight: 800; color: var(--ink-2); }
.booking-panel__delivery { display: flex; align-items: center; gap: 0.6rem; padding-top: var(--space-s); border-top: 1px solid var(--line); font-size: 0.98rem; color: var(--ink-3); }
.booking-panel__delivery .icon { color: var(--oak-600); }

.book-primary { display: grid; gap: 0.6rem; }
.book-primary__hint { font-size: 0.95rem; color: var(--ink-3); text-align: center; }
.book-divider { display: flex; align-items: center; gap: 0.75rem; font-size: 0.9rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-3); }
.book-divider::before, .book-divider::after { content: ""; flex: 1; height: 1px; background: var(--line); }

.deposit-box { padding: 0.9rem 1rem; border-radius: var(--radius); background: var(--acorn-100); border: 1px solid var(--acorn-200); color: var(--amber-800); }
.deposit-box__title { font-weight: 800; color: var(--ink); }

.qty { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.qty__label { font-weight: 800; color: var(--ink); }
.qty__control { display: inline-flex; align-items: center; border: 2px solid var(--line-strong); border-radius: 999px; background: #fff; overflow: hidden; }
.qty__btn { display: grid; place-items: center; width: 3rem; height: 3rem; border: 0; background: transparent; color: var(--oak-700); transition: background-color 0.2s; }
.qty__btn:hover { background: var(--oak-50); }
.qty__btn .icon { width: 1.3rem; height: 1.3rem; stroke-width: 2.4; }
.qty__input { width: 3.2rem; height: 3rem; border: 0; text-align: center; font-size: 1.35rem; font-weight: 800; background: transparent; -moz-appearance: textfield; appearance: textfield; }
.qty__input::-webkit-outer-spin-button, .qty__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.quick-book { display: grid; gap: var(--space-s); padding: var(--space-s); border-radius: var(--radius); background: var(--paper-2); }
.quick-book__total { display: flex; justify-content: space-between; align-items: baseline; font-weight: 700; color: var(--ink-2); }
.quick-book__total strong { font-family: var(--font-display); font-size: 1.6rem; color: var(--oak-900); }
.preview-tag { display: flex; gap: 0.45rem; font-size: 0.88rem; line-height: 1.4; color: var(--amber-800); }
.preview-tag .icon { width: 1.05rem; height: 1.05rem; margin-top: 0.1rem; }

.book-today__title { font-size: var(--step-1); color: var(--oak-900); margin-bottom: var(--space-xs); }
.book-today__list { display: grid; gap: var(--space-s); }
.book-today__list li { display: flex; gap: 0.8rem; }
.book-today__list li > .icon { flex: none; width: 2.4rem; height: 2.4rem; padding: 0.5rem; border-radius: 50%; background: var(--oak-50); color: var(--oak-700); }
.book-today__list div { display: flex; flex-direction: column; gap: 0.1rem; line-height: 1.4; }
.book-today__list strong { color: var(--ink); }
.book-today__list span { color: var(--ink-2); font-size: 1rem; }
.book-today__list a { display: inline-flex; align-items: center; gap: 0.35rem; font-weight: 800; }
.book-today__list a .icon { width: 1rem; height: 1rem; }
.book-today__phone { font-size: 1.3rem; text-decoration: none; }

.mini-events { display: grid; gap: 0.5rem; }
.mini-events a { display: flex; flex-direction: column; padding: 0.7rem 0.9rem; border-radius: var(--radius); background: var(--paper-2); text-decoration: none; color: var(--ink); transition: background-color 0.2s; }
.mini-events a:hover { background: var(--oak-50); }
.mini-events__date { font-size: 0.95rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: var(--acorn-700); }
.mini-events__title { font-weight: 800; color: var(--oak-900); }

/* Mobile booking bar ----------------------------------------------------------------- */
.book-bar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 40;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.7rem var(--gutter) calc(0.7rem + env(safe-area-inset-bottom));
	background: rgba(255, 253, 248, 0.97);
	backdrop-filter: blur(10px);
	border-top: 1px solid var(--line);
	box-shadow: 0 -12px 30px -18px rgba(15, 51, 38, 0.45);
	transform: translateY(110%);
	transition: transform 0.35s var(--ease-out);
}
.book-bar.is-shown { transform: none; }
.book-bar__info { display: flex; flex-direction: column; line-height: 1.2; }
.book-bar__price { font-family: var(--font-display); font-size: 1.5rem; font-weight: 650; color: var(--oak-900); }
.book-bar__price small { font-family: var(--font-body); font-size: 0.9rem; font-weight: 700; color: var(--ink-3); }
.book-bar__state { font-size: 0.95rem; font-weight: 700; color: var(--ink-2); }
body.has-book-bar .site-footer { padding-bottom: 5.5rem; }
@media (min-width: 1024px) { .book-bar { display: none; } }

/* Compact call link in the booking panel */
.book-call { display: flex; align-items: center; gap: 0.8rem; padding: 0.8rem 0.9rem; border-radius: var(--radius); background: var(--oak-50); color: var(--ink); text-decoration: none; transition: background-color 0.2s; }
.book-call:hover { background: var(--oak-100); color: var(--ink); }
.book-call > .icon { flex: none; width: 2.5rem; height: 2.5rem; padding: 0.55rem; border-radius: 50%; background: var(--oak-700); color: var(--paper); }
.book-call > span { display: flex; flex-direction: column; line-height: 1.3; }
.book-call__label { font-size: 0.95rem; color: var(--ink-2); }
.book-call strong { font-size: 1.25rem; color: var(--oak-900); letter-spacing: 0.01em; }
.booking-panel__body { gap: 1.1rem; }
.booking-panel__deposit { margin: -0.35rem 0 0.8rem; font-size: 0.98rem; line-height: 1.4; color: color-mix(in srgb, var(--mood-ink) 86%, transparent); }
.booking-panel__deposit::first-letter { text-transform: uppercase; }
.booking-panel__delivery { font-size: 0.92rem; }
.performer-list > :only-child { grid-column: 1 / -1; }
.note--strong { display: flex; align-items: flex-start; gap: 0.6rem; padding: 0.85rem 1rem; border-radius: var(--radius); background: var(--acorn-100); color: var(--amber-800); font-size: 1rem; font-weight: 700; }
.note--strong .icon { flex: none; margin-top: 0.1rem; }
@media (max-width: 599px) {
	.event-hero__actions .btn--acorn { flex: 1 1 100%; }
	.event-hero__actions .btn--ghost-light { flex: 1 1 0; padding-inline: 1rem; }
}

/* ---- 05-booking-pages-footer.css ---- */
/* ==========================================================================
   05 Booking request flow, info pages, footer, motion, print
   ========================================================================== */

.dev-notice {
	display: flex;
	gap: 0.75rem;
	margin-block: var(--space-m);
	padding: 0.95rem 1.1rem;
	border-radius: var(--radius);
	border: 2px dashed #c98a00;
	background: var(--amber-100);
	color: var(--amber-800);
	font-size: 1rem;
}
.dev-notice .icon { width: 1.4rem; height: 1.4rem; flex: none; margin-top: 0.1rem; }
.dev-badge { display: inline-block; margin-bottom: var(--space-s); padding: 0.3rem 0.8rem; border-radius: 999px; background: var(--amber-100); color: var(--amber-800); border: 1px dashed #c98a00; font-weight: 800; font-size: 0.9rem; }

.booking-page__top { position: relative; isolation: isolate; overflow: hidden; padding: var(--space-m) 0 var(--space-l); background: var(--mood-bg); color: var(--mood-ink); --focus-ring: var(--mood-accent); }
.booking-page__top::after { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(70% 120% at 90% 0%, color-mix(in srgb, var(--mood-bg-2) 75%, transparent), transparent 70%); }
.booking-page__top .breadcrumbs { margin-bottom: var(--space-s); }
.booking-page__title { font-size: var(--step-4); color: var(--mood-ink); }
.booking-page__event { margin-top: 0.3rem; font-weight: 700; color: var(--mood-accent); }

.booking-layout { display: grid; gap: var(--space-l); padding-bottom: var(--space-xl); }
@media (min-width: 1024px) {
	.booking-layout { grid-template-columns: minmax(0, 1fr) 360px; gap: var(--space-xl); align-items: start; }
	.order-summary { position: sticky; top: calc(var(--header-h) + 1.25rem); }
}
.booking-form, .booking-result { padding: var(--space-m); border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-1); scroll-margin-top: calc(var(--header-h) + 1rem); }
@media (min-width: 720px) { .booking-form, .booking-result { padding: var(--space-l); } }
.booking-result:focus { outline: none; }
.booking-closed { padding: var(--space-l); margin-bottom: var(--space-xl); border-radius: var(--radius-l); background: var(--card); text-align: center; }

.bprogress { display: none; }
.bprogress__mobile { margin-bottom: var(--space-m); padding-bottom: var(--space-s); border-bottom: 1px solid var(--line); font-weight: 800; color: var(--oak-800); }
@media (min-width: 800px) {
	.bprogress { display: flex; gap: 0.25rem; margin-bottom: var(--space-l); counter-reset: none; }
	.bprogress__mobile { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
	.bprogress__step { flex: 1; display: flex; flex-direction: column; gap: 0.35rem; padding-top: 0.7rem; border-top: 4px solid var(--line); font-size: 0.9rem; font-weight: 700; color: var(--ink-3); }
	.bprogress__num { display: none; }
	.bprogress__step.is-done { border-color: var(--oak-500); color: var(--oak-700); }
	.bprogress__step[aria-current="step"] { border-color: var(--acorn-500); color: var(--ink); }
}

.bstep { margin: 0; padding: 0; border: 0; min-width: 0; }
.bstep__title { font-size: var(--step-3); color: var(--oak-900); margin-bottom: var(--space-xs); }
.bstep__title:focus { outline: none; }
.bstep__intro { margin-bottom: var(--space-m); color: var(--ink-2); }
.form-progress-note { color: var(--ink-3); }

.field { display: flex; flex-direction: column; gap: 0.4rem; margin-bottom: var(--space-m); }
.field label, .field-group legend, .choice-group__legend { font-weight: 800; color: var(--ink); font-size: 1.08rem; }
.field__hint { margin-top: -0.15rem; color: var(--ink-3); font-size: 1rem; }
.field input[type="text"], .field input[type="tel"], .field input[type="email"], .field select, .field textarea {
	width: 100%;
	min-height: 3.25rem;
	padding: 0.7rem 0.9rem;
	border: 2px solid #6b7770;
	border-radius: 10px;
	background: #fff;
	font-size: 1.125rem;
	line-height: 1.3;
	transition: border-color 0.2s, box-shadow 0.2s;
}
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--oak-700); box-shadow: 0 0 0 4px rgba(23, 83, 61, 0.22); }
.field [aria-invalid="true"] { border-color: var(--berry); }
.field--short { max-width: 14rem; }
.field-row { display: grid; gap: 0 var(--space-s); }
@media (min-width: 600px) { .field-row { grid-template-columns: 1fr 1fr; } .field-row .field--short { max-width: none; } }
.field-group { margin: 0 0 var(--space-s); padding: 0; border: 0; }
.field-group legend { margin-bottom: 0.4rem; }
.field__error { display: flex; align-items: center; gap: 0.4rem; margin: 0.2rem 0 0.35rem; font-weight: 800; color: var(--berry); }
.field__error::before { content: "!"; display: grid; place-items: center; width: 1.3rem; height: 1.3rem; flex: none; border-radius: 50%; background: var(--berry); color: #fff; font-size: 0.85rem; }

.error-summary { margin-bottom: var(--space-m); padding: var(--space-s) var(--space-m); border: 3px solid var(--berry); border-radius: var(--radius); background: var(--berry-100); }
.error-summary:focus { outline: 3px solid var(--oak-900); outline-offset: 3px; }
.error-summary__title { font-size: var(--step-1); color: var(--berry); margin-bottom: 0.4rem; }
.error-summary ul { padding-left: 1.2em; }
.error-summary a { color: var(--berry); font-weight: 800; }

.ticket-rows { display: grid; gap: var(--space-s); margin-bottom: var(--space-m); }
.ticket-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-s); padding: var(--space-s) var(--space-m); border-radius: var(--radius); border: 2px solid var(--line); background: var(--paper); }
.ticket-row__info { display: flex; flex-direction: column; }
.ticket-row__name { font-weight: 800; font-size: 1.15rem; color: var(--oak-900); }
.ticket-row__price { color: var(--ink-2); }
.ticket-row__note { font-size: 0.95rem; color: var(--ink-3); }

.choice-group { margin: 0 0 var(--space-m); padding: 0; border: 0; display: grid; gap: 0.6rem; }
.choice-group__legend { margin-bottom: 0.6rem; }
.choice-row { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.choice {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: 0.8rem;
	padding: 1rem 1.1rem;
	border: 2px solid var(--line-strong);
	border-radius: var(--radius);
	background: #fff;
	cursor: pointer;
	transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;
}
.choice:hover { border-color: var(--oak-500); }
.choice input { flex: none; width: 1.4rem; height: 1.4rem; margin: 0.15rem 0 0; accent-color: var(--oak-700); }
.choice:has(input:checked) { border-color: var(--oak-700); background: var(--oak-50); box-shadow: 0 0 0 1px var(--oak-700); }
.choice:has(input:focus-visible) { outline: 3px solid var(--oak-900); outline-offset: 2px; }
.choice__body { display: flex; flex-direction: column; gap: 0.15rem; }
.choice__title { font-weight: 800; color: var(--ink); }
.choice__desc { color: var(--ink-2); font-size: 1rem; }
.choice__icon { display: grid; place-items: center; flex: none; width: 2.6rem; height: 2.6rem; border-radius: 12px; background: var(--oak-50); color: var(--oak-700); }
.choice--compact { min-width: 7rem; align-items: center; }
.choice--compact input { margin-top: 0; }

.check { display: flex; align-items: flex-start; gap: 0.75rem; margin-block: var(--space-s); cursor: pointer; }
.check input { flex: none; width: 1.5rem; height: 1.5rem; margin: 0.1rem 0 0; accent-color: var(--oak-700); }

.diet-details { display: grid; gap: var(--space-s); margin-bottom: var(--space-m); padding: var(--space-m); border-left: 4px solid var(--acorn-500); border-radius: 0 var(--radius) var(--radius) 0; background: var(--paper-2); }
.diet-guests { display: grid; gap: var(--space-s); }
.diet-guest { margin: 0; padding: var(--space-s) var(--space-m) 0; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.diet-guest legend { padding: 0 0.4rem; font-weight: 800; color: var(--oak-800); }
.allergy-notice { display: flex; gap: 0.7rem; padding: 0.9rem 1rem; border-radius: var(--radius); background: var(--amber-100); color: var(--amber-800); font-size: 1rem; }
.allergy-notice .icon { flex: none; width: 1.4rem; height: 1.4rem; margin-top: 0.1rem; }

.bnav { display: flex; flex-wrap: wrap-reverse; justify-content: space-between; gap: var(--space-s); margin-top: var(--space-l); padding-top: var(--space-m); border-top: 1px solid var(--line); }
.bnav [data-next], .bnav [data-confirm] { margin-left: auto; }
@media (max-width: 479px) { .bnav .btn { width: 100%; } .bnav [data-next], .bnav [data-confirm] { margin-left: 0; } }

.review { display: grid; gap: 0; border-top: 1px solid var(--line); margin-bottom: var(--space-m); }
.review__row { display: grid; grid-template-columns: 1fr auto; gap: 0.2rem 1rem; padding: 0.9rem 0; border-bottom: 1px solid var(--line); }
.review__row dt { grid-column: 1; font-weight: 800; color: var(--oak-900); }
.review__row dd { grid-column: 1; margin: 0; color: var(--ink-2); }
.review__change { grid-column: 2; grid-row: 1 / span 2; align-self: center; min-height: 44px; padding: 0 0.8rem; border: 0; background: none; color: var(--oak-700); font-weight: 800; text-decoration: underline; text-underline-offset: 0.2em; }

.order-summary__card { overflow: hidden; border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-2); }
.order-summary__event { display: flex; gap: 0.9rem; padding: var(--space-m); background: var(--mood-bg); color: var(--mood-ink); }
.order-summary__thumb { width: 84px; height: 84px; flex: none; border-radius: 12px; object-fit: cover; }
.order-summary__title { font-family: var(--font-display); font-weight: 650; font-size: 1.2rem; line-height: 1.2; }
.order-summary__meta { font-size: 0.95rem; opacity: 0.85; }
.order-summary__lines { display: grid; grid-template-columns: 1fr auto; gap: 0.4rem 1rem; padding: var(--space-m) var(--space-m) 0; color: var(--ink-2); }
.order-summary__lines dd { margin: 0; font-weight: 700; }
.order-summary__total { display: flex; justify-content: space-between; align-items: baseline; margin: var(--space-s) var(--space-m) 0; padding: var(--space-s) 0 var(--space-m); border-top: 2px dashed var(--line-strong); font-weight: 800; }
.order-summary__total strong { font-family: var(--font-display); font-size: 2rem; color: var(--oak-900); }
.order-summary__due { padding: 0 var(--space-m) var(--space-m); display: grid; gap: 0.3rem; }
.order-summary__due p { display: flex; justify-content: space-between; color: var(--ink-2); }
.order-summary__help { display: flex; gap: 0.5rem; margin-top: var(--space-s); padding: 0 0.5rem; color: var(--ink-2); }
.order-summary__help .icon { margin-top: 0.2rem; color: var(--oak-600); }

.result-card { overflow-wrap: anywhere; } /* long email addresses must not widen the page on phones */
.result-card h2 { font-size: var(--step-3); color: var(--oak-900); margin-bottom: var(--space-s); overflow-wrap: normal; }
.result-card p { color: var(--ink-2); margin-bottom: var(--space-s); }
.result-card .result-note { padding: 0.9rem 1rem; border-radius: var(--radius); background: var(--amber-100); color: var(--amber-800); }
.result-card .result-note a { color: inherit; font-weight: 700; }
.result-card .result-note--warn { background: var(--berry-100); color: var(--berry); border-left: 4px solid var(--berry); }
.result-steps { display: grid; gap: 0.6rem; margin-block: var(--space-m); counter-reset: r; }
.result-steps li { display: flex; gap: 0.75rem; align-items: flex-start; color: var(--ink-2); }
.result-steps li::before { counter-increment: r; content: counter(r); display: grid; place-items: center; flex: none; width: 1.8rem; height: 1.8rem; border-radius: 50%; background: var(--oak-700); color: var(--acorn-400); font-weight: 800; font-size: 0.95rem; }
.result-ref { display: inline-block; margin-block: 0.25rem var(--space-s); padding: 0.5rem 0.9rem; border-radius: var(--radius-s); background: var(--paper-2); font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-weight: 700; letter-spacing: 0.05em; }

/* Info pages ------------------------------------------------------------------------- */
.pay-grid { display: grid; gap: var(--space-s); }
@media (min-width: 900px) { .pay-grid { grid-template-columns: repeat(3, 1fr); gap: var(--space-m); } }
.pay-card { display: flex; flex-direction: column; gap: 0.6rem; padding: var(--space-m); border-radius: var(--radius-l); background: var(--card); box-shadow: var(--shadow-1); }
.pay-card__icon { display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: 14px; background: var(--oak-700); color: var(--acorn-400); }
.pay-card__icon .icon { width: 1.5rem; height: 1.5rem; }
.pay-card__title { font-size: var(--step-2); color: var(--oak-900); }
.pay-card p { color: var(--ink-2); }
.pay-card .text-link { margin-top: auto; }
.pay-card--feature { background: var(--oak-900); color: var(--paper); }
.pay-card--feature .pay-card__title { color: var(--paper); }
.pay-card--feature p { color: rgba(251, 247, 238, 0.85); }
.pay-card--feature .pay-card__icon { background: var(--acorn-500); color: var(--ink); }

.callout { display: flex; gap: var(--space-s); margin-top: var(--space-l); padding: var(--space-m); border-radius: var(--radius-l); background: var(--card); border-left: 6px solid var(--acorn-500); box-shadow: var(--shadow-1); }
.callout > .icon { width: 2rem; height: 2rem; flex: none; color: var(--oak-600); }
.callout__title { font-size: var(--step-1); color: var(--oak-900); margin-bottom: 0.3rem; }
.callout p { color: var(--ink-2); }

.contact-layout { display: grid; gap: var(--space-l); }
@media (min-width: 1024px) { .contact-layout { grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr); gap: var(--space-xl); align-items: start; } }
.venue-card--stacked { position: sticky; top: calc(var(--header-h) + 1.25rem); }

.post-list { display: grid; gap: var(--space-m); }
.post-list__title { font-size: var(--step-2); }

/* Footer ----------------------------------------------------------------------------- */
.site-footer {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: calc(var(--space-xl) + 2rem) 0 var(--space-m);
	background: var(--oak-950);
	color: rgba(251, 247, 238, 0.86);
	--focus-ring: var(--acorn-400);
}
.site-footer::after { content: ""; position: absolute; inset: 0; z-index: -1; background-image: var(--grain); opacity: 0.06; mix-blend-mode: overlay; }
.site-footer a { color: var(--paper); }
.site-footer__help { display: grid; gap: var(--space-m); padding-bottom: var(--space-l); margin-bottom: var(--space-l); border-bottom: 1px solid rgba(255, 255, 255, 0.12); }
@media (min-width: 900px) { .site-footer__help { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: var(--space-xl); } }
.site-footer__heading { font-size: var(--step-3); color: var(--paper); margin-bottom: var(--space-xs); }
.site-footer__grid { display: grid; gap: var(--space-l); }
@media (min-width: 720px) { .site-footer__grid { grid-template-columns: 1.4fr 1fr 1fr; } }
.site-footer__brand .brand { margin-bottom: var(--space-s); }
.site-footer__brand p { max-width: 30rem; margin-bottom: var(--space-s); font-size: 1rem; }
.site-footer__title { margin-bottom: var(--space-xs); font-family: var(--font-body); font-size: 0.9rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--acorn-400); }
.site-footer__links { display: grid; gap: 0.15rem; }
.site-footer__links a { display: inline-flex; align-items: center; min-height: 44px; padding: 0.2rem 0; font-weight: 700; text-decoration: none; }
.site-footer__links a:hover { text-decoration: underline; }
.site-footer__address { margin-bottom: var(--space-xs); line-height: 1.55; }
.site-footer__address strong { color: var(--paper); }
.site-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-xs) var(--space-m); margin-top: var(--space-l); padding-top: var(--space-m); border-top: 1px solid rgba(255, 255, 255, 0.12); font-size: 0.95rem; }
.site-footer__legal { display: flex; flex-wrap: wrap; gap: 0.25rem 1.25rem; }
.site-footer__legal a { text-decoration: none; }
.site-footer__legal a:hover { text-decoration: underline; }
.site-footer__lights .festoon__bulb ellipse { fill: #ffcf73; }

/* Scroll reveal (only when JS is running and motion is welcome) ----------------------- */
.reveal-ready [data-reveal] { opacity: 0; transform: translateY(22px); transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out); transition-delay: var(--reveal-delay, 0ms); }
.reveal-ready [data-reveal].is-visible { opacity: 1; transform: none; }
.reveal-ready .home-hero__feature .ticket[data-reveal] { opacity: 1; transform: rotate(1.4deg); }
@media (max-width: 1023px) { .reveal-ready .home-hero__feature .ticket[data-reveal] { transform: 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; }
}

@media (forced-colors: active) {
	.btn, .badge, .choice, .ticket { border: 2px solid CanvasText; }
	.festoon { display: none; }
}

@media print {
	.site-header, .site-footer, .env-ribbon, .book-bar, .mobile-menu, .festoon, .event-hero__actions, .event-hero__backdrop { display: none !important; }
	body { background: #fff; color: #000; }
	.event-hero, .page-header, .home-hero { background: #fff !important; color: #000 !important; }
	.event-hero__title, .page-header__title { color: #000 !important; }
}
@media (max-width: 599px) {
	.booking-form, .booking-result { padding: var(--space-s); }
	.diet-details { padding: var(--space-s); }
	.diet-guest { padding: var(--space-xs) var(--space-s) 0; }
}

/* Paper-free guest-list panel -------------------------------------------------------- */
.paper-free {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: var(--space-m) var(--space-m) var(--space-m);
	border-radius: var(--radius-l);
	border: 1px solid var(--oak-100);
	background:
		radial-gradient(120% 90% at 100% 0%, rgba(141, 191, 165, 0.28), transparent 60%),
		linear-gradient(180deg, var(--oak-50), var(--card));
	color: var(--ink-2);
}
.paper-free__leaf {
	position: absolute;
	z-index: -1;
	right: -1.6rem;
	top: -1.4rem;
	width: 8.5rem;
	color: var(--oak-500);
	opacity: 0.13;
	transform: rotate(28deg);
	pointer-events: none;
}
.paper-free__leaf svg { width: 100%; height: auto; }
.paper-free__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	margin-bottom: 0.55rem;
	padding: 0.3rem 0.75rem 0.3rem 0.55rem;
	border-radius: 999px;
	background: var(--oak-700);
	color: var(--paper);
	font-size: 0.9rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}
.paper-free__eyebrow .icon { width: 1rem; height: 1rem; color: var(--acorn-400); }
.paper-free__title { max-width: 22ch; font-size: var(--step-2); color: var(--oak-900); margin-bottom: 0.5rem; }
.paper-free__intro { font-weight: 700; color: var(--oak-800); }
.paper-free p + p { margin-top: 0.6rem; }
.paper-free__reminder,
.paper-free__pending { display: flex; align-items: flex-start; gap: 0.7rem; padding: 0.85rem 1rem; border-radius: var(--radius); }
.paper-free__reminder { margin-top: var(--space-s) !important; background: var(--acorn-100); border: 1px solid var(--acorn-200); color: var(--amber-800); font-weight: 700; }
.paper-free__pending { background: rgba(255, 255, 255, 0.75); border: 1px dashed var(--oak-300); color: var(--ink-2); font-size: 1rem; }
.paper-free__reminder .icon, .paper-free__pending .icon { flex: none; width: 1.4rem; height: 1.4rem; margin-top: 0.1rem; }
.paper-free__pending .icon { color: var(--oak-600); }
.paper-free--compact { padding: var(--space-m); }
.paper-free--compact .paper-free__title { font-size: var(--step-1); }
.paper-free--compact .paper-free__leaf { width: 6.5rem; }
@media (min-width: 720px) {
	.paper-free--full { padding: var(--space-l); }
	.paper-free--full .paper-free__leaf { width: 11rem; right: -2rem; top: -2rem; }
}
.booking-panel__delivery--paper-free { color: var(--oak-800); font-weight: 700; }
.booking-panel__delivery--paper-free .icon { color: var(--oak-600); }
.order-summary__paper-free { display: inline-flex; align-items: center; gap: 0.35rem; margin-top: 0.45rem; padding: 0.2rem 0.65rem 0.2rem 0.5rem; border-radius: 999px; background: rgba(255, 255, 255, 0.14); font-size: 0.9rem; font-weight: 800; }
.order-summary__paper-free .icon { width: 0.95rem; height: 0.95rem; color: var(--mood-accent); }
.hp-field { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.booking-intro-gap { height: var(--space-m); }
.bnav [data-confirm][aria-busy="true"] { opacity: 0.7; cursor: progress; }

/* Email sign-up ("hear about new events first") ---------------------------------------- */
.newsletter { display: grid; gap: var(--space-m); }
.newsletter__intro { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 0.9rem; align-items: center; }
.newsletter__badge { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: var(--acorn-100); color: var(--oak-800); }
.newsletter__badge .icon { width: 1.4rem; height: 1.4rem; }
.newsletter__heading { font-size: var(--step-2); line-height: 1.15; color: var(--oak-900); }
.newsletter__text { grid-column: 1 / -1; margin-top: 0.75rem; color: var(--ink-2); }
.newsletter__label { display: block; margin-bottom: 0.5rem; font-weight: 800; color: var(--oak-900); }
.newsletter__row { display: flex; gap: 0.75rem; }
.newsletter__input { flex: 1 1 auto; min-width: 0; min-height: 3.5rem; padding: 0.8rem 1rem; border: 2px solid #6b7770; border-radius: 12px; background: #fff; color: var(--ink); font-size: 1.125rem; }
.newsletter__input:focus { outline: none; border-color: var(--oak-700); box-shadow: 0 0 0 4px rgba(23, 83, 61, 0.22); }
.newsletter__input[aria-invalid="true"] { border-color: var(--berry); }
.newsletter__button { flex: none; min-height: 3.5rem; padding-inline: 1.6rem; }
.newsletter__button[aria-busy="true"] { opacity: 0.75; cursor: progress; }
/* Narrow phones: email box and button both full width, button easy to hit. */
@media (max-width: 479px) {
	.newsletter__row { flex-direction: column; }
	.newsletter__button { width: 100%; }
	.newsletter__done { flex-direction: column; gap: 0.75rem; }
}
.newsletter__error { display: flex; gap: 0.55rem; align-items: flex-start; margin-top: 0.75rem; padding: 0.75rem 1rem; border-radius: var(--radius); background: var(--berry-100); color: var(--berry); font-weight: 700; }
.newsletter__error .icon { flex: none; margin-top: 0.15rem; }
.newsletter__consent { margin-top: 0.9rem; font-size: 1rem; line-height: 1.5; color: var(--ink-2); }
.newsletter__consent a { color: inherit; font-weight: 700; }

/* Confirmation, in the same language as the booking confirmation. */
.newsletter__done { display: flex; gap: 1rem; align-items: flex-start; padding: 1.25rem 1.35rem; border-radius: var(--radius-l); background: var(--oak-50); border: 1px solid var(--oak-100); }
.newsletter__done:focus { outline: none; }
.newsletter__done:focus-visible { outline: 3px solid var(--acorn-500); outline-offset: 3px; }
.newsletter__done-icon { display: grid; place-items: center; flex: none; width: 3rem; height: 3rem; border-radius: 50%; background: var(--oak-700); color: var(--acorn-400); box-shadow: 0 0 0 6px color-mix(in srgb, var(--oak-700) 14%, transparent); }
.newsletter__done-icon .icon { width: 1.5rem; height: 1.5rem; stroke-width: 2.6; }
.newsletter__done-title { margin-bottom: 0.35rem; font-family: var(--font-display); font-size: var(--step-2); font-weight: 600; line-height: 1.15; color: var(--oak-900); }
.newsletter__done p { color: var(--ink-2); }
@media (prefers-reduced-motion: no-preference) {
	.newsletter__done:not([hidden]) { animation: nbe-nl-in 0.4s cubic-bezier(0.2, 0.8, 0.2, 1); }
	.newsletter__done:not([hidden]) .newsletter__done-icon { animation: nbe-nl-pop 0.5s 0.1s cubic-bezier(0.3, 1.5, 0.5, 1) both; }
}
@keyframes nbe-nl-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes nbe-nl-pop { from { transform: scale(0.5); } to { transform: none; } }

/* On an event page: the cream card with the gold edge, at the end of the main content. */
.newsletter--event { padding: clamp(1.25rem, 0.9rem + 1.6vw, 2rem); border-radius: var(--radius-l); background: var(--card); border-left: 6px solid var(--acorn-500); box-shadow: var(--shadow-1); }

/* In the footer: a band on the dark green, heading beside the form on wider screens. */
.newsletter--footer { margin-block: var(--space-l) clamp(2rem, 1.2rem + 2.5vw, 3.5rem); padding: var(--space-m); border: 1px solid rgba(251, 247, 238, 0.14); border-radius: var(--radius-l); background: rgba(251, 247, 238, 0.05); }
.newsletter--footer .newsletter__badge { background: rgba(251, 247, 238, 0.1); color: var(--acorn-400); }
.newsletter--footer .newsletter__heading { color: var(--paper); }
.newsletter--footer .newsletter__text, .newsletter--footer .newsletter__consent { color: rgba(251, 247, 238, 0.8); }
.newsletter--footer .newsletter__consent a { color: var(--paper); }
.newsletter--footer .newsletter__label { color: var(--paper); }
.newsletter--footer .newsletter__input { border-color: transparent; }
.newsletter--footer .newsletter__input[aria-invalid="true"] { border-color: var(--berry-100); }
.newsletter--footer .newsletter__done { background: rgba(251, 247, 238, 0.08); border-color: rgba(251, 247, 238, 0.18); }
.newsletter--footer .newsletter__done-icon { background: var(--acorn-500); color: var(--oak-950); box-shadow: 0 0 0 6px rgba(239, 192, 90, 0.16); }
.newsletter--footer .newsletter__done-title { color: var(--paper); }
.newsletter--footer .newsletter__done p { color: rgba(251, 247, 238, 0.82); }
@media (min-width: 900px) {
	.newsletter--footer { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: var(--space-l); align-items: center; padding: var(--space-l); }
}
