/*
 * The First Supper components. Values come from theme.json tokens (--wp--preset--*, --wp--custom--*).
 * One section per component. Units: rem for type and spacing, em for text-relative spacing,
 * % and fr for layout, px for rules and borders.
 *
 * Type roles: Francois One (display) announces: page, section and event titles.
 * Classical Diary (serif) is the warm voice: taglines, intros, post and card titles, signatures.
 * Inter (body) is for reading and for labels.
 */

:root {
	--tfs-page: var(--wp--preset--color--butter);
	--tfs-rule: var(--wp--custom--rule) solid var(--wp--preset--color--ink);
	--tfs-section: var(--wp--preset--spacing--60);
	--tfs-gutter: var(--wp--preset--spacing--30);
	--tfs-ease: cubic-bezier(0.16, 1, 0.3, 1); /* ease-out-expo */
	--tfs-wrap: 72rem;
	--tfs-z-header: 20;
	--tfs-z-panel: 30;
	--tfs-z-dialog: 40;
}
.tfs-page-mint { --tfs-page: var(--wp--preset--color--mint); }
.tfs-page-blush { --tfs-page: var(--wp--preset--color--blush); }

/* ---------- Base ---------- */

::selection { background: var(--wp--preset--color--coral-strong); color: var(--wp--preset--color--white); }
input, textarea { caret-color: var(--wp--preset--color--coral-strong); }
body { margin: 0; background: var(--tfs-page); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img { max-width: 100%; height: auto; }
a { text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
strong, b { font-weight: 700; }
:focus-visible { outline: 3px solid var(--wp--preset--color--coral); outline-offset: 3px; border-radius: 2px; }
.tfs-skip { position: absolute; left: -999em; }
.tfs-skip:focus { left: 1rem; top: 1rem; z-index: 100; background: var(--tfs-page); padding: 0.5em 1em; }
.tfs-icon { width: 1.15em; height: 1.15em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* ---------- Buttons ----------
 * Primary: filled coral (the stronger coral, so white text passes AA). Secondary: ink outline.
 * Block buttons (core/button) and theme buttons share one look.
 */

.tfs-button,
.wp-block-button__link,
.jet-form-builder__action-button {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.5em;
	min-height: 3rem; box-sizing: border-box; padding: 0.8em 1.6em;
	border: 2px solid var(--wp--preset--color--coral-strong); border-radius: var(--wp--custom--radius);
	background: var(--wp--preset--color--coral-strong); color: var(--wp--preset--color--white);
	font: 700 var(--wp--preset--font-size--s)/1.3 var(--wp--preset--font-family--body); letter-spacing: 0.01em;
	text-decoration: none; cursor: pointer;
	transition: background-color 0.2s, border-color 0.2s, color 0.2s, transform 0.25s var(--tfs-ease), box-shadow 0.25s var(--tfs-ease);
}
.tfs-button:hover,
.wp-block-button__link:hover,
.jet-form-builder__action-button:hover {
	background: var(--wp--preset--color--coral-deep); border-color: var(--wp--preset--color--coral-deep); color: var(--wp--preset--color--white);
	transform: translateY(-2px); box-shadow: 0 0.5rem 1.1rem -0.5rem rgb(184 41 45 / 55%);
}
.tfs-button:active,
.wp-block-button__link:active,
.jet-form-builder__action-button:active { transform: translateY(0); box-shadow: none; }
.tfs-button--outline,
.is-style-outline > .wp-block-button__link {
	background: transparent; border-color: var(--wp--preset--color--ink); color: var(--wp--preset--color--ink);
}
.tfs-button--outline:hover,
.is-style-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--ink); border-color: var(--wp--preset--color--ink); color: var(--tfs-page); box-shadow: 0 0.5rem 1.1rem -0.5rem rgb(0 0 0 / 40%);
}
.tfs-button--wide { width: 100%; }
.tfs-button--quiet { background: var(--wp--preset--color--ink); border-color: var(--wp--preset--color--ink); }
.tfs-button--quiet:hover { background: #2b2b2b; border-color: #2b2b2b; box-shadow: 0 0.5rem 1.1rem -0.5rem rgb(0 0 0 / 45%); }
.wp-block-buttons,
.tfs-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.wp-block-button { margin: 0; }

/* Quiet text link with an arrow. */
.tfs-textlink { display: inline-flex; align-items: center; gap: 0.4em; font-weight: 700; font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--ink); text-decoration: none; }
.tfs-textlink .tfs-icon { transition: transform 0.25s var(--tfs-ease); }
.tfs-textlink:hover .tfs-icon { transform: translateX(0.25em); }

/* ---------- Header ---------- */

.tfs-header {
	position: sticky; top: 0; z-index: var(--tfs-z-header);
	display: flex; align-items: center; justify-content: space-between; gap: var(--wp--preset--spacing--40);
	padding: 0.9rem 3.33%; background: var(--tfs-page);
	box-shadow: 0 1px 0 transparent; transition: box-shadow 0.3s, padding 0.3s var(--tfs-ease);
}
.tfs-header.is-stuck { padding-block: 0.5rem; box-shadow: 0 1px 0 rgb(0 0 0 / 12%), 0 0.75rem 1.5rem -1.25rem rgb(0 0 0 / 25%); }
.tfs-header__logo img { transition: width 0.3s var(--tfs-ease); }
.tfs-header.is-stuck .tfs-header__logo img { width: 3.5rem; }
.admin-bar .tfs-header { top: var(--wp-admin--admin-bar--height, 0); }
.tfs-header__logo img { display: block; width: 4.5rem; height: auto; }
.tfs-nav__panel { display: flex; align-items: center; gap: var(--wp--preset--spacing--30); }
.tfs-nav__menu { display: flex; margin: 0; padding: 0; list-style: none; }
.tfs-nav__menu a {
	display: block; padding: 0.6em 0.75em;
	font: 700 var(--wp--preset--font-size--s)/1.3 var(--wp--preset--font-family--body);
	color: var(--wp--preset--color--ink); text-decoration: none;
	background: linear-gradient(var(--wp--preset--color--coral), var(--wp--preset--color--coral)) no-repeat 50% calc(100% - 0.2em) / 0 2px;
	transition: background-size 0.25s var(--tfs-ease);
}
.tfs-nav__menu a:hover,
.tfs-nav__menu .current-menu-item > a:not([href*="#"]) { background-size: calc(100% - 1.5em) 2px; }
.tfs-nav__toggle { display: none; padding: 0.5rem; border: 0; background: none; color: var(--wp--preset--color--ink); cursor: pointer; }
.tfs-nav__toggle svg { display: block; width: 1.75rem; height: 1.75rem; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; }

@media (max-width: 900px) {
	.tfs-nav__toggle { display: block; }
	.tfs-nav__panel {
		display: none; position: absolute; inset: 100% 0 auto; z-index: var(--tfs-z-panel);
		flex-direction: column; align-items: stretch; gap: 0;
		padding: 0.5rem 3.33% 1.5rem; background: var(--tfs-page); border-bottom: var(--tfs-rule);
	}
	.tfs-nav__panel.is-open { display: flex; }
	.tfs-nav__menu { flex-direction: column; }
	.tfs-nav__menu a { padding: 0.85rem 0; font-size: var(--wp--preset--font-size--m); border-bottom: 1px solid rgb(0 0 0 / 12%); background: none; }
	.tfs-nav__cta { margin-top: 1.25rem; }
}

/* ---------- Shared pieces ---------- */

.tfs-meta {
	display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35em 0.6em; margin: 0 0 1.25rem;
	font: 700 var(--wp--preset--font-size--xs)/1.4 var(--wp--preset--font-family--body); letter-spacing: 0.08em; text-transform: uppercase;
}
.tfs-meta a { color: var(--wp--preset--color--coral-deep); text-decoration: none; }
.tfs-meta a:hover { text-decoration: underline; }

/* Photo in the rounded black frame used across the site. */
.tfs-frame,
.wp-block-image.is-style-frame { margin: 0; }
.tfs-frame img,
.wp-block-image.is-style-frame img {
	display: block; width: 100%; box-sizing: border-box;
	border: var(--tfs-rule); border-radius: var(--wp--custom--frame-radius); object-fit: cover;
}

/* Card: the black-bordered panel from the Elementor site, lifted slightly from the page. */
.tfs-card,
.wp-block-group.is-style-card {
	border: var(--tfs-rule); border-radius: var(--wp--custom--frame-radius);
	background: rgb(255 255 255 / 55%);
	padding: clamp(1.5rem, 4vw, 3rem);
}

/* Reading column: text set for reading, not scanning. */
.tfs-prose { max-width: var(--wp--custom--measure); margin-inline: auto; font-size: var(--wp--preset--font-size--base); line-height: 1.7; }
.tfs-prose > * { margin-block: 0; }
.tfs-prose > * + * { margin-top: 1.15em; }
.tfs-prose > :where(h2, h3, h4) { margin-top: 2em; margin-bottom: -0.35em; }
.tfs-prose h2 { font-size: var(--wp--preset--font-size--l); }
.tfs-prose ul, .tfs-prose ol { padding-left: 1.3em; }
.tfs-prose li + li { margin-top: 0.45em; }
.tfs-prose li::marker { color: var(--wp--preset--color--coral); }
.tfs-prose a { color: var(--wp--preset--color--ink); text-decoration-color: var(--wp--preset--color--coral); text-decoration-thickness: 2px; }
.tfs-prose .wp-block-image { margin-block: 2em; }

.tfs-prose .is-style-intro,
p.is-style-intro {
	font-family: var(--wp--preset--font-family--serif); font-style: italic; font-size: var(--wp--preset--font-size--m); line-height: 1.45;
}
.tfs-prose .is-style-signature,
p.is-style-signature {
	margin-top: 2.25em; padding-top: 1.25em; border-top: 2px solid var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--m); line-height: 1.35;
}

