/* =========================================================================
   Sections unique to the pages built alongside the home page: Patient Journey
   and Clinics.

   Same conventions as main.css: one banner-comment block per section, tokens
   and container measures from main.css's :root, BEM class names. Sections the
   home page shares (challenge, main CTA, FAQ) are styled in main.css and only
   overridden here when the Journey instance genuinely differs.

   ponytail: split out of main.css only because a second agent is writing that
   file concurrently — fold this back into main.css once the home page lands.
   ========================================================================= */

/* ---- Journey hero (Figma 40000371:48915) -------------------------------- */
/* 224px top / 80px bottom pad around a 364px content block = Figma's 668px. */
.jhero {
	position: relative;
	padding-block: clamp(7rem, 12.96vw, 14rem) var(--s-80);   /* 224px @1728 */
	overflow: hidden;
	background: var(--c-white);
}

.jhero__bg {
	position: absolute;
	top: 0; left: 0; right: 0;
	height: 668px;
	overflow: hidden;
	pointer-events: none;
}

/* Scales with the viewport past the 1728px design width so the wash never ends
   in a hard edge; below it, the 1728px render stays centred and is cropped. */
.jhero__bg img {
	position: absolute;
	top: 0; left: 50%;
	transform: translateX(-50%);
	width: 100%;
	min-width: 1728px;
	max-width: none;
	height: auto;
}

.jhero__inner { position: relative; }

.jhero__text {
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 764px;
	margin-inline: auto;
	text-align: center;
}

.jhero__kicker {
	margin: 0 0 20px;
	font-size: clamp(1rem, 1.042vw, 1.125rem);      /* 18px @1728 */
	line-height: 1.56;                               /* 28.08px @18px */
	font-weight: 700;
	text-transform: uppercase;
	color: var(--c-accent);
}

.jhero__title {
	margin: 0;
	font-size: var(--fs-h1);                         /* 64px @1728 */
	line-height: 1.12;                               /* 71.68px @64px */
	font-weight: 700;
	letter-spacing: -0.03em;                         /* -1.92px @64px */
	color: var(--c-ink);
}

.jhero__accent { color: var(--c-accent); }

/* Figma stacks a 30px gap and a 12px top pad above the lead. */
.jhero__lead {
	margin: 42px 0 0;
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 1.56;
	font-weight: 500;
	color: var(--c-body);
}

@media (max-width: 900px) {
	.jhero__bg { height: 480px; }
	.jhero__bg img { min-width: 1100px; }
}

@media (max-width: 720px) {
	/* The header floats over this section and its pill bottom sits at ~92px, so
	   the top pad has to clear that, not just look like breathing room. */
	.jhero { padding-block: 120px var(--s-48); }
	.jhero__lead { margin-top: var(--s-24); }
}

/* ---- Differentiation mosaic (Figma 40000598:141544) --------------------- */
.mozaik { padding-block: var(--s-80); background: var(--c-white); }

.mozaik__head { display: flex; flex-direction: column; align-items: flex-start; }

.mozaik__title {
	/* Figma pads 8px above the heading's own line box, as the challenge does. */
	max-width: 620px;
	margin: 8px 0 0;
	font-size: clamp(1.875rem, 3.009vw, 3.25rem);   /* 52px @1728 */
	line-height: 1.16;                               /* 60.32px @52px */
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--c-ink);
}

.mozaik__lead {
	max-width: 628px;
	margin: 40px 0 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 500;
	color: var(--c-body);
}

/* Two rows of two, each on Figma's own uneven split of the 1320 measure:
   747/553 then 571/725. fr units keep those ratios as the row narrows. */
.mozaik__cards {
	display: flex;
	flex-direction: column;
	gap: 20px;
	margin-top: var(--s-48);
}

.mozaik__row { display: grid; }
.mozaik__row--1 { grid-template-columns: 747fr 553fr; gap: 20px; }
.mozaik__row--2 { grid-template-columns: 571fr 725fr; gap: 24px; }

.mozaik__card {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	align-items: center;
	min-height: 440px;
	padding: 56px 52px 46px;
	overflow: hidden;
	background: var(--c-ice);
	border: 1px solid var(--c-line);
	border-radius: 20px;
}

/* Figma anchors the illustration 26px from the card top, centred, and lets the
   title overlap its lower edge. */
.mozaik__orbit {
	position: absolute;
	top: 20px; left: 50%;
	transform: translateX(-50%);
	max-width: 100%;
	height: auto;
	pointer-events: none;
}

.mozaik__card-text {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 8px;
	width: 100%;
	text-align: center;
}

.mozaik__card-title {
	margin: 0;
	font-size: clamp(1.25rem, 1.389vw, 1.5rem);      /* 24px @1728 */
	line-height: 1.34;
	font-weight: 700;
	color: var(--c-ink);
}

