/* ==========================================================================
   THECOMPANYS block theme: components, sliders, motion and form styles.
   Every colour, size and space comes from theme.json (CSS custom properties).
   Contents: 1 tokens  2 base  3 text styles  4 buttons  5 header and menu
   6 footer  7 sections  8 cards, lists, FAQ, notes  9 sliders and rail
   10 motion  11 Contact Form 7  12 editor
   ========================================================================== */

/* Metric-matched local fallbacks (listed second in the theme.json stacks), so the swap to the
   self-hosted woff2 files barely moves the text. Overrides measured from the shipped files
   (DM Sans: ascent 992, descent 310, average width 0.478 em; Cormorant Garamond: ascent 924,
   descent 287, average width 0.393 em; per 1000 units) against Arial and Times New Roman. */
@font-face {
	font-family: "DM Sans Fallback";
	src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("Arimo");
	size-adjust: 107%;
	ascent-override: 92.7%;
	descent-override: 29%;
	line-gap-override: 0%;
}
@font-face {
	font-family: "Cormorant Garamond Fallback";
	src: local("Times New Roman"), local("TimesNewRomanPSMT"), local("Liberation Serif"), local("Tinos");
	size-adjust: 97%;
	ascent-override: 95.2%;
	descent-override: 29.6%;
	line-gap-override: 0%;
}

/* 1. Short aliases for theme.json tokens ---------------------------------- */
:root {
	--tc-charcoal: var(--wp--preset--color--charcoal);
	--tc-charcoal-soft: var(--wp--preset--color--charcoal-soft);
	--tc-ink-mid: var(--wp--preset--color--ink-mid);
	--tc-ink-muted: var(--wp--preset--color--ink-muted);
	--tc-ink-faint: var(--wp--preset--color--ink-faint);
	--tc-cream: var(--wp--preset--color--cream);
	--tc-cream-deep: var(--wp--preset--color--cream-deep);
	--tc-stone: var(--wp--preset--color--stone);
	--tc-line: var(--wp--preset--color--line);
	--tc-cream-muted: var(--wp--preset--color--cream-muted);
	--tc-brass: var(--wp--preset--color--brass);
	--tc-brass-light: var(--wp--preset--color--brass-light);
	--tc-white: var(--wp--preset--color--white);
	--tc-alert: var(--wp--preset--color--alert);
	--tc-gutter: var(--wp--custom--gutter);
	--tc-ease: var(--wp--custom--motion--ease);
	--tc-fast: var(--wp--custom--motion--fast);
	--tc-base: var(--wp--custom--motion--base);
	--tc-touch: var(--wp--custom--touch);
	--tc-radius: var(--wp--custom--radius--sm);
	--tc-radius-md: var(--wp--custom--radius--md);
	--tc-shadow: var(--wp--preset--shadow--soft);
	--tc-shadow-lift: var(--wp--preset--shadow--lift);
	--tc-header-h: var(--wp--custom--header--height);
	--tc-focus: var(--tc-charcoal);
	--tc-muted: var(--tc-ink-muted);
	--tc-rule: var(--tc-brass);
}

/* Charcoal sections swap the contextual colours. */
:is(.has-charcoal-background-color, .tc-hero__panel) {
	--tc-focus: var(--tc-cream);
	--tc-muted: var(--tc-cream-muted);
	--tc-rule: var(--tc-brass-light);
}

/* 2. Base ------------------------------------------------------------------ */
html {
	scroll-padding-top: calc(var(--tc-header-h) + 1.5rem);
	/* Keep focused and scrolled-to elements clear of the fixed bottom layers: the consent plugin's
	   "Privacy choices" button (bottom 12 px) and its status toast (bottom 64 px) on every width,
	   plus the mobile CTA bar below 600 px (WCAG 2.4.11). */
	scroll-padding-bottom: calc(5rem + env(safe-area-inset-bottom));
	-webkit-text-size-adjust: 100%;
}
@media (max-width: 599px) {
	html { scroll-padding-bottom: calc(8rem + env(safe-area-inset-bottom)); }
}
@media (prefers-reduced-motion: no-preference) {
	html { scroll-behavior: smooth; }
}
body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}
::selection { background: var(--tc-brass); color: var(--tc-white); }

/* Header, main and footer sit flush. */
.wp-site-blocks > .tc-main,
.wp-site-blocks > .tc-site-footer { margin-block-start: 0; }
.tc-main { overflow-x: clip; }
.tc-content > .alignfull,
.tc-main > .alignfull { margin-block: 0; }

h1, h2, h3, h4 { text-wrap: balance; }
/* Linked headings: a taller tap area without moving the text. */
.wp-block-heading > a { display: inline-block; padding-block: 0.4em; margin-block: -0.4em; }
:where(h1, h2, h3, h4, summary, .tc-step__num, .tc-card__index) { font-variant-numeric: lining-nums; }
p, li, figcaption { text-wrap: pretty; }
img { height: auto; }

a { text-decoration-thickness: 1px; text-underline-offset: 0.22em; transition: color var(--tc-fast) ease, text-decoration-color var(--tc-fast) ease; }
a:hover { text-decoration-thickness: 2px; }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: var(--wp--custom--focus--width) solid var(--tc-focus);
	outline-offset: var(--wp--custom--focus--offset);
	border-radius: var(--tc-radius);
}

/* Links and headings on charcoal */
:is(.has-charcoal-background-color, .tc-hero__panel) a:where(:not(.wp-element-button)) { color: var(--tc-cream); }
:is(.has-charcoal-background-color, .tc-hero__panel) a:where(:not(.wp-element-button)):hover,
:is(.has-charcoal-background-color, .tc-hero__panel) a:where(:not(.wp-element-button)):focus { color: var(--tc-cream-muted); }

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

/* 3. Text styles ----------------------------------------------------------- */
.is-style-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 600;
	letter-spacing: 0.16em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--tc-brass);
}
.is-style-eyebrow::before {
	content: "";
	flex: 0 0 1.75rem;
	height: 1px;
	background: currentColor;
}
.is-style-eyebrow.has-text-align-center { justify-content: center; }
.is-style-eyebrow a {
	display: inline-flex;
	align-items: center;
	min-height: var(--tc-touch);
	color: inherit;
	text-decoration: underline;
	text-decoration-color: color-mix(in srgb, currentColor 45%, transparent);
	text-underline-offset: 0.3em;
}
.is-style-eyebrow a:is(:hover, :focus-visible) { text-decoration-color: currentColor; text-decoration-thickness: 2px; }
:is(.has-charcoal-background-color, .tc-hero__panel) .is-style-eyebrow { color: var(--tc-cream-muted); }

:where(.is-layout-flow, .is-layout-constrained) > .is-style-eyebrow + :is(h1, h2, h3, .wp-block-heading) { margin-block-start: 0.85rem; }
/* Eyebrow carried inside the H1 (P3): looks the same as the eyebrow paragraph, so the page's key term is part of the heading. */
h1 > .tc-h1-kicker {
	font-family: var(--wp--preset--font-family--body);
	font-style: normal;
	margin-block-end: 0.85rem;
}
h1:has(> .tc-h1-kicker) { margin-block-start: 0; }
.tc-hero-split h1:has(> .tc-h1-kicker) { margin-block-start: 0; }

.is-style-lead {
	font-size: var(--wp--preset--font-size--lg);
	line-height: 1.55;
	color: var(--tc-ink-mid);
	max-width: 40em;
}
:is(.has-charcoal-background-color, .tc-hero__panel) .is-style-lead { color: var(--tc-cream-muted); }

.is-style-note {
	font-size: var(--wp--preset--font-size--sm);
	line-height: 1.5;
	color: var(--tc-muted);
	letter-spacing: 0.01em;
}

:where(.is-layout-flow, .is-layout-constrained) > .wp-block-buttons { margin-block-start: 2rem; }
:where(.is-layout-flow, .is-layout-constrained) > .wp-block-buttons + .is-style-note { margin-block-start: 1rem; }
:where(.is-layout-flow, .is-layout-constrained) > h1 + .is-style-lead { margin-block-start: 1.5rem; }

:is(.has-charcoal-background-color, .tc-hero__panel) p:not(.is-style-eyebrow, .is-style-note, .has-text-color) { color: var(--tc-cream-muted); }
:is(.has-charcoal-background-color, .tc-hero__panel) :is(h1, h2, h3, h4) { color: var(--tc-cream); }

.wp-element-caption,
figcaption {
	margin-top: 0.75rem;
	font-size: var(--wp--preset--font-size--xs);
	line-height: 1.5;
	color: var(--tc-muted);
}
:is(.has-charcoal-background-color, .tc-hero__panel) figcaption { color: var(--tc-cream-muted); }

.wp-block-separator.is-style-short-rule {
	width: 3.5rem;
	max-width: 3.5rem;
	margin-left: 0;
	border: 0;
	border-top: 2px solid var(--tc-rule);
	opacity: 1;
}
.wp-block-separator.is-style-short-rule.aligncenter,
.has-text-align-center + .wp-block-separator.is-style-short-rule { margin-inline: auto; }

/* 4. Buttons --------------------------------------------------------------- */
.wp-element-button,
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-height: 48px;
	text-align: center;
	transition: background-color var(--tc-fast) ease, color var(--tc-fast) ease, border-color var(--tc-fast) ease;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:focus-visible {
	background: var(--tc-charcoal);
	border-color: var(--tc-charcoal);
	color: var(--tc-cream);
}

/* Buttons on charcoal: cream fill, cream outline. */
:is(.has-charcoal-background-color, .tc-hero__panel) .wp-block-button:not(.is-style-outline, .is-style-arrow-link) > .wp-block-button__link:not(.has-background):is(:hover, :focus-visible) {
	background: var(--tc-cream);
	border-color: var(--tc-cream);
	color: var(--tc-charcoal);
}
:is(.has-charcoal-background-color, .tc-hero__panel) .wp-block-button.is-style-outline > .wp-block-button__link {
	border-color: var(--tc-cream);
	color: var(--tc-cream);
}
:is(.has-charcoal-background-color, .tc-hero__panel) .wp-block-button.is-style-outline > .wp-block-button__link:is(:hover, :focus-visible) {
	background: var(--tc-cream);
	color: var(--tc-charcoal);
}

/* Text link with arrow */
.is-content-justification-center > .wp-block-button.is-style-arrow-link > .wp-block-button__link {
	text-align: center;
}
.wp-block-button.is-style-arrow-link > .wp-block-button__link {
	display: inline-block;
	justify-content: flex-start;
	min-height: var(--tc-touch);
	padding: 0.7rem 0;
	text-align: left;
	line-height: 1.45;
	background: transparent;
	border: 0;
	border-radius: 0;
	color: var(--tc-charcoal);
	font-size: var(--wp--preset--font-size--sm);
	text-decoration: underline;
	text-decoration-color: var(--tc-brass);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.35em;
}
.wp-block-button.is-style-arrow-link > .wp-block-button__link::after {
	/* No-break space keeps the arrow on the same line as the last word. */
	content: "\00a0\2192";
	content: "\00a0\2192" / "";
	display: inline;
	margin-left: 0.15em;
	transition: transform var(--tc-base) var(--tc-ease);
}
.wp-block-button.is-style-arrow-link > .wp-block-button__link:is(:hover, :focus-visible) {
	color: var(--tc-brass);
	background: transparent;
	text-decoration-thickness: 2px;
}
.wp-block-button.is-style-arrow-link > .wp-block-button__link:hover::after { transform: translateX(4px); }
:is(.has-charcoal-background-color, .tc-hero__panel) .wp-block-button.is-style-arrow-link > .wp-block-button__link { color: var(--tc-cream); text-decoration-color: var(--tc-brass-light); }
/* Room between side-by-side text links */
.wp-block-buttons:has(> .is-style-arrow-link) { column-gap: 2rem; }
:is(.has-charcoal-background-color, .tc-hero__panel) .wp-block-button.is-style-arrow-link > .wp-block-button__link:hover { color: var(--tc-cream-muted); }

/* 5. Header and mobile menu ------------------------------------------------ */
.tc-site-header {
	position: sticky;
	top: 0;
	z-index: 100;
}
.admin-bar .tc-site-header { top: var(--wp-admin--admin-bar--height, 0px); }