/* Status label for events. */
.tfs-badge {
	display: inline-flex; align-items: center; gap: 0.45em; margin: 0;
	padding: 0.4em 0.85em; border-radius: 99px;
	font: 800 var(--wp--preset--font-size--xs)/1.2 var(--wp--preset--font-family--body); letter-spacing: 0.07em; text-transform: uppercase;
}
.tfs-badge::before { content: ""; width: 0.5em; height: 0.5em; border-radius: 50%; background: currentColor; }
.tfs-badge--open { background: var(--wp--preset--color--forest); color: var(--wp--preset--color--white); }
.tfs-badge--full { background: var(--wp--preset--color--coral); color: var(--wp--preset--color--white); }
.tfs-badge--past,
.tfs-badge--undated { background: transparent; color: var(--wp--preset--color--ink); box-shadow: inset 0 0 0 2px currentColor; }

/* ---------- Blog post ---------- */

.tfs-post { padding: var(--wp--preset--spacing--50) var(--tfs-gutter) var(--tfs-section); }
.tfs-post__header { max-width: 50rem; margin: 0 auto var(--wp--preset--spacing--50); text-align: center; }
.tfs-post__title {
	margin: 0; font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--xxl); line-height: 1.08;
	text-wrap: balance;
}
.tfs-post__photo { max-width: 56rem; margin: 0 auto var(--wp--preset--spacing--50); }
.tfs-post__photo img { aspect-ratio: 16 / 10; }

.tfs-invite {
	display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); align-items: center; gap: var(--wp--preset--spacing--40);
	max-width: 56rem; margin: var(--tfs-section) auto 0; box-sizing: border-box;
	background: var(--wp--preset--color--mint);
}
.tfs-invite img { display: block; width: 100%; }
.tfs-invite__title { margin: 0 0 0.6rem; font-size: var(--wp--preset--font-size--xl); }
.tfs-invite p { margin: 0 0 1.5rem; }
@media (max-width: 700px) { .tfs-invite { grid-template-columns: 1fr; text-align: center; } .tfs-invite img { max-width: 18rem; margin-inline: auto; } }

.tfs-postnav { display: grid; grid-template-columns: 1fr 1fr; gap: var(--wp--preset--spacing--30); max-width: 56rem; margin: var(--wp--preset--spacing--50) auto 0; }
.tfs-postnav__link {
	display: flex; flex-direction: column; gap: 0.5rem; padding: 1.25rem 1.5rem;
	border-top: var(--tfs-rule); color: var(--wp--preset--color--ink); text-decoration: none;
	transition: background-color 0.2s;
}
.tfs-postnav__link:hover { background: rgb(255 255 255 / 45%); }
.tfs-postnav__link--next { grid-column: 2; text-align: right; }
.tfs-postnav__label { display: inline-flex; align-items: center; gap: 0.4em; font: 700 var(--wp--preset--font-size--xs)/1.3 var(--wp--preset--font-family--body); letter-spacing: 0.08em; text-transform: uppercase; color: var(--wp--preset--color--coral-deep); }
.tfs-postnav__link--next .tfs-postnav__label { justify-content: flex-end; }
.tfs-postnav__title { font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--m); line-height: 1.25; }
@media (max-width: 700px) { .tfs-postnav { grid-template-columns: 1fr; } .tfs-postnav__link--next { grid-column: auto; } }

