/* ==========================================================================
   NZM Milestones Landing — standalone stylesheet.
   Everything is scoped under .nzm-landing (the <body> class of the
   standalone template): tokens live on the scope class, not :root, and no
   rule can leak outside the page. px only — no rem (host themes may set a
   non-16px root). Single breakpoint: 760px (brief §7).

   Cyan (--cyan) is used in exactly three places by design: the masthead
   rule, the CTA call button, and the logo artwork. Do not expand its use —
   it fails contrast for small text on white (brief §3).
   ========================================================================== */

.nzm-landing {
	/* Brand tokens (brief §3) */
	--navy: #1E2A56;
	--blue: #2D5B9E;
	--cyan: #6ED5DA;
	--panel: #E9EDF9;
	--grey-panel: #F4F5F6;
	--page: #F8F9FB;
	--card: #FFFFFF;
	--ink: #36393E;
	--body: #4C545F;
	--muted: #657181;
	--line: #DDE1E9;
	/* On-navy tints (quote band / CTA panel) */
	--on-navy-soft: #A9B7DC;
	--on-navy-body: #D9DFF0;
	--ff-serif: 'Source Serif 4', Georgia, 'Times New Roman', serif;
	--ff-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;

	margin: 0;
	background: var(--page);
	color: var(--body);
	font-family: var(--ff-sans);
	font-size: 17px;
	line-height: 1.65;
	-webkit-text-size-adjust: 100%;
	-webkit-font-smoothing: antialiased;
}

.nzm-landing *,
.nzm-landing *::before,
.nzm-landing *::after {
	box-sizing: border-box;
}

.nzm-landing img {
	display: block;
	max-width: 100%;
	height: auto;
}

/* WP image plugins (WebP Express, lazyloaders) may wrap imgs in <picture>;
   keep the wrapper out of layout. Reach imgs with their own classes or
   descendant combinators only — never child combinators. */
.nzm-landing picture {
	display: contents;
}

/* With display:contents on <picture>, its <source> children get promoted
   into the parent formatting context — inside a flex/grid parent each one
   becomes a phantom zero-width item (live symptom: WebP Express wrapped the
   masthead logo and space-between centred it as the middle of 3 items). */
.nzm-landing source {
	display: none;
}

/* :where() keeps specificity at (0,1,1) while excluding buttons, whose own
   colours would otherwise lose to this rule. */
.nzm-landing a:where(:not(.nzm-btn)) {
	color: var(--blue);
}

.nzm-landing a:where(:not(.nzm-btn)):focus-visible,
.nzm-landing summary:focus-visible {
	outline: 2px solid var(--blue);
	outline-offset: 3px;
	border-radius: 2px;
}

/* --------------------------------------------------------------------------
   Layout
   -------------------------------------------------------------------------- */

.nzm-container {
	max-width: 952px; /* 900px content + 2 × 26px padding */
	margin: 0 auto;
	padding-left: 26px;
	padding-right: 26px;
}

.nzm-section {
	margin: 60px 0;
}

/* --------------------------------------------------------------------------
   Type helpers
   -------------------------------------------------------------------------- */

.nzm-eyebrow,
.nzm-kicker {
	margin: 0 0 10px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--blue);
}

.nzm-h2 {
	margin: 0 0 18px;
	font-family: var(--ff-serif);
	font-weight: 400;
	font-size: clamp(26px, 3.6vw, 32px);
	line-height: 1.25;
	color: var(--ink);
}

.nzm-h3 {
	margin: 0 0 10px;
	font-family: var(--ff-serif);
	font-weight: 600;
	font-size: clamp(19px, 2.4vw, 21px);
	line-height: 1.3;
	color: var(--ink);
}

.nzm-accent {
	font-style: italic;
	color: var(--blue);
}

.nzm-body {
	margin: 0 0 16px;
	max-width: 820px;
}

.nzm-body:last-child {
	margin-bottom: 0;
}

.nzm-body strong {
	color: var(--ink);
}

