/*
 * cn-lean base styles (PLACEHOLDER)
 * ---------------------------------
 * Just enough to render a coherent page during the migration window.
 * Every color / size / spacing value resolves through a token in
 * tokens.css — do NOT hard-code hex/px here.
 */

/* -------- Self-hosted webfonts: Very Vogue (serif accent family) -------- */
@font-face {
	font-family: 'Very Vogue Display';
	src: url('../fonts/veryvogue-display-webfont.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: 'Very Vogue Display';
	src: url('../fonts/veryvogue-display-italic-webfont.woff2') format('woff2');
	font-weight: 400;
	font-style: italic;
	font-display: swap;
}
@font-face {
	font-family: 'Very Vogue Text';
	src: url('../fonts/veryvogue-text-webfont.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: 'Very Vogue Text';
	src: url('../fonts/veryvogue-text-italic-webfont.woff2') format('woff2');
	font-weight: 400;
	font-style: italic;
	font-display: swap;
}

/* -------- Reset -------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
body, h1, h2, h3, h4, h5, h6, p, ul, ol, figure, blockquote { margin: 0; }
ul[role="list"], ol[role="list"] { list-style: none; padding: 0; }
img, picture, video, svg { max-width: 100%; height: auto; display: block; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: 0; padding: 0; }

/* -------- Base typography -------- */
body {
	font-family: var(--font-sans);
	font-size: var(--fs-base);
	line-height: var(--lh-normal);
	color: var(--color-ink);
	background: var(--color-surface);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

h1, h2, h3, h4 {
	font-family: var(--font-display);
	line-height: var(--lh-snug);
	letter-spacing: var(--tracking-normal); /* Figma: no tracking on long headlines */
	color: var(--color-ink);
	font-weight: var(--fw-light); /* Gotham Light / Montserrat Light target */
}
h1 { font-size: var(--fs-4xl); line-height: var(--lh-tight); }
h2 { font-size: var(--fs-3xl); }
h3 { font-size: var(--fs-2xl); }
h4 { font-size: var(--fs-xl); }

/* Display-only headline (hero) — bigger than h1 to match Figma's 54–72px range. */
.cn-display {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-display);
	line-height: var(--lh-tight);
	letter-spacing: var(--tracking-normal);
	color: var(--color-ink);
}

/* Eyebrow — Montserrat SemiBold, tracked, orange. Sits above section headlines. */
.cn-eyebrow {
	display: inline-block;
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-orange-text); /* WCAG AA on light grounds; dark blocks override below */
	margin-bottom: var(--space-3);
}
h5, h6 {
	font-family: var(--font-sans);
	font-size: var(--fs-sm);
	font-weight: var(--fw-semibold);
	letter-spacing: var(--tracking-caps);
	text-transform: uppercase;
	color: var(--color-ink-soft);
}

p { max-width: 65ch; }
p + p { margin-top: var(--space-4); }

a {
	color: var(--color-primary);
	text-decoration: underline;
	text-underline-offset: 2px;
	text-decoration-thickness: 1px;
	transition: color var(--dur-fast) var(--ease-out);
}
a:hover { color: var(--color-primary-hover); }
a:focus-visible { outline: 0; box-shadow: var(--shadow-focus); border-radius: var(--radius-xs); }

hr { border: 0; border-top: 1px solid var(--color-hairline); margin: var(--space-6) 0; }

/* -------- Layout primitives -------- */
.cn-container {
	width: 100%;
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: var(--container-gutter);
}
.cn-container--narrow { max-width: var(--container-narrow); }
.cn-container--wide   { max-width: var(--container-wide); }

.cn-section {
	padding-block: clamp(var(--space-7), 6vw, var(--space-9));
}
.cn-section--tight { padding-block: var(--space-6); }
.cn-section--alt   { background: var(--color-surface-alt); }
.cn-section--invert {
	background: var(--color-surface-invert);
	color: var(--color-on-invert);
}
.cn-section--invert h1, .cn-section--invert h2,
.cn-section--invert h3, .cn-section--invert h4 { color: var(--color-on-invert); }

/* -------- Header / footer scaffolding (placeholder) -------- */
.cn-site-header {
	position: sticky;
	top: 0;
	z-index: var(--z-nav);
	background: var(--color-surface);
	border-bottom: 1px solid var(--color-hairline);
}
.cn-site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-5);
	padding-block: var(--space-3);
}
.cn-site-header__brand {
	font-family: var(--font-display);
	font-size: var(--fs-lg);
	text-decoration: none;
	color: var(--color-ink);
}
.cn-primary-nav {
	flex: 1 1 auto;
	display: flex;
	justify-content: center;
}
.cn-primary-nav > div > ul,
.cn-primary-nav > ul {
	display: flex;
	gap: clamp(var(--space-4), 2.5vw, var(--space-6));
	list-style: none;
	padding: 0; margin: 0;
	align-items: center;
	white-space: nowrap;
}
.cn-primary-nav li { position: relative; }
.cn-primary-nav li a {
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 12px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--color-deep-ink);
	text-decoration: none;
}
.cn-primary-nav li a:hover { color: var(--color-orange-cta); }
/* Dropdowns — comp header spec (About Us ⌄ / Services ⌄): hairline panel,
 * hover + :focus-within (keyboard-safe), caret on parents. */
.cn-primary-nav li.menu-item-has-children > a::after {
	content: "⌄";
	display: inline-block;
	margin-left: 6px;
	font-size: 10px;
	transform: translateY(-1px);
	transition: transform var(--dur-fast) var(--ease-out);
}
.cn-primary-nav li.menu-item-has-children:hover > a::after,
.cn-primary-nav li.menu-item-has-children:focus-within > a::after { transform: translateY(1px) rotate(180deg); }
.cn-primary-nav .sub-menu {
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%) translateY(6px);
	min-width: 240px;
	background: #FFFFFF;
	border: 1px solid var(--color-hairline);
	box-shadow: var(--shadow-3);
	padding: var(--space-3) 0;
	margin: 0;
	list-style: none;
	display: block;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), visibility 0s linear var(--dur-fast);
	z-index: var(--z-nav);
}
.cn-primary-nav li.menu-item-has-children:hover > .sub-menu,
.cn-primary-nav li.menu-item-has-children:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%) translateY(0);
	transition-delay: 0s;
}
.cn-primary-nav .sub-menu li { display: block; white-space: nowrap; }
.cn-primary-nav .sub-menu li a {
	display: block;
	padding: 10px 22px;
	font-size: 11px;
	letter-spacing: 0.07em;
}
.cn-primary-nav .sub-menu li a:hover { background: var(--color-parchment); color: var(--color-deep-ink); }
/* Parent "#" heads shouldn't navigate. */
.cn-primary-nav li.menu-item-has-children > a[href="#"] { cursor: default; }

/* Mobile nav — hamburger toggle below 64em; panel slides under the header. */
.cn-site-header__toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 40px; height: 40px;
	padding: 8px;
}
.cn-site-header__toggle span {
	display: block;
	width: 100%; height: 2px;
	background: var(--color-deep-ink);
	transition: transform var(--dur-base) var(--ease-out), opacity var(--dur-base) var(--ease-out);
}
@media (max-width: 64em) {
	.cn-site-header__toggle { display: inline-flex; }
	.cn-primary-nav {
		position: absolute;
		top: 100%; left: 0; right: 0;
		background: var(--color-surface);
		border-bottom: 1px solid var(--color-hairline);
		display: none;
		padding: var(--space-4) var(--container-gutter) var(--space-6);
	}
	.cn-primary-nav[data-open="true"] { display: block; }
	.cn-primary-nav > div > ul,
	.cn-primary-nav > ul {
		flex-direction: column;
		align-items: flex-start;
		gap: var(--space-4);
		white-space: normal;
	}
	.cn-primary-nav li a { font-size: 14px; }
	.cn-primary-nav .sub-menu {
		position: static;
		transform: none;
		opacity: 1;
		visibility: visible;
		border: 0;
		box-shadow: none;
		padding: var(--space-2) 0 0 var(--space-4);
		min-width: 0;
	}
	.cn-primary-nav .sub-menu li a { font-size: 13px; padding: 6px 0; color: var(--color-warm-gray); }
	.cn-primary-nav li.menu-item-has-children > a::after { content: ""; margin: 0; }
	.cn-site-header__contact a { display: none; } /* phone hides on small screens */
}

.cn-site-footer {
	background: var(--color-surface-invert);
	color: var(--color-on-invert);
	padding-block: var(--space-8) var(--space-6);
	margin-top: 0;
}
.cn-site-footer a { color: var(--color-on-invert); }
/* Footer bottom bar + newsletter (de-inlined from footer.php). */
.cn-site-footer__bottom {
	margin-top: var(--space-7);
	padding-top: var(--space-5);
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--space-4);
	font-size: var(--fs-xs);
	color: var(--color-muted-gray);
	flex-wrap: wrap;
}
/* Must OUT-specify `.cn-site-footer ul { display:grid }` (0,2,1 > 0,1,1). */
.cn-site-footer ul.cn-site-footer__social {
	display: flex;
	gap: var(--space-4);
	list-style: none;
	padding: 0; margin: 0;
}
.cn-footer-nl {
	/* Comp: bordered email pill with the orange circle arrow OUTSIDE it. */
	display: flex;
	align-items: center;
	gap: var(--space-3);
	max-width: 340px;
}
.cn-footer-nl input {
	flex: 1 1 auto;
	min-width: 0;
	background: var(--color-near-black);
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: var(--radius-pill);
	padding: 16px 20px;
	color: var(--color-on-invert);
	font-size: var(--fs-sm);
}
.cn-footer-nl input::placeholder { color: var(--color-muted-gray); }
.cn-footer-nl input:focus { outline: none; }
.cn-footer-nl button {
	flex: 0 0 auto;
	width: 40px; height: 40px;
	border-radius: 50%;
	background: var(--color-orange-cta);
	color: var(--color-deep-ink);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	transition: background var(--dur-fast) var(--ease-out);
}
.cn-footer-nl button:hover { background: var(--color-accent-hover); }
.cn-footer-nl__note {
	font-size: var(--fs-xs);
	color: var(--color-muted-gray);
	/* The note sits between the column heading and the field. Both gaps were
	 * collapsing to the default paragraph margin, which read as cramped
	 * against the generous whitespace everywhere else in the footer. */
	margin: 0 0 var(--space-4);
	max-width: 34ch;
	line-height: 1.6;
}
.cn-footer-nl { margin-top: var(--space-4); }

/* -------- Buttons — Figma comp: orange rectangle, tracked caps.
 * Hover follows Taxro's signature swap: orange → deep ink, with the
 * label nudging as the arrow glyph slides in from the right. -------- */
.cn-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-2);
	padding: 15px 28px;
	border-radius: var(--radius-xs);
	font-family: 'Montserrat', sans-serif;
	font-size: 12px;
	font-weight: var(--fw-semibold);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	line-height: 1;
	text-decoration: none;
	white-space: nowrap;
	overflow: hidden;
	transition: background var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);
}
.cn-btn--primary {
	background: var(--color-accent);
	color: var(--color-deep-ink);
}
.cn-btn--primary:hover { background: var(--color-deep-ink); color: #FFFFFF; }
.cn-btn--dark {
	background: var(--color-deep-ink);
	color: #FFFFFF;
}
.cn-btn--dark:hover { background: var(--color-accent); color: var(--color-deep-ink); }
.cn-btn--ghost {
	background: transparent;
	color: var(--color-deep-ink);
	box-shadow: inset 0 0 0 1px var(--color-deep-ink);
}
.cn-btn--ghost:hover { background: var(--color-deep-ink); color: var(--color-page); }
/* Taxro-style arrow slide: buttons get a hidden arrow that slides in on hover. */
.cn-btn > span:first-child { transition: transform var(--dur-base) var(--ease-out); }
.cn-btn::after {
	content: "→";
	position: absolute;
	right: 12px;
	opacity: 0;
	transform: translateX(8px);
	transition: opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
	font-size: 13px;
}
.cn-btn:hover::after { opacity: 1; transform: none; }
/* Element-qualified (0,1,1) so the staging cookie-banner snippet's inline
 * `.cn-btn { border-radius: 8px }` can never win — comp buttons are square. */
a.cn-btn, button.cn-btn { border-radius: var(--radius-pill); padding: 16px 30px; }
/* Secondary = outlined pill (Function pattern): visible 1px ring, not inset shadow. */
.cn-btn.cn-btn--ghost { box-shadow: none; border: 1px solid var(--color-deep-ink); }
.cn-btn.cn-btn--ghost:hover { background: var(--color-deep-ink); color: var(--color-page); }
.cn-btn:hover > span:first-child { transform: translateX(-6px); }
/* Buttons that already carry the circular arrow chip skip the slide-in arrow. */
.cn-btn:has(.cn-btn__arrow)::after { display: none; }
.cn-btn:has(.cn-btn__arrow):hover > span:first-child { transform: none; }

/* -------- Hero + section eyebrow (both inherit .cn-eyebrow rules) -------- */
.cn-hero__eyebrow,
.cn-band__header > p:first-child.cn-eyebrow {
	display: inline-block;
	font-family: var(--font-sans);
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-orange-cta);
	margin-bottom: var(--space-3);
}
.cn-hero__headline {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-display);
	line-height: var(--lh-tight);
	color: var(--color-ink);
}
.cn-hero__subhead {
	font-size: var(--fs-md);
	color: var(--color-warm-gray);
	max-width: 40ch;
	margin-top: var(--space-4);
}
.cn-hero__ctas { display: flex; gap: var(--space-3); margin-top: var(--space-6); flex-wrap: wrap; }

/* -------- Content prose (for pages migrated with legacy HTML) -------- */
.cn-prose {
	max-width: var(--container-narrow);
	margin-inline: auto;
	font-size: var(--fs-md);
	line-height: var(--lh-loose);
}
.cn-prose > * + * { margin-top: var(--space-5); }
.cn-prose h2 { margin-top: var(--space-7); font-size: var(--fs-2xl); }
.cn-prose h3 { margin-top: var(--space-6); font-size: var(--fs-xl); }
.cn-prose ul, .cn-prose ol { padding-left: var(--space-6); }
.cn-prose li + li { margin-top: var(--space-2); }
.cn-prose blockquote {
	border-left: 3px solid var(--color-accent);
	padding: var(--space-2) 0 var(--space-2) var(--space-5);
	font-family: var(--font-display);
	font-size: var(--fs-lg);
	color: var(--color-ink-soft);
}
.cn-prose img { border-radius: var(--radius-md); }

/* -------- Utility -------- */
.sr-only {
	position: absolute;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0);
	white-space: nowrap; border: 0;
}
.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--color-ink);
	color: var(--color-surface);
	padding: var(--space-3) var(--space-4);
	z-index: var(--z-toast);
}
.skip-link:focus { left: var(--space-3); }

/* ================================================================
 * Section renderers — Taxro-inspired
 * These are the CSS counterparts for cn_render_section_* in inc/sections.php.
 * Grouped in the same order.
 * ================================================================ */

/* -------- Header (Figma layout map) -------- */
.cn-site-header__inner {
	padding-block: var(--space-4);
}
.cn-site-header__brand {
	display: inline-flex;
	align-items: center;
	gap: var(--space-3);
	line-height: 1;
}
/* Real brand lockup (Logo-02, dark wordmark). Height-capped so the sticky
 * header stays tight; width follows the 2.3:1 lockup ratio. */
.cn-site-header__logo {
	display: block;
	height: 40px;
	width: auto;
	aspect-ratio: 900 / 233; /* never let flex squeeze warp the lockup */
	flex-shrink: 0;
}
.cn-site-header__brand { flex-shrink: 0; }
@media (max-width: 90em) {
	.cn-primary-nav > ul { gap: clamp(10px, 1.4vw, 22px); }
	.cn-site-header__cta { padding: 11px 18px; font-size: 11px; }
}
.cn-site-header__contact {
	display: inline-flex;
	align-items: center;
	gap: var(--space-4);
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: var(--fs-sm);
	color: var(--color-deep-ink);
}
.cn-site-header__contact a { color: inherit; text-decoration: none; }
.cn-site-header__search { background: none; border: 0; cursor: pointer; font-size: 20px; color: var(--color-deep-ink); }

/* -------- Section band header (used across many sections) -------- */
.cn-band__header { max-width: 62ch; margin-bottom: var(--space-7); }
.cn-band__header > p:first-child.cn-eyebrow { margin-bottom: var(--space-3); }
.cn-band__header > h2 { margin-bottom: var(--space-3); }

/* -------- overlap_proof_card -------- */
.cn-overlap-proof { background: var(--color-parchment); padding-block: 0; }
.cn-overlap-proof__inner { position: relative; padding-block: var(--space-7); }
.cn-overlap-proof__image { width: 100%; height: auto; border-radius: 0; }
.cn-overlap-proof__card {
	position: absolute;
	right: var(--container-gutter);
	bottom: var(--space-6);
	max-width: 320px;
	background: var(--color-page);
	padding: var(--space-5);
	box-shadow: var(--shadow-2);
}
.cn-overlap-proof__card h3 { font-size: var(--fs-xl); margin-block: var(--space-2); }

/* -------- collage_imagery -------- */
.cn-collage__grid {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: var(--space-4);
	position: relative;
}
.cn-collage__item { margin: 0; overflow: hidden; }
.cn-collage__item img { width: 100%; height: 100%; object-fit: cover; }
.cn-collage__item--sm { grid-column: span 2; aspect-ratio: 1 / 1; }
.cn-collage__item--md { grid-column: span 3; aspect-ratio: 4 / 3; }
.cn-collage__item--lg { grid-column: span 4; aspect-ratio: 16 / 9; }
.cn-collage__label {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	background: var(--color-page);
	padding: var(--space-5) var(--space-6);
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-xl);
	color: var(--color-deep-ink);
	text-align: center;
	box-shadow: var(--shadow-2);
}

/* -------- logo_strip -------- */
.cn-logo-strip .cn-eyebrow { text-align: center; display: block; margin-bottom: var(--space-5); }
.cn-logo-strip__list {
	display: flex; flex-wrap: wrap;
	gap: var(--space-8);
	justify-content: center; align-items: center;
	list-style: none; padding: 0; margin: 0;
	opacity: 0.75;
}
.cn-logo-strip__list img { max-height: 40px; width: auto; filter: grayscale(1); }

/* -------- stat_intro_grid -------- */
.cn-stat-grid__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: var(--space-7);
	list-style: none; padding: 0; margin: 0;
}
.cn-stat { display: flex; flex-direction: column; gap: var(--space-2); }
.cn-stat__number {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-4xl);
	color: var(--color-deep-ink);
	line-height: 1;
}
.cn-stat__label { font-size: var(--fs-md); color: var(--color-warm-gray); }
.cn-stat__footnote { font-size: var(--fs-xs); color: var(--color-muted-text); }

/* -------- service_rows -------- */
.cn-service-rows__list { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-8); }
.cn-service-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-7);
	align-items: center;
}
.cn-service-row--reverse { direction: rtl; }
.cn-service-row--reverse > * { direction: ltr; }
.cn-service-row__media img { width: 100%; height: auto; }
.cn-service-row__body h3 { font-size: var(--fs-3xl); margin-block: var(--space-3); }

/* -------- team_strip -------- */
.cn-team-strip__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: var(--space-5);
	list-style: none; padding: 0; margin: var(--space-6) 0 0;
}
.cn-team-strip__list a { display: flex; flex-direction: column; gap: var(--space-2); text-decoration: none; color: inherit; }
.cn-team-strip__image { aspect-ratio: 1 / 1; object-fit: cover; }
.cn-team-strip__name { font-size: var(--fs-md); color: var(--color-deep-ink); }
.cn-team-strip__role { font-size: var(--fs-xs); color: var(--color-muted-text); }

/* -------- insights_preview -------- */
.cn-insights-preview__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: var(--space-6);
	list-style: none; padding: 0; margin: var(--space-6) 0 0;
}
.cn-insight-card a { display: flex; flex-direction: column; gap: var(--space-3); color: inherit; text-decoration: none; }
.cn-insight-card img { aspect-ratio: 4 / 3; object-fit: cover; }
.cn-insight-card__cat { font-family: 'Montserrat',sans-serif; font-weight: 600; font-size: var(--fs-xs); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--color-orange-cta); }
.cn-insight-card h3 { font-size: var(--fs-xl); }
.cn-insight-card time { font-size: var(--fs-xs); color: var(--color-muted-text); }

/* -------- editorial_2col -------- */
.cn-editorial-2col__grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: var(--space-8); align-items: start; }
.cn-editorial-2col__left h2 { font-size: var(--fs-4xl); }
.cn-editorial-2col__meta { font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: var(--fs-xs); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--color-muted-text); margin-bottom: var(--space-3); }
.cn-editorial-2col__body { font-size: var(--fs-md); color: var(--color-warm-gray); line-height: var(--lh-loose); }
.cn-editorial-2col__right img { margin-top: var(--space-5); width: 100%; }

/* -------- service_list_arrows -------- */
.cn-service-list-arrows__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); align-items: start; }
.cn-service-list-arrows__lead h2 { font-size: var(--fs-4xl); }
.cn-service-list-arrows__list { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--color-hairline); }
.cn-service-list-arrows__list li { border-bottom: 1px solid var(--color-hairline); }
.cn-service-list-arrows__list a {
	display: flex; justify-content: space-between; align-items: center;
	padding: var(--space-5) 0;
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-2xl);
	color: var(--color-deep-ink);
	text-decoration: none;
	transition: color var(--dur-fast) var(--ease-out);
}
.cn-service-list-arrows__list a:hover { color: var(--color-orange-cta); }
.cn-arrow { font-size: var(--fs-xl); color: var(--color-orange-cta); }

/* -------- big_hero_with_note -------- */
.cn-big-hero-note__header { max-width: 68ch; margin-bottom: var(--space-7); }
.cn-big-hero-note__subhead { font-size: var(--fs-md); color: var(--color-warm-gray); max-width: 46ch; margin-top: var(--space-4); }
.cn-big-hero-note__stage { position: relative; }
.cn-big-hero-note__image { width: 100%; height: auto; }
.cn-big-hero-note__card {
	position: absolute;
	right: -20px; top: 40px;
	max-width: 320px;
	background: var(--color-page);
	padding: var(--space-5);
	box-shadow: var(--shadow-2);
}
.cn-big-hero-note__card h3 { font-size: var(--fs-xl); margin-top: var(--space-2); }

/* -------- process_row -------- */
.cn-process-row__list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 50px; list-style: none; padding: 0; margin: clamp(3rem, 7vw, 100px) 0 0; }
.cn-process-step { border-top: none; padding-top: 0; }
.cn-process-step__n {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: var(--fs-xs);
	letter-spacing: 0.06em;
	color: var(--color-deep-ink);
	display: block;
	position: relative;
	margin-bottom: 0;
	padding-bottom: 26px;
}
/* comp: hairline BELOW the Step label with a 10px ink dot at its start */
.cn-process-step__n::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 1px;
	background: var(--color-line);
}
.cn-process-step__n::before {
	content: "";
	position: absolute;
	left: 0; bottom: -4px;
	width: 9px; height: 9px;
	border-radius: 50%;
	background: var(--color-deep-ink);
	z-index: 1;
}
.cn-process-step h3 { margin: 30px 0 0; font-size: clamp(1.25rem, 1.7vw, 1.5rem); max-width: 11ch; }
.cn-process-step p  { font-size: var(--fs-sm); color: var(--color-warm-gray); }

/* -------- person_bio_hero -------- */
.cn-person-hero__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); align-items: center; }
.cn-person-hero__role { font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: var(--fs-xs); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--color-muted-text); margin-top: var(--space-3); }
.cn-person-hero__bio { color: var(--color-warm-gray); font-size: var(--fs-md); line-height: var(--lh-loose); margin-block: var(--space-5); max-width: 38ch; }
.cn-person-hero__left .cn-btn { margin-top: var(--space-6); }
.cn-person-hero__socials { display: flex; gap: var(--space-3); list-style: none; padding: 0; margin: var(--space-4) 0; }
.cn-person-hero__socials a { color: var(--color-warm-gray); text-decoration: none; }
.cn-person-hero__image { width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; }

/* -------- newsletter_module -------- */
.cn-newsletter__inner { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); align-items: center; }
.cn-newsletter__form { display: flex; flex-direction: column; gap: var(--space-4); align-items: flex-start; }
/* One rule, not two: the second declaration's `border: 0` was wiping the
 * underline from the first, leaving the field with no visible affordance. */
.cn-newsletter__form input {
	flex: 1; width: 100%;
	background: transparent;
	border: 0;
	border-bottom: 1px solid var(--color-hairline);
	border-radius: 0;
	padding: var(--space-3) 0;
	font-size: var(--fs-md);
	color: var(--color-ink);
	transition: border-color var(--dur-fast) var(--ease-out);
}
.cn-newsletter__form input::placeholder { color: var(--color-warm-gray); }
.cn-newsletter__form input:focus {
	outline: 0;
	border-bottom-color: var(--color-orange-text);
	box-shadow: 0 1px 0 0 var(--color-orange-text);
}

/* -------- meta_rail -------- */
.cn-meta-rail__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--space-5); border-top: 1px solid var(--color-hairline); border-bottom: 1px solid var(--color-hairline); padding-block: var(--space-5); }
.cn-meta-rail__item dt { font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: var(--fs-xs); letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--color-muted-gray); margin-bottom: var(--space-2); }
.cn-meta-rail__item dd { font-size: var(--fs-md); color: var(--color-deep-ink); margin: 0; }

/* -------- decision_grid -------- */
.cn-decision-grid__list { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5); list-style: none; padding: 0; margin: var(--space-6) 0 0; }
/* Padding lives on the CARD, not on the anchor: unlinked cards have no
 * <a> at all and were rendering flush to their own border. */
.cn-decision-card {
	border: 1px solid var(--color-hairline);
	background: var(--color-page);
	position: relative;
	padding: var(--space-6);
}
.cn-decision-card a { display: block; margin: calc(var(--space-6) * -1); padding: var(--space-6); text-decoration: none; color: inherit; position: static; transition: background var(--dur-fast) var(--ease-out); }
.cn-decision-card:has(a):hover { background: var(--color-parchment); }
/* Reserve the arrow's column so a long heading can never run under it. */
.cn-decision-card h3 { font-size: var(--fs-2xl); margin-bottom: var(--space-3); padding-right: 48px; }
.cn-decision-card p  { color: var(--color-warm-gray); }
.cn-decision-card__arrow {
	position: absolute; top: var(--space-5); right: var(--space-5);
	width: 32px; height: 32px; border-radius: 50%;
	background: var(--color-orange-cta); color: var(--color-deep-ink);
	display: inline-flex; align-items: center; justify-content: center;
	font-size: var(--fs-sm);
}

