/**
 * WP Sessions HQ — the booking form.
 *
 * Every value here is a custom property with a plain default, so a site
 * restyles it from settings without writing CSS, and a designer can override
 * any single token without fighting a specificity war. Fonts are NOT set:
 * inheriting the theme is what keeps this from looking like a plugin.
 */

/* Defaults carry zero specificity (:where), so a site's own mapping wins
   whatever order the files load in — this stylesheet prints in the footer. */
:where(.wpsess-booking) {
	--wpsess-accent: #2f7386;
	--wpsess-accent-hover: #3f8b9d;
	--wpsess-accent-text: #ffffff;
	--wpsess-text: inherit;
	--wpsess-muted: #57524a;
	--wpsess-border: rgba(32, 30, 29, 0.18);
	--wpsess-surface: transparent;
	--wpsess-radius: 999px;
	--wpsess-radius-input: 10px;
	--wpsess-gap: 12px;
	--wpsess-control: 44px; /* never smaller: this is a touch target */
}

.wpsess-booking {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wpsess-gap);
	background: var(--wpsess-surface);
	color: var(--wpsess-text);
}

.wpsess-booking__seats {
	margin: 0;
	color: var(--wpsess-muted);
	font-size: 0.95em;
}

.wpsess-booking--sold_out .wpsess-booking__seats,
.wpsess-booking--cancelled .wpsess-booking__seats {
	font-weight: 600;
}

.wpsess-booking__form {
	display: flex;
	align-items: center;
	gap: var(--wpsess-gap);
	margin: 0;
}

.wpsess-booking__closed {
	margin: 0;
	color: var(--wpsess-muted);
}

/* ── stepper ───────────────────────────────────────────────────────────── */

.wpsess-stepper {
	display: flex;
	align-items: center;
	gap: 4px;
	border: 1px solid var(--wpsess-border);
	border-radius: var(--wpsess-radius);
	padding: 3px;
}

.wpsess-stepper__btn {
	width: var(--wpsess-control);
	height: var(--wpsess-control);
	min-width: var(--wpsess-control);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: inherit;
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
}

.wpsess-stepper__btn:hover:not(:disabled) {
	background: color-mix(in srgb, var(--wpsess-accent) 12%, transparent);
}

.wpsess-stepper__btn:disabled {
	opacity: 0.4;
	cursor: default;
}

.wpsess-stepper__input {
	width: 3ch;
	min-height: auto;
	padding: 0;
	border: 0;
	background: transparent;
	color: inherit;
	font: inherit;
	font-variant-numeric: tabular-nums;
	text-align: center;
	-moz-appearance: textfield;
}

.wpsess-stepper__input::-webkit-outer-spin-button,
.wpsess-stepper__input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

/* ── button ────────────────────────────────────────────────────────────── */

.wpsess-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--wpsess-control);
	padding: 0 24px;
	border: 0;
	border-radius: var(--wpsess-radius);
	background: var(--wpsess-accent);
	color: var(--wpsess-accent-text);
	font: inherit;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 120ms cubic-bezier(0.32, 0.72, 0.28, 1);
}

.wpsess-btn:hover:not(:disabled) {
	background: var(--wpsess-accent-hover);
	color: var(--wpsess-accent-text);
}

.wpsess-btn:disabled {
	opacity: 0.45;
	cursor: default;
}

.wpsess-btn.is-working {
	opacity: 0.7;
}

/* Never the browser default, and never removed without a replacement. */
.wpsess-booking :focus-visible {
	outline: 2px solid var(--wpsess-accent);
	outline-offset: 2px;
}

/**
 * A label that is clipped, not hidden: display:none would drop it out of the
 * accessibility tree and leave the field named by nothing at all.
 */
.wpsess-clip {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

@media (prefers-reduced-motion: reduce) {
	.wpsess-btn { transition: none; }
}

/* ── waitlist ──────────────────────────────────────────────────────────── */

.wpsess-waitlist {
	display: flex;
	flex-direction: column;
	gap: var(--wpsess-gap, 12px);
	width: 100%;
}

.wpsess-waitlist__intro {
	margin: 0;
	font-weight: 600;
}

.wpsess-waitlist__form {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wpsess-gap, 12px);
	margin: 0;
	align-items: center;
}

.wpsess-waitlist__field {
	margin: 0;
	flex: 1 1 200px;
}

.wpsess-waitlist__field input {
	width: 100%;
	min-height: var(--wpsess-control, 44px);
	padding: 0 14px;
	border: 1px solid var(--wpsess-border, rgba(32, 30, 29, 0.18));
	border-radius: var(--wpsess-radius-input, 10px);
	background: #fff;
	color: inherit;
	font: inherit;
}