/* --------------------------------------------------------------------------
   Masthead — logo left, two-line label right, cyan rule. No navigation.
   -------------------------------------------------------------------------- */

.nzm-masthead {
	position: sticky;
	top: 0;
	z-index: 50;
	background: var(--page);
	border-bottom: 3px solid var(--cyan);
	transition: box-shadow 0.25s ease;
}

/* toggled by assets/js/nzm-landing.js once the page is scrolled */
.nzm-masthead.is-stuck {
	box-shadow: 0 4px 18px rgba(30, 42, 86, 0.1);
}

.nzm-masthead__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding-top: 26px;
	padding-bottom: 22px;
}

/* .nzm-landing prefix keeps this above the scoped `.nzm-landing img`
   reset (0,1,1) — a bare class (0,1,0) would lose `height`. */
.nzm-landing .nzm-masthead__logo {
	width: auto;
	height: 46px;
	flex: none;
}

.nzm-masthead__label {
	margin: 0;
	text-align: right;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	line-height: 1.8;
	color: var(--blue);
}

.nzm-masthead__label span {
	display: block;
}

/* --------------------------------------------------------------------------
   Hero
   -------------------------------------------------------------------------- */

.nzm-hero {
	padding-top: 62px;
}

.nzm-hero__title {
	margin: 0 0 22px;
	font-family: var(--ff-serif);
	font-weight: 600;
	font-size: clamp(32px, 5.2vw, 46px);
	line-height: 1.16;
	color: var(--ink);
}

.nzm-hero__title .nzm-accent {
	font-weight: 600;
}

.nzm-hero__deck {
	margin: 0 0 18px;
	max-width: 720px;
	font-family: var(--ff-serif);
	font-style: italic;
	font-size: clamp(19px, 2.6vw, 22px);
	line-height: 1.5;
	color: var(--blue);
}

.nzm-hero__lede {
	margin: 0;
	max-width: 820px;
}

/* --------------------------------------------------------------------------
   Photo band (two-up) + illustrative note
   -------------------------------------------------------------------------- */

/* Photos span the full content column (per client request 2026-08-20 —
   every content image renders full width, as in the reference PDF). */
.nzm-photos {
	display: grid;
	grid-template-columns: 1fr;
	gap: 34px;
	margin-top: 32px;
}

.nzm-photo {
	margin: 0;
}

.nzm-photo__media {
	overflow: hidden;
	border-radius: 10px;
	border: 1px solid var(--line);
	background: var(--card);
}

.nzm-photo__img {
	width: 100%;
}

.nzm-photo__caption {
	padding-top: 12px;
}

.nzm-photo__title {
	display: block;
	font-family: var(--ff-serif);
	font-weight: 600;
	font-size: 17px;
	color: var(--ink);
}

.nzm-photo__text {
	display: block;
	font-size: 14px;
	line-height: 1.55;
	color: var(--muted);
}

.nzm-photo-note {
	margin: 14px 0 0;
	font-size: 13px;
	color: var(--muted);
}

/* --------------------------------------------------------------------------
   Cards, ghost numerals, feature block 01, step cards 02–03
   -------------------------------------------------------------------------- */

.nzm-card {
	position: relative;
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: 12px;
	padding: 26px 28px;
}

.nzm-numeral {
	position: absolute;
	top: 22px;
	right: 28px;
	font-family: var(--ff-serif);
	font-weight: 600;
	font-size: 38px;
	line-height: 1;
	color: #D3DAE7;
	pointer-events: none;
}

.nzm-feature {
	position: relative;
	display: grid;
	grid-template-columns: 1fr; /* copy above, full-width map below */
	gap: 26px;
	align-items: start;
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: 12px;
	padding: 34px 36px;
	margin: 36px 0 24px;
}

.nzm-feature__copy {
	padding-right: 30px; /* keep clear of the ghost numeral on narrow desktop */
}

.nzm-feature__media {
	margin: 0;
	min-width: 0;
}

.nzm-feature__img {
	width: 100%;
	border: 1px solid var(--line);
	border-radius: 8px;
	background: var(--card);
}

