/**
 * Section patterns (patterns/hub-*.php and later templates' sections).
 * Figma: 03 · Camp Landing Hub 240:2100. Every value is a theme.json token.
 * Loaded on the front end and in the editor (functions.php).
 */

/* Visually hidden text for screen readers. */
.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* Full-width sections sit edge to edge, with no block gap between them. */
.hub-content > .alignfull {
	margin-block: 0;
}

/* ---------- Hero (240:2400) ---------- */

/* Design height; brand green behind the scrim until a photo is set. */
.hub-hero {
	min-height: var(--wp--custom--height--hero);
	background-color: var(--wp--preset--color--primary);
}

.hub-hero h1 {
	text-wrap: balance;
}

/* ---------- Stat bar (240:2121) ---------- */

/* The List block has no wide alignment: give it the wide width. */
.hub-stat-bar > .hub-stat-list {
	max-width: var(--wp--style--global--wide-size);
}

.hub-stat-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--wp--preset--spacing--10) var(--wp--preset--spacing--30);
	margin: 0;
	padding: 0;
	list-style: none;
	line-height: var(--wp--custom--line-height--compact);
}

/* Decorative dot between facts. Empty alt text hides it from screen readers. */
@media (min-width: 48rem) {

	.hub-stat-list li + li::before {
		content: "•" / "";
		margin-inline-end: var(--wp--preset--spacing--30);
		color: var(--wp--custom--overlay--light-40);
	}
}

/* Narrow: two columns, no dots (a dot would start a line). Provisional. */
@media (max-width: 47.9375rem) {

	.hub-stat-list {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		text-align: center;
	}
}

/* ---------- Cards: three columns from 64rem, else one ---------- */

.hub-find-by-grade .is-layout-grid,
.hub-stories .wp-block-post-template {
	grid-template-columns: 1fr;
}