.tc-header {
	background: color-mix(in srgb, var(--tc-cream) 95%, transparent);
	border-bottom: 1px solid transparent;
	transition: border-color var(--tc-base) ease, box-shadow var(--tc-base) ease, background-color var(--tc-base) ease;
}
@supports (backdrop-filter: blur(8px)) {
	.tc-header { backdrop-filter: saturate(1.1) blur(10px); }
}
/* A backdrop filter would trap the fixed menu drawer inside the header box. */
.tc-header.is-menu-open { backdrop-filter: none; background: var(--tc-cream); }
.tc-scrolled .tc-header {
	border-bottom-color: var(--tc-line);
	box-shadow: var(--tc-shadow);
}

.tc-header__bar {
	min-height: var(--tc-header-h);
	gap: clamp(1rem, 2.4vw, 2.25rem);
	transition: min-height var(--tc-base) var(--tc-ease);
}
.tc-scrolled .tc-header__bar { min-height: var(--wp--custom--header--height-compact); }

.tc-logo { margin: 0; flex: 0 0 auto; }
.tc-logo a { display: inline-flex; align-items: center; min-height: var(--tc-touch); }
.tc-logo img {
	display: block;
	width: clamp(168px, 15vw, var(--wp--custom--header--logo-width));
	height: auto;
	border-radius: 0;
}

/* Navigation (desktop) */
.tc-header__bar > .tc-nav { margin-left: auto; }
.tc-nav .wp-block-navigation__container { gap: clamp(1rem, 1.5vw, 1.75rem); }
.tc-nav .wp-block-navigation-item__content {
	position: relative;
	display: inline-flex;
	align-items: center;
	min-height: var(--tc-touch);
	padding: 0.25rem 0;
	color: var(--tc-charcoal);
	text-decoration: none;
	white-space: nowrap;
}
.tc-nav .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0.45rem;
	height: 2px;
	background: var(--tc-brass);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform var(--tc-base) var(--tc-ease);
}
.tc-nav .wp-block-navigation-item__content:hover::after,
.tc-nav .current-menu-item > .wp-block-navigation-item__content::after,
.tc-nav .current-menu-ancestor > .wp-block-navigation-item__content::after { transform: scaleX(1); }
.tc-nav .current-menu-item > .wp-block-navigation-item__content { font-weight: 600; }

/* Services dropdown (core submenu: hover, focus, toggle button with aria-expanded, Esc) */
.tc-nav .wp-block-navigation-submenu { gap: 0.15rem; margin-inline-end: 0; }
.tc-nav .has-child > .wp-block-navigation-item__content { padding-right: 0; }
.tc-nav > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content { min-width: var(--tc-touch); justify-content: center; }
.tc-nav .wp-block-navigation-submenu__toggle {
	display: inline-grid;
	place-items: center;
	width: var(--tc-touch);
	min-height: var(--tc-touch);
	margin: 0;
	margin-inline: -8px;
	padding: 0;
	color: var(--tc-charcoal);
	cursor: pointer;
}
.tc-nav .wp-block-navigation-submenu__toggle svg { width: 10px; height: 10px; transition: transform var(--tc-base) var(--tc-ease); }
.tc-nav .wp-block-navigation-submenu__toggle[aria-expanded="true"] svg,
.tc-nav .has-child:hover > .wp-block-navigation-submenu__toggle svg { transform: rotate(180deg); }
.tc-nav.wp-block-navigation .has-child .wp-block-navigation__submenu-container {
	top: calc(100% - 0.25rem);
	left: -1.25rem;
	min-width: 15rem;
	padding: 0.5rem 0;
	background: var(--tc-cream);
	border: 1px solid var(--tc-line);
	border-top: 2px solid var(--tc-brass);
	border-radius: 0 0 var(--tc-radius) var(--tc-radius);
	box-shadow: var(--tc-shadow);
	color: var(--tc-charcoal);
}
.tc-nav.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	display: flex;
	width: 100%;
	padding: 0.35rem 1.25rem;
	white-space: nowrap;
}
.tc-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content::after { display: none; }
.tc-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.tc-nav .wp-block-navigation__submenu-container .current-menu-item > .wp-block-navigation-item__content { color: var(--tc-brass); background: var(--tc-cream-deep); }

.tc-header__cta { flex: 0 0 auto; margin: 0; }
.tc-header__cta .wp-block-button__link {
	min-height: var(--tc-touch);
	padding: 0.7rem 1.2rem;
	white-space: nowrap;
}

/* Menu button: only shown on narrow screens once theme.js is running. */
.tc-menu-toggle {
	display: none;
	align-items: center;
	gap: 0.6rem;
	min-height: var(--tc-touch);
	min-width: var(--tc-touch);
	padding: 0 0.9rem;
	border: 1px solid var(--tc-line);
	border-radius: var(--tc-radius);
	background: var(--tc-white);
	color: var(--tc-charcoal);
	font: 600 var(--wp--preset--font-size--sm) / 1 var(--wp--preset--font-family--body);
	cursor: pointer;
}
.tc-menu-toggle:hover { border-color: var(--tc-charcoal); }
.tc-menu-toggle__icon { position: relative; display: grid; gap: 4px; width: 18px; }
.tc-menu-toggle__icon span {
	display: block;
	height: 1.5px;
	background: currentColor;
	transition: transform var(--tc-base) var(--tc-ease), opacity var(--tc-fast) ease;
}
.tc-menu-toggle[aria-expanded="true"] .tc-menu-toggle__icon span:nth-child(1) { transform: translateY(5.5px) rotate(45deg); }
.tc-menu-toggle[aria-expanded="true"] .tc-menu-toggle__icon span:nth-child(2) { opacity: 0; }
.tc-menu-toggle[aria-expanded="true"] .tc-menu-toggle__icon span:nth-child(3) { transform: translateY(-5.5px) rotate(-45deg); }

@media (max-width: 1179px) {
	/* Without JavaScript the links wrap onto a scrollable row under the logo. */
	.tc-header__bar { flex-wrap: wrap !important; padding-block: 0.5rem; }
	.tc-header__bar > .tc-nav { order: 3; width: 100%; margin-left: 0; overflow-x: auto; }
	.tc-nav .wp-block-navigation__container { flex-wrap: nowrap; }
	.tc-header__bar > .tc-header__cta { margin-left: auto; }

	/* With JavaScript: compact bar, links in a drawer. */
	.tc-js .tc-header__bar { flex-wrap: nowrap !important; padding-block: 0; }
	.tc-js .tc-menu-toggle { display: inline-flex; order: 2; }
	.tc-js .tc-header__cta { order: 1; }
	.tc-js .tc-header__bar > .tc-nav { display: none; }

	.tc-js .tc-header.is-menu-open .tc-header__bar > .tc-nav {
		display: block;
		position: fixed;
		inset: var(--tc-header-bottom, var(--tc-header-h)) 0 0 0;
		z-index: 99;
		width: auto;
		padding: 0.5rem var(--tc-gutter) 8rem;
		overflow-y: auto;
		background: var(--tc-cream);
		border-top: 1px solid var(--tc-line);
	}
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation__container {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		max-width: 40rem;
		margin-inline: auto;
	}
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation-item { border-bottom: 1px solid var(--tc-line); }
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation-item__content {
		display: flex;
		width: 100%;
		min-height: 3.5rem;
		padding: 0.5rem 0;
		font-family: var(--wp--preset--font-family--display);
		font-size: var(--wp--preset--font-size--xl);
		font-weight: 500;
	}
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation-item__content::after { display: none; }
	/* Submenus become a nested list: in the drawer, and in the no-JavaScript row. */
	.tc-nav.wp-block-navigation .has-child .wp-block-navigation__submenu-container {
		position: static;
		visibility: visible;
		opacity: 1;
		width: auto;
		height: auto;
		min-width: 0;
		overflow: visible;
		padding: 0;
		background: none;
		border: 0;
		box-shadow: none;
	}
	.tc-nav .wp-block-navigation-submenu__toggle { display: none; }
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation-submenu { flex-wrap: wrap; }
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation__submenu-container { width: 100%; padding: 0 0 0.5rem 1.25rem; border-left: 2px solid var(--tc-brass); margin-bottom: 0.75rem; }
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation__submenu-container .wp-block-navigation-item { border-bottom: 0; }
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content { min-height: var(--tc-touch); font-size: var(--wp--preset--font-size--lg); background: none; padding: 0.25rem 0; line-height: 1.3; }
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation__submenu-container { gap: 0; }
	.tc-js .tc-header.is-menu-open .tc-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content { justify-content: flex-start; }
	.tc-nav .wp-block-navigation-submenu { display: flex; gap: 1rem; }
	.tc-js .tc-header.is-menu-open .tc-nav .current-menu-item > .wp-block-navigation-item__content { color: var(--tc-brass); }
	.tc-menu-open { overflow: hidden; }
}
@media (max-width: 599px) {
	/* The bar has no room for the logo, the button and the menu toggle at 360 to 390 px, so the
	   button moves to a bar fixed at the bottom of the screen once the first section has scrolled
	   away (theme.js adds html.tc-cta-bar). The menu toggle keeps its accessible name. */
	.tc-js .tc-header__bar > .tc-header__cta { display: none; }
	.tc-js.tc-cta-bar .tc-header { backdrop-filter: none; background: var(--tc-cream); }
	.tc-js.tc-cta-bar:not(.tc-menu-open) .tc-header__bar > .tc-header__cta {
		display: block;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 101;
		margin: 0;
		padding: 0.5rem var(--tc-gutter) max(0.5rem, env(safe-area-inset-bottom));
		background: var(--tc-cream);
		border-top: 1px solid var(--tc-line);
		box-shadow: var(--tc-shadow);
	}
	.tc-js.tc-cta-bar:not(.tc-menu-open) .tc-header__cta .wp-block-button,
	.tc-js.tc-cta-bar:not(.tc-menu-open) .tc-header__cta .wp-block-button__link { width: 100%; min-height: 52px; }
	/* Below 600 px the consent plugin lifts "Privacy choices" to bottom: 76px (above the CTA bar), so the
	   last footer links need about 8.5rem of room at the end of every page, with or without the bar. */
	.tc-footer .tc-footer__body { padding-bottom: calc(var(--wp--preset--spacing--40) + 8.5rem + env(safe-area-inset-bottom)); }
	.tc-js .tc-header.is-menu-open .tc-header__bar > .tc-header__cta {
		display: block;
		position: fixed;
		left: var(--tc-gutter);
		right: var(--tc-gutter);
		bottom: max(1.25rem, env(safe-area-inset-bottom));
		z-index: 101;
	}
	.tc-js .tc-header.is-menu-open .tc-header__cta .wp-block-button,
	.tc-js .tc-header.is-menu-open .tc-header__cta .wp-block-button__link { width: 100%; min-height: 52px; }
	.tc-menu-toggle__label {
		position: absolute;
		width: 1px;
		height: 1px;
		padding: 0;
		margin: -1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		white-space: nowrap;
		border: 0;
	}
	.tc-menu-toggle { padding: 0; justify-content: center; }
}

/* 6. Footer ------------------------------------------------------------------ */
.tc-footer { margin: 0; }
.tc-footer > * { margin-block: 0; }
/* Pages that show their own accreditations section (class tc-accreditations) skip the footer strip. */
body:has(.tc-main .tc-accreditations) .tc-footer__accreditations { display: none; }
body:has(.tc-main .tc-accreditations) .tc-footer__body {
	border-top: 1px solid color-mix(in srgb, var(--tc-cream) 16%, transparent);
	padding-top: var(--wp--preset--spacing--50);
}
.tc-footer__accreditations { padding-block: var(--wp--preset--spacing--50); border-top: 1px solid var(--tc-line); }

.tc-acc-strip { display: grid; gap: 1.25rem; }
.tc-acc-strip > * { margin: 0 !important; }
@media (min-width: 1024px) {
	.tc-acc-strip { grid-template-columns: 11rem 1fr; align-items: center; gap: 2rem; }
}
.wp-block-group.tc-acc-list {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
	gap: 0.75rem !important;
}
.tc-acc-list > .tc-acc {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.35rem;
	min-height: 6rem;
	margin: 0;
	padding: 0.75rem;
	background: var(--tc-white);
	border: 1px solid var(--tc-line);
	border-radius: var(--tc-radius);
}
.tc-acc-list > .tc-acc a { display: inline-flex; align-items: center; min-height: var(--tc-touch); }
.tc-acc-list > .tc-acc img {
	display: block;
	width: 100%;
	max-width: 9.5rem;
	height: 3rem;
	object-fit: contain;
	border-radius: 0;
}
.tc-acc-list > .tc-acc img[src*="BBG"] { height: 4.25rem; }
@media (min-width: 600px) and (max-width: 1099px) {
	.wp-block-group.tc-acc-list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
	.wp-block-group.tc-acc-list { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0.6rem !important; }
	.tc-acc-list > .tc-acc { padding: 0.75rem 0.6rem; }
}
.tc-acc-list > .tc-acc figcaption {
	margin: 0;
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--tc-ink-muted);
	text-align: center;
}
@media (max-width: 599px) {
	.wp-block-group.tc-acc-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.tc-acc-list > .tc-acc img { max-width: 100%; }
	.tc-acc-list > .tc-acc:last-child:nth-child(odd) { grid-column: 1 / -1; }
	.tc-acc-list > .tc-acc:last-child:nth-child(odd) img { max-width: 9.5rem; margin-inline: auto; }
}