/* -------- Site footer (dark ink, Figma layout) -------- */
.cn-site-footer { padding-block: var(--space-9) var(--space-6); }
.cn-site-footer .cn-container { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1.5fr; gap: var(--space-7); }
/* Comp: a faint vertical rule separates the brand column from the link columns. */
.cn-site-footer .cn-container > div:nth-child(2) {
	border-left: 1px solid rgba(255, 255, 255, 0.1);
	padding-left: var(--space-7);
}
.cn-site-footer h3 { font-family: 'Montserrat', sans-serif; font-size: var(--fs-xs); font-weight: 600; letter-spacing: var(--tracking-eyebrow); text-transform: uppercase; color: var(--color-muted-gray); margin-bottom: var(--space-4); }
.cn-site-footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-2); }
.cn-site-footer a { color: var(--color-on-invert); text-decoration: none; }
.cn-site-footer a:hover { color: var(--color-orange-cta); }
.cn-footer-brand { display: flex; flex-direction: column; gap: var(--space-4); }
/* Real brand lockup (Logo-01, white wordmark) on the ink footer. */
.cn-footer-brand__logo-img {
	display: block;
	height: 52px;
	width: auto;
	max-width: none;
	aspect-ratio: 900 / 233;
	/* brand column is a flex container: stretch would override width:auto */
	align-self: flex-start;
	margin-bottom: var(--space-4);
}

/* -------- Responsive -------- */
@media (max-width: 60em) {
	.cn-service-row,
	.cn-editorial-2col__grid,
	.cn-service-list-arrows__grid,
	.cn-person-hero__grid,
	.cn-newsletter__inner,
	.cn-site-footer .cn-container { grid-template-columns: minmax(0, 1fr); }
	.cn-service-row--reverse { direction: ltr; }
	.cn-decision-grid__list { grid-template-columns: minmax(0, 1fr); }
	.cn-site-footer .cn-container > div:nth-child(2) { border-left: 0; padding-left: 0; }
	.cn-stats-intro::before { display: none; }
	/* trust labels: wrap into rows instead of forcing a 500px+ single line */
	.cn-trust-labels__list {
		flex-wrap: wrap;
		justify-content: flex-start;
		gap: var(--space-3) var(--space-5);
	}
	.cn-trust-labels__list li { font-size: var(--fs-sm); }
	.cn-collage__item--sm, .cn-collage__item--md, .cn-collage__item--lg { grid-column: span 6; aspect-ratio: 16/9; }
	.cn-overlap-proof__card, .cn-big-hero-note__card { position: static; margin-top: var(--space-5); max-width: none; }
}

/* ================================================================
 * Animations — Taxro-inspired choreography
 * All reveals default to the "hidden" state and transition to visible
 * when JS adds the .cn-anim--play class. When prefers-reduced-motion is
 * set, tokens.css zeros --dur-* so transitions collapse instantly.
 * ================================================================ */
/* Pre-reveal slide transforms must never widen the page (mobile 12px probe). */
html, body { overflow-x: clip; }

[data-cn-anim] {
	--cn-anim-delay: 0ms;
	--cn-anim-duration: var(--dur-slow);
	--cn-anim-ease: var(--ease-out);
}

/* FAIL-VISIBLE GATE: hidden pre-reveal states apply ONLY when brand.js
 * has stamped `cn-js` on <html> (inline head script in functions.php).
 * If JS never runs, nothing is ever hidden. brand.js additionally runs a
 * watchdog that force-plays anything unrevealed after a few seconds. */

/* Fade-up (default direction) */
html.cn-js [data-cn-anim="fade-up"] {
	opacity: 0;
	transform: translateY(28px);
	transition:
		opacity     var(--cn-anim-duration) var(--cn-anim-ease) var(--cn-anim-delay),
		transform   var(--cn-anim-duration) var(--cn-anim-ease) var(--cn-anim-delay);
	will-change: transform, opacity;
}
html.cn-js [data-cn-anim="fade-up"].cn-anim--play { opacity: 1; transform: none; }

/* Fade-in (opacity only — used for images / logos) */
html.cn-js [data-cn-anim="fade-in"] {
	opacity: 0;
	transition: opacity var(--cn-anim-duration) var(--cn-anim-ease) var(--cn-anim-delay);
}
html.cn-js [data-cn-anim="fade-in"].cn-anim--play { opacity: 1; }

/* Slide from left / right */
html.cn-js [data-cn-anim="slide-left"], html.cn-js [data-cn-anim="slide-right"] {
	opacity: 0;
	transition:
		opacity   var(--cn-anim-duration) var(--cn-anim-ease) var(--cn-anim-delay),
		transform var(--cn-anim-duration) var(--cn-anim-ease) var(--cn-anim-delay);
	will-change: transform, opacity;
}
html.cn-js [data-cn-anim="slide-left"]  { transform: translateX(-32px); }
html.cn-js [data-cn-anim="slide-right"] { transform: translateX(32px); }
html.cn-js [data-cn-anim="slide-left"].cn-anim--play,
html.cn-js [data-cn-anim="slide-right"].cn-anim--play { opacity: 1; transform: none; }

/* Zoom-in (subtle) */
html.cn-js [data-cn-anim="zoom"] {
	opacity: 0;
	transform: scale(.96);
	transition:
		opacity   var(--cn-anim-duration) var(--cn-anim-ease) var(--cn-anim-delay),
		transform var(--cn-anim-duration) var(--cn-anim-ease) var(--cn-anim-delay);
}
html.cn-js [data-cn-anim="zoom"].cn-anim--play { opacity: 1; transform: none; }

/* Character-by-character reveal (Taxro "text-char-animate" analog) */
html.cn-js [data-cn-anim="char"] .cn-anim-char {
	opacity: 0;
	transform: translateY(0.6em);
	transition:
		opacity   400ms var(--ease-out),
		transform 500ms var(--ease-out);
	transition-delay: calc(var(--i) * 22ms + var(--cn-anim-delay));
	will-change: transform, opacity;
}
html.cn-js [data-cn-anim="char"].cn-anim--play .cn-anim-char { opacity: 1; transform: none; }

/* Wave text — uses ::before with data-text (Taxro "text-wave" analog) */
html.cn-js [data-cn-anim="wave"] {
	position: relative;
	color: transparent;
}
html.cn-js [data-cn-anim="wave"]::before {
	content: attr(data-text);
	position: absolute;
	inset: 0;
	color: var(--color-ink);
	clip-path: inset(0 100% 0 0);
	transition: clip-path 900ms var(--ease-out) var(--cn-anim-delay);
}
html.cn-js [data-cn-anim="wave"].cn-anim--play::before { clip-path: inset(0 0 0 0); }

/* Parallax hint (JS drives yPercent via ScrollTrigger; CSS just gets will-change) */
[data-cn-parallax] { will-change: transform; }

/* -------- 404 -------- */
.cn-404 {
	text-align: center;
	padding-block: var(--space-10);
}
.cn-404 h1 { font-size: var(--fs-4xl); }
.cn-404 p  { margin-inline: auto; }

/* ================================================================
 * Taxro-fidelity section styles (v1.1.0)
 * ================================================================ */

/* --- hero_split_proof ---
 * Canvas layout: lead text + 3 absolutely-positioned elements.
 * Coordinates track Figma 68:41 hero (1440x800 canvas). */
.cn-hero-splitproof { padding: 0 !important; background: var(--color-parchment); }
.cn-hero-splitproof__canvas {
	position: relative;
	max-width: 1440px;
	margin: 0 auto;
	padding: clamp(3rem, 6vw, 6rem) clamp(1.25rem, 5vw, 4.5rem);
	min-height: 720px;
}
.cn-hero-splitproof__lead {
	position: relative;
	z-index: 3;
	max-width: 500px;
}
.cn-hero-splitproof__h1 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.75rem, 5vw, 4.25rem);
	line-height: 1;
	color: var(--color-ink);
	letter-spacing: -0.01em;
	max-width: 10ch;
}
.cn-hero-splitproof__cta {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
	margin-top: clamp(2rem, 6vw, 4.5rem);
	max-width: 340px;
}
.cn-hero-splitproof__body {
	font-size: var(--fs-sm);
	color: var(--color-ink);
	line-height: 1.55;
	max-width: 40ch;
}
.cn-hero-splitproof__img-sm {
	position: absolute;
	left: clamp(1.25rem, 5vw, 4.5rem);
	bottom: clamp(3rem, 6vw, 6rem);
	width: min(23vw, 330px);
	aspect-ratio: 4 / 3;
	overflow: hidden;
	z-index: 1;
}
.cn-hero-splitproof__img-lg {
	position: absolute;
	right: clamp(1.25rem, 5vw, 4.5rem);
	top: clamp(2rem, 4vw, 4rem);
	width: min(32vw, 438px);
	aspect-ratio: 438 / 620;
	overflow: hidden;
	z-index: 1;
}
.cn-hero-splitproof__img-sm img,
.cn-hero-splitproof__img-lg img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-hero-splitproof__proof {
	position: absolute;
	right: min(22vw, 320px);
	top: clamp(20rem, 30vw, 27rem);
	width: min(26vw, 360px);
	background: var(--color-page);
	padding: clamp(1.5rem, 2.5vw, 2.25rem);
	box-shadow: var(--shadow-2);
	z-index: 2;
}
.cn-hero-splitproof__proof-corner {
	position: absolute;
	top: 12px; left: 12px;
	width: 30px; height: 4px;
	background: var(--color-orange-cta);
}
.cn-hero-splitproof__proof-corner::before {
	content: "";
	position: absolute;
	left: 0; top: 0;
	width: 4px; height: 30px;
	background: var(--color-orange-cta);
}
.cn-hero-splitproof__proof-h {
	display: block;
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.5rem, 4vw, 3.75rem);
	color: var(--color-ink);
	letter-spacing: 0.02em;
	line-height: 1;
	margin: var(--space-3) 0 var(--space-3);
}
.cn-hero-splitproof__proof-p {
	font-family: var(--font-sans);
	font-weight: var(--fw-semibold);
	font-size: var(--fs-md);
	line-height: 1.25;
	color: var(--color-ink);
	margin: 0;
}
.cn-btn__arrow {
	display: inline-flex;
	align-items: center; justify-content: center;
	width: 32px; height: 32px;
	border-radius: 50%;
	background: var(--color-orange-cta);
	color: var(--color-ink);
	margin-left: var(--space-3);
	font-size: 1rem;
}
/* Compact viewports: stack everything */
@media (max-width: 60em) {
	.cn-hero-splitproof__canvas { min-height: 0; }
	.cn-hero-splitproof__img-sm,
	.cn-hero-splitproof__img-lg,
	.cn-hero-splitproof__proof { position: static; width: 100%; max-width: 100%; margin-top: var(--space-5); aspect-ratio: 4/3; }
	.cn-hero-splitproof__proof { padding: var(--space-5); }
}

/* --- trust_labels_band ---
 * Comp: the band itself carries NO rules — the stats section's full-width
 * grid lines below do the structural work. */
.cn-trust-labels { background: var(--color-page); }
.cn-trust-labels__grid {
	display: grid;
	grid-template-columns: minmax(220px, 300px) 1fr;
	gap: var(--space-8);
	align-items: center;
	padding-block: var(--space-4);
}
.cn-trust-labels__intro {
	font-family: var(--font-sans);
	font-weight: var(--fw-semibold);
	font-size: var(--fs-md);
	line-height: 1.3;
	color: var(--color-ink);
}
.cn-trust-labels__list {
	display: flex;
	justify-content: space-around;
	list-style: none;
	padding: 0; margin: 0;
	gap: var(--space-6);
}
.cn-trust-labels__list li {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: var(--fs-md);
	color: var(--color-muted-gray);
	text-transform: none;
	letter-spacing: 0;
}

/* --- stats_intro_split ---
 * Comp "grid paper": FULL-WIDTH edge-to-edge hairlines top + bottom on the
 * section, plus a full-height vertical rule at 1/3 (x=480 on the 1440 canvas)
 * separating the stat column from the About column. */
.cn-stats-intro {
	position: relative;
	border-top: 1px solid var(--color-hairline);
	border-bottom: 1px solid var(--color-hairline);
}
.cn-stats-intro::before {
	content: "";
	position: absolute;
	left: 33.333%;
	top: 0;
	bottom: 0;
	width: 1px;
	background: var(--color-line);
}
.cn-stats-intro__grid {
	display: grid;
	grid-template-columns: minmax(240px, 336px) 1fr;
	gap: clamp(64px, 7.5vw, 100px);
	align-items: start;
}
.cn-stats-intro__stats {
	display: flex;
	flex-direction: column;
	gap: var(--space-7);
}
.cn-stat-pill {
	display: grid;
	grid-template-columns: 60px 1fr;
	gap: var(--space-4);
	align-items: center;
}
.cn-stat-pill__n {
	width: 60px; height: 60px;
	border-radius: 30px;
	background: var(--color-page);
	border: 1px solid var(--color-hairline);
	display: inline-flex; align-items: center; justify-content: center;
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: 1.25rem;
	color: var(--color-ink);
}
/* Editorial serif label, Caviar-style: keywords italicized via <em> in the
 * section JSON (renderer allows inline markup). */
.cn-stat-pill__label {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.625rem, 2.2vw, 2.125rem);
	line-height: 1.15;
	color: var(--color-ink);
}
.cn-stat-pill__label em {
	font-style: italic;
	font-weight: 400;
}
.cn-stats-intro__intro > .cn-eyebrow { margin-bottom: var(--space-4); }
.cn-stats-intro__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3.5vw, 3rem);
	line-height: 1.15;
	color: var(--color-ink);
	max-width: 22ch;
	margin-bottom: var(--space-5);
}
.cn-stats-intro__body {
	font-size: var(--fs-md);
	line-height: 1.6;
	color: var(--color-ink);
	max-width: 45ch;
	margin-bottom: var(--space-6);
}

/* --- card_row_3 --- */
.cn-cardrow3__list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-5);
	list-style: none;
	padding: 0; margin: 0;
}
.cn-card3 {
	background: var(--color-page);
	border: 1px solid var(--color-hairline);
	padding: var(--space-6);
	min-height: 360px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: var(--space-4);
}
.cn-card3__label {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	color: var(--color-warm-gray);
}
.cn-card3__stars {
	font-size: var(--fs-lg);
	color: var(--color-orange-cta);
	letter-spacing: 2px;
}
.cn-card3__quote {
	font-family: var(--font-accent-text);
	font-style: italic;
	font-size: var(--fs-lg);
	line-height: 1.4;
	color: var(--color-ink);
	margin: 0;
	quotes: "\201C" "\201D";
}
.cn-card3__quote::before { content: open-quote; }
.cn-card3__quote::after  { content: close-quote; }
.cn-card3__attr {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	color: var(--color-warm-gray);
}
.cn-card3__icon { width: 42px; height: 42px; margin-top: var(--space-2); }
.cn-card3__title {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-xl);
	line-height: 1.25;
	color: var(--color-ink);
}
.cn-card3__body {
	font-size: var(--fs-sm);
	line-height: 1.55;
	color: var(--color-warm-gray);
}
.cn-btn--sm { padding: var(--space-3) var(--space-4); font-size: var(--fs-xs); }

/* --- dark_photo_card --- */
.cn-darkphotocard { padding: 0 !important; }
.cn-darkphotocard__stage {
	position: relative;
	width: 100%;
	height: 520px;
	overflow: hidden;
}
.cn-darkphotocard__stage img {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
}
.cn-darkphotocard__stage::after {
	content: "";
	position: absolute; inset: 0;
	background: var(--color-deep-ink);
	opacity: var(--cn-overlay, 0.28);
}
.cn-darkphotocard__card {
	position: absolute;
	right: 8%; top: 50%;
	transform: translateY(-50%);
	background: var(--color-parchment);
	padding: var(--space-6);
	max-width: 360px;
	z-index: 2;
}
.cn-darkphotocard__h {
	display: block;
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.5rem, 4vw, 3.5rem);
	line-height: 1;
	color: var(--color-ink);
	margin-bottom: var(--space-3);
}
.cn-darkphotocard__p {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-md);
	line-height: 1.35;
	color: var(--color-ink);
}

/* --- service_list_numbered ---
 * NOTE: no padding-block — .cn-section owns the vertical rhythm. */
.cn-svclist-num__grid {
	display: grid;
	grid-template-columns: minmax(300px, 420px) 1fr;
	gap: var(--space-8);
	align-items: start;
}
.cn-svclist-num__img {
	aspect-ratio: 13 / 9; /* comp: 390×270 */
	max-width: 390px;
	overflow: hidden;
	margin-bottom: var(--space-6);
}
.cn-svclist-num__img img { width: 100%; height: 100%; object-fit: cover; }
.cn-svclist-num__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3vw, 2.75rem);
	line-height: 1.15;
	color: var(--color-ink);
}
.cn-svclist-num__sub {
	font-family: var(--font-accent-text);
	font-style: italic;
	font-size: var(--fs-lg);
	line-height: 1.35;
	color: var(--color-ink);
	margin-top: var(--space-4);
	max-width: 30ch;
}
.cn-svclist-num__list {
	list-style: none;
	padding: 0; margin: 0;
	display: flex; flex-direction: column;
	gap: 0;
}
.cn-svclist-num__row {
	display: grid;
	grid-template-columns: 60px 1fr;
	gap: var(--space-4);
	padding-block: var(--space-4);
	border-bottom: 1px solid var(--color-hairline);
	align-items: baseline;
}
.cn-svclist-num__n {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
}
.cn-svclist-num__title {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-xl);
	line-height: 1.25;
	color: var(--color-ink);
	margin-bottom: var(--space-2);
}
.cn-svclist-num__body {
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
	margin-bottom: var(--space-3);
}
.cn-svclist-num__link {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: var(--fs-xs);
	color: var(--color-orange-text);
	text-decoration: none;
	letter-spacing: 0.05em;
}
.cn-svclist-num__link:hover { text-decoration: underline; }

/* --- trust_split_icons ---
 * Full-bleed band: photo runs edge-to-edge on the left, parchment panel right.
 * padding:0 kills the .cn-section vertical padding that otherwise wraps it. */
.cn-trust-splitic { padding: 0 !important; }
.cn-trust-splitic__grid {
	display: grid;
	grid-template-columns: 42% 1fr;
	gap: 0;
	min-height: 680px;
}
.cn-trust-splitic__img { overflow: hidden; }
.cn-trust-splitic__img img { width: 100%; height: 100%; object-fit: cover; }
.cn-trust-splitic__body {
	padding: var(--space-9) var(--space-8);
	display: flex;
	flex-direction: column;
	gap: var(--space-6);
	max-width: 760px;
}
.cn-trust-splitic__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3vw, 2.75rem);
	line-height: 1.15;
	color: var(--color-ink);
	max-width: 15ch;
}
.cn-trust-splitic__list {
	list-style: none;
	padding: 0; margin: 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-6);
}
.cn-trust-splitic__list li h3 {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: 12px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-ink);
	margin: var(--space-3) 0 var(--space-2);
}
.cn-trust-splitic__list li p {
	font-size: var(--fs-sm);
	line-height: 1.5;
	color: var(--color-warm-gray);
}
.cn-trust-splitic__icon { width: 42px; height: 42px; }
/* Icons drift gently once the row reveals; negative delays desync the four. */
html.cn-js li.cn-anim--play .cn-trust-splitic__icon {
	animation: cn-icon-drift 5s ease-in-out infinite alternate;
}
html.cn-js li.cn-anim--play:nth-child(2) .cn-trust-splitic__icon { animation-delay: -1.4s; }
html.cn-js li.cn-anim--play:nth-child(3) .cn-trust-splitic__icon { animation-delay: -2.8s; }
html.cn-js li.cn-anim--play:nth-child(4) .cn-trust-splitic__icon { animation-delay: -4.2s; }
@keyframes cn-icon-drift {
	from { transform: translateY(0) rotate(0); }
	to   { transform: translateY(-4px) rotate(2deg); }
}
@media (prefers-reduced-motion: reduce) {
	.cn-trust-splitic__icon { animation: none !important; }
}

/* --- team_headline_strip ---
 * NOTE: no padding-block — .cn-section owns the vertical rhythm. */
.cn-team-headstrip__grid {
	display: grid;
	grid-template-columns: minmax(200px, 260px) 1fr;
	gap: var(--space-6);
	align-items: start;
}
/* Card hover: photo eases in scale, role warms to the accent. */
.cn-team-headstrip__img img { transition: transform var(--dur-slow) var(--ease-out); }
.cn-team-headstrip__list a:hover .cn-team-headstrip__img img { transform: scale(1.04); }
.cn-team-headstrip__list a:hover .cn-team-headstrip__name { color: var(--color-orange-cta); }
.cn-team-headstrip__name { transition: color var(--dur-fast) var(--ease-out); }
.cn-team-headstrip__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3vw, 2.75rem);
	line-height: 1.1;
	color: var(--color-ink);
}
.cn-team-headstrip__list {
	list-style: none;
	padding: 0; margin: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--space-4);
}
.cn-team-headstrip__list a {
	display: flex; flex-direction: column;
	gap: var(--space-2);
	color: inherit; text-decoration: none;
}
.cn-team-headstrip__img { aspect-ratio: 9 / 11; overflow: hidden; } /* comp: 180×220 */
.cn-team-headstrip__img img { width: 100%; height: 100%; object-fit: cover; }
.cn-team-headstrip__role {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-sm);
	color: var(--color-ink);
	margin-top: var(--space-3);
}
.cn-team-headstrip__name {
	display: block;
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-sm);
	color: var(--color-ink);
	margin-top: var(--space-3);
}
.cn-team-headstrip__list .cn-team-headstrip__name { display: block; margin-top: var(--space-3); }
.cn-team-headstrip__list .cn-team-headstrip__role {
	display: block;
	font-family: 'Montserrat', sans-serif;
	font-style: normal;
	font-weight: 400;
	font-size: var(--fs-xs);
	color: var(--color-warm-gray);
	margin-top: 2px;
}

/* --- dark_photo_cta --- */
.cn-darkphotocta { padding: 0 !important; }
.cn-darkphotocta__stage {
	position: relative;
	width: 100%;
	min-height: 330px; /* comp: 330px band */
	padding-block: var(--space-7);
	overflow: hidden;
	display: flex; align-items: center; justify-content: center;
}
.cn-darkphotocta__stage img {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
}
.cn-darkphotocta__stage::after {
	content: "";
	position: absolute; inset: 0;
	background: var(--color-deep-ink);
	opacity: var(--cn-overlay, 0.38);
}
.cn-darkphotocta__body {
	position: relative;
	z-index: 2;
	text-align: center;
	max-width: 620px;
	padding: 0 var(--space-4);
}
.cn-darkphotocta__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3vw, 2.5rem);
	line-height: 1.15;
	color: var(--color-page);
	margin-bottom: var(--space-6);
}

/* --- industry_meta_rail --- */
/* Full-bleed rail (taxro project-details): hairlines run viewport edge to
 * edge; the container keeps only its gutter padding. */
.cn-metarail .cn-container { max-width: none; }
.cn-metarail__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: var(--space-5);
	border-top: 1px solid var(--color-hairline);
	border-bottom: 1px solid var(--color-hairline);
	padding-block: var(--space-5);
}
.cn-metarail__item dt {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-warm-gray);
	margin-bottom: var(--space-2);
}
.cn-metarail__item dd {
	font-size: var(--fs-md);
	color: var(--color-ink);
	margin: 0;
}

/* --- Responsive collapse ---
 * minmax(0, 1fr) (not bare 1fr) so wide-intrinsic children (images with
 * height:100%, long words) can never force the column past the viewport. */
@media (max-width: 60em) {
	.cn-hero-splitproof__grid,
	.cn-trust-labels__grid,
	.cn-stats-intro__grid,
	.cn-svclist-num__grid,
	.cn-trust-splitic__grid,
	.cn-team-headstrip__grid { grid-template-columns: minmax(0, 1fr); }
	.cn-cardrow3__list { grid-template-columns: minmax(0, 1fr); }
	.cn-team-headstrip__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cn-trust-splitic__list { grid-template-columns: minmax(0, 1fr); }
	.cn-trust-splitic__body { padding: var(--space-8) var(--container-gutter); max-width: none; }
	.cn-trust-splitic__img img { height: auto; aspect-ratio: 4 / 3; }
	.cn-hero-splitproof__proof { position: static; transform: none; margin-top: var(--space-5); }
	.cn-darkphotocard__card { position: static; transform: none; }
	.cn-stats-intro__stats { border-right: 0; padding-right: 0; }
}

/* ================================================================
 * v1.2.0 — About / Services / Team fidelity styles
 * ================================================================ */

/* --- about_hero_split3 : 3-col intro --- */
.cn-abouthero3 { padding: 0 !important; } /* ground field owns the surface (About=page, Team=page, default subtle) */
.cn-abouthero3__grid {
	display: grid;
	/* fit-content: About's short eyebrow ≈112px, Team's longer one ≈230px (comps differ). */
	grid-template-columns: fit-content(240px) minmax(0, 1fr) 260px;
	column-gap: clamp(2rem, 3.6vw, 52px);
	row-gap: var(--space-6);
	padding-block: clamp(4rem, 7vw, 6.5rem);
	align-items: start;
}
/* About-only decorative dash after the H1 (comp 68:209 rule 95×2). */
#intro .cn-abouthero3__h1::after {
	content: "";
	display: block;
	width: 95px;
	height: 2px;
	background: var(--color-ink);
	margin: var(--space-5) 0 0 auto;
}
.cn-abouthero3__eyebrow .cn-eyebrow {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.25em;
	color: var(--color-deep-ink);
	text-transform: uppercase;
}
.cn-abouthero3__h1 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.5rem, 4.45vw, 4rem);
	line-height: 1.05;
	color: var(--color-ink);
	letter-spacing: -0.01em;
	margin: 0;
	max-width: 20ch;
}
.cn-abouthero3__body {
	font-size: var(--fs-base);
	line-height: 1.55;
	color: var(--color-warm-gray);
	margin-bottom: var(--space-4);
}
.cn-arrowlink {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 11px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-deep-ink);
	text-decoration: none;
	display: inline-flex;
	gap: var(--space-2);
	align-items: center;
	padding-bottom: 4px;
	border-bottom: 1px solid var(--color-deep-ink);
}
.cn-arrowlink:hover { color: var(--color-orange-cta); border-color: var(--color-orange-cta); }