@media (min-width: 64rem) {

	.hub-find-by-grade .is-layout-grid,
	.hub-stories .wp-block-post-template {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* ---------- Photo mosaic (240:2416) ---------- */

.hub-mosaic {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-auto-rows: var(--wp--custom--height--mosaic-row);
	gap: var(--wp--preset--spacing--40);
}

.hub-mosaic > .wp-block-image {
	height: 100%;
	margin: 0;
}

.hub-mosaic > .wp-block-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hub-mosaic__item--1 {
	grid-column: 1 / span 2;
	grid-row: 1 / span 2;
}

.hub-mosaic__item--2 {
	grid-column: 3;
	grid-row: 1;
}

.hub-mosaic__item--3 {
	grid-column: 4;
	grid-row: 1;
}

.hub-mosaic__item--4 {
	grid-column: 3 / span 2;
	grid-row: 2;
}

.hub-mosaic__item--5 {
	grid-column: 1;
	grid-row: 3;
}

.hub-mosaic__item--6 {
	grid-column: 2;
	grid-row: 3;
}

/* Below 48rem: two columns, lead and wide photos span both. Provisional. */
@media (max-width: 47.9375rem) {

	.hub-mosaic {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.hub-mosaic > .wp-block-image {
		grid-column: auto;
		grid-row: auto;
	}

	.hub-mosaic > .hub-mosaic__item--1 {
		grid-column: 1 / -1;
		grid-row: span 2;
	}

	.hub-mosaic > .hub-mosaic__item--4 {
		grid-column: 1 / -1;
	}
}

/* ---------- Testimonial (247:1948) ---------- */

.hub-testimonial__quote {
	margin-inline: 0;
	margin-block-end: 0;
	padding: 0;
	border: 0;
}

.hub-testimonial__quote .hub-testimonial__photo {
	margin-inline: auto;
}

.hub-testimonial__quote cite {
	display: block;
	font-size: var(--wp--preset--font-size--small);
	font-style: normal;
	line-height: var(--wp--custom--line-height--compact);
}

.hub-testimonial__quote cite strong {
	font-size: var(--wp--preset--font-size--medium);
}

/* ---------- Stories (352:2148) ---------- */

/* Nothing to show until stories exist in the category (build decision T2.3). */
.hub-stories:not(:has(.wp-block-post)) {
	display: none;
}

.hub-stories .wp-block-post {
	display: flex;
}

.hub-story-card {
	width: 100%;
}

.hub-story-card .wp-block-post-terms a,
.hub-story-card .wp-block-post-title a {
	color: inherit;
	text-decoration: none;
}

.hub-story-card .wp-block-post-title a:hover,
.hub-story-card .wp-block-post-title a:focus-visible {
	text-decoration: underline;
}

.hub-story-card__byline p:empty {
	display: none;
}

.hub-story-card .wp-block-read-more {
	margin-top: auto;
}

/* Links on green sections: white focus ring (green is invisible on green). */
.hub-quote-stories a:focus-visible,
.hub-tour-band a:focus-visible,
.hub-cta a:focus-visible,
.hub-hero a:focus-visible {
	outline: var(--wp--custom--focus--width) solid var(--wp--preset--color--base);
	outline-offset: var(--wp--custom--focus--offset);
}

/* ---------- FAQ (247:2053) ---------- */

.hub-faq__list .wp-block-accordion-item {
	margin-block-end: var(--wp--preset--spacing--40);
	border:
		var(--wp--custom--border--hairline) solid
		var(--wp--preset--color--border-subtle);
	border-radius: var(--wp--custom--radius--md);
	background-color: var(--wp--preset--color--base);
	box-shadow: var(--wp--custom--shadow--sm);
}

/* ==========================================================================
   Program detail sections (patterns/program-*.php).
   Figma: 07 · Overnight Camp Program Detail 110:744.
   ========================================================================== */

.program-content > .alignfull {
	margin-block: 0;
}

/* Breadcrumbs: quiet links, current page in body ink. The padding keeps the
   tap target 24px tall on phones (WCAG 2.2, 2.5.8). */
.wp-block-breadcrumbs a {
	display: inline-block;
	padding-block: var(--wp--preset--spacing--10);
	color: inherit;
	text-decoration: none;
}

.wp-block-breadcrumbs a:hover,
.wp-block-breadcrumbs a:focus-visible {
	text-decoration: underline;
}

.wp-block-breadcrumbs [aria-current] {
	color: var(--wp--preset--color--contrast);
	font-weight: var(--wp--custom--font-weight--medium);
}

/* Cards with a photo on top: clip the photo to the card's corners. */
.program-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

.program-card > .wp-block-image {
	margin: 0;
}

.program-card > .wp-block-group:last-child {
	display: flex;
	flex-grow: 1;
	flex-direction: column;
}

/* The link sits at the bottom of the card, and keeps the gap above it. */
.program-card > .wp-block-group:last-child > :last-child {
	margin-top: auto;
	padding-top: var(--wp--preset--spacing--40);
}

/* Card rows: never a lone orphan. Three cards: one column below 64rem.
   Four cards: two columns below 64rem, one below 36rem. Provisional. */
@media (max-width: 63.9375rem) {

	.program-age-groups > .wp-block-group.is-layout-grid {
		grid-template-columns: 1fr;
	}

	.wp-block-group.program-specialties__grid,
	.program-related > .wp-block-group.is-layout-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 35.9375rem) {

	.wp-block-group.program-specialties__grid,
	.program-related > .wp-block-group.is-layout-grid {
		grid-template-columns: 1fr;
	}
}

/* One-column age cards between 36rem and 64rem: photo beside the text. */
@media (min-width: 36rem) and (max-width: 63.9375rem) {

	.program-age-groups .program-card {
		flex-direction: row;
	}

	.program-age-groups .program-card > .wp-block-image {
		flex: 0 0 40%;
	}

	.program-age-groups .program-card > .wp-block-image img {
		width: 100%;
		height: 100%;
	}
}

/* ---------- Specialties (110:887) ---------- */

.program-icon-badge {
	width: var(--wp--custom--size--icon-badge);
	height: var(--wp--custom--size--icon-badge);
	margin-inline: auto;
	border-radius: var(--wp--custom--radius--pill);
	background-color: var(--wp--preset--color--base);
	box-shadow: var(--wp--custom--shadow--sm);
}

.program-icon-badge > .wp-block-image,
.program-welcome__item > .wp-block-image {
	margin: 0;
}

/* ---------- Three prices (110:1056) ---------- */

@media (max-width: 29.9375rem) {

	.wp-block-group.program-tiers {
		grid-template-columns: 1fr;
	}
}

/*
 * Prices vary by camp, so staff put words in the large line ("True cost
 * of camp"), not a price. Set it smaller, and when the boxes sit in a
 * narrow column, stack them instead of squeezing them into three thin
 * columns. Per-session prices live in the session table's tier columns.
 */
.program-tier p.has-xx-large-font-size {
	font-size: var(--wp--preset--font-size--large) !important;
	line-height: var(--wp--custom--line-height--snug) !important;
}

.wp-block-column:has(> .program-tiers) {
	container-type: inline-size;
}

@container (max-width: 32.5rem) {

	.wp-block-group.program-tiers {
		grid-template-columns: 1fr !important;
	}

	.program-tiers .program-tier {
		padding: var(--wp--preset--spacing--40) !important;
	}
}

/* ---------- Welcome and safety (110:1091) ---------- */

.program-welcome__item {
	align-items: center;
}

@media (max-width: 63.9375rem) {

	.wp-block-group.program-welcome__list {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media (max-width: 47.9375rem) {

	.wp-block-group.program-welcome__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ---------- Photo gallery (110:1175) ---------- */

.program-gallery__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	align-items: start;
	gap: var(--wp--preset--spacing--40);
}

.program-gallery__grid > .program-gallery__column {
	margin-block: 0;
}

.program-gallery__column > .wp-block-image {
	margin-block: 0;
}

.program-gallery__column > .wp-block-image + .wp-block-image {
	margin-block-start: var(--wp--preset--spacing--40);
}

@media (max-width: 47.9375rem) {

	.program-gallery__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ---------- Video feature (110:1162) ---------- */

.program-video__cover {
	overflow: hidden;
}

/* ---------- Testimonial (110:1241) ---------- */

.program-testimonial__quote cite {
	color: var(--wp--preset--color--text-muted);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: var(--wp--custom--font-weight--semibold);
	letter-spacing: var(--wp--custom--letter-spacing--label);
	text-transform: uppercase;
}

.program-testimonial__quote cite strong {
	display: inline-block;
	margin-block-end: var(--wp--preset--spacing--10);
	color: var(--wp--preset--color--primary-dark);
	font-size: var(--wp--preset--font-size--large);
	letter-spacing: normal;
	text-transform: none;
}

/* ---------- Registration steps (110:1267) ---------- */

.program-steps {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--wp--preset--spacing--60);
	margin-inline: 0;
	padding: 0;
	list-style: none;
	counter-reset: program-step;
	text-align: center;
}

.program-steps li {
	counter-increment: program-step;
}

/* The list already announces the number, so the drawn one is hidden. */
.program-steps li::before {
	content: counter(program-step) / "";
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--wp--custom--size--step-marker);
	height: var(--wp--custom--size--step-marker);
	margin: 0 auto var(--wp--preset--spacing--40);
	border-radius: var(--wp--custom--radius--pill);
	background-color: var(--wp--preset--color--tertiary);
	color: var(--wp--preset--color--primary-dark);
	font-size: var(--wp--preset--font-size--large);
}

@media (max-width: 29.9375rem) {

	.program-steps {
		grid-template-columns: 1fr;
	}
}

.program-registration__card a:not(.wp-element-button) {
	color: var(--wp--preset--color--primary-dark);
}

/* Links on the dark sessions section: white focus ring. */
.program-sessions a:focus-visible {
	outline: var(--wp--custom--focus--width) solid var(--wp--preset--color--base);
	outline-offset: var(--wp--custom--focus--offset);
}

/* ==========================================================================
   Homepage sections (patterns/home-*.php). Figma: 01 · Homepage 1:3.
   ========================================================================== */

.home-content > .alignfull {
	margin-block: 0;
}

/* Quotes used as testimonials: no default quote indent or rule. */
.home-hero__quote-text,
.home-voice-feature__quote,
.home-voice-card__quote {
	margin: 0;
	padding: 0;
	border: 0;
}

.home-hero__quote-text p,
.home-voice-feature__quote p,
.home-voice-card__quote p {
	margin: 0;
}

.home-stars > .wp-block-image,
.home-card > .wp-block-image,
.home-giving-card > .wp-block-image,
.home-safety__item > .wp-block-image {
	margin: 0;
}

/* ---------- Hero (96:8902) ---------- */

.home-hero {
	background-color: var(--wp--preset--color--primary);
}

.home-hero h1 {
	text-shadow: var(--wp--custom--text-shadow--hero-heading);
	text-wrap: balance;
}

.home-hero h1 + p {
	text-shadow: var(--wp--custom--text-shadow--hero-body);
}

.home-hero .home-hero__quote {
	backdrop-filter: blur(var(--wp--custom--blur--glass));
}

.home-hero__quote > .wp-block-image {
	flex-shrink: 0;
	margin: 0;
}

.home-hero__quote-text cite {
	display: block;
	margin-block-start: var(--wp--preset--spacing--10);
	color: var(--wp--custom--overlay--light-70);
	font-size: var(--wp--preset--font-size--x-small);
	font-style: normal;
	font-weight: var(--wp--custom--font-weight--semibold);
}

.home-hero .home-hero__location {
	width: fit-content;
	margin-inline: auto;
	text-align: start;
}

.home-hero__location a {
	color: inherit;
	text-decoration: none;
}

.home-hero__location a:hover,
.home-hero__location a:focus-visible {
	text-decoration: underline;
}

.home-hero__pin {
	flex-shrink: 0;
	width: var(--wp--custom--size--pin);
	height: var(--wp--custom--size--pin);
	border-radius: var(--wp--custom--radius--pill);
	background-color: var(--wp--preset--color--tertiary-light);
}

.home-hero__pin > .wp-block-image {
	margin: 0;
}

/* Wide screens: the location card sits in the top-right corner. The content
   area fills the hero's height so the card can be placed against it. */
@media (min-width: 64rem) {

	.home-hero > .wp-block-cover__inner-container {
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-self: stretch;
	}

	.home-hero .home-hero__location {
		position: absolute;
		top: calc(var(--wp--preset--spacing--50) - var(--wp--preset--spacing--100));
		right: 0;
		max-width: none;
		margin: 0;
	}
}

/* ---------- Cards ---------- */

.home-card {
	overflow: hidden;
}

.home-card__link a,
.home-story-card .wp-block-post-title a {
	color: inherit;
	text-decoration: none;
}

.home-card__link a:hover,
.home-card__link a:focus-visible,
.home-story-card .wp-block-post-title a:hover,
.home-story-card .wp-block-post-title a:focus-visible {
	text-decoration: underline;
}

/* ---------- Safety and care (1:48) ---------- */

.wp-block-group.home-safety__list {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
}

.home-safety__list > .home-safety__item {
	flex: 1 1 var(--wp--custom--width--safety-item);
	align-items: center;
	max-width: var(--wp--custom--width--column);
}

/* ---------- Lime sections with the logo bands (1:205, 1:543) ---------- */

.has-section-bands {
	position: relative;
	isolation: isolate;
	overflow: hidden;
}

.has-section-bands > .section-bands {
	position: absolute;
	z-index: -1;
	inset: 0;
	max-width: none;
	margin: 0;
	background-position: center top;
	background-repeat: no-repeat;
	background-size: max(100%, var(--wp--custom--width--frame)) auto;
	pointer-events: none;
}

.home-retreats > .section-bands {
	background-image: url(../images/section-bands-retreats.webp);
}

.home-giving > .section-bands {
	background-image: url(../images/section-bands-giving.webp);
}

.home-tour__icon {
	width: var(--wp--custom--size--icon-badge);
	height: var(--wp--custom--size--icon-badge);
	margin-inline: auto;
	border-radius: var(--wp--custom--radius--pill);
	background-color: var(--wp--custom--overlay--light-10);
}

.home-tour__icon > .wp-block-image {
	margin: 0;
}

/* ---------- Outreach carousel (243:1748) ---------- */

.home-outreach__list {
	display: grid;
	gap: var(--wp--preset--spacing--30);
	padding-inline-start: 0;
	list-style: none;
}

.home-outreach__image-column .wp-block-image {
	margin: 0;
}

/* ---------- Stories (1:335) ---------- */

.home-stories:not(:has(.wp-block-post)) {
	display: none;
}

/* ---------- Voices (1:378) ---------- */

.home-voice-feature {
	position: relative;
	overflow: hidden;
}

.home-voice-feature::before {
	content: "“" / "";
	position: absolute;
	top: 0;
	left: var(--wp--preset--spacing--70);
	color: var(--wp--custom--overlay--light-10);
	font-family: var(--wp--preset--font-family--heading);
	font-size: calc(var(--wp--preset--font-size--display-xl) * 2.5);
	line-height: 1;
}

.home-voice-feature__photo {
	margin-inline: auto;
}

.home-voice-feature__photo img {
	border: var(--wp--custom--border--avatar) solid var(--wp--custom--overlay--light-20);
}

.home-voice-card__person > .wp-block-image {
	flex-shrink: 0;
	margin: 0;
}

.home-voice-card__tag {
	margin-inline-start: auto;
}

/* Nature School slides: brand green behind the scrim until a photo is set,
   as on the heroes, so the scrim does not fade into white. */
.home-feature {
	background-color: var(--wp--preset--color--primary);
}

/* Nature Preschool: the side scrim fades out to the right. Below 48rem the
   text spans the whole photo, so shade it evenly instead. */
@media (max-width: 47.9375rem) {

	.home-feature > .wp-block-cover__background.has-background-gradient {
		background: var(--wp--preset--gradient--scrim-page-hero) !important;
	}
}

/* Nature School carousel (243:1664): the outreach carousel with photo
   slides. From 64rem the buttons sit over the slide's bottom-right corner,
   level with the text's bottom edge; below that they would cover the text,
   so they sit under the photo, right-aligned. */
.home-nature-carousel .outreach-carousel__controls {
	padding-inline: var(--wp--style--root--padding-left) var(--wp--style--root--padding-right);
}

/* The outreach carousel floats its buttons from 48.875rem; not these. */
@media (max-width: 63.9375rem) {

	.home-nature-carousel.is-enhanced .outreach-carousel__controls {
		position: static;
		margin-block-start: var(--wp--preset--spacing--50);
	}
}

@media (min-width: 64rem) {

	.home-nature-carousel.is-enhanced .outreach-carousel__controls {
		--nature-gutter: max(var(--wp--style--root--padding-right, 0px), (100% - var(--wp--style--global--wide-size)) / 2);
		position: absolute;
		right: var(--nature-gutter);
		bottom: var(--wp--preset--spacing--100);
		margin: 0;
		padding: 0;
	}
}

/* ---------- Tablet and phone (provisional) ---------- */

/* The carousel is full width: keep its slides off the screen edges. */
.home-outreach {
	padding-inline: var(--wp--style--root--padding-left) var(--wp--style--root--padding-right);
}

/* One-column cards between 36rem and 64rem: photo beside the text. */
@media (min-width: 36rem) and (max-width: 63.9375rem) {

	.home-retreats .home-card {
		display: flex;
	}

	.home-retreats .home-card > .wp-block-image {
		flex: 0 0 40%;
	}

	.home-retreats .home-card > .wp-block-image img {
		height: 100%;
	}

	.home-story-card {
		display: grid;
		grid-template-columns: 40% 1fr;
		grid-auto-rows: min-content;
		column-gap: var(--wp--preset--spacing--60);
		row-gap: var(--wp--preset--spacing--30);
	}

	.home-story-card > * {
		grid-column: 2;
		margin: 0;
	}

	.home-story-card > .wp-block-post-featured-image {
		grid-column: 1;
		grid-row: 1 / span 4;
	}
}

@media (max-width: 63.9375rem) {

	.home-retreats > .wp-block-group.is-layout-grid,
	.home-voices > .wp-block-group.is-layout-grid,
	.home-stories .wp-block-post-template.is-layout-grid {
		grid-template-columns: 1fr;
	}
}

/* ==========================================================================
   Hub variants added with the Retreats & Conferences hub (Figma 109:108).
   ========================================================================== */

/* ---------- Boxed program cards (109:110) ---------- */

.hub-card--boxed {
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

.hub-card--boxed > .wp-block-image {
	margin: 0;
}

.hub-card--boxed > .wp-block-group {
	display: flex;
	flex-grow: 1;
	flex-direction: column;
}

.hub-card--boxed .hub-card__link {
	margin-top: auto;
}

/* ---------- Hero with text on the left (109:248) ---------- */

.hub-hero__note p {
	margin: 0;
}

/* ---------- Audience split (109:289) ---------- */

.hub-audience-split .wp-block-columns {
	margin-block: 0;
}

.hub-audience-split .wp-block-column > .hub-audience {
	height: 100%;
	margin: 0;
}

/* ---------- Group size cards (109:189) ---------- */

.hub-icon-badge {
	width: var(--wp--custom--size--icon-badge);
	height: var(--wp--custom--size--icon-badge);
	margin-inline: auto;
	border-radius: var(--wp--custom--radius--pill);
	background-color: var(--wp--preset--color--tertiary-light);
}

.hub-icon-badge > .wp-block-image {
	margin: 0;
}

/* ---------- Five-photo mosaic (109:322) ---------- */

.hub-mosaic.hub-mosaic--five {
	grid-auto-rows: var(--wp--custom--height--mosaic-row-tall);
}

.hub-mosaic--five > .hub-mosaic__item--1 {
	grid-column: 1 / span 2;
	grid-row: 1 / span 2;
}

.hub-mosaic--five > .hub-mosaic__item--2 {
	grid-column: 3;
	grid-row: 1;
}

.hub-mosaic--five > .hub-mosaic__item--3 {
	grid-column: 4;
	grid-row: 1;
}

.hub-mosaic--five > .hub-mosaic__item--4 {
	grid-column: 3;
	grid-row: 2;
}

.hub-mosaic--five > .hub-mosaic__item--5 {
	grid-column: 4;
	grid-row: 2;
}

@media (max-width: 47.9375rem) {

	.hub-mosaic--five > .wp-block-image {
		grid-column: auto;
		grid-row: auto;
	}

	.hub-mosaic--five > .hub-mosaic__item--1 {
		grid-column: 1 / -1;
		grid-row: span 2;
	}
}

/* Stat bar in capitals, lime separators (Nature School, 253:1735). */
@media (min-width: 48rem) {

	.hub-stat-list--caps li + li::before {
		color: var(--wp--preset--color--secondary);
	}
}

/* Five photos in three columns (Outreach hub, Figma 259:2682). */
.hub-mosaic.hub-mosaic--three-col {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: var(--wp--custom--height--mosaic-row-tall);
}

.hub-mosaic--three-col > .hub-mosaic__item--1 {
	grid-column: 1 / span 2;
	grid-row: 1 / span 2;
}

.hub-mosaic--three-col > .hub-mosaic__item--2 {
	grid-column: 3;
	grid-row: 1;
}

.hub-mosaic--three-col > .hub-mosaic__item--3 {
	grid-column: 3;
	grid-row: 2;
}

.hub-mosaic--three-col > .hub-mosaic__item--4 {
	grid-column: 1;
	grid-row: 3;
}

.hub-mosaic--three-col > .hub-mosaic__item--5 {
	grid-column: 2;
	grid-row: 3;
}

@media (max-width: 47.9375rem) {

	.hub-mosaic--three-col {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.hub-mosaic--three-col > .wp-block-image {
		grid-column: auto;
		grid-row: auto;
	}

	.hub-mosaic--three-col > .hub-mosaic__item--1 {
		grid-column: 1 / -1;
		grid-row: span 2;
	}
}

/* ==========================================================================
   Facility detail sections (patterns/facility-*.php).
   Figma: 08 · Williams Lodge Facility Detail 139:2054.
   ========================================================================== */

.facility-content > .alignfull {
	margin-block: 0;
}

/* ---------- Spec bar (139:2109) ---------- */

.facility-spec + .facility-spec {
	border-inline-start: var(--wp--custom--border--hairline) solid var(--wp--custom--overlay--dark-12);
}

.facility-spec p {
	margin: 0;
}

@media (max-width: 63.9375rem) {

	.wp-block-group.facility-specs {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.facility-spec:nth-child(3n + 1) {
		border-inline-start: 0;
	}
}

@media (max-width: 35.9375rem) {

	.wp-block-group.facility-specs {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.facility-spec:nth-child(3n + 1) {
		border-inline-start: var(--wp--custom--border--hairline) solid var(--wp--custom--overlay--dark-12);
	}

	.facility-spec:nth-child(odd) {
		border-inline-start: 0;
	}
}

/* ---------- Photos: one large, four squares (139:2144) ---------- */

.hub-mosaic.hub-mosaic--square {
	grid-template-columns: 2.05fr 1fr 1fr;
	grid-auto-rows: var(--wp--custom--height--mosaic-square);
}

.hub-mosaic--square > .hub-mosaic__item--1 {
	grid-column: 1;
	grid-row: 1 / span 2;
}

.hub-mosaic--square > .hub-mosaic__item--2 {
	grid-column: 2;
	grid-row: 1;
}

.hub-mosaic--square > .hub-mosaic__item--3 {
	grid-column: 3;
	grid-row: 1;
}

.hub-mosaic--square > .hub-mosaic__item--4 {
	grid-column: 2;
	grid-row: 2;
}

.hub-mosaic--square > .hub-mosaic__item--5 {
	grid-column: 3;
	grid-row: 2;
}

@media (max-width: 47.9375rem) {

	.hub-mosaic.hub-mosaic--square {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.hub-mosaic--square > .wp-block-image {
		grid-column: auto;
		grid-row: auto;
	}

	.hub-mosaic--square > .hub-mosaic__item--1 {
		grid-column: 1 / -1;
		grid-row: span 2;
	}
}

/* ---------- Rooms and amenities table (139:2173) ---------- */

.facility-table__table {
	max-width: var(--wp--custom--width--medium);
	margin-inline: auto;
}

.facility-table__table table {
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--tertiary-light);
	border-radius: var(--wp--custom--radius--lg);
	border-collapse: separate;
	border-spacing: 0;
	overflow: hidden;
}

.facility-table__table th,
.facility-table__table td {
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	border: 0;
}

.facility-table__table tr:nth-child(odd) {
	background-color: var(--wp--preset--color--surface-warm);
}

.facility-table__table tr + tr th,
.facility-table__table tr + tr td {
	border-top: var(--wp--custom--border--hairline) solid var(--wp--preset--color--tertiary-light);
}

.facility-table__table th {
	font-weight: var(--wp--custom--font-weight--semibold);
	text-align: start;
}

.facility-table__table td {
	text-align: end;
}

/* ---------- Comparison tables: Lodging, Meeting Rooms (D178) ---------- */

/* Same look as the spec table, with a header row. */
.facility-compare__table table {
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--tertiary-light);
	border-radius: var(--wp--custom--radius--lg);
	border-collapse: separate;
	border-spacing: 0;
}

.facility-compare__table th,
.facility-compare__table td {
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	border: 0;
	text-align: start;
	vertical-align: top;
}

.facility-compare__table thead th {
	background-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	font-weight: var(--wp--custom--font-weight--semibold);
}

.facility-compare__table thead th:first-child {
	border-start-start-radius: var(--wp--custom--radius--lg);
}

.facility-compare__table thead th:last-child {
	border-start-end-radius: var(--wp--custom--radius--lg);
}

.facility-compare__table tbody tr:nth-child(even) {
	background-color: var(--wp--preset--color--surface-warm);
}

.facility-compare__table tbody th {
	font-weight: var(--wp--custom--font-weight--semibold);
}

.facility-compare__table tbody tr + tr > * {
	border-top: var(--wp--custom--border--hairline) solid var(--wp--preset--color--tertiary-light);
}

/* Phones: each row is a card, the facility's name on top and each
   value after its column's name (data-label, added in functions.php).
   The header row stays for screen readers only. */
@media (max-width: 47.9375rem) {

	.facility-compare__table table,
	.facility-compare__table tbody,
	.facility-compare__table tr,
	.facility-compare__table tbody th,
	.facility-compare__table td {
		display: block;
	}

	.facility-compare__table table {
		border: 0;
	}

	.facility-compare__table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}

	.facility-compare__table tbody tr {
		margin-block-end: var(--wp--preset--spacing--40);
		border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--tertiary-light);
		border-radius: var(--wp--custom--radius--md);
		background-color: var(--wp--preset--color--base);
	}

	.facility-compare__table tbody tr:nth-child(even) {
		background-color: var(--wp--preset--color--base);
	}

	.facility-compare__table tbody tr + tr > * {
		border-top: 0;
	}

	.facility-compare__table tbody th {
		padding-block-end: var(--wp--preset--spacing--20);
		font-size: var(--wp--preset--font-size--large);
	}

	.facility-compare__table td {
		padding-block: var(--wp--preset--spacing--10);
	}

	.facility-compare__table td:last-child {
		padding-block-end: var(--wp--preset--spacing--40);
	}

	.facility-compare__table td[data-label]::before {
		content: attr(data-label) ": ";
		font-weight: var(--wp--custom--font-weight--semibold);
	}
}

/* ---------- Cards (139:2233, 139:2396) ---------- */

.facility-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

.facility-card > .wp-block-image,
.facility-card > .wp-block-post-featured-image {
	margin: 0;
}

.facility-card > .wp-block-group {
	display: flex;
	flex-grow: 1;
	flex-direction: column;
}

.facility-card .hub-card__link {
	margin-top: auto;
	padding-top: var(--wp--preset--spacing--30);
}

.facility-related:not(:has(.wp-block-post)) {
	display: none;
}

/* ---------- Included in your stay (139:2276) ---------- */

.facility-list {
	padding-inline-start: 0;
	list-style: none;
}

.facility-list li {
	position: relative;
	padding-inline-start: var(--wp--preset--spacing--60);
}

/* Decorative markers; empty alt text keeps them out of screen readers. */
.facility-list li::before {
	position: absolute;
	inset-inline-start: 0;
	color: var(--wp--preset--color--primary);
}

.facility-list--check li::before {
	content: "✓" / "";
}

.facility-list--dot li::before {
	content: "•" / "";
}

/* ---------- T5 Form: booking card and rail (139:1118) ---------- */

.form-card {
	box-shadow: var(--wp--custom--shadow--sm);
}

.form-rail {
	align-self: flex-start;
}

.form-rail__steps {
	display: grid;
	gap: var(--wp--preset--spacing--60);
	margin-inline: 0;
	margin-bottom: 0;
	padding: 0;
	list-style: none;
	counter-reset: form-rail-step;
}

.form-rail__steps li {
	counter-increment: form-rail-step;
	display: grid;
	grid-template-columns: var(--wp--custom--size--step-marker-small) 1fr;
	column-gap: var(--wp--preset--spacing--40);
	align-items: start;
}

/* The list already announces the number, so the drawn one is hidden. */
.form-rail__steps li::before {
	content: counter(form-rail-step) / "";
	display: grid;
	place-items: center;
	width: var(--wp--custom--size--step-marker-small);
	height: var(--wp--custom--size--step-marker-small);
	border: var(--wp--custom--border--hairline) solid var(--wp--custom--overlay--primary-20);
	border-radius: var(--wp--custom--radius--pill);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: var(--wp--custom--font-weight--semibold);
}

.form-rail__contact,
.form-rail__facts {
	padding-top: var(--wp--preset--spacing--80);
	border-top: var(--wp--custom--border--hairline) solid var(--wp--custom--overlay--primary-10);
}

.form-rail__fact > .wp-block-image {
	flex: 0 0 auto;
	display: flex;
	justify-content: center;
	width: var(--wp--preset--font-size--large);
	margin: 0;
}

.form-rail__fact p {
	margin: 0;
}

.form-rail a {
	color: var(--wp--preset--color--primary-dark);
}

/* ---------- T6 People: header, trust, links, band (111:1531) ---------- */

.directory-content > .alignfull {
	margin-block: 0;
}

.people-eyebrow {
	padding: var(--wp--preset--spacing--10) var(--wp--preset--spacing--30);
	background-color: var(--wp--custom--overlay--light-10);
	border-radius: var(--wp--custom--radius--xs);
}

.people-header__intro,
.people-cta__text {
	color: var(--wp--custom--overlay--light-95);
}

/* Trust band (111:1556). */
.people-trust__icon {
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	width: var(--wp--custom--size--pin);
	height: var(--wp--custom--size--pin);
	margin: 0;
	padding: var(--wp--preset--spacing--30);
	background-color: var(--wp--custom--overlay--light-10);
	border-radius: var(--wp--custom--radius--pill);
	box-sizing: content-box;
}

.people-trust__icon img {
	display: block;
}

.people-trust__item p {
	margin: 0;
}

.people-trust__text {
	color: var(--wp--custom--overlay--light-95);
}

.people-trust__facts {
	padding-top: var(--wp--preset--spacing--80);
	border-top: var(--wp--custom--border--hairline) solid var(--wp--custom--overlay--light-10);
}

.people-trust__fact p {
	margin: 0;
	color: var(--wp--custom--overlay--light-95);
}

.people-trust__fact .wp-block-image {
	margin: 0;
}

/* Related links row (111:1772): a chevron after each link. */
.people-links a {
	display: inline-flex;
	gap: var(--wp--preset--spacing--20);
	align-items: center;
	min-height: var(--wp--custom--size--pin);
	color: var(--wp--preset--color--primary);
	text-decoration: none;
}

.people-links a::after {
	content: "›" / "";
	font-size: var(--wp--preset--font-size--medium);
}

.people-links a:hover {
	text-decoration: underline;
}

/* Recruitment band (111:1891): outline buttons on the dark band. */
.people-cta .is-style-outline .wp-block-button__link:hover {
	background-color: var(--wp--custom--overlay--light-10);
}

/* ---------- T7 Stories: featured, cards, pages (113:1976) ---------- */

.stories-main > .alignfull {
	margin-block: 0;
}

.stories-main .story-filters,
.stories-main .story-featured,
.stories-main .story-grid {
	margin-block: 0;
}

.stories-main .story-featured {
	margin-bottom: var(--wp--preset--spacing--100);
}

.stories-main .story-grid {
	padding-bottom: var(--wp--preset--spacing--100);
}

/* Featured story: photo beside the text on wide screens (113:2048). */
.story-featured__card {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	overflow: hidden;
	box-shadow: var(--wp--custom--shadow--raised);
}

.story-featured__card > .story-featured__image {
	height: 100%;
	margin: 0;
}

.story-featured__card > .story-featured__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.story-featured__body {
	align-self: center;
}

.story-featured__label {
	margin: 0;
	padding: var(--wp--preset--spacing--10) var(--wp--preset--spacing--30);
	border-radius: var(--wp--custom--radius--xs);
}

@media (max-width: 48rem) {

	.story-featured__card {
		grid-template-columns: minmax(0, 1fr);
	}

	.story-featured__card > .story-featured__image {
		aspect-ratio: 3 / 2;
	}
}

/* Cards (113:2070). */
.story-card {
	display: flex;
	flex-direction: column;
	height: 100%;
}

.story-card > * {
	margin-block: 0;
}

.story-card .wp-block-post-title a,
.story-featured__card .wp-block-post-title a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.story-card .wp-block-post-title a:hover,
.story-featured__card .wp-block-post-title a:hover {
	text-decoration: underline;
}

/* Label links are small text; keep each one a 24px tap target (WCAG 2.5.8). */
.story-labels a {
	display: inline-flex;
	align-items: center;
	min-height: var(--wp--custom--size--step-marker-small);
	color: inherit;
	text-decoration: none;
}

.story-labels a:hover {
	text-decoration: underline;
}

.story-labels__type {
	padding: 0 var(--wp--preset--spacing--20);
	background-color: var(--wp--preset--color--surface-warm);
	border-radius: var(--wp--custom--radius--xs);
}

/* The byline sits at the foot of the card, lined up across the row. */
.story-card > .story-byline {
	margin-top: auto;
	padding-top: var(--wp--preset--spacing--50);
	border-top: var(--wp--custom--border--hairline) solid var(--wp--preset--color--border-subtle);
}

.story-featured__body > .story-byline {
	padding-top: var(--wp--preset--spacing--70);
	border-top: var(--wp--custom--border--hairline) solid var(--wp--preset--color--border-subtle);
}

.story-byline p {
	margin: 0;
}

.story-byline .wp-block-avatar {
	flex: 0 0 auto;
	margin: 0;
}

/* Numbered pages (113:2199). */
.story-grid .wp-block-query-pagination {
	gap: var(--wp--preset--spacing--20);
}

.story-grid .wp-block-query-pagination .page-numbers,
.story-grid .wp-block-query-pagination-previous,
.story-grid .wp-block-query-pagination-next {
	display: inline-grid;
	place-items: center;
	min-width: calc(var(--wp--custom--size--pin) + var(--wp--preset--spacing--20));
	min-height: calc(var(--wp--custom--size--pin) + var(--wp--preset--spacing--20));
	margin: 0;
	padding: 0 var(--wp--preset--spacing--30);
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	border: var(--wp--custom--border--hairline) solid var(--wp--preset--color--border-subtle);
	border-radius: var(--wp--custom--radius--xs);
}

.story-grid .wp-block-query-pagination .page-numbers.current {
	font-weight: var(--wp--custom--font-weight--semibold);
	color: var(--wp--preset--color--primary);
	background-color: var(--wp--preset--color--surface-warm);
}

.story-grid .wp-block-query-pagination .page-numbers.dots {
	border-color: transparent;
}

.story-grid .wp-block-query-pagination a:hover {
	border-color: var(--wp--preset--color--primary);
}

/* ---------- T8 Story single (139:1403) ---------- */

.story-main > .alignfull,
.story-main > .story-cta {
	margin-block: 0;
}

.story-topic a {
	display: inline-flex;
	align-items: center;
	min-height: var(--wp--custom--size--step-marker-small);
	padding: 0 var(--wp--preset--spacing--30);
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	background-color: var(--wp--preset--color--tertiary-light);
	border-radius: var(--wp--custom--radius--xs);
}

.story-byline--single p {
	margin: 0;
}

.story-hero-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.story-hero-image figcaption,
.story-content .wp-block-image figcaption {
	margin-top: var(--wp--preset--spacing--40);
	font-style: italic;
	text-align: center;
}

/* Body text (139:1482). */
.story-content {
	font-size: var(--wp--preset--font-size--medium);
	line-height: var(--wp--custom--line-height--relaxed);
	color: var(--wp--preset--color--contrast);
}

.story-content > * {
	margin-block: 0;
}

.story-content > * + * {
	margin-block-start: var(--wp--preset--spacing--70);
}

.story-content h2 {
	margin-block-start: var(--wp--preset--spacing--80);
	font-size: var(--wp--preset--font-size--xx-large);
	line-height: var(--wp--custom--line-height--heading);
}

.story-content ul,
.story-content ol {
	display: grid;
	gap: var(--wp--preset--spacing--30);
	padding-inline-start: var(--wp--preset--spacing--60);
}

.story-content .wp-block-image img {
	border-radius: var(--wp--custom--radius--lg);
}

/* Key takeaway: a plain quote (139:1462). */
.story-content .wp-block-quote {
	margin-inline: 0;
	padding: var(--wp--preset--spacing--70);
	font-size: var(--wp--preset--font-size--large);
	font-style: italic;
	font-weight: var(--wp--custom--font-weight--medium);
	background-color: var(--wp--preset--color--tertiary-light);
	border-left: calc(var(--wp--custom--border--avatar) * 2) solid var(--wp--preset--color--primary);
}

.story-content .wp-block-quote p {
	margin: 0;
}

/* Pull quote (139:1491): large italic heading type with a quote mark above. */
.story-content .wp-block-pullquote {
	margin-block: var(--wp--preset--spacing--100);
	padding: 0;
	text-align: center;
	border: 0;
}

.story-content .wp-block-pullquote blockquote {
	margin: 0;
}

.story-content .wp-block-pullquote blockquote::before {
	content: "";
	display: block;
	width: var(--wp--custom--size--pin);
	height: var(--wp--custom--size--pin);
	margin: 0 auto var(--wp--preset--spacing--40);
	background: url(../icons/quote-mark.svg) center / contain no-repeat;
}

.story-content .wp-block-pullquote p {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--display-sm);
	font-style: italic;
	font-weight: var(--wp--custom--font-weight--extrabold);
	line-height: var(--wp--custom--line-height--snug);
}

.story-content .wp-block-pullquote cite {
	font-size: var(--wp--preset--font-size--small);
	font-style: normal;
	color: var(--wp--preset--color--text-muted);
}

.story-cta__text {
	color: var(--wp--custom--overlay--light-95);
}

/* Related stories (139:1549). */
.story-related__card > * {
	margin-block: 0;
}

.story-related__card .wp-block-post-title a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.story-related__card .wp-block-post-title a:hover {
	text-decoration: underline;
}

/* ---------- T9 Events: plugin single event page (no frame) ---------- */

/* The Events Calendar styles its pages from these variables;
   point them at the theme. */
body.single-tribe_events {
	--tec-font-family-sans-serif: var(--wp--preset--font-family--body);
	--tec-font-family-base: var(--wp--preset--font-family--body);
	--tec-color-accent-primary: var(--wp--preset--color--primary);
	--tec-color-accent-primary-hover: var(--wp--preset--color--primary-dark);
	--tec-color-accent-primary-active: var(--wp--preset--color--primary-dark);
	--tec-color-accent-primary-background: var(--wp--preset--color--tertiary-light);
	--tec-color-link-accent: var(--wp--preset--color--primary);
	--tec-color-link-accent-hover: var(--wp--preset--color--primary-dark);
	--tec-color-link-primary: var(--wp--preset--color--primary);
	--tec-color-accent-secondary: var(--wp--preset--color--primary);
	--tec-color-accent-secondary-hover: var(--wp--preset--color--primary-dark);
	--tec-color-icon-active: var(--wp--preset--color--primary);
}

body.single-tribe_events .tribe-events-single-event-title {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: var(--wp--custom--font-weight--extrabold);
}

/* ---------- Hub upcoming events (254:1901) ---------- */

.hub-events {
	border-top: var(--wp--custom--border--hairline) solid var(--wp--preset--color--border-subtle);
}

.hub-events__header > * {
	margin: 0;
}

.hub-events__all a {
	display: inline-flex;
	gap: var(--wp--preset--spacing--20);
	align-items: center;
	min-height: var(--wp--custom--size--pin);
	color: var(--wp--preset--color--primary);
	text-decoration: none;
}

.hub-events__all a::after {
	content: "";
	width: var(--wp--preset--font-size--x-small);
	height: var(--wp--preset--font-size--x-small);
	background: url(../icons/calendar-small.svg) center / contain no-repeat;
}

.hub-events__all a:hover {
	text-decoration: underline;
}

/* ---------- Links on dark color boxes ---------- */

/*
 * Text links inside a box with white text on a colored background (for
 * example the hub CTA on Parent Resources) inherit the white text and stay
 * underlined, instead of the global green link color, which is unreadable
 * on primary green. :where() keeps this below component link styles, so
 * buttons and the session table's Register links keep their own look.
 */
main :where(.has-base-color.has-background) a:where(:not(.wp-element-button):not(.wp-block-button__link)) {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

main :where(.has-base-color.has-background) a:where(:not(.wp-element-button):not(.wp-block-button__link)):hover,
main :where(.has-base-color.has-background) a:where(:not(.wp-element-button):not(.wp-block-button__link)):focus-visible {
	color: var(--wp--preset--color--secondary);
}
