/* ==========================================================================
   C2G — Clean to Green
   Hand-written design system. No framework, no resets from vendors.
   Order: tokens → reset → primitives → layout → components → pages → utils
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
	/* Brand */
	/* Near-black green + bright lime, matching the reference palette. */
	--forest-900: #04180A;
	--forest-800: #0A2A15;
	--forest-700: #123A1F;
	--forest-600: #1C6B39;
	--green-500: #2FA65E;
	--lime-500: #7BE04B;
	--lime-400: #97EA6D;
	--lime-300: #C2F2A6;

	--clay-600: #C24E22;
	--clay-500: #D4622A;
	--clay-300: #F0B79C;

	/* Neutrals — clean, cool-white with the faintest green cast */
	--ink-900: #12241C;
	--ink-700: #38473F;
	--ink-500: #5F6E66;
	--ink-400: #869089;
	--ink-300: #AEB8B1;
	--line: #E6EAE3;
	--line-soft: #F0F2ED;
	--paper: #FBFCFA;
	--paper-2: #F4F7F1;
	--white: #FFFFFF;

	/* Soft green tints — used for alternating sections so the page stays
	   light and airy instead of leaning on dark forest blocks. */
	--mint-50: #F2F8F0;
	--mint-100: #E7F2E4;
	--mint-200: #D6EACF;

	/* Semantic */
	--bg: var(--paper);
	--fg: var(--ink-900);
	--muted: var(--ink-500);
	--accent: var(--forest-600);
	--accent-bright: var(--lime-500);

	/* Type */
	/* Montserrat throughout — one family for headings and body. */
	--font-sans: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--font-display: var(--font-sans);

	--fs-xs: 0.75rem;
	--fs-sm: 0.8125rem;
	--fs-base: clamp(0.9375rem, 0.9rem + 0.18vw, 1.0625rem);
	--fs-lg: clamp(1.0625rem, 1rem + 0.3vw, 1.25rem);
	--fs-xl: clamp(1.15rem, 1.05rem + 0.45vw, 1.4rem);
	--fs-h3: clamp(1rem, .93rem + .35vw, 1.15rem);
	--fs-h2: clamp(1.25rem, 1.05rem + 1vw, 1.85rem);
	--fs-h1: clamp(1.75rem, 1.35rem + 1.9vw, 2.8rem);
	--fs-display: clamp(2rem, 1.4rem + 2.9vw, 3.6rem);

	/* Space */
	--sp-1: 0.25rem;
	--sp-2: 0.5rem;
	--sp-3: 0.75rem;
	--sp-4: 1rem;
	--sp-5: 1.5rem;
	--sp-6: 2rem;
	--sp-7: 3rem;
	--sp-8: 4rem;
	--sp-9: 6rem;
	/* Vertical rhythm — deliberately tight; large section padding reads as
	   empty space on a content-rich page. */
	/* Body copy inside cards, boxes and lists - one size everywhere. */
	--fs-box: 15px;
	--sec-y: clamp(1.75rem, 1.35rem + 1.7vw, 3rem);

	/* Layout */
	--gutter: clamp(1.125rem, 0.6rem + 2.4vw, 3rem);
	--maxw: 1320px;
	--maxw-narrow: 760px;

	/* Shape */
	--r-sm: 8px;
	--r-md: 14px;
	--r-lg: 22px;
	--r-xl: 32px;
	--r-pill: 999px;

	/* Elevation — soft, green-tinted, never grey */
	--shadow-sm: 0 1px 2px rgba(6, 42, 27, .05), 0 2px 8px rgba(6, 42, 27, .04);
	--shadow-md: 0 2px 4px rgba(6, 42, 27, .05), 0 12px 28px -8px rgba(6, 42, 27, .1);
	--shadow-lg: 0 4px 8px rgba(6, 42, 27, .05), 0 32px 64px -16px rgba(6, 42, 27, .16);

	/* Motion */
	--ease: cubic-bezier(.4, 0, .2, 1);
	--ease-out: cubic-bezier(.16, 1, .3, 1);
	--dur: .38s;

	--header-h: 76px;
}

/* --------------------------------------------------------------------------
   2. Reset
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--header-h) + 1rem);
	/* Wide marquees and timeline rails must not create page-level sideways
	   scrolling; the timeline remains independently touch-scrollable. */
	overflow-x: clip;
}

body {
	margin: 0;
	background: var(--bg);
	color: var(--fg);
	font-family: var(--font-sans);
	font-size: var(--fs-base);
	line-height: 1.65;
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	/* clip, not hidden: overflow-x:hidden makes <body> the scroll container,
	   which silently stops every position:sticky on the site (.sticky-col is
	   used on 10+ page templates) from ever pinning. */
	overflow-x: clip;
	text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 { margin: 0; font-weight: 600; line-height: 1.12; letter-spacing: -0.02em; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0 0 1em; padding-left: 1.15em; }
li + li { margin-top: .35em; }

img, svg, video, picture { max-width: 100%; display: block; }
img { height: auto; }

a { color: inherit; text-decoration-color: color-mix(in srgb, currentColor 35%, transparent); text-underline-offset: 3px; }
a:hover { text-decoration-color: currentColor; }

button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }

hr { border: 0; border-top: 1px solid var(--line); margin: var(--sp-6) 0; }

::selection { background: var(--lime-300); color: var(--forest-900); }

:focus-visible {
	outline: 2px solid var(--forest-600);
	outline-offset: 3px;
	border-radius: 3px;
}

.skip-link {
	position: absolute;
	left: 50%;
	top: -100px;
	transform: translateX(-50%);
	z-index: 999;
	background: var(--forest-800);
	color: #fff;
	padding: .75rem 1.25rem;
	border-radius: 0 0 var(--r-md) var(--r-md);
	transition: top .2s var(--ease);
}
.skip-link:focus { top: 0; }

.sr-only {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* --------------------------------------------------------------------------
   3. Typography primitives
   -------------------------------------------------------------------------- */
.display,
.h1 { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.035em; line-height: 1.1; }
.display { font-size: var(--fs-display); }
.h1 { font-size: var(--fs-h1); }

.h2 { font-family: var(--font-display); font-size: var(--fs-h2); font-weight: 600; letter-spacing: -0.02em; line-height: 1.18; }
.h3 { font-size: var(--fs-h3); font-weight: 600; letter-spacing: -0.015em; line-height: 1.3; }

/* Emphasis inside headings: a colour shift, not a font change. Keeps the
   headline on one typeface and reads far cleaner at large sizes. */
.display em, .h1 em, .h2 em, .sec-head__title em, .hero__title em, .page-hero__title em, .cta-band__title em {
	font-style: normal;
	font-weight: inherit;
	color: var(--green-500);
}
.on-dark .display em, .on-dark .h1 em, .on-dark .h2 em { color: var(--lime-400); }

.lead {
	font-size: 16px;
	line-height: 1.6;
	color: var(--ink-700);
	max-width: 62ch;
}
.on-dark .lead { color: rgba(255, 255, 255, .78); }
/* Standalone lead band - centred and a touch wider than the 62ch measure. */
.lead--wide { max-width: 78ch; margin-inline: auto; text-align: center; font-size: var(--fs-lg); }

/* Filled pill eyebrow (reference-site style). */
.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	margin: 0 0 1.15rem;
	padding: .5em .95em;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-pill);
	font-size: var(--fs-xs);
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--forest-800);
	box-shadow: var(--shadow-sm);
}
.eyebrow__dot {
	width: 7px; height: 7px;
	border-radius: 50%;
	background: var(--lime-500);
	flex: none;
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--lime-500) 30%, transparent);
}
.section--mint .eyebrow { background: rgba(255, 255, 255, .8); }
.on-dark .eyebrow, .section--forest .eyebrow, .hero .eyebrow, .page-hero .eyebrow, .cta-band .eyebrow {
	background: rgba(255, 255, 255, .1);
	border-color: rgba(255, 255, 255, .2);
	color: #fff;
	box-shadow: none;
}

.muted { color: var(--muted); }
.on-dark .muted { color: rgba(255, 255, 255, .66); }

/* --------------------------------------------------------------------------
   4. Layout
   -------------------------------------------------------------------------- */
.wrap {
	width: 100%;
	max-width: var(--maxw);
	margin-inline: auto;
	padding-inline: var(--gutter);
}
.wrap--narrow { max-width: calc(var(--maxw-narrow) + var(--gutter) * 2); }
.wrap--wide { max-width: 1560px; }

.section { padding-block: var(--sec-y); position: relative; }
.section--tight { padding-block: clamp(2.5rem, 1.5rem + 3vw, 4.5rem); }

/* Homepage ground rhythm. The palette had four near-white tones within four
   RGB points of each other (bg #FBFCFA, paper #F4F7F1, mint-50 #F2F8F0,
   white), so neighbouring sections read as one slab. This fixes an explicit
   alternation over three separated grounds and uses the deeper mint so the
   accent is actually visible. Scoped to .home: these parts are shared with
   other templates that set their own rhythm. */
/* background-color, not the `background` shorthand: the shorthand resets
   background-image and would wipe decorations such as the services tree. */
.home #about, .home #board, .home #why-choose,
.home #media-coverage, .home #government, .home #narratives { background-color: var(--paper-2); }
.home #services, .home #esg, .home #app, .home #projects-recent,
.home #events, .home #partners, .home #faq { background-color: var(--white); }
.home #journey-road, .home #coverage { background-color: var(--mint-100); }
/* The road's own trailing headroom already clears the last label. */
section#journey-road { padding-bottom: 0; }
.section--flush-top { padding-top: 0; }
.section--flush-bottom { padding-bottom: 0; }

.section--paper { background: var(--paper-2); }
.section--white { background: var(--white); }
.section--mint {
	position: relative;
	background:
		radial-gradient(120% 120% at 100% 0%, var(--mint-100) 0%, transparent 55%),
		var(--mint-50);
}
/* Subtle dotted texture — adds depth without an image request. */
.section--mint::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background-image: radial-gradient(color-mix(in srgb, var(--green-500) 22%, transparent) 1px, transparent 1.4px);
	background-size: 26px 26px;
	-webkit-mask-image: radial-gradient(120% 90% at 0% 100%, #000 0%, transparent 60%);
	mask-image: radial-gradient(120% 90% at 0% 100%, #000 0%, transparent 60%);
	opacity: .5;
}
.section--mint > .wrap { position: relative; z-index: 1; }

/* --- Decorative floating eco graphics (original SVGs) --- */
.deco {
	position: absolute;
	pointer-events: none;
	z-index: 0;
	background: currentColor;
	opacity: .18;
}
.deco--leaf {
	-webkit-mask: url(../img/graphics/leaf.svg) center / contain no-repeat;
	mask: url(../img/graphics/leaf.svg) center / contain no-repeat;
}
.deco--ring {
	background: none;
	border: 0;
	-webkit-mask: url(../img/graphics/ring.svg) center / contain no-repeat;
	mask: url(../img/graphics/ring.svg) center / contain no-repeat;
	background-color: currentColor;
}
.deco--recycle {
	-webkit-mask: url(../img/graphics/recycle.svg) center / contain no-repeat;
	mask: url(../img/graphics/recycle.svg) center / contain no-repeat;
}

/* Original soft-leaf background accent — a faint corner motif on airy sections.
   Tinted via background-color so it adapts to light or dark grounds. */
#about, #services, #events, #media-coverage, #narratives { position: relative; overflow: hidden; }
/* clip, not hidden: overflow:hidden would become the scroll container for
   the sticky media column below and stop it from pinning. */
#about { overflow: clip; }
#about > .wrap, #services > .wrap, #events > .wrap, #media-coverage > .wrap, #narratives > .wrap { position: relative; z-index: 1; }
#about::after, #services::after, #events::after, #media-coverage::after, #narratives::after {
	content: "";
	position: absolute;
	z-index: 0;
	width: min(42vw, 460px);
	aspect-ratio: 1;
	-webkit-mask: url(../img/graphics/soft-leaves.svg) center / contain no-repeat;
	mask: url(../img/graphics/soft-leaves.svg) center / contain no-repeat;
	background-color: var(--green-500);
	opacity: .07;
	pointer-events: none;
}
#about::after, #events::after, #narratives::after { top: -40px; right: -60px; }
#media-coverage::after { bottom: -50px; left: -60px; }
/* Services keeps a single decoration: an original growth band along the
   bottom-right, in place of the shared soft-leaf corner motif. */
#services::after { content: none; }
section#services {
	background-image: url(../img/graphics/tree-band.webp);
	background-position: bottom right;
	background-repeat: no-repeat;
	background-size: 900px auto;
}
@media (prefers-reduced-motion: no-preference) {
	#about::after, #events::after, #narratives::after { animation: floatB 16s var(--ease) infinite; }
	#media-coverage::after { animation: floatA 18s var(--ease) infinite; }
}
.float-a { animation: floatA 9s var(--ease) infinite; }
.float-b { animation: floatB 11s var(--ease) infinite; }
@keyframes floatA { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-20px) rotate(8deg); } }
@keyframes floatB { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(16px) rotate(-6deg); } }
@media (prefers-reduced-motion: reduce) { .float-a, .float-b { animation: none; } }
.section--forest {
	background:
		url(../img/graphics/dark-section-bg-image.png) center / cover no-repeat,
		var(--forest-800);
	color: #fff;
	--fg: #fff;
	--muted: rgba(255, 255, 255, .72);
	--line: rgba(255, 255, 255, .14);
	--line-soft: rgba(255, 255, 255, .09);
}
/* Body copy and heading accents need lifting off the dark ground —
   the light-theme muted grey and mid-green both fail contrast here. */
.section--forest .sec-head__intro,
.section--forest .muted,
.cta-band .sec-head__intro { color: rgba(255, 255, 255, .74); }
.section--forest .sec-head__title em,
.section--forest .h2 em,
.section--forest .h1 em { color: var(--lime-400); }
.on-dark { color: #fff; }

.grid { display: grid; gap: var(--sp-5); }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }

.split {
	display: grid;
	gap: clamp(2rem, 1rem + 4vw, 5rem);
	align-items: center;
}
/* minmax(0, …) is required: a plain `fr` track refuses to shrink below the
   intrinsic width of an image inside it, which collapses the sibling column. */
@media (min-width: 900px) {
	.split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
	.split--wide-left { grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr); }
	.split--wide-right { grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); }
	.split--top { align-items: start; }
	.split--stretch { align-items: stretch; }
	.split--stretch .media { height: 100%; }
}

/* Section head */
.sec-head { max-width: 72ch; margin-bottom: clamp(1.5rem, 1.1rem + 1.4vw, 2.5rem); }
.sec-head--center { margin-inline: auto; text-align: center; }
.sec-head--center .eyebrow { justify-content: center; }
.sec-head__title {
	font-family: var(--font-display);
	font-size: var(--fs-h2);
	font-weight: 600;
	letter-spacing: -0.025em;
	line-height: 1.06;
	text-wrap: balance;
}
.sec-head__intro {
	margin-top: 1.1rem;
	/* Matches .lead so every sub-heading on the site is one size. */
	font-size: 16px;
	color: var(--muted);
	max-width: 72ch;
	line-height: 1.6;
}
/* .sec-head caps the whole block at ~796px, so a wider intro had no effect
   until the centred variant lifts that cap. */
.sec-head--center { max-width: none; }
.sec-head--center .sec-head__intro { margin-inline: auto; max-width: 94ch; }

/* Split section head: title left, intro right */
.sec-head--split {
	max-width: none;
	display: grid;
	gap: clamp(1rem, .5rem + 2vw, 3rem);
	align-items: end;
}
@media (min-width: 900px) {
	.sec-head--split { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); }
	.sec-head--split .sec-head__intro { margin-top: 0; padding-bottom: .35rem; }
	.sec-head--split > div .sec-head__intro { margin-top: 1.1rem; padding-bottom: 0; }
	.sec-head__cta { display: flex; justify-content: flex-end; }
	/* align-items:end suits a one-line intro, but drops the heading to the
	   bottom when the copy runs to a full paragraph. Top-align those. */
	.sec-head--split:has(.sec-head__intro) { align-items: start; }
	.sec-head--split:has(.sec-head__intro) .sec-head__intro { padding-bottom: 0; }
}

/* --------------------------------------------------------------------------
   5. Buttons
   -------------------------------------------------------------------------- */
/* Reference-site button: a coloured pill with a contrasting circular arrow
   badge on the right. --btn-badge / --btn-badge-fg control the badge. */
.btn {
	--btn-bg: var(--lime-500);
	--btn-fg: var(--forest-900);
	--btn-bd: var(--lime-500);
	--btn-badge: var(--forest-900);
	--btn-badge-fg: var(--lime-500);
	display: inline-flex;
	align-items: center;
	gap: .7em;
	padding: .45em .5em .45em 1.35em;
	background: var(--btn-bg);
	color: var(--btn-fg);
	border: 1px solid var(--btn-bd);
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	font-weight: 700;
	letter-spacing: -.01em;
	text-decoration: none;
	white-space: nowrap;
	transition: background var(--dur) var(--ease), color var(--dur) var(--ease),
	            border-color var(--dur) var(--ease), transform .2s var(--ease), box-shadow var(--dur) var(--ease);
}
.btn__t { line-height: 1; }
.btn__i {
	display: grid;
	place-items: center;
	width: 2.15em; height: 2.15em;
	flex: none;
	border-radius: 50%;
	background: var(--btn-badge);
	color: var(--btn-badge-fg);
	transition: transform .35s var(--ease-out), background var(--dur) var(--ease), color var(--dur) var(--ease);
}
.btn__i { transition: background .3s var(--ease), color .3s var(--ease), transform .35s var(--ease-out); }
.btn__i .icon { transition: transform .35s var(--ease-out); }
.btn:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.btn:hover .btn__i { transform: rotate(-40deg); }
.btn:hover .btn__i .icon { transform: none; }
.btn:active { transform: translateY(0); }

/* Primary = dark pill, lime badge. */
.btn--primary { --btn-bg: var(--forest-800); --btn-fg: #fff; --btn-bd: var(--forest-800); --btn-badge: var(--lime-500); --btn-badge-fg: var(--forest-900); }
.btn--primary:hover { --btn-bg: var(--forest-700); --btn-bd: var(--forest-700); }

/* Accent = lime pill, dark badge (the signature look). */
.btn--accent { --btn-bg: var(--lime-500); --btn-fg: var(--forest-900); --btn-bd: var(--lime-500); --btn-badge: var(--forest-900); --btn-badge-fg: var(--lime-500); }
.btn--accent:hover { --btn-bg: var(--lime-400); --btn-bd: var(--lime-400); }

/* Ghost = outline pill on light, dark badge. */
.btn--ghost { --btn-bg: transparent; --btn-fg: var(--forest-800); --btn-bd: color-mix(in srgb, var(--forest-800) 22%, transparent); --btn-badge: var(--forest-800); --btn-badge-fg: var(--lime-500); }
.btn--ghost:hover { --btn-bg: var(--forest-800); --btn-fg: #fff; --btn-bd: var(--forest-800); --btn-badge: var(--lime-500); --btn-badge-fg: var(--forest-900); }

/* Light = for dark backgrounds. */
.btn--light { --btn-bg: #fff; --btn-fg: var(--forest-900); --btn-bd: #fff; --btn-badge: var(--forest-900); --btn-badge-fg: #fff; }
.btn--light:hover { --btn-bg: var(--lime-500); --btn-bd: var(--lime-500); }

.btn--link {
	--btn-fg: var(--forest-700);
	background: none;
	border: 0;
	padding: 0;
	border-radius: 0;
	gap: .45em;
	color: var(--btn-fg);
}
.btn--link .icon { transition: transform .3s var(--ease-out); flex: none; }
.btn--link:hover { transform: none; box-shadow: none; color: var(--clay-500); }
.btn--link:hover .icon { transform: translateX(4px); }

.btn-row { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.75rem; }

/* --------------------------------------------------------------------------
   6. Header + navigation
   -------------------------------------------------------------------------- */
.site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	transition: background var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
	border-bottom: 1px solid transparent;
}
.site-header__inner {
	display: flex;
	align-items: center;
	gap: clamp(1rem, .5rem + 2vw, 2.5rem);
	min-height: var(--header-h);
}

/* Transparent over hero, solid once scrolled */
.site-header[data-solid="false"] { background: transparent; color: #fff; }
.site-header[data-solid="true"] {
	background: color-mix(in srgb, var(--paper) 88%, transparent);
	backdrop-filter: saturate(160%) blur(14px);
	-webkit-backdrop-filter: saturate(160%) blur(14px);
	border-bottom-color: var(--line);
	color: var(--ink-900);
}
body:not(.has-hero) .site-header { background: var(--paper); border-bottom-color: var(--line); color: var(--ink-900); }

.brand { display: inline-flex; align-items: center; gap: .7rem; flex: none; text-decoration: none; }
.brand__logo { height: 50px; width: auto; }
.brand__logo--dark { display: none; }
.site-header[data-solid="true"] .brand__logo--light,
body:not(.has-hero) .brand__logo--light { display: none; }
.site-header[data-solid="true"] .brand__logo--dark,
body:not(.has-hero) .brand__logo--dark { display: block; }

.brand__text { font-family: var(--font-display); font-size: 1.1rem; font-weight: 600; letter-spacing: -.02em; line-height: 1; }
.brand__text small { display: block; font-family: var(--font-sans); font-size: .5625rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; opacity: .6; margin-top: .25em; }

.nav { margin-left: auto; }
.nav__list { display: flex; align-items: center; gap: .15rem; list-style: none; margin: 0; padding: 0; }
.nav__list li { margin: 0; position: relative; }

.nav__list > li > a {
	display: inline-flex;
	align-items: center;
	gap: .35em;
	padding: .55rem .8rem;
	border-radius: var(--r-pill);
	font-size: .875rem;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
	transition: background .22s var(--ease), color .22s var(--ease);
}
.nav__list > li > a:hover,
.nav__list > li.is-open > a { background: color-mix(in srgb, currentColor 10%, transparent); }
.nav__list > li.current-menu-item > a,
.nav__list > li.current-page-ancestor > a { color: var(--forest-600); }
.site-header[data-solid="false"] .nav__list > li.current-menu-item > a { color: var(--lime-400); }

/* Dropdown */
.nav__list > li.has-children > a::after {
	content: "";
	width: 6px; height: 6px;
	border-right: 1.6px solid currentColor;
	border-bottom: 1.6px solid currentColor;
	transform: rotate(45deg) translateY(-2px);
	opacity: .6;
	transition: transform .25s var(--ease);
}
.nav__list > li.is-open > a::after { transform: rotate(-135deg) translateY(-2px); }

.sub-menu {
	position: absolute;
	top: calc(100% + .6rem);
	left: 50%;
	transform: translateX(-50%) translateY(-6px);
	min-width: 300px;
	list-style: none;
	margin: 0;
	padding: .5rem;
	background: var(--white);
	color: var(--ink-900);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	box-shadow: var(--shadow-lg);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity .22s var(--ease), transform .28s var(--ease-out), visibility .22s;
}
.sub-menu::before {
	content: "";
	position: absolute;
	bottom: 100%;
	left: 0;
	width: 100%;
	height: .6rem;
}
li.is-open > .sub-menu { opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.sub-menu li { margin: 0; }
.sub-menu a {
	display: block;
	padding: .6rem .85rem;
	border-radius: var(--r-md);
	font-size: .875rem;
	font-weight: 500;
	text-decoration: none;
	transition: background .18s var(--ease), color .18s var(--ease);
}
.sub-menu a:hover { background: var(--paper-2); color: var(--forest-700); }

.nav__cta { flex: none; margin-left: .5rem; }

/* Burger */
.burger {
	display: none;
	flex: none;
	margin-left: auto;
	width: 44px; height: 44px;
	background: none;
	border: 1px solid color-mix(in srgb, currentColor 22%, transparent);
	border-radius: 50%;
	position: relative;
}
.burger span {
	position: absolute;
	left: 50%; top: 50%;
	width: 17px; height: 1.7px;
	background: currentColor;
	border-radius: 2px;
	transition: transform .3s var(--ease-out), opacity .2s var(--ease);
}
.burger span:nth-child(1) { transform: translate(-50%, -6px); }
.burger span:nth-child(2) { transform: translate(-50%, -50%); }
.burger span:nth-child(3) { transform: translate(-50%, 4px); }
.burger[aria-expanded="true"] span:nth-child(1) { transform: translate(-50%, -50%) rotate(45deg); }
.burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.burger[aria-expanded="true"] span:nth-child(3) { transform: translate(-50%, -50%) rotate(-45deg); }

@media (max-width: 1080px) {
	.burger { display: block; }
	.nav, .nav__cta { display: none; }
}

/* Mobile drawer */
.drawer {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: grid;
	grid-template-rows: auto 1fr;
	background: var(--forest-800);
	color: #fff;
	transform: translateY(-100%);
	visibility: hidden;
	transition: transform .5s var(--ease-out), visibility .5s;
	overflow-y: auto;
	overscroll-behavior: contain;
}
.drawer.is-open { transform: translateY(0); visibility: visible; }
.drawer__top { display: flex; align-items: center; min-height: var(--header-h); }
.drawer__body { padding-block: 1.5rem 3rem; }
.drawer__list { list-style: none; margin: 0; padding: 0; }
.drawer__list li { margin: 0; border-bottom: 1px solid rgba(255, 255, 255, .1); }
.drawer__list > li > a {
	display: block;
	padding: 1rem 0;
	font-family: var(--font-display);
	font-size: clamp(1.4rem, 1.1rem + 1.6vw, 2rem);
	font-weight: 600;
	letter-spacing: -.02em;
	text-decoration: none;
}
.drawer .sub-menu {
	position: static;
	transform: none;
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	background: none;
	border: 0;
	box-shadow: none;
	min-width: 0;
	padding: 0 0 1rem;
	display: none;
	color: #fff;
}
.drawer li.is-open > .sub-menu { display: block; transform: none; }
.drawer .sub-menu a { color: rgba(255, 255, 255, .74); padding: .45rem 0 .45rem 1rem; border-left: 1px solid rgba(255, 255, 255, .16); border-radius: 0; }
.drawer .sub-menu a:hover { background: none; color: var(--lime-400); }
.drawer__toggle {
	position: absolute;
	right: 0; top: .55rem;
	width: 40px; height: 40px;
	background: none;
	border: 1px solid rgba(255, 255, 255, .2);
	border-radius: 50%;
	color: #fff;
	display: grid;
	place-items: center;
	transition: transform .3s var(--ease);
}
.drawer__list li.has-children { position: relative; }
.drawer li.is-open > .drawer__toggle { transform: rotate(45deg); }
.drawer__foot { margin-top: 2rem; display: flex; flex-wrap: wrap; gap: .75rem; }

body.nav-open { overflow: hidden; }

/* --------------------------------------------------------------------------
   7. Hero
   -------------------------------------------------------------------------- */
.hero {
	position: relative;
	margin-top: calc(var(--header-h) * -1);
	min-height: min(88svh, 820px);
	display: grid;
	align-items: end;
	background: var(--forest-900);
	color: #fff;
	overflow: hidden;
	isolation: isolate;
	transition: transform .45s var(--ease-out), box-shadow .45s var(--ease-out);
}
/* Explicit positive layering: slides (0) → scrim (1) → caption (2).
   Negative z-index is fragile inside an isolated stacking context. */
.hero__slides { position: absolute; inset: 0; z-index: 0; }
.hero__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 1.1s var(--ease);
}
.hero__slide.is-active { opacity: 1; }
.hero__slide .media, .hero__slide .media__img, .hero__slide .media__ph {
	width: 100%; height: 100%; border-radius: 0; margin: 0;
	aspect-ratio: auto;
	background: none;
}
.hero__slide .media { position: absolute; inset: 0; }
.hero__slide .media__img { object-fit: cover; height: 116%; top: -8%; position: relative; transform: translate3d(0, var(--parallax, 0), 0) scale(1.04); transition: none; }

/* A directional scrim: dark enough on the left for the caption to pass
   contrast, light enough on the right that the photograph is clearly the
   subject of the section. */
.hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background:
		linear-gradient(100deg, rgba(6, 42, 27, .95) 0%, rgba(6, 42, 27, .88) 30%, rgba(6, 42, 27, .58) 55%, rgba(6, 42, 27, .3) 100%),
		linear-gradient(to bottom, rgba(6, 42, 27, .55) 0%, transparent 18%),
		linear-gradient(to top, rgba(6, 42, 27, .55) 0%, transparent 32%);
}
.hero__arc { display: none; }

/* Hero prev/next arrows — desktop only */
.hero__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 3;
	width: 56px; height: 56px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: rgba(255, 255, 255, .12);
	border: 1px solid rgba(255, 255, 255, .28);
	color: #fff;
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	transition: background .25s var(--ease), color .25s var(--ease), transform .25s var(--ease);
}
.hero__arrow:hover { background: var(--lime-500); color: var(--forest-900); border-color: var(--lime-500); }
.hero__arrow--prev { left: clamp(1rem, 2vw, 2.5rem); }
.hero__arrow--prev .icon { transform: rotate(180deg); }
.hero__arrow--next { right: clamp(1rem, 2vw, 2.5rem); }
.hero__arrow:hover.hero__arrow--next { transform: translateY(-50%) translateX(3px); }
@media (max-width: 900px) { .hero__arrow { display: none; } }
.hero { cursor: grab; }
.hero:active { cursor: grabbing; }

.hero__inner { padding-block: clamp(7rem, 5rem + 10vw, 10rem) clamp(3rem, 2rem + 4vw, 5rem); position: relative; z-index: 2; }
/* One family, one size, one weight across every hero slide. min-height
   reserves 3 lines so the heading block is the same height on each slide and
   the text/CTAs below never shift. */
.hero__title { font-family: var(--font-display); font-size: var(--fs-h1); font-weight: 700; letter-spacing: -.035em; line-height: 1.14; text-wrap: balance; max-width: 22ch; min-height: calc(2 * 1.14em); }
.hero__title em { font-style: normal; font-weight: inherit; color: var(--lime-400); }
@media (max-width: 600px) { .hero__title { min-height: 0; } }
.hero__text { margin-top: 1.35rem; max-width: 46ch; font-size: var(--fs-lg); color: rgba(255, 255, 255, .8); }

/* Slide transitions */
/* All panes occupy the same grid cell so the hero is as tall as its longest
   slide and the height never jumps between slides. Toggling visibility
   rather than display keeps them in the layout to reserve that height. */
.hero__inner { display: grid; grid-template-columns: minmax(0, 1fr); }
.hero__pane { grid-area: 1 / 1; visibility: hidden; opacity: 0; pointer-events: none; }
.hero__pane.is-active { visibility: visible; opacity: 1; pointer-events: auto; animation: heroIn .8s var(--ease-out) both; }
.hero__nav { grid-row: 2; }
@keyframes heroIn {
	from { opacity: 0; transform: translateY(22px); }
	to { opacity: 1; transform: none; }
}

/* Progress controls */
.hero__nav {
	display: flex;
	align-items: center;
	gap: 1.25rem;
	margin-top: clamp(2.5rem, 1.5rem + 3vw, 4rem);
	flex-wrap: wrap;
}
.hero__dots { display: flex; gap: .6rem; list-style: none; margin: 0; padding: 0; }
.hero__dots li { margin: 0; }
.hero__dot {
	width: 52px; height: 3px;
	padding: 10px 0;
	background: none;
	border: 0;
	position: relative;
	display: block;
}
.hero__dot::before {
	content: "";
	position: absolute;
	inset: 10px 0;
	background: rgba(255, 255, 255, .28);
	border-radius: 2px;
}
.hero__dot::after {
	content: "";
	position: absolute;
	inset: 10px auto 10px 0;
	width: 0;
	background: var(--lime-500);
	border-radius: 2px;
}
.hero__dot[aria-selected="true"]::after { animation: dotFill 7s linear forwards; }
.hero.is-paused .hero__dot[aria-selected="true"]::after { animation-play-state: paused; }
@keyframes dotFill { to { width: 100%; } }

.hero__scroll {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	font-size: var(--fs-xs);
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, .6);
	text-decoration: none;
	margin-left: auto;
}
.hero__scroll .icon { animation: bob 2.4s var(--ease) infinite; }
@keyframes bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(4px); } }

