/**
 * Robertson 2026 — component CSS.
 *
 * Colours, type sizes and spacing all come from theme.json custom properties, so
 * changing a token in the Styles panel changes it here too. Nothing in this file
 * hard-codes a brand colour.
 */

/* ---------------------------------------------------------------- Foundations */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
	/* Anchor sections land below the fixed header rather than under it. */
	scroll-padding-top: 176px;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

body {
	-webkit-font-smoothing: antialiased;
	overflow-x: clip;
}

::selection {
	background: var(--wp--preset--color--stone);
}

:focus-visible {
	outline: 2px solid var(--wp--preset--color--brass);
	outline-offset: 3px;
}

.rim-skip-link:focus {
	position: fixed;
	z-index: 999;
	top: 12px;
	left: 12px;
	padding: 12px 20px;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
}

/* -------------------------------------------------------------------- Header */

.rim-header {
	position: sticky;
	top: 0;
	z-index: 50;
	width: 100%;
	background: #000000;
	border-bottom: 1px solid rgba(200, 161, 91, 0.28);
}

.rim-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 28px;
	min-height: 88px;
	margin: 0 auto;
	padding: 0 40px;
	max-width: 1320px;
}

.rim-header__right {
	display: flex;
	align-items: center;
	gap: 24px;
}

.rim-header__brand figure {
	margin: 0;
}

.rim-header__brand img {
	display: block;
	height: 42px;
	width: auto;
}

/* The homepage keeps the transparent overlay, with the wordmark in the hero. */
body:has(.rim-hero) .rim-header {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	background: transparent;
	border-bottom: 0;
}

body:has(.rim-hero) .rim-header__brand {
	display: none;
}

body:has(.rim-hero) .rim-header__inner {
	justify-content: flex-end;
}

.rim-nav {
	display: flex;
	align-items: center;
	gap: 24px;
}

.rim-nav a {
	font-size: var(--wp--preset--font-size--nav);
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--wp--preset--color--cream);
	transition: color 160ms ease;
}

.rim-nav a:hover,
.rim-nav a:focus-visible,
.rim-nav [aria-current="page"] {
	color: var(--wp--preset--color--white);
}

/* Solid header on interior pages that do not open with a hero. */
.rim-header--solid {
	background: var(--wp--preset--color--black);
}

/* A nav sitting on a light ground. */
.rim-header--light .rim-nav a {
	color: var(--wp--preset--color--ink);
}

.rim-header--light .rim-nav a:hover {
	color: var(--wp--preset--color--brass-dark);
}

.rim-nav__cta a,
a.rim-nav__cta {
	padding: 11px 20px;
	background: var(--wp--preset--color--brass);
	color: var(--wp--preset--color--ink);
}

.rim-nav__cta a:hover,
a.rim-nav__cta:hover {
	background: #B08D57;
	filter: brightness(1.12);
	color: var(--wp--preset--color--ink);
}

/* --------------------------------------------------------------------- Hero */

.rim-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	min-height: var(--wp--custom--hero--min-height);
	background: var(--wp--preset--color--forest);
}

.rim-hero__media,
.rim-hero__media img,
.rim-hero__media video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.rim-hero__media img,
.rim-hero__media video {
	filter: saturate(0.8) contrast(1.03);
}

.rim-hero__scrim {
	position: absolute;
	inset: 0;
	background:
		linear-gradient(to bottom, rgba(0, 0, 0, 0.58) 0, rgba(0, 0, 0, 0.22) 170px, rgba(0, 0, 0, 0.1) 300px),
		linear-gradient(to top, rgba(0, 0, 0, 0.72) 0%, rgba(0, 0, 0, 0.44) 34%, rgba(0, 0, 0, 0.22) 68%, rgba(0, 0, 0, 0.14) 100%);
}

.rim-hero__body {
	position: relative;
	z-index: 2;
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 120px 40px 80px;
	text-align: center;
}

.rim-hero__lockup {
	width: min(440px, 62%);
	height: auto;
	display: block;
	margin: 0 auto 40px;
}

.rim-hero__line {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 300;
	font-size: clamp(20px, 2.1vw, 30px);
	letter-spacing: var(--wp--custom--tracking--display);
	text-transform: uppercase;
	line-height: var(--wp--custom--line-height--display);
	color: var(--wp--preset--color--white);
	max-width: 900px;
	margin: 0 auto 30px;
	text-wrap: pretty;
}

/* The line — label — line device under the hero lockup. */
.rim-flanked {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
	font-size: var(--wp--preset--font-size--eyebrow);
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.rim-flanked::before,
.rim-flanked::after {
	content: "";
	width: 44px;
	height: 1px;
	background: var(--wp--preset--color--gold);
}

/* -------------------------------------------------------------- Stat band */

.rim-stats {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: 1320px;
	margin: 0 auto;
	padding: 0 40px 56px;
}

.rim-stats__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--wp--custom--on-dark--hairline-strong);
}

.rim-stats__item {
	padding: 36px 32px 0;
	border-right: 1px solid var(--wp--custom--on-dark--hairline-strong);
}

.rim-stats__item:first-child {
	padding-left: 0;
}

.rim-stats__item:last-child {
	padding-right: 0;
	border-right: 0;
}

.rim-stats__figure {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--statistic);
	line-height: 1;
	color: var(--wp--preset--color--white);
	margin-bottom: 14px;
}

.rim-stats__label {
	font-size: var(--wp--preset--font-size--eyebrow-sm);
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--silver);
}

.rim-stats__note {
	padding-top: 22px;
	font-size: var(--wp--preset--font-size--eyebrow-sm);
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: #A8B0BA;
}

/* ------------------------------------------------------------ Split section */

.rim-split {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	align-items: stretch;
}

.rim-split__media {
	min-height: var(--wp--custom--split--min-height);
	background: var(--wp--preset--color--stone);
}

.rim-split__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: saturate(0.6);
}

.rim-split__text {
	display: flex;
	flex-direction: column;
	justify-content: center;
}

/* Reverse the pair without touching the markup order. */
.rim-split--reverse .rim-split__media {
	order: 2;
}

/* ------------------------------------------------------------------- Type */

.rim-eyebrow {
	font-size: var(--wp--preset--font-size--eyebrow);
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-dark);
	margin: 0 0 26px;
}

.rim-eyebrow--on-dark,
.rim-eyebrow--on-dark.has-brass-color,
.rim-band--dark .rim-eyebrow,
.rim-band--dark .rim-label,
.rim-split--dark .rim-eyebrow,
.rim-split--dark .rim-label {
	color: var(--wp--preset--color--silver);
}

.rim-label {
	font-size: var(--wp--preset--font-size--eyebrow-sm);
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-dark);
}

/* --------------------------------------------------------------- Link rows */

.rim-links {
	display: flex;
	flex-direction: column;
}

.rim-links a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 20px 0;
	border-bottom: 1px solid color-mix(in srgb, currentColor 70%, transparent);
	font-size: var(--wp--preset--font-size--link);
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	transition: color 160ms ease;
}

.rim-links a::after {
	content: "\2192";
	color: var(--wp--preset--color--brass-dark);
}

.rim-links a:hover {
	color: var(--wp--preset--color--brass-dark);
}

.rim-links--on-dark {
	border-top-color: var(--wp--custom--on-dark--hairline);
}

.rim-links--on-dark a {
	border-bottom-color: color-mix(in srgb, currentColor 30%, transparent);
	color: var(--wp--preset--color--white);
}

.rim-links--on-dark a::after,
.rim-links--on-dark a:hover {
	color: var(--wp--preset--color--brass-light);
}

/* Standalone arrow link with a hairline underneath. */
.rim-arrow {
	display: inline-flex;
	align-self: flex-start;
	align-items: center;
	gap: 12px;
	padding-bottom: 6px;
	border-bottom: 1px solid color-mix(in srgb, currentColor 70%, transparent);
	font-size: var(--wp--preset--font-size--nav);
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-dark);
}