/* ---------- Event ---------- */

.tfs-event { max-width: 72rem; margin-inline: auto; padding: var(--wp--preset--spacing--50) var(--tfs-gutter) var(--tfs-section); }
.tfs-event__header { max-width: 52rem; margin: 0 auto var(--wp--preset--spacing--50); text-align: center; }
.tfs-event__title { margin: 0; font-size: var(--wp--preset--font-size--xxl); line-height: 1.1; text-wrap: balance; }
.tfs-event__tagline {
	margin: 1.1rem auto 0; max-width: 40rem;
	font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--m); line-height: 1.4; text-wrap: pretty;
}
.tfs-event__photo { margin: 0 0 var(--wp--preset--spacing--50); }
.tfs-event__photo img { aspect-ratio: 21 / 9; max-height: 34rem; }

.tfs-event__body {
	display: grid; grid-template-columns: minmax(0, 1fr) 21rem; align-items: start; gap: var(--wp--preset--spacing--50) clamp(2rem, 5vw, 5rem);
}
.tfs-event__body > .tfs-prose { grid-column: 1; grid-row: 1; margin-inline: 0 auto; }
.tfs-event__body > .tfs-ticket { grid-column: 2; grid-row: 1; position: sticky; top: 1.5rem; }
@media (max-width: 900px) {
	.tfs-event__body { grid-template-columns: 1fr; }
	.tfs-event__body > .tfs-prose,
	.tfs-event__body > .tfs-ticket { grid-column: 1; grid-row: auto; position: static; }
	.tfs-event__body > .tfs-ticket { width: 100%; max-width: 30rem; margin-inline: auto; }
	.tfs-event__body > .tfs-prose { margin-inline: auto; }
	.tfs-event__photo img { aspect-ratio: 4 / 3; }
}