.mozaik__card-desc {
	margin: 0;
	font-size: clamp(1rem, 1.042vw, 1.125rem);       /* 18px @1728 */
	line-height: 1.56;
	font-weight: 500;
	color: var(--c-body);
}

.mozaik__closing {
	margin: 40px 0 0;
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 1.56;
	font-weight: 500;
	color: var(--c-body);
}

@media (max-width: 900px) {
	.mozaik__row { grid-template-columns: 1fr; gap: 20px; }
	.mozaik__card { padding-inline: var(--s-32); }
}

/* ---- A connected approach (Figma 40000598:141681) ----------------------- */
/* Geometry is identical to main.css's "One record" section — same Figma card
   component, same 578/486/538 heights, same illustrations. Kept separate so an
   edit to the home page's section cannot change this page. */
.japproach { padding-block: var(--s-80); }

.japproach__head {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.japproach__kicker {
	margin: 0 0 20px;
	font-size: clamp(1rem, 1.042vw, 1.125rem);       /* 18px @1728 */
	line-height: 1.56;
	font-weight: 700;
	text-transform: uppercase;
	color: var(--c-accent);
}

.japproach__title {
	max-width: 798px;
	margin: 0;
	font-size: clamp(1.875rem, 3.009vw, 3.25rem);    /* 52px @1728 */
	line-height: 1.16;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--c-ink);
}

.japproach__lead {
	max-width: 723px;
	margin: 40px 0 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 500;
	color: var(--c-body);
}

.japproach__cards { margin-top: 10px; padding-top: var(--s-48); }

/* Each card sticks under the one before it, 60px lower, so the stack reads as
   a pile. No ancestor may create a scroll container or this silently degrades
   (see DESIGN-NOTES item 7 — body must stay `overflow-x: clip`). */
.japproach__card {
	position: sticky;
	top: 0;
	display: flex;
	align-items: flex-start;
	padding-top: 60px;
	filter: drop-shadow(var(--shadow-card));
}

.japproach__card + .japproach__card { margin-top: 60px; }

.japproach__card--1 { height: 578px; }
.japproach__card--2 { height: 486px; }
.japproach__card--3 { height: 538px; }

.japproach__panel {
	display: grid;
	grid-template-columns: 490px 704px;   /* 490 + 704 = the 1194.36 content box */
	grid-template-rows: minmax(0, 1fr);
	height: 100%;
	/* Figma authors 74px, but its 490+704 content is 22px wider than that
	   leaves and Figma centres the overflow; 62.82px is the rendered result. */
	padding: 40px 62.82px;
	overflow: clip;
	background: var(--c-white);
	border-radius: 20px;
}

.japproach__text {
	align-self: center;
	display: flex;
	flex-direction: column;
	gap: 27px;
	padding-right: 40px;
}

.japproach__card-title {
	margin: 0;
	font-size: clamp(1.5rem, 1.968vw, 2.125rem);     /* 34px @1728 */
	line-height: 1.39;
	font-weight: 700;
	color: var(--c-ink);
}

.japproach__card-desc {
	margin: 0;
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 1.56;
	font-weight: 500;
	color: var(--c-body);
}

.japproach__figure { align-self: start; min-width: 0; }
.japproach__figure img { width: 704px; max-width: none; height: auto; }

.japproach__ending { margin-top: var(--s-64); }

.japproach__ending-title {
	margin: 0;
	font-size: clamp(1.25rem, 1.389vw, 1.5rem);      /* 24px @1728 */
	line-height: 1.34;
	font-weight: 700;
	color: var(--c-ink);
}

.japproach__ending-body {
	margin: 20px 0 0;
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 1.56;
	font-weight: 500;
	color: var(--c-body);
}

.japproach__link {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	margin-top: var(--s-32);
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 24px;
	font-weight: 500;
	letter-spacing: -0.4px;
	color: var(--c-accent);
	text-decoration: none;
}

.japproach__link:hover { text-decoration: underline; }

@media (max-width: 1400px) {
	/* Below the design width the fixed 490 + 704 panel no longer fits, so the
	   columns become proportional and the cards size to their content. */
	.japproach__panel { grid-template-columns: 41.03% 58.97%; padding-inline: var(--s-48); }
	.japproach__figure img { width: 100%; margin: 0; }
}

@media (max-width: 900px) {
	.japproach__card,
	.japproach__card--1,
	.japproach__card--2,
	.japproach__card--3 { position: static; height: auto; padding-top: 0; }
	.japproach__card + .japproach__card { margin-top: var(--s-32); }
	.japproach__panel { grid-template-columns: 1fr; grid-template-rows: auto auto; gap: var(--s-32); padding: var(--s-32); }
	.japproach__text { padding-right: 0; }
}