/* --- photo_pair_since --- */
.cn-photopair__stage {
	position: relative;
	display: grid;
	/* The comp's 660/62/235 over 1296 left a third of the row empty at
	 * 1440. Balanced editorial pair instead: the two plates fill the
	 * container and the seal sits on the seam between them. */
	grid-template-columns: 56% 1fr;
	gap: clamp(1.25rem, 2.8vw, 2.75rem);
	align-items: start;
}.cn-photopair__left { aspect-ratio: 4/3; overflow: hidden; position: relative; }
.cn-photopair__right { aspect-ratio: 3/4; overflow: hidden; position: relative;
	align-self: start; margin-top: clamp(2.5rem, 6vw, 5.5rem); }
/* The parallax plane must fill (and overscan) its clip box, or the
 * photo only occupies part of the plate and the scrub bares the ground. */
.cn-photopair__plane { position: absolute; inset: -21% 0; }  /* max rate .14 */
.cn-photopair__left img,
.cn-photopair__right img,
.cn-photopair__plane img {
	position: absolute; inset: 0;
	width: 100%; height: 100%; object-fit: cover; display: block;
}
.cn-photopair__since {
	position: absolute;
	/* Seal on the seam between the two plates, not adrift in the margin. */
	left: 56%; top: 50%;
	transform: translate(-50%, -50%);
	z-index: 3;
	width: 112px; height: 112px;
	border-radius: 50%;
	border: 1px solid var(--color-deep-ink);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	background: #FFFFFF;
	font-family: 'Montserrat', sans-serif;
	text-align: center;
}
.cn-photopair__since-label {
	font-weight: 700;
	font-size: 14px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-deep-ink);
}
.cn-photopair__since-year {
	font-weight: 700;
	font-size: 15px;
	color: var(--color-deep-ink);
	line-height: 1;
	margin-top: 2px;
}

/* --- milestone_timeline --- */
.cn-milestones__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3.5vw, 2.75rem);
	line-height: 1.15;
	color: var(--color-ink);
	text-align: center;
	max-width: 22ch;
	margin: var(--space-3) auto var(--space-8);
}
.cn-milestones__list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--space-6);
	list-style: none;
	padding: 0; margin: 0;
	position: relative;
	max-width: 1120px;
	margin-inline: auto;
}
.cn-milestone {
	display: flex;
	flex-direction: column;
	gap: var(--space-3);
	text-align: left;
	position: relative;
}
.cn-milestone__date {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: 12px;
	color: var(--color-deep-ink);
}
/* comp: per-column hairline with a 12px ink dot at its left end */
.cn-milestone__dot {
	position: relative;
	width: 88%;
	height: 1px;
	background: var(--color-line);
	border-radius: 0;
	margin-block: 4px;
	z-index: 2;
}
.cn-milestone__dot::before {
	content: "";
	position: absolute;
	left: 0; top: -5.5px;
	width: 12px; height: 12px;
	border-radius: 50%;
	background: var(--color-deep-ink);
}
.cn-milestone__title {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: var(--fs-lg);
	color: var(--color-deep-ink);
	margin: 0;
}
.cn-milestone__body {
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
	margin: 0;
	max-width: 180px;
}

/* --- team_grid_full --- */
.cn-teamgrid { padding-block: clamp(4rem, 8.3vw, 7.5rem) clamp(5rem, 12.9vw, 11.5rem); }
.cn-teamgrid__list {
	display: grid;
	/* 25-person roster: 4-up desktop, tighter rows than the 2-row comp */
	grid-template-columns: repeat(4, minmax(0, 1fr));
	column-gap: var(--space-5);
	row-gap: clamp(2.5rem, 4vw, 4rem);
	list-style: none;
	padding: 0; margin: 0;
}
.cn-teamcard { display: flex; flex-direction: column; gap: var(--space-5); }
.cn-teamcard__img { aspect-ratio: 230/320; overflow: hidden; background: var(--color-parchment); position: relative; }
/* comp: reflect gradient over the photo's lower third */
.cn-teamcard__img::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 34.4%;
	background: linear-gradient(180deg, rgba(5,21,27,0) 0%, rgba(5,21,27,0.32) 100%);
	pointer-events: none;
}
.cn-teamcard__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-teamcard__meta {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: var(--space-3);
}
.cn-teamcard__name {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: var(--fs-md);
	color: var(--color-deep-ink);
	margin: 0 0 4px;
}
.cn-teamcard__role {
	font-family: var(--font-accent-text);
	font-style: italic;
	font-size: 1rem;
	color: var(--color-warm-gray);
	margin: 0;
}
.cn-teamcard__linkedin {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px; height: 20px;
	background: transparent;
	color: var(--color-deep-ink);
	text-decoration: none;
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 15px;
	flex-shrink: 0;
	line-height: 1;
}
.cn-teamcard__linkedin:hover { background: transparent; color: var(--color-orange-cta); }

/* --- service_hero_cream_split --- */
.cn-svchero { padding: 0 !important; } /* ground field owns the surface (Services=page; default subtle) */
.cn-svchero__grid {
	display: grid;
	grid-template-columns: minmax(0, 780px) 300px;
	gap: clamp(2.5rem, 4.2vw, 3.75rem);
	padding-block: clamp(3.5rem, 6.6vw, 6rem);
	align-items: start;
}
.cn-svchero__lead .cn-eyebrow {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.25em;
	color: var(--color-deep-ink);
	text-transform: uppercase;
	margin-bottom: var(--space-5);
	display: inline-block;
}
.cn-svchero__h1 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.5rem, 4.45vw, 4rem);
	line-height: 1.06;
	color: var(--color-ink);
	letter-spacing: -0.01em;
	margin: 0;
	max-width: none;
}
.cn-svchero__side {
	background: transparent;
	padding: 0;
	margin-top: var(--space-5);
}
.cn-svchero__body {
	font-size: var(--fs-base);
	line-height: 1.6;
	color: var(--color-warm-gray);
	margin-bottom: var(--space-4);
}

/* --- content_list_image_split --- */
.cn-contentlistimg__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(280px, 455px);
	column-gap: clamp(var(--space-8), 10vw, 140px);
	row-gap: var(--space-8);
	align-items: start;
}
.cn-contentlistimg__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3.2vw, 2.875rem);
	line-height: 1.16;
	color: var(--color-ink);
	max-width: 22ch;
	margin-bottom: var(--space-4);
}
.cn-contentlistimg__intro {
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
	line-height: 1.6;
	margin-bottom: clamp(2.5rem, 7vw, 6rem);
	max-width: 55ch;
}
.cn-contentlistimg__group-title {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: var(--fs-md);
	color: var(--color-deep-ink);
	margin: var(--space-5) 0 var(--space-3);
}
.cn-checklist { list-style: none; padding: 0; margin: 0 0 var(--space-5); display: flex; flex-direction: column; gap: var(--space-3); }
.cn-checklist li {
	position: relative;
	padding-left: var(--space-6);
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
	line-height: 1.5;
}
.cn-checklist li::before {
	content: "✓";
	position: absolute; left: 0; top: 0;
	width: 20px; height: 20px;
	background: var(--color-orange-cta);
	color: var(--color-deep-ink);
	border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	font-weight: 700;
	font-size: 12px;
}
.cn-checklist--plus li::before { content: "+"; }
.cn-contentlistimg__media { aspect-ratio: 455/575; overflow: hidden; }
/* comp: plain small dot bullets, not orange check circles */
.cn-contentlistimg .cn-checklist { gap: var(--space-2); margin: 0 0 var(--space-6); }
.cn-contentlistimg .cn-checklist li { padding-left: 18px; color: var(--color-ink); font-size: var(--fs-sm); }
.cn-contentlistimg .cn-checklist li::before {
	content: "\2022";
	background: none;
	width: auto; height: auto;
	border-radius: 0;
	color: var(--color-ink);
	font-size: inherit;
	font-weight: 400;
	display: inline;
	left: 0; top: 0;
}
/* comp CONTACT US is the orange primary */
.cn-contentlistimg .cn-btn--dark { background: var(--color-accent); color: var(--color-deep-ink); }
.cn-contentlistimg .cn-btn--dark:hover { background: var(--color-deep-ink); color: #FFFFFF; }
.cn-contentlistimg__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* (duplicate .cn-btn--dark removed — canonical definition lives with the
 * button primitives at the top of this file; comp buttons are square.) */

/* --- faq_split --- */
.cn-faqsplit__grid {
	display: grid;
	grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
	column-gap: clamp(var(--space-8), 7vw, 85px);
	row-gap: var(--space-8);
	align-items: start;
}
.cn-faqsplit__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.75rem, 3vw, 2.5rem);
	line-height: 1.15;
	color: var(--color-ink);
	margin: 0;
}
.cn-faqsplit__list { display: flex; flex-direction: column; }
.cn-faqsplit__item {
	border-bottom: 1px solid var(--color-hairline);
	padding-block: var(--space-4);
}
.cn-faqsplit__item summary {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--space-4);
	cursor: pointer;
	list-style: none;
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: var(--fs-md);
	color: var(--color-deep-ink);
	padding: var(--space-3) 0;
}
.cn-faqsplit__item summary::-webkit-details-marker { display: none; }
.cn-faqsplit__toggle {
	font-size: 20px;
	color: var(--color-deep-ink);
	transition: transform var(--dur-fast);
	flex-shrink: 0;
}
.cn-faqsplit__item[open] .cn-faqsplit__toggle { transform: rotate(45deg); }
.cn-faqsplit__a {
	padding: var(--space-3) 0 var(--space-3);
	color: var(--color-warm-gray);
	font-size: var(--fs-sm);
	line-height: 1.6;
	max-width: 65ch;
}

/* --- testimonial_split_photo --- */
.cn-tsplit__h2 em { font-style: italic; }
.cn-tsplit__h2 {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(2rem, 3.5vw, 2.75rem);
	line-height: 1.15;
	color: var(--color-ink);
	text-align: center;
	margin: var(--space-3) auto var(--space-8);
}
.cn-tsplit__grid {
	display: grid;
	grid-template-columns: 310px minmax(0, 1fr);
	gap: clamp(2.5rem, 5.5vw, 80px);
	align-items: start;
	max-width: 830px;
	margin: 0 auto;
}
.cn-tsplit__media { aspect-ratio: 1/1; overflow: hidden; }
.cn-tsplit__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-tsplit__quotemark {
	font-family: var(--font-accent-text);
	font-size: 48px;
	line-height: 1;
	color: var(--color-warm-gray);
	display: block;
	margin-bottom: var(--space-3);
}
.cn-tsplit__quote {
	font-family: var(--font-accent-text);
	font-style: italic;
	font-size: clamp(1.125rem, 1.6vw, 1.375rem);
	line-height: 1.5;
	color: var(--color-deep-ink);
	margin: 0 0 var(--space-5);
	quotes: none;
	max-width: 50ch;
}
.cn-tsplit__attr { display: flex; flex-direction: column; gap: 4px; }
.cn-tsplit__attr-name {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: var(--fs-md);
	color: var(--color-deep-ink);
}
.cn-tsplit__attr-role {
	font-family: 'Montserrat', sans-serif;
	font-size: var(--fs-xs);
	color: var(--color-warm-gray);
}

/* --- meet_team_split (About page team preview) --- */
.cn-meetteam { padding-block: clamp(3.5rem, 6vw, 6rem) !important; }
/* Operator direction: this band reads muddy in Concrete (a border token
 * used as a surface). It sits on the page ground like every other band. */
/* Ground comes from the section payload now, so the alternation
 * system is the single source of truth for band colour. */
.cn-meetteam .cn-eyebrow { color: var(--color-orange-text); }
.cn-meetteam__side .cn-btn { margin-top: var(--space-4); align-self: flex-start; }
.cn-meetteam__head {
	display: grid;
	grid-template-columns: minmax(0, 360px) minmax(0, 380px) 1fr;
	gap: var(--space-8);
	align-items: start;
	margin-bottom: var(--space-7);
}
.cn-meetteam__head, .cn-meetteam__list { max-width: 1095px; margin-inline: auto; }
.cn-meetteam__h2 em { font-style: italic; }
.cn-meetteam__h2 {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(2rem, 3.5vw, 2.75rem);
	line-height: 1.15;
	color: var(--color-ink);
	margin: var(--space-3) 0 0;
}
.cn-meetteam__side {
	display: flex; flex-direction: column;
	align-items: flex-start;
	gap: var(--space-5);
}
.cn-meetteam__body {
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
	line-height: 1.55;
	max-width: 42ch;
}
.cn-meetteam__list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(1.5rem, 3.1vw, 45px);
	list-style: none;
	padding: 0;
}
.cn-meetteam__list li { text-align: center; }
.cn-meetteam__list a {
	display: flex; flex-direction: column;
	color: inherit; text-decoration: none;
}
.cn-meetteam__img { aspect-ratio: 4/5; overflow: hidden; margin-bottom: var(--space-3); }
.cn-meetteam__img img { width: 100%; height: 100%; object-fit: cover; }
.cn-meetteam__name {
	font-family: 'Montserrat', sans-serif;
	font-weight: 500;
	font-size: var(--fs-md);
	color: var(--color-deep-ink);
}
.cn-meetteam__role {
	font-family: 'Montserrat', sans-serif;
	font-size: var(--fs-xs);
	color: var(--color-warm-gray);
	margin-top: 2px;
}

/* --- Responsive --- */
@media (max-width: 75em) {
	.cn-teamgrid__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 40em) {
	.cn-process-row__list { grid-template-columns: minmax(0, 1fr); }
	.cn-teamgrid__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 60em) {
	.cn-abouthero3__grid,
	.cn-svchero__grid,
	.cn-contentlistimg__grid,
	.cn-faqsplit__grid,
	.cn-meetteam__head,
	.cn-photopair__stage,
	.cn-tsplit__grid { grid-template-columns: minmax(0, 1fr); }
	.cn-teamgrid__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cn-milestones__list { grid-template-columns: minmax(0, 1fr); }
	.cn-meetteam__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cn-process-row__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cn-svchero__side { margin-top: var(--space-5); }
	.cn-photopair__since { right: 8%; top: auto; bottom: 5%; }
}

/* ================================================================
 * v1.3.0 — Home rebuild (Taxro Fireshot 226 fidelity)
 * ================================================================ */

/* --- cn_hero_taxro (LAYOUT PORTED FROM TAXRO LIVE SITE 2026-07-13) ---
 * Content wrapper 1195px. Right column fixed 725px. Left column takes remainder.
 * Left column padding is asymmetric: heavy top, heavy left. H1 max 535px.
 * Body max 360px. Stat card 410px wide, padded 40/40/120/40.
 * Fonts and colors intentionally NOT changed (CN palette + Montserrat/Open Sans).
 */
.cn-heroT226 {
	padding: 0 !important;
	background: var(--color-parchment);
	/* Comp/Taxro: faint Concrete stroke closes the section. */
	border-bottom: 1px solid var(--color-hairline);
}
/* Inset that aligns full-bleed content with the boxed container's CONTENT edge
 * (container margin + gutter padding). */
.cn-heroT226 { --cn-bleed-inset: calc(max(0px, (100vw - var(--container-max)) / 2) + var(--container-gutter)); }
.cn-heroT226__grid {
	display: grid;
	/* FULL-BLEED (comp + Taxro): photo column runs to the viewport edge.
	 * Comp: photo column = 461/1440 = 32%. */
	grid-template-columns: minmax(0, 1fr) minmax(340px, 32%);
	gap: 0;
	max-width: none;
	margin: 0;
	padding: 0;
	align-items: stretch;
	min-height: min(88vh, 860px);
}
.cn-heroT226__lead {
	padding: clamp(72px, 11vw, 150px) 48px 0 0;
	display: flex;
	flex-direction: column;
	gap: clamp(48px, 6vw, 90px);
}
.cn-heroT226__h1 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.5rem, 4.8vw, 4.25rem);
	line-height: 1.05;
	color: var(--color-ink);
	letter-spacing: -0.005em;
	margin: 0;
	max-width: 560px;
}
/* Bottom strip: small photo flush to the LEFT + BOTTOM edge, body + CTA beside it.
 * A faint Concrete stroke runs along the strip's top, kissing the photo's
 * top edge (Taxro's button-area border — adds the layout structure). */
.cn-heroT226__promo {
	margin-top: auto;
	display: grid;
	/* Comp: small photo is 620×285 (63% of the lead column). The text column
	 * keeps a 200px floor so it can never collapse to words-per-line. */
	grid-template-columns: minmax(280px, 63%) minmax(200px, 1fr);
	gap: clamp(24px, 3.5vw, 50px);
	/* Comp: the strip is EXACTLY 285px tall — photo, text block, and the
	 * stat card all share the same top (hairline) and bottom (section edge). */
	height: 285px;
	align-items: stretch;
	max-width: none;
	border-top: 1px solid var(--color-hairline);
	/* Cancel the lead column's right padding so the hairline runs clean
	 * into the stat card's top-left corner (comp: line meets the card). */
	margin-right: -48px;
	padding-right: 48px;
	/* Surface swap vs the parchment hero ground: the CTA strip sits on white,
	 * the stat card carries the parchment (operator 2026-07-28). */
	background: var(--color-bg-surface);
}
.cn-heroT226__promo-img {
	height: 100%;
	overflow: hidden;
}
.cn-heroT226__promo-img img { width: 100%; height: 100%; object-fit: cover; }
.cn-heroT226__promo-body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 24px;
	padding-block: 0;
	max-width: 340px;
}
.cn-heroT226__promo-body p {
	font-size: 18px;
	line-height: 28px;
	color: var(--color-warm-gray);
	margin: 0;
	max-width: 320px;
}
/* Comp CTA: tracked-caps text link + orange circle arrow (not a filled bar). */
.cn-heroT226__promo-body .cn-btn.cn-btn--primary {
	background: transparent;
	color: var(--color-ink);
	padding: 0;
	overflow: visible;
	letter-spacing: 0.18em;
	gap: 0;
}
.cn-heroT226__promo-body .cn-btn.cn-btn--primary:hover { background: transparent; color: var(--color-ink); }
.cn-heroT226 .cn-btn__arrow {
	width: 48px; height: 48px;
	margin-left: 20px;
	font-size: 15px;
	transition: background var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.cn-heroT226__promo-body .cn-btn.cn-btn--primary:hover .cn-btn__arrow {
	background: var(--color-deep-ink);
	color: #FFFFFF;
	transform: translateX(4px);
}
.cn-heroT226__stage {
	position: relative;
	min-height: 620px;
	overflow: visible;
}
.cn-heroT226__img {
	position: absolute;
	inset: 0;
	overflow: hidden;
}
.cn-heroT226__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-heroT226__statcard {
	/* Comp: card is flush with the photo-column's LEFT boundary and the
	 * section bottom; its TOP aligns with the bottom-strip hairline
	 * (285px = the 620×285 promo photo's height), photo sliver right. */
	position: absolute;
	left: 0;
	bottom: 0;
	right: clamp(64px, 7vw, 100px);
	width: auto;
	height: 285px;
	background: var(--color-parchment);
	padding: 32px 44px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	box-shadow: none;
	z-index: 2;
}
/* Orange corner bracket — top-left L mark (comp + Taxro card signature). */
.cn-heroT226__statcard-corner {
	position: absolute;
	top: 16px; left: 16px;
	width: 30px; height: 4px;
	background: var(--color-orange-cta);
}
.cn-heroT226__statcard-corner::before {
	content: "";
	position: absolute;
	left: 0; top: 0;
	width: 4px; height: 30px;
	background: var(--color-orange-cta);
}
.cn-heroT226__statcard-row { display: flex; flex-direction: column; gap: 4px; }
.cn-heroT226__statcard-row + .cn-heroT226__statcard-row {
	margin-top: var(--space-4);
	padding-top: var(--space-4);
	border-top: 1px solid var(--color-hairline);
}
.cn-heroT226__statcard-row--avatars {
	flex-direction: row;
	align-items: center;
	gap: var(--space-4);
	justify-content: space-between;
}
.cn-heroT226__statcard-value {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(3rem, 4.5vw, 4rem);
	line-height: 1;
	color: var(--color-orange-cta);
	font-variant-numeric: tabular-nums; /* countdown digits don't jitter */
}
.cn-heroT226__statcard-label {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: 11px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--color-ink);
	line-height: 1.6;
	max-width: 24ch;
	margin-top: 12px;
}
.cn-heroT226__statcard-substat { display: flex; flex-direction: column; }
.cn-heroT226__statcard-subvalue {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: 22px;
	color: var(--color-orange-cta);
	line-height: 1;
}
.cn-heroT226__statcard-sublabel {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: 10px;
	color: var(--color-warm-gray);
	line-height: 1.35;
	margin-top: 4px;
	max-width: 18ch;
}
.cn-heroT226__statcard-avatars {
	display: flex;
	list-style: none;
	padding: 0; margin: 0;
}
.cn-heroT226__statcard-avatars li {
	width: 32px; height: 32px;
	border-radius: 50%;
	overflow: hidden;
	border: 2px solid var(--color-parchment);
	margin-left: -8px;
}
.cn-heroT226__statcard-avatars li:first-child { margin-left: 0; }
.cn-heroT226__statcard-avatars img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-btn--pill { border-radius: var(--radius-pill); align-self: flex-start; }

/* --- cn_partner_logos_v2 --- */
.cn-partnerlogos__grid {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: var(--space-8);
	align-items: center;
	padding-block: var(--space-6);
	border-block: 1px solid var(--color-hairline);
}
.cn-partnerlogos__list {
	display: flex;
	gap: clamp(var(--space-6), 4vw, var(--space-8));
	list-style: none;
	padding: 0; margin: 0;
	align-items: center;
	flex-wrap: wrap;
}
.cn-partnerlogos__list img {
	max-height: 32px;
	width: auto;
	opacity: 0.7;
	transition: opacity var(--dur-fast);
}
.cn-partnerlogos__list li:hover img { opacity: 1; }
.cn-partnerlogos__tagline {
	font-family: 'Montserrat', sans-serif;
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
	text-align: right;
	line-height: 1.4;
	max-width: 220px;
}
.cn-partnerlogos__tagline strong { color: var(--color-deep-ink); }

/* --- cn_review_services_row ---
 * Comp: review card 370px, then a WIDE gutter (~114px) so the service cards
 * align with the About text column above — grid continuity. */
.cn-revsvc__grid {
	display: grid;
	grid-template-columns: minmax(300px, 370px) 1fr;
	column-gap: clamp(48px, 7.9vw, 114px);
	row-gap: var(--space-6);
	align-items: stretch;
}
/* Google "G" roundel beside the rating label (comp shows the badge). */
.cn-revsvc__review-g {
	width: 36px; height: 36px;
	border-radius: 50%;
	background: #FFFFFF;
	border: 1px solid var(--color-hairline);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
}
.cn-revsvc__review-g svg { width: 20px; height: 20px; display: block; }
.cn-revsvc__review-toprow {
	display: flex;
	align-items: center;
	gap: var(--space-3);
}
.cn-revsvc__review {
	background: var(--color-page);
	border: 1px solid var(--color-hairline);
	padding: var(--space-6);
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
}
.cn-revsvc__review-header {
	display: flex; flex-direction: column;
	gap: var(--space-2);
}
.cn-revsvc__review-label {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: var(--fs-xs);
	color: var(--color-warm-gray);
	margin: 0;
}
.cn-revsvc__review-rating {
	font-family: 'Montserrat', sans-serif;
	font-size: var(--fs-lg);
	color: var(--color-deep-ink);
	margin: 0;
	display: flex; gap: var(--space-3); align-items: center;
}
.cn-revsvc__review-stars { color: var(--color-orange-cta); font-size: var(--fs-md); letter-spacing: 2px; }
.cn-revsvc__review-quote {
	font-family: var(--font-accent-text);
	font-style: italic;
	font-size: var(--fs-lg);
	line-height: 1.5;
	color: var(--color-deep-ink);
	margin: 0;
	position: relative;
	padding-top: 44px;
}
/* Taxro's ghost quote glyph — oversized, whisper-gray, behind the quote. */
.cn-revsvc__review-quote::before {
	content: "\201C";
	position: absolute;
	top: -8px;
	left: -8px;
	font-family: var(--font-accent-text);
	font-style: normal;
	font-size: 110px;
	line-height: 1;
	color: rgba(5, 21, 27, 0.07);
	pointer-events: none;
}
.cn-revsvc__review-quote::after { content: "\201D"; }
.cn-revsvc__review-footer {
	margin-top: auto;
	display: flex;
	align-items: center;
	gap: var(--space-3);
	justify-content: space-between;
}
.cn-revsvc__review-avatars {
	display: flex; list-style: none; padding: 0; margin: 0;
}
.cn-revsvc__review-avatars li {
	width: 32px; height: 32px;
	border-radius: 50%;
	overflow: hidden;
	border: 2px solid var(--color-page);
	margin-left: -8px;
}
.cn-revsvc__review-avatars li:first-child { margin-left: 0; }
.cn-revsvc__review-avatars img { width: 100%; height: 100%; object-fit: cover; }
/* Taxro attribution: serif name over muted role, set off by a hairline. */
.cn-revsvc__review-attr {
	font-family: 'Montserrat', sans-serif;
	font-size: var(--fs-xs);
	color: var(--color-deep-ink);
	text-align: left;
	border-left: 1px solid var(--color-hairline);
	padding-left: var(--space-4);
}
.cn-revsvc__review-attr strong {
	display: block;
	font-family: var(--font-accent-text);
	font-weight: 700;
	font-size: 17px;
	line-height: 1.4;
}
.cn-revsvc__review-attr span { color: var(--color-warm-gray); }
.cn-revsvc__services {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 45px; /* comp: 45px between the two service cards */
}
.cn-revsvc__service {
	background: var(--color-page);
	border: 1px solid var(--color-hairline);
	padding: var(--space-7) var(--space-6) var(--space-6);
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
	min-height: 340px;
}
/* Taxro gives the icon big breathing room before the title. */
.cn-revsvc__service-icon { width: 42px; height: 42px; margin-bottom: var(--space-5); }
.cn-revsvc__service-title {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-2xl);
	line-height: 1.2;
	color: var(--color-ink);
	margin: 0;
	max-width: 14ch;
}
.cn-revsvc__service-body {
	font-size: var(--fs-sm);
	line-height: 1.55;
	color: var(--color-warm-gray);
	margin: 0;
}
.cn-revsvc__service .cn-btn { margin-top: auto; align-self: flex-start; }