/* Ticket: the facts of an event, with a tear-off stub for the booking button. */
.tfs-ticket {
	--stub: 5.5rem;
	--notch: 0.8rem;
	position: relative; box-sizing: border-box;
	padding: 1.5rem 1.5rem 0;
	border: var(--tfs-rule); border-radius: var(--wp--custom--frame-radius);
	background: var(--wp--preset--color--white);
	box-shadow: var(--wp--custom--shadow);
	-webkit-mask:
		radial-gradient(circle at left 0 bottom var(--stub), transparent var(--notch), #000 calc(var(--notch) + 0.5px)),
		radial-gradient(circle at right 0 bottom var(--stub), transparent var(--notch), #000 calc(var(--notch) + 0.5px));
	-webkit-mask-composite: source-in;
	mask:
		radial-gradient(circle at left 0 bottom var(--stub), transparent var(--notch), #000 calc(var(--notch) + 0.5px)),
		radial-gradient(circle at right 0 bottom var(--stub), transparent var(--notch), #000 calc(var(--notch) + 0.5px));
	mask-composite: intersect;
}
.tfs-ticket__facts { margin: 1.25rem 0 1.5rem; }
.tfs-ticket__facts > div + div { margin-top: 1rem; }
.tfs-ticket__facts dt {
	display: flex; align-items: center; gap: 0.45em; margin-bottom: 0.2rem;
	font: 700 var(--wp--preset--font-size--xs)/1.3 var(--wp--preset--font-family--body); letter-spacing: 0.08em; text-transform: uppercase;
	color: var(--wp--preset--color--coral-deep);
}
.tfs-ticket__facts dd { margin: 0; font-size: 1.0625rem; font-weight: 500; line-height: 1.45; }
.tfs-ticket__stub {
	display: flex; align-items: center; height: var(--stub); box-sizing: border-box;
	margin-inline: -1.5rem; padding-inline: 1.5rem;
	border-top: 2px dashed rgb(0 0 0 / 35%);
}

/* Booking, or sign-up when the event has passed or is full. */
.tfs-reserve { max-width: 44rem; margin: var(--tfs-section) auto 0; box-sizing: border-box; text-align: center; scroll-margin-top: 1.5rem; }
.tfs-reserve__art { display: block; width: min(16rem, 70%); margin: 0 auto 1.25rem; }
.tfs-reserve__title { margin: 0; font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--xl); line-height: 1.15; }
.tfs-reserve__intro { max-width: 32rem; margin: 0.75rem auto 2rem; }
.tfs-reserve form { text-align: left; }
.tfs-event--past .tfs-reserve,
.tfs-event--full .tfs-reserve { background: var(--wp--preset--color--mint); }

/* ---------- Forms (JetFormBuilder) ---------- */

.jet-form-builder { --tfs-field-border: 2px solid var(--wp--preset--color--ink); }
.jet-form-builder-row { margin-bottom: 1rem; }
.jet-form-builder__label { margin-bottom: 0.35rem; }
.jet-form-builder__label-text { font: 700 var(--wp--preset--font-size--s)/1.3 var(--wp--preset--font-family--body); }
.jet-form-builder__required { color: var(--wp--preset--color--coral-deep); }
.jet-form-builder input:is([type=text], [type=email], [type=tel]),
.jet-form-builder select,
.jet-form-builder textarea {
	width: 100%; box-sizing: border-box; padding: 0.75em 0.9em;
	border: var(--tfs-field-border); border-radius: var(--wp--custom--radius);
	background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink);
	font: 400 1rem/1.4 var(--wp--preset--font-family--body);
	transition: box-shadow 0.15s;
}
.jet-form-builder textarea { min-height: 7.5rem; resize: vertical; }
/* Focus: the ink border thickens; no coloured ring (Pablo). Still visible for keyboard users. */
.jet-form-builder :is(input, select, textarea):focus { outline: none; box-shadow: inset 0 0 0 1px var(--wp--preset--color--ink); }
.jet-form-builder ::placeholder { color: rgb(0 0 0 / 45%); }
.jet-form-builder .checkradio-wrap { display: flex; align-items: flex-start; gap: 0.6em; font-size: var(--wp--preset--font-size--s); line-height: 1.45; }
/* JetFormBuilder hides the real checkbox and draws one before the label text; restyle that one. */
.jet-form-builder .field-type-checkbox-field .jet-form-builder__field-label.for-checkbox > span::before {
	width: 1.25rem; height: 1.25rem; margin-top: 0.05rem; box-sizing: border-box;
	border: 2px solid var(--wp--preset--color--ink); border-radius: 0.3rem; background-color: var(--wp--preset--color--white);
	transition: background-color 0.15s, border-color 0.15s;
}
.jet-form-builder .field-type-checkbox-field .jet-form-builder__field-label.for-checkbox :checked + span::before {
	border-color: var(--wp--preset--color--coral-strong); background-color: var(--wp--preset--color--coral-strong); background-size: 62%;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.jet-form-builder .field-type-checkbox-field .jet-form-builder__field-label.for-checkbox :focus-visible + span::before { outline: 3px solid var(--wp--preset--color--coral); outline-offset: 2px; }
.jet-form-builder .field-type-checkbox-field .jet-form-builder__field-label.for-checkbox :not(:checked):hover + span::before { border-color: var(--wp--preset--color--coral-deep); }
.jet-form-builder .field-type-checkbox-field .jet-form-builder__field-label.for-checkbox > span { align-items: flex-start; gap: 0.65em; }
.jet-form-builder .for-checkbox { display: flex; align-items: flex-start; gap: 0.65em; cursor: pointer; }
.jet-form-builder .for-checkbox span { font-size: var(--wp--preset--font-size--s); line-height: 1.45; }
.jet-form-builder button.jet-form-builder__submit { justify-content: center; width: 100%; padding-block: 1em; font-size: 1rem; }
.jet-form-builder__submit-wrap { margin-top: 0.5rem; }
.jet-form-builder-messages-wrap { margin-top: 1rem; }
.jet-form-builder-messages-wrap .jet-form-builder-message {
	margin: 0; padding: 0.85em 1em; border: 0; border-radius: var(--wp--custom--radius);
	font-weight: 500; text-align: center;
}
.jet-form-builder-messages-wrap .jet-form-builder-message--success { background: var(--wp--preset--color--mint); color: var(--wp--preset--color--forest); }
.jet-form-builder-messages-wrap .jet-form-builder-message--error { background: var(--wp--preset--color--blush); color: var(--wp--preset--color--coral-deep); }
.jet-form-builder__field-error, .jet-form-builder-col__error { color: var(--wp--preset--color--coral-deep); font-size: var(--wp--preset--font-size--s); }

/* ---------- "Amen" thank-you dialog ---------- */

.tfs-amen {
	width: min(26rem, 85vw); box-sizing: border-box; padding: 2.25rem 2rem 2.5rem;
	border: 0; border-radius: 2rem; background: var(--wp--preset--color--mint); color: var(--wp--preset--color--ink);
	box-shadow: var(--wp--custom--shadow); text-align: center;
}
.tfs-amen::backdrop { background: rgb(227 232 226 / 70%); }
.tfs-amen[open] { animation: tfs-drop-in 0.7s var(--tfs-ease); }
.tfs-amen img { display: block; width: 80%; margin: 0 auto 0.5rem; }
.tfs-amen__word { margin: 0; font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--xxl); line-height: 1; }
.tfs-amen__text { margin: 0.5rem 0 0; font-weight: 700; font-size: var(--wp--preset--font-size--m); }
.tfs-amen__close {
	position: absolute; top: 0.75rem; right: 0.75rem; width: 2.75rem; height: 2.75rem; padding: 0;
	border: 0; border-radius: 50%; background: transparent; color: var(--wp--preset--color--ink);
	font-size: 1.75rem; line-height: 1; cursor: pointer; transition: background-color 0.2s;
}
.tfs-amen__close:hover { background: rgb(0 0 0 / 8%); }
@keyframes tfs-drop-in { from { opacity: 0; transform: translateY(-1.5rem); } to { opacity: 1; transform: none; } }

/* ---------- Footer ---------- */

.tfs-footer { margin-top: var(--wp--preset--spacing--50); }
.tfs-footer__skyline { display: block; width: 100%; height: clamp(4.5rem, 8vw, 7.5rem); object-fit: cover; object-position: bottom; border-bottom: var(--tfs-rule); }
.tfs-footer__inner {
	display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto; align-items: start; gap: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--50) 3.33% var(--wp--preset--spacing--40);
}
.tfs-footer__brand img { display: block; width: 5rem; height: auto; }
.tfs-footer__tagline { max-width: 17rem; margin: 0.9rem 0 0; font-size: var(--wp--preset--font-size--xs); font-weight: 500; line-height: 1.5; opacity: 0.8; }
.tfs-footer__menu { margin: 0; padding: 0; list-style: none; columns: 2; column-gap: 2rem; }
.tfs-footer__menu a { display: inline-block; padding: 0.35em 0; font-weight: 500; color: var(--wp--preset--color--ink); text-decoration: none; }
.tfs-footer__menu a:hover { text-decoration: underline; text-decoration-color: var(--wp--preset--color--coral); text-decoration-thickness: 2px; }
.tfs-footer__actions { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; }
.tfs-footer__insta { display: inline-flex; align-items: center; gap: 0.5em; font-weight: 500; font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--ink); text-decoration: none; }
.tfs-footer__insta .tfs-icon { width: 1.6rem; height: 1.6rem; }
.tfs-footer__insta:hover span { text-decoration: underline; }
.tfs-footer__credit { margin: 0; padding: 1.25rem 3.33% 2rem; border-top: 1px solid rgb(0 0 0 / 15%); font-size: var(--wp--preset--font-size--xs); font-weight: 700; }
@media (max-width: 800px) {
	.tfs-footer__inner { grid-template-columns: 1fr; text-align: center; justify-items: center; }
	.tfs-footer__brand img { margin-inline: auto; }
	.tfs-footer__tagline { margin-inline: auto; }
	.tfs-footer__actions { align-items: center; }
	.tfs-footer__credit { text-align: center; }
}

/* ==========================================================================
 * Pages. One colour per page (body background, see body_class): sections sit on it without
 * bands or cuts, so a page scrolls as one surface, as on the Elementor site.
 * Groups here lay out with grid or flex gaps, never WordPress's flow margins.
 * ========================================================================== */

.tfs-page .wp-block-group > * { margin-block: 0; }
.tfs-page h2 { font-size: var(--wp--preset--font-size--xl); line-height: 1.05; text-wrap: balance; }
.tfs-page p { text-wrap: pretty; }
.tfs-wrap { max-width: var(--tfs-wrap); margin-inline: auto; padding-inline: var(--tfs-gutter); }

.tfs-section { padding-block: calc(var(--tfs-section) * 0.6); }
.tfs-section--tight { padding-top: var(--wp--preset--spacing--20); }