/* ---- One journey / pathways (Figma 40000319:7259) ----------------------- */
/* Three phase colours that no existing token matches (the palette already has
   four near-identical blues — see DESIGN-NOTES item 5b). Named here so they are
   easy to fold into :root if they turn out to be real palette members. */
.jpath {
	--jpath-exploration: #eeaa74;
	--jpath-treatment: #c67cb7;
	--jpath-connection: #7c60d8;
	padding-block: 70px;
	background: var(--c-white);
}

.jpath__head {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.jpath__kicker {
	margin: 0 0 8px;
	font-size: clamp(1rem, 1.042vw, 1.125rem);       /* 18px @1728 */
	line-height: 1.56;
	font-weight: 700;
	text-transform: uppercase;
	color: var(--c-accent);
}

.jpath__title {
	max-width: 991px;
	margin: 0;
	font-size: clamp(1.875rem, 3.009vw, 3.25rem);    /* 52px @1728 */
	line-height: 1.16;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--c-ink);
}

/* Figma runs the brand ramp right-to-left across the middle phrase. */
.jpath__grad {
	background-image: linear-gradient(to left, #3346f4 18.401%, #c278bd 51.271%, #eeaa74 85.431%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.jpath__lead {
	max-width: 794px;
	margin: 40px 0 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 500;
	color: var(--c-body);
}

/* The diagram. 1cqw = 1% of the stage width = 13.6px at the design width, so
   every child below scales with the stage instead of the viewport. Positions
   come from the partial as ready-made cqw values. */
.jpath__stage {
	container-type: inline-size;
	position: relative;
	width: 100%;
	aspect-ratio: 1360 / 1286;
	margin-top: 10px;
}

/* Figma's export of the vector node has its rotate/skew/scale baked in, so the
   ribbon is placed by its own rendered box — measured against Figma's render of
   this section, which puts it at 11,134 in the 1360x1286 stage. */
.jpath__ribbon {
	position: absolute;
	left: 0.8088cqw;
	top: 9.8529cqw;
	width: 99.3382cqw;                               /* 1351px @1360 */
	height: 68.4559cqw;                              /* 931px  @1360 */
}

/* Figma centres a phase title on its y, so the box is pinned by its middle. */
.jpath__phase {
	position: absolute;
	top: var(--y);
	left: var(--x);
	transform: translateY(-50%);
}

.jpath__phase-title {
	margin: 0;
	font-size: 2.3529cqw;                            /* 32px @1360 */
	line-height: 1.219;
	font-weight: 700;
	letter-spacing: -0.03em;
	white-space: nowrap;
}

.jpath__phase--exploration .jpath__phase-title { color: var(--jpath-exploration); }
.jpath__phase--treatment   .jpath__phase-title { color: var(--jpath-treatment); }
.jpath__phase--connection  .jpath__phase-title { color: var(--jpath-connection); }

.jpath__phase-desc {
	position: absolute;
	top: var(--y);
	left: var(--x);
	width: var(--w);
	margin: 0;
	font-size: 1.1765cqw;                            /* 16px @1360 */
	line-height: 1.5;
	font-weight: 400;
	letter-spacing: -0.0195em;
	color: var(--c-sub);
}

/* A milestone chip. Figma's own width is used, and the 6px corner is the tail
   that points it at the ribbon. */
.jpath__chip {
	position: absolute;
	top: var(--y);
	left: var(--x);
	width: var(--w);
	height: 4.1912cqw;                               /* 57px @1360 */
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 3.7169cqw;
	background: var(--c-white);
	box-shadow: 0 0.2971cqw 0.1485cqw rgba(0, 0, 0, 0.09);
	font-size: 1.5588cqw;                            /* 21.2px @1360 */
	line-height: 1;
	font-weight: 500;
	letter-spacing: -0.0337em;
	text-align: center;
	color: var(--c-ink);
	white-space: nowrap;
}

.jpath__chip--tl { border-top-left-radius: 0.4463cqw; }
.jpath__chip--tr { border-top-right-radius: 0.4463cqw; }

.jpath__stars {
	position: absolute;
	top: 71.8309cqw;
	left: 84.8566cqw;
	width: 11.549cqw;                                /* 157px @1360 */
	height: auto;
	transform: translate(-50%, -50%);
}

.jpath__closing {
	max-width: 744px;
	margin: 10px auto 0;
	text-align: center;
}

.jpath__closing p {
	margin: 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 400;
	color: var(--c-body);
}

.jpath__closing p + p { margin-top: 32px; }

/* Below the design width the stage keeps scaling, but the 16px descriptions and
   21px chips stop being readable well before the layout breaks. At that point
   the diagram becomes a plain illustration and the phases and their chips stack
   in reading order — which is why each phase carries its own chips in the
   markup. */
@media (max-width: 900px) {
	.jpath { padding-block: var(--s-48); }

	.jpath__stage {
		container-type: normal;
		display: flex;
		flex-direction: column;
		gap: var(--s-16);
		aspect-ratio: auto;
		margin-top: var(--s-32);
	}

	.jpath__ribbon {
		position: static;
		width: 100%;
		height: auto;
	}

	.jpath__phase,
	.jpath__phase-desc,
	.jpath__chip {
		position: static;
		width: auto;
		transform: none;
	}

	.jpath__phase { margin-top: var(--s-16); }
	.jpath__phase-title { font-size: 1.5rem; white-space: normal; }
	.jpath__phase-desc { font-size: 1rem; margin-top: 8px; }

	.jpath__chip {
		align-self: start;
		height: auto;
		padding: 10px 18px;
		border-radius: 50px;
		font-size: 1rem;
		white-space: normal;
	}

	.jpath__stars { position: static; width: 157px; transform: none; }
}

/* =========================================================================
   Clinics — template-clinics.php
   ========================================================================= */

/* ---- Shared-partial extras used only by Clinics ------------------------- */
/* The challenge component's optional bold lead-in and trailing CTA (Figma
   40000359:25433). Both selectors only exist when those $args are passed, so
   the home page is untouched. */
.challenge__closing-strong { font-weight: 700; }
.challenge__cta { margin-top: 70px; text-align: center; }

/* ---- Clinics hero (Figma 40000356:24629) -------------------------------- */
/* 224px top / 80px bottom around a 943px content block = Figma's 1247px. */
.chero {
	position: relative;
	padding-block: clamp(7rem, 12.96vw, 14rem) var(--s-80);
	overflow: hidden;
	background: var(--c-white);
}

.chero__bg {
	position: absolute;
	top: 0; left: 0; right: 0;
	height: 694px;
	overflow: hidden;
	pointer-events: none;
}

.chero__bg img {
	position: absolute;
	top: 0; left: 50%;
	transform: translateX(-50%);
	width: 100%;
	min-width: 1728px;
	max-width: none;
	height: auto;
}

.chero__inner { position: relative; }

.chero__text { max-width: 800px; }

.chero__kicker {
	margin: 0;
	font-size: clamp(1rem, 1.042vw, 1.125rem);       /* 18px @1728 */
	line-height: 1.56;
	font-weight: 700;
	text-transform: uppercase;
	color: var(--c-accent);
}

.chero__title {
	/* Figma pads 8px above the heading's own line box. */
	margin: 8px 0 0;
	font-size: clamp(1.875rem, 3.009vw, 3.25rem);    /* 52px @1728 */
	line-height: 1.16;                                /* 60.32px @52px */
	font-weight: 700;
	letter-spacing: -0.02em;
	/* Figma uses #0a0d14 here rather than the --c-ink the other headings use. */
	color: #0a0d14;
}

.chero__accent { color: var(--c-accent); }

/* Figma's authored break; below the design width the heading reflows instead. */
.chero__br { display: inline; }

/* Figma stacks a 30px gap and a 12px top pad above the lead. */
.chero__lead {
	margin: 42px 0 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 500;
	color: var(--c-body);
}

.chero__actions { margin-top: var(--s-48); }

.chero__buttons { display: flex; flex-wrap: wrap; gap: 20px; }

.chero__fine {
	margin: 20px 0 0;
	font-size: 0.8125rem;                             /* 13px */
	line-height: normal;
	font-weight: 400;
	color: var(--c-ink);
	opacity: 0.5;
}

/* Figma insets the photo pair 20px inside the 1320 measure, so they sit on a
   1280 measure while the copy above stays on 1320. */
.chero__photos {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--s-24);
	margin: 60px 20px 0;
}