.wpsess-waitlist__note {
	margin: 0;
	font-size: 0.92em;
	color: var(--wpsess-muted, #57524a);
}

.wpsess-waitlist__note.is-done {
	font-weight: 600;
	color: inherit;
}

.wpsess-waitlist__note.is-error {
	color: #a32b2b;
}

/* A honeypot has to be invisible to people and present for bots, which means
   it must not be display:none — some bots skip those. */
.wpsess-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* ── my bookings ───────────────────────────────────────────────────────
   Tokens come from the shared block below (:where, so a site's mapping wins).
   Buttons and links here are drawn at (0,2,0)+ so a theme's global
   `button` / `a` rules — usually (0,1,1) — never repaint them. */

.wpsess-mine { display: grid; gap: 26px; color: var(--wpsess-text); min-width: 0; }
.wpsess-mine p { margin: 0; }
.wpsess-mine__tabs { display: flex; gap: 9px; flex-wrap: wrap; }
.wpsess-mine .wpsess-mine__tab {
	display: inline-flex; align-items: center; gap: 6px; padding: 7px 16px; min-height: 40px; box-sizing: border-box;
	border: 1px solid var(--wpsess-accent); border-radius: 999px; background: transparent;
	color: var(--wpsess-ink); font-size: 14px; font-weight: 600; line-height: 1.2; text-decoration: none;
}
.wpsess-mine .wpsess-mine__tab:hover { background: var(--wpsess-tint); color: var(--wpsess-ink); text-decoration: none; }
.wpsess-mine .wpsess-mine__tab[aria-selected="true"] { background: var(--wpsess-accent); color: var(--wpsess-accent-text); }
.wpsess-mine__panel[hidden] { display: none; }
.wpsess-mine__list { display: grid; gap: 18px; }

.wpsess-mine .wpsess-mine__card {
	display: grid; gap: 18px; padding: 26px; border-radius: var(--wpsess-radius-card);
	background: var(--wpsess-card); box-sizing: border-box; min-width: 0;
}
.wpsess-mine .wpsess-mine__card--raised { background: var(--wpsess-raised); box-shadow: var(--wpsess-shadow-sm); }
.wpsess-mine__head { display: flex; gap: 22px; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; }
.wpsess-mine__head > div { min-width: 0; flex: 1 1 260px; }
.wpsess-mine .wpsess-mine__kicker {
	font-family: var(--wpsess-display); font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wpsess-ink);
}
.wpsess-mine__soon { color: var(--wpsess-hot); }
.wpsess-mine .wpsess-mine__title { font-family: var(--wpsess-display); font-size: 22px; line-height: 1.2; margin: 2px 0 9px; color: var(--wpsess-text); }
.wpsess-mine .wpsess-mine__meta,
.wpsess-mine .wpsess-mine__note { font-size: 14px; color: var(--wpsess-muted); }
.wpsess-mine .wpsess-mine__meta strong { color: var(--wpsess-text); font-weight: 600; }
.wpsess-mine__note { margin-top: -6px; }
.wpsess-mine__actions { display: flex; gap: 9px; flex-wrap: wrap; align-items: center; border-top: 1px solid var(--wpsess-border); padding-top: 18px; margin: 0; }

.wpsess-mine .wpsess-btn,
.wpsess-mine__dialog .wpsess-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 9px; padding: 10px 20px;
	border: 1px solid transparent; border-radius: 999px; font: inherit; font-size: 14px; font-weight: 600; line-height: 1.2;
	cursor: pointer; text-decoration: none; white-space: nowrap; background: var(--wpsess-accent); color: var(--wpsess-accent-text);
}
.wpsess-mine .wpsess-btn--sm { font-size: 12px; padding: 7px 14px; min-height: 34px; }
.wpsess-mine .wpsess-btn:hover:not(:disabled),
.wpsess-mine .wpsess-btn:focus-visible { background: var(--wpsess-accent-hover); color: var(--wpsess-accent-text); text-decoration: none; }
.wpsess-mine .wpsess-btn.wpsess-btn--secondary,
.wpsess-mine__dialog .wpsess-btn.wpsess-btn--secondary { background: transparent; color: var(--wpsess-text); border-color: var(--wpsess-border); }
.wpsess-mine .wpsess-btn.wpsess-btn--secondary:hover,
.wpsess-mine .wpsess-btn.wpsess-btn--secondary:focus-visible { background: var(--wpsess-tint); border-color: var(--wpsess-accent); color: var(--wpsess-ink); }
.wpsess-mine .wpsess-btn.wpsess-btn--ghost,
.wpsess-mine__dialog .wpsess-btn.wpsess-btn--ghost { background: transparent; color: var(--wpsess-ink); padding-inline: 13px; }
.wpsess-mine .wpsess-btn.wpsess-btn--ghost:hover,
.wpsess-mine .wpsess-btn.wpsess-btn--ghost:focus-visible,
/* (0,6,0): the pop-up's own `.wpsess-modal .wpsess-btn:hover:not(:disabled)` is (0,4,0). */
.wpsess-mine__dialog.wpsess-modal .wpsess-btn.wpsess-btn--ghost:hover:not(:disabled),
.wpsess-mine__dialog.wpsess-modal .wpsess-btn.wpsess-btn--ghost:focus-visible { background: var(--wpsess-tint); color: var(--wpsess-ink); }
.wpsess-mine .wpsess-tag--warm,
.wpsess-modal .wpsess-tag--warm { background: var(--wpsess-warn-bg); color: var(--wpsess-warn-text); }

.wpsess-mine .wpsess-mine__empty { color: var(--wpsess-muted); }
.wpsess-mine .wpsess-mine__empty a,
.wpsess-mine .wpsess-mine__back a,
.wpsess-mine .wpsess-notice a { color: var(--wpsess-ink); }
.wpsess-mine .wpsess-mine__back { font-size: 14px; font-weight: 600; }

.wpsess-mine__vouchers { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 26px; align-items: start; }
.wpsess-mine .wpsess-mine__voucher { display: grid; gap: 9px; padding: 26px; border-radius: var(--wpsess-radius-card); background: var(--wpsess-dark); color: var(--wpsess-on-deep); }
.wpsess-mine .wpsess-mine__voucher-kind { font-family: var(--wpsess-display); font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wpsess-on-dark-muted); }
.wpsess-mine .wpsess-mine__code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 22px; letter-spacing: 0.08em; color: var(--wpsess-code); overflow-wrap: anywhere; }
.wpsess-mine .wpsess-mine__voucher-meta { font-size: 14px; color: var(--wpsess-on-dark-muted); }
.wpsess-mine .wpsess-mine__foot { font-size: 14px; color: var(--wpsess-muted); margin-top: 18px; }
.wpsess-mine__voucher-meta span,
.wpsess-mine .wpsess-nowrap, .wpsess-modal .wpsess-nowrap, .wpsess-confirm .wpsess-nowrap { white-space: nowrap; }

/* Names and the waiver, from the account: the thank-you band without the
   page around it. */
.wpsess-confirm--account .wpsess-confirm__names { border-radius: var(--wpsess-radius-card); border-bottom: 0; }