.tc-footer__body { padding-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--40); }
.tc-footer__main {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--50);
}
.tc-footer__main > * { margin: 0 !important; }
.tc-footer__nav { display: contents; }
.tc-footer__nav > * { margin: 0 !important; }
.tc-nowrap { white-space: nowrap; }
@media (min-width: 640px) {
	.tc-footer__main { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 2rem; }
	.tc-footer__brand { grid-column: 1 / -1; }
}
@media (min-width: 1100px) {
	.tc-footer__main { grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 3rem; }
	.tc-footer__brand { grid-column: auto; }
}
.tc-footer .tc-logo img { width: 220px; }
.tc-footer__brand p:not(.is-style-note) { max-width: 30rem; }
.tc-footer__title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--tc-cream-muted);
}
.tc-footer__col p { margin-block: 0 0.75rem; }
.tc-footer__small { font-size: var(--wp--preset--font-size--sm); }
.tc-footer__links { list-style: none; margin: 0; padding: 0; }
.tc-footer__links li { margin: 0; }
.tc-footer .tc-footer__links a,
.tc-footer__col a {
	display: inline-flex;
	align-items: center;
	min-height: var(--tc-touch);
	color: var(--tc-cream);
	text-decoration: none;
}
.tc-footer .tc-footer__links a:hover,
.tc-footer__col a:hover { text-decoration: underline; text-decoration-color: var(--tc-brass-light); }
.tc-footer__legal {
	margin-top: var(--wp--preset--spacing--50) !important;
	padding-top: 1.25rem;
	border-top: 1px solid color-mix(in srgb, var(--tc-cream) 16%, transparent);
	gap: 0.5rem 2rem !important;
	font-size: var(--wp--preset--font-size--xs);
}
.tc-footer__legal p { margin: 0; }
.tc-footer__legal a { display: inline-flex; align-items: center; min-height: var(--tc-touch); }
.tc-sep { margin-inline: 0.75rem; color: var(--tc-cream-muted); }

/* 7. Sections and layouts --------------------------------------------------- */
.tc-section .tc-section-head > * { max-width: 46rem; }
.tc-section .tc-section-head > :last-child { margin-block-end: 0; }
.tc-section .tc-section-head + * { margin-block-start: var(--wp--preset--spacing--50); }
.tc-section .tc-section-foot { margin-block-start: var(--wp--preset--spacing--40); }

/* Content columns: image first on phones, alternate on wide screens. */
@media (min-width: 782px) {
	.wp-block-columns.tc-media-text.is-reversed { flex-direction: row-reverse; }
	.wp-block-columns.tc-media-text.is-reversed > .tc-media-text__text { margin-inline-end: auto; }
}
.tc-media-text__media .wp-block-image { margin: 0; }
.tc-media-text__media img { width: 100%; }
.tc-media-text__text { max-width: 36rem; }

/* Hero slider: full-bleed crossfade; cream panel holds the H1. */
.tc-hero {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	margin-block-start: 0 !important;
}
.tc-hero > * { margin: 0 !important; min-width: 0; }
.tc-hero__media.wp-block-gallery { border-radius: 0; }
.tc-hero > .tc-hero__media.wp-block-gallery.has-nested-images > figure.wp-block-image { aspect-ratio: 4 / 3; border-radius: 0; }
.tc-hero__media.wp-block-gallery img { border-radius: 0; }
.tc-hero__panel {
	position: relative;
	z-index: 2;
	color: var(--tc-cream);
	padding: 2rem clamp(1.25rem, 4vw, 2.5rem) 2.25rem;
	background: var(--tc-charcoal);
	border-radius: var(--tc-radius) var(--tc-radius) 0 0;
}
.tc-hero__panel h1 { font-size: clamp(2.5rem, 1.8rem + 3vw, 4.25rem); }
.tc-hero > .tc-slider-controls { position: absolute; z-index: 3; right: 0.75rem; }
.tc-hero .is-style-crossfade-slider figcaption { inset: 0.75rem 0.75rem auto auto !important; }

@media (min-width: 600px) and (max-width: 1023px) {
	.tc-hero > .tc-hero__media.wp-block-gallery.has-nested-images > figure.wp-block-image { aspect-ratio: 16 / 10; }
	.tc-hero.tc-hero > .tc-slider-controls { top: calc(62.5vw - 4.25rem); }
}
@media (min-width: 1024px) {
	.tc-hero {
		grid-template-columns: [full-start] minmax(var(--tc-gutter), 1fr) [wide-start] minmax(0, var(--wp--style--global--wide-size)) [wide-end] minmax(var(--tc-gutter), 1fr) [full-end];
		grid-template-rows: 1fr auto;
	}
	.tc-hero__media.wp-block-gallery { grid-column: full; grid-row: 1 / -1; height: 100%; }
	.tc-hero > .tc-hero__media.wp-block-gallery.has-nested-images { height: clamp(600px, calc(100svh - var(--tc-header-h)), 880px); }
	.tc-hero > .tc-hero__media.wp-block-gallery.has-nested-images > figure.wp-block-image { aspect-ratio: auto; height: 100%; }
	.tc-hero__panel {
		grid-column: wide;
		grid-row: 2;
		justify-self: start;
		align-self: end;
		max-width: 42rem;
		margin: 0 0 clamp(2rem, 5vh, 4rem) !important;
		padding: 2.5rem 3rem 2.75rem;
		border-radius: var(--tc-radius);
		box-shadow: var(--tc-shadow-lift);
	}
	.tc-hero > .tc-slider-controls { top: auto; right: max(var(--tc-gutter), calc((100% - var(--wp--style--global--wide-size)) / 2)); bottom: clamp(2rem, 5vh, 4rem); }
}

/* Split hero */
.tc-hero-split .tc-split { gap: clamp(2rem, 4vw, 4rem); }
@media (min-width: 1024px) {
	.tc-hero-split .tc-split > .wp-block-column:first-child { flex-basis: 48% !important; }
	.tc-hero-split .tc-split > .wp-block-column:last-child { flex-basis: 52% !important; }
}
.tc-hero-split h1 { margin-block-start: 0.85rem; }
.tc-hero-split__image { margin: 0; }
.tc-hero-split__image img { width: 100%; }

/* Page header (simple pages and guides) */
.tc-page-header,
.tc-guide-header { border-bottom: 1px solid var(--tc-line); margin-block-start: 0 !important; }
.tc-page-header .wp-block-post-title { max-width: 18em; }

/* Statement band */
.tc-statement__inner { display: grid; gap: 1.5rem; }
.tc-statement .tc-statement__inner > * { margin: 0; }
.tc-statement__text { max-width: 14em; }
.tc-statement__body { font-size: var(--wp--preset--font-size--lg); line-height: 1.6; max-width: 38rem; }
@media (min-width: 1024px) {
	.tc-statement__inner { grid-template-columns: 5fr 6fr; column-gap: clamp(3rem, 6vw, 6rem); row-gap: 1.5rem; }
	.tc-statement__inner > .is-style-eyebrow { grid-column: 1 / -1; }
	.tc-statement__inner > .tc-statement__text { grid-column: 1; }
	.tc-statement__inner > .wp-block-separator { display: none; }
	.tc-statement__inner > .tc-statement__body { grid-column: 2; align-self: end; padding-left: 2rem; border-left: 1px solid var(--tc-brass-light); }
}

/* Services grid */
.tc-services__layout { gap: clamp(2rem, 5vw, 5rem); }
@media (min-width: 782px) {
	.tc-services__intro { position: sticky; top: calc(var(--tc-header-h) + 2rem); align-self: flex-start; }
}
.wp-block-group.tc-services__grid.tc-services__grid { grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 600px) {
	.wp-block-group.tc-services__grid.tc-services__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Card grids on tablets: never squeeze cards below 16rem. */
@media (min-width: 600px) and (max-width: 1023px) {
	.wp-block-group.is-layout-grid:not(.tc-services__grid, .tc-steps, .tc-acc-list) { grid-template-columns: repeat(auto-fill, minmax(min(16rem, 100%), 1fr)); }
}

/* Process steps */
.wp-block-group.tc-steps.tc-steps { grid-template-columns: 1fr; gap: 2.5rem 2rem; }
@media (min-width: 600px) {
	.wp-block-group.tc-steps.tc-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	/* Adapts to three, four or five stages. */
	.wp-block-group.tc-steps.tc-steps { grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
}
.tc-step { position: relative; padding-top: 1.5rem; border-top: 1px solid var(--tc-line); }
.tc-step::before {
	content: "";
	position: absolute;
	top: -1px;
	left: 0;
	width: 3rem;
	height: 2px;
	background: var(--tc-rule);
}
.tc-step > * { margin-block: 0; }
.tc-step > * + * { margin-block-start: 0.75rem; }
.tc-step__num {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--xxl);
	font-weight: 500;
	line-height: 1;
	color: var(--tc-brass);
}
:is(.has-charcoal-background-color, .tc-hero__panel) .tc-step__num { color: var(--tc-brass-light); }
.tc-step p:not(.tc-step__num) { color: var(--tc-ink-mid); }

/* Contact panel */
.tc-contact__layout { gap: clamp(2rem, 5vw, 5rem); }
.wp-block-group.tc-form-panel { padding: clamp(1.5rem, 4vw, 3rem); }

/* Guide layout */
.tc-guide__layout { gap: clamp(2rem, 5vw, 5rem); }
.tc-guide__aside > * + * { margin-block-start: 1.5rem; }
@media (min-width: 782px) {
	.tc-guide__aside {
		position: sticky;
		top: calc(var(--tc-header-h) + 1.5rem);
		align-self: flex-start;
		max-height: calc(100vh - var(--tc-header-h) - 3rem);
		overflow-y: auto;
		overscroll-behavior: contain;
		scrollbar-width: thin;
		padding-right: 0.25rem;
	}
}
.tc-guide__toc { padding-bottom: 1.5rem; border-bottom: 1px solid var(--tc-line); }
@media (max-width: 781px) {
	.tc-guide__layout > .tc-guide__aside { display: contents; }
	.tc-guide__layout .tc-guide__toc { order: 0; flex-basis: 100%; margin: 0 !important; padding-top: 0.5rem; border-top: 1px solid var(--tc-line); }
	.tc-guide__layout > .tc-guide__body { order: 2; }
	/* Compact budget card straight after the contents list. */
	.tc-guide__layout .tc-guide__cta { order: 1; flex-basis: 100%; margin: 0 !important; padding: 1rem !important; }
	.tc-guide__layout .tc-guide__cta > * + * { margin-block-start: 0.5rem; }
	.tc-guide__layout .tc-guide__cta .tc-guide__cta-title { font-size: var(--wp--preset--font-size--lg); }
	.tc-guide__layout .tc-guide__cta .wp-block-buttons { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-block-start: 0.75rem; }
	.tc-guide__layout .tc-guide__cta .wp-block-button { flex: 1 1 auto; margin: 0; }
	.tc-guide__layout .tc-guide__cta .wp-block-button__link { width: 100%; }
}
.tc-guide__toc-list { margin: 0.75rem 0 0; padding-left: 1.85rem; color: var(--tc-brass); }
.tc-guide__toc-list li { margin: 0; }
.tc-guide__toc-list a {
	display: inline-flex;
	align-items: center;
	min-width: var(--tc-touch);
	min-height: var(--tc-touch);
	color: var(--tc-ink-mid);
	text-decoration: none;
}
.tc-guide__toc-list a:hover { color: var(--tc-brass); text-decoration: underline; }
.tc-guide__cta-title {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--xl);
	font-weight: 600;
	line-height: 1.2;
}
.tc-guide__body { max-width: 46rem; }
.tc-guide__body > h2 { margin-block-start: var(--wp--preset--spacing--50); }
.tc-guide__body > h2:first-child { margin-block-start: 0; }
.tc-guide__body > h3 { margin-block-start: 2rem; }
.tc-guide__body > .wp-block-image,
.tc-guide__body > .tc-keypoints { margin-block: 2.5rem; }