.rim-arrow::after {
	content: "\2192";
}

/* ------------------------------------------------------------- Card grids */

.rim-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 40px;
}

.rim-card {
	display: block;
	padding-top: 26px;
	border-top: 1px solid var(--wp--preset--color--ink);
	color: inherit;
	transition: border-color 160ms ease;
}

.rim-card:hover {
	border-top-color: var(--wp--preset--color--brass-dark);
	color: inherit;
}

.rim-card__date {
	font-size: var(--wp--preset--font-size--eyebrow-sm);
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--grey-light);
}

/* --------------------------------------------------------------- Team grid */

.rim-team-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: auto;
	background: var(--wp--preset--color--stone);
}

.rim-team-grid img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 18%;
	filter: grayscale(1) contrast(1.03);
}

/* The wall reads as one piece in black and white, so the grid stays greyscale
   and a tile returns to colour under the pointer. Guarded on hover capability:
   a touch device has no hover state, and without the guard the first tap would
   latch one tile into colour with no way to release it. */
@media (hover: hover) {
	.rim-team-grid img {
		transition: filter 300ms ease;
	}

	.rim-team-grid figure:hover img {
		filter: contrast(1.03);
	}
}

@media (prefers-reduced-motion: reduce) {
	.rim-team-grid img {
		transition: none;
	}
}

/* ---------------------------------------------------------------- CTA band */

.rim-cta {
	position: relative;
	overflow: hidden;
	background: var(--wp--preset--color--forest);
	padding: var(--wp--preset--spacing--60) 0;
}

.rim-cta__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0.12;
	filter: saturate(0.6);
}

.rim-cta__wash {
	position: absolute;
	inset: 0;
	background: rgba(30, 70, 54, 0.9);
}

.rim-cta__inner {
	position: relative;
	z-index: 2;
	max-width: 1320px;
	margin: 0 auto;
	padding: 0 40px;
}

.rim-button-row {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 20px;
}

.rim-button {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	padding: 18px 32px;
	font-size: var(--wp--preset--font-size--nav);
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
	background: var(--wp--preset--color--brass);
	color: var(--wp--preset--color--ink);
}

.rim-button::after {
	content: "\2192";
}

.rim-button:hover {
	background: #B08D57;
	filter: brightness(1.12);
	color: var(--wp--preset--color--ink);
}

.rim-button--ghost {
	background: transparent;
	border: 1px solid rgba(200, 161, 91, 0.7);
	color: var(--wp--preset--color--cream);
}

.rim-button--ghost:hover {
	background: transparent;
	border-color: var(--wp--preset--color--brass);
	color: var(--wp--preset--color--white);
}

/* The ghost button was drawn for dark grounds: cream text on a brass hairline.
   On the white contact card that is white on white, so restate the pair for
   light surfaces. The two CTAs also stack rather than wrap raggedly, which
   only matters where the row is narrower than the buttons it holds. */
.rim-formcard .rim-button--ghost {
	color: var(--wp--preset--color--ink);
}

.rim-formcard .rim-button--ghost:hover {
	background: rgba(200, 161, 91, 0.10);
	border-color: var(--wp--preset--color--brass);
	color: var(--wp--preset--color--ink);
}

.rim-formcard .rim-button-row {
	flex-direction: column;
}

.rim-formcard .rim-button-row > * {
	width: 100%;
}

.rim-formcard .rim-button-row .rim-button {
	width: 100%;
	justify-content: space-between;
}

/* ----------------------------------------------------------------- Footer */

.rim-footer {
	background: var(--wp--preset--color--black);
	padding: 88px 0 40px;
	color: var(--wp--preset--color--cream);
}

.rim-footer__inner {
	max-width: 1320px;
	margin: 0 auto;
	padding: 0 40px;
}

.rim-footer__columns {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) repeat(4, minmax(0, 1fr));
	gap: 56px;
	padding-bottom: 64px;
	border-bottom: 1px solid rgba(230, 227, 222, 0.16);
}

.rim-footer__heading {
	font-size: var(--wp--preset--font-size--eyebrow-sm);
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-light);
	margin: 0 0 22px;
}

.rim-footer__links {
	display: flex;
	flex-direction: column;
	gap: 13px;
}

.rim-footer__links a,
.rim-footer p:not([class*="rim-"]) {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 300;
	color: var(--wp--preset--color--cream);
}

.rim-footer__links a:hover {
	color: var(--wp--preset--color--brass-light);
}

.rim-footer__brand img {
	display: block;
	height: 56px;
	width: auto;
	margin-bottom: 24px;
}

.rim-footer__address {
	color: var(--wp--preset--color--cream-dim);
	margin: 0;
}

.rim-footer__legal {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-start;
	gap: 24px 48px;
	padding-top: 36px;
}

.rim-footer__entity {
	max-width: 780px;
	margin: 0;
	font-size: var(--wp--preset--font-size--nav);
	color: var(--wp--preset--color--cream-dim);
}

.rim-footer__meta {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
	font-size: var(--wp--preset--font-size--eyebrow-sm);
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
}

.rim-footer__meta-links {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
}

.rim-footer__meta-links a {
	color: #A8B0BA;
}

/* ------------------------------------------------------------- Responsive */

@media (max-width: 1100px) {
	.rim-footer__columns {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 40px;
	}

	.rim-cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 900px) {
	.rim-split,
	.rim-split--reverse {
		grid-template-columns: minmax(0, 1fr);
	}

	.rim-split--reverse .rim-split__media {
		order: 0;
	}

	.rim-split__media {
		min-height: 420px;
	}

	.rim-split__text {
		padding: var(--wp--preset--spacing--50) 40px;
	}

	.rim-stats__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.rim-stats__item {
		padding: 28px 24px 28px 0;
		border-bottom: 1px solid var(--wp--custom--on-dark--hairline-strong);
	}

	.rim-stats__item:nth-child(2n) {
		border-right: 0;
		padding-right: 0;
		padding-left: 24px;
	}

	.rim-hero {
		min-height: 640px;
	}

	.rim-team-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 640px) {
	.rim-header__inner,
	.rim-hero__body,
	.rim-stats,
	.rim-cta__inner,
	.rim-footer__inner {
		padding-left: 24px;
		padding-right: 24px;
	}

	.rim-cards,
	.rim-footer__columns {
		grid-template-columns: minmax(0, 1fr);
	}

	/* The buttons already went full-width here, but their paragraph wrappers
	   are content-sized flex items, so a wrapped row left one button at 269px
	   beside another at 295px. Stack the row and stretch the wrappers so the
	   two CTAs line up. */
	.rim-button-row {
		flex-direction: column;
	}

	.rim-button-row > * {
		width: 100%;
	}

	.rim-button-row .rim-button {
		width: 100%;
		justify-content: space-between;
	}
}

/* ------------------------------------- Core navigation block inside header */

.rim-header .wp-block-navigation {
	gap: 24px;
}

.rim-header .wp-block-navigation .wp-block-navigation-item__content {
	font-size: var(--wp--preset--font-size--nav);
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--wp--preset--color--cream);
	text-decoration: none;
	transition: color 160ms ease;
}

.rim-header .wp-block-navigation .wp-block-navigation-item__content:hover,
.rim-header .wp-block-navigation .current-menu-item .wp-block-navigation-item__content {
	color: var(--wp--preset--color--white);
}

.rim-header--light .wp-block-navigation .wp-block-navigation-item__content {
	color: var(--wp--preset--color--ink);
}

.rim-header--light .wp-block-navigation .wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--brass-dark);
}

/* Mobile overlay */
.rim-header .wp-block-navigation__responsive-container-open svg,
.rim-header .wp-block-navigation__responsive-container-close svg {
	fill: currentColor;
}