/* Page hero (inner pages) */
.page-hero {
	position: relative;
	margin-top: calc(var(--header-h) * -1);
	padding-block: calc(var(--header-h) + clamp(1.75rem, 1rem + 3vw, 3.25rem)) clamp(1.75rem, 1.2rem + 2vw, 3rem);
	background: var(--forest-800);
	color: #fff;
	overflow: hidden;
	isolation: isolate;
}
.page-hero__deco {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: 0;
	pointer-events: none;
}
.page-hero .wrap { position: relative; z-index: 1; }
.page-hero::after {
	content: "";
	position: absolute;
	right: -10%;
	top: -30%;
	width: 60%;
	aspect-ratio: 1;
	border-radius: 50%;
	background: radial-gradient(circle at 50% 50%, rgba(141, 198, 63, .15), transparent 65%);
	z-index: 0;
}
.page-hero__inner { max-width: 75%; }
.page-hero__title { font-family: var(--font-display); font-size: var(--fs-h1); font-weight: 700; letter-spacing: -.035em; line-height: 1.1; text-wrap: balance; }
.single .page-hero__title { font-size: var(--fs-h2); max-width: none; }
.page-hero__title em { font-style: normal; font-weight: 700; color: var(--lime-400); }
.page-hero__text { color: rgba(255, 255, 255, .78); font-size: var(--fs-lg); }

.crumbs { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0 0 1.25rem; padding: 0; font-size: var(--fs-sm); color: rgba(255, 255, 255, .6); }
.crumbs li { margin: 0; display: flex; align-items: center; gap: .5rem; }
.crumbs li + li::before { content: "/"; opacity: .5; }
.crumbs a { text-decoration: none; }
.crumbs a:hover { color: var(--lime-400); }

/* --------------------------------------------------------------------------
   8. Media
   -------------------------------------------------------------------------- */
.media {
	position: relative;
	margin: 0;
	aspect-ratio: var(--ratio, 4 / 3);
	overflow: hidden;
	border-radius: var(--r-lg);
	background: var(--paper-2);
}
.media__img { width: 100%; height: 100%; object-fit: cover; object-position: center center; }
.media__ph {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background:
		linear-gradient(135deg, color-mix(in srgb, var(--forest-700) 92%, transparent), var(--green-500)),
		var(--forest-700);
	color: rgba(255, 255, 255, .5);
}
.media__ph::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image:
		radial-gradient(circle at 22% 28%, rgba(141, 198, 63, .35), transparent 45%),
		radial-gradient(circle at 80% 75%, rgba(255, 255, 255, .14), transparent 42%);
}
.media__ph-mark {
	position: relative;
	font-size: var(--fs-xs);
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	padding: .4rem .9rem;
	border: 1px solid rgba(255, 255, 255, .3);
	border-radius: var(--r-pill);
}
.media--round { border-radius: var(--r-xl); }
.media--square { border-radius: 0; }

/* Video/play affordance */
.play-btn {
	position: absolute;
	inset: 0;
	margin: auto;
	width: 74px; height: 74px;
	display: grid;
	place-items: center;
	background: rgba(255, 255, 255, .92);
	color: var(--forest-800);
	border: 0;
	border-radius: 50%;
	box-shadow: var(--shadow-lg);
	transition: transform .3s var(--ease-out), background .3s var(--ease);
}
.play-btn::after {
	content: "";
	position: absolute;
	inset: -10px;
	border: 1px solid rgba(255, 255, 255, .5);
	border-radius: 50%;
	animation: ripple 2.6s var(--ease) infinite;
}
@keyframes ripple {
	0% { transform: scale(.9); opacity: .8; }
	100% { transform: scale(1.35); opacity: 0; }
}
.play-btn:hover { transform: scale(1.08); background: #fff; }

/* --------------------------------------------------------------------------
   9. Cards
   -------------------------------------------------------------------------- */
.card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 1rem;
	padding: clamp(1.5rem, 1.2rem + .8vw, 2rem);
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	transition: transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: color-mix(in srgb, var(--forest-600) 25%, var(--line)); }
.card__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.3; }
.card__text { color: var(--muted); font-size: var(--fs-box); }
.card__foot { margin-top: auto; padding-top: .5rem; }
.card--flat { background: transparent; border-color: transparent; padding: 0; }
.card--flat:hover { transform: none; box-shadow: none; }

.card__icon {
	width: 48px; height: 48px;
	display: grid;
	place-items: center;
	border-radius: var(--r-md);
	background: color-mix(in srgb, var(--green-500) 12%, transparent);
	color: var(--forest-600);
	flex: none;
}
.section--forest .card__icon { background: rgba(141, 198, 63, .18); color: var(--lime-400); }

/* Whole-card link */
.card__link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }

/* --------------------------------------------------------------------------
   10. Stats
   -------------------------------------------------------------------------- */
/* Discrete rounded tiles rather than a hairline-divided slab — reads lighter
   and lets each figure breathe. */
.stats { display: grid; gap: clamp(.75rem, .5rem + .8vw, 1.25rem); }
@media (min-width: 640px) { .stats { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .stats--5 { grid-template-columns: repeat(5, 1fr); } .stats--4 { grid-template-columns: repeat(4, 1fr); } .stats--3 { grid-template-columns: repeat(3, 1fr); } }

.stat {
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	padding: clamp(1.5rem, 1.2rem + 1vw, 2.25rem);
	display: flex;
	flex-direction: column;
	gap: .4rem;
	transition: transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.stat:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: color-mix(in srgb, var(--green-500) 30%, var(--line)); }
.stat__value {
	font-family: var(--font-display);
	font-size: clamp(2.5rem, 1.8rem + 3vw, 4.25rem);
	font-weight: 600;
	line-height: .95;
	letter-spacing: -.04em;
	color: var(--forest-700);
	font-variant-numeric: tabular-nums;
}
/* The unit reads as part of the number, not as a footnote marker. */
.stat__value sup { font-size: .58em; vertical-align: baseline; letter-spacing: -.02em; color: inherit; opacity: .85; margin-left: .1em; }
.stat__label { font-size: var(--fs-base); font-weight: 700; letter-spacing: -.01em; }
.stat__note { font-size: var(--fs-sm); color: var(--muted); line-height: 1.5; }

.section--forest .stats { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .14); }
.section--forest .stat { background: var(--forest-800); }
.section--forest .stat:hover { background: var(--forest-700); }
.section--forest .stat__value { color: #fff; }
.section--forest .stat__note { color: rgba(255, 255, 255, .62); }

/* Compact inline stat strip */
.stat-strip {
	display: grid;
	gap: 1px;
	background: var(--line);
	border-radius: var(--r-md);
	overflow: hidden;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
.stat-strip > div { background: var(--white); padding: 1.15rem 1.25rem; }
.stat-strip b { display: block; font-family: var(--font-display); font-size: 1.9rem; font-weight: 600; line-height: 1; color: var(--forest-700); letter-spacing: -.03em; }
.stat-strip span { font-size: var(--fs-sm); color: var(--muted); }

/* About section — the animated C2G logo on a clean panel. */
/* About: a 32/68 split with the media column stretched to the copy beside
   it, so the panel finishes level with the text instead of stopping short. */
@media (min-width: 1000px) {
	#about .split { grid-template-columns: minmax(0, 32fr) minmax(0, 68fr); align-items: stretch; }
	#about .split > *:first-child { display: flex; }
	#about .about-figure { flex: 1; aspect-ratio: auto; }
}
/* The About copy sits in a 68% column that is already a comfortable
   measure, so the global 62ch cap only left a ragged right edge. */
#about .lead { max-width: 100%; }

/* Floating credential card over the About panel. */
.about-figure__badge {
	position: absolute;
	left: clamp(.9rem, .5rem + 1vw, 1.4rem);
	right: clamp(.9rem, .5rem + 1vw, 1.4rem);
	bottom: clamp(.9rem, .5rem + 1vw, 1.4rem);
	display: grid;
	gap: .15rem;
	padding: .95rem 1.1rem;
	background: rgba(255, 255, 255, .82);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	box-shadow: 0 18px 34px -22px rgba(4, 24, 10, .5);
}
.about-figure__badge-icon { color: var(--green-500); }
.about-figure__badge b { font-size: var(--fs-sm); font-weight: 700; letter-spacing: -.01em; color: var(--forest-700); }
.about-figure__badge > span:last-child { font-size: var(--fs-xs); color: var(--muted); line-height: 1.45; }
.about-figure {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 5 / 4;
	position: relative;
	min-height: clamp(340px, 30vw, 520px);
	padding: clamp(1rem, .6rem + 2vw, 2rem);
	border-radius: var(--r-xl);
	overflow: hidden;
	background:
		radial-gradient(130% 110% at 50% 22%, var(--white), var(--mint-100) 88%),
		var(--white);
	border: 1px solid var(--line);
	box-shadow: var(--shadow-md);
}
.about-figure__video {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
}
.about-figure__video video {
	display: block;
	width: 100%;
	max-width: 620px;
	height: auto;
	margin: auto;
	mix-blend-mode: multiply;
}

/* --------------------------------------------------------------------------
   11. Services — editorial numbered list (signature component)
   -------------------------------------------------------------------------- */
.services { border-top: 1px solid var(--line); }
.service {
	position: relative;
	display: grid;
	gap: .5rem 2rem;
	padding-block: clamp(1.5rem, 1.1rem + 1.6vw, 2.5rem);
	border-bottom: 1px solid var(--line);
	text-decoration: none;
	transition: background .35s var(--ease), padding .35s var(--ease);
	align-items: start;
}
@media (min-width: 860px) {
	.service { grid-template-columns: 5rem minmax(0, 1.05fr) minmax(0, 1.1fr) 3rem; align-items: center; }
}
.service:hover { background: var(--white); }
.service__num {
	font-family: var(--font-display);
	font-size: 1.05rem;
	font-weight: 600;
	color: var(--ink-300);
	font-variant-numeric: tabular-nums;
	transition: color .3s var(--ease);
}
.service:hover .service__num { color: var(--lime-500); }
.service__title {
	font-family: var(--font-display);
	font-size: clamp(1.375rem, 1.1rem + 1.2vw, 2.125rem);
	font-weight: 600;
	letter-spacing: -.025em;
	line-height: 1.1;
	text-wrap: balance;
	transition: color .3s var(--ease);
}
.service:hover .service__title { color: var(--forest-600); }
.service__text { color: var(--muted); font-size: var(--fs-base); max-width: 52ch; }
.service__go {
	justify-self: end;
	width: 44px; height: 44px;
	display: grid;
	place-items: center;
	border: 1px solid var(--line);
	border-radius: 50%;
	color: var(--forest-700);
	flex: none;
	transition: background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease), transform .3s var(--ease-out);
}
.service:hover .service__go { background: var(--forest-800); color: #fff; border-color: var(--forest-800); transform: rotate(-45deg); }
@media (max-width: 859px) {
	.service__go { position: absolute; right: 0; top: clamp(1.5rem, 1.1rem + 1.6vw, 2.5rem); width: 38px; height: 38px; }
	.service__title { padding-right: 3rem; }
}

/* Service grid variant (used on service landing pages) */
.svc-grid { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); }

/* --- Services: icon-circle cards in a slider (client's approved design) --- */
.svc-track {
	display: flex;
	gap: 1.75rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	padding: 62px 2px 24px;                /* top room for the overhanging icon (incl. hover scale) */
	cursor: grab;
}
.svc-track::-webkit-scrollbar { display: none; }
.svc-track.is-grabbing { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; }
.scard {
	position: relative;
	flex: 0 0 100%;
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: .7rem;
	padding: 56px 1.75rem 2rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-xl);
	box-shadow: var(--shadow-sm);
	transition: transform .4s var(--ease-out), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
@media (min-width: 620px) { .scard { flex-basis: calc((100% - 1.75rem) / 2); } }
@media (min-width: 1000px) { .scard { flex-basis: calc((100% - 2 * 1.75rem) / 3); } }
.scard:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: color-mix(in srgb, var(--green-500) 30%, var(--line)); }
.scard__icon {
	position: absolute;
	top: 0; left: 50%;
	transform: translate(-50%, -50%);
	width: 88px; height: 88px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: linear-gradient(150deg, var(--lime-400), var(--green-500) 75%);
	color: #fff;
	box-shadow: 0 16px 34px -8px rgba(47, 158, 91, .6);
	transition: transform .45s var(--ease-out);
}
.scard:hover .scard__icon { transform: translate(-50%, -50%) scale(1.08) rotate(-6deg); }
.scard__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.3; text-wrap: balance; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; min-height: calc(2 * 1.3em); }
.scard__title a { color: inherit; text-decoration: none; }
.scard:hover .scard__title { color: var(--forest-600); }
.scard__text { font-size: var(--fs-box); color: var(--muted); line-height: 1.55; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; }
.scard__go {
	margin-top: auto;
	width: 52px; height: 52px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: linear-gradient(150deg, var(--lime-500), var(--green-500));
	color: var(--forest-900);
	text-decoration: none;
	box-shadow: 0 10px 22px -8px rgba(47, 158, 91, .55);
	transition: transform .35s var(--ease-out), background .3s var(--ease), color .3s var(--ease);
}
.scard:hover .scard__go { background: var(--forest-800); color: #fff; transform: translateX(4px); }

/* --- Projects & Services carousel (reference design) --- */
.pcarousel { position: relative; }
.pcarousel__track {
	display: flex;
	gap: 1.5rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
	padding: 8px 2px 18px;                 /* room for the hover lift */
	scroll-padding-left: 0;                /* first card sits flush left, peek on the right only */
}
.pcarousel__track::-webkit-scrollbar { display: none; }

.pcard {
	position: relative;
	flex: 0 0 100%;                        /* whole cards — never crop the last visible one */
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
	padding: 1rem 1rem 1.5rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-xl);
	box-shadow: var(--shadow-sm);
	transition: background .45s var(--ease), color .45s var(--ease), transform .45s var(--ease-out), box-shadow .45s var(--ease), border-color .45s var(--ease);
}
@media (min-width: 620px) { .pcard { flex-basis: calc((100% - 1.5rem) / 2); } }
@media (min-width: 1000px) { .pcard { flex-basis: calc((100% - 3 * 1.5rem) / 4); } }
.pcard:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
/* Highlighted (dark) state on hover — the reference's active card. */
.pcard:hover { background: var(--forest-800); border-color: var(--forest-800); color: #fff; }

.pcard__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 11;
	border-radius: var(--r-lg);
	overflow: hidden;
	background: var(--forest-700);
}
.pcard__media img, .pcard__media .media__ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pcard__media img { transition: transform 1.1s var(--ease-out); }
.pcard:hover .pcard__media img { transform: scale(1.07); }
.pcard__icon {
	position: absolute;
	top: .9rem; left: .9rem;
	z-index: 1;
	width: 52px; height: 52px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: linear-gradient(150deg, var(--lime-400), var(--green-500));
	color: #fff;
	box-shadow: 0 8px 20px -6px rgba(47, 158, 91, .6);
}

.pcard__title {
	margin: 1.15rem 0 .9rem;
	font-size: var(--fs-h3);
	font-weight: 700;
	letter-spacing: -.02em;
	line-height: 1.18;
	text-wrap: balance;
}
.pcard__title a { text-decoration: none; color: inherit; }

.pcard__list { list-style: none; margin: 0 0 1.25rem; padding: 0; display: grid; gap: .6rem; }
.pcard__list li { margin: 0; display: flex; align-items: center; gap: .6rem; font-size: var(--fs-sm); font-weight: 600; color: var(--ink-700); }
.pcard__list li::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--green-500); flex: none; }
.pcard:hover .pcard__list li { color: rgba(255, 255, 255, .82); }
.pcard:hover .pcard__list li::before { background: var(--lime-400); }

.pcard__foot {
	margin-top: auto;
	padding-top: 1rem;
	border-top: 1px solid var(--line);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}
.pcard:hover .pcard__foot { border-top-color: rgba(255, 255, 255, .16); }
.pcard__more { font-size: var(--fs-sm); font-weight: 700; letter-spacing: -.01em; text-decoration: none; color: var(--forest-800); }
.pcard:hover .pcard__more { color: #fff; }
.pcard__plus {
	width: 52px; height: 52px;
	flex: none;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--forest-800);
	color: #fff;
	text-decoration: none;
	transition: transform .35s var(--ease-out), background .3s var(--ease), color .3s var(--ease);
}
/* Alternate + colours like the reference (dark / lime / dark / lime). */
.pcard:nth-child(even) .pcard__plus { background: var(--lime-500); color: var(--forest-900); }
.pcard:hover .pcard__plus { background: var(--lime-500); color: var(--forest-900); transform: rotate(90deg); }
.pcard:hover:nth-child(even) .pcard__plus { background: #fff; }

.pcarousel__nav { display: flex; gap: .6rem; margin-top: 1.75rem; justify-content: flex-end; }
/* Centred control bar: prev — button — next */
.pcarousel__controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: clamp(.75rem, .5rem + 1vw, 1.5rem);
	margin-top: clamp(1.5rem, 1rem + 1.5vw, 2.5rem);
}
.pcarousel__controls .btn { margin: 0; }
.pcarousel__track { cursor: grab; }
.pcarousel__track.is-grabbing { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; }
.pcarousel__track.is-grabbing a { pointer-events: none; }
.pcarousel__track.is-grabbing img { pointer-events: none; }

/* --- Projects & Services: icon-circle cards (client's approved design) --- */
/* 4 per row on desktop (8 services → an even 4 + 4, no trailing gap). */
.svc2 {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	align-items: stretch;
	gap: clamp(1.5rem, 1.1rem + 1.6vw, 2.25rem) clamp(1rem, .7rem + 1.2vw, 1.5rem);
}
@media (max-width: 1080px) { .svc2 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px)  { .svc2 { grid-template-columns: 1fr; } }
.svc2-card {
	position: relative;
	margin-top: 44px;              /* overhang space above each card */
	padding: 56px 1.35rem 1.5rem;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: .6rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	text-decoration: none;
	color: inherit;
	box-shadow: var(--shadow-sm);
	transition: transform .4s var(--ease-out), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
.svc2-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: color-mix(in srgb, var(--green-500) 30%, var(--line)); }