/* --- cn_dark_photo_award --- */
.cn-darkaward { padding: 0 !important; }
.cn-darkaward__stage {
	position: relative;
	width: 100%;
	height: 520px;
	overflow: hidden;
}
.cn-darkaward__stage img {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
}
/* Parallax plane: oversized wrapper gives the GSAP scrub vertical travel. */
.cn-darkaward__media {
	position: absolute;
	inset: -17% 0;  /* rate .12 */
}
.cn-darkaward__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cn-darkaward__stage::after {
	content: "";
	position: absolute; inset: 0;
	background: var(--color-deep-ink);
	opacity: var(--cn-overlay, 0.32);
}
.cn-darkaward__card {
	/* Restacked editorial card: bracket corner, serif stat over quiet rule, body, arrowlink. */
	position: absolute;
	right: var(--container-gutter);
	bottom: 0;
	background: var(--color-parchment);
	color: var(--color-deep-ink);
	padding: var(--space-6) var(--space-6) var(--space-5);
	width: 400px;
	z-index: 2;
	display: flex;
	flex-direction: column;
	gap: var(--space-3);
}
.cn-darkaward__corner {
	position: absolute;
	top: 14px; left: 14px;
	width: 22px; height: 22px;
	border-top: 2px solid var(--color-orange-cta);
	border-left: 2px solid var(--color-orange-cta);
}
.cn-darkaward__link { margin-top: var(--space-2); align-self: flex-start; font-size: var(--fs-xs); }
.cn-darkaward__wreath { color: var(--color-deep-ink); display: block; }
/* Comp variant: big stat number replaces the wreath emblem. */
.cn-darkaward__stat {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.25rem, 3.2vw, 2.75rem);
	line-height: 1;
	color: var(--color-deep-ink);
	padding: 0 0 var(--space-3);
	margin-left: 26px;
	border-bottom: 1px solid rgba(5, 21, 27, 0.12);
}
.cn-darkaward__stat em { font-family: var(--font-accent); font-style: italic; }
.cn-darkaward__body {
	font-size: var(--fs-sm);
	font-weight: 400;
	line-height: 1.55;
	color: var(--color-warm-gray);
	margin: 0;
	max-width: 34ch;
}

/* --- Coin pair (Taxro §0.8 motif): light counter circle + overlapping ink
 * icon coin. Shared by cn_glory_stats + cn_journal_recent. --- */
.cn-coinpair {
	display: inline-flex;
	align-items: center;
}
.cn-coinpair__counter {
	width: 90px; height: 90px;
	border-radius: 50%;
	background: #F5F5F5;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--font-accent);
	font-size: 1.25rem;
	color: var(--color-ink);
	z-index: 1;
}
.cn-coinpair__icon {
	width: 90px; height: 90px;
	border-radius: 50%;
	background: var(--color-deep-ink);
	color: #FFFFFF;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-left: -20px;
	z-index: 2;
}

/* --- cn_glory_stats (Taxro §09: centered serif H2 + hairline stat band) --- */
.cn-glorystats__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3.8vw, 3.4375rem);
	line-height: 1.1;
	color: var(--color-ink);
	text-align: center;
	max-width: 24ch;
	margin: 0 auto clamp(2.5rem, 4vw, 3.125rem);
}
.cn-glorystats__h2 em { font-style: italic; }
.cn-glorystats__list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 0;
	list-style: none;
	padding: 0; margin: 0;
	border-top: 1px solid var(--color-hairline);
}
.cn-glorystat {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
	padding: clamp(2.5rem, 4vw, 3.75rem) clamp(1.5rem, 4vw, 3.75rem) 0;
}
.cn-glorystat + .cn-glorystat { border-left: 1px solid var(--color-hairline); }
.cn-glorystat__label {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.375rem, 1.8vw, 1.625rem);
	color: var(--color-deep-ink);
	margin: 0;
}
.cn-glorystat__label em { font-style: italic; }
.cn-glorystat__body {
	font-size: var(--fs-sm);
	line-height: 1.5;
	color: var(--color-warm-gray);
	margin: 0;
	max-width: 34ch;
}

/* --- cn_journal_recent (Taxro §11: lead + coin LEFT, post rows RIGHT) --- */
.cn-journal__grid {
	display: grid;
	grid-template-columns: minmax(280px, 380px) 1fr;
	gap: clamp(3rem, 8vw, 7.5rem);
	align-items: start;
}
/* The lead column follows you to the end of the section while the entries
 * scroll past it, as in the reference. Falls back to normal flow once the
 * grid stacks. */
.cn-journal__lead {
	display: flex; flex-direction: column; gap: var(--space-4);
	position: sticky;
	top: clamp(6.5rem, 13vh, 9.5rem);
	align-self: start;
}
@media (max-width: 900px) { .cn-journal__lead { position: static; } }
.cn-journal__h2 {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(2.25rem, 3.4vw, 3.125rem);
	line-height: 1.1;
	color: var(--color-ink);
	margin: 0;
	max-width: 12ch;
}
.cn-journal__h2 em { font-style: italic; }
.cn-journal__body {
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
	line-height: 1.55;
	margin: 0;
	max-width: 34ch;
}
.cn-journal__coin { margin-top: var(--space-4); }
.cn-journal__list {
	display: flex;
	flex-direction: column;
	gap: 0;
	list-style: none;
	padding: 0; margin: 0;
}
.cn-journal__item {
	display: grid;
	grid-template-columns: minmax(150px, 190px) 1fr;
	gap: var(--space-6);
	padding-block: var(--space-6);
	border-top: 1px solid var(--color-hairline);
	align-items: start;
}
/* Byline column: brand-mark avatar + stacked "Written by / Name". */
.cn-journal__byline {
	display: grid;
	grid-template-columns: 44px 1fr;
	column-gap: var(--space-3);
	align-items: center;
}
.cn-journal__avatar {
	grid-row: 1 / span 2;
	width: 44px; height: 44px;
	border-radius: 50%;
	background: var(--color-orange-cta);
	position: relative;
}
.cn-journal__avatar::after {
	/* simplified CN mountain mark, punched in ink */
	content: "";
	position: absolute;
	left: 50%; top: 55%;
	transform: translate(-50%, -50%);
	width: 20px; height: 12px;
	background: var(--color-deep-ink);
	clip-path: polygon(0 100%, 32% 0, 55% 62%, 70% 30%, 100% 100%);
}
.cn-journal__byline-label {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: var(--fs-xs);
	color: var(--color-ink);
}
.cn-journal__byline-name {
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
}
.cn-journal__meta-line {
	display: flex;
	align-items: center;
	gap: var(--space-3);
	margin: 0 0 var(--space-3);
}
.cn-journal__cat {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: var(--fs-xs);
	color: var(--color-deep-ink);
	background: var(--color-parchment);
	padding: 4px 10px;
}
.cn-journal__meta-dash {
	width: 34px;
	border-top: 1px solid var(--color-hairline);
}
.cn-journal__date {
	font-size: var(--fs-xs);
	font-style: italic;
	color: var(--color-warm-gray);
}
.cn-journal__title {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.5rem, 2.1vw, 1.9375rem);
	line-height: 1.15;
	color: var(--color-ink);
	margin: 0 0 var(--space-3);
	max-width: 24ch;
}
.cn-journal__title a { color: inherit; text-decoration: none; transition: color var(--dur-fast) var(--ease-out); }
.cn-journal__title a:hover { color: var(--color-orange-cta); }
.cn-journal__excerpt {
	font-size: var(--fs-sm);
	line-height: 1.55;
	color: var(--color-warm-gray);
	margin: 0 0 var(--space-4);
	max-width: 62ch;
}
.cn-journal__more {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: var(--fs-xs);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--color-ink);
	text-decoration: none;
	transition: color var(--dur-fast) var(--ease-out);
}
.cn-journal__more span { color: var(--color-orange-cta); margin-left: 4px; }
.cn-journal__more:hover { color: var(--color-orange-cta); }

/* Headline band: H1 left, glassy aside right — one top-aligned grid row. */
.cn-heroT226__headrow {
	margin-left: var(--cn-bleed-inset);
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
	gap: clamp(32px, 5vw, 80px);
	align-items: start;
}
.cn-heroT226__aside {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-4);
	/* optically align the pill's cap with the H1 cap height */
	padding-top: clamp(4px, 0.8vw, 12px);
}
/* Aside-as-headline mode: single column, promoted scale. */
.cn-heroT226__headrow--single { grid-template-columns: minmax(0, 1fr); }
.cn-heroT226__aside--primary {
	padding-top: 0;
	gap: var(--space-5);
	max-width: 680px;
}
h1.cn-heroT226__aside-h {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.5rem, 4.6vw, 4.25rem);
	line-height: 1.08;
	letter-spacing: -0.005em;
	margin: 0;
}
/* Serif italic accent word stays Very Vogue (mixed-face signature). */
h1.cn-heroT226__aside-h em {
	font-family: var(--font-accent);
	font-style: italic;
	font-weight: 400;
}
.cn-heroT226__aside--primary .cn-heroT226__aside-p {
	font-size: var(--fs-md);
	line-height: 1.55;
	max-width: 44ch;
}
.cn-heroT226__badge {
	display: inline-block;
	padding: 9px 18px;
	border-radius: var(--radius-pill);
	background: rgba(255, 255, 255, 0.45);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	border: 1px solid rgba(5, 21, 27, 0.12);
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: 11px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-ink);
}
.cn-heroT226__aside-h {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.5rem, 2.2vw, 2rem);
	line-height: 1.18;
	color: var(--color-ink);
	margin: 0;
}
.cn-heroT226__aside-h em { font-style: italic; }
.cn-heroT226__aside-p {
	font-size: var(--fs-sm);
	line-height: 1.55;
	color: var(--color-warm-gray);
	margin: 0;
	max-width: 30ch;
}

/* Function-pattern hero stat cluster — stacked entries, hairline-separated,
 * absolutely placed in the headline zone's open right area. */
.cn-heroT226__lead { position: relative; }
.cn-heroT226__stats {
	position: absolute;
	top: clamp(80px, 12vw, 165px);
	right: clamp(24px, 4vw, 64px);
	width: min(240px, 26%);
	display: flex;
	flex-direction: column;
}
.cn-heroT226__stat {
	padding-block: 18px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.cn-heroT226__stat + .cn-heroT226__stat { border-top: 1px solid var(--color-hairline); }
.cn-heroT226__stat-value {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: clamp(1.375rem, 1.8vw, 1.625rem);
	line-height: 1;
	color: var(--color-ink);
}
.cn-heroT226__stat-label {
	font-size: var(--fs-xs);
	line-height: 1.45;
	color: var(--color-warm-gray);
	max-width: 22ch;
}
@media (max-width: 60em) {
	.cn-heroT226__stats {
		position: static;
		width: auto;
		flex-direction: row;
		gap: var(--space-6);
		margin: var(--space-5) var(--container-gutter) 0;
	}
	.cn-heroT226__headrow { grid-template-columns: minmax(0, 1fr); }
	.cn-heroT226__aside { margin: var(--space-4) var(--container-gutter) 0 0; padding-top: 0; }
	.cn-heroT226__stat { padding-block: 0; flex: 1; }
	.cn-heroT226__stat + .cn-heroT226__stat { border-top: 0; border-left: 1px solid var(--color-hairline); padding-left: var(--space-4); }
}


/* Mid-range refinement (960–1376px): tighter strip typography so the text
 * column fits the fixed 285px strip as the columns compress, and compact
 * buttons so nowrap labels fit narrowed cards. */
@media (max-width: 86em) and (min-width: 60em) {
	.cn-heroT226__promo { padding-right: 24px; margin-right: -24px; }
	.cn-heroT226__lead { padding-right: 24px; }
	.cn-heroT226__promo-body { gap: 18px; }
	.cn-heroT226__promo-body p { font-size: 16px; line-height: 25px; }
	.cn-btn { padding-inline: 18px; font-size: 11px; letter-spacing: 0.1em; }
}
/* 960–1120px: the two service cards can't fit side-by-side next to the
 * review card — stack them. */
@media (max-width: 70em) and (min-width: 60em) {
	.cn-revsvc__services { grid-template-columns: minmax(0, 1fr); }
	.cn-revsvc__service { min-height: 0; }
}

/* Responsive collapse */
@media (max-width: 60em) {
	.cn-heroT226__grid { grid-template-columns: minmax(0, 1fr); min-height: 0; }
	.cn-heroT226__lead { padding-top: 56px; gap: 40px; }
	.cn-heroT226__h1 { margin-right: var(--container-gutter); }
	.cn-heroT226__promo {
		grid-template-columns: minmax(0, 1fr);
		gap: 24px;
		height: auto;
		/* the desktop hairline-into-card negative margin must not widen mobile */
		margin-right: 0;
		padding-right: 0;
	}
	.cn-heroT226__promo-img { max-width: 100%; height: auto; aspect-ratio: 620 / 285; }
	.cn-heroT226__promo-body { margin-inline: var(--container-gutter); padding-block: 16px 40px; }
	/* Stacked: photo flows on top (static), white card follows below it —
	 * no absolute layering, no slivers, no forced min-width. */
	.cn-heroT226__stage { aspect-ratio: auto; min-height: 0; }
	.cn-heroT226__img { position: static; aspect-ratio: 4 / 3; }
	.cn-heroT226__statcard {
		position: static;
		margin-top: 0;
		max-width: none;
		width: auto;
		height: auto;
		padding: 40px var(--container-gutter);
	}
	/* Desktop-tuned hard line breaks strand single words on small screens. */
	.cn-heroT226__h1 br:not(.cn-hl-br),
	.cn-svchero__h1 br:not(.cn-hl-br),
	.cn-svclist-num__h2 br:not(.cn-hl-br),
	.cn-trust-splitic__h2 br:not(.cn-hl-br),
	.cn-team-headstrip__h2 br:not(.cn-hl-br),
	.cn-darkphotocta__h2 br:not(.cn-hl-br) { display: none; }
	.cn-partnerlogos__grid { grid-template-columns: minmax(0, 1fr); text-align: center; }
	.cn-partnerlogos__tagline { text-align: center; max-width: none; }
	.cn-partnerlogos__list { justify-content: center; }
	.cn-revsvc__grid { grid-template-columns: minmax(0, 1fr); }
	.cn-revsvc__services { grid-template-columns: minmax(0, 1fr); }
	.cn-glorystats__list { grid-template-columns: minmax(0, 1fr); border-top: 0; }
	.cn-glorystat { padding: var(--space-6) 0 0; border-top: 1px solid var(--color-hairline); }
	.cn-glorystat + .cn-glorystat { border-left: 0; }
	.cn-coinpair__counter, .cn-coinpair__icon { width: 72px; height: 72px; }
	.cn-journal__grid { grid-template-columns: minmax(0, 1fr); }
	.cn-journal__item { grid-template-columns: minmax(0, 1fr); gap: var(--space-4); }
	.cn-darkaward__card { position: static; margin: var(--space-5); max-width: none; }
	.cn-darkaward__stage { height: auto; padding-bottom: var(--space-5); }
}


/* Tax Detail comp: the process intro is a plain full-width sentence, not a display heading. */
.cn-process-row h2 {
	font-family: var(--font-sans);
	font-weight: 400;
	font-size: var(--fs-md);
	letter-spacing: 0;
	line-height: 1.5;
	color: var(--color-warm-gray);
	margin: 0;
	max-width: none;
}


/* ============================================================
 * dark_photo_card VARIANTS (core-4 comps). Base stays full-bleed 520px
 * with the cream right-center card — used by legacy pages.
 * -- alt:true  (About 68:209 §3): 465px band, dark #212121 note card
 *    left-of-center, light text.
 * -- invert:true (Tax Detail 68:381 §4): CONTAINED band at content width,
 *    61:25 ratio, deep-ink stat badge right-of-center, white text.
 * ============================================================ */
.cn-section--alt.cn-darkphotocard .cn-darkphotocard__stage { height: 465px; }
.cn-section--alt.cn-darkphotocard .cn-darkphotocard__card {
	left: 36%;
	right: auto;
	background: var(--color-near-black);
	max-width: 250px;
	padding: var(--space-5);
}
.cn-section--alt.cn-darkphotocard .cn-darkphotocard__p {
	color: #FAFAFA;
	font-weight: 400;
	font-size: var(--fs-sm);
	line-height: 1.5;
}
.cn-section--invert.cn-darkphotocard {
	padding-block: clamp(var(--space-7), 6vw, var(--space-9)) !important;
	/* invert here is only the ink-badge styling hook — the comp floats the
	 * contained band on the page ground, not a dark strip. */
	background: transparent;
	color: inherit;
}
.cn-section--invert.cn-darkphotocard .cn-darkphotocard__stage {
	width: min(calc(100% - 2 * var(--container-gutter)), calc(var(--container-max) - 2 * var(--container-gutter)));
	margin-inline: auto;
	height: auto;
	aspect-ratio: 61 / 25;
}
.cn-section--invert.cn-darkphotocard .cn-darkphotocard__card {
	background: var(--color-deep-ink);
	top: 39%;
	transform: none;
	right: 8%;
	width: clamp(260px, 24.6%, 300px);
	max-width: none;
	padding: 2.75rem 2.5rem 2.75rem 3.25rem;
}
.cn-section--invert.cn-darkphotocard .cn-darkphotocard__h {
	color: #FFFFFF;
	font-size: clamp(2.25rem, 3vw, 2.75rem);
}
.cn-section--invert.cn-darkphotocard .cn-darkphotocard__p { color: #FFFFFF; }
@media (max-width: 60em) {
	.cn-section--alt.cn-darkphotocard .cn-darkphotocard__card { position: static; margin: var(--space-5); }
	.cn-section--invert.cn-darkphotocard .cn-darkphotocard__stage { aspect-ratio: auto; min-height: 300px; width: calc(100% - 2 * var(--container-gutter)); }
	.cn-section--invert.cn-darkphotocard .cn-darkphotocard__card { position: static; margin: var(--space-5); width: auto; }
}


/* ================================================================
 * v1.9.0 — core-4 renderer: service_figures_list
 * ================================================================ */
/* --- service_figures_list (Services comp §2: figures LEFT, 7 numbered arrow rows RIGHT) --- */
.cn-svcfigs { padding-block: clamp(4rem, 9.7vw, 8.75rem); }
.cn-svcfigs__grid {
	display: grid;
	grid-template-columns: minmax(0, 620px) minmax(0, 520px);
	column-gap: clamp(3rem, 7.6vw, 6.875rem);
	align-items: start;
}
.cn-svcfigs__lead { padding-top: var(--space-5); }
.cn-svcfigs__figure { margin: 0; }
.cn-svcfigs__figure + .cn-svcfigs__figure { margin-top: clamp(3rem, 6.5vw, 5.8rem); }
.cn-svcfigs__img { overflow: hidden; }
.cn-svcfigs__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-svcfigs__figure--tall  .cn-svcfigs__img { aspect-ratio: 620 / 395; }
.cn-svcfigs__figure--strip .cn-svcfigs__img { aspect-ratio: 620 / 170; }
.cn-svcfigs__caption em { font-style: italic; }
.cn-svcfigs__caption {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.75rem, 2.5vw, 2.25rem);
	line-height: 1.18;
	color: var(--color-ink);
	max-width: 300px;
}
.cn-svcfigs__figure--tall  .cn-svcfigs__caption { margin-top: clamp(2rem, 5.2vw, 4.7rem); }
.cn-svcfigs__figure--strip .cn-svcfigs__caption { margin-top: clamp(1.5rem, 2.4vw, 2.2rem); }
.cn-svcfigs__list { display: flex; flex-direction: column; }
.cn-svcfigs__row {
	display: grid;
	grid-template-columns: 56px 46px minmax(0, 1fr) auto;
	column-gap: var(--space-4);
	align-items: center;
	padding-block: var(--space-6) var(--space-5);
	border-bottom: 1px solid var(--color-hairline);
}
.cn-svcfigs__row:not(:has(.cn-svcfigs__icon)) { grid-template-columns: 56px minmax(0, 1fr) auto; }
.cn-svcfigs__n {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	letter-spacing: 0.08em;
	color: var(--color-warm-gray);
}
.cn-svcfigs__title {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xl);
	line-height: 1.25;
	color: var(--color-ink);
	margin: 0 0 var(--space-4);
}
.cn-svcfigs__titlelink { color: inherit; text-decoration: none; }
.cn-svcfigs__titlelink:hover { color: var(--color-orange-cta); }
.cn-svcfigs__body {
	font-size: var(--fs-sm);
	line-height: 1.55;
	color: var(--color-warm-gray);
	max-width: 355px;
	margin: 0;
}
.cn-svcfigs__arrow {
	align-self: center;
	font-size: 1.25rem;
	line-height: 1;
	color: var(--color-ink);
}
@media (max-width: 60em) {
	.cn-svcfigs { padding-block: var(--space-8); }
	.cn-svcfigs__grid { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-7); }
	.cn-svcfigs__lead { padding-top: 0; }
	.cn-svcfigs__figure + .cn-svcfigs__figure { margin-top: var(--space-7); }
	.cn-svcfigs__caption { max-width: none; }
	.cn-svcfigs__caption br:not(.cn-hl-br) { display: none; }
	.cn-svcfigs__row { grid-template-columns: 48px minmax(0, 1fr) auto; }
	.cn-svcfigs__body { max-width: none; }
}


/* ================================================================
 * v1.9.0 — core-4 renderer: photo_dark_faq
 * ================================================================ */
/* --- photo_dark_faq (Services comp §3: full-bleed photo/ink accordion split, 720/720 @ 560 tall) --- */
.cn-photodarkfaq { padding: 0 !important; }
.cn-photodarkfaq__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	min-height: 560px;
}
.cn-photodarkfaq__media { overflow: hidden; }
.cn-photodarkfaq__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-photodarkfaq__panel {
	background: var(--color-deep-ink);
	color: #FFFFFF;
	padding: clamp(4rem, 8.3vw, 7.5rem) clamp(2rem, 5.9vw, 5.3rem) clamp(2rem, 4.2vw, 3.75rem);
}
.cn-photodarkfaq__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3.2vw, 2.875rem);
	line-height: 1.26;
	color: #FFFFFF;
	max-width: 440px;
	margin: 0 0 clamp(2rem, 3.3vw, 3rem);
}
.cn-photodarkfaq__list { max-width: 440px; display: flex; flex-direction: column; }
.cn-photodarkfaq__item { border-top: 1px solid rgba(255, 255, 255, 0.25); }
.cn-photodarkfaq__item summary {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--space-4);
	cursor: pointer;
	list-style: none;
	font-size: var(--fs-md);
	font-weight: 400;
	color: #FFFFFF;
	padding-block: var(--space-4);
}
.cn-photodarkfaq__item summary::-webkit-details-marker { display: none; }
.cn-photodarkfaq__toggle { font-size: 18px; color: #FFFFFF; flex-shrink: 0; transition: transform var(--dur-fast); }
.cn-photodarkfaq__item[open] .cn-photodarkfaq__toggle { transform: rotate(45deg); }
.cn-photodarkfaq__a {
	padding: 0 0 var(--space-4);
	font-size: var(--fs-sm);
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.72);
	max-width: 60ch;
}
.cn-photodarkfaq__a p { margin: 0; }
@media (max-width: 60em) {
	.cn-photodarkfaq__grid { grid-template-columns: minmax(0, 1fr); min-height: 0; }
	.cn-photodarkfaq__media { aspect-ratio: 4 / 3; }
	.cn-photodarkfaq__panel { padding: var(--space-7) var(--container-gutter); }
	.cn-photodarkfaq__h2, .cn-photodarkfaq__list { max-width: none; }
}


/* ================================================================
 * v1.9.0 — core-4 renderer: statement_band
 * ================================================================ */
/* --- statement_band (Services comp §4: 290-tall parchment strip, statement block at x=445 → 28.8% content offset) --- */
.cn-stmtband { padding-block: clamp(3rem, 4vw, 3.6rem); }
.cn-stmtband__inner { margin-left: 28.8%; }
.cn-stmtband__text {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.875rem, 2.7vw, 2.625rem);
	line-height: 1.2;
	color: var(--color-ink);
	max-width: 380px;
	margin: 0;
}
@media (max-width: 60em) {
	.cn-stmtband__inner { margin-left: 0; }
	.cn-stmtband__text { max-width: 24ch; }
	.cn-stmtband__text br:not(.cn-hl-br) { display: none; }
}


/* ================================================================
 * v1.9.0 — core-4 renderer: cta_giant
 * ================================================================ */
/* --- cta_giant (Services comp §5: centered eyebrow + 48px display 2-liner + orange button, ~235/387 air) --- */
.cn-ctagiant { padding-block: clamp(3.5rem, 8vw, 7.5rem) clamp(4rem, 9vw, 8.5rem); }
.cn-ctagiant__inner { text-align: center; }
.cn-ctagiant__eyebrow { margin-bottom: var(--space-5); }
.cn-ctagiant__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.25rem, 3.35vw, 3rem);
	line-height: 1.2;
	color: var(--color-ink);
	max-width: 920px;
	margin: 0 auto var(--space-6);
}
.cn-ctagiant__btn { min-width: 150px; }
.cn-ctagiant .cn-eyebrow { color: var(--color-muted-text); }
.cn-teamcard__name a { color: inherit; text-decoration: none; transition: color var(--dur-fast) var(--ease-out); }
.cn-teamcard__name a:hover { color: var(--color-orange-cta); }
/* The bio-link anchor must fill the aspect frame or img height:100% resolves
 * against an auto-height parent (grey gap under every linked portrait). */
.cn-teamcard__img a { display: block; height: 100%; }
@media (max-width: 60em) {
	.cn-ctagiant { padding-block: var(--space-9) var(--space-10); }
	.cn-ctagiant__h2 br:not(.cn-hl-br) { display: none; }
}