.chero__photos img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 628 / 440;
	object-fit: cover;
	border-radius: 20px;
}

/* Longevity's hero carries one wide photo instead of the pair. */
.chero__photos--single { grid-template-columns: minmax(0, 1fr); }
.chero__photos--single img { aspect-ratio: 1280 / 440; }

@media (max-width: 900px) {
	/* Same as the Journey hero: clear the overlaying header pill (~92px). */
	.chero { padding-block: 120px var(--s-48); }
	.chero__bg { height: 480px; }
	.chero__bg img { min-width: 1100px; }
	.chero__lead { margin-top: var(--s-24); }
	.chero__photos { grid-template-columns: 1fr; margin-inline: 0; }
	.chero__br { display: none; }
}

/* ---- Value props (Figma 40000542:129542) -------------------------------- */
/* No top padding: Figma butts this straight against the hero. */
.vprops {
	padding: 0 clamp(20px, 6.94vw, 120px) 96px;
	background: var(--c-white);
}

.vprops__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--s-24);
	max-width: 1488px;
	margin-inline: auto;
}

.vprops__card {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	padding: var(--s-32);
	text-align: center;
	background: var(--c-white);
	border-radius: 20px;
}

.vprops__tile {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px; height: 48px;
	border-radius: 12px;
	/* Figma's only use of this pale green pair; scoped until it earns a token. */
	background: #f2f7ec;
	color: #a2dc50;
}