.svc2-card__icon {
	position: absolute;
	top: 0; left: 50%;
	transform: translate(-50%, -50%);
	width: 76px; height: 76px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: linear-gradient(150deg, var(--lime-400), var(--green-500) 70%);
	color: #fff;
	box-shadow: 0 14px 30px -8px rgba(47, 158, 91, .6);
	transition: transform .45s var(--ease-out);
}
.svc2-card:hover .svc2-card__icon { transform: translate(-50%, -50%) scale(1.08) rotate(-6deg); }

.svc2-card__num {
	position: absolute;
	top: 12px; right: 16px;
	font-size: var(--fs-sm);
	font-weight: 700;
	letter-spacing: .04em;
	color: var(--line);
	transition: color .3s var(--ease);
}
.svc2-card:hover .svc2-card__num { color: var(--lime-400); }

.svc2-card__title {
	font-size: var(--fs-lg);
	font-weight: 700;
	letter-spacing: -.02em;
	line-height: 1.25;
	text-wrap: balance;
	transition: color .3s var(--ease);
}
.svc2-card:hover .svc2-card__title { color: var(--forest-600); }
.svc2-card__text { font-size: var(--fs-sm); color: var(--muted); line-height: 1.6; }
.svc2-card__arrow {
	margin-top: auto;
	padding-top: .5rem;
	display: grid;
	place-items: center;
	width: 42px; height: 42px;
	border-radius: 50%;
	color: var(--forest-700);
	transition: transform .35s var(--ease-out), color .3s var(--ease);
}
.svc2-card:hover .svc2-card__arrow { transform: translateY(4px); color: var(--clay-500); }

/* --- Projects & Services: featured lead card + even grid --- */
.svc-cards { display: grid; gap: clamp(1rem, .7rem + 1vw, 1.75rem); }
.svc-cards__grid {
	display: grid;
	gap: clamp(1rem, .7rem + 1vw, 1.75rem);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
}
.svc-card {
	display: flex;
	flex-direction: column;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	overflow: hidden;
	text-decoration: none;
	color: inherit;
	transition: transform .4s var(--ease-out), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
.svc-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: color-mix(in srgb, var(--green-500) 32%, var(--line)); }

.svc-card__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--forest-700);
}
.svc-card__media img,
.svc-card__media .media__ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.svc-card__media img { transition: transform 1.1s var(--ease-out); }
.svc-card:hover .svc-card__media img { transform: scale(1.07); }
.svc-card__media::after {
	content: "";
	position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(6, 42, 27, .55), transparent 55%);
	opacity: .8;
}
.svc-card__num {
	position: absolute;
	top: 1rem; left: 1rem;
	z-index: 1;
	font-size: var(--fs-sm);
	font-weight: 700;
	letter-spacing: .04em;
	color: #fff;
	background: rgba(6, 42, 27, .32);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	padding: .3rem .6rem;
	border-radius: var(--r-pill);
}
.svc-card__icon {
	position: absolute;
	bottom: -22px; right: 1.25rem;
	z-index: 2;
	width: 48px; height: 48px;
	display: grid;
	place-items: center;
	border-radius: 14px;
	background: var(--white);
	color: var(--forest-600);
	box-shadow: var(--shadow-md);
	transition: transform .4s var(--ease-out), background .3s var(--ease), color .3s var(--ease);
}
.svc-card:hover .svc-card__icon { transform: translateY(-3px) rotate(-6deg); background: var(--green-500); color: #fff; }

.svc-card__body {
	display: flex;
	flex-direction: column;
	gap: .6rem;
	padding: clamp(1.35rem, 1.1rem + .8vw, 1.85rem);
	flex: 1;
}
.svc-card__title { font-size: var(--fs-xl); font-weight: 700; letter-spacing: -.02em; line-height: 1.2; }
.svc-card:hover .svc-card__title { color: var(--forest-600); }
.svc-card__text { font-size: var(--fs-sm); color: var(--muted); line-height: 1.6; }
.svc-card__go {
	margin-top: auto;
	padding-top: .35rem;
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	font-size: var(--fs-sm);
	font-weight: 700;
	color: var(--forest-700);
}
.svc-card__arrow {
	display: grid;
	place-items: center;
	width: 30px; height: 30px;
	border-radius: 50%;
	border: 1px solid var(--line);
	transition: background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease), transform .3s var(--ease-out);
}
.svc-card:hover .svc-card__arrow { background: var(--forest-800); color: #fff; border-color: var(--forest-800); transform: translateX(3px); }

/* Featured lead card: horizontal on wider screens */
.svc-card__tag {
	display: inline-flex;
	align-self: flex-start;
	padding: .3rem .75rem;
	background: color-mix(in srgb, var(--lime-500) 22%, transparent);
	color: var(--forest-700);
	border-radius: var(--r-pill);
	font-size: var(--fs-xs);
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}
.svc-card__points { display: grid; gap: .5rem; margin-top: .35rem; }
.svc-card__point { display: flex; align-items: center; gap: .5rem; font-size: var(--fs-sm); font-weight: 600; color: var(--ink-700); }
.svc-card__point .icon { color: var(--green-500); flex: none; }
@media (min-width: 820px) {
	.svc-card--featured { flex-direction: row; }
	.svc-card--featured .svc-card__media { flex: 0 0 46%; aspect-ratio: auto; min-height: 340px; }
	.svc-card--featured .svc-card__body { flex: 1; justify-content: center; gap: .85rem; padding: clamp(2rem, 1.4rem + 2vw, 3.25rem); }
	.svc-card--featured .svc-card__title { font-size: var(--fs-h3); }
	.svc-card--featured .svc-card__text { font-size: var(--fs-base); max-width: 46ch; }
}

/* --- Events & Activities --- */
.event-grid {
	display: grid;
	gap: clamp(1.25rem, .9rem + 1.4vw, 2rem);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
}
.event-card {
	display: flex;
	flex-direction: column;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	overflow: hidden;
	box-shadow: var(--shadow-sm);
	transition: transform .4s var(--ease-out), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
.event-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: color-mix(in srgb, var(--green-500) 30%, var(--line)); }
.event-card__media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--forest-700); }
.event-card__media--yt iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
.event-card__media img, .event-card__media .media__ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.event-card__media img { transition: transform 1.1s var(--ease-out); }
.event-card:hover .event-card__media img { transform: scale(1.07); }
.event-card__tag {
	position: absolute;
	top: .9rem; left: .9rem;
	z-index: 1;
	padding: .3rem .7rem;
	background: var(--lime-500);
	color: var(--forest-900);
	border-radius: var(--r-pill);
	font-size: var(--fs-xs);
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
}
.event-card__play {
	position: absolute;
	inset: 0;
	z-index: 1;
	display: grid;
	place-items: center;
	pointer-events: none;
}
.event-card__play::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 40%, color-mix(in srgb, var(--forest-900) 55%, transparent));
	opacity: .55;
	transition: opacity .4s var(--ease);
}
.event-card:hover .event-card__play::before { opacity: .8; }
.event-card__play .icon {
	position: relative;
	width: 62px; height: 62px;
	display: grid; place-items: center;
	color: var(--forest-900);
	background: var(--white);
	border-radius: 50%;
	padding: 18px;
	box-shadow: 0 10px 30px rgba(0,0,0,.28);
	transition: transform .45s var(--ease-out), background .3s var(--ease);
}
.event-card:hover .event-card__play .icon { transform: scale(1.08); background: var(--lime-500); }
.event-card__play.play-btn { pointer-events: auto; cursor: pointer; border: 0; padding: 0; background: transparent; -webkit-appearance: none; appearance: none; }
.event-card__body { flex: 1 1 auto; display: flex; flex-direction: column; gap: .5rem; padding: clamp(1.25rem, 1rem + .8vw, 1.6rem); }
.event-card__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.25; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.event-card__title a { color: inherit; text-decoration: none; }
.event-card:hover .event-card__title,
.event-card:hover .event-card__title a { color: var(--forest-600); }
.event-card__text { font-size: var(--fs-base); color: var(--muted); line-height: 1.55; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; }
.event-card__more {
	margin-top: auto;
	padding-top: .9rem;
	display: inline-flex; align-items: center; gap: .5rem;
	font-size: var(--fs-sm); font-weight: 700;
	color: var(--forest-800); text-decoration: none;
}
.event-card__more .icon { transition: transform .3s var(--ease-out); }
.event-card__more:hover .icon { transform: translateX(4px); }

/* --- Media coverage --- */
.press-grid {
	display: grid;
	gap: clamp(1rem, .8rem + 1vw, 1.5rem);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
}
.press-card {
	display: flex;
	flex-direction: column;
	gap: .6rem;
	padding: clamp(1.35rem, 1.1rem + .9vw, 1.85rem);
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	border-left: 3px solid var(--clay-500);
	transition: transform .35s var(--ease-out), box-shadow .35s var(--ease);
}
.press-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.press-card__source { display: inline-flex; align-items: center; gap: .4rem; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--clay-500); }
.press-card__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.3; }
.press-card__excerpt { font-size: var(--fs-sm); color: var(--muted); line-height: 1.6; }
.press-card__more { margin-top: auto; display: inline-flex; align-items: center; gap: .4rem; font-size: var(--fs-sm); font-weight: 700; color: var(--forest-700); }
.press-card__more .icon { transition: transform .3s var(--ease-out); }
.press-card:hover .press-card__more .icon { transform: translateX(4px); }

/* --- Shared side arrows for all carousels --- */
.rail-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 6;
	width: 52px; height: 52px;
	background: var(--white);
	border-color: var(--white);
	color: var(--forest-800);
	box-shadow: var(--shadow-md);
}
.rail-arrow:hover:not(:disabled) { background: var(--forest-800); color: #fff; border-color: var(--forest-800); }
/* Sit in the section gutter, outside the cards, so text is never covered. */
.rail-arrow--prev { left: calc(var(--gutter) * -1 + .25rem); }
.rail-arrow--next { right: calc(var(--gutter) * -1 + .25rem); }
.rail-arrow--prev .icon { transform: rotate(180deg); }   /* point left */
.rail-arrow:disabled { opacity: .35; pointer-events: none; }
@media (max-width: 1024px) { .rail-arrow { display: none; } }

/* --- Recent projects slider --- */
.proj-carousel { position: relative; }
.proj-track {
	position: relative;
	z-index: 2;
	display: flex;
	gap: 1.25rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	padding: 4px 2px 12px;
	cursor: grab;
}
.proj-track::-webkit-scrollbar { display: none; }
.proj-track.is-grabbing { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; }
/* Exactly four whole cards per view — no partial/cropped slide. */
.proj-track .proj {
	flex: 0 0 calc((100% - 3 * 1.25rem) / 4);
	scroll-snap-align: start;
}
@media (max-width: 960px) { .proj-track .proj { flex-basis: calc((100% - 1.25rem) / 2); } }
@media (max-width: 560px) { .proj-track .proj { flex-basis: 100%; } }
/* Counter band overlaps the card bases (pulled up, not via card margin, so
   the arrows stay centred on the cards). */
.counters { margin-top: clamp(-90px, -6vw, -50px); }
.proj {
	position: relative;
	display: block;
	aspect-ratio: 3 / 4;
	border-radius: var(--r-lg);
	overflow: hidden;
	background: var(--forest-700);
	box-shadow: var(--shadow-md);
	isolation: isolate;
}
.proj__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform 1s var(--ease-out); }
.proj:hover .proj__img { transform: scale(1.07); }
.proj::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(4, 24, 10, .82), transparent 48%); transition: opacity .4s var(--ease); }
.proj__default { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 1.15rem 1.25rem; color: #fff; transition: opacity .35s var(--ease), transform .4s var(--ease-out); }
.proj__default b { display: block; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.2; }
.proj__default > span { display: inline-flex; align-items: center; gap: .35rem; margin-top: .35rem; font-size: var(--fs-sm); color: rgba(255, 255, 255, .82); }
.proj__default > span .icon { color: var(--lime-400); }
.proj:hover .proj__default { opacity: 0; transform: translateY(12px); }
.proj__hover {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	z-index: 2;
	padding: 1.35rem 1.35rem 1.5rem;
	background: var(--lime-500);
	color: var(--forest-900);
	border-radius: var(--r-lg) var(--r-lg) 0 0;
	transform: translateY(101%);
	transition: transform .5s var(--ease-out);
}
.proj:hover .proj__hover { transform: translateY(0); }
.proj__cat { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: color-mix(in srgb, var(--forest-900) 70%, transparent); }
.proj__htitle { display: block; margin: .3rem 0 1rem; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.2; }
.proj__go { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--forest-900); color: #fff; }

.counters {
	position: relative;
	padding-top: calc(var(--sec-y) + clamp(55px, 6vw, 90px));
	padding-bottom: var(--sec-y);
}
.counters__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: clamp(1.5rem, 1rem + 2.4vw, 3.25rem); }
@media (max-width: 700px) { .counters__grid { grid-template-columns: repeat(2, 1fr); justify-items: center; }
	.counters__grid .counter:last-child:nth-child(odd) { grid-column: 1 / -1; } }
.counter { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: .35rem; }
.counter:not(:last-child)::after { content: ""; position: absolute; right: calc(clamp(2rem, 1.2rem + 3vw, 4.5rem) / -2); top: 22%; bottom: 22%; width: 1px; background: rgba(255, 255, 255, .16); }
@media (max-width: 700px) { .counter::after { display: none; } }
.counter__icon {
	width: 82px; height: 82px;
	margin-bottom: .5rem;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: linear-gradient(150deg, var(--lime-400), var(--green-500));
	color: #fff;
	box-shadow: 0 0 0 8px rgba(123, 224, 75, .12), 0 14px 30px -8px rgba(47, 158, 91, .6);
	perspective: 400px;
	transition: box-shadow .35s var(--ease), transform .45s var(--ease-out);
}
.counter__icon .icon { transition: transform .6s var(--ease-out); backface-visibility: hidden; }
.counter:hover .counter__icon { box-shadow: 0 0 0 10px rgba(123, 224, 75, .2), 0 18px 36px -8px rgba(47, 158, 91, .7); transform: translateY(-3px); }
.counter:hover .counter__icon .icon { transform: rotateY(360deg); }
.counter__value { font-family: var(--font-display); font-size: clamp(2.25rem, 1.6rem + 2.4vw, 3.5rem); font-weight: 700; letter-spacing: -.04em; line-height: 1; color: #fff; }
.counter__value sup { font-size: .5em; vertical-align: baseline; color: var(--lime-400); margin-left: .12em; }
.counter__label { font-size: var(--fs-sm); font-weight: 700; letter-spacing: .04em; color: rgba(255, 255, 255, .72); }

/* Impact band rises up behind the base of the programme cards for the
   overlapping look — the cards (z-index 1) stay in front of the dark band. */
.projects { position: relative; z-index: 1; padding-bottom: 0; }
.impact-band {
	position: relative;
	z-index: 0;
	margin-top: clamp(-104px, -7vw, -64px);
	padding-top: calc(var(--sec-y) + clamp(104px, 9vw, 150px));
}
/* Standalone band (no card slider above it to tuck under). */
.impact-band--flat { margin-top: 0; padding-top: var(--sec-y); }

/* --- Winding-road journey --- */
/* The road wraps into rows with U-turns, so every milestone fits on screen. */
.road__wrap { position: relative; margin-top: clamp(.75rem, .5rem + .8vw, 1.5rem); }
.road__svg { width: 100%; height: auto; display: block; overflow: visible; }
.road__dash { animation: roadDash 22s linear infinite; }
@keyframes roadDash { to { stroke-dashoffset: -400; } }
.road__label {
	position: absolute;
	width: min(240px, 22vw);
	transform: translateX(-50%);
	opacity: 0;
	transition: opacity .6s var(--ease-out), transform .6s var(--ease-out);
	transition-delay: var(--d, 0ms);
	background: var(--white);
	padding: clamp(.65rem, .5rem + .5vw, 1rem) clamp(.75rem, .5rem + .6vw, 1.15rem);
	border-radius: var(--r-lg);
	border: 1px solid var(--line);
	border-left: 3px solid var(--forest-500);
	box-shadow: 0 4px 16px -4px rgba(4, 24, 10, .1);
}
.road__label--above { transform: translate(-50%, -100%); }
[data-reveal].is-in .road__label { opacity: 1; }
.road__label--below.is-in, .road__wrap [data-reveal].is-in .road__label--below { transform: translateX(-50%); }
.road__year { display: block; font-family: var(--font-display); font-size: clamp(1.25rem, 1rem + .8vw, 1.6rem); font-weight: 700; letter-spacing: -.04em; line-height: 1; color: var(--white); background: var(--forest-700); margin: clamp(-.65rem, -.5rem - .5vw, -1rem) clamp(-.75rem, -.5rem - .6vw, -1.15rem) 0; padding: .5rem clamp(.75rem, .5rem + .6vw, 1.15rem); border-radius: var(--r-lg) var(--r-lg) 0 0; border-left: 2px solid var(--forest-500); }
.road__title { display: block; margin-top: .45rem; font-size: var(--fs-base); font-weight: 700; letter-spacing: -.015em; color: var(--fg); }
.road__text { display: block; margin-top: .3rem; font-size: var(--fs-box); color: var(--muted); line-height: 1.5; }
.road__stats { display: grid; gap: .25rem; margin-top: .5rem; }
.road__stat { display: flex; align-items: baseline; gap: .4rem; font-size: var(--fs-sm); line-height: 1.4; }
.road__stat b { font-weight: 700; color: var(--forest-700); font-variant-numeric: tabular-nums; }
.road__stat > span { color: var(--muted); }
.road__label--above .road__text { margin-bottom: .1rem; }
.road__dot { transition: r .3s var(--ease); }
.road__list { display: none; }

@media (max-width: 760px) {
	.road__wrap { display: none; }
	.road__list {
		display: grid;
		gap: 1.25rem;
		list-style: none;
		margin: 0;
		padding: 0 0 0 1.5rem;
		border-left: 2px solid var(--line);
	}
	.road__list li { position: relative; margin: 0; background: var(--white); padding: .75rem 1rem; border-radius: var(--r-lg); border: 1px solid var(--line); border-left: 3px solid var(--forest-500); box-shadow: 0 2px 8px -2px rgba(4, 24, 10, .08); }
	.road__list li::before { content: ""; position: absolute; left: -1.9rem; top: 1rem; width: 14px; height: 14px; border-radius: 50%; background: var(--clay-500); box-shadow: 0 0 0 4px var(--mint-100); }
	.road__list .road__year { font-size: 1.4rem; color: var(--white); background: var(--forest-700); margin: -.75rem -1rem .5rem; padding: .4rem 1rem; border-radius: var(--r-lg) var(--r-lg) 0 0; }
	.road__list .road__stat { font-size: var(--fs-sm); }
}

/* --- National footprint (stat cards around the map) --- */
.footprint__grid { display: grid; gap: clamp(1.25rem, .8rem + 2vw, 2rem); align-items: center; }
@media (min-width: 980px) { .footprint__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr) minmax(0, 1fr); } }
.footprint__col { display: grid; gap: clamp(1rem, .7rem + 1.5vw, 1.75rem); }
.footprint__map { text-align: center; }
.footprint__map img { width: 100%; max-width: 460px; height: auto; margin-inline: auto; transform: translateY(var(--parallax, 0)); }
.footprint__cap { margin-top: .5rem; font-size: var(--fs-sm); font-weight: 700; color: var(--forest-800); }

.fstat {
	padding: clamp(1.35rem, 1.1rem + 1vw, 2rem);
	border-radius: var(--r-xl);
	border: 1px solid var(--line);
	background: var(--white);
	box-shadow: var(--shadow-sm);
	text-align: center;
	transition: transform .4s var(--ease-out), box-shadow .4s var(--ease);
}
.fstat:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); }
.fstat__icon { width: 54px; height: 54px; margin: 0 auto .5rem; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--green-500) 14%, transparent); color: var(--forest-600); }
.fstat__label { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; }
.fstat__value { font-family: var(--font-display); font-size: clamp(2.25rem, 1.6rem + 2.6vw, 3.5rem); font-weight: 700; letter-spacing: -.04em; line-height: 1; margin: .25rem 0 .5rem; color: var(--forest-800); }
.fstat__value sup { font-size: .5em; vertical-align: baseline; margin-left: .08em; color: var(--green-500); }
.fstat__note { font-size: var(--fs-sm); color: var(--muted); line-height: 1.5; }
.fstat--green { background: linear-gradient(155deg, var(--green-500), var(--forest-600)); border-color: transparent; color: #fff; }
.fstat--green .fstat__icon { background: rgba(255, 255, 255, .18); color: #fff; }
.fstat--green .fstat__value { color: #fff; }
.fstat--green .fstat__value sup { color: rgba(255, 255, 255, .85); }
.fstat--green .fstat__note { color: rgba(255, 255, 255, .82); }

/* --- ESG v2 (short content left, wheel right) --- */
/* ESG wheel - the three pillars drawn as an SVG donut with the twelve KPIs
   sitting on the ring as real text. No rotation: the client's artwork reads
   left-to-right and spinning it turns the labels upside down. */
.esgw p.lead.mt-3 { margin: 0 auto; }
.esgw__stage {
	container-type: inline-size;
	position: relative;
	width: min(100%, 900px);
	/* Radial layout: the corners of a square would sit empty, so the box is
	   cropped to the height the ring and its labels actually need. */
	aspect-ratio: 1.62;
	margin: clamp(1.5rem, .75rem + 2vw, 2.5rem) auto 0;
}
.esgw__dial { position: absolute; left: 50%; top: 50%; width: 42%; aspect-ratio: 1; transform: translate(-50%, -50%); }
.esgw__ring { display: block; width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 24px 42px rgba(4, 24, 10, .16)); }
.esgw__arc { stroke: #fff; stroke-width: 2.5; transition: opacity .35s var(--ease); }
.esgw__arc--env { fill: var(--lime-500); }
.esgw__arc--soc { fill: var(--ink-400); }
.esgw__arc--gov { fill: var(--forest-700); }
.esgw__arclabel { fill: #fff; font-family: inherit; font-size: 23px; font-weight: 600; letter-spacing: .02em; dominant-baseline: central; }
.esgw__core {
	position: absolute;
	left: 50%; top: 50%;
	width: 55%; aspect-ratio: 1;
	transform: translate(-50%, -50%);
	display: grid;
	place-items: center;
	padding: 8%;
	background: var(--white);
	border-radius: 50%;
	box-shadow: inset 0 0 0 1px var(--line);
}
.esgw__core img { width: 100%; height: auto; }

.esgw__flat { display: none; }
.esgw__nodes { position: absolute; inset: 0; list-style: none; margin: 0; padding: 0; }
/* The node fills the stage and rotates; the pin is a zero-size point on the
   ring that counter-rotates so the chip and its label stay upright. */
.esgw__node { position: absolute; inset: 0; margin: 0; transform: rotate(var(--a)); pointer-events: none; }
.esgw__pin { position: absolute; left: 50%; top: calc(50% - 25cqw); width: 0; height: 0; transform: rotate(calc(var(--a) * -1)); pointer-events: auto; }
.esgw__dot {
	position: absolute;
	left: 0; top: 0;
	display: grid;
	place-items: center;
	width: 54px; height: 54px;
	margin: -27px 0 0 -27px;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: 50%;
	color: var(--green-500);
	box-shadow: 0 10px 22px -12px rgba(4, 24, 10, .35);
	transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.esgw__node--gov .esgw__dot { color: var(--forest-700); }
.esgw__node--soc .esgw__dot { color: var(--ink-400); }
.esgw__label {
	position: absolute;
	top: 0;
	width: max-content;
	max-width: 145px;
	transform: translateY(-50%);
	font-size: var(--fs-sm);
	font-weight: 600;
	line-height: 1.35;
	color: var(--ink-700);
	transition: color .3s var(--ease);
}
.esgw__node--r .esgw__label { left: 36px; text-align: left; }
.esgw__node--l .esgw__label { right: 36px; text-align: right; }
.esgw__pin:hover .esgw__dot { transform: translateY(-4px) scale(1.06); border-color: var(--green-500); box-shadow: 0 18px 30px -14px rgba(4, 24, 10, .45); }
.esgw__pin:hover .esgw__label { color: var(--forest-700); }
.esgw__stage:hover .esgw__arc { opacity: .85; }

@media (prefers-reduced-motion: no-preference) {
	[data-reveal].is-in .esgw__pin { animation: esgwPop .5s var(--ease) both; animation-delay: var(--d, 0ms); }
	@keyframes esgwPop { from { opacity: 0; transform: rotate(calc(var(--a) * -1)) scale(.7); } }
}

.esgw__legend { list-style: none; margin: clamp(1.5rem, .75rem + 1.5vw, 2.25rem) 0 0; padding: 0; display: grid; gap: 1.25rem; }
@media (min-width: 760px) { .esgw__legend { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; } }
.esgw__legend-item { padding-left: 1.15rem; border-left: 4px solid var(--line); }
.esgw__legend-item--env { border-left-color: var(--lime-500); }
.esgw__legend-item--soc { border-left-color: var(--ink-400); }
.esgw__legend-item--gov { border-left-color: var(--forest-700); }
.esgw__legend-label { display: block; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.01em; line-height: 1.3; color: var(--forest-700); }
.esgw__legend-text { margin-top: .2rem; font-size: var(--fs-base); color: var(--ink-700); line-height: 1.55; }

/* UN SDG marks - shown at their native square proportion with no radius,
   recolour or overlay, so the official artwork stays intact. */
.sdg { margin-top: clamp(2rem, 1rem + 2vw, 3rem); text-align: center; }
.sdg__note { font-size: var(--fs-sm); font-weight: 600; letter-spacing: .01em; color: var(--muted); }
.sdg__grid {
	list-style: none;
	margin: 1.1rem 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: clamp(.5rem, .25rem + .6vw, .9rem);
	max-width: 860px;
	margin-inline: auto;
}
.sdg__tile { margin: 0; }
.sdg__tile img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	box-shadow: 0 8px 20px -14px rgba(4, 24, 10, .5);
	transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}
.sdg__tile img:hover { transform: translateY(-5px); box-shadow: 0 16px 26px -14px rgba(4, 24, 10, .55); }
@media (max-width: 860px) { .sdg__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); max-width: 480px; } }
@media (max-width: 480px) { .sdg__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 340px; } }

/* Under ~1000px the ring cannot hold twelve labels, so the dial shrinks to a
   key and the KPIs reflow into a plain two-column list. */
@media (max-width: 999px) {
	.esgw__stage { container-type: normal; aspect-ratio: auto; display: grid; justify-items: center; gap: 2.25rem; }
	/* Stays relative: the core disc is absolutely centred inside it. */
	.esgw__dial { position: relative; left: auto; top: auto; width: min(300px, 72vw); transform: none; }
	.esgw__nodes { position: static; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.1rem 1.5rem; width: 100%; }
	.esgw__node { position: static; inset: auto; transform: none; pointer-events: auto; }
	.esgw__pin { position: static; width: auto; height: auto; display: flex; align-items: center; gap: .75rem; transform: none; animation: none !important; }
	.esgw__dot { position: static; width: 44px; height: 44px; margin: 0; flex: none; }
	.esgw__label { position: static; max-width: none; transform: none; text-align: left !important; left: auto !important; right: auto !important; }
}
@media (max-width: 520px) {
	.esgw__nodes { grid-template-columns: minmax(0, 1fr); }
	.esgw__arclabel { font-size: 24px; }
}
/* Phones: the flat artwork replaces the ring and its list entirely. */
@media (max-width: 767px) {
	.esgw__stage { gap: 0; }
	.esgw__dial, .esgw__nodes { display: none; }
	.esgw__flat { display: block; width: min(430px, 100%); height: auto; margin-inline: auto; }
}
}