/* Core ships `.wp-block-navigation:not(.has-background) .wp-block-navigation__
   responsive-container.is-menu-open { background-color: #fff }` at 0,4,0, which
   outranked this rule at 0,3,0 — so the open mobile menu was painting its white
   links onto a white panel and the navigation was invisible. Restated with the
   same :not() in the chain to clear it. */
.rim-header .wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open {
	background: var(--wp--preset--color--forest);
	padding: 32px 24px;
}

/* The open and close icons default to near-black, which disappears against the
   overlay header sitting on a dark hero and against the forest menu panel. */
.rim-header .wp-block-navigation__responsive-container-open,
.rim-header .wp-block-navigation__responsive-container-close {
	color: var(--wp--preset--color--cream);
}

.rim-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--link);
}

/* -------------------------------------------------- Content-page defaults */

/* The prose column was centred in the viewport while .rim-page-title above it
   is a 1320px container, so a post's body copy started 280px to the right of
   its own headline. Match the title's container and cap the measure on the
   children instead, which keeps the reading width and aligns the left edge. */
.rim-prose {
	max-width: 1320px;
	margin: 0 auto;
	padding: var(--wp--preset--spacing--60) 40px;
}

.rim-prose > * {
	max-width: 680px;
}

.rim-prose > * + * {
	margin-top: var(--wp--preset--spacing--30);
}

.rim-page-title {
	max-width: 1320px;
	margin: 0 auto;
	padding: var(--wp--preset--spacing--50) 40px var(--wp--preset--spacing--30);
}

/* ------------------------------- Cover-based hero (core/cover + rim-hero) */

.rim-hero.wp-block-cover {
	padding: 0;
	min-height: var(--wp--custom--hero--min-height);
}

.rim-hero.wp-block-cover > .wp-block-cover__image-background {
	filter: saturate(0.75) contrast(1.03) brightness(0.88);
}

/* The hero scrim is carried by the block's own gradient so it stays editable in
   the Cover block's overlay control. This is a fallback only. */
.rim-hero.wp-block-cover > .wp-block-cover__background:not([style*="gradient"]) {
	background:
		linear-gradient(to bottom, rgba(0, 0, 0, 0.62) 0, rgba(0, 0, 0, 0.34) 190px, rgba(0, 0, 0, 0.26) 340px),
		linear-gradient(to top, rgba(0, 0, 0, 0.80) 0%, rgba(0, 0, 0, 0.56) 34%, rgba(0, 0, 0, 0.34) 68%, rgba(0, 0, 0, 0.26) 100%);
}

.rim-hero.wp-block-cover > .wp-block-cover__inner-container {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	width: 100%;
	max-width: none;
	min-height: var(--wp--custom--hero--min-height);
}

.rim-hero .rim-hero__body {
	flex: 1;
}

.rim-hero .rim-hero__body > * {
	margin-left: auto;
	margin-right: auto;
}

/* --------------------------- Split section built on core/columns */

.rim-split.wp-block-columns {
	gap: 0;
	margin: 0;
	align-items: stretch;
}

.rim-split.wp-block-columns > .wp-block-column {
	flex: 0 0 50%;
	max-width: 50%;
	min-width: 0;
	padding: 0;
}

/* WordPress pads any block carrying a background colour; sections manage their own. */
.rim-split.wp-block-columns.has-background {
	padding: 0;
}

.rim-split .rim-split__media {
	min-height: var(--wp--custom--split--min-height);
	background: var(--wp--preset--color--stone);
	overflow: hidden;
}

.rim-split .rim-split__media figure,
.rim-split .rim-split__media .wp-block-image {
	margin: 0;
	height: 100%;
}

.rim-split .rim-split__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: saturate(0.6);
}

/* Text column keeps its generous padding regardless of column order. */
.rim-split.wp-block-columns > .wp-block-column.rim-split__text {
	padding: clamp(72px, 9vw, 120px) clamp(40px, 6vw, 110px);
}

.rim-split .rim-split__text {
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: var(--wp--preset--spacing--60) clamp(40px, 6vw, 110px);
}

.rim-split .rim-split__text > * {
	margin-top: 0;
	margin-bottom: 28px;
}

.rim-split .rim-split__text > :last-child {
	margin-bottom: 0;
}

/* Dark variant of the split section. */
.rim-split--dark {
	background: var(--wp--preset--color--forest);
}

.rim-split--dark h2,
.rim-split--dark h3 {
	color: var(--wp--preset--color--white);
}

.rim-split--dark p {
	color: #EFEDE9;
}

@media (max-width: 781px) {
	.rim-split.wp-block-columns > .wp-block-column {
		flex: 0 0 100%;
		max-width: 100%;
	}
}

/* ================================================================ Block gap
   WordPress injects a 32px top margin between stacked blocks. Robertson's
   components manage their own rhythm, so it is neutralised inside them and
   the intended spacing restored explicitly below. */

/* Full-bleed sections butt together. WordPress also injects a block gap between
   the top-level blocks — which put a band of page background above the hero and
   a gap between the closing CTA and the footer. */
.wp-site-blocks > *,
.wp-site-blocks > main > *,
.page-template-page-landing .entry-content > *,
.rim-panel > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* Grid and flex containers space themselves with `gap`, so their children take
   no block-gap margin. Only the start margin is suppressed — bottom margins are
   how the components express their own rhythm. */
.rim-stats > *, .rim-stats__grid > *, .rim-stats__item > *,
.rim-links > *, .rim-cards > *, .rim-card > *,
.rim-team-grid > *, .rim-people > *, .rim-person > *,
.rim-postgrid > *, .rim-post > *, .rim-tiles > *, .rim-tile > *,
.rim-trio > *, .rim-quad > *, .rim-cards2 > *, .rim-numlist > *,
.rim-txcards > *, .rim-txcard > *, .rim-routes > *, .rim-route > *,
.rim-ladder > *, .rim-ladder > * > *, .rim-rows > *,
.rim-numrows > *, .rim-numrows > * > *,
.rim-button-row > *, .rim-linkrow > *, .rim-filters > *, .rim-meta > *,
.rim-subnav__inner > *, .rim-header__inner > *, .rim-header__right > *,
.rim-duo > *, .rim-hero__body > *, .rim-section-head > *, .rim-secthead > *,
.rim-contact > *, .rim-featured > *, .rim-featured__text > *,
.rim-table__head > *, .rim-table__row > *,
.rim-pillar > *, .rim-card-dark > *, .rim-card-stone > *, .rim-clientbox > *,
.rim-sidecard > *, .rim-formcard > *, .rim-quote > *, .rim-intro > *,
.rim-band > * > *,
.rim-page-hero > .wp-block-cover__inner-container > *,
.rim-cta > .wp-block-cover__inner-container > *,
.rim-footer__columns > *, .rim-footer__columns > * > *, .rim-footer__links > *,
.rim-footer__meta > *, .rim-footer__meta-links > *, .rim-footer__legal > *,
.rim-footer__brand > * {
	margin-block-start: 0;
}

/* Spacing between a band's own stacked blocks, per the mockup. */
.rim-band .rim-duo + .rim-tiles { margin-block-start: 72px; }
.rim-band .rim-duo + .rim-quad { margin-block-start: 76px; }
.rim-band .rim-duo + .rim-cards2,
.rim-band .rim-duo + .rim-table { margin-block-start: 64px; }
.rim-band .rim-table + p { margin-block-start: 28px; }
.rim-band .rim-people + .rim-section-head { margin-block-start: 72px; }
.rim-band .rim-trio + .rim-arrow,
.rim-band .rim-numlist + .rim-arrow { margin-block-start: 44px; }
.rim-band .rim-txcards + p,
.rim-band .rim-postgrid + p { margin-block-start: 56px; }