/* 404 */
.tc-not-found h1 { margin-block-start: 0.85rem; }

/* 8. Cards, lists, images, FAQ, notes ---------------------------------------- */
.wp-block-group.is-style-card {
	position: relative;
	padding: clamp(1.5rem, 3vw, 2.25rem);
	background: var(--tc-white);
	border: 1px solid var(--tc-line);
	border-radius: var(--tc-radius-md);
	color: var(--tc-charcoal);
	transition: border-color var(--tc-base) ease, box-shadow var(--tc-base) ease, transform var(--tc-base) var(--tc-ease);
}
.wp-block-group.is-style-card > * { margin-block: 0; }
.wp-block-group.is-style-card > * + * { margin-block-start: 0.85rem; }
.wp-block-group.is-style-card:has(a:hover, a:focus-visible) { border-color: var(--tc-brass); box-shadow: var(--tc-shadow); }
.wp-block-group.is-style-card p:not(.is-style-eyebrow, .tc-card__index) { color: var(--tc-ink-mid); }

.tc-card__index {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--xl);
	font-weight: 500;
	line-height: 1;
	color: var(--tc-brass);
}
.tc-service-card { display: flex; flex-direction: column; }
.tc-service-card :is(h2, h3, h4) { margin-block-start: 1.25rem !important; }
.tc-service-card h2 { font-size: var(--wp--preset--font-size--xl); font-weight: 600; line-height: 1.15; }
.tc-card__link { margin-top: auto !important; padding-top: 0.75rem; }
.tc-card__link a {
	display: inline-block;
	min-height: var(--tc-touch);
	padding-block: 0.7rem;
	line-height: 1.45;
	font-size: var(--wp--preset--font-size--sm);
	font-weight: 600;
	text-decoration-color: var(--tc-brass);
}
.tc-card__link a::before { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.tc-card__link a::after { content: "\2192"; content: "\2192" / ""; display: inline-block; margin-left: 0.4em; transition: transform var(--tc-base) var(--tc-ease); }
.tc-card__link a:hover::after { transform: translateX(4px); }
.tc-card__link a:focus-visible { outline: none; }
.tc-card__link a:focus-visible::before { outline: 2px solid var(--tc-focus); outline-offset: 3px; }
/* Other links in a card with a whole-card link (e.g. "Ask about this design study") sit above its overlay. */
.is-style-card:has(.tc-card__link) .wp-block-buttons { position: relative; z-index: 1; }

/* Card and stage titles that are links: underline on hover only. */
:is(.tc-step, .tc-rail-card, .tc-service-card) :is(h2, h3) a { color: inherit; text-decoration: none; }
:is(.tc-step, .tc-rail-card, .tc-service-card) :is(h2, h3) a:is(:hover, :focus-visible) { text-decoration: underline; text-decoration-color: var(--tc-rule); }
/* Guides hub cards: room under the link, link at the foot of the card. */
.tc-guides-list .tc-service-card { padding-bottom: 2.25rem; }
.tc-guides-list .tc-service-card > .tc-card__link { margin-top: auto !important; }

/* Checklist */
.wp-block-list.is-style-checklist { list-style: none; padding-left: 0; }
.wp-block-list.is-style-checklist li { position: relative; margin-block: 0.55rem; padding-left: 1.85rem; }
.wp-block-list.is-style-checklist li::before {
	content: "";
	position: absolute;
	left: 0.1rem;
	top: 0.5em;
	width: 0.8rem;
	height: 0.42rem;
	border-left: 1.5px solid var(--tc-rule);
	border-bottom: 1.5px solid var(--tc-rule);
	transform: rotate(-45deg);
}
:is(.has-charcoal-background-color, .tc-hero__panel) .wp-block-list.is-style-checklist li { color: var(--tc-cream-muted); }

/* Images */
.wp-block-image img { border-radius: var(--tc-radius); }
.wp-block-image.is-style-paper img {
	padding: clamp(0.6rem, 1.5vw, 1rem);
	background: var(--tc-cream);
	box-shadow: var(--tc-shadow-lift);
}

/* Image placeholder (Group or Paragraph style): marks where an image is still to come. */
.is-style-image-placeholder {
	display: grid;
	place-items: center;
	aspect-ratio: 3 / 2;
	padding: 1.5rem !important;
	background: var(--tc-cream-deep);
	border: 1px dashed var(--tc-ink-faint);
	border-radius: var(--tc-radius);
	color: var(--tc-ink-muted);
	font-size: var(--wp--preset--font-size--xs);
	line-height: 1.5;
	text-align: center;
}
.is-style-image-placeholder > * { margin: 0 !important; max-width: 32rem; }
.has-cream-deep-background-color .is-style-image-placeholder { background: var(--tc-cream); }

/* Design study note */
.wp-block-group.is-style-study-note {
	padding: 0.35rem 0 0.35rem 1.1rem;
	border-left: 2px solid var(--tc-brass);
	font-size: var(--wp--preset--font-size--sm);
	line-height: 1.55;
	color: var(--tc-ink-mid);
}
.wp-block-group.is-style-study-note > * { margin-block: 0; max-width: 52rem; }
.wp-block-group.is-style-study-note > * + * { margin-block-start: 0.5rem; }
:is(.has-charcoal-background-color, .tc-hero__panel) .wp-block-group.is-style-study-note { color: var(--tc-cream-muted); border-left-color: var(--tc-brass-light); }

/* FAQ (core Details) */
.wp-block-details { border-top: 1px solid var(--tc-line); }
.wp-block-details:last-child,
.wp-block-details:not(:has(+ .wp-block-details)) { border-bottom: 1px solid var(--tc-line); }
:where(.is-layout-flow, .is-layout-constrained) > .wp-block-details + .wp-block-details { margin-block-start: 0; }
.wp-block-details summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	min-height: var(--tc-touch);
	padding: 1.15rem 0;
	list-style: none;
	cursor: pointer;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem);
	font-weight: 600;
	line-height: 1.3;
}
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after {
	content: "";
	flex: 0 0 2.25rem;
	height: 2.25rem;
	border: 1px solid var(--tc-line);
	border-radius: 50%;
	background:
		linear-gradient(currentColor, currentColor) center / 0.75rem 1.5px no-repeat,
		linear-gradient(currentColor, currentColor) center / 1.5px 0.75rem no-repeat;
	transition: transform var(--tc-base) var(--tc-ease), background-color var(--tc-fast) ease;
}
.wp-block-details summary:hover::after { border-color: var(--tc-brass); }
.wp-block-details[open] summary::after { transform: rotate(45deg); }
.wp-block-details > :not(summary) { max-width: 62ch; margin-block: 0 1.25rem; color: var(--tc-ink-mid); }
:is(.has-charcoal-background-color, .tc-hero__panel) .wp-block-details > :not(summary) { color: var(--tc-cream-muted); }
@supports (interpolate-size: allow-keywords) {
	@media (prefers-reduced-motion: no-preference) {
		.wp-block-details { interpolate-size: allow-keywords; }
		.wp-block-details::details-content { block-size: 0; overflow: hidden; transition: block-size var(--tc-base) var(--tc-ease), content-visibility var(--tc-base) allow-discrete; }
		.wp-block-details[open]::details-content { block-size: auto; }
	}
}

/* Testimonial quote */
.wp-block-quote.is-style-testimonial {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
	margin-inline: 0;
	margin-block-end: 0;
	padding: clamp(1.5rem, 3vw, 2.25rem);
	background: var(--tc-white);
	border: 1px solid var(--tc-line);
	border-radius: var(--tc-radius-md);
	font-size: inherit;
}
.wp-block-quote.is-style-testimonial p {
	margin: 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.25rem, 1.1rem + 0.45vw, 1.5rem);
	font-weight: 500;
	line-height: 1.4;
	color: var(--tc-charcoal);
}
.wp-block-quote.is-style-testimonial cite {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-top: auto;
	font-style: normal;
	color: var(--tc-ink-muted);
}
.wp-block-quote.is-style-testimonial cite::before { content: ""; flex: 0 0 2rem; height: 1px; background: var(--tc-brass); }

/* 9. Sliders and rail --------------------------------------------------------- */
/* Shared slider controls (added by theme.js) */
.tc-slider-controls {
	display: inline-flex;
	align-items: center;
	gap: 0.15rem;
	padding: 0.25rem;
	background: color-mix(in srgb, var(--tc-cream) 94%, transparent);
	border: 1px solid var(--tc-line);
	border-radius: var(--wp--custom--radius--pill);
	color: var(--tc-charcoal);
	box-shadow: var(--tc-shadow);
}
.tc-slider-controls button,
.tc-rail-controls button {
	display: inline-grid;
	place-items: center;
	width: var(--tc-touch);
	height: var(--tc-touch);
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: inherit;
	cursor: pointer;
	transition: background-color var(--tc-fast) ease, color var(--tc-fast) ease;
}
.tc-slider-controls button:hover { background: var(--tc-charcoal); color: var(--tc-cream); }
.tc-slider-controls svg,
.tc-rail-controls svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.tc-slider-controls .tc-icon-play,
.tc-slider-controls.is-paused .tc-icon-pause { display: none; }
.tc-slider-controls.is-paused .tc-icon-play { display: block; }
.tc-slider-count {
	min-width: 3.25rem;
	padding-inline: 0.25rem;
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	text-align: center;
}

/* Crossfade slider (Gallery style). Without JavaScript: a swipeable row, every slide visible. */
.wp-block-gallery.has-nested-images.is-style-crossfade-slider {
	position: relative;
	display: flex;
	flex-wrap: nowrap;
	gap: 0;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: thin;
	border-radius: var(--tc-radius);
}
.wp-block-gallery.has-nested-images.is-style-crossfade-slider > figure.wp-block-image {
	position: relative;
	flex: 0 0 100% !important;
	width: 100% !important;
	margin: 0 !important;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	scroll-snap-align: start;
	background: var(--tc-stone);
}
.wp-block-gallery.has-nested-images.is-style-crossfade-slider > figure.wp-block-image img {
	position: absolute;
	inset: 0;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	border-radius: 0;
}
.wp-block-gallery.has-nested-images.is-style-crossfade-slider figure.wp-block-image:has(figcaption)::before { content: none; display: none; }
.wp-block-gallery.has-nested-images.is-style-crossfade-slider figure.wp-block-image figcaption {
	position: absolute;
	inset: auto auto 0.75rem 0.75rem;
	width: auto;
	max-width: calc(100% - 1.5rem);
	max-height: none;
	margin: 0;
	padding: 0.35rem 0.7rem;
	overflow: visible;
	background: color-mix(in srgb, var(--tc-cream) 92%, transparent);
	border-radius: var(--tc-radius);
	color: var(--tc-charcoal);
	font-size: 0.75rem;
	line-height: 1.4;
	text-align: left;
	text-shadow: none;
}

/* Enhanced: stacked slides that crossfade, with a slow zoom on the active slide. The stacked
   layout applies as soon as JavaScript is known to be available (html.tc-js), with the first
   slide showing, so the hero does not jump when theme.js starts. */
.tc-js .wp-block-gallery.has-nested-images.is-style-crossfade-slider {
	display: grid;
	grid-template-areas: "slide";
	overflow: hidden;
	scroll-snap-type: none;
}
.tc-js .is-style-crossfade-slider > figure.wp-block-image {
	grid-area: slide;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--wp--custom--motion--fade) ease, visibility 0s linear var(--wp--custom--motion--fade);
}
.tc-js .is-style-crossfade-slider:not(.tc-slider-ready) > figure.wp-block-image:first-of-type { opacity: 1; visibility: visible; z-index: 1; }
/* Not rendered until it is the current, next or outgoing slide, so its image is not fetched at page load. */
.tc-slider-ready > figure.wp-block-image:not(.is-active, .is-next, .is-prev) { content-visibility: hidden; }
.tc-slider-ready > figure.wp-block-image.is-active {
	z-index: 1;
	opacity: 1;
	visibility: visible;
	transition: opacity var(--wp--custom--motion--fade) ease, visibility 0s;
}
.tc-slider-ready > figure.wp-block-image img { transform: scale(1); transition: transform 0s linear var(--wp--custom--motion--fade); }
.tc-slider-ready > figure.wp-block-image.is-active img { transform: scale(1.06); transition: transform var(--wp--custom--motion--zoom) linear; }
.tc-slider-ready > .tc-slider-controls { position: absolute; right: 0.75rem; bottom: 0.75rem; z-index: 3; }