.tfs-page .tfs-sectionhead { display: flex; flex-direction: column; gap: 0.75rem; margin-bottom: clamp(2rem, 4vw, 3rem); }
.tfs-sectionhead p { max-width: 36rem; font-size: var(--wp--preset--font-size--m); line-height: 1.5; }
.tfs-page .tfs-sectionhead--row { flex-direction: row; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem 2rem; }
@media (max-width: 560px) { .tfs-page .tfs-sectionhead--row { flex-direction: column; align-items: flex-start; } }

/* ---------- Page header (Gallery, Events, Blog) ---------- */

.tfs-pagehead {
	display: flex; flex-direction: column; align-items: center; gap: 1.25rem;
	max-width: 46rem; margin-inline: auto; padding: clamp(3rem, 7vw, 5.5rem) var(--tfs-gutter) clamp(2.5rem, 5vw, 4rem);
	text-align: center;
}
.tfs-pagehead__title,
.tfs-page .tfs-pagehead__title { margin: 0; font-size: var(--wp--preset--font-size--hero); line-height: 1; letter-spacing: -0.005em; }
.tfs-pagehead__lead { margin: 0; max-width: 38rem; font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--m); line-height: 1.45; }
.tfs-pagehead .wp-block-buttons { justify-content: center; margin-top: 0.5rem; }

/* ---------- Home: hero ---------- */

.tfs-hero {
	display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); align-items: center; gap: clamp(2rem, 5vw, 5rem);
	max-width: var(--tfs-wrap); margin-inline: auto; box-sizing: border-box;
	min-height: min(calc(100svh - 6rem), 46rem);
	padding: clamp(2rem, 5vw, 4rem) var(--tfs-gutter) clamp(3rem, 7vw, 6rem);
}
.tfs-hero__text { display: flex; flex-direction: column; align-items: flex-start; gap: 1.5rem; }
.tfs-page .tfs-hero__greeting { margin: 0; font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--l); line-height: 1.15; }
.tfs-hero__statement {
	max-width: 12.5em; font-family: var(--wp--preset--font-family--display); font-size: var(--wp--preset--font-size--hero);
	line-height: 1.02; letter-spacing: -0.005em; text-wrap: balance;
}
.tfs-hero__art { margin: 0; }
.tfs-hero__art img { display: block; width: 100%; height: auto; animation: tfs-rise 1.1s var(--tfs-ease) both; }
@keyframes tfs-rise { from { opacity: 0; transform: translateY(1.5rem) scale(0.98); } to { opacity: 1; transform: none; } }

/* The next supper, or an invitation when none is planned. */
.tfs-next {
	display: inline-flex; align-items: center; gap: 0.75rem; max-width: 100%; box-sizing: border-box;
	padding: 0.55rem 1rem 0.55rem 0.55rem; border: 2px solid var(--wp--preset--color--ink); border-radius: 99px;
	background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); text-decoration: none;
	font-size: var(--wp--preset--font-size--s); line-height: 1.3;
	transition: transform 0.25s var(--tfs-ease), box-shadow 0.25s var(--tfs-ease);
}
.tfs-next:hover { color: var(--wp--preset--color--ink); transform: translateY(-2px); box-shadow: 0 0.5rem 1.1rem -0.6rem rgb(0 0 0 / 40%); }
.tfs-next__label { flex: none; padding: 0.35em 0.75em; border-radius: 99px; background: var(--wp--preset--color--forest); color: var(--wp--preset--color--white); font-weight: 700; font-size: var(--wp--preset--font-size--xs); }
.tfs-next__text { font-weight: 500; }
.tfs-next .tfs-icon { flex: none; color: var(--wp--preset--color--coral-deep); transition: transform 0.25s var(--tfs-ease); }
.tfs-next:hover .tfs-icon { transform: translateX(0.2em); }

@media (max-width: 860px) {
	/* As on the Elementor site: headline, then greeting, then the illustration. */
	.tfs-hero { grid-template-columns: 1fr; min-height: 0; text-align: left; }
	.tfs-hero__greeting { order: 1; }
	.tfs-hero__art { max-width: 26rem; margin-inline: auto; }
}

/* ---------- Home: features slider (as on the Elementor site) ----------
 * Four slides in view on desktop, two on tablets, one on phones. Dots, swipe, drag and a slow
 * autoplay that pauses on hover, focus and touch (assets/theme.js).
 */

.tfs-features { display: flex; flex-direction: column; align-items: center; gap: clamp(2rem, 4vw, 3rem); }
.tfs-slider {
	--per-view: 4; --gap: clamp(1rem, 2vw, 1.5rem);
	width: 100%; max-width: 78rem; box-sizing: border-box; padding-inline: var(--tfs-gutter);
	overflow: hidden; touch-action: pan-y; cursor: grab;
	-webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent;
}
.tfs-slider:focus-visible { outline: 3px solid var(--wp--preset--color--coral); outline-offset: 6px; }
.tfs-slider.is-dragging { cursor: grabbing; }
/* The moving strip (added by assets/theme.js). Before the script runs, slides simply sit in a row. */
.tfs-slider__track,
.tfs-slider:not(.is-ready) { display: flex; gap: var(--gap); }
.tfs-slider__track { will-change: transform; }
.tfs-slider__track.is-animating { transition: transform 0.65s var(--tfs-ease); }
.tfs-slider img { pointer-events: none; -webkit-user-drag: none; }
.tfs-slide {
	flex: 0 0 calc((100% - (var(--per-view) - 1) * var(--gap)) / var(--per-view));
	display: flex; flex-direction: column; align-items: center; gap: 0.75rem; text-align: center;
}
.tfs-slide__icon { margin: 0 0 0.5rem; }
.tfs-slide__icon img { display: block; width: 9.375rem; height: 9.375rem; object-fit: contain; -webkit-user-drag: none; }
@media (max-width: 600px) { .tfs-slide__icon img { width: 7.5rem; height: 7.5rem; } }
.tfs-page .tfs-slide__title { margin: 0; font-family: var(--wp--preset--font-family--body); font-size: 1.25rem; font-weight: 700; line-height: 1.25; text-wrap: balance; }
.tfs-slide p { max-width: 18rem; font-weight: 500; line-height: 1.55; }
.tfs-dots { display: flex; justify-content: center; gap: 0.25rem; margin-top: -1rem; }
.tfs-dots button {
	position: relative; width: 1.75rem; height: 1.75rem; padding: 0; border: 0; background: none; cursor: pointer;
}
.tfs-dots button::after {
	content: ""; position: absolute; inset: 50% auto auto 50%; width: 0.5rem; height: 0.5rem; translate: -50% -50%;
	border-radius: 50%; background: rgb(0 0 0 / 22%); transition: background-color 0.3s, transform 0.3s var(--tfs-ease);
}
.tfs-dots button[aria-current="true"]::after { background: var(--wp--preset--color--ink); transform: scale(1.15); }
@media (max-width: 1000px) { .tfs-slider { --per-view: 2; } }
@media (max-width: 600px) { .tfs-slider { --per-view: 1; } .tfs-slide { padding-inline: 1.5rem; box-sizing: border-box; } }