/* Hero interiors */
.rim-page-hero .wp-block-cover__inner-container p + p { margin-block-start: 22px; }
.rim-page-hero .rim-hero-cta { margin-block-start: 44px; }

.rim-hero__body > .rim-hero__lockup { margin-bottom: 40px; }
.rim-hero__body > .rim-hero__line { margin-bottom: 30px; }
.rim-stats__item > .rim-stats__figure { margin-bottom: 14px; }

.rim-split__text > .rim-eyebrow { margin-bottom: 26px; }
.rim-split__text > h2 { margin-bottom: 28px; }
.rim-split__text > p { margin-bottom: 24px; }
.rim-split__text > .rim-links,
.rim-split__text > .rim-arrow { margin-top: 16px; }
.rim-split__text > :last-child { margin-bottom: 0; }

.rim-card > .rim-label { margin-bottom: 20px; }
.rim-card > h3 { margin-bottom: 16px; }
.rim-card > p { margin-bottom: 22px; }
.rim-card > .rim-card__date { margin-bottom: 0; }

.rim-cta .rim-eyebrow { margin-bottom: 26px; }
.rim-cta h2 { margin-bottom: 24px; max-width: 760px; }
.rim-cta p { margin-bottom: 44px; max-width: 640px; }

.rim-footer__brand > :first-child { margin-bottom: 24px; }
.rim-footer__heading { margin: 0 0 22px; }

/* ========================================================= Interior page hero */

.rim-page-hero.wp-block-cover {
	min-height: 660px;
	padding: 0;
	align-items: flex-end;
}

.rim-page-hero.wp-block-cover > .wp-block-cover__inner-container {
	width: 100%;
	max-width: 1320px;
	margin: 0 auto;
	padding: 180px 40px 96px;
}

.rim-page-hero h1 {
	font-size: clamp(42px, 4.2vw, 64px);
	line-height: 1.08;
	color: #FFFFFF;
	margin: 0 0 32px;
	max-width: 880px;
}

.rim-page-hero p:not([class*="rim-"]) {
	max-width: 700px;
	color: #FFFFFF;
	margin: 0;
}

.rim-rule-eyebrow {
	display: flex;
	align-items: center;
	gap: 16px;
	font-size: 11.5px;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-light);
	margin: 0 0 34px;
}

.rim-rule-eyebrow::before {
	content: "";
	width: 52px;
	height: 1px;
	background: var(--wp--preset--color--brass);
	flex: none;
}

.rim-hero-cta { margin-top: 44px; }

/* ====================================================== Sticky section sub-nav */

.rim-subnav {
	position: sticky;
	top: 88px;
	z-index: 40;
	background: rgba(250, 249, 247, 0.94);
	backdrop-filter: blur(8px);
	border-bottom: 1px solid var(--wp--preset--color--hairline);
}

.rim-subnav .rim-subnav__inner {
	max-width: 1320px;
	margin: 0 auto;
	padding: 0 40px;
	display: flex;
	align-items: center;
	gap: 44px;
}

.rim-subnav__inner p { margin: 0; }

/* The tab strip is a nowrap flex row with a 44px gap. On a 375px viewport the
   Wealth Management strip measured 545px and dragged the whole document into
   horizontal scroll; About Us and Investment Banking did the same. Let it wrap
   and tighten the gutters rather than hiding tabs off-screen. */
@media (max-width: 720px) {
	.rim-subnav .rim-subnav__inner {
		flex-wrap: wrap;
		gap: 10px 20px;
		padding: 0 24px;
	}

	/* The strip is sticky under an 88px header. Carrying the section label too
	   cost a third of a phone screen before any content showed, and it repeats
	   the eyebrow sitting in the hero directly beneath it. */
	.rim-subnav__label {
		display: none;
	}
}

.rim-subnav__label {
	font-family: var(--wp--preset--font-family--display);
	font-size: 12.5px;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--grey);
}

.rim-subnav__inner a {
	display: block;
	padding: 22px 2px;
	font-size: 13px;
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
	color: var(--wp--preset--color--ink);
	border-bottom: 2px solid transparent;
}

.rim-subnav__inner a:hover,
.rim-subnav__inner a.is-active {
	border-bottom-color: var(--wp--preset--color--brass);
	color: var(--wp--preset--color--ink);
}

.rim-panel[hidden] { display: none !important; }

/* ============================================================= Content bands */

.rim-band { padding: clamp(72px, 9vw, 120px) 40px; }
.rim-band > * { max-width: 1240px; margin-left: auto; margin-right: auto; }

.rim-duo {
	display: grid;
	grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.25fr);
	gap: 96px;
	align-items: start;
}

.rim-duo > * { min-width: 0; }
.rim-duo--center { align-items: center; }
.rim-duo--end { align-items: end; }
.rim-duo--even { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.rim-duo--wide { grid-template-columns: minmax(280px, 0.8fr) minmax(0, 1.35fr); }
.rim-duo--today { grid-template-columns: minmax(280px, 0.85fr) minmax(0, 1.3fr); }
.rim-duo--07 { grid-template-columns: minmax(260px, 0.7fr) minmax(0, 1.4fr); }
.rim-duo--12 { grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); }
.rim-duo--125 { grid-template-columns: minmax(280px, 0.85fr) minmax(0, 1.25fr); }

.rim-trio {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 40px;
}

@media (max-width: 900px) {
	.rim-duo,
	.rim-duo--even,
	.rim-duo--wide,
	.rim-duo--today,
	.rim-duo--07,
	.rim-duo--12,
	.rim-duo--125,
	.rim-trio {
		grid-template-columns: minmax(0, 1fr);
		gap: 48px;
	}
}

.rim-intro { max-width: 760px; margin-bottom: 72px; }
.rim-intro h2, .rim-intro p { margin: 0; }
.rim-intro .rim-eyebrow { margin-bottom: 26px; }
.rim-intro h2 + p { margin-top: 24px; }
.rim-linkrow { display: flex; flex-wrap: wrap; gap: 32px; }

.rim-band--dark h2,
.rim-band--dark h3 { color: #FFFFFF; }
.rim-band--dark p:not([class*="rim-"]) { color: #EFEDE9; }
.rim-band--dark .rim-eyebrow { color: var(--wp--preset--color--silver); }

/* ================================================================== Framed art */

.rim-band figure.wp-block-image { margin: 0; }

.rim-figure-43,
.rim-figure-portrait {
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--wp--preset--color--stone);
	display: block;
}

.rim-figure-54 {
	aspect-ratio: 5 / 4;
	overflow: hidden;
	background: var(--wp--preset--color--stone);
	display: block;
}

.rim-figure-43 img,
.rim-figure-54 img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: saturate(0.6);
	display: block;
}

.rim-figure-portrait img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 8%;
	filter: contrast(1.03);
	display: block;
}

.rim-caption {
	font-size: 13px;
	line-height: 1.6;
	color: var(--wp--preset--color--grey-light);
	margin: 14px 0 0;
}

/* ==================================================== Pillars, rows, quotes */

.rim-pillar { padding: 44px 40px 48px; }

.rim-pillar__numeral {
	font-family: var(--wp--preset--font-family--display);
	font-size: 13px;
	color: var(--wp--preset--color--brass-dark);
	margin: 0 0 22px;
}

.rim-pillar h3 {
	font-size: 21px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--forest);
	margin: 0 0 14px;
}

.rim-pillar p:not([class*="rim-"]) { margin: 0; color: var(--wp--preset--color--grey); }

.rim-rows > * { padding: 34px 0; border-bottom: 1px solid rgba(200, 161, 91, 0.55); }
.rim-rows > *:first-child { padding-top: 0; }
.rim-rows > *:last-child { border-bottom: 0; padding-bottom: 0; }

.rim-rows h3 {
	font-size: 19px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #FFFFFF;
	margin: 0 0 14px;
}