/* Testimonial slider (Group style). Without JavaScript: all quotes in a grid. */
.wp-block-group.is-style-testimonial-slider {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr));
	gap: 1.25rem;
}
.wp-block-group.is-style-testimonial-slider > * { margin: 0 !important; }
.wp-block-group.is-style-testimonial-slider.tc-quotes-ready {
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas: "quote" "controls";
	justify-items: center;
	gap: 2rem;
}
.tc-quotes-ready > .wp-block-quote {
	grid-area: quote;
	width: 100%;
	max-width: 54rem;
	padding: 0;
	background: none;
	border: 0;
	text-align: center;
	align-items: center;
	opacity: 0;
	visibility: hidden;
	transition: opacity 900ms ease, visibility 0s linear 900ms;
}
.tc-quotes-ready > .wp-block-quote.is-active { opacity: 1; visibility: visible; transition: opacity 900ms ease, visibility 0s; }
.tc-quotes-ready > .wp-block-quote p { font-size: clamp(1.4rem, 1rem + 1.6vw, 2.25rem); line-height: 1.35; }
.tc-quotes-ready > .wp-block-quote cite { margin-top: 0; }
.tc-quotes-ready > .tc-slider-controls { grid-area: controls; box-shadow: none; background: var(--tc-white); }

/* Card rail (Group style). Native horizontal scroll with snap; theme.js adds buttons. */
.wp-block-group.is-style-card-rail {
	display: flex;
	flex-wrap: nowrap !important;
	align-items: stretch;
	gap: clamp(1rem, 2vw, 1.5rem);
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scrollbar-width: thin;
	scrollbar-color: var(--tc-line) transparent;
	padding: 0.25rem 0 1.25rem;
}
.wp-block-group.is-style-card-rail > * {
	flex: 0 0 min(84%, 23rem);
	margin: 0 !important;
	scroll-snap-align: start;
}
@media (min-width: 782px) {
	.wp-block-group.is-style-card-rail > * { flex-basis: calc((100% - clamp(1rem, 2vw, 1.5rem)) / 2); }
}
/* A soft fade on the right edge says there is more to scroll. */
@media (max-width: 1099px) {
	.wp-block-group.is-style-card-rail {
		-webkit-mask-image: linear-gradient(to right, #000 92%, transparent);
		mask-image: linear-gradient(to right, #000 92%, transparent);
	}
}
@media (min-width: 1100px) {
	.wp-block-group.is-style-card-rail > * { flex-basis: calc((100% - 2 * clamp(1rem, 2vw, 1.5rem)) / 3); }
}
.wp-block-group.is-style-card-rail:focus-visible { outline-offset: 4px; }
/* The rail sits exactly on the section grid; focus rings inside rail cards are drawn inset so the scroller does not clip them. */
.is-style-card-rail .tc-card__link a:focus-visible::before { outline-offset: -3px; }
.tc-rail-controls {
	display: flex;
	justify-content: flex-end;
	gap: 0.5rem;
}
.tc-rail-controls[hidden] { display: none; }
.tc-rail-controls button { border: 1px solid var(--tc-charcoal); color: var(--tc-charcoal); }
.tc-rail-controls button:hover:not(:disabled) { background: var(--tc-charcoal); color: var(--tc-cream); }
.tc-rail-controls button:disabled { opacity: 0.35; cursor: default; }
.tc-section .tc-section-head + .tc-rail-controls { margin-block-start: var(--wp--preset--spacing--40); }
.tc-section .tc-rail-controls + .is-style-card-rail { margin-block-start: 1rem; }
.is-style-card-rail + .is-style-study-note { margin-block-start: 1.5rem; }

.tc-rail-card { display: flex; flex-direction: column; padding: 0 0 1.75rem !important; overflow: hidden; }
.tc-rail-card > :not(.tc-rail-card__image) { padding-inline: clamp(1.25rem, 2.5vw, 1.75rem); }
.tc-rail-card > .tc-rail-card__image + * { margin-block-start: 1.5rem; }
.tc-rail-card__image { margin: 0 !important; overflow: hidden; background: var(--tc-stone); }
.tc-rail-card__image img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 0; transition: transform 900ms var(--tc-ease); }
.tc-rail-card:has(a:hover) .tc-rail-card__image img { transform: scale(1.03); }

/* 10. Motion -------------------------------------------------------------------
   Sections rise or slide in once as they enter the view (CSS scroll-driven
   animation). Content is fully visible where this is unsupported and when the
   visitor prefers reduced motion. Image reveal wipe: Image style "Reveal wipe". */
@keyframes tc-rise { from { opacity: 0; translate: 0 var(--wp--custom--motion--rise); } to { opacity: 1; translate: 0 0; } }
@keyframes tc-slide-left { from { opacity: 0; translate: -2.5rem 0; } to { opacity: 1; translate: 0 0; } }
@keyframes tc-slide-right { from { opacity: 0; translate: 2.5rem 0; } to { opacity: 1; translate: 0 0; } }
@keyframes tc-wipe { from { clip-path: inset(0 100% 0 0); scale: 1.04; } to { clip-path: inset(0 0 0 0); scale: 1; } }

@media (prefers-reduced-motion: no-preference) {
	@supports (animation-timeline: view()) {
		.tc-rise,
		.tc-slide-in-left,
		.tc-slide-in-right,
		.tc-stagger > *,
		.wp-block-image.is-style-reveal img {
			animation-duration: 1ms; /* required by Firefox; the timeline drives progress */
			animation-timing-function: var(--tc-ease);
			animation-fill-mode: both;
			animation-timeline: view();
			animation-range: entry 0% cover 28%;
		}
		.tc-rise { animation-name: tc-rise; }
		.tc-slide-in-left { animation-name: tc-slide-left; }
		.tc-slide-in-right { animation-name: tc-slide-right; }
		.tc-stagger > * { animation-name: tc-rise; }
		.tc-stagger > :nth-child(2) { animation-range: entry 4% cover 31%; }
		.tc-stagger > :nth-child(3) { animation-range: entry 8% cover 34%; }
		.tc-stagger > :nth-child(4) { animation-range: entry 12% cover 37%; }
		.wp-block-image.is-style-reveal img { animation-name: tc-wipe; animation-timing-function: linear; animation-range: entry 10% cover 45%; }
	}
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		transition-delay: 0s !important;
		scroll-behavior: auto !important;
	}
	.tc-slider-ready > figure.wp-block-image img,
	.tc-slider-ready > figure.wp-block-image.is-active img { transform: none; }
}

/* 11. Contact Form 7 (restyled only; fields and settings unchanged) ------------
   Covers core CF7 markup, the house classes used inside the forms (tc-step-title,
   tc-label, tc-hint, tc-group), Ultimate Addons for CF7 multi-step and spam check
   (uacf7-*) as used on the live site, and CF7 Multi-Step Forms (cf7mls). */
.wpcf7 { color: var(--tc-charcoal); }
.wpcf7 *, .wpcf7 *::before, .wpcf7 *::after { box-sizing: border-box; }
.wpcf7 form:is(.init, .resetting, .submitting) .wpcf7-response-output { display: none; }
.wpcf7 form > * + * { margin-block-start: 0; }
.wpcf7 .tc-step-title {
	margin: 0 0 0.4rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--xl);
	font-weight: 600;
	line-height: 1.2;
}
.wpcf7 .tc-step-intro { margin: 0 0 1.25rem; font-size: var(--wp--preset--font-size--sm); color: var(--tc-ink-muted); }
.wpcf7 .tc-label,
.wpcf7 label.tc-label,
.wpcf7 legend.tc-label {
	display: block;
	margin: 1.25rem 0 0.5rem;
	padding: 0;
	font-size: var(--wp--preset--font-size--sm);
	font-weight: 600;
	color: var(--tc-charcoal);
}
.wpcf7 .tc-hint,
.wpcf7 .tc-message-hint { margin: 0.5rem 0 0; font-size: var(--wp--preset--font-size--xs); line-height: 1.5; color: var(--tc-ink-muted); }
.wpcf7 fieldset.tc-group { min-width: 0; margin: 0; padding: 0; border: 0; }
.wpcf7 fieldset.tc-group legend.tc-label { float: none; width: auto; }
.wpcf7 fieldset.hidden-fields-container { display: none; }
.tc-sr-only {
	position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important;
	overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important;
}
.wpcf7 p { margin-block: 0 0.75rem; }
.wpcf7 .wpcf7-form-control-wrap { display: block; }

.wpcf7 :is(input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="url"], input[type="date"], input[type="password"], select, textarea),
.wpcf7 .uacf7_spam_recognation input {
	width: 100%;
	min-height: 52px;
	padding: 0.75rem 1rem;
	background: var(--tc-white);
	border: 1px solid var(--tc-ink-faint);
	border-radius: var(--tc-radius);
	box-shadow: none;
	color: var(--tc-charcoal);
	font: 400 1rem / 1.5 var(--wp--preset--font-family--body);
	transition: border-color var(--tc-fast) ease, box-shadow var(--tc-fast) ease;
}
.wpcf7 textarea { min-height: 9.5rem; resize: vertical; }
.wpcf7 :is(input, select, textarea):hover { border-color: var(--tc-charcoal); }
.wpcf7 :is(input, select, textarea):focus { border-color: var(--tc-brass); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--tc-brass) 22%, transparent); }
.wpcf7 :is(input, select, textarea, button, a):focus-visible { outline: 2px solid var(--tc-charcoal); outline-offset: 3px; }
.wpcf7 ::placeholder { color: var(--tc-ink-faint); opacity: 1; }

/* Radio and checkbox options as tidy, tappable tiles */
.wpcf7 :is(.wpcf7-radio, .wpcf7-checkbox) { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.wpcf7 .wpcf7-list-item { margin: 0; }
.wpcf7 :is(.wpcf7-radio, .wpcf7-checkbox) .wpcf7-list-item label {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	min-height: var(--tc-touch);
	padding: 0.5rem 0.9rem;
	background: var(--tc-white);
	border: 1px solid var(--tc-line);
	border-radius: var(--tc-radius);
	font-size: var(--wp--preset--font-size--sm);
	line-height: 1.35;
	color: var(--tc-ink-mid);
	cursor: pointer;
	transition: border-color var(--tc-fast) ease, background-color var(--tc-fast) ease;
}
.wpcf7 :is(.wpcf7-radio, .wpcf7-checkbox) .wpcf7-list-item label:hover { border-color: var(--tc-brass); }
.wpcf7 :is(.wpcf7-radio, .wpcf7-checkbox) .wpcf7-list-item label:has(input:checked) {
	background: var(--tc-cream);
	border-color: var(--tc-brass);
	box-shadow: inset 0 0 0 1px var(--tc-brass);
	color: var(--tc-charcoal);
}
.wpcf7 input[type="radio"],
.wpcf7 input[type="checkbox"] {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	margin: 0;
	accent-color: var(--tc-brass);
	cursor: pointer;
}
.wpcf7 .wpcf7-acceptance { display: block; margin-block: 1.25rem 0.5rem; }
.wpcf7 .wpcf7-acceptance .wpcf7-list-item label {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	padding: 0;
	background: none;
	border: 0;
	font-size: var(--wp--preset--font-size--sm);
	line-height: 1.5;
	color: var(--tc-ink-mid);
	cursor: pointer;
}
.wpcf7 .wpcf7-acceptance input { margin-top: 0.1rem; }

/* File inputs */
.wpcf7 input[type="file"] { max-width: 100%; font-size: var(--wp--preset--font-size--sm); color: var(--tc-ink-mid); }
.wpcf7 input[type="file"]::file-selector-button {
	min-height: var(--tc-touch);
	margin-right: 0.85rem;
	padding: 0 1.1rem;
	background: var(--tc-white);
	border: 1px solid var(--tc-charcoal);
	border-radius: var(--tc-radius);
	color: var(--tc-charcoal);
	font: 600 var(--wp--preset--font-size--sm) var(--wp--preset--font-family--body);
	cursor: pointer;
}
.wpcf7 input[type="file"]::file-selector-button:hover { background: var(--tc-charcoal); color: var(--tc-cream); }

/* Buttons: submit and multi-step next (primary), previous (secondary) */
.wpcf7 :is(input.wpcf7-submit, button.uacf7-next, .uacf7-prev, .cf7mls_next, .cf7mls_back, button.action-button) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	width: auto;
	margin: 1.5rem 0.6rem 0 0;
	padding: 0 1.75rem;
	background: var(--tc-brass);
	border: 1px solid var(--tc-brass);
	border-radius: var(--tc-radius);
	box-shadow: none;
	color: var(--tc-white);
	font: 600 var(--wp--preset--font-size--sm) / 1 var(--wp--preset--font-family--body);
	letter-spacing: 0.02em;
	text-transform: none;
	cursor: pointer;
	transition: background-color var(--tc-fast) ease, color var(--tc-fast) ease, border-color var(--tc-fast) ease;
}
.wpcf7 :is(input.wpcf7-submit, button.uacf7-next, .cf7mls_next):hover:not(:disabled) { background: var(--tc-charcoal); border-color: var(--tc-charcoal); color: var(--tc-cream); }
.wpcf7 :is(button.uacf7-prev, button.cf7mls_back, .uacf7-buttons .uacf7-prev) { background: var(--tc-white); border-color: var(--tc-line); color: var(--tc-charcoal); }
.wpcf7 :is(button.uacf7-prev, button.cf7mls_back, .uacf7-buttons .uacf7-prev):hover { border-color: var(--tc-charcoal); }
.wpcf7 input.wpcf7-submit:disabled { opacity: 0.55; cursor: not-allowed; }
.wpcf7 .uacf7-buttons,
.wpcf7 .cf7mls-btns { display: flex; flex-wrap: wrap; align-items: center; gap: 0 0.25rem; margin: 0.5rem 0 0; }