/* --- ESG wheel + KPI columns (legacy) --- */

/* --- Team / board (portrait on green panel) --- */
.team-grid { display: grid; gap: clamp(1.25rem, 1rem + 1vw, 2rem); grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); padding-top: clamp(42px, 5vw, 78px); }
.tmember { text-align: center; }
/* Green rounded panel with a downward speech-bubble tail; the cut-out portrait
   is anchored to the base and its head pops out above the panel top. */
.tmember__photo {
	position: relative;
	aspect-ratio: 1 / 1;
	border-radius: var(--r-xl);
	background: linear-gradient(158deg, var(--green-500), var(--forest-700));
	box-shadow: var(--shadow-sm);
	transition: transform .45s var(--ease-out), box-shadow .45s var(--ease);
}
.tmember:hover .tmember__photo { transform: translateY(-8px); box-shadow: 0 26px 46px -18px rgba(6, 42, 27, .5); }
.tmember__photo .media {
	position: absolute;
	left: 0; right: 0; bottom: 0; top: auto;
	height: 130%;
	margin: 0;
	border-radius: 0;
	background: transparent;
	overflow: visible;
	aspect-ratio: auto;
}
.tmember__photo .media__img { width: 100%; height: 100%; object-fit: contain; object-position: bottom center; transition: transform .8s var(--ease-out); }
/* No zoom on hover: the wrapper stays overflow:visible so the head can rise
   above the panel, so a scale would also spill past the sides and bottom and
   break the rounded tile. The panel lift carries the interaction. */
.tmember__photo .media__ph::after { opacity: .5; }
.tmember__open { position: absolute; inset: 0; z-index: 2; background: none; border: 0; cursor: pointer; }
.tmember__open:focus-visible { outline: 2px solid var(--forest-600); outline-offset: 3px; }
.tmember__name { margin-top: 1.1rem; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; color: var(--forest-600); }
.tmember__role { margin-top: .3rem; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--clay-500); }
.tmember__bio { margin-top: .6rem; font-size: var(--fs-box); color: var(--muted); line-height: 1.55; }

/* --- Video showcase --- */
.vid__frame {
	position: relative;
	margin-top: clamp(1.5rem, 1rem + 2vw, 2.5rem);
	aspect-ratio: 16 / 8;
	border-radius: var(--r-xl);
	overflow: hidden;
	background: var(--forest-800);
	box-shadow: var(--shadow-lg);
	isolation: isolate;
}
@media (max-width: 640px) { .vid__frame { aspect-ratio: 16 / 11; } }
.vid__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vid__scrim { position: absolute; inset: 0; background: linear-gradient(to top, rgba(4, 24, 10, .55), rgba(4, 24, 10, .1) 45%); z-index: 1; }
.vid__frame .play-btn { z-index: 2; width: 88px; height: 88px; }
.vid__frame .play-btn .icon { margin-left: 3px; }
.vid__caption { position: absolute; left: clamp(1.25rem, 1rem + 1vw, 2rem); bottom: clamp(1.25rem, 1rem + 1vw, 2rem); z-index: 2; color: #fff; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; max-width: 24ch; text-shadow: 0 2px 12px rgba(0, 0, 0, .5); }
.vid__frame.is-playing .vid__scrim, .vid__frame.is-playing .vid__caption, .vid__frame.is-playing .vid__poster { opacity: 0; }

/* --- Blog grid --- */
.blog-grid { display: grid; gap: clamp(1.25rem, 1rem + 1.4vw, 2rem); grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }

/* --- FAQ --- */
.faq__inner { display: grid; gap: clamp(1.75rem, 1rem + 3vw, 3.5rem); align-items: center; }
@media (min-width: 900px) { .faq__inner { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); } }
.faq__media { position: relative; }
.faq__badge {
	position: absolute;
	right: clamp(-8px, -1vw, 12px);
	bottom: clamp(-8px, 2vw, 24px);
	width: min(64%, 240px);
	padding: 1.15rem 1.35rem;
	background: var(--forest-900);
	color: #fff;
	border-radius: var(--r-lg);
	box-shadow: var(--shadow-lg);
}
.faq__stars { display: inline-flex; gap: .15rem; color: var(--lime-500); margin-bottom: .6rem; }
.faq__media { position: relative; }
/* Rotating badge on the FAQ image, top-right */
.spin-badge--tr { left: auto; right: -14px; top: -20px; transform: none; width: clamp(84px, 9vw, 112px); }
/* Avatar row in the rating card */
.faq__avatars { display: flex; margin: 0 0 .75rem; }
.faq__av { width: 32px; height: 32px; border-radius: 50%; border: 2px solid var(--forest-900); margin-left: -9px; background: linear-gradient(150deg, var(--lime-400), var(--green-500)); }
.faq__av:first-child { margin-left: 0; }
.faq__av--2 { background: linear-gradient(150deg, var(--green-500), var(--forest-600)); }
.faq__av--3 { background: linear-gradient(150deg, var(--clay-500), var(--clay-600)); }
.faq__av--4 { background: linear-gradient(150deg, var(--lime-500), var(--green-500)); }
.faq__av--5 { background: linear-gradient(150deg, var(--forest-600), var(--green-500)); }
.faq__badge b { display: block; font-size: 1.9rem; font-weight: 700; letter-spacing: -.03em; line-height: 1; }
.faq__badge b span { font-size: .5em; color: rgba(255, 255, 255, .6); font-weight: 700; }
.faq__badge-txt { display: block; margin-top: .5rem; font-size: var(--fs-xs); color: rgba(255, 255, 255, .72); line-height: 1.5; }

.faq__body .sec-head__title { margin-bottom: clamp(1.25rem, 1rem + 1vw, 2rem); }
/* Card-style accordion (reference look) */
.faq__acc { border-top: 0; display: grid; gap: .75rem; }
.faq__acc .acc__item { border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--white); overflow: hidden; transition: box-shadow .3s var(--ease), border-color .3s var(--ease); }
.faq__acc .acc__item:has(.acc__btn[aria-expanded="true"]) { box-shadow: var(--shadow-md); border-color: color-mix(in srgb, var(--green-500) 30%, var(--line)); }
.faq__acc .acc__btn { padding: 1.15rem 1.35rem; font-size: var(--fs-base); gap: 1rem; }
.faq__acc .acc__mark { background: color-mix(in srgb, var(--clay-500) 12%, transparent); border-color: transparent; color: var(--clay-500); }
.faq__acc .acc__btn[aria-expanded="true"] .acc__mark { background: var(--clay-500); color: #fff; }
.faq__acc .acc__panel .acc__inner { padding: 0 1.35rem 1.35rem; }

/* --- Why Choose Us v2 (stats + feature | image collage + spin badge) --- */
.why2__grid { display: grid; gap: clamp(2rem, 1rem + 4vw, 4.5rem); align-items: center; }
@media (min-width: 960px) { .why2__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
@media (min-width: 960px) { .why2__grid:has(.why-360) { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); } }
.why-360 { margin: 0; position: sticky; top: 2rem; }
.why-360 img { display: block; width: 100%; height: auto; margin-inline: auto; border-radius: var(--r-lg); }
.why2__row { display: grid; gap: clamp(1rem, .7rem + 1.2vw, 1.75rem); }
@media (min-width: 560px) { .why2__row { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: stretch; } }
.why2__stats {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 1rem;
	padding: clamp(1.25rem, 1rem + 1vw, 1.75rem);
	background: var(--paper-2);
	border-radius: var(--r-lg);
}
.why2-stat b { display: block; font-family: var(--font-display); font-size: clamp(1.75rem, 1.3rem + 1.8vw, 2.5rem); font-weight: 700; letter-spacing: -.04em; line-height: 1; color: var(--forest-700); }
.why2-stat span { display: block; margin-top: .4rem; font-size: var(--fs-sm); font-weight: 600; color: var(--ink-700); line-height: 1.35; }
.why2-stat + .why2-stat { padding-top: 1rem; border-top: 1px solid var(--line); }
.why2__feature { display: flex; flex-direction: column; }
.why2-feat__icon { width: 54px; height: 54px; display: grid; place-items: center; border-radius: 50%; background: linear-gradient(150deg, var(--lime-400), var(--green-500)); color: #fff; box-shadow: 0 10px 22px -8px rgba(47, 158, 91, .55); margin-bottom: 1rem; }
.why2-feat__title { font-size: var(--fs-xl); font-weight: 700; letter-spacing: -.02em; }
.why2-feat__text { margin-top: .5rem; font-size: var(--fs-sm); color: var(--muted); line-height: 1.6; }
.why2__feature .checks li { font-size: var(--fs-sm); }

/* Image collage */
.why-collage {
	position: relative;
	display: grid;
	grid-template-columns: 1.25fr 1fr;
	grid-template-rows: repeat(2, minmax(0, 1fr));
	gap: clamp(.75rem, .5rem + .8vw, 1.15rem);
	aspect-ratio: 1 / 1;
}
.why-collage__cell { margin: 0; overflow: hidden; border-radius: var(--r-lg); background: var(--forest-700); }
.why-collage__cell img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s var(--ease-out); }
.why-collage__cell:hover img { transform: scale(1.06); }
.why-collage__main { grid-row: 1 / span 2; border-radius: var(--r-xl); }
.why-collage__dots {
	position: absolute;
	left: -14px; bottom: 14%;
	width: 96px; height: 70px;
	background-image: radial-gradient(color-mix(in srgb, var(--green-500) 55%, transparent) 2px, transparent 2.5px);
	background-size: 14px 14px;
	z-index: 3;
}

/* Rotating "Contact Us" badge */
.spin-badge {
	position: absolute;
	left: calc(1.25 / 2.25 * 100%);
	top: 50%;
	transform: translate(-50%, -50%);
	width: clamp(96px, 12vw, 128px);
	aspect-ratio: 1;
	z-index: 4;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--lime-500);
	box-shadow: var(--shadow-lg);
	text-decoration: none;
	color: var(--forest-900);
}
.spin-badge__ring { position: absolute; inset: 0; width: 100%; height: 100%; animation: spin 14s linear infinite; }
.spin-badge__ring text { font-size: 11.5px; font-weight: 700; letter-spacing: .5px; fill: var(--forest-900); text-transform: uppercase; }
.spin-badge__center { position: relative; z-index: 1; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; background: var(--forest-900); color: var(--lime-500); transition: transform .3s var(--ease-out); }
.spin-badge:hover .spin-badge__center { transform: rotate(-45deg); }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spin-badge__ring { animation: none; } }

/* --- Why Choose Us --- */
.why { position: relative; }
.why__head { display: grid; gap: 1.5rem; align-items: end; margin-bottom: clamp(1.75rem, 1.2rem + 2vw, 3rem); }
@media (min-width: 820px) { .why__head { grid-template-columns: minmax(0, 1.4fr) auto; } .why__cta { justify-self: end; } }
.why__body { display: grid; gap: clamp(1.25rem, .8rem + 2vw, 2.25rem); align-items: stretch; }
@media (min-width: 900px) { .why__body { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); } }
.why__media { position: relative; }
.why__media .media { height: 100%; }
.why__panel {
	display: grid;
	gap: clamp(.75rem, .5rem + .8vw, 1.15rem);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr));
	padding: clamp(1rem, .7rem + 1vw, 1.5rem);
	background: var(--paper-2);
	border-radius: var(--r-xl);
}
.why-card {
	display: flex;
	flex-direction: column;
	gap: .6rem;
	padding: clamp(1.25rem, 1rem + 1vw, 1.75rem) clamp(1rem, .8rem + .8vw, 1.35rem);
	background: var(--white);
	border-radius: var(--r-lg);
	text-align: center;
	align-items: center;
	transition: transform .35s var(--ease-out), box-shadow .35s var(--ease);
}
.why-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); }
.why-card__icon {
	width: 60px; height: 60px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--forest-700);
	color: #fff;
	transition: transform .4s var(--ease-out), background .3s var(--ease);
}
.why-card:hover .why-card__icon { background: var(--green-500); transform: translateY(-2px) scale(1.05); }
.why-card__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; }
.why-card__text { font-size: var(--fs-sm); color: var(--muted); line-height: 1.55; }

/* --- Blog / programme cards --- */
.bcard { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--shadow-sm); transition: transform .4s var(--ease-out), box-shadow .4s var(--ease), border-color .4s var(--ease); }
.bcard:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: color-mix(in srgb, var(--green-500) 26%, var(--line)); }
.bcard__media { display: block; padding: .85rem .85rem 0; }
.bcard__media .media { border-radius: var(--r-lg); overflow: hidden; }
.bcard__media img { transition: transform 1.1s var(--ease-out); }
.bcard:hover .bcard__media img { transform: scale(1.06); }
.bcard__body { flex: 1 1 auto; padding: 1.15rem 1.35rem 1.5rem; display: flex; flex-direction: column; gap: .65rem; }
.bcard__cat { display: inline-flex; align-items: center; gap: .45rem; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--clay-500); }
.bcard__cat .icon { color: var(--green-500); }
.bcard__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.28; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.bcard__title a { color: inherit; text-decoration: none; }
.bcard:hover .bcard__title a { color: var(--forest-600); }
.bcard__excerpt { font-size: var(--fs-base); color: var(--muted); line-height: 1.55; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; }
.bcard__more { margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--line); display: inline-flex; align-items: center; gap: .5rem; font-size: var(--fs-sm); font-weight: 700; color: var(--forest-800); text-decoration: none; }
.bcard__more .icon { transition: transform .3s var(--ease-out); }
.bcard:hover .bcard__more .icon { transform: translate(3px, -3px); }

/* --- Testimonials (dark, textured) --- */
.tst.tst--dark {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	color: #fff;
	background:
		radial-gradient(70% 90% at 88% 0%, rgba(123, 224, 75, .16), transparent 55%),
		url(../img/graphics/dark-section-bg-image.png) center / cover no-repeat,
		linear-gradient(160deg, var(--forest-800), var(--forest-900));
}
.tst--dark .sec-head__title { color: #fff; }
.tst--dark .sec-head__title em { color: var(--lime-400); }
.tst--dark .sec-head__intro { color: rgba(255, 255, 255, .74); }
.tst--dark .disclaimer { background: rgba(255, 255, 255, .06); color: rgba(255, 255, 255, .7); border-left-color: var(--lime-500); }
.tst {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	background:
		radial-gradient(90% 70% at 15% 0%, var(--mint-100), transparent 60%),
		url(../img/graphics/why-choose-bg-image.png) center / 26px repeat,
		var(--mint-50);
}
.tst-carousel { position: relative; }
.tst-carousel__track {
	display: flex;
	gap: 1.5rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	padding: 8px 2px 32px;
	cursor: grab;
}
.tst-carousel__track::-webkit-scrollbar { display: none; }
.tst-carousel__track.is-grabbing { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; }
.tst-card {
	flex: 0 0 100%;                        /* whole cards — no cropped last card */
	scroll-snap-align: start;
	margin: 0;
	color: var(--ink-900);                 /* dark text on the white card (section is dark) */
	display: flex;
	flex-direction: column;
	gap: 1.15rem;
	padding: clamp(1.6rem, 1.2rem + 1.6vw, 2.4rem);
	background: var(--white);
	border-radius: var(--r-xl);
	box-shadow: 0 30px 60px -24px rgba(0, 0, 0, .45);
	transition: transform .4s var(--ease-out), box-shadow .4s var(--ease);
}
.tst-card:hover { transform: translateY(-5px); box-shadow: 0 36px 70px -22px rgba(0, 0, 0, .5); }
@media (min-width: 620px) { .tst-card { flex-basis: calc((100% - 1.5rem) / 2); } }
@media (min-width: 1000px) { .tst-card { flex-basis: calc((100% - 2 * 1.5rem) / 3); } }
.tst-card__stars { display: inline-flex; gap: .25rem; color: var(--lime-500); align-self: flex-start; }
.tst-card__quote { margin: 0; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.015em; line-height: 1.45; color: var(--forest-900); }
.tst-card__foot { margin-top: auto; padding-top: 1.15rem; border-top: 1px solid var(--line); display: flex; align-items: center; gap: .85rem; }
.tst-card__avatar { width: 48px; height: 48px; flex: none; display: grid; place-items: center; border-radius: 50%; background: linear-gradient(150deg, var(--lime-400), var(--green-500)); color: #fff; font-weight: 700; font-size: 1.1rem; }
.tst-card__foot b { display: block; font-size: var(--fs-base); font-weight: 700; letter-spacing: -.01em; color: var(--forest-900); }
.tst-card__foot span span { display: block; font-size: var(--fs-sm); color: var(--muted); margin-top: .1rem; }
/* Side arrows flanking the testimonial carousel */
.tst-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 4;
	background: var(--white);
	border-color: var(--white);
	color: var(--forest-800);
	box-shadow: var(--shadow-md);
	width: 52px; height: 52px;
}
.tst-arrow:hover:not(:disabled) { background: var(--forest-800); color: #fff; border-color: var(--forest-800); }
.tst-arrow--prev { left: calc(var(--gutter) * -1 + .25rem); }
.tst-arrow--next { right: calc(var(--gutter) * -1 + .25rem); }
.tst-arrow:disabled { opacity: 0; pointer-events: none; }
@media (max-width: 1180px) { .tst-arrow--prev { left: -.5rem; } .tst-arrow--next { right: -.5rem; } }
@media (max-width: 680px) { .tst-arrow { display: none; } }

/* --- Value image cards (Vision / Mission / Purpose) with hover reveal --- */
.vgrid { display: grid; gap: clamp(1rem, .7rem + 1vw, 1.5rem); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 760px) { .vgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.vcard {
	position: relative;
	display: block;
	/* min-height, not height: the body is in normal flow so longer copy grows
	   the card instead of spilling over the icon. Grid stretch keeps the pair
	   level. */
	min-height: clamp(300px, 25vw, 400px);
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	border-radius: var(--r-xl);
	overflow: hidden;
	background: var(--forest-700);
	text-decoration: none;
	color: #fff;
	box-shadow: var(--shadow-md);
	isolation: isolate;
}
.vcard__img {
	position: absolute;
	inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
	z-index: -2;
	transition: transform 1.1s var(--ease-out);
}
.vcard::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(to top, rgba(4, 24, 10, .9) 8%, rgba(4, 24, 10, .35) 45%, rgba(4, 24, 10, .12) 100%);
	transition: background .45s var(--ease);
}
.vcard:hover .vcard__img { transform: scale(1.1) rotate(1.5deg); }
/* Scoped through .vgrid so it outranks [data-reveal].is-in{transform:none},
   which sits later in this file and would otherwise cancel the lift. */
.vgrid .vcard { transition: transform .45s var(--ease-out), box-shadow .45s var(--ease-out); }
.vgrid .vcard:hover { transform: translateY(-8px); box-shadow: 0 28px 52px -22px rgba(4, 24, 10, .6); }
.vcard:hover::after { background: linear-gradient(to top, rgba(4, 24, 10, .94) 12%, rgba(4, 24, 10, .55) 55%, rgba(4, 24, 10, .25) 100%); }

.vcard__icon {
	position: absolute;
	top: 1.15rem; left: 1.15rem;
	width: 54px; height: 54px;
	display: grid;
	place-items: center;
	border-radius: 16px;
	background: var(--green-500);
	color: #fff;
	box-shadow: 0 10px 24px -8px rgba(0, 0, 0, .5);
	transition: transform .4s var(--ease-out);
}
.vcard--a .vcard__icon { background: linear-gradient(150deg, var(--lime-400), var(--green-500)); }
.vcard--b .vcard__icon { background: linear-gradient(150deg, var(--green-500), var(--forest-600)); }
.vcard--c .vcard__icon { background: linear-gradient(150deg, var(--clay-500), var(--clay-600)); }
.vcard:hover .vcard__icon { transform: translateY(-4px) rotate(-8deg) scale(1.06); }

.vcard__body { position: relative; z-index: 1; margin-top: auto; padding: clamp(1.35rem, 1rem + 1vw, 1.9rem); padding-top: clamp(4.5rem, 3.5rem + 2vw, 5.5rem); display: flex; flex-direction: column; }
/* Accent rule above the title. It holds its space at rest, so scaling it
   in on hover never shifts the text below. */
.vcard__body::before {
	content: "";
	width: 44px; height: 3px;
	margin-bottom: .8rem;
	border-radius: 2px;
	background: var(--lime-400);
	transform: scaleX(.25);
	transform-origin: left;
	opacity: .5;
	transition: transform .5s var(--ease-out), opacity .35s var(--ease);
}
.vcard:hover .vcard__body::before { transform: scaleX(1); opacity: 1; }
.vcard__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.3; transition: transform .45s var(--ease-out); }
.vcard:hover .vcard__title, .vcard:hover .vcard__text { transform: translateY(-3px); }
@media (prefers-reduced-motion: reduce) {
	.vcard, .vcard__img, .vcard__icon, .vcard__title, .vcard__text, .vcard__body::before { transition: none; }
	.vgrid .vcard:hover, .vcard:hover .vcard__img, .vcard:hover .vcard__title, .vcard:hover .vcard__text { transform: none; }
}
/* Description shown by default. */
.vcard__text {
	font-size: var(--fs-box);
	color: rgba(255, 255, 255, .85);
	line-height: 1.55;
	margin-top: .6rem;
	transition: transform .45s var(--ease-out);
}
.vcard__more {
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	margin-top: 1rem;
	font-size: var(--fs-sm);
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--lime-400);
}
.vcard__more .icon { transition: transform .3s var(--ease-out); }
.vcard:hover .vcard__more .icon { transform: translateX(4px); }
.no-js .vcard__text { max-height: none; opacity: 1; margin-top: .6rem; }

/* --- App promotion (rich dark panel) --- */
.app { background: var(--white); }
.app__panel {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	border-radius: var(--r-xl);
	padding: clamp(1.5rem, 1rem + 2vw, 2.75rem) clamp(1.75rem, 1rem + 4vw, 4rem);
	background:
		radial-gradient(90% 120% at 90% 0%, rgba(123, 224, 75, .16), transparent 55%),
		linear-gradient(160deg, var(--forest-800), var(--forest-900));
	color: #fff;
}
.app__inner { position: relative; z-index: 1; display: grid; gap: clamp(1.5rem, 1rem + 3vw, 3.5rem); align-items: center; }
@media (min-width: 900px) { .app__inner { grid-template-columns: minmax(0, 40fr) minmax(0, 60fr); } }