.rim-rows p:not([class*="rim-"]) { margin: 0; max-width: 620px; color: #EFEDE9; }
.rim-rows--light h3 { color: var(--wp--preset--color--ink); }
.rim-rows--light p:not([class*="rim-"]) { color: var(--wp--preset--color--grey); }

.rim-quote { border-left: 2px solid var(--wp--preset--color--brass); padding: 4px 0 4px 24px; }

.rim-quote p:not([class*="rim-"]) {
	font-family: var(--wp--preset--font-family--display);
	font-size: 30px;
	line-height: 1.4;
	color: var(--wp--preset--color--ink);
	margin: 0;
}

.rim-quote--sm p { font-size: 18px; line-height: 1.6; }
.rim-quote--lg p { font-size: 20px; line-height: 1.55; }

.rim-quote__label {
	font-size: 11px;
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	margin: 0 0 10px;
}

/* ================================================================ People grid */

.rim-section-head { display: flex; align-items: baseline; gap: 20px; margin-bottom: 44px; }
.rim-section-head p { margin: 0; }
.rim-section-head::after { content: ""; flex: 1; height: 1px; background: var(--wp--preset--color--hairline); }

.rim-people {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 44px 32px;
}

@media (max-width: 1100px) { .rim-people { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 640px) { .rim-people { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.rim-person { display: flex; flex-direction: column; }

.rim-person figure {
	margin: 0 0 20px;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background: var(--wp--preset--color--stone);
}

.rim-person img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.03); }

/* Same treatment as the home grid: the team wall reads as one piece in black
   and white and a face returns to colour under the pointer. Guarded on hover
   capability so a tap on a touch device cannot latch one card into colour. */
@media (hover: hover) {
	.rim-person img {
		transition: filter 300ms ease;
	}

	.rim-person figure:hover img {
		filter: contrast(1.03);
	}
}

@media (prefers-reduced-motion: reduce) {
	.rim-person img {
		transition: none;
	}
}
.rim-person h3 { font-size: 19px; margin: 0 0 8px; }
.rim-person > p:not([class*="rim-"]) { font-size: 15px; line-height: 1.55; color: var(--wp--preset--color--grey); margin: 0 0 14px; }

.rim-person .rim-bio {
	margin-top: auto;
	font-size: 11.5px;
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
}

/* ================================================ Wealth Management components */

.rim-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px 36px; }
@media (max-width: 900px) { .rim-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.rim-tile figure { margin: 0 0 20px; aspect-ratio: 4 / 3; overflow: hidden; background: var(--wp--preset--color--ink); }
.rim-tile img { width: 100%; height: 100%; object-fit: cover; filter: saturate(0.6); display: block; }

.rim-tile h3 {
	font-size: 19px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	line-height: 1.45;
	color: #FFFFFF;
	margin: 0;
}

.rim-trio--rule > * { border-top: 1px solid var(--wp--preset--color--brass); padding-top: 28px; }
.rim-trio--rule h3 { font-size: 19px; letter-spacing: 0.12em; text-transform: uppercase; line-height: 1.45; margin: 0 0 16px; }
.rim-trio--rule p { margin: 0; color: var(--wp--preset--color--grey); }
.rim-trio--plain h3 { font-size: 23px; letter-spacing: 0; text-transform: none; margin: 0 0 16px; }

.rim-ladder > * {
	display: grid;
	grid-template-columns: 88px 1fr;
	gap: 0 32px;
	padding: 40px 0;
	border-bottom: 1px solid rgba(200, 161, 91, 0.55);
}

.rim-ladder > *:first-child { padding-top: 0; }
.rim-ladder > *:last-child { border-bottom: 0; padding-bottom: 0; }

.rim-ladder__num {
	font-family: var(--wp--preset--font-family--display);
	font-size: 52px;
	line-height: 0.9;
	color: rgba(122, 93, 40, 0.42);
	margin: 0;
}

.rim-ladder h3 { font-size: 19px; letter-spacing: 0.12em; text-transform: uppercase; line-height: 1.45; margin: 0 0 14px; }
.rim-ladder p:not([class*="rim-"]) { margin: 0; max-width: 560px; color: var(--wp--preset--color--grey); }

.rim-cards2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px; }
@media (max-width: 900px) { .rim-cards2 { grid-template-columns: minmax(0, 1fr); } }

.rim-card-stone { background: var(--wp--preset--color--stone); padding: 52px 48px 56px; }
.rim-card-stone p:not([class*="rim-"]) { margin: 0; color: var(--wp--preset--color--charcoal); }

.rim-quad { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 72px; }
@media (max-width: 900px) { .rim-quad { grid-template-columns: minmax(0, 1fr); } }
.rim-quad > * { border-top: 1px solid rgba(200, 161, 91, 0.55); padding: 28px 0 36px; }
.rim-quad h3 { font-size: 19px; letter-spacing: 0.12em; text-transform: uppercase; line-height: 1.45; margin: 0 0 14px; }
.rim-quad p:not([class*="rim-"]) { margin: 0; }
.rim-quad--ink > * { border-top-color: var(--wp--preset--color--ink); }
.rim-quad--ink h3 { font-size: 23px; letter-spacing: 0; text-transform: none; color: var(--wp--preset--color--charcoal); }

/* ============================================== Investment Banking components */

.rim-numlist { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 64px; }
@media (max-width: 900px) { .rim-numlist { grid-template-columns: minmax(0, 1fr); gap: 48px; } }

.rim-numlist__num {
	font-family: var(--wp--preset--font-family--display);
	font-size: 13px;
	color: var(--wp--preset--color--brass);
	margin: 0 0 18px;
}

.rim-numlist h3 { font-size: 23px; margin: 0 0 16px; }
.rim-numlist p:not([class*="rim-"]) { margin: 0; color: var(--wp--preset--color--grey); }

.rim-card-dark { background: rgba(255, 255, 255, 0.05); padding: 48px 44px 52px; }

.rim-card-dark h3 {
	font-size: 19px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	line-height: 1.45;
	color: var(--wp--preset--color--brass-light);
	margin: 0 0 18px;
}

.rim-card-dark p:not([class*="rim-"]) { margin: 0; color: #EFEDE9; }

.rim-numrows > * {
	display: grid;
	grid-template-columns: 64px 1fr;
	gap: 0 28px;
	padding: 34px 0;
	border-bottom: 1px solid var(--wp--preset--color--hairline);
}

.rim-numrows > *:first-child { padding-top: 0; }
.rim-numrows > *:last-child { border-bottom: 0; padding-bottom: 0; }

.rim-numrows__num {
	font-family: var(--wp--preset--font-family--display);
	font-size: 15px;
	color: var(--wp--preset--color--brass-dark);
	padding-top: 4px;
	margin: 0;
}

.rim-numrows h3 { font-size: 23px; margin: 0 0 12px; }
.rim-numrows p:not([class*="rim-"]) { margin: 0; max-width: 640px; color: var(--wp--preset--color--grey); }

.rim-table { background: var(--wp--preset--color--paper); }

.rim-table__head,
.rim-table__row {
	display: grid;
	grid-template-columns: minmax(200px, 0.85fr) minmax(0, 1.5fr) minmax(0, 1fr);
	gap: 0 40px;
}

.rim-table__head { padding: 20px 40px; background: var(--wp--preset--color--ink); }

.rim-table__head p {
	margin: 0;
	font-size: 11px;
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-light);
}

.rim-table__row { padding: 34px 40px; border-bottom: 1px solid var(--wp--preset--color--hairline); }
.rim-table__row:last-child { border-bottom: 0; }
.rim-table h3 { font-size: 20px; margin: 0 0 10px; }
.rim-table p:not([class*="rim-"]) { margin: 0 0 10px; color: var(--wp--preset--color--grey); }
.rim-table p:not([class*="rim-"]):last-child { margin-bottom: 0; }

.rim-table__dur {
	font-size: 13px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-dark);
}