/* The dialogs (moved to <body> when open, so scoped by their own class). */
.wpsess-mine__dialog .wpsess-modal__pane { gap: 13px; }
.wpsess-mine__dialog .wpsess-modal__lead { font-size: 14px; margin-bottom: 5px; }
.wpsess-mine__dialog .wpsess-modal__muted { font-size: 14px; color: var(--wpsess-muted); }
.wpsess-mine__dialog .wpsess-modal__muted a { color: var(--wpsess-ink); }
.wpsess-mine__dialog .wpsess-modal__actions { display: flex; justify-content: flex-end; gap: 13px; flex-wrap: wrap; margin-top: 13px; }
.wpsess-mine__dialog .wpsess-field > label { font-size: 14px; font-weight: 600; }
.wpsess-mine__dialog textarea {
	width: 100%; box-sizing: border-box; min-height: 110px; padding: 12px 16px; resize: vertical;
	border: 1px solid var(--wpsess-border); border-radius: 18px; background: var(--wpsess-field); color: var(--wpsess-text); font: inherit; font-size: 14px;
}
.wpsess-mine__dialog textarea:focus { outline: 2px solid var(--wpsess-accent-hover); outline-offset: 0; border-color: var(--wpsess-accent); }

.wpsess-options { display: grid; gap: 9px; }
.wpsess-option {
	position: relative; display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 13px; align-items: center;
	padding: 13px 18px; border-radius: 18px; border: 1px solid var(--wpsess-border); background: var(--wpsess-surface); cursor: pointer;
}
.wpsess-option input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.wpsess-option__dot { width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid var(--wpsess-seat-line); background: var(--wpsess-surface); box-sizing: border-box; }
.wpsess-option__what { display: grid; min-width: 0; }
.wpsess-option__what strong { font-size: 14px; }
.wpsess-option__what span { font-size: 12px; color: var(--wpsess-muted); }
.wpsess-option__diff { font-size: 14px; font-weight: 600; text-align: right; }
.wpsess-option:has(input:checked) { border: 2px solid var(--wpsess-accent); background: var(--wpsess-tint); padding: 12px 17px; }
.wpsess-option:has(input:checked) .wpsess-option__dot { background: var(--wpsess-accent); border-color: var(--wpsess-accent); box-shadow: inset 0 0 0 4px var(--wpsess-surface); }
.wpsess-option:has(input:focus-visible) { outline: 2px solid var(--wpsess-accent-hover); outline-offset: 2px; }
.wpsess-option.is-full { opacity: 0.45; cursor: not-allowed; }

@media (max-width: 900px) {
	.wpsess-mine__vouchers { grid-template-columns: minmax(0, 1fr); }
	.wpsess-mine .wpsess-mine__card { padding: 22px 18px; }
}

/* ── the booking pop-up ──────────────────────────────────────────────────
   Moved to <body> when it opens, so it carries its own tokens. A site maps
   them to its own colours (WUB: Site Settings › Custom CSS). Fonts inherit:
   the title is a real <h2>, so the theme's heading face applies. */

:where(.wpsess-modal, .wpsess-confirm, .wpsess-mine, .wpsess-enquiry, .wpsess-quote) {
	--wpsess-deep: #122d37;              /* the thank-you hero */
	--wpsess-on-deep: #faf6ee;
	--wpsess-on-deep-ink: #a4d0da;
	--wpsess-deep-blob: rgba(63, 139, 157, 0.35);
	--wpsess-accent: #2f7386;
	--wpsess-accent-hover: #3f8b9d;
	--wpsess-accent-text: #ffffff;
	--wpsess-ink: #245c6c;               /* accent as text: kicker, links */
	--wpsess-tint: #e9f4f6;
	--wpsess-text: #201e1d;
	--wpsess-muted: #57524a;
	--wpsess-border: rgba(32, 30, 29, 0.16);
	--wpsess-surface: #ffffff;
	--wpsess-field: #ffffff;
	--wpsess-chip: #efe8db;
	--wpsess-seat: #ded5c4;
	--wpsess-seat-line: #97907f;
	--wpsess-warn-bg: #fff2eb;
	--wpsess-warn-line: #ffc6a5;
	--wpsess-warn-text: #643312;
	--wpsess-ok-bg: #e9f4f6;
	--wpsess-ok-line: #a4d0da;
	--wpsess-ok-text: #1a4351;
	--wpsess-backdrop: rgba(18, 45, 55, 0.55);
	--wpsess-display: inherit;
	--wpsess-radius: 999px;
	--wpsess-radius-card: 26px;
	--wpsess-shadow: 0 14px 34px rgba(74, 58, 34, 0.18);
	--wpsess-shadow-sm: 0 1px 2px rgba(74, 58, 34, 0.12);
	--wpsess-raised: #fdf7ec;            /* a booking card */
	--wpsess-card: #ebddc5;              /* a past or waiting one */
	--wpsess-hot: #8c491a;               /* "in 2 days" */
	--wpsess-dark: #1a4351;              /* a voucher */
	--wpsess-on-dark-muted: #efe8db;
	--wpsess-code: #ffc6a5;
	--wpsess-bright: #d67f48;            /* the must-do button (sign the waiver) */
	--wpsess-bright-hover: #e2925f;
	--wpsess-bright-text: #1f1a17;       /* dark on orange: 5.7:1 — white would be 3:1 */
	--wpsess-warm: #8c491a;              /* the quote hero, the money button */
	--wpsess-warm-hover: #b2622d;
	--wpsess-warm-blob: #b2622d;
	--wpsess-on-warm: #fff2eb;
	--wpsess-on-warm-ink: #ffe1d0;
	--wpsess-info-bg: #efe8db;
	--wpsess-info-text: #3c3934;
}