.vprops__icon { width: 24px; height: 24px; }

.vprops__title {
	margin: 0;
	font-size: clamp(1.25rem, 1.389vw, 1.5rem);      /* 24px @1728 */
	line-height: 1.34;
	font-weight: 700;
	color: var(--c-ink);
}

.vprops__desc {
	margin: 0;
	font-size: clamp(0.9375rem, 0.926vw, 1rem);      /* 16px @1728 */
	line-height: 1.625;                               /* 26px @16px */
	font-weight: 500;
	color: var(--c-body);
}

/* ---- Built in clinical practice (Figma 40000359:34480) ------------------ */
.practice { padding-block: var(--s-120); background: var(--c-white); }

.practice__grid {
	display: grid;
	grid-template-columns: 610fr 610fr;
	gap: 100px;
	align-items: center;
}

.practice__text { display: flex; flex-direction: column; align-items: flex-start; }

.practice__kicker {
	margin: 0 0 12px;
	font-size: clamp(1rem, 1.042vw, 1.125rem);       /* 18px @1728 */
	line-height: 1.56;
	font-weight: 700;
	text-transform: uppercase;
	color: var(--c-accent);
}

.practice__title {
	/* Figma holds the heading to a 430px measure so it breaks after "built into". */
	max-width: 430px;
	margin: 0 0 24px;
	font-size: clamp(1.5rem, 1.852vw, 2rem);         /* 32px @1728 */
	line-height: 1.24;
	font-weight: 700;
	letter-spacing: -0.03em;
	color: var(--c-ink);
}

.practice__body {
	margin: 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 400;
	color: var(--c-body);
}

.practice__body + .practice__body { margin-top: 32px; }

.practice__link {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	margin-top: var(--s-32);
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 24px;
	font-weight: 500;
	letter-spacing: -0.4px;
	color: var(--c-accent);
	text-decoration: none;
}

.practice__link:hover { text-decoration: underline; }

.practice__figure { width: 100%; height: auto; }

@media (max-width: 1120px) {
	.practice__grid { gap: var(--s-48); }
}

@media (max-width: 900px) {
	.vprops { padding-bottom: var(--s-64); }
	.vprops__grid { grid-template-columns: 1fr; }
	.practice { padding-block: var(--s-80); }
	.practice__grid { grid-template-columns: 1fr; gap: var(--s-32); }
	.practice__title { max-width: none; }
}

/* =========================================================================
   Services — template-services.php
   ========================================================================= */

/* Figma mirrors two of the three two-column sections: illustration first. */
.practice--reverse .practice__text { order: 2; }
.practice--reverse .practice__figure { order: 1; }

/* Figma authors a break in the "Built for handover" heading; below the design
   width the heading reflows on its own. */
.practice__br { display: inline; }

/* ---- Note band (Figma 40000496:101969) ---------------------------------- */
.noteband { padding-block: var(--s-80); background: var(--c-white); }

.noteband__text {
	margin: 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 500;
	color: var(--c-body);
}

.noteband__strong { font-weight: 700; }

@media (max-width: 900px) {
	/* Stacked, the mirrored order would put the illustration above the copy on
	   two of three sections and below it on the third; keep copy first. */
	.practice--reverse .practice__text { order: 1; }
	.practice--reverse .practice__figure { order: 2; }
	.practice__br { display: none; }
	.noteband { padding-block: var(--s-48); }
}

/* The Platform hero paints its accent phrase rose; Figma's Services instance
   uses accent blue. Scoped on the body class body_class() already emits rather
   than adding a colour arg to the shared partial. */
.page-template-template-services .phero__title-accent,
.page-template-template-contact .phero__title-accent,
.page-template-template-insights .phero__title-accent,
.page-template-template-demo .phero__title-accent,
.page-template-template-trust .phero__title-accent { color: var(--c-accent); }

/* =========================================================================
   Insights — template-insights.php
   ========================================================================= */

/* ---- Featured Insight (Figma 40000496:91558) ---------------------------- */
.ifeat { padding-block: 36px var(--s-48); background: var(--c-white); }

.ifeat__card {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--s-32);
	padding: 8px 60px 8px 8px;
	overflow: hidden;
	background: var(--c-white);
	border: 1px solid var(--c-line);
	border-radius: 20px;
}