/* ================================================================
 * v1.9.0 — core-4 renderer: service_detail_hero
 * ================================================================ */
/* --- service_detail_hero (Service Detail comp 68:381 S1) ---
 * Parchment header band; contained image (comp 900/1220 = 73.8% of content,
 * 9:5); parchment ground stops partway down the image (comp: 290 of 500px of
 * image height on page ground -> min(21.5vw, 310px) from section bottom).
 * White note card floats above the image's top-right corner. */
.cn-svcdhero.cn-section {
	padding-block: clamp(3.5rem, 7vw, 6.25rem) 0;
	background: linear-gradient(
		to bottom,
		var(--color-parchment) calc(100% - min(21.5vw, 310px)),
		var(--color-page)      calc(100% - min(21.5vw, 310px))
	);
}
.cn-svcdhero__head {
	display: grid;
	grid-template-columns: minmax(180px, 350fr) minmax(0, 550fr) minmax(220px, 320fr);
	column-gap: var(--space-6);
	align-items: start;
}
.cn-svcdhero__eyebrow {
	color: var(--color-deep-ink);
	font-weight: var(--fw-semibold);
	letter-spacing: var(--tracking-eyebrow);
	margin: 14px 0 0; /* comp: eyebrow y=200 vs H1 y=180 */
}
.cn-svcdhero__h1 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.5rem, 4.6vw, 4.125rem); /* comp ~64-66px */
	line-height: 1.06;
	letter-spacing: -0.01em;
	color: var(--color-ink);
	margin: 0;
	/* 12ch was tuned for the shortest hub heads; approved service/industry
	 * headlines run longer and were setting 5-6 lines. 17ch keeps the
	 * editorial column narrow while holding locked copy to 3-4 lines. */
	max-width: 17ch;
}
.cn-svcdhero__note-col { padding-top: clamp(2rem, 8.3vw, 7.5rem); } /* comp: note y=300 vs H1 y=180 */
.cn-svcdhero__note {
	font-family: var(--font-accent-text);
	font-size: var(--fs-md);
	line-height: 1.5;
	color: var(--color-ink);
	max-width: 30ch; /* comp note w=260 */
	margin: 0 0 var(--space-3);
}
.cn-svcdhero__stage { position: relative; margin-top: clamp(3rem, 10.4vw, 9.375rem); } /* comp: header bottom ~370 -> image top 520 */
.cn-svcdhero__media { width: 73.8%; aspect-ratio: 9 / 5; overflow: hidden; }
.cn-svcdhero__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-svcdhero__card {
	position: absolute;
	top: clamp(-90px, -6.25vw, -40px); /* comp: card top 90px above image top */
	right: 1.5%;                       /* comp: card right edge 20/1220 in from content edge */
	width: clamp(280px, 29.5%, 384px); /* comp 360/1220 */
	background: #FFFFFF;
	padding: 3.5rem 2.5rem 3rem 2.75rem;
	z-index: 2;
}
.cn-svcdhero__card-h {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: clamp(1.375rem, 1.8vw, 1.625rem); /* comp ~26px */
	line-height: 1.15;
	color: var(--color-deep-ink);
	margin: 0 0 var(--space-2);
	max-width: 11ch; /* wraps 'Before the / deadline' like comp */
}
.cn-svcdhero__card-p {
	font-size: var(--fs-sm);
	line-height: 1.5;
	color: var(--color-warm-gray);
	margin: 0;
	max-width: 26ch;
}
@media (max-width: 60em) {
	.cn-svcdhero.cn-section {
		background: linear-gradient(
			to bottom,
			var(--color-parchment) calc(100% - 32vw),
			var(--color-page)      calc(100% - 32vw)
		);
	}
	.cn-svcdhero__head { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-3); }
	.cn-svcdhero__note-col { padding-top: var(--space-2); }
	.cn-svcdhero__stage { margin-top: var(--space-6); display: flex; flex-direction: column; }
	.cn-svcdhero__media { width: 100%; }
	.cn-svcdhero__card { position: static; order: -1; width: auto; margin: 0 0 var(--space-5); padding: var(--space-6); }
}

/* ================================================================
 * v1.10.0 — phase-3 CSS (refresh signatures + Industry/Location/Contact)
 * ================================================================ */

/* Services hero coin-pair slot (taxro service-style-2 counter) */
.cn-svchero__coin { display: flex; align-items: center; gap: var(--space-4); margin-top: var(--space-6); }
.cn-svchero__coin-label {
	font-family: var(--font-accent);
	font-size: clamp(1.25rem, 1.6vw, 1.5rem);
	line-height: 1.2;
	color: var(--color-deep-ink);
	max-width: 12ch;
}
.cn-svchero__coin-label em { font-style: italic; }

/* dark_photo_card parallax plane (mirrors .cn-darkaward__media) */
.cn-darkphotocard__media { position: absolute; inset: -13.5% 0; }  /* rate .10 */
.cn-darkphotocard__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

/* dark_photo_cta parallax plane */
.cn-darkphotocta__media { position: absolute; inset: -17% 0; }  /* rate .12 */
.cn-darkphotocta__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

/* -------- cn_testimonial (Team Detail quote, comp 68:549) -------- */
.cn-testimonial figure { max-width: 40rem; margin-inline: auto; text-align: center; }
.cn-testimonial figure::before {
	content: "\201D\201D";
	display: block;
	font-family: var(--font-accent, serif);
	font-size: 4.5rem;
	line-height: 0.6;
	letter-spacing: -0.12em;
	color: var(--color-warm-gray);
	margin-bottom: var(--space-5);
}
.cn-testimonial blockquote {
	font-family: var(--font-accent-text, serif);
	font-style: italic;
	font-size: clamp(1.25rem, 2vw, 1.5rem);
	line-height: 1.55;
	max-width: 34rem;
	margin-inline: auto;
	color: var(--color-warm-gray);
	quotes: "\201C" "\201D";
}
.cn-testimonial blockquote::before { content: open-quote; }
.cn-testimonial blockquote::after  { content: close-quote; }
.cn-testimonial figcaption {
	margin-top: var(--space-4);
	font-family: 'Montserrat', sans-serif;
	font-size: var(--fs-xs);
	font-weight: 600;
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-muted-gray);
}

/* Industry hero variant: flat page ground, wide cinematic media, long-title measure */
#industry-hero.cn-svcdhero.cn-section { background: var(--color-page); }
#industry-hero .cn-svcdhero__h1, .cn-indcase ~ * .cn-svcdhero__h1 { max-width: 26ch; font-size: clamp(2.25rem, 3.9vw, 3.5rem); }
#industry-hero .cn-svcdhero__media { width: 100%; aspect-ratio: 21 / 9; }
@media (max-width: 60em) {
	#industry-hero .cn-svcdhero__media { aspect-ratio: 3 / 2; }
}

/* --- map_embed (Location page): hairline-framed, desaturated at rest --- */
.cn-map-embed__frame {
	display: block;
	width: 100%;
	height: clamp(320px, 42vw, 460px);
	border: 1px solid var(--color-hairline);
	filter: grayscale(1) contrast(1.04);
	transition: filter .35s ease;
}
.cn-map-embed__frame:hover { filter: none; }

/* --- industry_case_study (Industry Detail comp 68:594: sticky meta rail LEFT, case narrative RIGHT) --- */
.cn-indcase__grid {
	display: grid;
	grid-template-columns: minmax(170px, 240px) minmax(0, 1fr);
	column-gap: clamp(2rem, 6vw, 5.5rem);
	align-items: start;
}
.cn-indcase__rail { position: sticky; top: clamp(5rem, 10vh, 7rem); }
.cn-indcase__raillist { display: flex; flex-direction: column; gap: var(--space-6); margin: 0; }
.cn-indcase__railitem { position: relative; border-left: 1px solid var(--color-hairline); padding-left: var(--space-4); }
.cn-indcase__railitem::before {
	/* orange tick riding the Concrete hairline */
	content: "";
	position: absolute; left: -1px; top: 2px;
	width: 1px; height: 14px;
	background: var(--color-orange-cta);
}
.cn-indcase__railitem dt {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-muted-text);
	margin: 0 0 var(--space-2);
}
.cn-indcase__railitem dd {
	margin: 0;
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-sm);
	line-height: 1.5;
	color: var(--color-deep-ink);
}
.cn-indcase__raillinks { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-1); }
.cn-indcase__raillinks a { text-decoration: none; color: var(--color-deep-ink); transition: color var(--dur-fast) var(--ease-out); }
.cn-indcase__raillinks a:hover { color: var(--color-orange-cta); }

.cn-indcase__body { display: flex; flex-direction: column; min-width: 0; }
.cn-indcase__body > * + * { margin-top: clamp(3rem, 6vw, 4.5rem); }

.cn-indcase__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.875rem, 3.1vw, 2.8125rem); /* comp ~44px */
	line-height: 1.12;
	letter-spacing: -0.01em;
	color: var(--color-ink);
	margin: 0;
	max-width: 24ch;
}
.cn-indcase__h2 em { font-family: var(--font-accent-text); font-style: italic; font-weight: 400; }
.cn-indcase__p {
	font-size: var(--fs-sm);
	line-height: 1.6;
	color: var(--color-warm-gray);
	margin: var(--space-4) 0 0;
	max-width: 58ch;
}

.cn-indcase__figure { margin: 0; }
.cn-indcase__figure img { width: 100%; height: auto; aspect-ratio: 16 / 7; object-fit: cover; display: block; }

.cn-indcase__proof {
	list-style: none;
	margin: 0;
	padding: clamp(2rem, 4vw, 3rem) 0 0;
	border-top: 1px solid var(--color-hairline);
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(1.5rem, 3vw, 2.5rem);
}
.cn-indcase__prooficon { width: 40px; height: 40px; object-fit: contain; margin-bottom: var(--space-3); }
.cn-indcase__prooftitle {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-sm);
	color: var(--color-deep-ink);
	margin: 0 0 var(--space-2);
	max-width: 12ch;
}
.cn-indcase__proofbody { font-size: var(--fs-xs); line-height: 1.55; color: var(--color-warm-gray); margin: 0; max-width: 26ch; }

.cn-indcase__pluslist { list-style: none; margin: var(--space-5) 0 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.cn-indcase__pluslist li { display: flex; gap: var(--space-3); font-size: var(--fs-sm); line-height: 1.5; color: var(--color-ink-soft); }
.cn-indcase__plus { color: var(--color-orange-cta); font-weight: var(--fw-semibold); }

.cn-indcase__cta { margin-top: var(--space-5); }

@media (max-width: 60em) {
	.cn-indcase__grid { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-7); }
	.cn-indcase__rail { position: static; }
	.cn-indcase__raillist { flex-direction: row; flex-wrap: wrap; gap: var(--space-5) var(--space-6); }
	.cn-indcase__railitem { flex: 1 1 160px; min-width: 160px; }
	.cn-indcase__proof { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 40em) {
	.cn-indcase__proof { grid-template-columns: minmax(0, 1fr); }
}

/* --- location_hero_collage (Location page hero, Figma 68:663) --- */
.cn-lochero__grid {
	display: grid;
	grid-template-columns: minmax(0, 45fr) minmax(0, 40fr);
	gap: clamp(2rem, 5vw, 4.5rem);
	align-items: center;
}
.cn-lochero__h1 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.25rem, 3.6vw, 3.25rem);
	line-height: 1.12;
	color: var(--color-ink);
	margin-block: var(--space-3) var(--space-4);
}
.cn-lochero__body {
	max-width: 42ch;
	color: var(--color-warm-gray);
	margin-bottom: var(--space-6);
}
.cn-lochero__stage { position: relative; }
.cn-lochero__media img { width: 100%; height: auto; display: block; }
.cn-lochero__collage {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--space-3);
}
.cn-lochero__tile { margin: 0; }
.cn-lochero__tile img { width: 100%; height: 100%; object-fit: cover; display: block; aspect-ratio: 1 / 1.05; }
.cn-lochero__card {
	position: absolute;
	top: 44%;
	left: -14%;
	width: min(58%, 15.5rem);
	background: var(--color-page);
	padding: var(--space-6);
	box-shadow: 0 18px 40px rgba(5, 21, 27, 0.08);
}
.cn-lochero__card p {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.375rem, 1.8vw, 1.75rem);
	line-height: 1.25;
	color: var(--color-ink);
	margin: 0;
}
.cn-lochero__card em {
	font-family: var(--font-accent-text);
	font-style: italic;
}
@media (max-width: 60em) {
	.cn-lochero__grid { grid-template-columns: minmax(0, 1fr); }
	.cn-lochero__h1 br:not(.cn-hl-br) { display: none; }
	.cn-lochero__card { position: static; margin-top: var(--space-4); width: auto; box-shadow: none; border: 1px solid var(--color-hairline); }
}

/* --- office_nap_card (Location page NAP) --- */
.cn-officenap__card {
	display: grid;
	grid-template-columns: minmax(0, 11fr) minmax(0, 9fr);
	gap: clamp(2rem, 4vw, 4rem);
	background: var(--color-page);
	border: 1px solid var(--color-hairline);
	padding: clamp(1.75rem, 4vw, 3.5rem);
}
.cn-officenap__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.75rem, 2.6vw, 2.375rem);
	line-height: 1.15;
	color: var(--color-ink);
	margin-block: var(--space-3) var(--space-4);
}
.cn-officenap__h2 em { font-family: var(--font-accent); font-style: italic; font-weight: inherit; }
.cn-officenap__body { color: var(--color-warm-gray); max-width: 46ch; margin-bottom: var(--space-6); }
.cn-officenap__facts {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--space-5) var(--space-6);
	align-content: start;
	border-left: 1px solid var(--color-hairline);
	padding-left: clamp(1.5rem, 3vw, 3rem);
	margin: 0;
}
.cn-officenap__fact dt {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-muted-text);
	margin-bottom: var(--space-2);
}
.cn-officenap__fact dd { margin: 0; font-size: var(--fs-md); color: var(--color-ink); }
.cn-officenap__fact address { font-style: normal; }
.cn-officenap__fact dd a { color: inherit; text-decoration: none; }
.cn-officenap__fact dd a:hover { color: var(--color-orange-cta); }
.cn-officenap__directions { display: inline-flex; margin-top: var(--space-3); }
@media (max-width: 60em) {
	.cn-officenap__card { grid-template-columns: minmax(0, 1fr); }
	.cn-officenap__facts { border-left: 0; padding-left: 0; border-top: 1px solid var(--color-hairline); padding-top: var(--space-5); }
}
@media (max-width: 40em) {
	.cn-officenap__facts { grid-template-columns: minmax(0, 1fr); }
}

/* --- contact_hero: parchment serif-accent opener (Contact) --- */
.cn-contacthero__h1 {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(2.75rem, 5.4vw, 4.5rem);
	line-height: 1.06;
	color: var(--color-ink);
	margin: 0 0 var(--space-5);
	max-width: 16ch;
}
.cn-contacthero__h1 em { font-style: italic; }
.cn-contacthero__lede {
	font-family: var(--font-accent-text);
	font-size: var(--fs-md);
	line-height: 1.55;
	color: var(--color-warm-gray);
	max-width: 46ch;
	margin: 0 0 var(--space-6);
}
.cn-contacthero__links { display: flex; flex-wrap: wrap; gap: var(--space-4) var(--space-6); }
@media (max-width: 60em) {
	.cn-contacthero__h1 br:not(.cn-hl-br) { display: none; }
	.cn-contacthero__links { flex-direction: column; align-items: flex-start; }
}

/* --- contact_channel_cards: Call / Email / Visit hairline band (Contact) --- */
.cn-contactchannels__list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	list-style: none;
	padding: 0;
	margin: 0;
	border-top: 1px solid var(--color-hairline);
	border-bottom: 1px solid var(--color-hairline);
}
.cn-contactchannel {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-3);
	padding: clamp(2.5rem, 4vw, 3.75rem) clamp(1.5rem, 3vw, 3rem);
}
.cn-contactchannel + .cn-contactchannel { border-left: 1px solid var(--color-hairline); }
.cn-contactchannel__icon { display: inline-flex; color: var(--color-orange-cta); }
.cn-contactchannel__label { margin-bottom: 0; }
.cn-contactchannel__title {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.5rem, 2vw, 1.75rem);
	color: var(--color-deep-ink);
	margin: 0;
}
.cn-contactchannel__title em { font-style: italic; }
.cn-contactchannel__value {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.125rem, 1.6vw, 1.375rem);
	color: var(--color-ink);
	text-decoration: none;
	border-bottom: 1px solid var(--color-hairline);
	padding-bottom: 2px;
	display: inline-flex;
	align-items: baseline;
	gap: var(--space-2);
	overflow-wrap: anywhere;
	transition: color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);
}
a.cn-contactchannel__value:hover { color: var(--color-orange-cta); border-color: var(--color-orange-cta); }
.cn-contactchannel__valuearrow { font-size: 0.85em; }
.cn-contactchannel__note {
	font-size: var(--fs-sm);
	line-height: 1.5;
	color: var(--color-warm-gray);
	max-width: 30ch;
	margin: 0;
}
@media (max-width: 60em) {
	.cn-contactchannels__list { grid-template-columns: minmax(0, 1fr); }
	.cn-contactchannel { padding-inline: 0; }
	.cn-contactchannel + .cn-contactchannel { border-left: 0; border-top: 1px solid var(--color-hairline); }
}

/* --- office_routing_grid: 6-office NAP routing grid (Contact) --- */
.cn-officegrid__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--space-6);
	margin-bottom: clamp(2rem, 4vw, 3.5rem);
}
.cn-officegrid__h2 {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(2rem, 3.4vw, 3rem);
	line-height: 1.1;
	color: var(--color-ink);
	margin: 0;
	max-width: 18ch;
}
.cn-officegrid__h2 em { font-style: italic; }
.cn-officegrid__coinwrap { display: flex; align-items: center; gap: var(--space-4); }
.cn-officegrid__coinlabel {
	font-family: var(--font-accent);
	font-size: var(--fs-md);
	color: var(--color-deep-ink);
	margin: 0;
	max-width: 12ch;
}
.cn-officegrid__coinlabel em { font-style: italic; }
.cn-officegrid__list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	list-style: none;
	padding: 0;
	margin: 0;
	border-top: 1px solid var(--color-hairline);
}
.cn-officecard {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-3);
	padding: clamp(2rem, 3.4vw, 3rem) clamp(1.25rem, 2.6vw, 2.5rem);
	border-bottom: 1px solid var(--color-hairline);
}
.cn-officecard:nth-child(3n+1) { padding-left: 0; }
.cn-officecard:not(:nth-child(3n+1)) { border-left: 1px solid var(--color-hairline); }
.cn-officecard__city {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.375rem, 1.8vw, 1.625rem);
	color: var(--color-deep-ink);
	margin: 0;
}
.cn-officecard__note {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-muted-text);
	margin: 0;
}
.cn-officecard__addr {
	font-style: normal;
	font-size: var(--fs-sm);
	line-height: 1.55;
	color: var(--color-warm-gray);
	margin: 0;
}
.cn-officecard__contacts { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-2) var(--space-4); }
.cn-officecard__phone {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-md);
	color: var(--color-ink);
	text-decoration: none;
	border-bottom: 1px solid var(--color-hairline);
	transition: color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);
}
.cn-officecard__phone:hover { color: var(--color-orange-cta); border-color: var(--color-orange-cta); }
.cn-officecard__fax { font-size: var(--fs-xs); color: var(--color-muted-text); }
.cn-officecard__link { margin-top: auto; }
@media (max-width: 60em) {
	.cn-officegrid__head { flex-direction: column; align-items: flex-start; }
	.cn-officegrid__list { grid-template-columns: minmax(0, 1fr); }
	.cn-officecard { padding-inline: 0; }
	.cn-officecard:not(:nth-child(3n+1)) { border-left: 0; }
}

/* ================================================================
 * v1.10.1 — cn_decision_marquee (Function Health-pattern translation)
 * ================================================================ */
.cn-decmarq__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2.25rem, 4vw, 3.25rem);
	line-height: 1.1;
	color: var(--color-ink);
	text-align: center;
	max-width: 22ch;
	margin: 0 auto var(--space-5);
}
.cn-decmarq__h2 em {
	font-family: var(--font-accent);
	font-style: italic;
	font-weight: 400;
	color: var(--color-orange-cta);
}
.cn-decmarq__chips {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: var(--space-4) var(--space-6);
	list-style: none;
	padding: 0; margin: 0 0 var(--space-7);
}
.cn-decmarq__chips li {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2);
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-medium);
	font-size: var(--fs-sm);
	color: var(--color-ink);
}
.cn-decmarq__chips svg { color: var(--color-orange-cta); flex: 0 0 auto; }

/* Marquee stage — full-bleed, two flowing rows, floating card center */
.cn-decmarq__stage {
	/* The running names are ONE compact band on the stage centreline; the
	 * card sits over the middle of it. Spreading the rows apart to clear
	 * the card left them stranded at its top and bottom edges. */
	position: relative;
	padding-block: var(--space-9);
	overflow: hidden;
	min-height: clamp(320px, 34vw, 420px);
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: clamp(1.5rem, 2.6vw, 2.5rem);
}
.cn-decmarq__row { overflow: hidden; }
.cn-decmarq__track { display: inline-flex; white-space: nowrap; }
.cn-decmarq__seq { display: inline-flex; align-items: center; animation: cn-marq 46s linear infinite; }
.cn-decmarq__row--rev .cn-decmarq__seq { animation-name: cn-marq-rev; animation-duration: 54s; }
@keyframes cn-marq     { from { transform: translateX(0); } to { transform: translateX(-100%); } }
@keyframes cn-marq-rev { from { transform: translateX(-100%); } to { transform: translateX(0); } }
.cn-decmarq__item {
	/* Reference reads as a legible running list, not a faint caps band:
	 * sentence case, ink-weight colour, normal tracking. */
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.05rem, 1.45vw, 1.35rem);
	letter-spacing: 0.01em;
	text-transform: none;
	color: var(--color-ink);
	padding-inline: var(--space-5);
	white-space: nowrap;
}
.cn-decmarq__dot { width: 4px; height: 4px; border-radius: 50%; background: var(--color-warm-gray); flex: 0 0 auto; opacity: .7; }
/* Motion pause: attribute set by brand.js toggle */
[data-cn-motion-paused] .cn-decmarq__seq { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .cn-decmarq__seq { animation: none; } }