.wpsess-modal {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: grid;
	place-items: center;
	padding: 24px;
	color: var(--wpsess-text);
}
.wpsess-modal[hidden] { display: none; }
html.wpsess-modal-open { overflow: hidden; }

.wpsess-modal__backdrop { position: absolute; inset: 0; background: var(--wpsess-backdrop); }

.wpsess-modal__box {
	position: relative;
	width: min(540px, 100%);
	max-height: calc(100vh - 48px);
	overflow: auto;
	background: var(--wpsess-surface);
	border-radius: var(--wpsess-radius-card);
	box-shadow: var(--wpsess-shadow);
	padding: 35px;
	box-sizing: border-box;
	font-size: 16px;
	line-height: 1.5;
	outline: none;
}

.wpsess-modal .wpsess-modal__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; margin: 0 0 18px; }
.wpsess-modal .wpsess-modal__kicker {
	margin: 0; font-family: var(--wpsess-display); font-size: 13px; letter-spacing: 0.1em;
	text-transform: uppercase; color: var(--wpsess-ink);
}
.wpsess-modal .wpsess-modal__title { margin: 2px 0 0; font-size: 28px; line-height: 1.15; color: var(--wpsess-text); text-wrap: balance; }
.wpsess-modal .wpsess-modal__close {
	flex: none; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%;
	background: transparent; color: var(--wpsess-text); font-size: 24px; line-height: 1; cursor: pointer;
}
.wpsess-modal .wpsess-modal__close:hover { background: var(--wpsess-tint); }

.wpsess-modal__tags { display: flex; gap: 9px; flex-wrap: wrap; align-items: center; margin: 0 0 26px; }
.wpsess-tag {
	display: inline-flex; align-items: center; padding: 4px 12px; border-radius: 999px;
	font-size: 12px; font-weight: 600; letter-spacing: 0.02em; line-height: 1.4;
	background: var(--wpsess-chip); color: var(--wpsess-text); border: 1px solid transparent;
}
.wpsess-tag--accent { background: var(--wpsess-tint); color: var(--wpsess-ok-text); }
/* An audience's colour (Settings › Audiences), as a dot before its name. */
.wpsess-dot { display: inline-block; width: 8px; height: 8px; margin-right: 6px; border-radius: 50%; flex: none; }
.wpsess-tag--outline { background: transparent; border-color: var(--wpsess-accent); color: var(--wpsess-ink); }

.wpsess-modal .wpsess-modal__pane { display: grid; gap: 22px; }
.wpsess-modal .wpsess-modal__pane[hidden],
.wpsess-modal [data-wpsess-waitlist-done][hidden],
.wpsess-modal form[hidden] { display: none; }
.wpsess-modal .wpsess-modal__waitlist,
.wpsess-modal [data-wpsess-waitlist-done] { display: grid; gap: 22px; }
.wpsess-modal .wpsess-modal__pane p { margin: 0; }

.wpsess-modal .wpsess-field { display: grid; gap: 6px; margin: 0; }
.wpsess-modal .wpsess-label,
.wpsess-modal .wpsess-field > label { font-size: 14px; font-weight: 600; margin: 0; }
.wpsess-optional { font-weight: 400; color: var(--wpsess-muted); }
.wpsess-modal .wpsess-hint { font-size: 12px; color: var(--wpsess-muted); margin: 0; }
.wpsess-modal .wpsess-hint a { color: var(--wpsess-ink); }
.wpsess-modal .wpsess-hint--center { text-align: center; }
.wpsess-modal .wpsess-hint--error { color: var(--wpsess-warn-text); }

.wpsess-modal .wpsess-modal__box .wpsess-field input:not([type="radio"]):not([type="checkbox"]) {
	width: 100%; min-height: 44px; box-sizing: border-box; padding: 10px 16px;
	border: 1px solid var(--wpsess-border); border-radius: var(--wpsess-radius);
	background: var(--wpsess-field); color: var(--wpsess-text); font: inherit; font-size: 14px;
}
.wpsess-modal .wpsess-modal__box .wpsess-field input:focus { outline: 2px solid var(--wpsess-accent-hover); outline-offset: 0; border-color: var(--wpsess-accent); }

/* counters */
.wpsess-modal .wpsess-count { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.wpsess-modal .wpsess-round {
	width: 44px; height: 44px; min-width: 44px; padding: 0; display: inline-grid; place-items: center;
	border: 1px solid var(--wpsess-border); border-radius: 50%; background: transparent;
	color: var(--wpsess-text); font-family: inherit; font-size: 18px; font-weight: 500; line-height: 1; cursor: pointer;
}
.wpsess-modal .wpsess-round:hover:not(:disabled) { background: var(--wpsess-tint); border-color: var(--wpsess-accent); }
.wpsess-modal .wpsess-round--solid { background: var(--wpsess-accent); border-color: transparent; color: var(--wpsess-accent-text); }
.wpsess-modal .wpsess-round--solid:hover:not(:disabled) { background: var(--wpsess-accent-hover); color: var(--wpsess-accent-text); }
.wpsess-modal .wpsess-round:disabled { opacity: 0.45; cursor: not-allowed; }
.wpsess-count__n { font-family: var(--wpsess-display); font-size: 28px; min-width: 1.4em; text-align: center; }
.wpsess-modal__split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }

/* the room */
.wpsess-seats { display: grid; grid-template-columns: repeat(auto-fill, minmax(30px, 1fr)); gap: 7px; margin-top: 6px; }
.wpsess-seat { aspect-ratio: 1; border-radius: 9px; box-sizing: border-box; }
.wpsess-seat.is-taken { background: var(--wpsess-seat); }
.wpsess-seat.is-mine { background: var(--wpsess-accent); }
.wpsess-seat.is-open { border: 1.5px dashed var(--wpsess-seat-line); }

.wpsess-modal__total {
	display: flex; justify-content: space-between; align-items: baseline;
	padding-top: 18px; border-top: 1px solid var(--wpsess-border); font-weight: 700;
}
.wpsess-modal__amount { font-family: var(--wpsess-display); font-size: 28px; font-weight: 400; }