.ifeat__media {
	flex: 0 0 auto;
	width: 595px;
	max-width: 50%;
	aspect-ratio: 595 / 402;
	overflow: hidden;
	border-radius: 16px;
	/* Same fallback the grid cards use, so a post with no featured image keeps
	   the card's proportions instead of leaving a white hole. */
	background: linear-gradient(135deg, var(--c-ice) 0%, var(--c-ice-2) 100%);
}

.ifeat__media img { display: block; width: 100%; height: 100%; object-fit: cover; }

.ifeat__body {
	flex: 0 1 595px;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	padding-block: var(--s-24);
}

.ifeat__date {
	margin: 0;
	font-size: clamp(1rem, 1.042vw, 1.125rem);       /* 18px @1728 */
	line-height: 1.56;
	font-weight: 500;
	color: var(--c-body);
}

.ifeat__title {
	margin: 20px 0 0;
	font-size: clamp(1.5rem, 1.852vw, 2rem);         /* 32px @1728 */
	line-height: 1.24;
	font-weight: 700;
	letter-spacing: -0.03em;
	color: var(--c-ink);
}

.ifeat__title a { color: inherit; text-decoration: none; }
.ifeat__title a:hover { text-decoration: underline; }

.ifeat__excerpt {
	margin: 8px 0 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 500;
	color: var(--c-body);
}

/* Figma centres the button under the copy rather than aligning it left. */
.ifeat__actions { align-self: stretch; margin: var(--s-32) 0 0; text-align: center; }

.ifeat__more {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 175px;
	padding: 18px 36px;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);
	line-height: 24px;
	font-weight: 700;
	letter-spacing: -0.4px;
	color: var(--c-ink);
	text-decoration: none;
	/* The only hairline-grey button in the design; no --btn variant matches. */
	border: 1.5px solid #cecfd0;
	border-radius: 100px;
	transition: border-color 0.2s var(--ease), background-color 0.2s var(--ease);
}

.ifeat__more:hover { border-color: var(--c-ink); background: var(--c-frame); }

/* ---- The grid, reused from the home page with its head dropped ---------- */
.insights--page { padding-block: 0 var(--s-120); }

@media (max-width: 1120px) {
	.ifeat__card { padding: 8px; }
	.ifeat__media { max-width: 45%; }
}

@media (max-width: 900px) {
	.ifeat__card { flex-direction: column; align-items: stretch; gap: 0; }
	/* Stacked, the flex basis would apply to the vertical axis and leave the
	   card 595px taller than its content. */
	.ifeat__media,
	.ifeat__body { flex: 0 0 auto; }
	.ifeat__media { width: auto; max-width: none; }
	.ifeat__body { padding: var(--s-24); }
	.ifeat__actions { text-align: left; }
	.insights--page { padding-bottom: var(--s-80); }
}

/* ---- Card placeholder + grid pager ------------------------------------- */
/* The featured card's placeholder. The grid card's equivalent lives in main.css
   instead, because that partial also renders outside the gated page templates. */
.ifeat__placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
}

.ifeat__placeholder-mark {
	width: 22%;
	max-width: 96px;
	height: auto;
	color: var(--c-ice-ink);
	opacity: 0.32;
}

.insights__pager { margin-top: var(--s-64); }

.insights__pager ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	align-items: center;
	justify-content: center;
}

.insights__pager a,
.insights__pager span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 48px;
	padding: 12px 16px;
	font-size: var(--fs-body);
	line-height: 24px;
	font-weight: 600;
	color: var(--c-ink);
	text-decoration: none;
	border: 1px solid var(--c-line);
	border-radius: var(--radius-pill);
	transition: border-color 0.2s var(--ease), background-color 0.2s var(--ease), color 0.2s var(--ease);
}

.insights__pager a:hover { border-color: var(--c-ink); background: var(--c-frame); }

.insights__pager .current {
	color: var(--c-white);
	background: var(--c-accent);
	border-color: var(--c-accent);
}

.insights__pager .dots { border-color: transparent; }

@media (max-width: 720px) {
	.insights__pager { margin-top: var(--s-48); }
	.insights__pager a,
	.insights__pager span { min-width: 42px; padding: 10px 12px; }
}

/* =========================================================================
   Contact — template-contact.php
   No Figma frame; built from the tokens and measures the other sections use.
   ========================================================================= */
.cform { padding-block: var(--s-80) var(--s-120); background: var(--c-white); }

.cform__grid {
	display: grid;
	grid-template-columns: minmax(0, 760fr) minmax(0, 480fr);
	gap: var(--s-80);
	align-items: start;
}

.cform__title {
	margin: 0;
	font-size: clamp(1.875rem, 3.009vw, 3.25rem);    /* 52px @1728, as the other h2s */
	line-height: 1.16;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--c-ink);
}