/* Floating mini-chart card (FH's in-range card, CN semantics) */
.cn-decmarq__card {
	/* Floats over the running rows exactly as the reference does: a thin
	 * outlined plate, no elevation. The rows pass behind and are occluded,
	 * which reads as deliberate because the outline defines the edge. */
	position: absolute;
	left: 50%; top: 50%;
	transform: translate(-50%, -50%);
	z-index: 3;
	width: min(340px, 80vw);
	background: var(--color-page);
	border: 1px solid var(--color-line);
	border-radius: 16px;
	box-shadow: none;
	padding: var(--space-6) var(--space-5);
}
.cn-decmarq__card-label {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-xs);
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-warm-gray);
	margin: 0 0 var(--space-3);
	text-align: center;
}
.cn-decmarq__chart { position: relative; }
.cn-decmarq__journey { display: block; width: 100%; height: auto; }
.cn-decmarq__zone { fill: var(--color-emphasis); opacity: 0; }
.cn-decmarq__threshold { stroke: var(--color-line); stroke-width: 1; stroke-dasharray: 4 5; }
.cn-decmarq__bar--to { fill: none; stroke: var(--color-emphasis); stroke-width: 1.4; }
.cn-decmarq__bar--from { fill: var(--color-muted-gray); }
.cn-decmarq__zlabel, .cn-decmarq__xlabel {
	font-family: 'Montserrat', sans-serif;
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	fill: var(--color-muted-gray);
}
.cn-decmarq__xlabel { text-anchor: middle; font-size: 9.5px; opacity: 0; }
.cn-decmarq__drop { stroke: var(--color-line); stroke-width: 1; opacity: 0; }
.cn-decmarq__path { fill: none; stroke: var(--color-concrete, #C9C6BD); stroke-width: 1.4; stroke-dasharray: 1; stroke-dashoffset: 1; }
.cn-decmarq__node { opacity: 0; transform-origin: center; transform-box: fill-box; }
.cn-decmarq__node--n1 { fill: var(--color-muted-gray); }
.cn-decmarq__node--n2 { fill: var(--color-emphasis); }
.cn-decmarq__node--n3 { fill: var(--color-orange-cta); }
.cn-decmarq__ring { fill: none; stroke: var(--color-orange-cta); stroke-width: 1.4; opacity: 0; transform-origin: center; transform-box: fill-box; }

/* Choreography: zone tint -> path draw -> nodes pop l-to-r -> drops/labels -> endpoint pings forever */
/* The reference chart runs continuously rather than playing once. One 7s
 * cycle: the zone settles, the line draws, each node lands, the target
 * pulses, then it holds and resets. Every step is a share of the same
 * cycle so the parts stay in step with each other. */
.cn-decmarq__stage.cn-anim--play .cn-decmarq__zone   { animation: cn-zone-cycle 7s var(--ease-out) infinite; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__path   { animation: cn-plot-cycle 7s var(--ease-out) infinite; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__node--n1 { animation: cn-node-cycle 7s var(--ease-out) infinite; animation-delay: 0.15s; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__node--n2 { animation: cn-node-cycle 7s var(--ease-out) infinite; animation-delay: 0.7s; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__node--n3 { animation: cn-node-cycle 7s var(--ease-out) infinite; animation-delay: 1.25s; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__drop     { animation: cn-drop-cycle 7s var(--ease-out) infinite; animation-delay: 0.35s; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__drop--d2 { animation-delay: 0.9s; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__drop--d3 { animation-delay: 1.45s; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__xlabel   { animation: cn-drop-cycle 7s var(--ease-out) infinite; animation-delay: 1.5s; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__ring--a  { animation: cn-ring-cycle 7s var(--ease-out) infinite; animation-delay: 1.6s; }
.cn-decmarq__stage.cn-anim--play .cn-decmarq__ring--b  { animation: cn-ring-cycle 7s var(--ease-out) infinite; animation-delay: 2.3s; }

@keyframes cn-zone-cycle {
	0%, 4%   { opacity: 0; }
	14%, 86% { opacity: 0.05; }
	100%     { opacity: 0; }
}
@keyframes cn-plot-cycle {
	0%, 6%   { stroke-dashoffset: 1; }
	30%, 86% { stroke-dashoffset: 0; }
	96%,100% { stroke-dashoffset: 1; }
}
@keyframes cn-node-cycle {
	0%, 8%   { opacity: 0; transform: scale(.3); }
	16%, 86% { opacity: 1; transform: scale(1); }
	96%,100% { opacity: 0; transform: scale(.3); }
}
@keyframes cn-drop-cycle {
	0%, 10%  { opacity: 0; }
	20%, 86% { opacity: 1; }
	96%,100% { opacity: 0; }
}
@keyframes cn-ring-cycle {
	0%, 22%  { opacity: 0; transform: scale(1); }
	30%      { opacity: .55; transform: scale(1); }
	62%      { opacity: 0;   transform: scale(2.5); }
	100%     { opacity: 0;   transform: scale(1); }
}
[data-cn-motion-paused] .cn-decmarq__chart * { animation-play-state: paused !important; }
@keyframes cn-plotline { to { stroke-dashoffset: 0; } }
@keyframes cn-nodepop  { from { opacity: 0; transform: scale(.3); } to { opacity: 1; transform: scale(1); } }
@keyframes cn-zonefade { to { opacity: 0.05; } }
@keyframes cn-dropfade { to { opacity: 1; } }
@keyframes cn-chartping {
	0%   { opacity: 0.85; transform: scale(1); }
	65%  { opacity: 0; transform: scale(3.1); }
	100% { opacity: 0; transform: scale(3.1); }
}
@media (prefers-reduced-motion: reduce) {
	.cn-decmarq__path { stroke-dashoffset: 0; }
	.cn-decmarq__zone { opacity: 0.05; }
	.cn-decmarq__node, .cn-decmarq__drop, .cn-decmarq__xlabel { opacity: 1; animation: none !important; }
	.cn-decmarq__ring { animation: none !important; opacity: 0; }
}

/* Pause control */
.cn-decmarq__pause-row { text-align: center; margin-top: var(--space-4); }
.cn-decmarq__pause {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2);
	font-family: 'Montserrat', sans-serif;
	font-size: 10px;
	font-weight: var(--fw-semibold);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--color-warm-gray);
}
.cn-decmarq__pause:hover { color: var(--color-ink); }
.cn-decmarq__pause-icon {
	width: 14px; height: 14px;
	border: 1px solid currentColor;
	border-radius: 50%;
	position: relative;
}
.cn-decmarq__pause-icon::before, .cn-decmarq__pause-icon::after {
	content: "";
	position: absolute;
	top: 4px; bottom: 4px;
	width: 1.5px;
	background: currentColor;
}
.cn-decmarq__pause-icon::before { left: 4.5px; }
.cn-decmarq__pause-icon::after  { right: 4.5px; }

/* Decision cards under the stage: FH breathing room, CN square bones */
.cn-decmarq__cards { margin-top: var(--space-7); }

@media (max-width: 60em) {
	.cn-decmarq__card { position: static; transform: none; width: auto; margin: var(--space-5) var(--container-gutter) 0; }
	.cn-decmarq__stage { padding-block: var(--space-6); }
}

/* ================================================================
 * v1.10.2 — step cards (Function pattern) + comparison table
 * ================================================================ */
/* --- process_row v2: cn-steps --- */
.cn-steps__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.75rem, 2.6vw, 2.5rem);
	line-height: 1.2;
	text-align: center;
	max-width: 30ch;
	margin: 0 auto clamp(2.5rem, 4vw, 3.5rem);
	color: var(--color-ink);
}
.cn-steps__h2 em { font-family: var(--font-accent); font-style: italic; font-weight: 400; }
.cn-steps__list {
	list-style: none;
	padding: 0; margin: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	gap: var(--space-5);
}
.cn-steps__card {
	background: var(--color-parchment);
	padding: var(--space-6) var(--space-5) var(--space-5);
	text-align: center;
	display: flex;
	flex-direction: column;
}
.cn-steps__n {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: 12px;
	letter-spacing: 0.2em;
	color: var(--color-warm-gray);
	margin-bottom: var(--space-3);
}
.cn-steps__title {
	font-family: var(--font-accent);
	font-weight: 400;
	font-size: clamp(1.25rem, 1.8vw, 1.625rem);
	line-height: 1.2;
	color: var(--color-ink);
	margin: 0 0 var(--space-2);
}
.cn-steps__body {
	font-size: var(--fs-sm);
	color: var(--color-warm-gray);
	line-height: 1.5;
	margin: 0 auto;
	max-width: 30ch;
}
.cn-steps__svg { display: block; margin-top: auto; padding-top: var(--space-5); }
.cn-steps__svg svg { width: 100%; max-width: 230px; height: auto; margin: 0 auto; display: block; }
.cn-steps__svg text { font-family: 'Public Sans', sans-serif; }

/* SVG choreography — paused until the card plays, honors reduced motion. */
.cn-steps__svg .cnsvg-day,
.cn-steps__svg .cnsvg-time,
.cn-steps__svg .cnsvg-plan { opacity: 0; animation: cnsvg-rise 500ms var(--ease-out) forwards paused; }
.cn-steps__svg .cnsvg-day--pick   { animation: cnsvg-pick 700ms var(--ease-out) 900ms forwards paused; opacity: 1; }
.cn-steps__svg .cnsvg-time--pick  { animation: cnsvg-pick 700ms var(--ease-out) 1400ms forwards paused; opacity: 1; }
.cn-steps__svg .cnsvg-day:nth-child(1)  { animation-delay: 100ms; }
.cn-steps__svg .cnsvg-day:nth-child(2)  { animation-delay: 200ms; }
.cn-steps__svg .cnsvg-day:nth-child(3)  { animation-delay: 300ms; }
.cn-steps__svg .cnsvg-day:nth-child(4)  { animation-delay: 400ms; }
.cn-steps__svg .cnsvg-day:nth-child(5)  { animation-delay: 500ms; }
.cn-steps__svg .cnsvg-time:nth-of-type(6) { animation-delay: 600ms; }
.cn-steps__svg .cnsvg-time:nth-of-type(7) { animation-delay: 700ms; }
.cn-steps__svg .cnsvg-time:nth-of-type(8) { animation-delay: 800ms; }
.cn-steps__svg .cnsvg-line { stroke-dasharray: 260; stroke-dashoffset: 260; animation: cnsvg-draw 1400ms var(--ease-out) 300ms forwards paused; }
.cn-steps__svg .cnsvg-dot { opacity: 0; animation: cnsvg-pop 400ms var(--ease-out) forwards paused; }
.cn-steps__svg .cnsvg-dot--1 { animation-delay: 600ms; }
.cn-steps__svg .cnsvg-dot--2 { animation-delay: 850ms; }
.cn-steps__svg .cnsvg-dot--3 { animation-delay: 1100ms; }
.cn-steps__svg .cnsvg-dot--4 { animation-delay: 1500ms; }
.cn-steps__svg .cnsvg-plan--1 { animation-delay: 200ms; }
.cn-steps__svg .cnsvg-plan--2 { animation-delay: 450ms; }
.cn-steps__svg .cnsvg-plan--3 { animation-delay: 700ms; }
.cn-steps__svg .cnsvg-ring { stroke-dasharray: 214; stroke-dashoffset: 214; animation: cnsvg-draw 1100ms var(--ease-out) 200ms forwards paused; }
.cn-steps__svg .cnsvg-tick { stroke-dasharray: 46; stroke-dashoffset: 46; animation: cnsvg-draw 500ms var(--ease-out) 1100ms forwards paused; }
.cn-anim--play .cn-steps__svg .cnsvg-day,
.cn-anim--play .cn-steps__svg .cnsvg-time,
.cn-anim--play .cn-steps__svg .cnsvg-plan,
.cn-anim--play .cn-steps__svg .cnsvg-line,
.cn-anim--play .cn-steps__svg .cnsvg-dot,
.cn-anim--play .cn-steps__svg .cnsvg-ring,
.cn-anim--play .cn-steps__svg .cnsvg-tick { animation-play-state: running; }
@keyframes cnsvg-rise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes cnsvg-pop  { from { opacity: 0; transform: scale(.4); transform-origin: center; } to { opacity: 1; transform: scale(1); } }
@keyframes cnsvg-draw { to { stroke-dashoffset: 0; } }
@keyframes cnsvg-pick { 0% { transform: scale(1); } 45% { transform: scale(1.12); } 100% { transform: scale(1.05); } }
@media (prefers-reduced-motion: reduce) {
	.cn-steps__svg * { animation: none !important; opacity: 1 !important; stroke-dashoffset: 0 !important; }
}

/* --- cn_comparison_table --- */
.cn-compare__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.875rem, 3vw, 2.75rem);
	line-height: 1.15;
	text-align: center;
	color: var(--color-ink);
	max-width: 26ch;
	margin: 0 auto clamp(3rem, 5vw, 4.5rem);
}
.cn-compare__h2 em { font-family: var(--font-accent); font-style: italic; font-weight: 400; }
.cn-compare__table {
	max-width: 880px;
	/* top margin = clearance for the elevated ink column poking above the panel */
	margin: 34px auto 0;
	position: relative;
	/* Function-pattern panel: soft tinted card with rounded corners */
	background: rgba(5, 21, 27, 0.045);
	border-radius: 24px;
	padding: 0 26px 8px;
}
/* Continuous highlight fade over the stacked ink cells (single overlay, no per-cell banding). */
.cn-compare__table::after {
	content: '';
	position: absolute;
	right: calc(26px + 150px);
	width: 150px;
	top: -34px;
	bottom: 8px;
	background: linear-gradient(180deg, rgba(244, 241, 235, 0.16), rgba(244, 241, 235, 0) 46%);
	border-radius: 18px 18px 14px 14px;
	pointer-events: none;
}
.cn-compare__row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 150px 150px;
	align-items: center;
	border-bottom: 1px solid var(--color-hairline);
}
.cn-compare__row--head { border-bottom: 0; }
.cn-compare__row--last { border-bottom: 0; }
.cn-compare__label {
	font-size: var(--fs-md);
	color: var(--color-ink);
	padding: 18px 20px 18px 0;
	text-align: left;
}
.cn-compare__us, .cn-compare__them {
	display: flex;
	align-items: center;
	justify-content: center;
	align-self: stretch;
	padding: 14px 10px;
}
.cn-compare__us {
	background: var(--color-deep-ink);
	color: #FFFFFF;
	/* side glow clipped at cell top/bottom so stacked cells cast one seamless shadow */
	box-shadow: 0 0 34px rgba(5, 21, 27, 0.30);
	clip-path: inset(0 -60px);
}
.cn-compare__us strong { font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 15px; }
.cn-compare__us--head {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	/* elevated: extends above the panel */
	margin-top: -34px;
	padding-top: 24px;
	padding-bottom: 24px;
	border-radius: 18px 18px 0 0;
	clip-path: inset(-60px -60px 0);
}
.cn-compare__row--last .cn-compare__us {
	padding-bottom: 30px;
	border-radius: 0 0 14px 14px;
	clip-path: inset(0 -60px -60px);
}
.cn-compare__them { color: var(--color-warm-gray); font-size: var(--fs-sm); text-align: center; }
.cn-compare__them--head {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--color-muted-gray);
}
.cn-compare__note {
	text-align: center;
	font-size: var(--fs-xs);
	color: var(--color-muted-text);
	margin: var(--space-5) auto 0;
	max-width: 60ch;
}
@media (max-width: 40em) {
	.cn-compare__row { grid-template-columns: minmax(0, 1fr) 76px 76px; }
	.cn-compare__table { padding: 0 14px 6px; border-radius: 18px; }
	.cn-compare__table::after { right: calc(14px + 76px); width: 76px; bottom: 6px; }
	.cn-compare__label { font-size: var(--fs-sm); padding-right: 10px; }
	.cn-compare__us strong { font-size: 12px; }
	.cn-compare__us--head, .cn-compare__them--head { font-size: 9px; letter-spacing: 0.1em; }
}


/* ================================================================
 * v1.11.0 — Phase B: post template + insights index
 * ================================================================ */
.cn-post__header { border-bottom: 1px solid var(--color-hairline); }
.cn-post__title {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3.6vw, 3.25rem);
	line-height: 1.12;
	color: var(--color-ink);
	margin: var(--space-4) 0 var(--space-5);
	max-width: 24ch;
}
.cn-post__byline { margin-top: var(--space-2); }
.cn-post__prose {
	font-size: var(--fs-md);
	line-height: 1.7;
	color: var(--color-warm-gray);
}
.cn-post__prose h2, .cn-post__prose h3 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	color: var(--color-ink);
	margin: var(--space-7) 0 var(--space-4);
	line-height: 1.2;
}
.cn-post__prose h2 { font-size: clamp(1.5rem, 2.2vw, 2rem); }
.cn-post__prose h3 { font-size: clamp(1.25rem, 1.8vw, 1.5rem); }
.cn-post__prose p + p { margin-top: var(--space-4); }
.cn-post__prose ul, .cn-post__prose ol { padding-left: var(--space-6); margin: var(--space-4) 0; }
.cn-post__prose li + li { margin-top: var(--space-2); }
.cn-post__prose a { color: var(--color-ink); }
.cn-post__prose figure { margin: var(--space-6) 0; }
.cn-post__prose img { width: 100%; height: auto; }
.cn-post__prose blockquote {
	font-family: var(--font-accent-text);
	font-style: italic;
	font-size: var(--fs-lg);
	color: var(--color-ink);
	border-left: 3px solid var(--color-orange-cta);
	padding-left: var(--space-5);
	margin: var(--space-6) 0;
}
.cn-post__back { margin-top: var(--space-7); }
.cn-post__related .cn-journal__h2 { margin-bottom: var(--space-6); }
.cn-post__related-list { max-width: 880px; }

/* insights index */
.cn-insights__head { max-width: 760px; margin-bottom: clamp(2.5rem, 4vw, 3.5rem); }
.cn-insights__h1 { max-width: 18ch; }
.cn-insights__body { max-width: 52ch; }
.cn-insights__chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2);
	margin-top: var(--space-5);
}
.cn-insights__chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 8px 16px;
	border: 1px solid var(--color-hairline);
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-medium);
	font-size: 12px;
	letter-spacing: 0.04em;
	color: var(--color-warm-gray);
	text-decoration: none;
	transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);
}
.cn-insights__chip span { font-size: 10px; color: var(--color-muted-text); }
.cn-insights__chip:hover { border-color: var(--color-deep-ink); color: var(--color-deep-ink); }
.cn-insights__chip.is-on { background: var(--color-deep-ink); border-color: var(--color-deep-ink); color: #FFFFFF; }
.cn-insights__chip.is-on span { color: var(--color-orange-cta); }
/* 3-column card grid; serif-italic titles (Very Vogue). */
.cn-insights__list {
	max-width: none;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--space-5);
}
.cn-insights__list .cn-journal__item {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--color-hairline);
	border-bottom: 1px solid var(--color-hairline);
	padding: var(--space-5);
	grid-template-columns: none;
	gap: 0;
}
.cn-insights__list .cn-journal__title {
	font-family: var(--font-accent);
	font-style: italic;
	font-weight: 400;
	font-size: clamp(1.25rem, 1.7vw, 1.5rem);
	line-height: 1.25;
	margin: var(--space-2) 0 var(--space-3);
}
.cn-insights__list .cn-journal__excerpt { font-size: var(--fs-sm); }
.cn-insights__list .cn-journal__byline {
	order: 10;
	margin-top: auto;
	padding-top: var(--space-4);
	border-top: 1px solid var(--color-hairline);
	margin-bottom: 0;
}
.cn-insights__list .cn-journal__content { display: flex; flex-direction: column; flex: 1 1 auto; }
.cn-insights__list .cn-journal__more { margin-top: var(--space-3); margin-bottom: var(--space-4); }
@media (max-width: 74em) { .cn-insights__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 48em) { .cn-insights__list { grid-template-columns: minmax(0, 1fr); } }
.cn-insights__pager {
	display: flex;
	gap: var(--space-2);
	margin-top: var(--space-7);
}
.cn-insights__page {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px; height: 40px;
	border: 1px solid var(--color-hairline);
	font-family: 'Montserrat', sans-serif;
	font-size: 13px;
	color: var(--color-warm-gray);
	text-decoration: none;
	transition: all var(--dur-fast) var(--ease-out);
}
.cn-insights__page:hover { border-color: var(--color-deep-ink); color: var(--color-deep-ink); }
.cn-insights__page.is-on { background: var(--color-orange-cta); border-color: var(--color-orange-cta); color: var(--color-deep-ink); }
.cn-insights__none { color: var(--color-warm-gray); }

/* ================================================================
 * Editorial H1 system (2026-07-24): tracked caps, light weight —
 * serif italic <em> accents stay lowercase Very Vogue for contrast.
 * ================================================================ */
h1.cn-heroT226__aside-h,
.cn-svcdhero__h1,
.cn-abouthero3__h1,
.cn-lochero__h1,
.cn-posthero__h1,
.cn-person-hero .cn-display {
	text-transform: uppercase;
	letter-spacing: 0.09em;
	font-weight: var(--fw-light);
}
h1.cn-heroT226__aside-h em,
.cn-svcdhero__h1 em,
.cn-abouthero3__h1 em,
.cn-lochero__h1 em,
.cn-posthero__h1 em {
	font-family: var(--font-accent);
	font-style: italic;
	font-weight: 400;
	text-transform: none;
	letter-spacing: 0;
	font-size: 1.06em;
}
/* Caps run wider — pull display max sizes in a step. */
h1.cn-heroT226__aside-h { font-size: clamp(1.875rem, 3vw, 2.75rem); line-height: 1.22; }
.cn-heroT226__aside--primary { max-width: 760px; }
.cn-heroT226__aside-ctas { display: flex; gap: var(--space-3); flex-wrap: wrap; margin-top: var(--space-2); }
.cn-heroT226__aside-proof {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--color-warm-gray);
	margin: var(--space-4) 0 0;
}
.cn-svcdhero__h1 { font-size: clamp(2rem, 3.6vw, 3.25rem); }
.cn-abouthero3__h1 { font-size: clamp(2rem, 3.6vw, 3.25rem); }

/* ================================================================
 * Extended menu (Function pattern): hamburger → full-width panel
 * ================================================================ */
.cn-site-header__menu {
	display: inline-flex;
	flex-direction: column;
	justify-content: center;
	gap: 6px;
	width: 40px; height: 40px;
	padding: 9px;
}
.cn-site-header__menu span {
	display: block;
	width: 100%; height: 2px;
	background: var(--color-deep-ink);
	transition: transform var(--dur-base) var(--ease-out);
}
.cn-site-header__menu[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
.cn-site-header__menu[aria-expanded="true"] span:last-child  { transform: translateY(-4px) rotate(-45deg); }
@media (max-width: 64em) { .cn-site-header__menu { display: none; } }

.cn-extended-panel {
	position: absolute;
	top: 100%; left: 0; right: 0;
	background: var(--color-surface);
	border-bottom: 1px solid var(--color-hairline);
	box-shadow: var(--shadow-3);
	z-index: calc(var(--z-nav) - 1);
}
.cn-extended-panel[hidden] { display: none; }
.cn-extended-panel__grid {
	display: grid;
	grid-template-columns: 1fr 1fr 1.6fr;
	gap: clamp(32px, 5vw, 80px);
	padding-block: var(--space-7);
}
.cn-extended-panel__label {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: 11px;
	letter-spacing: var(--tracking-eyebrow);
	text-transform: uppercase;
	color: var(--color-muted-gray);
	margin: 0 0 var(--space-4);
}
.cn-extended-panel__col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.cn-extended-panel__col a {
	font-size: var(--fs-md);
	color: var(--color-ink);
	text-decoration: none;
	transition: color var(--dur-fast) var(--ease-out);
}
.cn-extended-panel__col a:hover { color: var(--color-orange-cta); }
.cn-extended-panel__feature {
	display: grid;
	grid-template-columns: 1fr 180px;
	gap: var(--space-5);
	align-items: center;
	background: var(--color-parchment);
	padding: var(--space-5) var(--space-6);
	text-decoration: none;
	transition: background var(--dur-fast) var(--ease-out);
}
.cn-extended-panel__feature:hover { background: #EFEBE2; }
.cn-extended-panel__feature-h {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: var(--fs-2xl);
	line-height: 1.2;
	color: var(--color-ink);
	margin: 0 0 var(--space-4);
}
.cn-extended-panel__feature-h em { font-family: var(--font-accent); font-style: italic; }
.cn-extended-panel__feature-link {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: 12px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--color-ink);
	border-bottom: 1px solid var(--color-orange-cta);
	padding-bottom: 2px;
}
.cn-extended-panel__feature-img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }

/* ============================================================
 * Editorial emphasis system: an <em> inside any heading renders
 * Very Vogue serif italic in ember; the heading base stays
 * Montserrat. Photo/dark blocks keep the em in the heading color
 * so the accent never fights an overlay.
 * ============================================================ */
.cn-section :is(h1, h2, h3, h4) em,
.cn-extended-panel__feature-h em {
	font-family: var(--font-accent);
	font-style: italic;
	font-weight: 400;
	text-transform: none;
	letter-spacing: normal;
	color: var(--color-emphasis);
}
.cn-section--invert :is(h1, h2, h3, h4) em,
.cn-section .cn-darkphotocta__h2 em,
.cn-section .cn-photodarkfaq__h2 em,
.cn-section .cn-posthero__h1 em,
.cn-section .cn-darkaward__h2 em {
	color: inherit;
}

/* Newsletter subscribe feedback */
/* Reserves its line so a reply does not shove the footer around (CLS). */
.cn-nl-msg {
	font-size: var(--fs-xs);
	color: var(--color-warm-gray);
	margin: var(--space-3) 0 0;
	min-height: 1.4em;
	line-height: 1.4;
}
/* --ok inherited deep ink, which is invisible against the near-black footer.
 * Each surface states its own colour rather than relying on inheritance. */