@media (max-width: 900px) {
	.rim-table__head { display: none; }
	.rim-table__row { grid-template-columns: minmax(0, 1fr); gap: 20px; }
}

.rim-note { max-width: 820px; margin: 28px 0 0; color: var(--wp--preset--color--grey); }
.rim-footnote { font-size: 13px; color: var(--wp--preset--color--grey-light); max-width: 820px; margin: 0; }

.rim-txcards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
@media (max-width: 900px) { .rim-txcards { grid-template-columns: minmax(0, 1fr); } }

.rim-txcard {
	border: 1px solid var(--wp--preset--color--hairline);
	background: #FFFFFF;
	padding: 40px 36px 36px;
	display: flex;
	flex-direction: column;
	gap: 22px;
	min-height: 340px;
}

.rim-txcard figure { margin: 0; }
.rim-txcard img { max-height: 44px; width: auto; object-fit: contain; }
.rim-txcard h3 { font-size: 23px; line-height: 1.3; margin: 0; }
.rim-txcard p:not([class*="rim-"]) { margin: 0; color: var(--wp--preset--color--grey); }

.rim-txcard__tag {
	margin-top: auto;
	padding-top: 22px;
	border-top: 1px solid var(--wp--preset--color--hairline);
	font-size: 11px;
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-dark);
}

.rim-txcard--dark { background: var(--wp--preset--color--forest); border: 0; }
.rim-txcard--dark h3 { color: #FFFFFF; }
.rim-txcard--dark p:not([class*="rim-"]) { color: #EFEDE9; }
.rim-txcard--dark .rim-eyebrow { color: var(--wp--preset--color--silver); margin: 0; }
.rim-txcard--dark .rim-txcard__tag { border-top-color: rgba(200, 161, 91, 0.55); color: var(--wp--preset--color--silver); }

/* ================================================================== Resources */

.rim-featured { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); background: var(--wp--preset--color--stone); }
@media (max-width: 900px) { .rim-featured { grid-template-columns: minmax(0, 1fr); } }

.rim-featured__text { padding: 72px clamp(36px, 4vw, 72px); display: flex; flex-direction: column; justify-content: center; }
.rim-featured__text h2 { font-size: clamp(28px, 2.6vw, 38px); line-height: 1.18; margin: 0 0 24px; }
.rim-featured__text p:not([class*="rim-"]) { max-width: 560px; color: var(--wp--preset--color--grey); margin: 0 0 36px; }
.rim-featured__media { min-height: 420px; background: var(--wp--preset--color--ink); }
.rim-featured__media figure { margin: 0; height: 100%; }
.rim-featured__media img { width: 100%; height: 100%; object-fit: cover; filter: saturate(0.6); display: block; }

.rim-meta {
	display: flex;
	align-items: center;
	gap: 14px;
	font-size: 11px;
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--grey-light);
	margin: 0 0 28px;
}

.rim-filters { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding-bottom: 22px; border-bottom: 1px solid var(--wp--preset--color--hairline); }
.rim-filters p { margin: 0; }

.rim-filters a {
	display: inline-block;
	padding: 11px 20px;
	border: 1px solid var(--wp--preset--color--rule);
	border-bottom-width: 2px;
	font-size: 12.5px;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--ink);
}

.rim-filters a:hover { border-color: var(--wp--preset--color--brass-dark); }
.rim-filters a.is-active { border-bottom-color: var(--wp--preset--color--brass); }

.rim-filters__label {
	font-size: 11px;
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--grey-light);
	margin-right: 10px;
}

.rim-secthead { display: flex; align-items: baseline; gap: 20px; margin-bottom: 44px; }
.rim-secthead h2 { font-size: 26px; margin: 0; }
.rim-secthead p { margin: 0; }
.rim-secthead::after { content: ""; flex: 1; height: 1px; background: var(--wp--preset--color--hairline); order: 1; }
.rim-secthead > p.rim-label { order: 2; }
.rim-band--dark .rim-secthead::after { background: rgba(230, 227, 222, 0.2); }

.rim-postgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 44px 40px; }
@media (max-width: 900px) { .rim-postgrid { grid-template-columns: minmax(0, 1fr); } }

.rim-post { border-top: 1px solid var(--wp--preset--color--hairline); padding-top: 26px; }
.rim-post .rim-label { margin: 0 0 18px; }
.rim-post h3 { font-size: 23px; line-height: 1.3; margin: 0 0 14px; }
.rim-post > p:not([class*="rim-"]) { font-size: 15px; margin: 0 0 22px; color: var(--wp--preset--color--grey); }

/* ---- Query-loop cards -------------------------------------------------

   The hand-authored placeholder cards used a bare <a> inside the h3 and plain
   text for the category, so two things the block versions do were never
   styled for. core/post-title and core/post-terms emit real links, which fall
   to the global link colour (brass-dark) and turn a white title brown on the
   dark band. And core/post-excerpt nests its paragraph inside a wrapper div,
   so the card's own .rim-post > p rule never reaches it. */

.rim-post h3 a,
.rim-post .rim-label a,
.rim-card h3 a,
.rim-card .rim-label a {
	color: inherit;
	text-decoration: none;
}

.rim-post h3 a:hover,
.rim-post .rim-label a:hover,
.rim-card h3 a:hover,
.rim-card .rim-label a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.rim-post .wp-block-post-excerpt {
	margin: 0 0 22px;
}

.rim-post .wp-block-post-excerpt__excerpt {
	font-size: 15px;
	margin: 0;
	color: var(--wp--preset--color--grey);
}

.rim-band--dark .rim-post .wp-block-post-excerpt__excerpt {
	color: #EFEDE9;
}

.rim-card .wp-block-post-excerpt {
	margin: 0 0 22px;
}

.rim-card .wp-block-post-excerpt__excerpt {
	font-size: var(--wp--preset--font-size--small);
	margin: 0;
	color: var(--wp--preset--color--grey);
}

.rim-post__date {
	font-size: 11px;
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--grey-light);
	margin: 0;
}