.wpsess-modal .wpsess-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 9px;
	padding: 10px 20px; border: 1px solid transparent; border-radius: var(--wpsess-radius);
	font: inherit; font-size: 14px; font-weight: 600; line-height: 1.2; cursor: pointer; text-decoration: none;
	background: var(--wpsess-accent); color: var(--wpsess-accent-text);
}
.wpsess-modal .wpsess-btn:hover:not(:disabled) { background: var(--wpsess-accent-hover); color: var(--wpsess-accent-text); }
.wpsess-modal .wpsess-btn--secondary { background: transparent; color: var(--wpsess-text); border-color: var(--wpsess-border); }
.wpsess-modal .wpsess-btn--secondary:hover:not(:disabled) { background: var(--wpsess-tint); color: var(--wpsess-ink); border-color: var(--wpsess-accent); }
.wpsess-modal .wpsess-btn--block { width: 100%; }
.wpsess-modal .wpsess-btn--lg { font-size: 16px; padding: 14px 26px; }
.wpsess-modal .wpsess-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.wpsess-modal .wpsess-btn.is-working { opacity: 0.8; cursor: progress; }

.wpsess-notice { padding: 13px 18px; border-radius: 12px; font-size: 14px; border: 1px solid transparent; }
.wpsess-notice[hidden] { display: none; }
.wpsess-notice--warn { background: var(--wpsess-warn-bg); border-color: var(--wpsess-warn-line); color: var(--wpsess-warn-text); }
.wpsess-notice--ok { background: var(--wpsess-ok-bg); border-color: var(--wpsess-ok-line); color: var(--wpsess-ok-text); }

.wpsess-modal :focus-visible { outline: 2px solid var(--wpsess-accent-hover); outline-offset: 2px; }

/* A full session keeps its row — a full class is social proof — but steps back. */
.e-loop-item:has(.wpsess-booking--sold_out),
.wpsess-row:has(.wpsess-booking--sold_out) { opacity: 0.72; }