.cform__lead {
	max-width: 620px;
	margin: var(--s-24) 0 0;
	font-size: clamp(1.0625rem, 1.157vw, 1.25rem);   /* 20px @1728 */
	line-height: 1.6;
	font-weight: 500;
	color: var(--c-body);
}

.cform__notice {
	margin: var(--s-32) 0 0;
	padding: 16px 20px;
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 1.56;
	font-weight: 500;
	border-radius: var(--radius-2);
}

.cform__notice--ok  { color: var(--c-deep); background: var(--c-ice); border: 1px solid var(--c-ice-2); }
.cform__notice--bad { color: var(--c-iso); background: var(--c-cream); border: 1px solid var(--c-orange); }

.cform__form { margin-top: var(--s-32); }

.cform__field { display: flex; flex-direction: column; gap: 8px; margin: 0 0 var(--s-24); }

.cform__field label {
	font-size: var(--fs-body);
	line-height: 24px;
	font-weight: 600;
	color: var(--c-ink);
}

.cform__field input,
.cform__field select,
.cform__field textarea {
	width: 100%;
	padding: 14px 18px;
	font-family: inherit;
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 1.56;
	color: var(--c-ink);
	background: var(--c-white);
	border: 1px solid var(--c-line);
	border-radius: var(--radius-2);
	transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
}

.cform__field textarea { resize: vertical; min-height: 160px; }

/* Same box as the inputs, with a chevron drawn in place of the OS control so a
   dropdown does not break the form's rhythm. */
.cform__field select {
	appearance: none;
	padding-right: 46px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%2354565b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 18px center;
	cursor: pointer;
}

/* Until something is chosen the placeholder option should read as placeholder. */
.cform__field select:invalid { color: var(--c-muted); }

.cform__field input:hover,
.cform__field select:hover,
.cform__field textarea:hover { border-color: var(--c-muted); }

.cform__field input:focus-visible,
.cform__field select:focus-visible,
.cform__field textarea:focus-visible {
	border-color: var(--c-accent);
	outline: none;
	box-shadow: 0 0 0 3px rgba(51, 71, 244, 0.18);
}

.cform__submit { margin: 0; }

/* ---- Preferred date (demo form only) ------------------------------------
   A month on the page rather than behind the OS date popup. The native input
   is still the control; cform.js hides it and writes into it. */
.cform__when {
	margin: 0 0 var(--s-24);
	padding: var(--s-24);
	border: 1px solid var(--c-line);
	border-radius: var(--radius-2);
	background: var(--c-ice);
}

.cform__when-legend {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 0;
	font-size: var(--fs-body);
	line-height: 24px;
	font-weight: 600;
	color: var(--c-ink);
}

.cform__optional {
	padding: 2px 8px;
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--c-ice-ink);
	background: var(--c-white);
	border: 1px solid var(--c-ice-2);
	border-radius: 1000px;
}

/* The no-JS control. Kept full-width like the other fields.
   The [hidden] rule is load-bearing: cform.js hides this once the grid is up,
   and .cform__field sets display:flex, which outranks the UA sheet's
   [hidden] { display: none } — without this the native input stays on screen
   next to the calendar showing the same date twice. */
.cform__date { margin: var(--s-16) 0 0; }
.cform__date[hidden] { display: none; }

.cform__cal {
	/* A calendar should read as a calendar: at the form's full width the cells
	   stretch to ~100px and it turns into a table. */
	max-width: 384px;
	margin-top: var(--s-16);
	padding: 12px;
	background: var(--c-white);
	border: 1px solid var(--c-ice-2);
	border-radius: var(--radius-2);
}

.cform__cal-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin-bottom: 8px;
}

.cform__cal-title {
	font-size: var(--fs-body);
	font-weight: 600;
	color: var(--c-ink);
	text-transform: capitalize;
}

.cform__cal-nav {
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	padding: 0;
	background: none;
	border: 1px solid var(--c-line);
	border-radius: var(--radius-2);
	color: var(--c-ink);
	cursor: pointer;
	transition: border-color 0.2s var(--ease), color 0.2s var(--ease);
}

.cform__cal-nav span {
	display: block;
	width: 7px;
	height: 7px;
	margin: 0 auto;
	border-left: 1.6px solid currentColor;
	border-bottom: 1.6px solid currentColor;
	transform: rotate(45deg) translate(1px, -1px);
}

.cform__cal-nav--next span { transform: rotate(-135deg) translate(1px, -1px); }

.cform__cal-nav:hover:not(:disabled) { border-color: var(--c-accent); color: var(--c-accent); }
.cform__cal-nav:disabled { opacity: 0.3; cursor: default; }

.cform__cal-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
}

.cform__cal-dow {
	padding: 6px 0;
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--c-ice-ink);
	text-align: center;
	text-transform: uppercase;
}