.app__visual { position: relative; display: grid; place-items: center; min-height: 300px; }
.app__glow {
	position: absolute;
	width: min(115%, 480px);
	aspect-ratio: 1;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(123, 224, 75, .32), transparent 62%);
	z-index: 0;
	filter: blur(4px);
}
.app__phone {
	position: relative;
	z-index: 1;
	width: min(72%, 300px);
	filter: drop-shadow(0 40px 70px rgba(0, 0, 0, .45));
	transform: translateY(var(--parallax, 0));
}

/* Phone cross-fade slider */
.phone-slider { position: relative; z-index: 1; width: 100%; display: flex; flex-direction: column; align-items: center; gap: 1.1rem; }
.phone-slider__stage { position: relative; width: min(76%, 290px); aspect-ratio: 389 / 575; }
.fade-slide {
	position: absolute;
	inset: 0;
	width: 100%; height: 100%;
	object-fit: contain;
	opacity: 0;
	transform: scale(.98);
	transition: opacity .7s var(--ease), transform .7s var(--ease-out);
	filter: drop-shadow(0 40px 70px rgba(0, 0, 0, .5));
}
.fade-slide.is-active { opacity: 1; transform: none; }
.phone-slider__dots { display: flex; gap: .5rem; }
.fade-dot { width: 9px; height: 9px; padding: 0; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .3); transition: background .25s var(--ease), transform .25s var(--ease); cursor: pointer; }
.fade-dot[aria-selected="true"] { background: var(--lime-500); transform: scale(1.25); }

/* QR download card */
.qr-card {
	display: flex;
	gap: 1.1rem;
	align-items: center;
	margin-top: 1.5rem;
	padding: 1rem;
	background: rgba(255, 255, 255, .07);
	border: 1px solid rgba(255, 255, 255, .14);
	border-radius: var(--r-lg);
}
.qr-card__code { flex: none; width: 108px; height: 108px; padding: 8px; background: #fff; border-radius: var(--r-md); }
.qr-card__code img { width: 100%; height: 100%; display: block; }
.qr-card__text { display: flex; flex-direction: column; gap: .3rem; }
.qr-card__text b { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; color: #fff; }
.qr-card__text span { font-size: var(--fs-sm); color: rgba(255, 255, 255, .72); line-height: 1.45; }
.qr-card .app__store { margin-top: .4rem; align-self: flex-start; }
.qr-card .app__store img { height: 42px; border-radius: 7px; }
@media (max-width: 480px) { .qr-card { flex-direction: column; align-items: flex-start; } }
.app__qr {
	position: absolute;
	z-index: 2;
	right: clamp(4px, 3vw, 26px);
	bottom: 4%;
	width: min(32%, 138px);
	border-radius: var(--r-md);
	box-shadow: 0 18px 40px -10px rgba(0, 0, 0, .5);
}
/* Floating category chips around the phone */
.app__chip {
	position: absolute;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	padding: .5rem .85rem .5rem .5rem;
	background: rgba(255, 255, 255, .96);
	color: var(--forest-900);
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	font-weight: 700;
	box-shadow: 0 12px 28px -10px rgba(0, 0, 0, .5);
	backdrop-filter: blur(4px);
}
.app__chip-ic { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: linear-gradient(150deg, var(--lime-400), var(--green-500)); color: #fff; flex: none; }
.app__chip--1 { top: 12%; left: 2%; }
.app__chip--2 { top: 30%; right: 0%; }
.app__chip--3 { bottom: 24%; left: -2%; }
.app__chip--4 { bottom: 6%; right: 18%; }
@media (max-width: 560px) { .app__chip--2, .app__chip--4 { display: none; } }

.app__points { list-style: none; margin: 1.6rem 0 0; padding: 0; display: grid; gap: .7rem; }
.app__points li { margin: 0; display: flex; gap: .7rem; align-items: center; font-size: var(--fs-base); font-weight: 600; color: rgba(255, 255, 255, .92); }
.app__tick { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: rgba(123, 224, 75, .18); color: var(--lime-400); flex: none; }

.app-invite {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
	margin-top: 1.75rem;
	max-width: 480px;
}
.app-invite input[type="email"] {
	flex: 1 1 220px;
	min-width: 0;
	padding: .95rem 1.25rem;
	background: rgba(255, 255, 255, .1);
	border: 1px solid rgba(255, 255, 255, .22);
	border-radius: var(--r-pill);
	font-size: var(--fs-base);
	color: #fff;
	transition: border-color .22s var(--ease), box-shadow .22s var(--ease), background .22s var(--ease);
}
.app-invite input[type="email"]::placeholder { color: rgba(255, 255, 255, .6); }
.app-invite input[type="email"]:focus { outline: none; background: rgba(255, 255, 255, .16); border-color: var(--lime-500); box-shadow: 0 0 0 3px rgba(123, 224, 75, .2); }
.app-invite .btn { flex: none; }

.app__stores { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin-top: 1.5rem; }
.app__store { display: inline-flex; border-radius: 10px; overflow: hidden; transition: transform .3s var(--ease-out); }
.app__store:hover { transform: translateY(-2px); }
.app__store img { height: 46px; width: auto; display: block; }
.app__scan { display: inline-flex; align-items: center; gap: .45rem; font-size: var(--fs-sm); color: rgba(255, 255, 255, .7); }
.app__scan .icon { color: var(--lime-400); }

/* --- Collection-centre finder v2 (Leaflet map + searchable list) --- */
.finder2__search {
	display: flex;
	align-items: center;
	gap: .7rem;
	max-width: 680px;
	margin: 0 auto clamp(1.5rem, 1rem + 2vw, 2.5rem);
	padding: .95rem 1.35rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-pill);
	box-shadow: var(--shadow-md);
}
.finder2__search .icon { color: var(--forest-600); flex: none; }
.finder2__search input { flex: 1; min-width: 0; border: 0; background: none; outline: none; font-size: var(--fs-base); }
.finder2__count { flex: none; font-size: var(--fs-sm); font-weight: 700; color: var(--forest-700); background: var(--mint-100); padding: .35rem .8rem; border-radius: var(--r-pill); }

.finder2__grid { display: grid; gap: clamp(1.25rem, .8rem + 2vw, 2rem); align-items: stretch; }
@media (min-width: 900px) { .finder2__grid { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); } }

.finder2__list {
	display: flex;
	flex-direction: column;
	gap: .85rem;
	max-height: 560px;
	overflow-y: auto;
	padding-right: .35rem;
	scrollbar-width: thin;
}
.finder2__list .centre-card {
	padding: 1.15rem 1.25rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	box-shadow: var(--shadow-sm);
	transition: border-color .25s var(--ease), box-shadow .25s var(--ease), transform .25s var(--ease-out);
}
.finder2__list .centre-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.finder2__list .centre-card.is-active { border-color: var(--green-500); box-shadow: 0 0 0 3px color-mix(in srgb, var(--green-500) 18%, transparent); }
.centre-card__region { display: inline-block; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--clay-500); margin-bottom: .35rem; }
.centre-card__name { font-size: var(--fs-base); font-weight: 700; letter-spacing: -.01em; }
.centre-card__addr, .centre-card__phone, .centre-card__poc { margin-top: .5rem; display: flex; align-items: flex-start; gap: .5rem; font-size: var(--fs-sm); color: var(--muted); }
.centre-card__addr .icon, .centre-card__phone .icon, .centre-card__poc .icon { color: var(--forest-600); flex: none; margin-top: .2em; }
.centre-card__phone a { color: var(--forest-700); text-decoration: none; font-weight: 600; }
.centre-card__actions { display: flex; flex-wrap: wrap; gap: 1.25rem; margin-top: .85rem; }
.centre-card__locate { background: none; border: 0; cursor: pointer; }
.finder2__empty { padding: 1.25rem; text-align: center; font-size: var(--fs-sm); color: var(--muted); }

.finder2__map {
	min-height: 420px;
	height: 100%;
	border-radius: var(--r-xl);
	overflow: hidden;
	border: 1px solid var(--line);
	box-shadow: var(--shadow-md);
	background: var(--mint-100);
	z-index: 0;
}
@media (max-width: 899px) { .finder2__map { min-height: 340px; } }
.leaflet-container { font-family: var(--font-sans); }
.c2g-pin { background: none; border: 0; filter: drop-shadow(0 4px 5px rgba(6, 42, 27, .35)); transition: transform .2s var(--ease-out); }
.c2g-pin:hover { transform: scale(1.12); z-index: 1000 !important; }
.leaflet-popup-content-wrapper { border-radius: var(--r-md); }
.leaflet-popup-content { font-size: 13px; line-height: 1.45; }

/* --- Collection-centre finder --- */
.finder__grid { display: grid; gap: clamp(1.5rem, 1rem + 2vw, 2.5rem); align-items: start; }
@media (min-width: 900px) { .finder__grid { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); } }
.finder__panel { position: relative; z-index: 1; }
.finder__search { display: flex; align-items: center; gap: .6rem; padding: .85rem 1.1rem; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-pill); box-shadow: var(--shadow-sm); }
.finder__search .icon { color: var(--forest-600); flex: none; }
.finder__search input { flex: 1; min-width: 0; border: 0; background: none; outline: none; font-size: var(--fs-base); }
.finder__states {
	margin-top: 1rem;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: .5rem;
	max-height: 420px;
	overflow-y: auto;
	padding-right: .25rem;
	scrollbar-width: thin;
}
.finder__state {
	display: flex;
	align-items: center;
	gap: .45rem;
	padding: .6rem .8rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-md);
	font-size: var(--fs-sm);
	font-weight: 600;
	text-align: left;
	transition: border-color .2s var(--ease), background .2s var(--ease), color .2s var(--ease);
}
.finder__state .icon { color: var(--clay-500); flex: none; }
.finder__state span:first-of-type { flex: 1; }
.finder__count { font-size: var(--fs-xs); font-weight: 700; color: var(--forest-600); background: var(--mint-100); padding: .05rem .4rem; border-radius: var(--r-pill); }
.finder__state:hover { border-color: var(--green-500); }
.finder__state.is-active { background: var(--forest-800); border-color: var(--forest-800); color: #fff; }
.finder__state.is-active .icon { color: var(--lime-400); }
.finder__state.is-active .finder__count { background: rgba(255, 255, 255, .18); color: #fff; }
.finder__empty { grid-column: 1 / -1; margin: .5rem 0; font-size: var(--fs-sm); color: var(--muted); }

.finder__result { position: relative; z-index: 1; }
.finder__map { border-radius: var(--r-lg); overflow: hidden; margin-bottom: 1.25rem; }
.finder__map img { width: 100%; height: auto; display: block; }
.finder__region { display: inline-flex; align-items: center; gap: .5rem; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; margin-bottom: .85rem; }
.finder__region .icon { color: var(--clay-500); }
.finder__list { display: grid; gap: .85rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.centre-card { padding: 1.15rem 1.25rem; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-sm); }
.centre-card__name { font-size: var(--fs-base); font-weight: 700; letter-spacing: -.01em; }
.centre-card__addr, .centre-card__phone, .centre-card__poc { margin-top: .5rem; display: flex; align-items: flex-start; gap: .5rem; font-size: var(--fs-sm); color: var(--muted); }
.centre-card__addr .icon, .centre-card__phone .icon, .centre-card__poc .icon { color: var(--forest-600); flex: none; margin-top: .2em; }
.centre-card__phone a { color: var(--forest-700); text-decoration: none; font-weight: 600; }
.centre-card__map { margin-top: .75rem; }

/* --- Coverage map (legacy) --- */
.coverage__inner { display: grid; gap: clamp(2rem, 1rem + 4vw, 4rem); align-items: center; }
@media (min-width: 900px) { .coverage__inner { grid-template-columns: minmax(0, 1fr) minmax(0, .9fr); } }
.coverage__grouptitle { margin: 1.5rem 0 .75rem; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--forest-700); }
.coverage__states {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: .5rem;
}
.coverage__state--ut .icon { color: var(--green-500); }
.coverage__states li { margin: 0; display: flex; }
.coverage__state {
	display: flex;
	align-items: center;
	gap: .4rem;
	width: 100%;
	height: 100%;              /* fill the grid cell so every chip matches its row */
	min-height: 46px;
	padding: .5rem .85rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-md);
	font-size: var(--fs-sm);
	font-weight: 600;
	line-height: 1.25;
	transition: transform .25s var(--ease-out), border-color .25s var(--ease), color .25s var(--ease);
}
.coverage__state .icon { color: var(--clay-500); flex: none; }
.coverage__state:hover { transform: translateY(-2px); border-color: var(--green-500); color: var(--forest-700); }
.coverage__map { position: relative; }
.coverage__map img { width: 100%; height: auto; filter: drop-shadow(0 24px 48px rgba(6, 42, 27, .14)); }

/* --------------------------------------------------------------------------
   12. Timeline — horizontal scroll-snap rail
   -------------------------------------------------------------------------- */
.timeline { position: relative; }
.timeline__rail {
	display: flex;
	gap: 0;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	padding-bottom: .5rem;
	margin-inline: calc(var(--gutter) * -1);
	padding-inline: var(--gutter);
}
.timeline__rail::-webkit-scrollbar { display: none; }
.tl-item {
	flex: 0 0 min(85vw, 330px);
	scroll-snap-align: start;
	padding: 0 1.75rem 0 0;
	position: relative;
}
.tl-item::before {
	content: "";
	position: absolute;
	left: 0; right: 0;
	top: 13px;
	height: 2px;
	background: var(--line);
}
.tl-item:last-child::before { right: 1.75rem; }
.tl-item__dot {
	position: relative;
	width: 28px; height: 28px;
	border-radius: 50%;
	border: 2px solid var(--forest-600);
	background: var(--paper);
	display: grid;
	place-items: center;
	margin-bottom: 1.25rem;
	transition: background .3s var(--ease), transform .3s var(--ease-out);
}
.tl-item__dot::after { content: ""; width: 9px; height: 9px; border-radius: 50%; background: var(--forest-600); transition: background .3s var(--ease); }
.tl-item:hover .tl-item__dot { transform: scale(1.15); }
.tl-item:nth-child(4n+2) .tl-item__dot { border-color: var(--clay-500); }
.tl-item:nth-child(4n+2) .tl-item__dot::after { background: var(--clay-500); }
.tl-item:nth-child(4n+3) .tl-item__dot { border-color: var(--lime-500); }
.tl-item:nth-child(4n+3) .tl-item__dot::after { background: var(--lime-500); }
/* Milestone card */
.tl-card {
	margin-right: 1.75rem;
	padding: clamp(1.25rem, 1rem + 1vw, 1.75rem);
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	box-shadow: var(--shadow-sm);
	position: relative;
	overflow: hidden;
	transition: transform .4s var(--ease-out), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
.tl-card::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 4px; background: linear-gradient(90deg, var(--lime-500), var(--green-500)); transform: scaleX(0); transform-origin: left; transition: transform .5s var(--ease-out); }
.tl-item:hover .tl-card { box-shadow: var(--shadow-md); border-color: color-mix(in srgb, var(--green-500) 26%, var(--line)); }
.tl-item:hover .tl-card::before { transform: scaleX(1); }
.tl-item:nth-child(4n+2) .tl-card::before { background: linear-gradient(90deg, var(--clay-500), var(--clay-600)); }
.tl-item__year { font-family: var(--font-display); font-size: 2.25rem; font-weight: 700; line-height: 1; letter-spacing: -.04em; color: var(--forest-700); }
.tl-item:nth-child(4n+2) .tl-item__year { color: var(--clay-500); }
.tl-item__title { margin-top: .6rem; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.015em; line-height: 1.25; color: var(--fg); }
.tl-item__text { margin-top: .5rem; font-size: var(--fs-sm); color: var(--muted); line-height: 1.6; }

.section--forest .tl-item::before { background: rgba(255, 255, 255, .18); }
.section--forest .tl-item__dot { background: var(--forest-800); border-color: var(--lime-500); }
.section--forest .tl-item__dot::after { background: var(--lime-500); }
.section--forest .tl-item__year { color: #fff; }
.section--forest .tl-item__text { color: rgba(255, 255, 255, .66); }

.rail-nav { display: flex; gap: .5rem; margin-top: 2rem; }
.rail-btn {
	width: 46px; height: 46px;
	display: grid;
	place-items: center;
	background: transparent;
	border: 1px solid var(--line);
	border-radius: 50%;
	color: inherit;
	transition: background .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease), opacity .25s var(--ease);
}
.rail-btn:hover:not(:disabled) { background: var(--forest-800); color: #fff; border-color: var(--forest-800); }
.section--forest .rail-btn:hover:not(:disabled) { background: #fff; color: var(--forest-900); border-color: #fff; }
.rail-btn:disabled { opacity: .3; cursor: not-allowed; }
.rail-btn--prev .icon { transform: rotate(180deg); }

/* --------------------------------------------------------------------------
   13. Partner marquee
   -------------------------------------------------------------------------- */
.marquee {
	overflow: hidden;
	mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.marquee__track {
	display: flex;
	gap: clamp(2rem, 1rem + 3vw, 4rem);
	width: max-content;
	animation: slide var(--marquee-dur, 22s) linear infinite;
	will-change: transform;
}
.marquee:hover .marquee__track,
.marquee.is-paused .marquee__track { animation-play-state: paused; }
.marquee--reverse .marquee__track { animation-direction: reverse; }
/* Gap between the two client logo rows. */
.marquee.marquee--reverse { margin-top: 15px; }
@keyframes slide { to { transform: translateX(-50%); } }

.logo-chip {
	flex: none;
	height: 74px;
	min-width: 148px;
	padding: 0 1.5rem;
	display: grid;
	place-items: center;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-md);
	font-weight: 700;
	font-size: .9375rem;
	letter-spacing: -.01em;
	color: var(--ink-400);
	transition: color .3s var(--ease), border-color .3s var(--ease), transform .3s var(--ease-out);
}
.logo-chip:hover { color: var(--forest-700); border-color: var(--forest-600); transform: translateY(-3px); }
/* Client logos stay in brand colour — these are the marks partners recognise. */
.logo-chip img { max-height: 38px; width: auto; object-fit: contain; transition: transform .3s var(--ease-out); }
.logo-chip:hover img { transform: scale(1.06); }

/* Static logo wall */
.logo-wall {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: 1px;
	background: var(--line);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	overflow: hidden;
}
.logo-wall > * { background: var(--white); border: 0; border-radius: 0; min-width: 0; }
.logo-wall > *:hover { transform: none; background: var(--paper); }

/* --------------------------------------------------------------------------
   14. Board
   -------------------------------------------------------------------------- */
.board-grid { display: grid; gap: clamp(1.25rem, 1rem + 1vw, 2rem); grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.person { position: relative; text-align: left; }
.person__media { position: relative; border-radius: var(--r-lg); overflow: hidden; background: var(--forest-700); aspect-ratio: 4 / 5; }
.person__media .media { border-radius: 0; aspect-ratio: 4 / 5; height: 100%; }
.person__media::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 45%;
	background: linear-gradient(to top, rgba(6, 42, 27, .8), transparent);
	opacity: 0;
	transition: opacity .35s var(--ease);
}
.person:hover .person__media::after { opacity: 1; }
.person__name { margin-top: 1rem; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.25; }
.person__role { font-size: var(--fs-sm); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--clay-500); margin-top: .35rem; }
.person__bio { margin-top: .65rem; font-size: var(--fs-sm); color: var(--muted); line-height: 1.6; }
.person__open {
	position: absolute;
	inset: 0;
	background: none;
	border: 0;
	cursor: pointer;
	border-radius: var(--r-lg);
}
.person__open:focus-visible { outline-offset: 4px; }

/* Featured leader block */
.leader { display: grid; gap: clamp(1.75rem, 1rem + 3vw, 3.5rem); align-items: start; }
@media (min-width: 900px) { .leader { grid-template-columns: minmax(0, .75fr) minmax(0, 1.25fr); } }
.leader__quote {
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	font-weight: 600;
	font-style: italic;
	letter-spacing: -.02em;
	line-height: 1.28;
	color: var(--forest-700);
	margin: 0 0 1.5rem;
	padding-top: 1.5rem;
	border-top: 3px solid var(--clay-500);
	max-width: 26ch;
}
.section--forest .leader__quote { color: #fff; }
.leader__sign { margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.leader__sign b { display: block; font-size: var(--fs-lg); letter-spacing: -.02em; }
.leader__sign span { font-size: var(--fs-sm); color: var(--muted); }
.leader__more { max-height: 0; overflow: hidden; transition: max-height .5s var(--ease); }
.leader__more.is-open { max-height: 200rem; }
.leader__toggle {
	display: inline-flex; align-items: center; gap: .4rem;
	margin-top: 1.25rem; padding: .5rem 1.25rem;
	font: 600 var(--fs-sm)/1 var(--font-body);
	color: var(--forest-700); background: var(--forest-50);
	border: 1px solid var(--forest-200); border-radius: 999px;
	cursor: pointer; transition: background .2s, color .2s;
}
.leader__toggle:hover { background: var(--forest-100); }
.leader__toggle svg { transition: transform .3s var(--ease); }
.leader__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }

/* Sticky side columns */
.abt-collage--sticky { position: sticky; top: 6rem; }
@media (min-width: 900px) { .leader__img-col { position: sticky; top: 6rem; } }

/* --------------------------------------------------------------------------
   15. Modal (board bios, video)
   -------------------------------------------------------------------------- */
.modal {
	position: fixed;
	inset: 0;
	z-index: 300;
	display: grid;
	place-items: center;
	padding: var(--gutter);
	background: rgba(6, 42, 27, .62);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	opacity: 0;
	visibility: hidden;
	transition: opacity .3s var(--ease), visibility .3s;
}
.modal.is-open { opacity: 1; visibility: visible; }
.modal__panel {
	position: relative;
	width: min(760px, 100%);
	max-height: min(86svh, 780px);
	overflow-y: auto;
	overscroll-behavior: contain;
	background: var(--white);
	border-radius: var(--r-xl);
	padding: clamp(1.75rem, 1.2rem + 2vw, 3rem);
	box-shadow: var(--shadow-lg);
	transform: translateY(18px) scale(.98);
	transition: transform .4s var(--ease-out);
}
.modal.is-open .modal__panel { transform: none; }
.modal__close {
	position: absolute;
	top: 1rem; right: 1rem;
	width: 42px; height: 42px;
	display: grid;
	place-items: center;
	background: var(--paper-2);
	border: 0;
	border-radius: 50%;
	color: var(--ink-700);
	transition: background .25s var(--ease), transform .25s var(--ease);
}
.modal__close:hover { background: var(--forest-800); color: #fff; transform: rotate(90deg); }
.modal__head { display: grid; gap: 1.25rem; margin-bottom: 1.5rem; }
@media (min-width: 620px) { .modal__head { grid-template-columns: 180px minmax(0, 1fr); align-items: center; } }
/* Portraits are shown whole - never cropped to a square. */
.modal__head .media {
	border-radius: var(--r-lg);
	background: linear-gradient(158deg, var(--green-500), var(--forest-700));
	overflow: hidden;
}
.modal__head .media__img { object-fit: contain; object-position: bottom center; }
.modal__body { font-size: var(--fs-sm); color: var(--ink-700); }
.modal__body p + p { margin-top: 1em; }

/* --------------------------------------------------------------------------
   16. Accordion
   -------------------------------------------------------------------------- */
.accordion { border-top: none; }
.acc__item { border-bottom: 1px solid var(--line); }
.acc__btn {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	padding: 1.35rem 0;
	background: none;
	border: 0;
	text-align: left;
	font-size: var(--fs-lg);
	font-weight: 700;
	letter-spacing: -.015em;
	line-height: 1.35;
	color: inherit;
	transition: color .25s var(--ease);
}
.acc__btn:hover { color: var(--forest-600); }
.acc__mark {
	flex: none;
	width: 34px; height: 34px;
	display: grid;
	place-items: center;
	border: 1px solid var(--line);
	border-radius: 50%;
	transition: transform .35s var(--ease-out), background .25s var(--ease), color .25s var(--ease);
}
.acc__btn[aria-expanded="true"] .acc__mark { transform: rotate(135deg); background: var(--forest-800); color: #fff; border-color: var(--forest-800); }
.acc__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .38s var(--ease-out); }
.acc__panel[data-open="true"] { grid-template-rows: 1fr; }
.acc__panel > div { overflow: hidden; }
.acc__panel .acc__inner { padding-bottom: 1.5rem; color: var(--muted); max-width: 68ch; }

/* --------------------------------------------------------------------------
   17. Process / steps
   -------------------------------------------------------------------------- */
.steps { counter-reset: step; display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
@media (min-width: 700px) { .steps { grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); } }
.step { counter-increment: step; background: var(--white); padding: clamp(1.35rem, 1.1rem + .8vw, 1.85rem); position: relative; }
.step::before {
	content: counter(step, decimal-leading-zero);
	display: block;
	font-family: var(--font-display);
	font-size: 1.5rem;
	font-weight: 600;
	color: var(--lime-500);
	letter-spacing: -.03em;
	margin-bottom: .65rem;
}
.step b { display: block; font-size: var(--fs-base); font-weight: 700; letter-spacing: -.015em; margin-bottom: .35rem; }
.step span { font-size: var(--fs-sm); color: var(--muted); line-height: 1.55; }

/* Flow arrows */
.flow { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.flow__node {
	padding: .6rem 1.1rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	font-weight: 700;
	white-space: nowrap;
}
.flow__arrow { color: var(--lime-500); flex: none; }
.section--forest .flow__node { background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .18); }

/* --------------------------------------------------------------------------
   18. Feature list / checks
   -------------------------------------------------------------------------- */
.checks { list-style: none; margin: 0; padding: 0; display: grid; gap: .85rem; }
.checks li { margin: 0; display: flex; gap: .75rem; align-items: flex-start; font-size: var(--fs-base); }
.checks .icon { flex: none; margin-top: .3em; color: var(--green-500); }
.section--forest .checks .icon { color: var(--lime-400); }

.pills { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.pills li { margin: 0; }

/* Capability check-list — reads as features, not tappable buttons. */
.caps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem 1.5rem; }
@media (max-width: 560px) { .caps { grid-template-columns: 1fr; } }
.caps li { margin: 0; display: flex; align-items: flex-start; gap: .6rem; font-size: var(--fs-box); font-weight: 500; color: var(--ink-800); }
.caps__mark { flex: none; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: color-mix(in srgb, var(--green-500) 16%, transparent); color: var(--forest-700); }
.section--forest .caps li { color: #fff; }
.section--forest .caps__mark { background: rgba(255,255,255,.14); color: var(--lime-400); }
.pill {
	display: inline-block;
	padding: .45rem 1rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	font-weight: 600;
	transition: background .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease);
}
.pill:hover { background: var(--forest-800); border-color: var(--forest-800); color: #fff; }
/* Any dark ground: the default white chip would be invisible. */
.section--forest .pill,
.page-hero .pill,
.cta-band .pill {
	background: rgba(255, 255, 255, .1);
	border-color: rgba(255, 255, 255, .24);
	color: #fff;
}
.section--forest .pill:hover,
.page-hero .pill:hover,
.cta-band .pill:hover { background: #fff; color: var(--forest-900); border-color: #fff; }

/* --------------------------------------------------------------------------
   19. Article cards / listings
   -------------------------------------------------------------------------- */
.post-grid { display: grid; gap: clamp(1.5rem, 1rem + 1.5vw, 2.5rem); grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.post-card { position: relative; display: flex; flex-direction: column; gap: 1rem; }
.post-card .media { transition: transform .5s var(--ease-out); }
.post-card:hover .media { transform: scale(1.015); }
.post-card__meta { display: flex; flex-wrap: wrap; gap: .75rem; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--clay-500); }
.post-card__title { font-size: var(--fs-xl); font-weight: 700; letter-spacing: -.02em; line-height: 1.25; text-wrap: balance; }
.post-card:hover .post-card__title { color: var(--forest-600); }
.post-card__excerpt { font-size: var(--fs-sm); color: var(--muted); line-height: 1.6; }

/* Testimonials */
.quote-card {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
	padding: clamp(1.75rem, 1.3rem + 1.4vw, 2.5rem);
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	height: 100%;
}
.quote-card .icon--quote { color: var(--lime-500); }
.quote-card blockquote { margin: 0; font-family: var(--font-display); font-size: var(--fs-lg); font-weight: 500; line-height: 1.45; letter-spacing: -.015em; }
.quote-card figcaption { margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--line); font-size: var(--fs-sm); }
.quote-card figcaption b { display: block; }
.quote-card figcaption span { color: var(--muted); }

.disclaimer {
	margin-top: 1.5rem;
	padding: 1rem 1.25rem;
	background: color-mix(in srgb, var(--clay-500) 7%, transparent);
	border-left: 3px solid var(--clay-500);
	border-radius: 0 var(--r-sm) var(--r-sm) 0;
	font-size: var(--fs-sm);
	color: var(--ink-700);
}
.section--forest .disclaimer { background: rgba(255, 255, 255, .07); color: rgba(255, 255, 255, .74); }

/* --------------------------------------------------------------------------
   20. Forms
   -------------------------------------------------------------------------- */
.form { display: grid; gap: 1.15rem; }
.form__row { display: grid; gap: 1.15rem; }
@media (min-width: 620px) { .form__row--2 { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.field { display: grid; gap: .45rem; }
.field label { font-size: var(--fs-sm); font-weight: 700; letter-spacing: -.01em; }
.field label .req { color: var(--clay-500); }
.field input, .field select, .field textarea {
	width: 100%;
	padding: .85rem 1rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-md);
	font-size: var(--fs-base);
	transition: border-color .22s var(--ease), box-shadow .22s var(--ease);
}
.field textarea { min-height: 140px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus {
	outline: none;
	border-color: var(--forest-600);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--forest-600) 14%, transparent);
}
.field select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235C6B63' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; padding-right: 2.5rem; }
.form__note { font-size: var(--fs-sm); color: var(--muted); }
.honey { position: absolute; left: -9999px; opacity: 0; }

.form-msg { padding: 1rem 1.25rem; border-radius: var(--r-md); font-size: var(--fs-sm); }
.form-msg--ok { background: color-mix(in srgb, var(--green-500) 12%, transparent); color: var(--forest-800); }
.form-msg--err { background: color-mix(in srgb, var(--clay-500) 12%, transparent); color: var(--clay-600); }

/* Contact tiles */
.contact-tile {
	display: flex;
	gap: 1rem;
	padding: 1.35rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	text-decoration: none;
	transition: border-color .25s var(--ease), transform .25s var(--ease-out);
}
.contact-tile:hover { border-color: var(--forest-600); transform: translateY(-2px); }
.contact-tile .icon { color: var(--forest-600); flex: none; margin-top: .15em; }
.contact-tile b { display: block; font-size: var(--fs-sm); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.contact-tile span { font-size: var(--fs-lg); font-weight: 600; letter-spacing: -.02em; }

.map-frame { border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line); aspect-ratio: 16 / 10; background: var(--paper-2); }
.map-frame iframe { width: 100%; height: 100%; border: 0; display: block; }

/* --------------------------------------------------------------------------
   21. CTA band
   -------------------------------------------------------------------------- */
.cta-band {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	background: var(--forest-800);
	color: #fff;
}
.cta-band::before {
	content: "";
	position: absolute;
	right: -12%;
	top: -60%;
	width: 55%;
	aspect-ratio: 1;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(141, 198, 63, .28), transparent 62%);
	z-index: -1;
}
.cta-band__inner { display: grid; gap: 2rem; align-items: center; padding-block: clamp(2.25rem, 1.6rem + 2.4vw, 3.75rem); }
@media (min-width: 900px) { .cta-band__inner { grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr); } }
.cta-band__title { font-family: var(--font-display); font-size: var(--fs-h2); font-weight: 600; letter-spacing: -.03em; line-height: 1.06; text-wrap: balance; }
.cta-band__title em { font-style: italic; font-weight: 400; color: var(--lime-400); }

/* --------------------------------------------------------------------------
   22. Footer
   -------------------------------------------------------------------------- */
.site-footer { background: var(--forest-900); color: rgba(255, 255, 255, .72); padding-block: clamp(3rem, 2rem + 4vw, 5rem) 2rem; }
.site-footer a { text-decoration: none; }
.site-footer a:hover { color: var(--lime-400); }
.footer__logo-anim { display: flex; justify-content: center; margin-bottom: clamp(1.5rem, 1rem + 2vw, 3rem); }
.footer__logo-anim video { width: min(240px, 60vw); height: auto; border-radius: var(--r-lg); mix-blend-mode: screen; }
.footer__top { display: grid; gap: clamp(2rem, 1.2rem + 3vw, 4rem); }
@media (min-width: 900px) { .footer__top { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.2fr); } }
.footer__brand .brand__logo { height: 48px; }
.footer__blurb { margin-top: 1.25rem; font-size: var(--fs-sm); line-height: 1.65; max-width: 34ch; }
.footer__title { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: #fff; margin-bottom: 1.1rem; }
.footer__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; font-size: var(--fs-sm); }
.footer__list li { margin: 0; }
.socials { display: flex; gap: .6rem; margin-top: 1.5rem; }
.social {
	width: 40px; height: 40px;
	display: grid;
	place-items: center;
	border: 1px solid rgba(255, 255, 255, .18);
	border-radius: 50%;
	color: #fff;
	transition: background .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease), transform .25s var(--ease-out);
}
.social:hover { background: var(--lime-500); color: var(--forest-900); border-color: var(--lime-500); transform: translateY(-2px); }