@media (max-width: 900px) {
	.wpsess-modal { padding: 0; place-items: end stretch; }
	.wpsess-modal__box { width: 100%; max-height: 100vh; min-height: 100vh; border-radius: 0; padding: 26px 20px 35px; }
	.wpsess-modal__split { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: no-preference) {
	.wpsess-modal:not([hidden]) .wpsess-modal__box { animation: wpsess-rise 200ms cubic-bezier(0.32, 0.72, 0.28, 1); }
	@keyframes wpsess-rise { from { transform: translateY(12px); opacity: 0; } }
}


/* ── "You're in" — the thank-you page for a booking ────────────────────── */

.wpsess-confirm { display: grid; gap: 0; color: var(--wpsess-text); }
.wpsess-confirm p { margin: 0; }
.wpsess-confirm .wpsess-confirm__hero {
	position: relative; overflow: hidden; background: var(--wpsess-deep); color: var(--wpsess-on-deep);
	border-radius: var(--wpsess-radius-card) var(--wpsess-radius-card) 0 0; padding: 53px 35px 44px;
}
.wpsess-confirm__blob { position: absolute; width: 300px; height: 300px; border-radius: 50%; background: var(--wpsess-deep-blob); top: -110px; right: -90px; pointer-events: none; }
.wpsess-confirm .wpsess-confirm__kicker {
	font-family: var(--wpsess-display); font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase;
	color: var(--wpsess-on-deep-ink); margin: 0 0 13px; position: relative;
}
.wpsess-confirm .wpsess-confirm__kicker--ink { color: var(--wpsess-ink); }
.wpsess-confirm .wpsess-confirm__title {
	position: relative; margin: 0 0 18px; text-wrap: balance;
	color: var(--wpsess-on-deep); font-size: clamp(38px, 5vw, 56px); line-height: 1.05;
}
.wpsess-confirm .wpsess-confirm__lead { position: relative; max-width: 52ch; font-size: 19px; color: var(--wpsess-on-deep); margin: 0 0 26px; }
.wpsess-confirm__actions { position: relative; display: flex; gap: 13px; flex-wrap: wrap; }

.wpsess-confirm .wpsess-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 9px; padding: 13px 26px;
	border: 1px solid transparent; border-radius: var(--wpsess-radius); font: inherit; font-size: 16px; font-weight: 600;
	line-height: 1.2; cursor: pointer; text-decoration: none; background: var(--wpsess-accent); color: var(--wpsess-accent-text);
}
.wpsess-confirm .wpsess-btn:hover { background: var(--wpsess-accent-hover); color: var(--wpsess-accent-text); text-decoration: none; }
.wpsess-confirm .wpsess-btn--inverse { background: var(--wpsess-on-deep); color: var(--wpsess-deep); }
.wpsess-confirm .wpsess-btn--inverse:hover { background: #fff; color: var(--wpsess-deep); }
.wpsess-confirm .wpsess-btn--outline-inverse { background: transparent; color: var(--wpsess-on-deep); border-color: rgba(255, 255, 255, 0.55); }
.wpsess-confirm .wpsess-btn--outline-inverse:hover { background: rgba(255, 255, 255, 0.14); color: #fff; }
.wpsess-confirm .wpsess-btn--secondary { background: transparent; color: var(--wpsess-text); border-color: var(--wpsess-border); font-size: 14px; padding: 10px 20px; }
.wpsess-confirm .wpsess-btn--secondary:hover { background: var(--wpsess-tint); color: var(--wpsess-ink); border-color: var(--wpsess-accent); }
.wpsess-confirm .wpsess-confirm__save .wpsess-btn { font-size: 14px; padding: 10px 20px; }

.wpsess-confirm .wpsess-confirm__names {
	background: var(--wpsess-tint); padding: 35px; border-bottom: 1px solid var(--wpsess-border); display: grid; gap: 18px;
}
.wpsess-confirm__names:last-of-type { border-bottom: 0; }
.wpsess-confirm__names-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; }
.wpsess-confirm .wpsess-confirm__h3 { margin: 0 0 9px; font-size: 22px; line-height: 1.2; text-wrap: balance; color: var(--wpsess-text); }
.wpsess-confirm .wpsess-confirm__intro,
.wpsess-confirm .wpsess-confirm__for { font-size: 14px; }
.wpsess-confirm .wpsess-confirm__for { margin: 0 0 4px; }
.wpsess-confirm__seats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.wpsess-confirm__seat { display: grid; grid-template-columns: minmax(0, 1fr); gap: 13px; }
.wpsess-confirm__seats--kids .wpsess-confirm__seat { grid-template-columns: minmax(0, 1fr) 84px; }
.wpsess-confirm .wpsess-field { display: grid; gap: 6px; }
.wpsess-confirm .wpsess-field > label { font-size: 14px; font-weight: 600; margin: 0; }
.wpsess-confirm .wpsess-confirm__seats .wpsess-field input:not([type="checkbox"]),
.wpsess-confirm .wpsess-confirm__sos .wpsess-field input,
.wpsess-modal .wpsess-modal__box .wpsess-field input[name="signature"] {
	width: 100%; min-height: 44px; box-sizing: border-box; padding: 10px 16px;
	border: 1px solid var(--wpsess-border); border-radius: var(--wpsess-radius); background: var(--wpsess-field);
	color: var(--wpsess-text); font: inherit; font-size: 14px;
}
.wpsess-confirm .wpsess-confirm__form { display: grid; gap: 18px; margin: 0; }
.wpsess-confirm__save { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
/* After a save: a message nobody can miss, and a tick beside the button that was pressed. */
.wpsess-confirm .wpsess-notice--done { background: var(--wpsess-surface); border-color: var(--wpsess-accent); border-left-width: 4px; color: var(--wpsess-text); font-weight: 600; }
.wpsess-confirm .wpsess-notice--done p::before, .wpsess-confirm__saved::before { content: "✓"; display: inline-block; margin-right: 8px; color: var(--wpsess-accent); font-weight: 700; }
.wpsess-confirm__saved { display: inline-flex; align-items: center; font-size: 14px; font-weight: 600; color: var(--wpsess-text); white-space: nowrap; }
.wpsess-confirm .wpsess-confirm__stay { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; gap: 9px; }
.wpsess-confirm .wpsess-confirm__stay legend { font-size: 14px; font-weight: 600; padding: 0; margin: 0 0 9px; }
.wpsess-confirm .wpsess-confirm__sos { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; gap: 9px; }
.wpsess-confirm .wpsess-confirm__sos legend { font-size: 14px; font-weight: 600; padding: 0; margin: 0 0 4px; }
.wpsess-confirm .wpsess-confirm__sos .wpsess-hint { margin: 0; }
.wpsess-confirm__sos-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.wpsess-choice { display: flex; gap: 9px; flex-wrap: wrap; }
.wpsess-choice__opt {
	display: inline-flex; align-items: center; gap: 9px; min-height: 44px; box-sizing: border-box; padding: 10px 18px;
	border: 1px solid var(--wpsess-border); border-radius: 999px; background: var(--wpsess-field); font-size: 14px; cursor: pointer; white-space: nowrap;
}
.wpsess-choice__opt input { width: 18px; height: 18px; margin: 0; accent-color: var(--wpsess-accent); }
.wpsess-choice__opt:has(input:checked) { border-color: var(--wpsess-accent); }
.wpsess-choice__opt:has(input:focus-visible) { outline: 2px solid var(--wpsess-accent); outline-offset: 2px; }
.wpsess-confirm .wpsess-hint { font-size: 12px; color: var(--wpsess-muted); }

.wpsess-confirm .wpsess-confirm__before {
	display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 35px; padding: 44px 0 35px;
	border-bottom: 1px solid var(--wpsess-border);
}
.wpsess-confirm__before .wpsess-confirm__h3 + * { margin-bottom: 26px; }
.wpsess-confirm__list { margin: 0 0 26px; padding-left: 18px; display: grid; gap: 9px; }
/* [wpsess_before_you_come] – the same list, on an event page. */
.wpsess-before { margin: 0; padding-left: 18px; display: grid; gap: 9px; }
.wpsess-before__title { margin: 0 0 13px; }
.wpsess-confirm__map { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--wpsess-radius-card); margin: 0 0 18px; }
.wpsess-confirm__map--empty { background: repeating-linear-gradient(135deg, var(--wpsess-chip) 0 12px, var(--wpsess-seat) 12px 24px); }
.wpsess-confirm__address { color: var(--wpsess-muted); font-size: 14px; }
.wpsess-confirm .wpsess-confirm__note { font-size: 14px; margin-top: 9px; }

.wpsess-waiver-text {
	max-height: 260px; overflow: auto; padding: 18px; border-radius: 12px; background: var(--wpsess-chip);
	font-size: 14px; line-height: 1.6;
}
.wpsess-modal .wpsess-waiver-text p { margin: 0 0 9px; }
/* The signing pop-up: wider, and the waiver at full length in reading-size type – the pop-up scrolls as one. */
.wpsess-dialog .wpsess-modal__box { width: min(760px, 100%); }
.wpsess-dialog .wpsess-waiver-text { max-height: none; overflow: visible; padding: 22px 26px; font-size: 16px; line-height: 1.65; }
.wpsess-dialog .wpsess-waiver-text p { margin: 0 0 13px; }
.wpsess-dialog .wpsess-waiver-text p:last-child { margin-bottom: 0; }
.wpsess-check { display: flex; gap: 9px; align-items: flex-start; font-size: 14px; cursor: pointer; }
.wpsess-check input { width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--wpsess-accent); flex: none; }