.nzm-feature__caption {
	margin-top: 12px;
	font-size: 13px;
	line-height: 1.55;
	color: var(--muted);
}

.nzm-feature__caption strong {
	color: var(--ink);
}

.nzm-steps {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
}

.nzm-card--step {
	padding-right: 76px; /* room for the ghost numeral */
}

/* --------------------------------------------------------------------------
   2×2 and 3-up card grids
   -------------------------------------------------------------------------- */

.nzm-grid-2 {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
	margin-top: 32px;
}

.nzm-grid-3 {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: 18px;
	margin-top: 26px;
}

.nzm-grid-3 .nzm-card {
	padding: 22px 24px;
}

/* --------------------------------------------------------------------------
   Pale blue panels
   -------------------------------------------------------------------------- */

.nzm-panel {
	background: var(--panel);
	border-radius: 14px;
	padding: 36px 40px;
	margin: 60px 0;
}

.nzm-panel__title {
	margin-bottom: 14px;
}

/* --------------------------------------------------------------------------
   Honest Scope panel — compliance wording lives in the data file.
   -------------------------------------------------------------------------- */

.nzm-scope {
	background: var(--grey-panel);
	border-left: 4px solid var(--blue);
	border-radius: 0 14px 14px 0;
	padding: 36px 40px;
	margin: 60px 0;
}

.nzm-scope__label {
	margin: 0 0 24px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--blue);
}

.nzm-scope__cols {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 32px;
}

.nzm-scope__title {
	margin: 0 0 14px;
	font-family: var(--ff-sans);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ink);
}

.nzm-scope__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.nzm-scope__list li {
	position: relative;
	padding-left: 26px;
	margin-bottom: 10px;
	font-size: 15px;
	line-height: 1.6;
}

.nzm-scope__list li::before {
	content: "\2014"; /* — */
	position: absolute;
	left: 0;
	color: var(--blue);
}

.nzm-scope__analysis {
	margin-top: 30px;
	border-top: 1px solid var(--line);
	padding-top: 28px;
}

.nzm-scope__analysis .nzm-body {
	font-size: 16px;
}

.nzm-checklist {
	list-style: none;
	margin: 18px 0 0;
	padding: 0;
	columns: 3;
	column-gap: 30px;
}

.nzm-checklist li {
	position: relative;
	padding-left: 26px;
	margin-bottom: 12px;
	font-size: 15px;
	line-height: 1.5;
	break-inside: avoid;
}

.nzm-checklist li::before {
	content: "\2713"; /* ✓ */
	position: absolute;
	left: 0;
	font-weight: 700;
	color: var(--blue);
}

/* --------------------------------------------------------------------------
   Quote band (full-bleed navy)
   -------------------------------------------------------------------------- */

.nzm-quote {
	background: var(--navy);
	padding: 62px 0;
	margin: 64px 0;
}

.nzm-quote__text {
	margin: 0 0 18px;
	max-width: 780px;
	font-family: var(--ff-serif);
	font-size: clamp(20px, 3vw, 24px);
	line-height: 1.55;
	color: #EDF1FA;
}

.nzm-quote__attr {
	margin: 0;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--on-navy-soft);
}

/* --------------------------------------------------------------------------
   Process steps + report block
   -------------------------------------------------------------------------- */

.nzm-process {
	list-style: none;
	margin: 30px 0 0;
	padding: 0;
	display: grid;
	gap: 16px;
}

.nzm-process__step {
	display: flex;
	gap: 20px;
	align-items: flex-start;
	padding: 24px 28px;
}

.nzm-process__num {
	flex: none;
	width: 30px;
	height: 30px;
	border-radius: 8px;
	background: var(--navy);
	color: #FFFFFF;
	font-size: 14px;
	font-weight: 700;
	line-height: 30px;
	text-align: center;
}

.nzm-process__step .nzm-h3 {
	margin-bottom: 6px;
}

.nzm-process__step .nzm-body {
	margin: 0;
}