.rim-band--dark .rim-post { border-top-color: rgba(230, 227, 222, 0.2); }
.rim-band--dark .rim-post .rim-label { color: var(--wp--preset--color--silver); }
.rim-band--dark .rim-post h3 { color: #FFFFFF; }
.rim-band--dark .rim-post > p:not([class*="rim-"]) { color: #EFEDE9; }
.rim-band--dark .rim-post__date { color: #A8B0BA; }

.rim-filter-section[hidden] { display: none !important; }

.rim-subscribe__row { display: flex; flex-wrap: wrap; gap: 16px; }

.rim-subscribe input {
	flex: 1 1 260px;
	padding: 15px 16px;
	border: 1px solid var(--wp--preset--color--rule);
	background: #FFFFFF;
	font-family: inherit;
	font-size: 15px;
	font-weight: 300;
	color: var(--wp--preset--color--ink);
}

/* ==================================================================== Contact */

.rim-routes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.rim-route { background: var(--wp--preset--color--stone); padding: 40px 36px 44px; display: flex; flex-direction: column; }
.rim-route h3 { font-size: 23px; margin: 0 0 14px; }
.rim-route p:not([class*="rim-"]) { margin: 0 0 26px; color: var(--wp--preset--color--grey); }

.rim-route__sel {
	margin-top: auto;
	font-size: 12.5px;
	letter-spacing: var(--wp--custom--tracking--nav);
	text-transform: uppercase;
	color: var(--wp--preset--color--brass-dark);
}

.rim-contact { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); gap: 80px; align-items: start; }
@media (max-width: 900px) { .rim-contact, .rim-routes { grid-template-columns: minmax(0, 1fr); } }

.rim-formcard { background: #FFFFFF; border: 1px solid var(--wp--preset--color--hairline); padding: 56px clamp(32px, 3.5vw, 56px); }
.rim-formcard h2 { font-size: 30px; margin: 0 0 12px; }
.rim-formcard > p:not([class*="rim-"]) { color: var(--wp--preset--color--grey); max-width: 520px; margin: 0 0 40px; }

.rim-form label {
	display: block;
	font-size: 11px;
	letter-spacing: var(--wp--custom--tracking--label);
	text-transform: uppercase;
	color: var(--wp--preset--color--grey-light);
	margin-bottom: 10px;
}

.rim-form input,
.rim-form textarea {
	width: 100%;
	padding: 15px 16px;
	border: 1px solid var(--wp--preset--color--hairline);
	background: #FFFFFF;
	font-family: inherit;
	font-size: 15px;
	font-weight: 300;
	color: var(--wp--preset--color--ink);
}

.rim-form textarea { line-height: 1.65; resize: vertical; }
.rim-form input:focus,
.rim-form textarea:focus { border-color: var(--wp--preset--color--brass); background: #FFFFFF; }

.rim-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; margin-bottom: 24px; }
@media (max-width: 640px) { .rim-form__grid { grid-template-columns: minmax(0, 1fr); } }
.rim-form__block { margin-bottom: 24px; }

.rim-chips { display: flex; flex-wrap: wrap; gap: 10px; }
.rim-chips span { padding: 12px 18px; border: 1px solid var(--wp--preset--color--rule); font-size: 13px; color: var(--wp--preset--color--ink); }
.rim-chips span.is-active { border-bottom: 2px solid var(--wp--preset--color--brass); }

.rim-consent { display: flex; align-items: flex-start; gap: 12px; margin: 28px 0; font-size: 15px; font-weight: 300; line-height: 1.7; color: var(--wp--preset--color--grey); }
.rim-consent input { width: 17px; height: 17px; margin: 2px 0 0; accent-color: var(--wp--preset--color--brass-dark); flex: none; }

.rim-form__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; }
.rim-form__foot p { font-size: 12.5px; color: var(--wp--preset--color--grey-light); margin: 0; max-width: 300px; }
.rim-form__foot button { border: 0; cursor: pointer; font-family: inherit; }

.rim-sidecard { border-top: 1px solid var(--wp--preset--color--ink); padding-top: 26px; margin-bottom: 34px; }
.rim-sidecard--light { border-top-color: var(--wp--preset--color--hairline); }
.rim-sidecard--light > * + * { margin-top: 18px; }
.rim-sidecard p:not([class*="rim-"]) { color: var(--wp--preset--color--grey); margin: 0; }
.rim-sidecard .rim-label { margin: 0 0 16px; }

.rim-address {
	font-family: var(--wp--preset--font-family--display);
	font-size: 20px;
	line-height: 1.5;
	color: var(--wp--preset--color--ink);
	margin: 0 0 8px;
}

.rim-clientbox { background: var(--wp--preset--color--forest); padding: 34px 32px 36px; }
.rim-clientbox p:not([class*="rim-"]) { color: #EFEDE9; margin: 0 0 24px; }

.rim-clientbox .rim-eyebrow {
	color: var(--wp--preset--color--brass-light);
	margin: 0 0 16px;
	font-size: 11px;
	letter-spacing: var(--wp--custom--tracking--label);
}

/* ===================================================== Nested text stacks
   The block-gap suppression above reaches a container's children but not its
   grandchildren, so two-level components (a column holding a heading and body
   copy) were still receiving WordPress's 32px. */

.rim-duo > * > *,
.rim-trio > * > *,
.rim-quad > * > *,
.rim-rows > * > *,
.rim-cards2 > * > *,
.rim-numlist > * > *,
.rim-postgrid > * > *,
.rim-people > * > *,
.rim-routes > * > *,
.rim-txcards > * > *,
.rim-tiles > * > *,
.rim-contact > * > *,
.rim-featured > * > *,
.rim-sidecard > * > * {
	margin-block-start: 0;
}

/* Rhythm inside a two-column text stack, per the mockup. */
.rim-duo h2 + * { margin-block-start: 28px; }
.rim-duo h2 + .wp-block-image { margin-block-start: 32px; }
.rim-duo p + p { margin-block-start: 26px; }
.rim-duo p + .rim-quote { margin-block-start: 44px; }
.rim-duo p + .rim-arrow,
.rim-duo p + .rim-linkrow,
.rim-duo p + .rim-rows { margin-block-start: 40px; }
.rim-duo figure + .rim-caption { margin-block-start: 14px; }

/* Two rules kept from the former override blocks: these express real intent
   rather than working around specificity. */

.rim-meta p {
	color: inherit;
	font-size: inherit;
	letter-spacing: inherit;
	margin: 0;
	max-width: none;
}

.rim-page-hero .wp-block-cover__inner-container p + p { color: #FFFFFF; }

/* ============================================ Sticky header containing block
   WordPress wraps every template part in a container. A sticky element can only
   stick within its parent's box, and that wrapper is only as tall as the header
   itself — so the header unstuck the moment it scrolled past its own height.
   Removing the wrapper's box promotes the header to a child of .wp-site-blocks,
   which spans the page. */

.wp-block-template-part:has(> .rim-header),
.wp-site-blocks > .wp-block-template-part:first-child {
	display: contents;
}

/* ================================================= Figure margins in components
   `.rim-band figure.wp-block-image { margin: 0 }` strips the block editor's
   default figure margin, but it also outranked the component rules that give a
   figure its intended spacing. These restate them at matching specificity. */

.rim-team-grid figure.wp-block-image { margin: 0; aspect-ratio: 1 / 1; overflow: hidden; }
.rim-person figure.wp-block-image { margin: 0 0 20px; }
.rim-tile figure.wp-block-image { margin: 0 0 20px; }
.rim-contact figure.rim-figure-43 { margin: 0 0 40px; }

/* ================================================== Interior hero treatment
   The gradient scrim was rendering, but the photograph beneath it was not
   getting the mockup's treatment: the image sits at 92% over a forest ground,
   slightly desaturated. Without those the hero reads washed out and the scrim
   appears to be missing. */

.rim-page-hero.wp-block-cover {
	background-color: var(--wp--preset--color--forest);
}

.rim-page-hero.wp-block-cover > .wp-block-cover__image-background {
	opacity: 0.92;
	filter: saturate(0.8) contrast(1.03);
}

/* ======================================================== Closing CTA band
   WordPress's constrained layout centres every child on its own max-width, so
   the headline (760px) and paragraph (640px) were each centred independently
   while the buttons sat at the true left edge — a staircase. The container is
   constrained instead, and its children align left inside it. */

.rim-cta > .wp-block-cover__inner-container {
	max-width: 1240px;
	margin-inline: auto;
}

.rim-cta > .wp-block-cover__inner-container > * {
	max-width: none;
	margin-inline: 0;
}

.rim-cta > .wp-block-cover__inner-container > h2 { max-width: 760px; }
.rim-cta > .wp-block-cover__inner-container > p { max-width: 640px; }

/* The sidebar's Client Login is the mockup's smaller button. */
.rim-clientbox .rim-button { padding: 15px 24px; }


/* Portrait headshots: the nine 3:4 sources sit in 1:1 tiles, and a centre crop
   cuts the crown of the head on every one of them. Lift the window.
   Home's .rim-team-grid uses 18% on the same photos; 18% still grazes the hair
   on team-01 and team-14, so About Us uses 12%. team-15 keeps its own 8%. */
.rim-person img { object-position: 50% 12%; }


/* Block-level colour classes ship with !important; dark-ground eyebrows still win. */
.rim-eyebrow--on-dark.has-brass-color,
.rim-band--dark .rim-eyebrow.has-brass-color,
.rim-split--dark .rim-eyebrow.has-brass-color {
	color: var(--wp--preset--color--silver) !important;
}

/* Link underlines render as a true hairline where the display allows it. */
@media (min-resolution: 2dppx) {
	.rim-arrow,
	.rim-links a {
		border-bottom-width: 0.5px;
	}
}

/* The rule above the first link row belongs to the link, so it matches its colour. */
.rim-links > p:first-child > a {
	border-top: 1px solid color-mix(in srgb, currentColor 70%, transparent);
}
.rim-links--on-dark > p:first-child > a {
	border-top-color: color-mix(in srgb, currentColor 30%, transparent);
}
@media (min-resolution: 2dppx) {
	.rim-links > p:first-child > a {
		border-top-width: 0.5px;
	}
}

/* The anniversary lockup keeps its gold whatever colour the block carries. */
.rim-flanked[class*="has-"][class*="-color"] {
	color: var(--wp--preset--color--gold) !important;
}

/* ============================================================ Team bio cards
   Pop-up bio card for .rim-person tiles that carry a .rim-person__bio list.
   Behaviour lives in assets/js/rim-interactive.js (initBioCards). Added 24 Sep 2026. */
.rim-person__bio,
.rim-person__links { display: none !important; }

.rim-person.is-bio { cursor: pointer; position: relative; }
.rim-person.is-bio:focus-visible { outline: 2px solid var(--wp--preset--color--gold, #B08D57); outline-offset: 6px; }
.rim-person__cue {
	margin: 10px 0 0 !important;
	font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase;
	color: var(--wp--preset--color--gold, #B08D57);
	opacity: 0; transform: translateY(-2px);
	transition: opacity 200ms ease, transform 200ms ease;
}
.rim-person.is-bio:hover .rim-person__cue,
.rim-person.is-bio:focus-visible .rim-person__cue { opacity: 1; transform: none; }
@media (hover: none) { .rim-person__cue { opacity: 1; transform: none; } }
@media (hover: hover) { .rim-person.is-bio:hover img { filter: contrast(1.03); } }

.rim-person__monogram {
	margin: 0 0 20px !important; aspect-ratio: 1 / 1;
	display: flex !important; align-items: center; justify-content: center;
	background: var(--wp--preset--color--sand, #EFEDE9);
}
.rim-person__monogram p {
	margin: 0 !important;
	font-family: var(--wp--preset--font-family--display, serif);
	font-size: clamp(28px, 3.2vw, 44px); letter-spacing: 0.08em;
	color: var(--wp--preset--color--gold, #B08D57);
}

.rim-bio { padding: 0; border: 0; width: min(820px, calc(100vw - 48px)); max-height: calc(100vh - 64px);
	background: #FFFFFF; color: #000000; overflow: visible; }
.rim-bio::backdrop { background: rgba(0, 0, 0, 0.72); backdrop-filter: blur(2px); }
.rim-bio[open] { animation: rim-bio-in 220ms ease-out; }
@keyframes rim-bio-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .rim-bio[open] { animation: none; } }

.rim-bio__inner { display: grid; grid-template-columns: 280px minmax(0, 1fr); max-height: calc(100vh - 64px); }
.rim-bio__media { margin: 0; background: var(--wp--preset--color--sand, #EFEDE9); }
.rim-bio__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.rim-bio__media .rim-bio__mono { height: 100%; display: flex; align-items: center; justify-content: center;
	font-family: var(--wp--preset--font-family--display, serif); font-size: 64px; letter-spacing: 0.08em;
	color: var(--wp--preset--color--gold, #B08D57); }
.rim-bio__body { padding: 48px 48px 32px; overflow-y: auto; display: flex; flex-direction: column; }
.rim-bio__eyebrow { margin: 0 0 14px; font-size: 11.5px; letter-spacing: 0.28em; text-transform: uppercase;
	color: var(--wp--preset--color--gold, #B08D57); }
.rim-bio__name { margin: 0 0 10px; font-family: var(--wp--preset--font-family--display, serif);
	font-size: 28px; line-height: 1.2; font-weight: 400; letter-spacing: 0.02em; }
.rim-bio__title { margin: 0; font-size: 13px; line-height: 1.6; letter-spacing: 0.12em; text-transform: uppercase; color: #000000; }
.rim-bio__rule { width: 48px; height: 1px; background: var(--wp--preset--color--gold, #B08D57); margin: 26px 0; border: 0; }
.rim-bio__list { list-style: none; margin: 0 0 32px; padding: 0; }
.rim-bio__list li { position: relative; padding-left: 20px; margin: 0 0 10px; font-size: 15px; line-height: 1.55; }
.rim-bio__list li::before { content: ""; position: absolute; left: 0; top: 0.68em; width: 6px; height: 6px;
	background: var(--wp--preset--color--gold, #B08D57); }
.rim-bio__foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 16px;
	padding-top: 20px; border-top: 1px solid var(--wp--preset--color--silver, #A8B0BA); }
.rim-bio__icons { display: flex; gap: 10px; }
.rim-bio__icon { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center;
	border: 1px solid #000000; color: #000000; border-radius: 50%; transition: background 160ms, color 160ms, border-color 160ms; }
.rim-bio__icon:hover, .rim-bio__icon:focus-visible { background: var(--wp--preset--color--gold, #B08D57);
	border-color: var(--wp--preset--color--gold, #B08D57); color: #FFFFFF; outline: none; }
.rim-bio__icon svg { width: 17px; height: 17px; fill: currentColor; }
.rim-bio__nav { display: flex; align-items: center; gap: 6px; margin-left: auto; font-size: 11.5px; letter-spacing: 0.2em; }
.rim-bio__nav button, .rim-bio__close { background: none; border: 0; cursor: pointer; color: #000000; font: inherit; }
.rim-bio__nav button { padding: 8px 10px; text-transform: uppercase; letter-spacing: 0.2em; font-size: 11.5px; }
.rim-bio__nav button:hover, .rim-bio__nav button:focus-visible { color: var(--wp--preset--color--gold, #B08D57); outline: none; }
.rim-bio__count { color: #6B6B6B; min-width: 52px; text-align: center; }
.rim-bio__close { position: absolute; top: 14px; right: 14px; width: 40px; height: 40px; display: flex;
	align-items: center; justify-content: center; }
.rim-bio__close svg { width: 18px; height: 18px; stroke: currentColor; stroke-width: 1.5; }
.rim-bio__close:hover, .rim-bio__close:focus-visible { color: var(--wp--preset--color--gold, #B08D57); outline: none; }
.rim-bio__thumb { display: none; }
div.rim-bio__thumb { align-items: center; justify-content: center; font-family: var(--wp--preset--font-family--display, serif);
	color: var(--wp--preset--color--gold, #B08D57); font-size: 26px; background: var(--wp--preset--color--sand, #EFEDE9); }

@media (max-width: 720px) {
	.rim-bio { width: 100vw; max-width: 100vw; max-height: 92vh; margin: auto 0 0; }
	.rim-bio[open] { animation-name: rim-bio-up; }
	@keyframes rim-bio-up { from { transform: translateY(40px); opacity: 0; } to { transform: none; opacity: 1; } }
	.rim-bio__inner { grid-template-columns: 1fr; max-height: 92vh; overflow-y: auto; }
	.rim-bio__media { display: none; }
	.rim-bio__body { padding: 36px 24px 24px; overflow: visible; }
	.rim-bio__head { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 18px; align-items: center; padding-right: 32px; }
	img.rim-bio__thumb { display: block; width: 84px; height: 84px; object-fit: cover; }
	div.rim-bio__thumb { display: flex; width: 84px; height: 84px; }
	.rim-bio__name { font-size: 22px; }
	.rim-bio__nav .rim-bio__label { display: none; }
}
html.rim-bio-lock { overflow: hidden; }