.cn-nl-msg--ok  { color: var(--color-deep-ink); font-weight: 600; }
.cn-nl-msg--err { color: #B3261E; font-weight: 600; }
/* Base first: these carry equal specificity, so the modifiers must come
 * after the surface default or the default silently wins. */
.cn-site-footer .cn-nl-msg      { color: var(--color-muted-gray); }
.cn-site-footer .cn-nl-msg--ok  { color: var(--color-orange-cta); }
.cn-site-footer .cn-nl-msg--err { color: #FFB4AB; }
.cn-footer-nl input[aria-invalid="true"] { border-color: #FFB4AB; }
.cn-newsletter__consent { font-size: var(--fs-xs); color: var(--color-muted-text); margin-top: var(--space-2); }

/* Header CTA + footer legal additions (directive P0.3) */
.cn-site-header__cta { padding: 12px 22px; font-size: 12px; }
@media (max-width: 64em) { .cn-site-header__cta { display: none; } }
.cn-footer-tagline { font-family: var(--font-accent); font-style: italic; font-size: 1.125rem; margin-bottom: var(--space-2); }
.cn-footer-cookieprefs { background: none; border: 0; padding: 0; color: inherit; font: inherit; cursor: pointer; text-decoration: underline; }
.cn-site-footer__disclaimer p { font-size: var(--fs-xs); color: rgba(255,255,255,0.55); max-width: 72ch; margin-top: var(--space-5); }

/* --- cn_form: lead forms (contact / onboarding / careers) --- */
.cn-form__inner { max-width: 880px; margin: 0 auto; }
.cn-form__h2 { font-family: var(--font-display); font-weight: var(--fw-light); font-size: clamp(1.75rem, 2.6vw, 2.5rem); line-height: 1.15; color: var(--color-ink); margin-bottom: var(--space-3); }
.cn-form__body { color: var(--color-warm-gray); max-width: 60ch; margin-bottom: var(--space-6); }
.cn-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5) var(--space-6); }
@media (max-width: 40em) { .cn-form__grid { grid-template-columns: minmax(0, 1fr); } }
.cn-form__field label { display: block; font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-ink); margin-bottom: 8px; }
.cn-form__req { color: var(--color-orange-cta); }
.cn-form__field input[type="text"], .cn-form__field input[type="email"], .cn-form__field input[type="tel"],
.cn-form__field select, .cn-form__field--wide textarea {
	width: 100%; border: 0; border-bottom: 1px solid var(--color-hairline); background: transparent;
	padding: 10px 2px; font: inherit; color: var(--color-ink); border-radius: 0;
}
.cn-form__field input:focus, .cn-form__field select:focus, .cn-form__field--wide textarea:focus { outline: none; border-bottom-color: var(--color-deep-ink); }
.cn-form__field [aria-invalid="true"] { border-bottom-color: #B3261E; }
.cn-form__field-err { font-size: var(--fs-xs); color: #B3261E; min-height: 1em; margin-top: 4px; }
.cn-form__field--wide { margin-top: var(--space-5); }
.cn-form__field--file input { border-bottom: 0; padding-left: 0; }
.cn-form__privacy-warning { font-size: var(--fs-xs); color: var(--color-muted-text); margin-top: var(--space-2); max-width: 62ch; }
.cn-form__optin { display: flex; gap: 10px; align-items: flex-start; font-size: var(--fs-sm); color: var(--color-warm-gray); margin-top: var(--space-5); max-width: 60ch; }
.cn-form__optin input { margin-top: 3px; }
.cn-form__submit { margin-top: var(--space-5); }
.cn-form__consent { font-size: var(--fs-xs); color: var(--color-muted-text); margin-top: var(--space-3); }
.cn-form__consent a { color: inherit; text-decoration: underline; }
.cn-form__error-summary { background: #FDEDEC; border-left: 3px solid #B3261E; color: #7A1C15; padding: 12px 16px; margin-bottom: var(--space-5); font-size: var(--fs-sm); }
.cn-form__success { background: rgba(5, 21, 27, 0.05); border-left: 3px solid var(--color-orange-cta); padding: 18px 20px; font-size: var(--fs-md); color: var(--color-ink); max-width: 62ch; }

/* --- Animated coin icons (Function pattern): clock sweeps, team pops in,
 * skyline rises. Gated on an .cn-anim--play ancestor; reduced motion = static. --- */
.cn-coin-hour, .cn-coin-min { transform-box: view-box; transform-origin: 12px 12px; }
.cn-coin-b1, .cn-coin-b2, .cn-coin-b3 { transform-box: view-box; transform-origin: 12px 20px; }
html.cn-js .cn-anim--play .cn-coin-min  { animation: cn-coin-rot 9s linear infinite; }
html.cn-js .cn-anim--play .cn-coin-hour { animation: cn-coin-rot 108s linear infinite; }
html.cn-js .cn-anim--play .cn-coin-p1   { animation: cn-coin-pop 0.5s ease-out 0.15s both; }
html.cn-js .cn-anim--play .cn-coin-p2   { animation: cn-coin-pop 0.5s ease-out 0.45s both, cn-coin-pulse 5s ease-in-out 1.2s infinite; }
html.cn-js .cn-anim--play .cn-coin-b1   { animation: cn-coin-rise 0.6s ease-out 0.15s both; }
html.cn-js .cn-anim--play .cn-coin-b2   { animation: cn-coin-rise 0.6s ease-out 0.35s both; }
html.cn-js .cn-anim--play .cn-coin-b3   { animation: cn-coin-rise 0.6s ease-out 0.55s both; }
@keyframes cn-coin-rot   { to { transform: rotate(360deg); } }
@keyframes cn-coin-pop   { from { opacity: 0; transform: scale(0.6); } to { opacity: 1; transform: scale(1); } }
@keyframes cn-coin-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.55; } }
@keyframes cn-coin-rise  { from { transform: scaleY(0); opacity: 0; } to { transform: scaleY(1); opacity: 1; } }
.cn-coin-p1, .cn-coin-p2 { transform-box: view-box; transform-origin: 12px 14px; }
@media (prefers-reduced-motion: reduce) {
	.cn-coin-min, .cn-coin-hour, .cn-coin-p1, .cn-coin-p2, .cn-coin-b1, .cn-coin-b2, .cn-coin-b3 { animation: none !important; opacity: 1 !important; transform: none !important; }
}

/* --- Bench map infographic (Function dot-map pattern) --- */
.cn-darkaward__map { align-self: center; margin: 2px 0 6px; }
.cn-bmap { display: block; width: 210px; height: auto; }
.cn-bmap__label { font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 7.5px; letter-spacing: 0.22em; fill: var(--color-muted-gray); }
.cn-bmap__ring--late { animation-delay: calc(var(--d, 0.2s) + 3s) !important; }
.cn-bmap__dots circle { fill: rgba(5, 21, 27, 0.16); }
.cn-bmap__route { stroke: var(--color-orange-cta); stroke-width: 1.4; stroke-linejoin: round; stroke-linecap: round; }
.cn-bmap__pin { fill: var(--color-orange-cta); }
.cn-bmap__ring { fill: none; stroke: var(--color-orange-cta); stroke-width: 1; opacity: 0; transform-box: fill-box; transform-origin: center; }
html.cn-js .cn-anim--play .cn-bmap__dots { animation: cn-bmap-fade 0.9s ease-out both; animation-delay: var(--sd, 0s); }
html.cn-js .cn-anim--play .cn-bmap__route { stroke-dasharray: 0.06 0.045; stroke-dashoffset: 1.105; animation: cn-bmap-draw 1.6s ease-in-out 0.7s forwards; }
html.cn-js .cn-anim--play .cn-bmap__pin { animation: cn-coin-pop 0.4s ease-out both; animation-delay: var(--d, 0.2s); transform-box: fill-box; transform-origin: center; }
html.cn-js .cn-anim--play .cn-bmap__ring { animation: cn-bmap-ping 3.2s ease-out infinite; animation-delay: calc(var(--d, 0.2s) + 1.4s); }
@keyframes cn-bmap-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes cn-bmap-draw { to { stroke-dashoffset: 0; } }
@keyframes cn-bmap-ping { 0% { opacity: 0.9; transform: scale(1); } 55% { opacity: 0; transform: scale(3); } 100% { opacity: 0; transform: scale(3); } }
html.cn-js .cn-anim--play .cn-bmap__pin { animation: cn-coin-pop 0.4s ease-out both, cn-bmap-blip 6.4s ease-in-out infinite; animation-delay: var(--d, 0.2s), calc(var(--d, 0.2s) + 1.4s); }
@keyframes cn-bmap-blip { 0%, 92%, 100% { transform: scale(1); } 95% { transform: scale(1.35); } }
@media (prefers-reduced-motion: reduce) {
	.cn-bmap__dots, .cn-bmap__route, .cn-bmap__pin, .cn-bmap__ring { animation: none !important; opacity: 1 !important; stroke-dashoffset: 0 !important; transform: none !important; }
	.cn-bmap__ring { opacity: 0 !important; }
}

/* --- Team strip infinite slider (GSAP horizontalLoop) --- */
.cn-team-headstrip--slider .cn-team-headstrip__viewport { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.cn-team-headstrip--slider .cn-team-headstrip__viewport.cn-slider-ready { overflow: hidden; }
.cn-team-headstrip--slider .cn-team-headstrip__list {
	display: flex;
	gap: var(--space-4);
	grid-template-columns: none;
}
.cn-team-headstrip--slider .cn-team-headstrip__list > li { flex: 0 0 250px; }
.cn-team-headstrip__nav { display: flex; gap: 10px; margin-top: var(--space-5); }
.cn-team-headstrip__arrow {
	width: 46px; height: 46px; border-radius: 50%;
	border: 1px solid var(--color-deep-ink); background: transparent;
	color: var(--color-deep-ink); font-size: 16px; cursor: pointer;
	transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}
.cn-team-headstrip__arrow:hover { background: var(--color-deep-ink); color: #fff; }
@media (max-width: 40em) {
	.cn-team-headstrip--slider .cn-team-headstrip__list > li { flex-basis: 200px; }
}
.cn-team-headstrip--slider .cn-team-headstrip__list > li { transition: none !important; opacity: 1 !important; }

/* --- cn_decision_router (Function categorized-grid pattern) ---
 * Spacing per Function's own mechanics: border-left dividers on non-first
 * columns, horizontal rule between rows only (none above row 1), equal-height
 * cells (min-height), uniform padding w/ first column flush left. */
.cn-decrouter__h2 { font-family: var(--font-display); font-weight: var(--fw-light); font-size: clamp(1.875rem, 3vw, 2.75rem); color: var(--color-ink); margin: var(--space-2) 0 var(--space-6); }
.cn-decrouter__grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cn-decrouter__cell-wrap { display: flex; }
.cn-decrouter__cell { flex: 1; display: flex; flex-direction: column; min-height: 21rem; padding: 2.25rem 2.5rem 3rem; text-decoration: none; color: var(--color-ink); }
.cn-decrouter__cell-wrap:nth-child(3n+1) .cn-decrouter__cell { padding-left: 0; }
.cn-decrouter__cell-wrap:not(:nth-child(3n+1)) { border-left: 1px solid var(--color-hairline); }
.cn-decrouter__cell-wrap:nth-child(n+4) { border-top: 1px solid var(--color-hairline); }
.cn-decrouter__title { font-family: var(--font-display); font-weight: var(--fw-light); font-size: clamp(1.375rem, 1.8vw, 1.75rem); line-height: 1.25; margin: 0 0 16px; max-width: 15ch; }
.cn-decrouter__meta { display: flex; align-items: center; gap: 8px; margin: 0 0 20px; font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-orange-text); }
.cn-decrouter__meta svg { width: 11px; height: 11px; flex-shrink: 0; }
.cn-decrouter__list { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.cn-decrouter__list li { font-size: var(--fs-sm); line-height: 1.45; color: var(--color-warm-gray); }
.cn-decrouter__arrow { margin-top: auto; padding-top: 26px; color: var(--color-orange-cta); font-size: 1.125rem; transition: transform var(--dur-fast) var(--ease-out); }
.cn-decrouter__cell:hover .cn-decrouter__arrow { transform: translateX(6px); }
.cn-decrouter__cell:hover .cn-decrouter__title { color: var(--color-emphasis); }
.cn-decrouter__more { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: 28px 2.5rem; background: rgba(5, 21, 27, 0.045); border-top: 1px solid var(--color-hairline); text-decoration: none; }
.cn-decrouter__more-label { font-family: var(--font-accent-text); font-style: italic; font-size: clamp(1.25rem, 1.6vw, 1.5rem); color: var(--color-emphasis); }
.cn-decrouter__more .cn-decrouter__arrow { margin: 0; padding: 0; }
.cn-decrouter__more:hover .cn-decrouter__arrow { transform: translateX(6px); }
@media (max-width: 64em) {
	.cn-decrouter__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cn-decrouter__cell { min-height: 0; padding: 1.75rem 1.75rem 2.25rem; }
	.cn-decrouter__cell-wrap { border-left: 0 !important; border-top: 0 !important; }
	.cn-decrouter__cell-wrap:nth-child(2n+1) .cn-decrouter__cell { padding-left: 0; }
	.cn-decrouter__cell-wrap:nth-child(2n) { border-left: 1px solid var(--color-hairline) !important; }
	.cn-decrouter__cell-wrap:nth-child(n+3) { border-top: 1px solid var(--color-hairline) !important; }
	.cn-decrouter__more { padding: 24px 1.75rem; }
}
@media (max-width: 40em) {
	.cn-decrouter__grid { grid-template-columns: minmax(0, 1fr); }
	.cn-decrouter__cell-wrap { border-left: 0 !important; border-top: 0 !important; }
	.cn-decrouter__cell { padding: 1.5rem 0 1.75rem !important; }
	.cn-decrouter__cell-wrap:nth-child(n+2) { border-top: 1px solid var(--color-hairline) !important; }
	.cn-decrouter__arrow { padding-top: 18px; }
	.cn-decrouter__more { padding: 20px 1.25rem; }
}

/* --- cn_lead_card --- */
.cn-leadcard__inner { display: flex; align-items: center; gap: var(--space-5); }
.cn-leadcard__photo img { width: 132px; height: 132px; object-fit: cover; object-position: top; border-radius: 50%; display: block; }
.cn-leadcard__name { font-family: var(--font-display); font-weight: var(--fw-light); font-size: clamp(1.375rem, 1.8vw, 1.625rem); color: var(--color-ink); margin: var(--space-1) 0 2px; }
.cn-leadcard__creds { font-size: 0.72em; color: var(--color-warm-gray); }
.cn-leadcard__role { font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-warm-gray); margin: 0 0 10px; }
.cn-leadcard__body { font-size: var(--fs-sm); line-height: 1.55; color: var(--color-warm-gray); max-width: 62ch; margin: 0 0 12px; }
.cn-leadcard__links { display: flex; gap: var(--space-4); margin: 0; flex-wrap: wrap; }
@media (max-width: 40em) {
	.cn-leadcard__inner { flex-direction: column; align-items: flex-start; }
	.cn-leadcard__photo img { width: 104px; height: 104px; }
}

/* --- journal coin referent + CTA mechanics note --- */
.cn-coinpair__ref { display: block; margin-top: 8px; font-family: 'Montserrat', sans-serif; font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--color-warm-gray); }
.cn-darkphotocta__note { margin: 14px auto 0; max-width: 46ch; font-size: var(--fs-sm); line-height: 1.55; color: rgba(255, 255, 255, 0.85); }
.cn-ctagiant__note { margin: 16px auto 0; max-width: 46ch; font-size: var(--fs-sm); line-height: 1.55; color: var(--color-warm-gray); text-align: center; }
.cn-form__field-note { margin: 6px 0 0; font-size: 12px; line-height: 1.5; color: var(--color-warm-gray); }

/* --- location hero: full-bleed Function variant --- */
.cn-lochero--full { padding: 0; }
.cn-lochero__fullstage { position: relative; min-height: clamp(560px, 74vh, 780px); display: flex; }
.cn-lochero__fullstage > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cn-lochero__scrim { position: absolute; inset: 0; background:
	linear-gradient(90deg, rgba(5,21,27,0.55) 0%, rgba(5,21,27,0.22) 48%, rgba(5,21,27,0.10) 100%),
	linear-gradient(180deg, rgba(5,21,27,0.08) 0%, rgba(5,21,27,0.28) 60%, rgba(5,21,27,0.60) 100%); }
.cn-lochero__fullinner { position: relative; z-index: 1; display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-6); width: 100%; padding-block: clamp(3rem, 6vh, 4.5rem) clamp(2.5rem, 5vh, 3.5rem); }
.cn-lochero--full .cn-lochero__lead { max-width: 640px; }
.cn-lochero--full .cn-lochero__h1 br:not(.cn-hl-br) { display: none; }
/* With the author breaks hidden the heading becomes one run, so the emphasised
 * place name was landing mid-line and splitting across a natural wrap
 * ("...ADVISORY FOR Utah / County"). Making the emphasis a block puts it on its
 * own line, which is the rule everywhere else on the site. */
.cn-lochero__h1 em { display: block; }
.cn-lochero--full .cn-eyebrow { color: var(--color-orange-cta); }
.cn-lochero--full .cn-lochero__h1 { color: #fff; }
.cn-lochero--full .cn-lochero__h1 em { color: inherit; }
.cn-lochero--full .cn-lochero__body { color: rgba(255,255,255,0.88); }
.cn-lochero__meta { list-style: none; display: flex; margin: 0 0 6px; padding: 0; }
.cn-lochero__meta li { display: flex; flex-direction: column; gap: 4px; padding-inline: clamp(18px, 2vw, 30px); }
.cn-lochero__meta li + li { border-left: 1px solid rgba(255,255,255,0.32); }
.cn-lochero__meta li:first-child { padding-left: 0; }
.cn-lochero__meta li:last-child { padding-right: 0; }
.cn-lochero__meta-v { font-family: 'Montserrat', sans-serif; font-weight: var(--fw-semibold); font-size: clamp(1.0625rem, 1.4vw, 1.3125rem); color: #fff; white-space: nowrap; }
.cn-lochero__meta-l { font-size: var(--fs-xs); color: rgba(255,255,255,0.72); white-space: nowrap; }
@media (max-width: 64em) {
	.cn-lochero__fullinner { flex-direction: column; align-items: flex-start; }
	.cn-lochero__meta { margin: 0; flex-wrap: wrap; row-gap: 14px; }
}
@media (max-width: 40em) {
	.cn-lochero__fullstage { min-height: 78vh; }
	.cn-lochero__meta li { padding-inline: 14px; }
	.cn-lochero__meta-v { font-size: 1rem; }
}

/* --- WCAG AA: bright orange eyebrows only on dark grounds --- */
.cn-darkphotocta .cn-eyebrow, .cn-photodarkfaq .cn-eyebrow, .cn-darkaward .cn-eyebrow,
.cn-lochero--full .cn-eyebrow, [class*="--invert"] .cn-eyebrow, .cn-posthero .cn-eyebrow {
	color: var(--color-orange-cta);
}

/* ================================================================
 * Onboarding-Kit (PDF ADD-02) hierarchy system — sitewide
 * ================================================================ */
/* Category subhead: orange tracked caps (PDF section-header pattern). */
.cn-cat-head {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: 0.9375rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--color-orange-text);
	margin: 0 0 12px;
}
/* Orange-dot bullets (PDF list pattern) — sitewide prose + component lists. */
.cn-dotlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.cn-dotlist li { position: relative; padding-left: 20px; font-size: var(--fs-sm); line-height: 1.5; color: var(--color-ink); }
.cn-dotlist li::before { content: ''; position: absolute; left: 2px; top: 0.52em; width: 7px; height: 7px; border-radius: 50%; background: var(--color-orange-cta); }
.vgs-prose ul:not([class]) { list-style: none; padding-left: 0; }
.vgs-prose ul:not([class]) > li { position: relative; padding-left: 22px; }
.vgs-prose ul:not([class]) > li::before { content: ''; position: absolute; left: 2px; top: 0.55em; width: 7px; height: 7px; border-radius: 50%; background: var(--color-orange-cta); }

/* Word-stagger headline reveal (Seoly wcf--title). Fail-visible: only hides under html.cn-js. */
html.cn-js [data-cn-anim="words"] .cn-word { display: inline-block; opacity: 0; transform: translateY(0.45em); }
html.cn-js [data-cn-anim="words"].cn-anim--play .cn-word {
	opacity: 1; transform: none;
	transition: opacity 500ms var(--ease-out), transform 500ms var(--ease-out);
	transition-delay: calc(var(--w, 0) * 45ms + var(--cn-anim-delay, 0ms));
}
@media (prefers-reduced-motion: reduce) { html.cn-js [data-cn-anim="words"] .cn-word { opacity: 1; transform: none; transition: none; } }

/* --- cn_service_suite --- */
.cn-suite__head { max-width: 720px; margin-bottom: var(--space-7); }
.cn-suite__h2 { font-family: var(--font-display); font-weight: var(--fw-light); font-size: clamp(1.875rem, 3vw, 2.75rem); color: var(--color-ink); margin: var(--space-2) 0 var(--space-3); }
.cn-suite__intro { font-size: var(--fs-md); line-height: 1.6; color: var(--color-warm-gray); margin: 0; }
.cn-suite__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cn-suite__col { padding-inline: clamp(20px, 2.2vw, 34px); display: flex; flex-direction: column; align-items: flex-start; }
.cn-suite__col:first-child { padding-left: 0; }
.cn-suite__col + .cn-suite__col { border-left: 1px solid var(--color-hairline); }
.cn-suite__icon { display: block; width: 46px; height: 46px; margin-bottom: 18px; color: var(--color-ink); }
.cn-suite__icon svg { width: 100%; height: 100%; }
.cn-suite__body { font-size: var(--fs-sm); line-height: 1.55; color: var(--color-warm-gray); margin: 0 0 16px; }
.cn-suite__link { margin-top: auto; padding-top: 18px; display: inline; }
.cn-suite__link span { margin-left: 6px; }
@media (max-width: 64em) {
	.cn-suite__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--space-6); }
	.cn-suite__col:nth-child(odd) { padding-left: 0; border-left: 0; }
}
@media (max-width: 40em) {
	.cn-suite__grid { grid-template-columns: minmax(0, 1fr); }
	.cn-suite__col { padding-inline: 0; border-left: 0 !important; }
}