.nzm-report {
	margin: 28px 0 0;
}

.nzm-report__list {
	list-style: none;
	margin: 16px 0 0;
	padding: 0;
	display: grid;
	gap: 12px;
}

.nzm-report__list li {
	display: flex;
	gap: 14px;
	align-items: flex-start;
	font-size: 16px;
}

.nzm-report__num {
	flex: none;
	width: 24px;
	height: 24px;
	margin-top: 2px;
	border-radius: 50%;
	background: var(--navy);
	color: #FFFFFF;
	font-size: 12px;
	font-weight: 700;
	line-height: 24px;
	text-align: center;
}

/* --------------------------------------------------------------------------
   FAQ — native <details>/<summary>, no JS
   -------------------------------------------------------------------------- */

.nzm-faq {
	margin-top: 14px;
	border-top: 1px solid var(--line);
}

.nzm-faq__item {
	border-bottom: 1px solid var(--line);
}

.nzm-faq__q {
	position: relative;
	padding: 18px 44px 18px 0;
	cursor: pointer;
	list-style: none;
	font-family: var(--ff-serif);
	font-weight: 600;
	font-size: 18px;
	line-height: 1.4;
	color: var(--ink);
	transition: color 0.18s ease;
}

.nzm-faq__q::-webkit-details-marker {
	display: none;
}

.nzm-faq__q::after {
	content: "+";
	position: absolute;
	right: 6px;
	top: 50%;
	transform: translateY(-50%);
	font-family: var(--ff-sans);
	font-weight: 400;
	font-size: 24px;
	line-height: 1;
	color: var(--blue);
}

.nzm-faq__item[open] > .nzm-faq__q::after {
	content: "\2013"; /* – */
}

.nzm-faq__q:hover {
	color: var(--blue);
}

.nzm-faq__a {
	margin: 0 0 20px;
	max-width: 820px;
	font-size: 16px;
	line-height: 1.65;
}

/* --------------------------------------------------------------------------
   Partner clinic CTA panel (navy) — the only call to action on the page
   -------------------------------------------------------------------------- */

.nzm-cta {
	background: var(--navy);
	border-radius: 16px;
	padding: 50px 44px;
	margin: 64px 0 0;
	text-align: center;
}

.nzm-cta__eyebrow {
	margin: 0 0 12px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--on-navy-soft);
}

.nzm-cta__title {
	margin: 0 0 14px;
	font-family: var(--ff-serif);
	font-weight: 400;
	font-size: clamp(24px, 3.4vw, 30px);
	line-height: 1.3;
	color: #FFFFFF;
}

.nzm-cta__body {
	margin: 0 auto 28px;
	max-width: 640px;
	font-size: 16px;
	line-height: 1.65;
	color: var(--on-navy-body);
}

.nzm-cta__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
	margin-bottom: 24px;
}

/* Buttons — layered, layout-neutral hover: a gradient sweep in ::before,
   a soft lift + shadow, dropped on :active for a tactile press. All rules
   are prefixed with .nzm-landing so the scoped `.nzm-landing a` (0,1,1)
   colour rule can never outrank them. */
.nzm-landing .nzm-btn {
	position: relative;
	z-index: 0;
	overflow: hidden;
	display: inline-block;
	padding: 13px 26px;
	border-radius: 8px;
	font-family: var(--ff-sans);
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
	transition: border-color 0.25s ease, color 0.25s ease,
		transform 0.25s ease, box-shadow 0.25s ease;
}

.nzm-landing .nzm-btn::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	transform: translateX(-101%); /* -101% hides the antialiasing seam */
	transition: transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.nzm-landing .nzm-btn:hover,
.nzm-landing .nzm-btn:focus-visible {
	text-decoration: none;
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(10, 16, 40, 0.35);
}

.nzm-landing .nzm-btn:hover::before,
.nzm-landing .nzm-btn:focus-visible::before {
	transform: translateX(0);
}

.nzm-landing .nzm-btn:active {
	transform: translateY(0);
	box-shadow: none;
}