/* Spinner, validation and response */
.wpcf7 .wpcf7-spinner { margin: 1.5rem 0 0 0.75rem; background-color: var(--tc-ink-muted); vertical-align: middle; }
.wpcf7 .wpcf7-not-valid-tip { display: block; margin-top: 0.4rem; font-size: var(--wp--preset--font-size--sm); font-weight: 500; color: var(--tc-alert); }
.wpcf7 .wpcf7-not-valid { border-color: var(--tc-alert) !important; }
.wpcf7 form .wpcf7-response-output {
	margin: 1.5rem 0 0;
	padding: 0.9rem 1.1rem;
	border: 1px solid var(--tc-line);
	border-left: 3px solid var(--tc-brass);
	border-radius: var(--tc-radius);
	background: var(--tc-white);
	font-size: var(--wp--preset--font-size--sm);
	color: var(--tc-charcoal);
}
.wpcf7 form.sent .wpcf7-response-output { border-color: var(--tc-line); border-left-color: var(--tc-charcoal); }
.wpcf7 form:is(.invalid, .unaccepted, .payment-required, .failed, .aborted, .spam) .wpcf7-response-output { border-color: var(--tc-alert); border-left-color: var(--tc-alert); color: var(--tc-charcoal); }

/* UACF7 multi-step progress */
.wpcf7 .uacf7-steps .steps-row {
	position: relative;
	display: flex;
	justify-content: space-between;
	margin: 0 0 2rem;
	padding: 0;
}
.wpcf7 .uacf7-steps .steps-row::before {
	content: "" !important;
	position: absolute;
	top: 21px !important;
	left: 22px;
	right: 22px;
	height: 1px !important;
	background-color: var(--tc-line) !important;
	z-index: 0;
}
.wpcf7 .uacf7-steps .steps-step { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; text-align: center; }
.wpcf7 .steps-form .steps-row .steps-step .btn.btn-circle {
	display: inline-grid !important;
	place-items: center;
	width: 44px !important;
	height: 44px !important;
	min-width: 0 !important;
	padding: 0 !important;
	line-height: 1 !important;
	border: 1px solid var(--tc-line) !important;
	border-radius: 50% !important;
	background: var(--tc-cream) !important;
	box-shadow: none !important;
	color: var(--tc-ink-muted) !important;
	font: 600 var(--wp--preset--font-size--sm) var(--wp--preset--font-family--body) !important;
	text-decoration: none !important;
}
.wpcf7 .steps-form .steps-row .steps-step .btn.btn-circle.uacf7-btn-active { background: var(--tc-brass) !important; border-color: var(--tc-brass) !important; color: var(--tc-white) !important; }
.wpcf7 .steps-form .steps-row .steps-step .btn.btn-circle:is(.uacf7-btn-success, .uacf7-btn-complete) { background: var(--tc-charcoal) !important; border-color: var(--tc-charcoal) !important; color: var(--tc-cream) !important; }
.wpcf7 .steps-form .steps-row .steps-step .steps-info p {
	margin: 0.5rem 0 0;
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--tc-ink-muted);
}
.wpcf7 .uacf7-step.step-content { padding: 0; }
@media (max-width: 479px) {
	.wpcf7 .steps-form .steps-row .steps-step .steps-info p { letter-spacing: 0.04em; }
}

/* UACF7 arithmetic spam check */
.wpcf7 .uacf7_spam_recognation { margin: 0.25rem 0 0; }
.wpcf7 .uacf7_spam_recognation #arithmetic_input_holder { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.5rem; }
.wpcf7 .uacf7_spam_recognation #arithmetic_cal { white-space: nowrap; font-size: 1.0625rem; font-weight: 600; color: var(--tc-charcoal); }
.wpcf7 .uacf7_spam_recognation #arithmathic_refresh {
	display: inline-grid;
	place-items: center;
	width: var(--tc-touch);
	height: var(--tc-touch);
	padding: 0;
	background: none;
	border: 1px solid var(--tc-line);
	border-radius: 50%;
	color: var(--tc-brass);
	cursor: pointer;
}
.wpcf7 .uacf7_spam_recognation #arithmathic_refresh svg { width: 16px; height: 16px; fill: currentColor; }
.wpcf7 .uacf7_spam_recognation input { max-width: 14rem; }

/* CF7 Multi-Step Forms (cf7mls) */
.wpcf7 fieldset.fieldset-cf7mls { min-width: 0; margin: 0; padding: 0; border: 0; }
.wpcf7 .cf7mls_progress_bar { display: flex; gap: 0.5rem; margin: 0 0 2rem; padding: 0; list-style: none; counter-reset: tc-step; }
.wpcf7 .cf7mls_progress_bar li { flex: 1; padding-top: 0.6rem; border-top: 2px solid var(--tc-line); font-size: var(--wp--preset--font-size--xs); font-weight: 600; color: var(--tc-ink-muted); }
.wpcf7 .cf7mls_progress_bar li:is(.active, .current) { border-top-color: var(--tc-brass); color: var(--tc-charcoal); }

/* 12. Editor: show every slide and card for editing; no scroll motion. ----------- */
.editor-styles-wrapper .wp-block-gallery.has-nested-images.is-style-crossfade-slider { flex-wrap: wrap; gap: 0.5rem; overflow: visible; }
.editor-styles-wrapper .wp-block-gallery.has-nested-images.is-style-crossfade-slider > figure.wp-block-image { flex: 1 1 30% !important; width: 30% !important; }
.editor-styles-wrapper :is(.tc-rise, .tc-slide-in-left, .tc-slide-in-right, .tc-stagger > *, .wp-block-image.is-style-reveal img) { animation: none !important; }

/* 13. Extension cost calculator ([tc_cost_calculator], legacy markup unchanged) --------
   The calculator ships its own scoped styles; these overrides map its variables and
   shapes onto the theme tokens. Higher specificity than its inline .tc-calc rules. */