.footer__bottom {
	margin-top: clamp(2.5rem, 2rem + 2vw, 4rem);
	padding-top: 1.5rem;
	border-top: 1px solid rgba(255, 255, 255, .12);
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	align-items: center;
	justify-content: space-between;
	font-size: var(--fs-sm);
}
.footer__legal { display: flex; flex-wrap: wrap; gap: 1.25rem; list-style: none; margin: 0; padding: 0; }
.footer__legal li { margin: 0; }

/* Oversized wordmark */
.footer__mark {
	margin-top: clamp(2rem, 1.5rem + 2vw, 3.5rem);
	font-family: var(--font-display);
	font-size: clamp(3.5rem, 1rem + 12vw, 170px);
	font-weight: 600;
	line-height: .82;
	letter-spacing: -.05em;
	color: rgba(255, 255, 255, .07);
	user-select: none;
	white-space: nowrap;
	overflow: hidden;
}

/* --------------------------------------------------------------------------
   23. Editor content (post/page body)
   -------------------------------------------------------------------------- */
.prose { max-width: 72ch; font-size: var(--fs-base); line-height: 1.75; color: var(--ink-700); }
.prose > * + * { margin-top: 1.15em; }
.prose h2 { font-family: var(--font-display); font-size: var(--fs-h3); font-weight: 600; color: var(--fg); margin-top: 2em; letter-spacing: -.02em; }
.prose h3 { font-size: var(--fs-xl); font-weight: 700; color: var(--fg); margin-top: 1.75em; }
.prose a { color: var(--forest-700); font-weight: 600; }
.prose img, .prose figure { border-radius: var(--r-lg); overflow: hidden; }
.prose blockquote {
	margin: 2em 0;
	padding-left: 1.5rem;
	border-left: 3px solid var(--lime-500);
	font-family: var(--font-display);
	font-size: var(--fs-h3);
	font-style: italic;
	line-height: 1.4;
	color: var(--fg);
}
.prose ul, .prose ol { padding-left: 1.3em; }
.prose code { background: var(--paper-2); padding: .15em .4em; border-radius: 4px; font-size: .9em; }
.prose table { width: 100%; border-collapse: collapse; font-size: var(--fs-base); }
.prose th, .prose td { padding: .75rem 1rem; border-bottom: 1px solid var(--line); text-align: left; }
.prose th { font-weight: 700; background: var(--paper-2); }

/* Pagination */
.pagination { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: var(--sp-8); }
.pagination .page-numbers {
	min-width: 44px; height: 44px;
	display: grid;
	place-items: center;
	padding: 0 .75rem;
	border: 1px solid var(--line);
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	font-weight: 700;
	text-decoration: none;
	transition: background .22s var(--ease), color .22s var(--ease), border-color .22s var(--ease);
}
.pagination .page-numbers:hover,
.pagination .page-numbers.current { background: var(--forest-800); color: #fff; border-color: var(--forest-800); }

/* --------------------------------------------------------------------------
   24. Scroll reveal
   -------------------------------------------------------------------------- */
[data-reveal] {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
	transition-delay: var(--delay, 0ms);
}
[data-reveal].is-in { opacity: 1; transform: none; }
.no-js [data-reveal] { opacity: 1; transform: none; }

/* --- Heading line reveal (reference-site signature) --- */
.rl-mask { display: block; overflow: hidden; padding-bottom: .04em; }
.rl-inner {
	display: inline-block;
	transform: translateY(112%);
	transition: transform .85s cubic-bezier(.16, 1, .3, 1);
	transition-delay: var(--d, 0ms);
	will-change: transform;
}
.rl-ready.is-in .rl-inner { transform: none; }
/* Emphasised words keep the accent colour after splitting. */
.rl-em { color: var(--green-500); }
.on-dark .rl-em, .section--forest .rl-em, .hero .rl-em, .cta-band .rl-em, .page-hero .rl-em { color: var(--lime-400); }
/* Before JS splits, headings render normally (no hidden text). */
.rl-ready .rl-inner { will-change: transform; }

/* --- Image clip reveal --- */
.media--reveal { clip-path: inset(0 0 0 0); }
.media--reveal .media__img { transform: scale(1.18); transition: transform 1.1s var(--ease-out); }
[data-reveal].is-in .media--reveal .media__img,
.media--reveal.is-in .media__img { transform: scale(1); }

/* --------------------------------------------------------------------------
   24b. Imagery, motion and hover craft
   -------------------------------------------------------------------------- */

/* Parallax: JS sets --parallax; the image is oversized so it never reveals an
   edge as it drifts. */
[data-parallax] { overflow: hidden; }
[data-parallax] .media__img,
.media__img[data-parallax] { will-change: transform; }
.media--parallax .media__img {
	height: 124%;
	top: -12%;
	position: relative;
	transform: translate3d(0, var(--parallax, 0), 0);
	transition: none;
}

/* Tilt: pointer-reactive lift */
[data-tilt] {
	transform: perspective(900px) rotateX(var(--tilt-x, 0)) rotateY(var(--tilt-y, 0));
	transition: transform .3s var(--ease-out);
	transform-style: preserve-3d;
}

/* Slow zoom on hover — applied to every editorial photo */
.media--zoom .media__img { transition: transform 1.1s var(--ease-out); }
.media--zoom:hover .media__img { transform: scale(1.055); }

/* Photos sit on a warm mount so they never float unanchored */
.media--round { box-shadow: var(--shadow-md); }

/* Branded monogram placeholder */
.media__ph {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	gap: .75rem;
	align-content: center;
	background:
		linear-gradient(calc(120deg + var(--ph-hue, 0) * 1deg), var(--forest-700), var(--green-500) 55%, var(--lime-500));
	color: rgba(255, 255, 255, .85);
	overflow: hidden;
}
.media__ph::before {
	content: "";
	position: absolute;
	inset: -20%;
	background-image:
		radial-gradient(circle at 24% 26%, rgba(255, 255, 255, .22), transparent 42%),
		radial-gradient(circle at 78% 74%, rgba(6, 42, 27, .35), transparent 46%);
}
/* Faint leaf watermark so an image-less card reads as designed, not blank. */
.media__ph::after {
	content: "";
	position: absolute;
	right: -8%;
	bottom: -10%;
	width: 62%;
	aspect-ratio: 1;
	background: rgba(255, 255, 255, .1);
	-webkit-mask: url(../img/graphics/leaf.svg) center / contain no-repeat;
	mask: url(../img/graphics/leaf.svg) center / contain no-repeat;
	pointer-events: none;
}
.media__ph-initials {
	position: relative;
	font-family: var(--font-display);
	font-size: clamp(2.25rem, 1rem + 5vw, 4rem);
	font-weight: 600;
	letter-spacing: -.04em;
	line-height: 1;
	color: rgba(255, 255, 255, .92);
}
.media__ph-mark {
	position: relative;
	font-size: .625rem;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	padding: .35rem .8rem;
	border: 1px solid rgba(255, 255, 255, .38);
	border-radius: var(--r-pill);
	color: rgba(255, 255, 255, .9);
}

/* --- Service rows: photo reveals on hover, cursor-anchored on desktop --- */
.service__thumb {
	display: none;
	position: absolute;
	right: 4.5rem;
	top: 50%;
	width: 200px;
	aspect-ratio: 3 / 2;
	border-radius: var(--r-md);
	overflow: hidden;
	box-shadow: var(--shadow-lg);
	pointer-events: none;
	opacity: 0;
	transform: translateY(-50%) translateX(24px) rotate(3deg) scale(.94);
	transition: opacity .38s var(--ease), transform .5s var(--ease-out);
	z-index: 2;
}
.service__thumb img { width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 1100px) {
	.service__thumb { display: block; }
	.service:hover .service__thumb { opacity: 1; transform: translateY(-50%) translateX(0) rotate(-1.5deg) scale(1); }
	/* Give the thumbnail somewhere to land */
	.service { grid-template-columns: 5rem minmax(0, 1fr) minmax(0, .95fr) 3rem; }
	.service__text { max-width: 40ch; }
}

/* Row hover: green wash sweeps in from the left */
.service::before {
	content: "";
	position: absolute;
	inset: 0 0 0 0;
	background: linear-gradient(90deg, color-mix(in srgb, var(--lime-500) 12%, transparent), transparent 60%);
	opacity: 0;
	transition: opacity .4s var(--ease);
	pointer-events: none;
}
.service:hover::before { opacity: 1; }
.service__title, .service__num, .service__text { position: relative; }

/* --- Buttons: fill sweep --- */
.btn { position: relative; overflow: hidden; z-index: 0; }
.btn > span, .btn > .icon { position: relative; z-index: 1; }
.btn::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--lime-500);
	transform: translateY(101%);
	transition: transform .42s var(--ease-out);
	z-index: 0;
}
.btn--primary:hover::before { transform: translateY(0); }
.btn--primary:hover { color: var(--forest-900); }
.btn--ghost::before { background: var(--forest-800); }
.btn--light::before { background: #fff; }
.btn--accent::before { background: var(--forest-800); }
.btn--accent:hover { color: #fff; }
.btn--ghost:hover, .btn--light:hover, .btn--accent:hover { box-shadow: var(--shadow-md); }
/* The fill sweeps to near-black on hover, but the badge is forest-900 at
   rest - it was vanishing into the button. Flip it to a white disc with a
   dark arrow so it still reads. */
/* Accent sweeps to near-black, so the badge becomes a white disc. */
.btn--accent:hover { --btn-badge: #fff; --btn-badge-fg: var(--forest-900); }
/* Primary sweeps the other way, to lime - its lime badge would vanish, so
   that one darkens instead. */
.btn--primary:hover { --btn-badge: var(--forest-900); --btn-badge-fg: var(--lime-500); }
.btn--link::before { display: none; }

/* --- Nav links: underline grows from the centre --- */
.nav__list > li > a { position: relative; }
.nav__list > li > a::before {
	content: "";
	position: absolute;
	left: 50%; right: 50%;
	bottom: .3rem;
	height: 2px;
	background: currentColor;
	opacity: .0;
	transition: left .32s var(--ease-out), right .32s var(--ease-out), opacity .2s var(--ease);
}
.nav__list > li > a:hover::before,
.nav__list > li.current-menu-item > a::before { left: .8rem; right: .8rem; opacity: .55; }
.nav__list > li.has-children > a::before { display: none; }

/* --- Cards: accent edge on hover --- */
.card { overflow: hidden; }
.card::before {
	content: "";
	position: absolute;
	left: 0; right: 0; top: 0;
	height: 3px;
	background: linear-gradient(90deg, var(--lime-500), var(--green-500));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .45s var(--ease-out);
}
.card:hover::before { transform: scaleX(1); }
.card__icon { transition: transform .45s var(--ease-out), box-shadow .35s var(--ease); }
.card:hover .card__icon { transform: translateY(-2px) rotate(-6deg); box-shadow: 0 10px 24px -8px rgba(47, 158, 91, .7); }

/* --- Stats: value lifts and the divider tints --- */
.stat { position: relative; overflow: hidden; }
.stat::after {
	content: "";
	position: absolute;
	left: 0; bottom: 0;
	width: 100%; height: 3px;
	border-radius: 0 0 var(--r-lg) var(--r-lg);
	background: linear-gradient(90deg, var(--lime-500), var(--green-500));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .5s var(--ease-out);
}
.stat:hover::after { transform: scaleX(1); }
.stat__value { transition: transform .45s var(--ease-out); }
.stat:hover .stat__value { transform: translateY(-3px); }

/* --- Person cards --- */
.person__media .media__img { transition: transform 1s var(--ease-out), filter .5s var(--ease); }
.person:hover .person__media .media__img { transform: scale(1.05); }
.person__name { transition: color .3s var(--ease); }
.person:hover .person__name { color: var(--forest-600); }
.person__media::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border: 2px solid transparent;
	border-radius: var(--r-lg);
	transition: border-color .4s var(--ease);
	pointer-events: none;
}
.person:hover .person__media::before { border-color: var(--lime-500); }

/* --- Logo chips --- */
.logo-chip img { max-height: 42px; }
.logo-chip--sm { height: 60px; min-width: 130px; }

/* --- Photo mosaic --- */
.mosaic {
	display: grid;
	gap: clamp(.5rem, .3rem + .6vw, 1rem);
	grid-template-columns: repeat(2, 1fr);
	grid-auto-rows: minmax(140px, auto);
}
@media (min-width: 780px) {
	.mosaic { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 200px; }
	.mosaic__item--1 { grid-column: span 2; grid-row: span 2; }
	.mosaic__item--2 { grid-column: span 2; }
	.mosaic__item--3 { grid-column: span 1; }
	.mosaic__item--4 { grid-column: span 1; }
	.mosaic__item--5 { grid-column: span 4; grid-row: span 1; }
}
.mosaic__item {
	position: relative;
	margin: 0;
	overflow: hidden;
	border-radius: var(--r-md);
	background: var(--forest-700);
	min-height: 140px;
}
.mosaic__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease-out), filter .5s var(--ease); }
.mosaic__item::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(6, 42, 27, .82), rgba(6, 42, 27, .05) 55%);
	opacity: .55;
	transition: opacity .45s var(--ease);
}
.mosaic__item:hover img { transform: scale(1.07); }
.mosaic__item:hover::after { opacity: .85; }
.mosaic__item figcaption {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	z-index: 1;
	padding: 1rem 1.15rem;
	color: #fff;
	font-size: var(--fs-sm);
	font-weight: 700;
	letter-spacing: -.01em;
	transform: translateY(6px);
	opacity: .85;
	transition: transform .45s var(--ease-out), opacity .35s var(--ease);
}
.mosaic__item:hover figcaption { transform: none; opacity: 1; }

/* --- Lightbox gallery grid --- */
.lgallery {
	display: grid;
	gap: clamp(.5rem, .3rem + .6vw, .85rem);
	grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 600px) { .lgallery { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 960px) { .lgallery { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 960px) { .lgallery--three { grid-template-columns: repeat(3, 1fr); } }
.lgallery__item {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: var(--r-md);
	aspect-ratio: 4 / 3;
	background: var(--forest-800);
	text-decoration: none;
}
.lgallery__item img {
	width: 100%; height: 100%; object-fit: cover;
	transition: transform .6s var(--ease-out), filter .4s var(--ease);
}
.lgallery__item:hover img { transform: scale(1.06); filter: brightness(.85); }
.lgallery__zoom {
	position: absolute; inset: 0; display: grid; place-items: center;
	color: #fff; opacity: 0;
	background: rgba(6, 42, 27, .35);
	transition: opacity .3s var(--ease);
}
.lgallery__zoom svg { width: 32px; height: 32px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.3)); }
.lgallery__item:hover .lgallery__zoom { opacity: 1; }

/* --- Lightbox overlay --- */
.c2g-lightbox {
	position: fixed; inset: 0; z-index: 9999;
	display: flex; align-items: center; justify-content: center;
	background: rgba(0, 0, 0, .92);
	opacity: 0; visibility: hidden;
	transition: opacity .3s ease, visibility .3s ease;
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.c2g-lightbox.is-open { opacity: 1; visibility: visible; }
.c2g-lightbox__img {
	max-width: 90vw; max-height: 85vh;
	border-radius: var(--r-md);
	box-shadow: 0 24px 80px rgba(0,0,0,.5);
	object-fit: contain;
	transform: scale(.92); opacity: 0;
	transition: transform .35s var(--ease-out), opacity .3s ease;
}
.c2g-lightbox.is-open .c2g-lightbox__img { transform: scale(1); opacity: 1; }
.c2g-lightbox__close {
	position: absolute; top: 1.25rem; right: 1.25rem;
	width: 44px; height: 44px; display: grid; place-items: center;
	background: rgba(255,255,255,.12); border: none; border-radius: 50%;
	color: #fff; cursor: pointer;
	transition: background .2s ease;
}
.c2g-lightbox__close:hover { background: rgba(255,255,255,.25); }
.c2g-lightbox__close svg { width: 22px; height: 22px; }
.c2g-lightbox__nav {
	position: absolute; top: 50%; transform: translateY(-50%);
	width: 48px; height: 48px; display: grid; place-items: center;
	background: rgba(255,255,255,.1); border: none; border-radius: 50%;
	color: #fff; cursor: pointer;
	transition: background .2s ease;
}
.c2g-lightbox__nav:hover { background: rgba(255,255,255,.22); }
.c2g-lightbox__nav svg { width: 24px; height: 24px; }
.c2g-lightbox__prev { left: 1rem; }
.c2g-lightbox__next { right: 1rem; }
.c2g-lightbox__counter {
	position: absolute; bottom: 1.25rem; left: 50%; transform: translateX(-50%);
	font-size: .85rem; color: rgba(255,255,255,.6); font-weight: 600; letter-spacing: .04em;
}

/* --- Timeline items lift --- */
.tl-item { transition: transform .4s var(--ease-out); }
.tl-item:hover { transform: translateY(-4px); }

/* --- Pills --- */
.pill { transition: background .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease), transform .3s var(--ease-out); }
.pill:hover { transform: translateY(-2px); }