/* ---------- Text beside an illustration ---------- */

.tfs-split__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.tfs-split__text { display: flex; flex-direction: column; gap: 1.1em; max-width: 34rem; }
.tfs-page .tfs-split__text h2 { margin-bottom: 0.3em; font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--xxl); line-height: 1.05; }
.tfs-split__art { margin: 0; }
.tfs-split__art img { display: block; width: 100%; max-width: 34rem; height: auto; margin-inline: auto; }
@media (max-width: 860px) {
	.tfs-split__grid { grid-template-columns: 1fr; }
	.tfs-split__art { order: -1; max-width: 22rem; margin-inline: auto; }
}

/* ---------- Gallery photo wall ---------- */

.wp-block-gallery.has-nested-images.is-style-masonry { display: block; columns: 3 16rem; column-gap: 1rem; margin: 0; }
.wp-block-gallery.has-nested-images.is-style-masonry figure.wp-block-image:not(#tfs) {
	display: block; width: 100%; margin: 0 0 1rem; break-inside: avoid; overflow: hidden; border-radius: 0.875rem;
}
.wp-block-gallery.has-nested-images.is-style-masonry figure.wp-block-image img {
	display: block; width: 100%; height: auto; cursor: zoom-in; transition: transform 0.8s var(--tfs-ease), filter 0.3s;
}
.wp-block-gallery.has-nested-images.is-style-masonry figure.wp-block-image:hover img { transform: scale(1.03); filter: brightness(1.05); }
@media (max-width: 560px) { .wp-block-gallery.has-nested-images.is-style-masonry { columns: 2; column-gap: 0.625rem; } .wp-block-gallery.has-nested-images.is-style-masonry figure.wp-block-image:not(#tfs) { margin-bottom: 0.625rem; } }

/* Lightbox (assets/theme.js). */
.tfs-lightbox {
	width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0;
	background: rgb(16 16 12 / 94%); color: var(--wp--preset--color--white);
}
.tfs-lightbox::backdrop { background: transparent; }
.tfs-lightbox[open] { display: grid; place-items: center; animation: tfs-fade 0.3s ease-out; }
.tfs-lightbox img { max-width: min(92vw, 90rem); max-height: 86dvh; width: auto; height: auto; border-radius: 0.5rem; box-shadow: 0 1.5rem 4rem -1rem rgb(0 0 0 / 60%); }
.tfs-lightbox button {
	position: absolute; display: grid; place-items: center; width: 3rem; height: 3rem; padding: 0;
	border: 2px solid rgb(255 255 255 / 70%); border-radius: 50%; background: rgb(0 0 0 / 35%); color: inherit; cursor: pointer;
	transition: background-color 0.2s, border-color 0.2s;
}
.tfs-lightbox button:hover { background: var(--wp--preset--color--coral-strong); border-color: var(--wp--preset--color--coral-strong); }
.tfs-lightbox .tfs-icon { width: 1.4rem; height: 1.4rem; }
.tfs-lightbox__close { top: 1rem; right: 1rem; }
.tfs-lightbox__prev { left: 1rem; top: 50%; translate: 0 -50%; }
.tfs-lightbox__next { right: 1rem; top: 50%; translate: 0 -50%; }
.tfs-lightbox__count { position: absolute; bottom: 1.25rem; left: 50%; translate: -50% 0; margin: 0; font-size: var(--wp--preset--font-size--s); font-variant-numeric: tabular-nums; opacity: 0.85; }
@keyframes tfs-fade { from { opacity: 0; } to { opacity: 1; } }

/* ---------- Event cards ---------- */

.tfs-ecards { display: grid; gap: clamp(1.25rem, 2.5vw, 2rem); }
.tfs-ecards--grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr)); }
.tfs-ecard {
	position: relative; display: flex; flex-direction: column; overflow: hidden;
	border: var(--tfs-rule); border-radius: var(--wp--custom--frame-radius); background: var(--wp--preset--color--white);
	transition: transform 0.35s var(--tfs-ease), box-shadow 0.35s var(--tfs-ease);
}
.tfs-ecard:hover { transform: translateY(-4px); box-shadow: 0 1.25rem 2.25rem -1.5rem rgb(0 0 0 / 45%); }
.tfs-ecard__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; border-bottom: var(--tfs-rule); background: var(--wp--preset--color--blush); }
.tfs-ecard__media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s var(--tfs-ease); }
.tfs-ecard:hover .tfs-ecard__media img { transform: scale(1.04); }
.tfs-ecard--past .tfs-ecard__media img { filter: saturate(0.85); }
.tfs-ecard__body { display: flex; flex: 1; flex-direction: column; align-items: flex-start; gap: 0.6rem; padding: 1.4rem 1.5rem 1.5rem; }
.tfs-ecard__title { margin: 0.2rem 0 0; font-family: var(--wp--preset--font-family--serif); font-size: 1.5rem; line-height: 1.15; text-wrap: balance; }
.tfs-ecard__title a { color: inherit; text-decoration: none; }
.tfs-ecard__title a::after { content: ""; position: absolute; inset: 0; }
.tfs-ecard__title a:focus-visible { outline: none; }
.tfs-ecard:has(a:focus-visible) { outline: 3px solid var(--wp--preset--color--coral); outline-offset: 3px; }
.tfs-ecard__tagline { margin: 0; line-height: 1.55; }
.tfs-ecard__when,
.tfs-ecard__where { display: flex; gap: 0.5em; align-items: flex-start; margin: 0; font-size: var(--wp--preset--font-size--s); font-weight: 500; line-height: 1.4; }
.tfs-ecard__when .tfs-icon,
.tfs-ecard__where .tfs-icon { margin-top: 0.05em; color: var(--wp--preset--color--coral-deep); }
.tfs-ecard__more { display: inline-flex; align-items: center; gap: 0.4em; margin-top: auto; padding-top: 0.6rem; font-weight: 700; font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--coral-deep); }
.tfs-ecard__more .tfs-icon { transition: transform 0.25s var(--tfs-ease); }
.tfs-ecard:hover .tfs-ecard__more .tfs-icon { transform: translateX(0.25em); }