.nzm-landing .nzm-btn:focus-visible {
	outline: 2px solid #FFFFFF;
	outline-offset: 3px;
}

.nzm-landing .nzm-btn--solid {
	background: var(--cyan);
	border: 1px solid var(--cyan);
	color: var(--navy);
}

.nzm-landing .nzm-btn--solid::before {
	background: linear-gradient(105deg, #9AE2E6 0%, #C4F0F2 55%, #9AE2E6 100%);
}

.nzm-landing .nzm-btn--solid:hover,
.nzm-landing .nzm-btn--solid:focus-visible {
	border-color: #8DDEE2;
	color: var(--navy);
}

.nzm-landing .nzm-btn--outline {
	background: transparent;
	border: 1px solid rgba(255, 255, 255, 0.45);
	color: #FFFFFF;
}

.nzm-landing .nzm-btn--outline::before {
	background: linear-gradient(105deg, rgba(255, 255, 255, 0.16) 0%,
		rgba(255, 255, 255, 0.08) 60%, rgba(255, 255, 255, 0.14) 100%);
}

.nzm-landing .nzm-btn--outline:hover,
.nzm-landing .nzm-btn--outline:focus-visible {
	border-color: #FFFFFF;
	color: #FFFFFF;
}

.nzm-cta__address {
	margin: 0;
	font-size: 14px;
	color: var(--on-navy-soft);
}

/* --------------------------------------------------------------------------
   Footer — credential / legal / copyright only. No navigation.
   -------------------------------------------------------------------------- */

.nzm-footer {
	margin: 48px 0 0;
	padding: 26px 0 56px;
	border-top: 1px solid var(--line);
	font-size: 13px;
	line-height: 1.65;
	color: var(--muted);
}

.nzm-footer p {
	margin: 0 0 10px;
	max-width: 860px;
}

.nzm-footer p:last-child {
	margin-bottom: 0;
}

.nzm-footer strong {
	color: var(--ink);
}

/* --------------------------------------------------------------------------
   Responsive — single breakpoint (brief §7)
   -------------------------------------------------------------------------- */

@media (max-width: 760px) {

	.nzm-masthead__inner {
		flex-direction: column;
		align-items: flex-start;
		gap: 14px;
	}

	.nzm-masthead__label {
		text-align: left;
	}

	.nzm-hero {
		padding-top: 40px;
	}

	.nzm-section,
	.nzm-panel,
	.nzm-scope {
		margin-top: 44px;
		margin-bottom: 44px;
	}

	.nzm-steps,
	.nzm-grid-2,
	.nzm-grid-3,
	.nzm-scope__cols {
		grid-template-columns: 1fr;
	}

	.nzm-feature {
		padding: 26px 22px;
	}

	.nzm-feature__copy {
		padding-right: 44px;
	}

	.nzm-panel {
		padding: 28px 24px;
	}

	.nzm-scope {
		padding: 28px 22px;
	}

	.nzm-checklist {
		columns: 1;
	}

	.nzm-quote {
		padding: 46px 0;
		margin: 48px 0;
	}

	.nzm-process__step {
		padding: 20px;
	}

	.nzm-cta {
		padding: 38px 22px;
		margin-top: 48px;
	}

	.nzm-cta__actions {
		flex-direction: column;
	}

	.nzm-btn {
		width: 100%;
	}
}

/* --------------------------------------------------------------------------
   Reduced motion
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {

	.nzm-landing *,
	.nzm-landing *::before,
	.nzm-landing *::after {
		transition: none !important;
	}

	.nzm-landing .nzm-btn:hover,
	.nzm-landing .nzm-btn:focus-visible,
	.nzm-landing .nzm-btn:active {
		transform: none;
		box-shadow: none;
	}

	/* AOS reveals: attributes are only applied by JS when the user does NOT
	   prefer reduced motion, but keep a hard CSS guard as well. */
	.nzm-landing [data-aos] {
		opacity: 1 !important;
		transform: none !important;
	}
}