/* --- services bento (Seoly about-01 pattern) --- */
.cn-svcfigs__bento { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.cn-svcfigs__tile { margin: 0; overflow: hidden; border-radius: 4px; }
.cn-svcfigs__tile--photo img { width: 100%; height: 100%; object-fit: cover; display: block; aspect-ratio: 1 / 1.05; }
.cn-svcfigs__tile--span { grid-column: 1 / -1; }
.cn-svcfigs__bento > .cn-svcfigs__tile--photo:last-child { grid-column: 1 / -1; }
.cn-svcfigs__bento > .cn-svcfigs__tile--photo:last-child img { aspect-ratio: 16 / 7; }
.cn-svcfigs__tile--span img { aspect-ratio: 16 / 8.5; }
.cn-svcfigs__tile--stat { display: flex; flex-direction: column; justify-content: space-between; padding: 22px 22px 18px; min-height: 200px; }
.cn-svcfigs__tile--light { background: #FFFFFF; border: 1px solid var(--color-hairline); }
.cn-svcfigs__tile--dark { background: var(--color-deep-ink); }
.cn-svcfigs__tile-kicker { font-family: 'Montserrat', sans-serif; font-weight: var(--fw-semibold); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; margin: 0; color: var(--color-warm-gray); }
.cn-svcfigs__tile--dark .cn-svcfigs__tile-kicker { color: rgba(255,255,255,0.75); }
.cn-svcfigs__tile-num { font-family: var(--font-accent); font-size: clamp(3rem, 5.2vw, 4.5rem); line-height: 1; color: var(--color-ink); margin: 14px 0 10px; }
.cn-svcfigs__tile--dark .cn-svcfigs__tile-num { color: #FFFFFF; }
.cn-svcfigs__tile-label { font-size: var(--fs-sm); line-height: 1.45; color: var(--color-warm-gray); margin: 0; }
.cn-svcfigs__tile--dark .cn-svcfigs__tile-label { color: rgba(255,255,255,0.82); }
.cn-svcfigs__tile-label em { font-family: var(--font-accent-text); font-style: italic; }

/* --- Seoly row hover on the numbered pillar list --- */
.cn-svcfigs__row { transition: background 260ms var(--ease-out), padding 260ms var(--ease-out); border-radius: 14px; }
.cn-svcfigs__row:hover { background: var(--color-deep-ink); padding-inline: 22px; }
.cn-svcfigs__row:hover .cn-svcfigs__title, .cn-svcfigs__row:hover .cn-svcfigs__titlelink,
.cn-svcfigs__row:hover .cn-svcfigs__n { color: #FFFFFF; }
.cn-svcfigs__row:hover .cn-svcfigs__body { color: rgba(255,255,255,0.78); }
.cn-svcfigs__icon { display: block; width: 42px; height: 42px; color: var(--color-ink); transition: color 260ms var(--ease-out); }
.cn-svcfigs__icon svg { width: 100%; height: 100%; }
.cn-svcfigs__row:hover .cn-svcfigs__icon { color: var(--color-orange-cta); }
.cn-svcfigs__arrow { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid var(--color-hairline); border-radius: 50%; color: var(--color-ink); transition: background 260ms var(--ease-out), color 260ms var(--ease-out), transform 260ms var(--ease-out); align-self: center; }
.cn-svcfigs__row:hover .cn-svcfigs__arrow { background: var(--color-orange-cta); border-color: var(--color-orange-cta); color: var(--color-deep-ink); transform: rotate(45deg); }

/* team slider drag cursor removed: the arrows are the control. */

/* ==== service pillar icon animations (workflow set) ==== */
/* Cooper Norman service icon — Tax Planning & Advisory (calendar, circled date) */
/* Base state = fully drawn and visible. Animation runs only under .cn-anim--play. */

.cn-anim--play .cn-svcicon--tax .cn-svcicon__draw {
  stroke-dasharray: 1 1.1;
  stroke-dashoffset: 1.05;
  animation: cn-svci-tax-draw 0.8s ease forwards;
}
.cn-anim--play .cn-svcicon--tax .cn-svcicon__body   { animation-duration: 1s; }
.cn-anim--play .cn-svcicon--tax .cn-svcicon__rule   { animation-delay: 0.45s; animation-duration: 0.5s; }
.cn-anim--play .cn-svcicon--tax .cn-svcicon__post-a { animation-delay: 0.6s;  animation-duration: 0.35s; }
.cn-anim--play .cn-svcicon--tax .cn-svcicon__post-b { animation-delay: 0.7s;  animation-duration: 0.35s; }

/* Date dots fade in together, softly */
.cn-anim--play .cn-svcicon--tax circle {
  opacity: 0;
  animation: cn-svci-tax-fade 0.5s ease 0.85s forwards;
}

/* Highlighted date: ring draws in, then breathes softly every 6s */
.cn-anim--play .cn-svcicon--tax .cn-svcicon__hl-ring {
  transform-box: fill-box;
  transform-origin: center;
  animation:
    cn-svci-tax-draw 0.6s ease 1s forwards,
    cn-svci-tax-ping 6s ease-in-out 2.4s infinite;
}

@keyframes cn-svci-tax-draw { to { stroke-dashoffset: 0; } }
@keyframes cn-svci-tax-fade { to { opacity: 1; } }
@keyframes cn-svci-tax-ping {
  0%, 16%, 100% { transform: scale(1);    opacity: 1; }
  8%            { transform: scale(1.06); opacity: 0.7; }
}

@media (prefers-reduced-motion: reduce) {
  .cn-svcicon--tax :is(path, circle) {
    animation: none !important;
    stroke-dasharray: none !important;
    stroke-dashoffset: 0 !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* Cooper Norman service icon — Client Accounting Services (monthly bars) */
/* Base state = fully drawn and visible. Animation runs only under .cn-anim--play. */

.cn-anim--play .cn-svcicon--cas .cn-svcicon__draw {
  stroke-dasharray: 1 1.1;
  stroke-dashoffset: 1.05;
  animation: cn-svci-cas-draw 0.6s ease forwards;
}
.cn-anim--play .cn-svcicon--cas .cn-svcicon__axis  { animation-duration: 0.8s; }
.cn-anim--play .cn-svcicon--cas .cn-svcicon__bar-a { animation-delay: 0.5s; }
.cn-anim--play .cn-svcicon--cas .cn-svcicon__bar-b { animation-delay: 0.7s; }

/* Tallest bar draws last, then shimmers gently every 7s */
.cn-anim--play .cn-svcicon--cas .cn-svcicon__bar-c {
  animation:
    cn-svci-cas-draw 0.6s ease 0.9s forwards,
    cn-svci-cas-shimmer 7s ease-in-out 2.6s infinite;
}

@keyframes cn-svci-cas-draw { to { stroke-dashoffset: 0; } }
@keyframes cn-svci-cas-shimmer {
  0%, 26%, 100% { opacity: 1; }
  13%           { opacity: 0.65; }
}

@media (prefers-reduced-motion: reduce) {
  .cn-svcicon--cas path {
    animation: none !important;
    stroke-dasharray: none !important;
    stroke-dashoffset: 0 !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* Cooper Norman service icon — Audit & Assurance (shield, tick-out check) */
/* Base state = fully drawn and visible. Animation runs only under .cn-anim--play. */

.cn-anim--play .cn-svcicon--audit .cn-svcicon__draw {
  stroke-dasharray: 1 1.1;
  stroke-dashoffset: 1.05;
  animation: cn-svci-audit-draw 1s ease forwards;
}

/* Check draws in after the shield, then re-affirms with a soft breathe every 6s */
.cn-anim--play .cn-svcicon--audit .cn-svcicon__check {
  animation:
    cn-svci-audit-draw 0.45s ease 0.9s forwards,
    cn-svci-audit-pulse 6s ease-in-out 2.6s infinite;
}

@keyframes cn-svci-audit-draw { to { stroke-dashoffset: 0; } }
@keyframes cn-svci-audit-pulse {
  0%, 20%, 100% { opacity: 1; }
  10%           { opacity: 0.7; }
}

@media (prefers-reduced-motion: reduce) {
  .cn-svcicon--audit path {
    animation: none !important;
    stroke-dasharray: none !important;
    stroke-dashoffset: 0 !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* Cooper Norman service icon — Business Valuation (balance scales) */
/* Base state = fully drawn and visible. Animation runs only under .cn-anim--play. */

.cn-anim--play .cn-svcicon--valuation .cn-svcicon__draw {
  stroke-dasharray: 1 1.1;
  stroke-dashoffset: 1.05;
  animation: cn-svci-valuation-draw 0.5s ease forwards;
}
.cn-anim--play .cn-svcicon--valuation .cn-svcicon__post   { animation-duration: 0.5s; }
.cn-anim--play .cn-svcicon--valuation .cn-svcicon__base   { animation-delay: 0.2s;  animation-duration: 0.4s; }
.cn-anim--play .cn-svcicon--valuation .cn-svcicon__beam   { animation-delay: 0.45s; }
.cn-anim--play .cn-svcicon--valuation .cn-svcicon__string { animation-delay: 0.75s; animation-duration: 0.35s; }
.cn-anim--play .cn-svcicon--valuation .cn-svcicon__bowl   { animation-delay: 0.95s; animation-duration: 0.45s; }

.cn-anim--play .cn-svcicon--valuation .cn-svcicon__pivot {
  opacity: 0;
  animation: cn-svci-valuation-fade 0.4s ease 0.45s forwards;
}

/* Beam, strings, and pans see-saw gently around the pivot */
.cn-anim--play .cn-svcicon--valuation .cn-svcicon__beamgroup {
  transform-box: view-box;
  transform-origin: 24px 15px;
  animation: cn-svci-valuation-sway 9s ease-in-out 2.2s infinite;
}

@keyframes cn-svci-valuation-draw { to { stroke-dashoffset: 0; } }
@keyframes cn-svci-valuation-fade { to { opacity: 1; } }
@keyframes cn-svci-valuation-sway {
  0%, 100% { transform: rotate(0deg); }
  25%      { transform: rotate(2.5deg); }
  75%      { transform: rotate(-2.5deg); }
}

@media (prefers-reduced-motion: reduce) {
  .cn-svcicon--valuation :is(path, circle, g) {
    animation: none !important;
    stroke-dasharray: none !important;
    stroke-dashoffset: 0 !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* Cooper Norman service icon — Business Transition Planning (route A to B) */
/* Base state = fully drawn and visible; the traveler path rests invisibly over the route. */
/* Animation runs only under .cn-anim--play. */

.cn-anim--play .cn-svcicon--transition .cn-svcicon__draw {
  stroke-dasharray: 1 1.1;
  stroke-dashoffset: 1.05;
  animation: cn-svci-transition-draw 0.4s ease forwards;
}
.cn-anim--play .cn-svcicon--transition .cn-svcicon__route  { animation-delay: 0.3s; animation-duration: 1s; }
.cn-anim--play .cn-svcicon--transition .cn-svcicon__ring-b { animation-delay: 1.1s; }

.cn-anim--play .cn-svcicon--transition :is(.cn-svcicon__a-dot, .cn-svcicon__b-dot) {
  opacity: 0;
  animation: cn-svci-transition-fade 0.4s ease 1.3s forwards;
}

/* A short round-capped dash leaves A, follows the route, rests at B, then resets — every 7.5s */
.cn-anim--play .cn-svcicon--transition .cn-svcicon__traveler {
  stroke-dasharray: 0.06 0.94;
  stroke-dashoffset: 0;
  opacity: 0;
  animation: cn-svci-transition-travel 7.5s ease-in-out 1.8s infinite;
}

@keyframes cn-svci-transition-draw { to { stroke-dashoffset: 0; } }
@keyframes cn-svci-transition-fade { to { opacity: 1; } }
@keyframes cn-svci-transition-travel {
  0%        { stroke-dashoffset: 0;     opacity: 0; }
  5%, 12%   { stroke-dashoffset: 0;     opacity: 1; }
  55%, 62%  { stroke-dashoffset: -0.94; opacity: 1; }
  70%, 100% { stroke-dashoffset: -0.94; opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .cn-svcicon--transition :is(path, circle) {
    animation: none !important;
    stroke-dasharray: none !important;
    stroke-dashoffset: 0 !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* --- cn_image_cluster (Seoly overlapping photo cluster + parallax) --- */
.cn-cluster__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.cn-cluster--flip .cn-cluster__stage { order: 2; }
.cn-cluster__stage { position: relative; display: grid; grid-template-columns: repeat(12, 1fr); grid-template-rows: repeat(12, minmax(0, 1fr)); aspect-ratio: 1 / 0.94; }
.cn-cluster__card { margin: 0; overflow: visible; }
.cn-cluster__inner { display: block; overflow: hidden; border-radius: 6px; box-shadow: 0 24px 60px -32px rgba(5, 21, 27, 0.45); height: 100%; }
.cn-cluster__inner img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-cluster__card--1 { grid-column: 1 / 8;  grid-row: 1 / 8;  z-index: 1; }
.cn-cluster__card--2 { grid-column: 7 / 13; grid-row: 1 / 7;  z-index: 2; }
.cn-cluster__card--3 { grid-column: 4 / 11; grid-row: 5 / 13; z-index: 3; }
.cn-cluster__h2 { font-family: var(--font-display); font-weight: var(--fw-light); font-size: clamp(2rem, 3.4vw, 3.1rem); line-height: 1.16; color: var(--color-ink); margin: var(--space-2) 0 var(--space-4); }
.cn-cluster__body { font-size: var(--fs-md); line-height: 1.62; color: var(--color-warm-gray); max-width: 46ch; margin: 0 0 var(--space-5); }
.cn-cluster__ctas { display: flex; align-items: center; gap: var(--space-5); flex-wrap: wrap; margin: 0 0 var(--space-7); }
.cn-cluster__stat-num { font-family: var(--font-accent); font-size: clamp(3.5rem, 6vw, 5.5rem); line-height: 1; color: var(--color-ink); margin: 0 0 10px; }
.cn-cluster__stat-label { font-family: 'Montserrat', sans-serif; font-weight: var(--fw-semibold); font-size: var(--fs-sm); line-height: 1.4; color: var(--color-ink); margin: 0; max-width: 22ch; }
.cn-cluster__stat-label em { font-family: var(--font-accent-text); font-style: italic; font-weight: 400; color: var(--color-emphasis); }
@media (max-width: 64em) {
	.cn-cluster__grid { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-6); }
	.cn-cluster--flip .cn-cluster__stage { order: 0; }
}
@media (max-width: 40em) {
	.cn-cluster__stage { aspect-ratio: 1 / 1.02; }
	.cn-cluster__card--1 { grid-column: 1 / 9;  grid-row: 1 / 8; }
	.cn-cluster__card--2 { grid-column: 8 / 13; grid-row: 2 / 7; }
	.cn-cluster__card--3 { grid-column: 3 / 12; grid-row: 6 / 13; }
}
.cn-officenap__faxnote { display: block; font-size: 12px; color: var(--color-warm-gray); margin-top: 3px; }

/* ================================================================
 * SECTION RHYTHM SYSTEM
 * Hairline dividers between sections were removed at operator
 * direction: the ground change and the vertical scale below are the
 * structural device. Do not reintroduce a `.cn-section::before` rule.
 * ================================================================ */

/* Consistent vertical rhythm: one scale, not per-section improvisation. */
.cn-section { --cn-section-pad: clamp(2.75rem, 4.9vw, 4.5rem); }
/* At 1440 this yields boundaries of ~141px (md), ~162px (lg), ~190px (xl):
 * deliberate, not cavernous. Dividers are gone, so the gap is the only
 * separator between two same-ground sections and must stay legible. */
.cn-section.vgs-pad-xl { padding-block: calc(var(--cn-section-pad) * 1.35); }
.cn-section.vgs-pad-lg { padding-block: calc(var(--cn-section-pad) * 1.15); }
.cn-section.vgs-pad-md,
.cn-section:not([class*="vgs-pad"]) { padding-block: var(--cn-section-pad); }
.cn-section.vgs-pad-sm { padding-block: calc(var(--cn-section-pad) * 0.7); }
.cn-section.vgs-pad-xs { padding-block: calc(var(--cn-section-pad) * 0.45); }
.cn-section.vgs-pad-2xs { padding-block: 0; }

/* Section headers share one spacing contract so pages read as a set. */
.cn-section > .cn-container > .cn-eyebrow:first-child,
.cn-section .cn-band__header .cn-eyebrow { margin-bottom: var(--space-3); }

/* Photo pair / cluster bands: close the dead space the mockup does not have. */
.cn-photopair { padding-block: var(--cn-section-pad); }
.cn-photopair__grid { gap: clamp(1.5rem, 3vw, 2.5rem); align-items: start; }

/* Milestones + comparison + FAQ share the hairline language internally. */
.cn-milestones__list > li + li,
.cn-faqsplit__item + .cn-faqsplit__item { border-top: 1px solid var(--color-hairline); }


/* ================================================================
 * PARALLAX MEDIA PLANES
 * Every section-scale background photo scrubs on scroll. The plane
 * overscans its clip box by the travel amount so the scrub can never
 * reveal a bare edge; the clip box must be relative + hidden.
 * ================================================================ */
.cn-plx {
	position: absolute;
	/* --cn-plx-inset is the overscan PERCENT, computed per rate in PHP. */
	inset: calc(var(--cn-plx-inset, 16) * -1%) 0;
	will-change: transform;
}
.cn-plx img,
.cn-plx picture,
.cn-plx picture img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
@media (prefers-reduced-motion: reduce) { .cn-plx { inset: 0; } }

/* Clip boxes for the planes above.
 * NOTE: only boxes that are statically positioned need `relative` here.
 * `.cn-heroT226__img` is already `position:absolute; inset:0` inside the hero
 * stage — forcing it to `relative` made `inset` stop stretching it and the
 * box collapsed to 0 height, taking the hero photograph with it. It only
 * needs the clip. */
.cn-trust-splitic__img,
.cn-contentlistimg__media,
.cn-tsplit__media,
.cn-photodarkfaq__media,
.cn-svcdhero__media,
.cn-lochero__media { position: relative; overflow: hidden; }
.cn-heroT226__img { overflow: hidden; }

/* location hero media had auto-height images; the plane needs a box. */
.cn-lochero__media { aspect-ratio: 16 / 7; }
.cn-lochero__media img { width: 100%; height: 100%; object-fit: cover; }


/* ================================================================
 * BOUNDARY RHYTHM
 * Section padding already sets the gap; a first/last child must not
 * add its own margin on top of it or boundaries compound to 260px+.
 * ================================================================ */
.cn-prose > :first-child,
.cn-container > :first-child,
.cn-container--narrow > :first-child { margin-top: 0; }
.cn-prose > :last-child,
.cn-container > :last-child,
.cn-container--narrow > :last-child { margin-bottom: 0; }

/* The parent's 2xl step is outside the CN scale; bring it in. */
.cn-section.vgs-pad-2xl { padding-block: calc(var(--cn-section-pad) * 1.5); }


/* photo_pair_since: stack cleanly on narrow screens, seal back to a corner. */
@media (max-width: 860px) {
	.cn-photopair__stage { grid-template-columns: 1fr; }
	.cn-photopair__right { margin-top: 0; aspect-ratio: 4/3; }
	.cn-photopair__since { left: auto; right: 6%; top: auto; bottom: 46%; transform: none; }
}


/* map_embed caption: the frame is third-party, the address is not. */
.cn-map-embed__caption {
	display: flex; flex-wrap: wrap; gap: var(--space-3);
	align-items: baseline; justify-content: space-between;
	margin-top: var(--space-4);
	font-size: var(--fs-sm); color: var(--color-warm-gray);
}


/* service_detail_hero with no image: flat parchment, no mid-headline cut. */
.cn-svcdhero--flat.cn-section {
	padding-block: clamp(3.5rem, 7vw, 6.25rem);
	background: var(--color-parchment);
}


/* ================================================================
 * MODIX TEXT EFFECTS — mask units
 * Each split unit is an inline-block clip box; the inner span is what
 * the tween lifts. The padding/negative-margin pair keeps descenders
 * (g, y, p) and italic overhang from being shaved by the mask.
 * ================================================================ */
.cn-fx-u {
	display: inline-block;
	overflow: hidden;
	vertical-align: top;
	padding: 0.06em 0.04em 0.16em;
	margin: -0.06em -0.04em -0.16em;
}
.cn-fx-u__i { display: inline-block; }
/* No will-change here on purpose: these animate once, and promoting
 * 50-100 permanent layers per page costs more than it saves. GSAP
 * promotes them for the duration of the tween via force3D. */
.cn-fx-w { display: inline-block; white-space: nowrap; }

/* Split units must not inherit a text-indent or list marker offset. */
.cn-fx-u, .cn-fx-w { text-indent: 0; }

@media (prefers-reduced-motion: reduce) {
	.cn-fx-u { overflow: visible; padding: 0; margin: 0; }
	.cn-fx-u__i { transform: none !important; opacity: 1 !important; }
}


/* coin pair: "Articles" is a flex sibling of the two discs, so a top
 * margin does nothing and it butted straight against the ink coin.
 * The counter also pads right by the disc overlap so its number stays
 * optically centred in the part of the circle you can actually see. */
.cn-coinpair > .cn-coinpair__ref { margin-top: 0; margin-left: var(--space-4); align-self: center; }
.cn-coinpair__counter { box-sizing: border-box; padding-right: 20px; }


/* ================================================================
 * HEADLINE LINE REVEAL (GSAP SplitText, mask: "lines")
 * SplitText builds the overflow-hidden mask wrapper itself; these rules
 * only keep the CN heading metrics intact through the split so the
 * serif <em> accents and letter-spacing survive line grouping.
 * ================================================================ */
.cn-line { display: block; }
[data-cn-lines] .cn-line em { font-style: italic; }
/* A masked line must be able to show descenders and italic overhang. */
[data-cn-lines] .cn-line { padding-bottom: 0.08em; }
@media (prefers-reduced-motion: reduce) {
	[data-cn-lines] .cn-line { transform: none !important; padding-bottom: 0; }
}


/* ================================================================
 * cn_icon_grid — held left column beside a two-up icon grid.
 * Internal hairlines only; this is component structure, not the
 * section-divider rule that was removed sitewide.
 * ================================================================ */
.cn-icongrid__grid {
	display: grid;
	grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
	gap: clamp(2rem, 5vw, 4.5rem);
	align-items: start;
}
.cn-icongrid__lead { position: sticky; top: clamp(6rem, 12vh, 9rem); }
.cn-icongrid__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(2rem, 3.4vw, 3.1rem);
	line-height: 1.08;
	margin: var(--space-4) 0 var(--space-5);
	max-width: 14ch;
}
.cn-icongrid__h2 em { font-family: var(--font-accent); font-style: italic; }
.cn-icongrid__body { color: var(--color-warm-gray); max-width: 34ch; margin-bottom: var(--space-5); }

.cn-icongrid__list {
	list-style: none; margin: 0; padding: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.cn-icongrid__cell {
	padding: clamp(1.75rem, 3vw, 2.75rem) clamp(1.5rem, 2.6vw, 2.5rem);
	border-top: 1px solid var(--color-hairline);
}
.cn-icongrid__cell:nth-child(odd)  { border-right: 1px solid var(--color-hairline); }
.cn-icongrid__cell:nth-child(1),
.cn-icongrid__cell:nth-child(2)    { border-top: 0; padding-top: 0; }

.cn-icongrid__mark { display: block; color: var(--color-deep-ink); margin-bottom: var(--space-5); }
.cn-geoicon { width: clamp(38px, 3.4vw, 48px); height: auto; display: block; }
.cn-icongrid__cell:hover .cn-geoicon { color: var(--color-orange-text); }
.cn-geoicon, .cn-icongrid__mark { transition: color var(--dur-fast) var(--ease-out); }

.cn-icongrid__title {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.4rem, 2vw, 1.85rem);
	line-height: 1.12;
	margin: 0 0 var(--space-3);
	max-width: 12ch;
}
.cn-icongrid__title a { color: inherit; text-decoration: none; }
.cn-icongrid__title a:hover { color: var(--color-orange-text); }
.cn-icongrid__copy { color: var(--color-warm-gray); font-size: var(--fs-sm); line-height: 1.6; margin: 0; }

@media (max-width: 980px) {
	.cn-icongrid__grid { grid-template-columns: minmax(0, 1fr); }
	.cn-icongrid__lead { position: static; }
	.cn-icongrid__h2 { max-width: none; }
}
@media (max-width: 620px) {
	.cn-icongrid__list { grid-template-columns: minmax(0, 1fr); }
	.cn-icongrid__cell { border-right: 0 !important; padding-inline: 0; }
	.cn-icongrid__cell:nth-child(2) { border-top: 1px solid var(--color-hairline); padding-top: clamp(1.75rem, 3vw, 2.75rem); }
}


/* ================================================================
 * cn_reviews_split — rating badge + quote left, action cards right
 * ================================================================ */
.cn-revsplit__grid {
	display: grid;
	grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
	gap: clamp(2rem, 5vw, 4.5rem);
	align-items: start;
}
.cn-revsplit__eyebrow {
	font-family: 'Montserrat', sans-serif; font-size: var(--fs-xs);
	letter-spacing: var(--tracking-eyebrow); text-transform: uppercase;
	color: var(--color-orange-text); margin: 0 0 var(--space-3);
}
.cn-revsplit__badge {
	display: inline-flex; align-items: center; gap: var(--space-4);
	padding: var(--space-4) var(--space-6) var(--space-4) var(--space-4);
	border: 1px solid var(--color-hairline); border-radius: 999px;
	background: var(--color-page);
}
.cn-revsplit__glyph { display: inline-flex; }
.cn-revsplit__badge-body { display: grid; grid-template-columns: auto auto; gap: 0 var(--space-3); align-items: center; }
.cn-revsplit__score { font-family: var(--font-display); font-size: 1.5rem; line-height: 1; color: var(--color-deep-ink); }
.cn-revsplit__stars { display: inline-flex; gap: 2px; font-size: 0.95rem; line-height: 1; }
.cn-star--full  { color: #F5A623; }
.cn-star--half  { color: #F5A623; opacity: 0.55; }
.cn-star--empty { color: var(--color-line); }
.cn-revsplit__count {
	grid-column: 1 / -1; font-family: 'Montserrat', sans-serif;
	font-size: var(--fs-xs); letter-spacing: 0.06em; color: var(--color-warm-gray); margin-top: 2px;
}
.cn-revsplit__source { font-size: var(--fs-xs); color: var(--color-warm-gray); margin: var(--space-3) 0 0; max-width: 40ch; }

.cn-revsplit__quote { margin: var(--space-7) 0 0; padding-left: var(--space-6); position: relative; }
.cn-revsplit__quote::before {
	content: "\201C"; position: absolute; left: 0; top: -0.35em;
	font-family: var(--font-accent); font-size: 3.5rem; line-height: 1; color: var(--color-line);
}
.cn-revsplit__quote blockquote { margin: 0; }
.cn-revsplit__quote p {
	font-size: clamp(1.05rem, 1.45vw, 1.3rem); line-height: 1.5; color: var(--color-ink); margin: 0;
}
.cn-revsplit__quote figcaption { display: flex; align-items: center; gap: var(--space-4); margin-top: var(--space-5); }
.cn-revsplit__qscore { font-family: var(--font-display); font-size: 1.2rem; color: var(--color-deep-ink); }
.cn-revsplit__qwho { display: grid; padding-left: var(--space-4); border-left: 1px solid var(--color-hairline); }
.cn-revsplit__qwho strong { font-size: var(--fs-sm); color: var(--color-deep-ink); }
.cn-revsplit__qwho span   { font-size: var(--fs-xs); color: var(--color-warm-gray); }

.cn-revsplit__cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5); }
.cn-revsplit__card {
	border: 1px solid var(--color-hairline); background: var(--color-page);
	padding: clamp(1.75rem, 2.6vw, 2.5rem);
	display: flex; flex-direction: column; gap: var(--space-4);
}
.cn-revsplit__cardmark { color: var(--color-deep-ink); }
.cn-revsplit__card h3 {
	font-family: var(--font-display); font-weight: var(--fw-light);
	font-size: clamp(1.3rem, 1.9vw, 1.7rem); line-height: 1.14; margin: 0; max-width: 15ch;
}
.cn-revsplit__card p { color: var(--color-warm-gray); font-size: var(--fs-sm); line-height: 1.6; margin: 0; flex: 1; }
/* A long label used to push the pill past the card's own border. */
.cn-revsplit__cardcta { align-self: stretch; justify-content: center; max-width: 100%; }
.cn-revsplit__card h3 { max-width: none; }
.cn-icongrid__title { max-width: 14ch; }

@media (max-width: 980px) {
	.cn-revsplit__grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 620px) {
	.cn-revsplit__cards { grid-template-columns: minmax(0, 1fr); }
}

/* ================================================================
 * cn_logo_strip — platform marquee + held claim panel
 * ================================================================ */
.cn-logostrip__wrap {
	display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, 22rem);
	align-items: stretch; border-block: 1px solid var(--color-hairline);
}
.cn-logostrip__rail { overflow: hidden; display: flex; align-items: center; padding-block: var(--space-5); }
.cn-logostrip__track { display: inline-flex; white-space: nowrap; }
.cn-logostrip__seq {
	display: inline-flex; align-items: center;
	animation: cn-logomarq var(--cn-logo-speed, 42s) linear infinite;
}
@keyframes cn-logomarq { from { transform: translateX(0); } to { transform: translateX(-100%); } }
.cn-logostrip__rail:hover .cn-logostrip__seq,
[data-cn-motion-paused] .cn-logostrip__seq { animation-play-state: paused; }
.cn-logostrip__item {
	display: inline-flex; align-items: center; justify-content: center;
	padding-inline: clamp(1.75rem, 3.4vw, 3.25rem);
}
.cn-logostrip__item img { max-height: 30px; width: auto; opacity: 0.55; filter: grayscale(1); }
.cn-logostrip__word {
	font-family: 'Montserrat', sans-serif; font-weight: var(--fw-semibold);
	font-size: clamp(1rem, 1.5vw, 1.3rem); letter-spacing: 0.01em;
	color: var(--color-warm-gray); white-space: nowrap;
}
.cn-logostrip__claim {
	background: var(--color-parchment);
	padding: clamp(1.5rem, 2.6vw, 2.25rem);
	display: flex; flex-direction: column; justify-content: center;
	border-left: 1px solid var(--color-hairline);
}
.cn-logostrip__claim-h { margin: 0; font-size: clamp(1rem, 1.4vw, 1.2rem); line-height: 1.35; color: var(--color-ink); }
.cn-logostrip__claim-n { margin: var(--space-2) 0 0; font-size: var(--fs-xs); color: var(--color-warm-gray); }
@media (max-width: 860px) {
	.cn-logostrip__wrap { grid-template-columns: minmax(0, 1fr); }
	.cn-logostrip__claim { border-left: 0; border-top: 1px solid var(--color-hairline); }
}
@media (prefers-reduced-motion: reduce) { .cn-logostrip__seq { animation: none; } }


/* ================================================================
 * cn_stat_row — Marko layout: rule across the top, hairline-divided
 * cells, oversized numeral that counts up from zero.
 * ================================================================ */
.cn-statrow__h2 {
	font-family: var(--font-display);
	font-weight: var(--fw-light);
	font-size: clamp(1.9rem, 3.2vw, 3rem);
	line-height: 1.12;
	text-align: center;
	max-width: 22ch;
	margin: 0 auto clamp(2.5rem, 5vw, 4.5rem);
}
.cn-statrow__h2 em { font-family: var(--font-accent); font-style: italic; }

.cn-statrow__list {
	list-style: none; margin: 0; padding: 0;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--color-hairline);
}
.cn-statrow__cell {
	padding: clamp(1.75rem, 3vw, 2.75rem) clamp(1.25rem, 2.2vw, 2rem);
	display: flex; flex-direction: column;
}
.cn-statrow__cell + .cn-statrow__cell { border-left: 1px solid var(--color-hairline); }
.cn-statrow__cell:first-child { padding-left: 0; }
.cn-statrow__cell:last-child  { padding-right: 0; }

.cn-statrow__icon { display: block; color: var(--color-orange-text); margin-bottom: var(--space-4); }
.cn-statrow__icon .cn-geoicon { width: 30px; }

.cn-statrow__value {
	font-family: 'Montserrat', sans-serif;
	font-weight: 300;
	font-size: clamp(3.25rem, 6.4vw, 5.25rem);
	line-height: 0.95;
	letter-spacing: -0.03em;
	color: var(--color-deep-ink);
	font-variant-numeric: tabular-nums;   /* no width jitter while counting */
	display: block;
}
.cn-statrow__label {
	font-family: 'Montserrat', sans-serif;
	font-weight: var(--fw-semibold);
	font-size: var(--fs-md);
	color: var(--color-deep-ink);
	margin-top: var(--space-4);
}
.cn-statrow__body {
	font-size: var(--fs-sm); line-height: 1.55;
	color: var(--color-warm-gray); margin: var(--space-2) 0 0;
}

@media (max-width: 900px) {
	.cn-statrow__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.cn-statrow__cell:nth-child(odd)  { padding-left: 0; }
	.cn-statrow__cell:nth-child(even) { padding-right: 0; }
	.cn-statrow__cell:nth-child(3),
	.cn-statrow__cell:nth-child(4) { border-top: 1px solid var(--color-hairline); }
	.cn-statrow__cell:nth-child(3) { border-left: 0; }
}
@media (max-width: 560px) {
	.cn-statrow__list { grid-template-columns: minmax(0, 1fr); }
	.cn-statrow__cell { border-left: 0 !important; padding-inline: 0; }
	.cn-statrow__cell + .cn-statrow__cell { border-top: 1px solid var(--color-hairline); }
}


/* Mono-line icon set: keep the stroke optically even as the box scales. */
.cn-geoicon { stroke-linecap: square; stroke-linejoin: miter; vector-effect: non-scaling-stroke; }
.cn-statrow__icon .cn-geoicon { width: 34px; }

/* Holds the last two words of a headline's setup text together so the line
 * before the emphasis never ends on a lone word. Applied by cn_hl(); it works
 * through GSAP SplitText because the rule sits on the parent of the per-word
 * inline-blocks rather than on whitespace the split would discard. */
.cn-hl-keep { white-space: nowrap; }

/* Named reviewer line under the post byline. Present only on posts where a
 * credentialed reviewer has been assigned. */
.cn-reviewed-by {
	margin: var(--space-3) 0 0;
	font-size: var(--fs-xs);
	color: var(--color-warm-gray);
	letter-spacing: 0.01em;
}
.cn-reviewed-by a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.cn-reviewed-by a:hover { color: var(--color-deep-ink); }