/* Upcoming: wide, photo beside the text. */
@media (min-width: 761px) {
	.tfs-ecards--feature .tfs-ecard { flex-direction: row; }
	.tfs-ecards--feature .tfs-ecard__media { flex: 0 0 52%; aspect-ratio: auto; min-height: 22rem; border-bottom: 0; border-right: var(--tfs-rule); }
	.tfs-ecards--feature .tfs-ecard__body { justify-content: center; padding: clamp(1.75rem, 3vw, 2.75rem); }
	.tfs-ecards--feature .tfs-ecard__title { font-size: var(--wp--preset--font-size--l); }
}

/* Calendar tab on a card photo. */
.tfs-datetab {
	position: absolute; top: 1rem; left: 1rem; display: flex; flex-direction: column; align-items: center;
	min-width: 3.75rem; padding: 0.45rem 0.5rem 0.4rem; box-sizing: border-box;
	border: 2px solid var(--wp--preset--color--ink); border-radius: 0.75rem; background: var(--wp--preset--color--white);
	box-shadow: 0 0.4rem 1rem -0.5rem rgb(0 0 0 / 40%);
}
.tfs-datetab__day { font-family: var(--wp--preset--font-family--display); font-size: 1.75rem; line-height: 1; }
.tfs-datetab__month { font-weight: 800; font-size: var(--wp--preset--font-size--xs); line-height: 1.2; text-transform: uppercase; letter-spacing: 0.06em; color: var(--wp--preset--color--coral-deep); }
.tfs-datetab__year { font-size: 0.6875rem; font-weight: 500; line-height: 1.2; }

/* Nothing planned yet. */
.tfs-empty {
	display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: center;
	padding: clamp(1.5rem, 4vw, 3rem); border: var(--tfs-rule); border-radius: var(--wp--custom--frame-radius); background: var(--wp--preset--color--mint);
}
.tfs-empty img { display: block; width: 100%; max-width: 22rem; margin-inline: auto; }
.tfs-empty > div { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; }
.tfs-empty__title { margin: 0; font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--l); line-height: 1.15; }
.tfs-empty p { margin: 0; max-width: 32rem; }
@media (max-width: 700px) { .tfs-empty { grid-template-columns: 1fr; } }

/* ---------- Blog cards ---------- */

.tfs-postlist { display: flex; flex-direction: column; gap: clamp(1.25rem, 2.5vw, 2rem); }
.tfs-pcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 30rem), 1fr)); gap: clamp(1.25rem, 2.5vw, 2rem); }
.tfs-pcard {
	position: relative; display: flex; flex-direction: column; overflow: hidden;
	border: var(--tfs-rule); border-radius: var(--wp--custom--frame-radius); background: var(--wp--preset--color--white);
	transition: transform 0.35s var(--tfs-ease), box-shadow 0.35s var(--tfs-ease);
}
.tfs-pcard:hover { transform: translateY(-4px); box-shadow: 0 1.25rem 2.25rem -1.5rem rgb(0 0 0 / 45%); }
.tfs-pcard__media { aspect-ratio: 3 / 2; overflow: hidden; border-bottom: var(--tfs-rule); }
.tfs-pcard__media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s var(--tfs-ease); }
.tfs-pcard:hover .tfs-pcard__media img { transform: scale(1.04); }
.tfs-pcard__body { display: flex; flex: 1; flex-direction: column; align-items: flex-start; gap: 0.75rem; padding: 1.5rem; }
.tfs-pcard__meta { margin: 0; font-size: var(--wp--preset--font-size--xs); font-weight: 700; letter-spacing: 0.04em; color: var(--wp--preset--color--coral-deep); }
.tfs-pcard__title { margin: 0; font-family: var(--wp--preset--font-family--serif); font-size: 1.625rem; line-height: 1.15; text-wrap: balance; }
.tfs-pcard__title a { color: inherit; text-decoration: none; }
.tfs-pcard__title a::after { content: ""; position: absolute; inset: 0; }
.tfs-pcard:has(a:focus-visible) { outline: 3px solid var(--wp--preset--color--coral); outline-offset: 3px; }
.tfs-pcard__title a:focus-visible { outline: none; }
.tfs-pcard__excerpt { margin: 0; line-height: 1.6; }
.tfs-pcard__more { display: inline-flex; align-items: center; gap: 0.4em; margin-top: auto; padding-top: 0.4rem; font-weight: 700; font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--coral-deep); }
.tfs-pcard__more .tfs-icon { transition: transform 0.25s var(--tfs-ease); }
.tfs-pcard:hover .tfs-pcard__more .tfs-icon { transform: translateX(0.25em); }
@media (min-width: 561px) {
	.tfs-pcards .tfs-pcard { flex-direction: row; }
	.tfs-pcards .tfs-pcard__media { flex: 0 0 40%; aspect-ratio: auto; min-height: 15rem; border-bottom: 0; border-right: var(--tfs-rule); }
	.tfs-pcards .tfs-pcard__title { font-size: 1.375rem; }
}
@media (min-width: 861px) {
	.tfs-pcard--featured { flex-direction: row; }
	.tfs-pcard--featured .tfs-pcard__media { flex: 0 0 55%; aspect-ratio: auto; min-height: 24rem; border-bottom: 0; border-right: var(--tfs-rule); }
	.tfs-pcard--featured .tfs-pcard__body { justify-content: center; padding: clamp(2rem, 3.5vw, 3rem); }
	.tfs-pcard--featured .tfs-pcard__title { font-size: var(--wp--preset--font-size--xl); line-height: 1.08; }
}

/* ---------- Instagram ---------- */

.tfs-insta .tfs-sectionhead { align-items: center; text-align: center; }
.tfs-page .tfs-insta .wp-block-buttons { justify-content: center; margin-top: 2rem; }
.tfs-insta #sb_instagram { padding-bottom: 0 !important; }
.tfs-insta #sb_instagram .sbi_follow_btn { display: none; }

/* ---------- Home: join us at our table ---------- */