@media (max-width: 900px) {
	.wpsess-confirm .wpsess-confirm__hero,
	.wpsess-confirm .wpsess-confirm__names { padding-left: 20px; padding-right: 20px; }
	.wpsess-confirm .wpsess-confirm__before,
	.wpsess-confirm__seats { grid-template-columns: minmax(0, 1fr); }
	.wpsess-confirm__sos-fields { grid-template-columns: minmax(0, 1fr); }
	.wpsess-confirm__names-head { flex-direction: column; }
}

/* A package booking: "What happens next" under the hero, beside what was booked. */
.wpsess-confirm .wpsess-confirm__next {
	display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 35px; padding: 44px 35px;
	background: var(--wpsess-raised); border-bottom: 1px solid var(--wpsess-border);
}
.wpsess-confirm .wpsess-confirm__kicker--warm { color: var(--wpsess-warm); }
.wpsess-confirm__steps { margin: 0; padding: 0; list-style: none; counter-reset: wpsess-step; display: grid; gap: 13px; }
.wpsess-confirm__steps li { counter-increment: wpsess-step; display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 13px; align-items: start; }
.wpsess-confirm__steps li > span { padding-top: 4px; }
.wpsess-confirm__steps li::before {
	content: counter(wpsess-step); width: 32px; height: 32px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
	background: var(--wpsess-accent); color: var(--wpsess-accent-text); font-weight: 700; font-size: 14px;
}
.wpsess-confirm__booked .wpsess-confirm__list { margin-bottom: 0; }
@media (max-width: 900px) {
	.wpsess-confirm .wpsess-confirm__next { grid-template-columns: minmax(0, 1fr); padding-left: 20px; padding-right: 20px; }
}

/* Checkout: "Seats held for another 11:42." under the summary. */
.wpsess-hold-note { text-align: center; font-size: 14px; color: var(--wpsess-muted, inherit); margin: 13px 0 0; font-variant-numeric: tabular-nums; }
.wpsess-hold-note.is-done { color: var(--wpsess-warn-text, inherit); }


/* ── deposits ──────────────────────────────────────────────────────────── */

.wpsess-modal .wpsess-modal__total[hidden],
.wpsess-modal .wpsess-modal__deposit[hidden] { display: none; }
.wpsess-modal .wpsess-modal__deposit { display: grid; gap: 6px; padding-top: 18px; border-top: 1px solid var(--wpsess-border); }
.wpsess-modal .wpsess-modal__line { display: flex; justify-content: space-between; align-items: baseline; gap: 13px; font-size: 14px; }
.wpsess-modal .wpsess-modal__line--now { font-weight: 700; font-size: 16px; }

.wpsess-confirm .wpsess-confirm__deposit {
	display: flex; gap: 22px; justify-content: space-between; align-items: center; flex-wrap: wrap;
	background: var(--wpsess-warn-bg); padding: 26px 35px; border-bottom: 1px solid var(--wpsess-border);
}
.wpsess-confirm .wpsess-confirm__deposit > div { flex: 1 1 320px; }

/* The waiver: required, so it gets its own strip — words left, a bright button right. */
.wpsess-confirm .wpsess-confirm__waiver {
	display: flex; gap: 22px; justify-content: space-between; align-items: center; flex-wrap: wrap;
	background: var(--wpsess-raised); border: 2px solid var(--wpsess-bright); border-radius: 18px; padding: 22px 26px;
}
.wpsess-confirm .wpsess-confirm__waiver.is-signed { border-color: var(--wpsess-border); }
.wpsess-confirm .wpsess-confirm__waiver > div { flex: 1 1 320px; }
.wpsess-confirm .wpsess-confirm__waiver-title { font-size: 17px; font-weight: 700; color: var(--wpsess-text); margin: 0 0 4px; }
.wpsess-confirm .wpsess-confirm__waiver-text { font-size: 14px; }
.wpsess-confirm .wpsess-btn.wpsess-btn--bright,
.wpsess-mine .wpsess-btn.wpsess-btn--bright { background: var(--wpsess-bright); color: var(--wpsess-bright-text); border-color: transparent; }
.wpsess-confirm .wpsess-btn.wpsess-btn--bright:hover,
.wpsess-mine .wpsess-btn.wpsess-btn--bright:hover { background: var(--wpsess-bright-hover); color: var(--wpsess-bright-text); }
.wpsess-confirm .wpsess-confirm__kicker--warm { color: var(--wpsess-warm); margin-bottom: 6px; }

.wpsess-mine .wpsess-mine__card--party { border: 1px solid var(--wpsess-warm-hover); }
.wpsess-mine .wpsess-mine__card--party .wpsess-mine__kicker { color: var(--wpsess-warm); }
.wpsess-mine .wpsess-mine__balance { background: var(--wpsess-warn-bg); border-radius: 12px; padding: 13px 18px; font-size: 14px; color: var(--wpsess-text); }