.tc-main .tc-calc {
	--ink: var(--tc-charcoal);
	--paper: var(--tc-cream);
	--card: var(--tc-white);
	--brass: var(--tc-brass);
	--muted: var(--tc-ink-muted);
	--line: var(--tc-line);
	--soft: var(--tc-cream-deep);
	--err: var(--tc-alert);
	--display: var(--wp--preset--font-family--display);
	--body: var(--wp--preset--font-family--body);
	--warn-bg: var(--tc-cream-deep);
	--warn-ink: var(--tc-charcoal);
	font-size: 1rem;
}
#calculator .tc-calc h1 { font-size: var(--wp--preset--font-size--xxl); font-weight: 500; line-height: 1.1; }
.tc-main .tc-calc .eyebrow { display: flex; align-items: center; gap: 0.75rem; font-size: var(--wp--preset--font-size--xs); line-height: 1.4; color: var(--tc-brass); }
.tc-main .tc-calc .eyebrow::before { content: ""; flex: 0 0 1.75rem; height: 1px; background: currentColor; }
.tc-main .tc-calc .lead { font-size: var(--wp--preset--font-size--lg); line-height: 1.55; color: var(--tc-ink-mid); max-width: 40em; }
.tc-main .tc-calc .notes { margin-top: var(--wp--preset--spacing--40); }
.tc-main .tc-calc .result .btn.ghost { border-color: var(--tc-brass-light); }
.tc-main .tc-calc :is(.card, .result) { border-radius: var(--tc-radius-md); }
.tc-main .tc-calc .card { padding: clamp(1.25rem, 3vw, 2rem); }
/* Let each option tile grow with its text so rows never overlap the next row or the Back and Next buttons. */
.tc-main .tc-calc .opts { align-items: stretch; }
.tc-main .tc-calc .opt { display: flex; }
.tc-main .tc-calc .opt span { flex: 1 1 auto; height: auto; min-height: var(--tc-touch); border-radius: var(--tc-radius); }
.tc-main .tc-calc .nav { margin-top: 1.5rem; }
.tc-main .tc-calc :is(.field input, .field select, .num) { min-height: 48px; border-color: var(--tc-ink-faint); border-radius: var(--tc-radius); background: var(--tc-white); }
.tc-main .tc-calc .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; border-radius: var(--tc-radius); }
.tc-main .tc-calc .btn.primary:hover:not([disabled]) { background: var(--tc-charcoal); color: var(--tc-cream); }
.tc-main .tc-calc .btn.ghost:hover:not([disabled]) { border-color: var(--tc-charcoal); }
.tc-main .tc-calc .result .btn.primary:hover:not([disabled]) { background: var(--tc-cream); color: var(--tc-charcoal); }
.tc-main .tc-calc .locked { border-radius: var(--tc-radius-md); }
.tc-main .tc-calc .eyebrow { letter-spacing: 0.16em; }
@media (min-width: 480px) {
	.tc-main .tc-calc .opts:has(> .opt:nth-child(4):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 14. Page helpers --------------------------------------------------------------
   tc-gallery--even (Gallery or Columns): images share one 4:3 frame; drawings are never cropped.
   tc-pair (Columns): stays two columns from 600 px; portrait images capped at 80vh.
   Long-form lists: separated items so links are easy to tap. */
.tc-gallery--even .wp-block-image img,
.wp-block-gallery.has-nested-images.tc-gallery--even figure.wp-block-image:not(#tc-even) img {
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 4 / 3;
	object-fit: contain !important;
	background: var(--wp--preset--color--white, #fff);
	outline: 1px solid rgba(36, 36, 34, 0.08);
}
.wp-block-gallery.has-nested-images.tc-gallery--even figure.wp-block-image:not(#tc-even) { flex-direction: column; justify-content: flex-start; }
.wp-block-gallery.has-nested-images.tc-gallery--even figure.wp-block-image:has(figcaption)::before { content: none; }
.wp-block-gallery.has-nested-images.tc-gallery--even figure.wp-block-image:not(#tc-even) figcaption {
	position: static;
	max-height: none;
	margin: 0.75rem 0 0;
	padding: 0;
	overflow: visible;
	background: none;
	color: var(--tc-muted);
	font-size: var(--wp--preset--font-size--xs);
	text-align: left;
	text-shadow: none;
}
.wp-block-columns.tc-gallery--even { align-items: flex-start; }
/* tc-gallery--cover (with or without tc-gallery--even): photographic model views fill the frame. */
.tc-gallery--cover .wp-block-image img,
.wp-block-image.tc-gallery--cover img { object-fit: cover !important; }

@media (min-width: 600px) {
	.wp-block-columns.tc-pair.tc-pair { flex-wrap: nowrap !important; }
	.wp-block-columns.tc-pair.tc-pair > .wp-block-column { flex-basis: 0 !important; flex-grow: 1; }
}
.tc-pair .wp-block-image { display: table; margin-inline: auto; text-align: center; }
.tc-pair .wp-block-image figcaption { display: table-caption; caption-side: bottom; }
.tc-pair .wp-block-image img { width: auto; max-width: 100%; max-height: 80vh; object-fit: contain; }
.tc-pair .wp-block-image figcaption { text-align: left; }

.tc-content :where(ul, ol):not(.tc-footer__links, .is-style-checklist, .tc-guide__toc-list) > li + li { margin-top: 0.5rem; }

/* Request my free 3D model page (/request-my-free-3d-model/, [tc_pp_request_form] inside tc-request__panel).
   Permanent: promoted from the section 19 preview drafts on 3 Oct 2026, so section 19 can be removed safely. */
.wp-block-group.is-style-card.tc-request-ready { border-top: 2px solid var(--tc-brass); }
.tc-request-ready > .wp-block-list { margin-block-start: 1.25rem !important; }
.tc-request .tc-section-head > * { max-width: none; }
.wp-block-group.tc-request__panel {
	margin-block-start: var(--wp--preset--spacing--50);
	background: var(--tc-white);
	border: 1px solid var(--tc-line);
	border-radius: var(--tc-radius-md);
	box-shadow: var(--tc-shadow);
}

/* tc-cta-label (Paragraph): a short label that belongs to the buttons right after it (Contact hero "Talk to us"). */
p.tc-cta-label { margin-block-end: 0 !important; font-weight: 600; letter-spacing: 0.01em; }
.has-charcoal-background-color p.tc-cta-label { color: var(--tc-cream); }
p.tc-cta-label + .wp-block-buttons { margin-block-start: 0.6rem !important; }

/* 15. Character from the original site (within the approved palette) -------------
   Brass card links, brass top rule on cards, charcoal process band with charcoal-soft
   step panels, brass nav hover, brass hero accent line. */
.tc-card__link a { color: var(--tc-brass); }
.tc-card__link a:hover { color: var(--tc-charcoal); }
.tc-nav .wp-block-navigation-item__content:hover { color: var(--tc-brass); }

.wp-block-group.is-style-card.tc-service-card::after {
	content: "";
	position: absolute;
	top: -1px;
	left: clamp(1.5rem, 3vw, 2.25rem);
	width: 2.5rem;
	height: 2px;
	background: var(--tc-brass);
	transition: width var(--tc-base) var(--tc-ease);
}
.wp-block-group.is-style-card.tc-service-card:has(a:hover)::after { width: 4.5rem; }

/* Process stages on charcoal: panels as on the live site */
.has-charcoal-background-color .tc-step {
	padding: 1.75rem clamp(1.25rem, 2vw, 1.75rem) 2rem;
	background: var(--tc-charcoal-soft);
	border: 1px solid var(--tc-ink-mid);
	border-radius: var(--tc-radius);
}
.has-charcoal-background-color .tc-step::before { top: -1px; left: clamp(1.25rem, 2vw, 1.75rem); background: var(--tc-brass-light); }
.has-charcoal-background-color .tc-step p:not(.tc-step__num) { color: var(--tc-cream-muted); }

/* Hero panel: a thin brass line where it meets the illustration */
.tc-hero__panel { border-top: 2px solid var(--tc-brass-light); }
.tc-hero__panel .is-style-note { color: var(--tc-cream-muted); }
@media (max-width: 1023px) {
	.tc-hero__panel { margin: 0 !important; max-width: none; border-radius: 0; padding-inline: var(--tc-gutter); }
	.tc-hero > .tc-slider-controls { top: calc(75vw - 4.25rem); }
}

/* 16. Print -------------------------------------------------------------------
   Static header without controls, every testimonial and FAQ answer on paper, only the
   current hero slide, card rails wrapped, no motion. theme.js opens closed details first. */
@media print {
	.tc-site-header { position: static; }
	.tc-header { backdrop-filter: none; box-shadow: none; background: none; }
	.tc-menu-toggle,
	.tc-header__cta,
	.tc-slider-controls,
	.tc-rail-controls { display: none !important; }
	.tc-header__bar > .tc-nav { display: none !important; }
	.wp-block-group.is-style-testimonial-slider.tc-quotes-ready { grid-template-areas: none; }
	.tc-quotes-ready > .wp-block-quote { grid-area: auto; opacity: 1 !important; visibility: visible !important; break-inside: avoid; }
	.tc-js .is-style-crossfade-slider > figure.wp-block-image:not(.is-active) { display: none; }
	.tc-js .is-style-crossfade-slider:not(.tc-slider-ready) > figure.wp-block-image:first-of-type { display: block; }
	.tc-slider-ready > figure.wp-block-image.is-active img { transform: none; }
	.wp-block-group.is-style-card-rail { flex-wrap: wrap !important; overflow: visible; -webkit-mask-image: none; mask-image: none; }
	.wp-block-group.is-style-card-rail > * { flex: 1 1 14rem; break-inside: avoid; }
	.wp-block-details::details-content { block-size: auto; content-visibility: visible; }
	.wp-block-details > :not(summary) { display: block; }
	.tc-rise,
	.tc-slide-in-left,
	.tc-slide-in-right,
	.tc-stagger > *,
	.wp-block-image.is-style-reveal img { animation: none !important; opacity: 1 !important; translate: none !important; clip-path: none !important; scale: none !important; }
	.tc-js.tc-cta-bar .tc-footer__body { padding-bottom: var(--wp--preset--spacing--40); }
}

/* 16. Icons ---------------------------------------------------------------------
   Add "tc-icon tc-icon--<name>" to a Heading or Paragraph: a brass line icon sits above it
   (add tc-icon--inline to put it before the text instead). Light brass on charcoal.
   Names: team, costs, accredited, location, extension, loft, structural, refurbishment,
   garage, consult, design, build, handover. Files: assets/icons/<name>.svg */
.tc-icon::before {
	content: "";
	display: block;
	width: 2rem;
	height: 2rem;
	margin-bottom: 1rem;
	background-color: var(--tc-brass);
	-webkit-mask: var(--tc-icon) center / contain no-repeat;
	mask: var(--tc-icon) center / contain no-repeat;
}
.tc-icon--inline::before { display: inline-block; width: 1.5rem; height: 1.5rem; margin: 0 0.6rem 0 0; vertical-align: -0.3em; }
:is(.has-charcoal-background-color, .tc-hero__panel) .tc-icon::before { background-color: var(--tc-brass-light); }
.tc-icon--team { --tc-icon: url("../icons/team.svg"); }
.tc-icon--costs { --tc-icon: url("../icons/costs.svg"); }
.tc-icon--accredited { --tc-icon: url("../icons/accredited.svg"); }
.tc-icon--location { --tc-icon: url("../icons/location.svg"); }
.tc-icon--extension { --tc-icon: url("../icons/extension.svg"); }
.tc-icon--loft { --tc-icon: url("../icons/loft.svg"); }
.tc-icon--structural { --tc-icon: url("../icons/structural.svg"); }
.tc-icon--refurbishment { --tc-icon: url("../icons/refurbishment.svg"); }
.tc-icon--garage { --tc-icon: url("../icons/garage.svg"); }
.tc-icon--consult { --tc-icon: url("../icons/consult.svg"); }
.tc-icon--design { --tc-icon: url("../icons/design.svg"); }
.tc-icon--build { --tc-icon: url("../icons/build.svg"); }
.tc-icon--handover { --tc-icon: url("../icons/handover.svg"); }

/* No empty caption gaps */
figcaption:empty,
.wp-element-caption:empty { display: none; }

/* 17. Testimonials with more presence ---------------------------------------------
   Slider (Group style "Testimonial slider"): one large display-serif quote at a time with a
   big brass opening mark and the name in small caps between brass rules. Works on cream,
   cream-deep or charcoal bands. Group style "Testimonials featured": one large quote beside
   two smaller ones (no JavaScript). */
.wp-block-quote.is-style-testimonial { position: relative; }
.wp-block-quote.is-style-testimonial::before {
	content: "\201C";
	content: "\201C" / "";
	display: block;
	height: 0.42em;
	font-family: var(--wp--preset--font-family--display);
	font-size: 4.5rem;
	font-weight: 500;
	line-height: 0.8;
	color: var(--tc-brass);
}
.wp-block-quote.is-style-testimonial cite {
	font-size: 1rem;
	font-variant: all-small-caps;
	font-weight: 600;
	letter-spacing: 0.14em;
	color: var(--tc-charcoal);
}
.tc-quotes-ready { padding-block: clamp(0.5rem, 2vw, 1.5rem); }
.tc-quotes-ready > .wp-block-quote { gap: 2rem; }
.tc-quotes-ready > .wp-block-quote::before { font-size: clamp(6rem, 4.5rem + 5vw, 9.5rem); height: 0.38em; }
.tc-quotes-ready > .wp-block-quote p {
	max-width: 46rem;
	font-size: clamp(1.6rem, 1.1rem + 2vw, 2.75rem);
	line-height: 1.28;
	text-wrap: balance;
}
.tc-quotes-ready > .wp-block-quote cite::after { content: ""; flex: 0 0 2rem; height: 1px; background: var(--tc-brass); }

/* On charcoal */
.has-charcoal-background-color .wp-block-quote.is-style-testimonial { background: var(--tc-charcoal-soft); border-color: var(--tc-ink-mid); }
.has-charcoal-background-color .tc-quotes-ready > .wp-block-quote { background: none; border: 0; }
.has-charcoal-background-color .wp-block-quote.is-style-testimonial p { color: var(--tc-cream); }
.has-charcoal-background-color .wp-block-quote.is-style-testimonial cite { color: var(--tc-cream-muted); }
.has-charcoal-background-color .wp-block-quote.is-style-testimonial::before { color: var(--tc-brass-light); }
.has-charcoal-background-color .wp-block-quote.is-style-testimonial cite::before,
.has-charcoal-background-color .wp-block-quote.is-style-testimonial cite::after { background: var(--tc-brass-light); }
.has-charcoal-background-color .tc-quotes-ready > .tc-slider-controls { background: var(--tc-charcoal-soft); border-color: var(--tc-ink-mid); color: var(--tc-cream); }
.has-charcoal-background-color .tc-slider-controls button:hover { background: var(--tc-cream); color: var(--tc-charcoal); }

/* Featured layout */
.wp-block-group.is-style-testimonials-featured { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
.wp-block-group.is-style-testimonials-featured > * { margin: 0 !important; }
@media (min-width: 900px) {
	.wp-block-group.is-style-testimonials-featured { grid-template-columns: 1.5fr 1fr; }
	.wp-block-group.is-style-testimonials-featured > :first-child { grid-row: span 2; }
}
.is-style-testimonials-featured > .wp-block-quote:first-child { padding: clamp(2rem, 4vw, 3.5rem); justify-content: center; }
.is-style-testimonials-featured > .wp-block-quote:first-child::before { font-size: clamp(5.5rem, 4rem + 4vw, 8rem); height: 0.4em; }
.is-style-testimonials-featured > .wp-block-quote:first-child p { font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.25rem); line-height: 1.3; }
.is-style-testimonials-featured > .wp-block-quote:not(:first-child) p { font-size: clamp(1.15rem, 1rem + 0.4vw, 1.35rem); }

/* 18. Guide navigation --------------------------------------------------------------
   tc-back-link (Paragraph holding one link): "All guides" with a back arrow.
   tc-more-guides (Group section) with tc-more-guides__list (Group of cards). */
.tc-back-link a {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: var(--tc-touch);
	color: var(--tc-charcoal);
	font-size: var(--wp--preset--font-size--sm);
	font-weight: 600;
	text-decoration: none;
}
.tc-back-link a::before { content: "\2190"; content: "\2190" / ""; color: var(--tc-brass); transition: transform var(--tc-base) var(--tc-ease); }
.tc-back-link a:is(:hover, :focus-visible) { color: var(--tc-brass); text-decoration: underline; text-underline-offset: 0.3em; }
.tc-back-link a:hover::before { transform: translateX(-4px); }
:is(.has-charcoal-background-color, .tc-hero__panel) .tc-back-link a { color: var(--tc-cream); }
.tc-more-guides { border-top: 1px solid var(--tc-line); }
.wp-block-group.tc-more-guides__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
	gap: 1.25rem;
}
.wp-block-group.tc-more-guides__list > * { margin: 0 !important; }
.tc-more-guides__list > .is-style-card { display: flex; flex-direction: column; }
.tc-more-guides__list > .is-style-card :is(h2, h3) { font-size: var(--wp--preset--font-size--xl); }
.tc-more-guides .tc-back-link { margin-block-start: var(--wp--preset--spacing--40); }
.tc-quotes-ready > .wp-block-quote cite { font-size: 1.2rem; }

/* Cards inside charcoal sections become charcoal-soft panels (as on the original site). */
.has-charcoal-background-color .wp-block-group.is-style-card { background: var(--tc-charcoal-soft); border-color: var(--tc-ink-mid); color: var(--tc-cream); }
.has-charcoal-background-color .wp-block-group.is-style-card p:not(.is-style-eyebrow, .tc-card__index) { color: var(--tc-cream-muted); }
.has-charcoal-background-color .wp-block-group.is-style-card .tc-card__link a { color: var(--tc-cream); text-decoration-color: var(--tc-brass-light); }
.has-charcoal-background-color .wp-block-group.is-style-card.tc-service-card::after { background: var(--tc-brass-light); }
.has-charcoal-background-color .tc-card__index { color: var(--tc-brass-light); }

/* 19. Planning project page (/project/<token>/, patterns tc-pp-*) -----------------------
   Classes from patterns/tc-pp-*.php: tc-project-head, tc-chips / tc-chip, tc-titleblock, tc-proposal-card,
   tc-timeline (vertical stages built from tc-step) and tc-like-grid. The 3 Oct 2026 preview drafts
   (tc-draft-note, the static viewer mock, the request form mock) were removed on 4 Oct 2026; the live
   request page rules are in section 14. */
/* Project header: an architect's title block beside the H1 */
.tc-project-head { border-bottom: 1px solid var(--tc-line); margin-block-start: 0 !important; }
.tc-project-head__layout { gap: clamp(2rem, 5vw, 5rem); }
.tc-project-head h1 { max-width: 12em; }
.tc-chips { gap: 0.5rem; margin-block-start: 1.75rem !important; }
.tc-chips > .tc-chip { margin: 0; }
.tc-chip {
	display: inline-flex;
	align-items: center;
	min-height: 2.25rem;
	padding: 0.35rem 0.95rem;
	background: var(--tc-white);
	border: 1px solid var(--tc-line);
	border-radius: 999px;
	color: var(--tc-charcoal);
	font-size: var(--wp--preset--font-size--sm);
	line-height: 1.3;
}
.tc-titleblock {
	background: var(--tc-white);
	border: 1px solid var(--tc-charcoal);
	border-radius: var(--tc-radius);
}
.tc-titleblock > * { margin: 0 !important; }
.tc-titleblock__row {
	position: relative;
	display: grid;
	grid-template-columns: 7.5rem minmax(0, 1fr);
	gap: 1rem;
	padding: 0.85rem 1.1rem;
	font-size: var(--wp--preset--font-size--sm);
	line-height: 1.45;
	color: var(--tc-charcoal);
}
.tc-titleblock__row + .tc-titleblock__row { border-top: 1px solid var(--tc-line); }
.tc-titleblock__row > span:first-child {
	padding-top: 0.1em;
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--tc-ink-muted);
}
.tc-titleblock__status { font-weight: 600; padding-right: 2.75rem; }
@media (max-width: 599px) {
	.tc-titleblock__row { grid-template-columns: 6.25rem minmax(0, 1fr); gap: 0.75rem; padding-inline: 0.9rem; }
	.tc-titleblock__row > span:first-child { letter-spacing: 0.1em; }
}
.tc-titleblock__status::after {
	content: "";
	position: absolute;
	top: calc(50% - 0.3rem);
	right: 1.2rem;
	width: 0.8rem;
	height: 0.42rem;
	border-left: 1.5px solid var(--tc-brass);
	border-bottom: 1.5px solid var(--tc-brass);
	transform: rotate(-45deg);
}

/* Approved proposal */
.tc-proposal-card > .wp-block-list { margin: 0; }
.wp-block-list.is-style-checklist.tc-proposal-list li { margin-block: 0; font-size: var(--wp--preset--font-size--lg); line-height: 1.45; }
.wp-block-list.is-style-checklist.tc-proposal-list li + li { padding-top: 0.85rem; margin-top: 0.85rem; border-top: 1px solid var(--tc-line); }
.wp-block-list.is-style-checklist.tc-proposal-list li + li::before { top: calc(0.85rem + 0.5em); }
.tc-proposal-card > .is-style-note { margin-block-start: 1.5rem !important; }

/* Timeline: seven stages down a line with brass markers; the first stage is ticked. */
.tc-timeline { position: relative; display: grid; gap: 0; }
.tc-timeline > * { margin: 0 !important; }
/* Each stage draws the line down to the next marker, so the line stops at the last one. */
.tc-timeline > .tc-step {
	padding: 0 0 2rem 3rem;
	border-top: 0;
	background: linear-gradient(var(--tc-line), var(--tc-line)) 0.65rem 1.475rem / 1px calc(100% - 1.375rem) no-repeat;
}
.tc-timeline > .tc-step:last-child { padding-bottom: 0; background: none; }
.tc-timeline > .tc-step::before {
	top: 0.1rem;
	left: 0;
	width: 1.375rem;
	height: 1.375rem;
	border: 1.5px solid var(--tc-brass);
	border-radius: 50%;
	background: var(--tc-cream-deep);
	box-sizing: border-box;
}
.tc-timeline > .tc-step.is-done::before { background: var(--tc-brass); }
.tc-timeline > .tc-step.is-done::after {
	content: "";
	position: absolute;
	top: 0.5rem;
	left: 0.42rem;
	width: 0.55rem;
	height: 0.3rem;
	border-left: 1.5px solid var(--tc-white);
	border-bottom: 1.5px solid var(--tc-white);
	transform: rotate(-45deg);
}
.tc-timeline .tc-step__num {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 600;
	letter-spacing: 0.16em;
	line-height: 1.6;
}
.tc-timeline .tc-step > * + * { margin-block-start: 0.4rem; }
.tc-timeline h3 { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.75rem; font-size: var(--wp--preset--font-size--xl); }
.tc-timeline .tc-step p.tc-timeline__done { color: var(--tc-white); }
.tc-timeline__done {
	display: flex;
	width: fit-content;
	align-items: center;
	padding: 0.2rem 0.65rem;
	background: var(--tc-brass);
	border-radius: 999px;
	color: var(--tc-white);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 600;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
}

/* Building projects like yours */
.wp-block-group.tc-like-grid { gap: clamp(1rem, 2vw, 1.5rem); }
.tc-like-grid > .tc-rail-card { height: 100%; }

@media (min-width: 1024px) {
	.wp-block-group.tc-like-grid.tc-like-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
/* Tablets: a lone third card spans the row, image beside the text. */
@media (min-width: 600px) and (max-width: 1023px) {
	.wp-block-group.tc-like-grid.tc-like-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.tc-like-grid > .tc-rail-card:nth-child(3):last-child {
		grid-column: 1 / -1;
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-auto-rows: min-content;
		column-gap: 0;
		padding: 0 !important;
	}
	.tc-like-grid > .tc-rail-card:nth-child(3):last-child > .tc-rail-card__image { grid-column: 1; grid-row: 1 / span 6; }
	.tc-like-grid > .tc-rail-card:nth-child(3):last-child > .tc-rail-card__image img { height: 100%; }
	.tc-like-grid > .tc-rail-card:nth-child(3):last-child > :not(.tc-rail-card__image) { grid-column: 2; margin-block-start: 0.85rem; }
	.tc-like-grid > .tc-rail-card:nth-child(3):last-child > .tc-rail-card__image + * { margin-block-start: 1.75rem; }
	.tc-like-grid > .tc-rail-card:nth-child(3):last-child > :last-child { padding-bottom: 1.5rem; }
}

/* 20. Feedback round, 5 Oct 2026 ------------------------------------------------
   Home hero on a timer, borough list, the directors, card buttons on phones. */

/* Home hero rotates on its timer for every visitor (KT). With reduced motion there is no zoom, only a gentle crossfade. */
@media (prefers-reduced-motion: reduce) {
	.tc-hero .tc-slider-ready > figure.wp-block-image {
		transition-property: opacity, visibility !important;
		transition-duration: 900ms, 0s !important;
		transition-delay: 0s, 900ms !important;
	}
	.tc-hero .tc-slider-ready > figure.wp-block-image.is-active { transition-delay: 0s, 0s !important; }
}

/* Where we work: the borough list inside the statement band */
.wp-block-group.tc-boroughs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 1.25rem; }
.tc-boroughs.tc-boroughs > * { margin: 0; }
.tc-borough { border-top: 1px solid var(--tc-brass-light); padding-top: 0.9rem; }
.tc-borough > * { margin: 0 !important; }
.tc-borough h3 { font-size: var(--wp--preset--font-size--lg); line-height: 1.2; margin-bottom: 0.4rem !important; }
.tc-borough p { color: var(--tc-muted); font-size: var(--wp--preset--font-size--sm); line-height: 1.55; }
@media (min-width: 782px) {
	.wp-block-group.tc-boroughs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.tc-statement__inner > .tc-boroughs { grid-column: 1 / -1; grid-template-columns: repeat(5, minmax(0, 1fr)); margin-top: 1rem; }
}

/* About: the directors (portraits 4:5; the placeholder holds the space until KT's photos arrive) */
.wp-block-group.tc-directors__grid { display: grid; grid-template-columns: 1fr; gap: 2.5rem; }
@media (min-width: 600px) {
	.wp-block-group.tc-directors__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.5rem, 4vw, 3.5rem); }
}
.tc-directors__grid.tc-directors__grid > * { margin: 0; }
.tc-director > * { margin: 0 !important; }
.tc-director > * + * { margin-top: 0.6rem !important; }
.tc-director > .tc-director__photo,
.tc-director > .wp-block-image { margin-bottom: 0.6rem !important; }
.tc-director__photo.is-style-image-placeholder { aspect-ratio: 4 / 5; }
.tc-director .wp-block-image img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--tc-radius); }
.tc-director h3 { font-size: var(--wp--preset--font-size--xl); }
.tc-director__role { color: var(--tc-brass); font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; }
@media (min-width: 1024px) {
	/* Desktop: portrait beside the name and bio, so the photos stay a sensible size. */
	.tc-director { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); grid-template-rows: auto auto 1fr; column-gap: clamp(1rem, 2vw, 1.75rem); align-content: start; }
	.tc-director > .tc-director__photo,
	.tc-director > .wp-block-image { grid-column: 1; grid-row: 1 / -1; margin: 0 !important; align-self: start; }
	.tc-director > :not(.tc-director__photo):not(.wp-block-image) { grid-column: 2; }
	.tc-director > * + * { margin-top: 0 !important; }
	.tc-director > .tc-director__role { margin-top: 0.35rem !important; }
	.tc-director > p:last-child { margin-top: 0.75rem !important; }
}