.cform__cal-day {
	aspect-ratio: 1;
	padding: 0;
	font-family: inherit;
	font-size: 0.9375rem;
	color: var(--c-ink);
	background: none;
	border: 1px solid transparent;
	border-radius: var(--radius-2);
	cursor: pointer;
	transition: background-color 0.15s var(--ease), color 0.15s var(--ease);
}

.cform__cal-day:hover:not(:disabled) { background: var(--c-ice); border-color: var(--c-ice-2); }

.cform__cal-day:disabled { color: var(--c-line); cursor: default; }

.cform__cal-day.is-selected {
	color: var(--c-white);
	background: var(--c-accent);
	border-color: var(--c-accent);
	font-weight: 600;
}

.cform__cal-day:focus-visible,
.cform__cal-nav:focus-visible {
	outline: none;
	box-shadow: 0 0 0 3px rgba(51, 71, 244, 0.18);
}

/* ---- Preferred time ---- */
.cform__slots { margin-top: var(--s-16); }

.cform__slots-label {
	display: block;
	margin-bottom: 8px;
	font-size: var(--fs-body);
	line-height: 24px;
	font-weight: 600;
	color: var(--c-ink);
}

.cform__chips { display: flex; flex-wrap: wrap; gap: 8px; }

/* Off-screen rather than display:none: a hidden radio is not focusable, and
   the chip has to be reachable by keyboard. */
.cform__chip-input {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.cform__chip {
	display: inline-block;
	padding: 8px 16px;
	font-size: 0.9375rem;
	font-weight: 500;
	color: var(--c-ink);
	background: var(--c-white);
	border: 1px solid var(--c-line);
	border-radius: 1000px;
	cursor: pointer;
	transition: border-color 0.2s var(--ease), background-color 0.2s var(--ease), color 0.2s var(--ease);
}

.cform__chip:hover { border-color: var(--c-muted); }

.cform__chip-input:checked + .cform__chip {
	color: var(--c-white);
	background: var(--c-accent);
	border-color: var(--c-accent);
}

.cform__chip-input:focus-visible + .cform__chip {
	box-shadow: 0 0 0 3px rgba(51, 71, 244, 0.18);
}

.cform__when-note {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: var(--s-16) 0 0;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--c-ice-ink);
}

.cform__when-note .cform__icon { margin-top: 2px; width: 16px; height: 16px; }

@media (max-width: 720px) {
	.cform__when { padding: var(--s-16); }
	.cform__cal-day { font-size: 0.875rem; }
}


/* carely26_button() renders an <a>; this is the same pill on a <button>. */
.cform__submit .btn { border: 0; font-family: inherit; cursor: pointer; }

.cform__privacy {
	margin: var(--s-16) 0 0;
	font-size: var(--fs-small);
	line-height: 1.6;
	color: var(--c-muted);
}

.cform__privacy a { color: var(--c-accent); }

/* -- the aside -- */
.cform__aside {
	padding: var(--s-32);
	background: var(--c-ice);
	border-radius: 20px;
}

.cform__aside-title {
	margin: 0;
	font-size: clamp(1.25rem, 1.389vw, 1.5rem);      /* 24px @1728 */
	line-height: 1.34;
	font-weight: 700;
	color: var(--c-ink);
}

.cform__steps {
	display: flex;
	flex-direction: column;
	gap: var(--s-16);
	margin: var(--s-24) 0 0;
	counter-reset: none;
}

.cform__steps li {
	display: flex;
	gap: 14px;
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 1.56;
	font-weight: 500;
	color: var(--c-body);
}

.cform__step-n {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px; height: 28px;
	font-size: var(--fs-small);
	font-weight: 700;
	color: var(--c-white);
	background: var(--c-accent);
	border-radius: 50%;
}

.cform__contacts {
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin: var(--s-32) 0 0;
	padding-top: var(--s-32);
	border-top: 1px solid var(--c-ice-2);
}

.cform__contacts a,
.cform__contacts > li > span,
.cform__fine {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: clamp(1rem, 1.042vw, 1.125rem);
	line-height: 1.56;
	font-weight: 500;
	color: var(--c-body);
	text-decoration: none;
}

.cform__contacts a:hover { color: var(--c-accent); }

.cform__icon { flex: 0 0 auto; width: 20px; height: 20px; color: var(--c-ice-ink); }

.cform__fine {
	margin: var(--s-24) 0 0;
	align-items: flex-start;
	font-size: var(--fs-small);
	color: var(--c-ice-ink);
}

@media (max-width: 1120px) {
	.cform__grid { gap: var(--s-48); }
}

@media (max-width: 900px) {
	.cform { padding-block: var(--s-48) var(--s-80); }
	.cform__grid { grid-template-columns: 1fr; gap: var(--s-32); }
}