/* --- Step cards --- */
.step { transition: background .35s var(--ease); }
.step:hover { background: var(--paper); }
.section--forest .steps { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .14); }
.section--forest .step { background: var(--forest-800); color: #fff; }
.section--forest .step:hover { background: var(--forest-700); }
.section--forest .step span { color: rgba(255, 255, 255, .66); }

/* --- Methodology track (advisory page) --- */
.method-track {
	display: grid;
	gap: clamp(.75rem, .5rem + .8vw, 1.25rem);
	grid-template-columns: 1fr;
}
@media (min-width: 600px) { .method-track { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .method-track { grid-template-columns: repeat(5, 1fr); } }
.method-card {
	position: relative;
	padding: clamp(1.5rem, 1.2rem + 1vw, 2rem);
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .1);
	border-radius: var(--r-lg);
	transition: background .35s var(--ease), border-color .35s var(--ease), transform .4s var(--ease-out);
}
.method-card:hover {
	background: rgba(255, 255, 255, .1);
	border-color: rgba(141, 198, 63, .35);
	transform: translateY(-4px);
}
.method-card__no {
	display: block;
	font-family: var(--font-display);
	font-size: clamp(2rem, 1.5rem + 1.5vw, 2.75rem);
	font-weight: 800;
	letter-spacing: -.04em;
	line-height: 1;
	color: rgba(141, 198, 63, .18);
	margin-bottom: .75rem;
}
.method-card__icon {
	display: grid;
	place-items: center;
	width: 44px; height: 44px;
	border-radius: 50%;
	background: rgba(141, 198, 63, .15);
	color: var(--lime-400);
	margin-bottom: 1rem;
}
.method-card__title {
	font-size: var(--fs-lg);
	font-weight: 700;
	letter-spacing: -.02em;
	color: #fff;
	margin-bottom: .5rem;
}
.method-card__text {
	font-size: var(--fs-sm);
	color: rgba(255, 255, 255, .6);
	line-height: 1.6;
}
@media (min-width: 960px) {
	.method-card:not(:last-child)::after {
		content: "";
		position: absolute;
		top: 50%; right: -0.75rem;
		width: 1.25rem; height: 1px;
		background: rgba(141, 198, 63, .3);
	}
}
.method-principles {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: .75rem;
}
.method-pill {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .6rem 1.15rem;
	background: rgba(255, 255, 255, .07);
	border: 1px solid rgba(255, 255, 255, .12);
	border-radius: 999px;
	font-size: var(--fs-sm);
	font-weight: 600;
	color: rgba(255, 255, 255, .85);
	transition: background .3s var(--ease), border-color .3s var(--ease);
}
.method-pill:hover { background: rgba(255, 255, 255, .12); border-color: rgba(141, 198, 63, .3); }
.method-pill__icon { color: var(--lime-400); display: grid; place-items: center; }

/* --- Quote cards --- */
.quote-card { transition: transform .4s var(--ease-out), box-shadow .4s var(--ease), border-color .4s var(--ease); }
.quote-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: color-mix(in srgb, var(--lime-500) 45%, var(--line)); }

/* --- Post cards --- */
.post-card .media { overflow: hidden; }
.post-card .media__img { transition: transform 1s var(--ease-out); }
.post-card:hover .media__img { transform: scale(1.06); }
.post-card__title { transition: color .3s var(--ease); }

/* --- Hero: darker floor so the caption always reads --- */
.hero__slide .media__img { filter: saturate(1.05) contrast(1.02); }

/* Hero stat ribbon */
.hero__facts {
	display: flex;
	flex-wrap: wrap;
	gap: clamp(1.25rem, .8rem + 2vw, 3rem);
	margin-top: clamp(2rem, 1.5rem + 2vw, 3rem);
	padding-top: 1.5rem;
	border-top: 1px solid rgba(255, 255, 255, .18);
}
.hero__fact b {
	display: block;
	font-family: var(--font-display);
	font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.25rem);
	font-weight: 600;
	line-height: 1;
	letter-spacing: -.03em;
	color: #fff;
}
.hero__fact span { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: rgba(255, 255, 255, .6); }

/* --------------------------------------------------------------------------
   25. Utilities
   -------------------------------------------------------------------------- */
.mt-0 { margin-top: 0; }
.mt-3 { margin-top: var(--sp-3); }
.mt-4 { margin-top: var(--sp-4); }
.mt-5 { margin-top: var(--sp-5); }
.mt-6 { margin-top: var(--sp-6); }
.mt-7 { margin-top: var(--sp-7); }
.mt-8 { margin-top: var(--sp-8); }
.text-center { text-align: center; }
.flex-between { display: flex; flex-wrap: wrap; gap: 1.5rem; align-items: center; justify-content: space-between; }
.sticky-col { position: sticky; top: calc(var(--header-h) + 2rem); display: flex; flex-direction: column; gap: 1.5rem; }
.sticky-col .card { gap: .75rem; }
.sticky-col .card:hover { transform: none; }
@media (max-width: 899px) { .sticky-col { position: static; } }

.sidebar-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0; }
.sidebar-list li { margin: 0; }
.sidebar-list li a { display: flex; align-items: center; gap: .5rem; padding: .55rem 0; font-size: var(--fs-sm); font-weight: 500; color: var(--ink-700); text-decoration: none; border-bottom: 1px solid var(--line); transition: color .2s var(--ease), padding-left .2s var(--ease); }
.sidebar-list li:last-child a { border-bottom: none; }
.sidebar-list li a:hover { color: var(--forest-600); padding-left: .3rem; }
.sidebar-list li.is-active a { color: var(--forest-600); font-weight: 700; }
.sidebar-list__count { margin-left: auto; font-size: var(--fs-xs); font-weight: 700; color: var(--muted); background: var(--paper-2); padding: .15rem .45rem; border-radius: var(--r-pill); }
.sidebar-list li .icon { flex: none; color: var(--green-500); }
.sidebar-list--share li a { gap: .6rem; }
.sidebar-list--share .icon { width: 16px; height: 16px; flex: none; }

/* --------------------------------------------------------------------------
   26. Preferences
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
	[data-reveal] { opacity: 1; transform: none; }
	.marquee__track { animation: none; }
}

@media print {
	.site-header, .site-footer, .cta-band, .hero__nav, .burger { display: none !important; }
	body { background: #fff; color: #000; }
}

/* ==========================================================================
   2026 editorial home
   A quieter institutional composition: clear columns, rules and typography
   replace the familiar rounded-card/dashboard aesthetic.
   ========================================================================== */
.home .site-header[data-solid="false"] {
	background: rgba(241, 240, 233, .94);
	backdrop-filter: blur(14px);
	border-bottom-color: rgba(11, 61, 40, .12);
	color: var(--forest-900);
}
.home .site-header[data-solid="false"] .brand__logo--dark { display: block; }
.home .site-header[data-solid="false"] .brand__logo--light { display: none; }

.hero--editorial {
	min-height: 760px;
	align-items: stretch;
	background: #f1f0e9;
	color: var(--forest-900);
	border-bottom: 1px solid #d8d9d1;
}
.hero--editorial::after { display: none; }
.hero--editorial .hero__visual {
	position: absolute;
	inset: 0 0 0 52%;
	background: var(--forest-800);
	overflow: hidden;
}
.hero--editorial .hero__visual-label {
	position: absolute;
	z-index: 4;
	right: 2rem;
	top: calc(var(--header-h) + 1.2rem);
	margin: 0;
	color: rgba(255,255,255,.78);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .15em;
	text-transform: uppercase;
}
.hero--editorial .hero__slides { inset: 0; }
.hero--editorial .hero__slide::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(6,42,27,.38), transparent 45%);
}
.hero--editorial .hero__inner {
	width: min(100%, var(--maxw));
	margin-inline: auto;
	padding: calc(var(--header-h) + 4.5rem) calc(48% + var(--gutter)) 3rem var(--gutter);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}
.hero--editorial .hero__edition {
	margin: 0 0 auto;
	padding-bottom: .75rem;
	border-bottom: 1px solid #bfc6bc;
	width: 100%;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--forest-600);
}
.hero--editorial .hero__pane { max-width: 580px; }
.hero--editorial .hero__title {
	max-width: 12ch;
	font-size: clamp(2.7rem, 4.3vw, 5.6rem);
	line-height: .98;
	letter-spacing: -.055em;
}
.hero--editorial .hero__title em { color: var(--forest-600); }
.hero--editorial .hero__text { color: var(--ink-700); max-width: 40ch; }
.hero--editorial .eyebrow { color: var(--clay-600); }
.hero--editorial .btn--light { --btn-fg: var(--forest-800); border-color: #aeb8ad; }
.hero--editorial .hero__facts {
	width: 100%;
	margin-top: 2.5rem;
	padding-top: 1.1rem;
	border-top: 1px solid #bfc6bc;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1rem;
}
.hero--editorial .hero__fact b { color: var(--forest-800); font-size: 1.35rem; }
.hero--editorial .hero__fact span { color: var(--ink-500); font-size: .62rem; }
.hero--editorial .hero__nav { width: 100%; margin-top: 1.5rem; }
.hero--editorial .hero__dot::before { background: #b8c0b6; }
.hero--editorial .hero__slide-count {
	margin: 0 0 0 auto;
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--ink-500);
}

.home-intro { background: #fff; }
.home-intro__grid {
	display: grid;
	grid-template-columns: minmax(260px, .72fr) minmax(0, 1.28fr);
	gap: clamp(3rem, 8vw, 9rem);
	align-items: center;
}
.home-intro__media { position: relative; padding-left: clamp(1rem, 4vw, 4rem); }
.home-intro__media .media { border-radius: 0; }
.home-intro__caption {
	margin: .8rem 0 0;
	padding-top: .65rem;
	border-top: 1px solid var(--line);
	font-size: .72rem;
	color: var(--muted);
}
.home-intro__title {
	max-width: 15ch;
	font-size: clamp(2.2rem, 4.2vw, 4.8rem);
	font-weight: 600;
	line-height: 1.04;
	letter-spacing: -.05em;
}
.home-intro__title em { color: var(--forest-600); font-style: normal; }
.home-intro__copy .lead { max-width: 54ch; }
.home-intro__copy > .muted { max-width: 62ch; }
.home-intro__facts {
	margin: clamp(2rem, 4vw, 4rem) 0 0;
	border-top: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
	display: grid;
	grid-template-columns: repeat(3, 1fr);
}
.home-intro__facts div { padding: 1.2rem 1rem 1.2rem 0; }
.home-intro__facts div + div { border-left: 1px solid var(--line); padding-left: 1rem; }
.home-intro__facts dt {
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--muted);
}
.home-intro__facts dd { margin: .35rem 0 0; font-size: 1.05rem; font-weight: 700; }

.service-index { border-top: 1px solid var(--ink-900); }
.service-index__row {
	display: grid;
	grid-template-columns: 3rem minmax(230px, .75fr) minmax(280px, 1.25fr) 2.5rem;
	gap: clamp(1rem, 3vw, 3rem);
	align-items: center;
	padding: 1.55rem 0;
	border-bottom: 1px solid var(--line);
	text-decoration: none;
	transition: color .2s ease, padding .25s ease;
}
.service-index__row:hover { color: var(--forest-600); padding-left: .75rem; }
.service-index__num { color: var(--clay-600); font: 700 .7rem/1 var(--font-sans); letter-spacing: .1em; }
.service-index__title { font-size: clamp(1.05rem, 1.5vw, 1.35rem); line-height: 1.25; }
.service-index__text { margin: 0; color: var(--muted); font-size: var(--fs-sm); }
.service-index__arrow {
	width: 2.25rem;
	height: 2.25rem;
	display: grid;
	place-items: center;
	border: 1px solid var(--line);
	border-radius: 50%;
}
.service-index__row:hover .service-index__arrow { border-color: currentColor; }

.home #impact .stats { border-radius: 0; border-color: rgba(255,255,255,.25); }
.home #impact .stat { border-radius: 0; }
.home .event-card, .home .press-card { border-radius: 0; box-shadow: none; }

@media (max-width: 899px) {
	.hero--editorial { min-height: auto; padding-top: var(--header-h); }
	.hero--editorial .hero__visual {
		position: relative;
		inset: auto;
		order: 2;
		width: 100%;
		height: 48vh;
		min-height: 360px;
	}
	.hero--editorial .hero__inner {
		padding: 3rem var(--gutter) 2rem;
		min-height: 650px;
	}
	.hero--editorial .hero__edition { margin-bottom: 3rem; }
	.hero--editorial .hero__title { font-size: clamp(2.6rem, 11vw, 4.4rem); }
	.hero--editorial .hero__facts { grid-template-columns: repeat(2, 1fr); }
	.hero--editorial .hero__visual-label { top: 1rem; }
	.home-intro__grid { grid-template-columns: 1fr; gap: 3rem; }
	.home-intro__media { padding: 0; max-width: 520px; }
	.service-index__row { grid-template-columns: 2.25rem 1fr 2.5rem; }
	.service-index__text { grid-column: 2 / 4; margin-top: -.5rem; }
}

@media (max-width: 540px) {
	.hero--editorial .hero__inner { min-height: 700px; }
	.hero--editorial .hero__facts { gap: .8rem; }
	.home-intro__facts { grid-template-columns: 1fr; }
	.home-intro__facts div + div { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; }
	.service-index__row { grid-template-columns: 1.8rem 1fr 2.25rem; gap: .75rem; }
	.service-index__text { display: none; }
}

/* Restored photographic home treatment. */
.home .site-header[data-solid="false"] {
	background: transparent;
	backdrop-filter: none;
	border-bottom-color: transparent;
	color: #fff;
}
.home .site-header[data-solid="false"] .brand__logo--dark { display: none; }
.home .site-header[data-solid="false"] .brand__logo--light { display: block; }
.home #impact .stats { border-radius: var(--r-xl); }
.home .event-card,
.home .press-card { border-radius: var(--r-lg); }

/* --------------------------------------------------------------------------
   About page - objectives, expertise, vision cluster, board carousel
   -------------------------------------------------------------------------- */

/* Objectives - numbered cards that lift and reveal an accent bar on hover. */
/* Six objectives read best as 3 x 2 - fixed columns, not auto-fit. */
.objgrid { display: grid; gap: clamp(1rem, .8rem + 1vw, 1.5rem); grid-template-columns: 1fr; }
@media (min-width: 620px) { .objgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 960px) { .objgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* Explicit column counts so a grid never leaves an orphan card on its own
   row: two cards sit at halves, four at quarters, the rest at thirds. */
@media (min-width: 960px) {
	.objgrid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.objgrid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.objgrid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.objcard {
	position: relative;
	overflow: hidden;
	padding: clamp(1.4rem, 1.1rem + 1vw, 1.9rem);
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-xl);
	box-shadow: var(--shadow-sm);
	transition: transform .45s var(--ease-out), box-shadow .45s var(--ease), border-color .45s var(--ease);
}
.objcard::before {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 3px;
	background: linear-gradient(90deg, var(--lime-500), var(--green-500));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .5s var(--ease-out);
}
.objcard:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: color-mix(in srgb, var(--green-500) 30%, var(--line)); }
.objcard:hover::before { transform: scaleX(1); }
.objcard__no {
	position: absolute;
	top: .6rem; right: 1rem;
	font-family: var(--font-display);
	font-size: 2.75rem;
	font-weight: 700;
	line-height: 1;
	color: color-mix(in srgb, var(--green-500) 13%, transparent);
	transition: color .45s var(--ease);
}
.objcard:hover .objcard__no { color: color-mix(in srgb, var(--green-500) 26%, transparent); }
.objcard__icon {
	position: relative;
	display: grid; place-items: center;
	width: 52px; height: 52px;
	margin-bottom: .9rem;
	border-radius: 16px;
	background: linear-gradient(150deg, var(--lime-400), var(--green-500));
	color: #fff;
	box-shadow: 0 12px 24px -10px rgba(47, 158, 91, .7);
	transition: transform .5s var(--ease-out);
}
.objcard:hover .objcard__icon { transform: translateY(-2px) rotate(-6deg); }
.objcard__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.3; }
.objcard__text { margin-top: .4rem; font-size: var(--fs-box); color: var(--muted); line-height: 1.55; }