.tfs-join {
	display: flex; flex-direction: column; align-items: center; gap: 1.25rem;
	max-width: 40rem; margin-inline: auto; padding-inline: var(--tfs-gutter); text-align: center; scroll-margin-top: 5rem;
}
.tfs-page .tfs-join h2 { font-size: var(--wp--preset--font-size--xxl); line-height: 1; }
.tfs-join > p { max-width: 34rem; }
.tfs-join .jet-form-builder { width: 100%; margin-top: 1rem; text-align: left; }
.tfs-join .jet-form-builder { display: flex; flex-wrap: wrap; column-gap: 0.75rem; }
.tfs-join .jet-form-builder > * { flex: 1 1 100%; min-width: 0; }
/* JetFormBuilder rows are wrapping columns; inside a flex form they must not wrap, or the field jumps beside its label. */
.tfs-join .jet-form-builder > .jet-form-builder-row { flex-wrap: nowrap; }
.tfs-join .jet-form-builder > .jet-form-builder-row:has(input[name="name"]),
.tfs-join .jet-form-builder > .jet-form-builder-row:has(input[name="email"]) { flex: 1 1 14rem; }
.tfs-join .jet-form-builder__submit-wrap { display: flex; justify-content: center; }
.tfs-join .jet-form-builder button.jet-form-builder__submit { width: auto; min-width: 11rem; }
.tfs-page .tfs-fineprint { max-width: 34rem; font-size: var(--wp--preset--font-size--xs); line-height: 1.5; }

/* ---------- About ---------- */

.tfs-intro {
	display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 5rem); align-items: center;
	max-width: var(--tfs-wrap); margin-inline: auto; box-sizing: border-box; padding: clamp(2.5rem, 6vw, 4.5rem) var(--tfs-gutter) calc(var(--tfs-section) * 0.6);
}
.tfs-intro__text { display: flex; flex-direction: column; gap: 1.5rem; }
.tfs-page .tfs-intro__text .tfs-label { margin-bottom: -0.75rem; }
.tfs-page .tfs-intro__text h1 { margin: 0; font-size: var(--wp--preset--font-size--hero); line-height: 1; letter-spacing: -0.005em; text-wrap: balance; }
.tfs-intro__text p { font-size: var(--wp--preset--font-size--m); line-height: 1.55; max-width: 32rem; }
.tfs-intro__photo img { aspect-ratio: 5 / 4; }
@media (max-width: 860px) { .tfs-intro { grid-template-columns: 1fr; } }

.tfs-mission { display: flex; flex-direction: column; align-items: center; gap: clamp(1.75rem, 3vw, 2.5rem); max-width: 56rem; margin-inline: auto; padding-inline: var(--tfs-gutter); text-align: center; }
.tfs-page .tfs-mission h2 { font-size: var(--wp--preset--font-size--xxl); }
.tfs-mission__grid { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: center; text-align: left; }
.tfs-mission__art { margin: 0; }
.tfs-mission__art img { display: block; width: 100%; height: auto; }
.tfs-statement { font-size: var(--wp--preset--font-size--m); line-height: 1.55; }
/* Small label above a heading, as on the Elementor About page. */
.tfs-label { font-weight: 700; font-size: var(--wp--preset--font-size--m); line-height: 1.3; }
.tfs-page h2.tfs-serif { font-family: var(--wp--preset--font-family--serif); }
@media (max-width: 700px) { .tfs-mission__grid { grid-template-columns: 1fr; text-align: center; } .tfs-mission__art { max-width: 20rem; margin-inline: auto; } }

/* FAQ: one centred column; one answer open at a time (assets/theme.js). */
.tfs-faq { display: flex; flex-direction: column; align-items: center; gap: 1rem; max-width: 46rem; margin-inline: auto; padding-inline: var(--tfs-gutter); }
.tfs-page .tfs-faq h2 { font-size: var(--wp--preset--font-size--xxl); }
.tfs-faq__lead { max-width: 34rem; text-align: center; }
.tfs-faq__list { width: 100%; margin-top: 1.5rem; border-top: 2px solid var(--wp--preset--color--ink); }
.tfs-faq .wp-block-details { border-bottom: 1px solid rgb(0 0 0 / 22%); }
.tfs-faq .wp-block-details summary {
	position: relative; display: block; padding: 1.25rem 3.25rem 1.25rem 0; cursor: pointer; list-style: none;
	font-weight: 700; font-size: 1.125rem; line-height: 1.4; transition: color 0.2s;
}
.tfs-faq .wp-block-details summary::-webkit-details-marker { display: none; }
.tfs-faq .wp-block-details summary:hover { color: var(--wp--preset--color--coral-deep); }
.tfs-faq .wp-block-details summary::before,
.tfs-faq .wp-block-details summary::after {
	content: ""; position: absolute; right: 0.6rem; top: 50%; width: 1.1rem; height: 2px; background: currentColor;
	transition: transform 0.35s var(--tfs-ease);
}
.tfs-faq .wp-block-details summary::after { transform: rotate(90deg); }
.tfs-faq .wp-block-details[open] summary::after { transform: rotate(0deg); }
.tfs-faq .wp-block-details > :not(summary) { margin: 0 0 1.5rem; line-height: 1.7; }
.tfs-faq .wp-block-details[open] > :not(summary) { animation: tfs-open 0.45s var(--tfs-ease); }
@keyframes tfs-open { from { opacity: 0; transform: translateY(-0.4rem); } to { opacity: 1; transform: none; } }

.tfs-cta { display: flex; flex-direction: column; align-items: center; gap: 1rem; max-width: 36rem; margin-inline: auto; padding-inline: var(--tfs-gutter); text-align: center; }
.tfs-page .tfs-cta h2 { font-family: var(--wp--preset--font-family--serif); font-size: var(--wp--preset--font-size--xl); }
.tfs-cta .wp-block-buttons { justify-content: center; margin-top: 0.25rem; }

/* ---------- 404 ---------- */

.tfs-notfound { display: flex; flex-direction: column; align-items: center; gap: 1.25rem; max-width: 40rem; margin-inline: auto; padding: clamp(3rem, 8vw, 6rem) var(--tfs-gutter) var(--tfs-section); text-align: center; }
.tfs-notfound img { width: min(22rem, 80%); height: auto; }
.tfs-notfound__title { margin: 0; font-size: var(--wp--preset--font-size--xxl); line-height: 1.05; text-wrap: balance; }
.tfs-notfound .tfs-actions { justify-content: center; }

/* ---------- Plain pages (policies) ---------- */

.tfs-plain { padding: 0 var(--tfs-gutter) var(--tfs-section); }
.tfs-plain .tfs-pagehead { padding-inline: 0; }

/* ---------- Motion ---------- */

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