.wpsess-btn--go,
.wpsess-quote .wpsess-btn.wpsess-btn--go { background: var(--wpsess-warm); color: #fff; border-color: transparent; }
.wpsess-quote .wpsess-btn.wpsess-btn--go:hover { background: var(--wpsess-warm-hover); color: #fff; }
.wpsess-notice--info { background: var(--wpsess-info-bg); border-color: var(--wpsess-border); color: var(--wpsess-info-text); }

/* ── the party enquiry form ────────────────────────────────────────────── */

.wpsess-enquiry {
	display: grid; gap: 18px; padding: 26px; border-radius: var(--wpsess-radius-card);
	background: var(--wpsess-raised); box-shadow: var(--wpsess-shadow-sm); color: var(--wpsess-text); box-sizing: border-box;
}
.wpsess-enquiry p { margin: 0; }
.wpsess-enquiry .wpsess-enquiry__form { display: grid; gap: 18px; }
.wpsess-enquiry__two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.wpsess-enquiry .wpsess-field { display: grid; gap: 6px; }
.wpsess-enquiry .wpsess-field > label { font-size: 14px; font-weight: 600; color: var(--wpsess-text); }
.wpsess-enquiry .wpsess-field input,
.wpsess-enquiry .wpsess-field select,
.wpsess-enquiry .wpsess-field textarea {
	width: 100%; box-sizing: border-box; min-height: 44px; padding: 10px 16px; font: inherit; font-size: 14px;
	border: 1px solid var(--wpsess-border); border-radius: var(--wpsess-radius); background: var(--wpsess-field); color: var(--wpsess-text);
}
.wpsess-enquiry .wpsess-field textarea { border-radius: 18px; min-height: 110px; resize: vertical; }
.wpsess-enquiry .wpsess-field :is(input, select, textarea):focus { outline: 2px solid var(--wpsess-accent-hover); outline-offset: 0; border-color: var(--wpsess-accent); }
.wpsess-enquiry .wpsess-btn {
	display: inline-flex; align-items: center; justify-content: center; width: 100%; padding: 14px 26px; border: 0; border-radius: 999px;
	font: inherit; font-size: 16px; font-weight: 600; cursor: pointer; background: var(--wpsess-accent); color: var(--wpsess-accent-text);
}
.wpsess-enquiry .wpsess-btn:hover { background: var(--wpsess-accent-hover); color: var(--wpsess-accent-text); }
.wpsess-enquiry .wpsess-hint { font-size: 12px; color: var(--wpsess-muted); text-align: center; }
.wpsess-enquiry .wpsess-enquiry__kicker { font-family: var(--wpsess-display); font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wpsess-warm); }
.wpsess-enquiry .wpsess-enquiry__title { margin: 0; font-family: var(--wpsess-display); font-size: 28px; line-height: 1.15; color: var(--wpsess-text); }
.wpsess-enquiry .wpsess-enquiry__muted { font-size: 14px; color: var(--wpsess-muted); }
@media (max-width: 600px) { .wpsess-enquiry__two { grid-template-columns: minmax(0, 1fr); } }

/* ── the quote page ────────────────────────────────────────────────────── */

.wpsess-quote-page { max-width: 1140px; margin: 0 auto; padding: 26px 20px 70px; box-sizing: border-box; }
.wpsess-quote { color: var(--wpsess-text); }
.wpsess-quote p { margin: 0; }
.wpsess-quote .wpsess-quote__hero {
	position: relative; overflow: hidden; background: var(--wpsess-warm); color: #fff;
	border-radius: var(--wpsess-radius-card); padding: 53px 35px 44px;
}
.wpsess-quote__blob { position: absolute; width: 260px; height: 260px; border-radius: 50%; background: var(--wpsess-warm-blob); opacity: 0.7; top: -100px; right: -60px; }
.wpsess-quote .wpsess-quote__kicker { position: relative; font-family: var(--wpsess-display); font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wpsess-on-warm-ink); margin-bottom: 13px; }
.wpsess-quote .wpsess-quote__title { position: relative; margin: 0 0 18px; max-width: 18ch; font-size: clamp(38px, 5vw, 56px); line-height: 1.05; color: #fff; text-wrap: balance; }
.wpsess-quote .wpsess-quote__lead { position: relative; max-width: 54ch; font-size: 19px; color: var(--wpsess-on-warm); }
.wpsess-quote__body { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 44px; padding: 44px 35px 0; align-items: start; }
.wpsess-quote__main { display: grid; gap: 35px; }
.wpsess-quote__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 26px; }
.wpsess-quote .wpsess-quote__label { font-family: var(--wpsess-display); font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wpsess-warm); }
.wpsess-quote .wpsess-quote__fact { font-weight: 700; }
.wpsess-quote .wpsess-quote__sub { font-size: 14px; color: var(--wpsess-muted); }
.wpsess-quote .wpsess-quote__h2 { margin: 0 0 18px; font-size: 22px; line-height: 1.2; color: var(--wpsess-text); }
.wpsess-quote__list { margin: 0; padding-left: 18px; display: grid; gap: 9px; }
.wpsess-quote .wpsess-quote__small { font-size: 14px; color: var(--wpsess-muted); }
.wpsess-quote .wpsess-quote__price {
	position: sticky; top: 18px; display: grid; gap: 4px; padding: 26px; border-radius: var(--wpsess-radius-card);
	background: var(--wpsess-raised); box-shadow: var(--wpsess-shadow-sm);
}
.wpsess-quote .wpsess-quote__price .wpsess-quote__h2 { margin-bottom: 9px; }
.wpsess-quote__line { display: flex; justify-content: space-between; gap: 13px; font-size: 14px; padding: 9px 0; }
.wpsess-quote__line--total { border-top: 1px solid var(--wpsess-border); border-bottom: 1px solid var(--wpsess-border); font-weight: 700; margin-top: 4px; }
.wpsess-quote__line--due { font-family: var(--wpsess-display); font-size: 22px; padding-top: 13px; }
.wpsess-quote .wpsess-btn {
	display: inline-flex; align-items: center; justify-content: center; width: 100%; margin-top: 13px; padding: 14px 26px; border: 1px solid transparent;
	border-radius: 999px; font: inherit; font-size: 16px; font-weight: 600; cursor: pointer; text-decoration: none; background: var(--wpsess-accent); color: var(--wpsess-accent-text);
}
.wpsess-quote .wpsess-btn--secondary { background: transparent; color: var(--wpsess-text); border-color: var(--wpsess-border); }
.wpsess-quote .wpsess-notice { margin-top: 13px; }
@media (max-width: 900px) {
	.wpsess-quote__body { grid-template-columns: minmax(0, 1fr); padding: 35px 0 0; }
	.wpsess-quote .wpsess-quote__price { position: static; }
	.wpsess-quote .wpsess-quote__hero { padding: 44px 22px 35px; }
}