/* Expertise - compact icon chips that fill in on hover. */
/* Nine expertise areas read best as 3 x 3. */
.expgrid { display: grid; gap: clamp(.75rem, .6rem + .6vw, 1.1rem); grid-template-columns: 1fr; }
/* Partner names as plates, so a prose list becomes something to look at. */
.brandlist { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
@media (min-width: 520px) { .brandlist { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.brandlist li {
	display: grid;
	place-items: center;
	padding: 1.1rem .75rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	font-family: var(--font-display);
	font-size: var(--fs-lg);
	font-weight: 700;
	letter-spacing: -.02em;
	color: var(--forest-700);
	box-shadow: var(--shadow-sm);
	transition: transform .3s var(--ease-out), border-color .3s var(--ease);
}
.brandlist li:hover { transform: translateY(-3px); border-color: var(--green-500); }
.brandlist__note { margin-top: .9rem; font-size: var(--fs-sm); color: var(--muted); text-align: center; }
@media (prefers-reduced-motion: reduce) { .brandlist li { transition: none; } .brandlist li:hover { transform: none; } }
@media (min-width: 620px) { .expgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 960px) { .expgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* Declared after the base rule above: same specificity, so source order is
   what makes the two-column variant stick inside narrow columns. */
@media (min-width: 640px) { .expgrid--two { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 640px) { .expgrid--three { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 640px) { .expgrid--one { grid-template-columns: minmax(0, 1fr); } }
@media (min-width: 1000px) { .expgrid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 640px) { .expgrid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 640px) { .expgrid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.expcard {
	display: flex;
	align-items: center;
	gap: .9rem;
	padding: 1rem 1.15rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	transition: transform .4s var(--ease-out), background .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease);
}
.expcard:hover { transform: translateY(-4px); background: var(--forest-800); border-color: var(--forest-800); box-shadow: var(--shadow-lg); }
.expcard__icon {
	flex: none;
	display: grid; place-items: center;
	width: 44px; height: 44px;
	border-radius: 50%;
	background: color-mix(in srgb, var(--green-500) 14%, transparent);
	color: var(--forest-700);
	transition: background .4s var(--ease), color .4s var(--ease), transform .5s var(--ease-out);
}
.expcard:hover .expcard__icon { background: var(--lime-500); color: var(--forest-900); transform: rotateY(360deg); }
.expcard__label { min-width: 0; font-size: var(--fs-box); font-weight: 600; letter-spacing: -.01em; line-height: 1.3; transition: color .4s var(--ease); }
.expcard:hover .expcard__label { color: #fff; }

/* Vision / mission / purpose - hex cluster beside a connected list. */
/* About Us intro collage: one tall shot inset top and bottom, two stacked
   beside it, badge on the join - matching the supplied reference. The tall
   slot takes the squarest source so its portrait crop stays shallow. */
.abt-collage {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
	grid-template-rows: auto auto;
	gap: clamp(.6rem, .4rem + .6vw, 1rem);
}
@media (min-width: 900px) {
	.abt-collage { position: sticky; top: calc(var(--header-h) + 2rem); }
}
/* Dot-grid motif tucked behind the lower-left corner, as in the reference. */
.abt-collage::before {
	content: "";
	position: absolute;
	left: clamp(-30px, -1.8vw, -16px);
	bottom: clamp(-22px, -1.2vw, -10px);
	width: 44%;
	height: 32%;
	background: url(../img/graphics/dot-grid.webp) left bottom repeat;
	background-size: 62px auto;
	z-index: 0;
	pointer-events: none;
}
.abt-collage figure { position: relative; z-index: 1; margin: 0; overflow: hidden; border-radius: var(--r-lg); box-shadow: var(--shadow-md); }
.abt-collage img { display: block; width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; transition: transform .8s var(--ease-out); }
.abt-collage figure:hover img { transform: scale(1.06); }
/* The tall tile spans both rows and sits inset, so the stack beside it runs
   slightly taller top and bottom. */
.abt-collage figure.abt-collage__tall {
	grid-row: 1 / span 2;
	margin-top: 0;
	margin-bottom: 0;
	border-radius: var(--r-xl);
}
.abt-collage__tall img { aspect-ratio: auto; height: 100%; }
.abt-collage__badge {
	position: absolute;
	left: 50%; top: 50%;
	transform: translate(-50%, -50%);
	display: grid;
	place-items: center;
	align-content: center;
	gap: .1rem;
	width: clamp(104px, 12vw, 136px);
	aspect-ratio: 1;
	padding: .5rem;
	text-align: center;
	background: var(--forest-800, var(--forest-700));
	color: #fff;
	border: 5px solid var(--white);
	border-radius: 50%;
	box-shadow: 0 18px 34px -18px rgba(4, 24, 10, .6);
	z-index: 2;
}
.abt-collage__badge b { font-family: var(--font-display); font-size: clamp(1.4rem, 1.1rem + 1vw, 1.9rem); line-height: 1; }
.abt-collage__badge span { font-size: var(--fs-xs); line-height: 1.25; color: rgba(255, 255, 255, .85); }
@media (max-width: 520px) {
	.abt-collage figure.abt-collage__tall { grid-row: auto; grid-column: 1 / -1; }
	.abt-collage img { height: auto; aspect-ratio: 4 / 3; }
	.abt-collage__tall img { aspect-ratio: 4 / 3; height: auto; }
	.abt-collage__badge { width: 88px; border-width: 4px; }
}
@media (prefers-reduced-motion: reduce) { .abt-collage img { transition: none; } .abt-collage figure:hover img { transform: none; } }

/* Resource hub: a tall 30% media panel beside 70% of copy. */
.hub30 { display: grid; gap: clamp(1.5rem, 1rem + 2.5vw, 3rem); align-items: stretch; }
@media (min-width: 900px) { .hub30 { grid-template-columns: minmax(0, 30fr) minmax(0, 70fr); } }
.hub30__media { position: relative; margin: 0; border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--shadow-lg); min-height: clamp(320px, 34vw, 520px); }
.hub30__media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease-out); }
.hub30__media:hover img { transform: scale(1.05); }
.hub30__badge {
	position: absolute;
	left: clamp(.8rem, .5rem + 1vw, 1.25rem);
	bottom: clamp(.8rem, .5rem + 1vw, 1.25rem);
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	padding: .6rem 1rem;
	background: rgba(255, 255, 255, .92);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	font-weight: 700;
	color: var(--forest-700);
	box-shadow: 0 14px 28px -20px rgba(4, 24, 10, .55);
}
.hub30__badge-icon { display: grid; place-items: center; color: var(--green-500); }
.hub30__body { display: flex; flex-direction: column; justify-content: center; }
/* Stretch is the flex default, which was blowing the eyebrow pill out to
   the full column width. */
.hub30__body > .eyebrow { align-self: flex-start; }
/* .lead is capped at 62ch, which left the right of a 70% column empty.
   Inside this layout the column itself is the measure. */
.hub30__body .lead { max-width: none; }
.hub30__grid { display: grid; gap: clamp(1rem, .8rem + 1vw, 1.75rem); margin-top: clamp(1.25rem, 1rem + 1vw, 2rem); }
@media (min-width: 700px) { .hub30__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.hub30__item { padding-left: 1.1rem; border-left: 3px solid var(--lime-500); }
.hub30__icon { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: var(--mint-100); color: var(--forest-700); }
.hub30__title { margin-top: .75rem; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; color: var(--forest-700); }
.hub30__text { margin-top: .4rem; font-size: var(--fs-box); color: var(--ink-700); line-height: 1.6; }
.hub30__tags { list-style: none; margin: clamp(1.25rem, 1rem + 1vw, 1.75rem) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .45rem; }
.hub30__tags li { padding: .35rem .8rem; background: var(--mint-50); border: 1px solid var(--line); border-radius: var(--r-pill); font-size: var(--fs-xs); font-weight: 700; color: var(--forest-700); }
@media (prefers-reduced-motion: reduce) { .hub30__media img { transition: none; } .hub30__media:hover img { transform: none; } }

.vmp { display: grid; gap: clamp(2rem, 1rem + 4vw, 4.5rem); align-items: center; }
/* Vision + Mission. Only two hexes now, so they sit larger on a soft panel
   that runs the height of the list beside it - offset like a honeycomb
   fragment rather than floating in an empty column. */
.vmp__hexes {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: clamp(.75rem, .5rem + 1vw, 1.5rem);
	min-height: clamp(300px, 26vw, 420px);
	padding: clamp(1.5rem, 1rem + 2vw, 3rem);
	border-radius: var(--r-xl);
	background:
		radial-gradient(120% 100% at 50% 0%, var(--white), var(--mint-50) 90%),
		var(--white);
	border: 1px solid var(--line);
	overflow: hidden;
}
/* Faint leaf motif so the panel is not a blank field. */
.vmp__hexes::after {
	content: "";
	position: absolute;
	right: -50px; bottom: -60px;
	width: 58%;
	aspect-ratio: 1;
	-webkit-mask: url(../img/graphics/soft-leaves.svg) center / contain no-repeat;
	mask: url(../img/graphics/soft-leaves.svg) center / contain no-repeat;
	background-color: var(--green-500);
	opacity: .09;
	pointer-events: none;
}
.vmp__hexes .hex { position: relative; z-index: 1; width: clamp(130px, 40%, 190px); }
.vmp__hexes .hex:first-child { transform: translateY(-12%); }
.vmp__hexes .hex:last-child { transform: translateY(12%); }
.vmp__hexes .hex:hover { transform: translateY(-12%) scale(1.04); }
.vmp__hexes .hex:last-child:hover { transform: translateY(12%) scale(1.04); }
@media (max-width: 600px) {
	.vmp__hexes .hex:first-child, .vmp__hexes .hex:last-child { transform: none; }
}
@media (min-width: 900px) { .vmp { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); } }
.hex {
	display: grid;
	place-content: center;
	justify-items: center;
	gap: .5rem;
	aspect-ratio: 1 / 1.08;
	padding: 1rem;
	text-align: center;
	background: linear-gradient(160deg, var(--mint-100), color-mix(in srgb, var(--green-500) 10%, var(--white)));
	clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
	transition: transform .5s var(--ease-out), background .5s var(--ease);
}
.hex:hover { transform: translateY(-6px); background: linear-gradient(160deg, var(--lime-400), var(--green-500)); }
.hex__icon { display: grid; place-items: center; color: var(--forest-700); transition: color .4s var(--ease), transform .6s var(--ease-out); }
.hex:hover .hex__icon { color: #fff; transform: scale(1.12); }
.hex__label { font-family: var(--font-display); font-size: var(--fs-base); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--forest-800); transition: color .4s var(--ease); }
.hex:hover .hex__label { color: #fff; }

.vmp__title { margin-bottom: clamp(1.75rem, 1.2rem + 1.6vw, 2.75rem); }
.vmp-item { position: relative; display: flex; gap: 1rem; padding-bottom: 1.6rem; }
.vmp-item:not(:last-child)::after {
	content: "";
	position: absolute;
	left: 21px; top: 46px; bottom: .35rem;
	border-left: 2px dotted color-mix(in srgb, var(--forest-800) 30%, transparent);
}
.vmp-item__mark {
	flex: none;
	display: grid; place-items: center;
	width: 44px; height: 44px;
	border-radius: 50%;
	background: var(--forest-800);
	color: var(--lime-400);
	transition: transform .45s var(--ease-out), background .4s var(--ease);
}
.vmp-item:hover .vmp-item__mark { transform: scale(1.08); background: var(--green-500); color: #fff; }
.vmp-item__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; }
.vmp-item__text { margin-top: .3rem; font-size: var(--fs-base); color: var(--muted); line-height: 1.6; }

/* Board carousel */
.team-track { display: flex; gap: clamp(1.25rem, 1rem + 1vw, 2rem); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: clamp(42px, 5vw, 78px) 2px 1.25rem; cursor: grab; }
.team-track::-webkit-scrollbar { display: none; }
.team-track.is-grabbing { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; }
.team-track .tmember { flex: 0 0 calc((100% - 1 * clamp(1.25rem, 1rem + 1vw, 2rem)) / 2); scroll-snap-align: start; }
@media (min-width: 700px) { .team-track .tmember { flex-basis: calc((100% - 2 * clamp(1.25rem, 1rem + 1vw, 2rem)) / 3); } }
@media (min-width: 1000px) { .team-track .tmember { flex-basis: calc((100% - 3 * clamp(1.25rem, 1rem + 1vw, 2rem)) / 4); } }

/* App page - end-to-end collection journey (connected step line). */
.flowline {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: clamp(1rem, .8rem + 1vw, 1.5rem);
	grid-template-columns: 1fr;
	counter-reset: flow;
}
@media (min-width: 620px) { .flowline { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) { .flowline { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.flowstep {
	position: relative;
	margin: 0;
	padding: clamp(1.25rem, 1rem + 1vw, 1.75rem);
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-xl);
	box-shadow: var(--shadow-sm);
	transition: transform .45s var(--ease-out), box-shadow .45s var(--ease), border-color .45s var(--ease);
}
.flowstep:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: color-mix(in srgb, var(--green-500) 30%, var(--line)); }
/* Connector arrow between consecutive steps on wide screens. */
@media (min-width: 900px) {
	.flowstep:not(:nth-child(4n))::after {
		content: "";
		position: absolute;
		top: 50%;
		right: calc(clamp(1rem, .8rem + 1vw, 1.5rem) / -2 - 5px);
		width: 10px; height: 10px;
		border-top: 2px solid color-mix(in srgb, var(--green-500) 55%, transparent);
		border-right: 2px solid color-mix(in srgb, var(--green-500) 55%, transparent);
		transform: translateY(-50%) rotate(45deg);
	}
}
.flowstep__dot {
	display: grid; place-items: center;
	width: 48px; height: 48px;
	margin-bottom: .85rem;
	border-radius: 50%;
	background: linear-gradient(150deg, var(--lime-400), var(--green-500));
	color: #fff;
	box-shadow: 0 12px 24px -10px rgba(47, 158, 91, .7);
	transition: transform .5s var(--ease-out);
}
.flowstep:hover .flowstep__dot { transform: rotateY(360deg); }
.flowstep__no {
	position: absolute;
	top: .75rem; right: 1rem;
	font-family: var(--font-display);
	font-size: 1.6rem;
	font-weight: 700;
	line-height: 1;
	color: color-mix(in srgb, var(--green-500) 16%, transparent);
}
.flowstep__title { font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.3; }
.flowstep__text { margin-top: .35rem; font-size: var(--fs-box); color: var(--muted); line-height: 1.55; }

/* Closing CTA tile that fills the last slot of the journey grid. */
.flowstep--cta {
	display: flex;
	flex-direction: column;
	background:
		radial-gradient(120% 120% at 85% 0%, rgba(123, 224, 75, .22), transparent 60%),
		linear-gradient(160deg, var(--forest-700), var(--forest-900));
	border-color: transparent;
	color: #fff;
}
.flowstep--cta:hover { border-color: color-mix(in srgb, var(--lime-400) 40%, transparent); }
.flowstep--cta .flowstep__title { color: #fff; }
.flowstep--cta .flowstep__text { color: rgba(255, 255, 255, .78); }
.flowstep--cta .btn-row { margin-top: auto; }
.flowstep__dot--light { background: rgba(255, 255, 255, .14); color: var(--lime-400); box-shadow: none; }
/* The journey ends at the CTA, so no arrow points out of the final step. */
.flowstep--cta::after { display: none; }
@media (min-width: 900px) { .flowstep:nth-last-child(2)::after { display: none; } }

/* Dark CTA tile that closes the objectives / services grid. */
.objcard--cta {
	display: flex;
	flex-direction: column;
	background:
		radial-gradient(120% 120% at 85% 0%, rgba(123, 224, 75, .22), transparent 60%),
		linear-gradient(160deg, var(--forest-700), var(--forest-900));
	border-color: transparent;
	color: #fff;
}
.objcard--cta:hover { border-color: color-mix(in srgb, var(--lime-400) 40%, transparent); }
.objcard--cta::before { display: none; }
.objcard--cta .objcard__title { color: #fff; }
.objcard--cta .objcard__text { color: rgba(255, 255, 255, .78); }
.objcard--cta .btn-row { margin-top: auto; }
.objcard__icon--light { background: rgba(255, 255, 255, .14); color: var(--lime-400); box-shadow: none; }

/* Single-column variant for narrow columns (no orphan grid cells). */
@media (min-width: 700px) { .steps--stack { grid-template-columns: 1fr; } }

/* Five-step flow: one row on wide screens, so no orphan cell. */
@media (min-width: 900px) { .flowline--five { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
@media (min-width: 900px) {
	.flowline--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.flowline--three .flowstep:not(:nth-child(3n))::after { display: block; }
	.flowline--three .flowstep:last-child::after { display: none; }
}
@media (min-width: 900px) { .flowline--five .flowstep:not(:nth-child(5n))::after { display: block; } }
/* ...but never after the final step. */
@media (min-width: 900px) { .flowline--five .flowstep:last-child::after { display: none; } }

/* Four-across variants (8 tiles fill two rows exactly). */
@media (min-width: 1000px) { .objgrid--four { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .expgrid--four { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Resource hub cards */
.rescard {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: clamp(1.35rem, 1.1rem + 1vw, 1.85rem);
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-xl);
	box-shadow: var(--shadow-sm);
	transition: transform .45s var(--ease-out), box-shadow .45s var(--ease), border-color .45s var(--ease);
}
.rescard:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: color-mix(in srgb, var(--green-500) 30%, var(--line)); }
.rescard.is-pending { background: color-mix(in srgb, var(--paper-2) 60%, var(--white)); }
.rescard__icon {
	display: grid; place-items: center;
	width: 48px; height: 48px;
	margin-bottom: .85rem;
	border-radius: 14px;
	background: linear-gradient(150deg, var(--lime-400), var(--green-500));
	color: #fff;
	box-shadow: 0 12px 24px -10px rgba(47, 158, 91, .7);
	transition: transform .5s var(--ease-out);
}
.rescard:hover .rescard__icon { transform: translateY(-2px) rotate(-6deg); }
.rescard__type { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--clay-500); }
.rescard__title { margin-top: .3rem; font-size: var(--fs-lg); font-weight: 700; letter-spacing: -.02em; line-height: 1.3; }
.rescard__text { margin-top: .35rem; font-size: var(--fs-box); color: var(--muted); line-height: 1.55; }
.rescard__link {
	margin-top: auto;
	padding-top: 1rem;
	display: inline-flex; align-items: center; gap: .5rem;
	font-size: var(--fs-sm); font-weight: 700;
	color: var(--forest-800); text-decoration: none;
}
.rescard__link .icon { transition: transform .3s var(--ease-out); }
.rescard__link:hover .icon { transform: translateY(3px); }
.rescard__link--soon { color: var(--muted); font-weight: 600; }

/* Short-film grid (Media & Publications) */
.film-grid { display: grid; gap: clamp(1rem, .8rem + 1vw, 1.6rem); grid-template-columns: 1fr; }
@media (min-width: 700px) { .film-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .film-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.film { margin: 0; }
.film__frame {
	position: relative;
	aspect-ratio: 16 / 9;
	border-radius: var(--r-lg);
	overflow: hidden;
	background: var(--forest-900);
	box-shadow: var(--shadow-md);
}
.film__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
.film__cap { margin-top: .75rem; font-size: var(--fs-base); font-weight: 700; letter-spacing: -.01em; color: #fff; }

/* Six index cards read best as 3 x 2 rather than auto-fitting to four. */
@media (min-width: 700px)  { .svc-grid--three { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .svc-grid--three { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* expcard can be a link (contact enquiry routes) - keep it looking like a card. */
a.expcard { text-decoration: none; color: inherit; }

/* Closing line under the contact map. */
.closing-line {
	margin: clamp(2rem, 1.5rem + 2vw, 3rem) auto 0;
	max-width: 46ch;
	text-align: center;
	font-family: var(--font-display);
	font-size: var(--fs-xl);
	font-weight: 600;
	letter-spacing: -.02em;
	line-height: 1.35;
	color: var(--forest-700);
}
/* Helper note under the board grid. */
.board-note { margin-top: clamp(1.5rem, 1.2rem + 1vw, 2.25rem); text-align: center; font-size: var(--fs-sm); color: var(--muted); }

/* --------------------------------------------------------------------------
   Blog: topic bar, archive intro, empty state
   -------------------------------------------------------------------------- */
.topicbar {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin-bottom: clamp(1.75rem, 1.4rem + 1.4vw, 2.75rem);
}
.topicbar--tags { margin: clamp(2rem, 1.6rem + 1.4vw, 3rem) 0 0; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.topic {
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	padding: .5rem 1rem;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-pill);
	font-size: var(--fs-sm);
	font-weight: 700;
	color: var(--forest-800);
	text-decoration: none;
	transition: background .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease), transform .3s var(--ease-out);
}
.topic:hover { transform: translateY(-2px); background: var(--forest-800); border-color: var(--forest-800); color: #fff; }
.topic.is-active { background: var(--forest-800); border-color: var(--forest-800); color: #fff; }
.topic__n {
	display: inline-grid; place-items: center;
	min-width: 20px; height: 20px;
	padding: 0 .35rem;
	border-radius: var(--r-pill);
	background: color-mix(in srgb, var(--green-500) 16%, transparent);
	font-size: var(--fs-xs);
	color: var(--forest-700);
}
.topic:hover .topic__n, .topic.is-active .topic__n { background: rgba(255,255,255,.18); color: var(--lime-400); }

.archive-intro { max-width: 62ch; margin-bottom: clamp(1.75rem, 1.4rem + 1.4vw, 2.5rem); }

.empty-state {
	max-width: 46ch;
	margin-inline: auto;
	padding: clamp(2rem, 1.5rem + 3vw, 3.5rem) clamp(1.5rem, 1rem + 2vw, 2.5rem);
	text-align: center;
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-xl);
	box-shadow: var(--shadow-sm);
}
.empty-state__icon {
	display: grid; place-items: center;
	width: 64px; height: 64px;
	margin: 0 auto 1rem;
	border-radius: 50%;
	background: color-mix(in srgb, var(--green-500) 14%, transparent);
	color: var(--forest-700);
}
.empty-state__form { margin: 1.5rem 0; }

/* Four-step flow (collection centres) */
@media (min-width: 900px) {
	.flowline--four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.flowline--four .flowstep:last-child::after { display: none; }
}

/* Do's and don'ts */
.dd-grid { display: grid; gap: clamp(1.25rem, 1rem + 1.4vw, 2rem); grid-template-columns: 1fr; }
@media (min-width: 860px) { .dd-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.dd {
	padding: clamp(1.5rem, 1.2rem + 1.4vw, 2.25rem);
	background: var(--white);
	border: 1px solid var(--line);
	border-radius: var(--r-xl);
	box-shadow: var(--shadow-sm);
}
.dd--do   { border-top: 4px solid var(--green-500); }
.dd--dont { border-top: 4px solid var(--clay-500); }
.dd__title { display: flex; align-items: center; gap: .65rem; font-size: var(--fs-xl); font-weight: 700; letter-spacing: -.02em; }
.dd__mark { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; }
.dd--do   .dd__mark { background: color-mix(in srgb, var(--green-500) 16%, transparent); color: var(--forest-700); }
.dd--dont .dd__mark { background: color-mix(in srgb, var(--clay-500) 16%, transparent); color: var(--clay-500); }
.dd__list { list-style: none; margin: 1.15rem 0 0; padding: 0; display: grid; gap: .8rem; }
.dd__list li { position: relative; padding-left: 1.15rem; font-size: var(--fs-base); color: var(--muted); line-height: 1.55; }
.dd__list li::before { content: ""; position: absolute; left: 0; top: .6em; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .45; }

/* Legal / policy reading column */
.legal-prose h2 { margin-top: 2.25rem; }
.legal-prose h3 { margin-top: 1.75rem; }

/* Board card: click cue + profile link */
.tmember__cue {
	position: absolute;
	right: .8rem; bottom: .8rem;
	display: grid; place-items: center;
	width: 40px; height: 40px;
	border-radius: 50%;
	background: var(--white);
	color: var(--forest-800);
	box-shadow: 0 8px 20px -6px rgba(6, 42, 27, .45);
	opacity: 0;
	transform: translateY(6px);
	transition: opacity .35s var(--ease), transform .35s var(--ease-out), background .3s var(--ease);
}
.tmember:hover .tmember__cue,
.tmember__open:focus-visible .tmember__cue { opacity: 1; transform: translateY(0); }
.tmember:hover .tmember__cue { background: var(--lime-500); }
.tmember__link {
	margin-top: .6rem;
	display: inline-flex; align-items: center; gap: .45rem;
	padding: 0;
	background: none; border: 0; cursor: pointer;
	font-family: inherit;
	font-size: var(--fs-sm); font-weight: 700;
	color: var(--forest-700);
}
.tmember__link .icon { transition: transform .3s var(--ease-out); }
.tmember__link:hover .icon { transform: translateX(4px); }
.tmember__link:focus-visible { outline: 2px solid var(--forest-600); outline-offset: 3px; border-radius: var(--r-sm); }

/* --------------------------------------------------------------------------
   Video showcase — preview card with lightbox
   -------------------------------------------------------------------------- */
.vidshow__card {
	position: relative;
	border-radius: var(--r-xl);
	overflow: hidden;
	background: var(--forest-900);
	box-shadow: var(--shadow-lg);
	cursor: pointer;
	max-width: 960px;
	margin-inline: auto;
}
.vidshow__preview {
	display: block;
	width: 100%;
	height: auto;
	transition: transform .6s var(--ease-out), filter .4s var(--ease);
}
.vidshow__card:hover .vidshow__preview { transform: scale(1.03); filter: brightness(.85); }
.vidshow__play {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background: none;
	border: 0;
	cursor: pointer;
	z-index: 1;
}
.vidshow__play-ring {
	width: clamp(64px, 8vw, 88px);
	height: clamp(64px, 8vw, 88px);
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: rgba(255, 255, 255, .92);
	color: var(--forest-800);
	box-shadow: 0 16px 40px -8px rgba(4, 24, 10, .4);
	transition: transform .35s var(--ease-out), box-shadow .35s var(--ease);
}
.vidshow__play-ring svg { margin-left: 3px; }
.vidshow__card:hover .vidshow__play-ring {
	transform: scale(1.12);
	box-shadow: 0 0 0 14px rgba(255, 255, 255, .18), 0 20px 48px -8px rgba(4, 24, 10, .5);
}

/* Lightbox */
.vidlightbox {
	position: fixed;
	inset: 0;
	z-index: 10000;
	display: grid;
	place-items: center;
	padding: clamp(1rem, 2vw, 2.5rem);
	background: rgba(0, 0, 0, .92);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	opacity: 0;
	visibility: hidden;
	transition: opacity .4s var(--ease), visibility .4s;
}
.vidlightbox.is-open { opacity: 1; visibility: visible; }
.vidlightbox__body {
	width: min(92vw, 1100px);
	position: relative;
	border-radius: var(--r-xl);
	overflow: hidden;
	box-shadow: 0 48px 100px -24px rgba(0, 0, 0, .7);
	transform: scale(.92);
	transition: transform .4s var(--ease-out);
}
.vidlightbox.is-open .vidlightbox__body { transform: scale(1); }
.vidlightbox__video {
	display: block;
	width: 100%;
	height: auto;
	background: #000;
}
.vidlightbox__close {
	position: fixed;
	top: clamp(1rem, 2vw, 1.5rem);
	right: clamp(1rem, 2vw, 1.5rem);
	width: 44px;
	height: 44px;
	display: grid;
	place-items: center;
	background: rgba(255, 255, 255, .1);
	border: 1px solid rgba(255, 255, 255, .2);
	border-radius: 50%;
	color: #fff;
	cursor: pointer;
	z-index: 1;
	transition: background .25s var(--ease), transform .25s var(--ease);
}
.vidlightbox__close:hover { background: rgba(255, 255, 255, .22); transform: rotate(90deg); }

/* ==========================================================================
   Mobile fixes
   ========================================================================== */

/* Hero — compact on mobile, not full viewport */
@media (max-width: 768px) {
	.hero { min-height: auto; }
	.hero__inner { padding-block: calc(var(--header-h) + 2.5rem) 2rem; }
	.hero__title { font-size: clamp(1.4rem, 1.1rem + 1.5vw, 2rem); }
	.hero__text { font-size: var(--fs-base); margin-top: .75rem; }
	.hero__nav { margin-top: 1.5rem; }
}

/* About section — full-width video, badge hidden on mobile */
@media (max-width: 899px) {
	.about-figure {
		min-height: auto;
		aspect-ratio: auto;
		padding: 1rem;
		border-radius: var(--r-xl);
	}
	.about-figure__video video {
		max-width: 100%;
	}
	.about-figure__badge { display: none; }
}

/* Board members — hide short bio on mobile */
@media (max-width: 768px) {
	.tmember__bio { display: none; }
}

/* Journey section — bottom spacing */
#journey-road { padding-bottom: clamp(2.5rem, 2rem + 2vw, 4rem); }
@media (max-width: 760px) {
	.road__list { padding-bottom: 1.5rem; }
}

/* Why Choose — on mobile, reorder so image comes after heading */
@media (max-width: 959px) {
	.why2__grid { display: flex; flex-direction: column; }
	.why2__media { order: -1; }
	.why2__media .why-360 { position: static; }
	.why-360 img { max-width: 320px; margin-inline: auto; }
}

/* Contact Form 7 — match theme form styles */
.wpcf7 .wpcf7-form { display: grid; gap: 1.15rem; }
.wpcf7 .wpcf7-form-control:not(.wpcf7-submit) {
	display: block;
	width: 100%;
	padding: .7rem 1rem;
	font-family: inherit;
	font-size: var(--fs-base);
	border: 1px solid var(--line);
	border-radius: var(--r-md);
	background: var(--white);
	color: var(--fg);
	transition: border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.wpcf7 .wpcf7-form-control:not(.wpcf7-submit):focus {
	outline: none;
	border-color: var(--forest-600);
	box-shadow: 0 0 0 3px rgba(28, 107, 57, .12);
}
.wpcf7 textarea.wpcf7-form-control { min-height: 140px; resize: vertical; }
.wpcf7 select.wpcf7-form-control {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235C6B63' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1rem center;
	padding-right: 2.5rem;
}
.wpcf7 .wpcf7-submit {
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	padding: .8rem 1.6rem;
	font-family: inherit;
	font-size: var(--fs-sm);
	font-weight: 700;
	letter-spacing: .02em;
	text-transform: none;
	color: var(--forest-900);
	background: var(--lime-500);
	border: 0;
	border-radius: var(--r-pill);
	cursor: pointer;
	transition: background .25s var(--ease), transform .25s var(--ease);
}
.wpcf7 .wpcf7-submit:hover { background: var(--lime-400); transform: translateY(-1px); }
.wpcf7 .wpcf7-response-output {
	margin: .75rem 0 0 !important;
	padding: .75rem 1rem !important;
	border-radius: var(--r-md) !important;
	font-size: var(--fs-sm);
	border-color: var(--line) !important;
}
.wpcf7 .wpcf7-not-valid-tip { font-size: var(--fs-xs); color: var(--clay-500); margin-top: .3rem; }
.wpcf7 .form__row { display: grid; gap: 1.15rem; }
@media (min-width: 620px) { .wpcf7 .form__row--2 { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.wpcf7 .field label { font-size: var(--fs-sm); font-weight: 700; letter-spacing: -.01em; display: block; margin-bottom: .45rem; }
.wpcf7 .field label .req { color: var(--clay-500); }
.wpcf7 .form__note { font-size: var(--fs-sm); color: var(--muted); }

/* Footer — smaller "Clean to Green" watermark on mobile */
@media (max-width: 768px) {
	.footer__mark { font-size: clamp(2rem, 1rem + 8vw, 3.5rem); margin-top: 1.5rem; }
	.footer__top { grid-template-columns: 1fr 1fr; gap: 2rem; }
}
@media (max-width: 480px) {
	.footer__top { grid-template-columns: 1fr; }
}

/* Government partnerships — hide image on mobile, keep logo rail */
@media (max-width: 899px) {
	#government .split { gap: 2rem; }
	#government .split > div:last-child > .media { display: none; }
	#government [data-reveal] { opacity: 1; transform: none; }
	#government .marquee { margin-top: 0; }
}

/* CTA band — tighter on mobile */
@media (max-width: 768px) {
	.cta-band__inner { gap: 1.25rem; }
}

/* About page — collage tighter on mobile */
@media (max-width: 899px) {
	.abt-collage { gap: .5rem; }
	.abt-collage--sticky { position: static; }
	.leader__img-col { max-width: 280px; }
}
@media (max-width: 520px) {
	.abt-collage { grid-template-columns: 1fr 1fr; }
}

/* General mobile polish */
@media (max-width: 480px) {
	.btn-row { flex-wrap: wrap; }
	.btn { font-size: var(--fs-sm); padding: .7rem 1.3rem; }
	.sec-head__title { font-size: clamp(1.15rem, 1rem + .8vw, 1.5rem); }
	.lead { font-size: var(--fs-base); }
	.eyebrow { font-size: var(--fs-xs); }
	.stat-strip { grid-template-columns: 1fr 1fr; }
	.stat-strip b { font-size: 1.5rem; }
}