/* Cards on phones: buttons fill the card width, so stacked buttons line up (Services "Two ways to start", guide cards) */
@media (max-width: 599px) {
	.is-style-card .wp-block-buttons:has(> .wp-block-button:not(.is-style-arrow-link)) { flex-direction: column; align-items: stretch; }
	.is-style-card .wp-block-buttons > .wp-block-button:not(.is-style-arrow-link),
	.is-style-card .wp-block-buttons > .wp-block-button:not(.is-style-arrow-link) > .wp-block-button__link { width: 100%; }
	.is-style-card .wp-block-buttons > .wp-block-button:not(.is-style-arrow-link) > .wp-block-button__link { justify-content: center; text-align: center; }
}

/* ==========================================================================
   21. Example 3D model [tc_model_example] (Your plans in 3D, request page; D36)
   The viewer itself is styled by assets/css/planning-project.css, loaded with it.
   ========================================================================== */
.tc-model-example { scroll-margin-top: 6rem; }
.wp-block-group.tc-model-example > * { margin-block: 0; }
.wp-block-group.tc-model-example > * + * { margin-block-start: 1.25rem; }
.wp-block-group.tc-model-example > .tc-pp-viewer + * { margin-block-start: 1.5rem; }
.tc-section-head + .tc-model-example { margin-block-start: var(--wp--preset--spacing--40); }
.tc-steps + .tc-model-example { margin-block-start: var(--wp--preset--spacing--60); }
.tc-model-example + * { margin-block-start: var(--wp--preset--spacing--50); }
[id="example"] { scroll-margin-top: 6rem; }
/* The house sits in the middle of the poster: put "View in 3D" at the foot of the frame so it does not cover it. */
.tc-model-example .tc-pp-viewer__start { place-items: end center; padding-bottom: clamp(0.75rem, 3vw, 1.5rem); }
