/* ==========================================================================
   Fulcrum Point
   1 Tokens   2 Base   3 Header   4 Hero   5 Sections   6 Bands
   7 Cards and lists   8 Components   9 Form   10 Footer   11 Consent
   12 Motion and print

   Three colours: white, black, deep green. One typeface, whose strokes end flat
   and whose full stops are square, so arrows, the plus and the small point are
   drawn flat and square too. The disc belongs to the logo (a disc with a turned
   F cut out of it), the step numbers and the round controls.
   Single-colour bands carry a quiet field: the page grid as hairlines that draw
   in, a square point riding the rule under the bar, a light that leans to the
   pointer. Picture bands open like a curtain and travel slower than the page.
   Headings sit in a left rail, content in the right column, a hairline opens
   each section. Content stops growing at --max and centres, so a 2100px or
   2560px screen gains margin instead of stretched lines.
   Written for older Chromium too: hex colours, no nesting, no container queries.
   ========================================================================== */

@font-face {
	font-family: "Hanken Grotesk";
	src: url("../fonts/hanken-grotesk-latin.woff2") format("woff2");
	font-weight: 300 600;
	font-style: normal;
	font-display: swap;
}
/* Arial cut to Hanken's proportions, so the swap barely moves the lines. */
@font-face {
	font-family: "HG Fallback";
	src: local("Arial");
	size-adjust: 98.5%;
	ascent-override: 100%;
	descent-override: 30%;
	line-gap-override: 0%;
}

/* 1 Tokens ---------------------------------------------------------------- */

:root {
	--white: #FFFFFF;
	--bone: #F4F7F4;
	--ink: #0A110D;
	--ink-2: #3D4440;
	--ink-3: #565D59;
	--forest: #0F2D1F;
	--forest-2: #193B2A;
	--green: #115536;
	--green-d: #074328;
	--mint: #A8E5C0;
	--paper: #EEF1EE;
	--paper-2: #CFD7D0;
	--error: #831A18;

	--rule: rgba(10, 17, 13, 0.16);
	--rule-firm: rgba(10, 17, 13, 0.62);
	--rule-dark: rgba(238, 241, 238, 0.24);

	/* Type grows a little with the screen and never jumps. Body is 16px on a phone, 20px at 1280, 21px at 1920, 22px at 2560. */
	--step--1: max(0.875rem, min(0.73869rem + 0.47324vw, 0.83534rem + 0.2316vw, 0.92996rem + 0.11333vw, 1.0226rem + 0.055448vw));
	--step-0: min(0.875rem + 0.625vw, 1rem + 0.3125vw, 1.125rem + 0.15625vw, 1.25rem + 0.078125vw);
	--step-1: min(1.0362rem + 0.81924vw, 1.1968rem + 0.41771vw, 1.3606rem + 0.21296vw, 1.5276rem + 0.10856vw);
	--step-2: min(1.2266rem + 1.067vw, 1.4318rem + 0.55399vw, 1.645rem + 0.28754vw, 1.8663rem + 0.1492vw);
	--step-3: min(1.4516rem + 1.3822vw, 1.7125rem + 0.72989vw, 1.9882rem + 0.38522vw, 2.2795rem + 0.2032vw);
	--step-4: min(1.7172rem + 1.782vw, 2.0475rem + 0.95625vw, 2.4023rem + 0.5127vw, 2.7832rem + 0.27466vw);
	--step-5: min(2.0307rem + 2.288vw, 2.4472rem + 1.2467vw, 2.9018rem + 0.67853vw, 3.3972rem + 0.36889vw);
	--step-7: min(2.8368rem + 3.732vw, 3.4923rem + 2.0933vw, 4.2293rem + 1.172vw, 5.0564rem + 0.65506vw);
	--display: min(1.5rem + 4.5vw, var(--step-7));

	--line: calc(1.5 * var(--step-0));
	--gutter: calc(0.5rem + 2.5vw);
	--max: 112rem;
	--pad: max(var(--gutter), calc((100% - var(--max)) / 2));
	--section-y: calc(2.4 * var(--step-3));
	--measure: 34em;
	--radius: 5px;
	--ease: cubic-bezier(0.19, 1, 0.22, 1);
	--arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.4' stroke-linejoin='miter'%3E%3Cpath d='M3.5 12h16.4M14.5 6l6 6-6 6'/%3E%3C/svg%3E");
	--plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.4'%3E%3Cpath d='M12 3.5v17M3.5 12h17'/%3E%3C/svg%3E");
	--font: "Hanken Grotesk", "HG Fallback", Arial, sans-serif;
}

/* 2 Base ------------------------------------------------------------------ */

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

html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }

body {
	margin: 0;
	background: var(--white);
	color: var(--ink-2);
	font-family: var(--font);
	font-size: var(--step-0);
	font-weight: 400;
	line-height: 1.5;
	font-synthesis: none;
	font-kerning: normal;
	overflow-x: hidden;
}

h1, h2, h3, h4 { margin: 0; color: var(--ink); font-weight: 450; line-height: 1.12; letter-spacing: -0.015em; text-wrap: balance; }
h1 { font-size: var(--display); font-weight: 400; line-height: 1.02; letter-spacing: -0.025em; }
h2 { font-size: var(--step-4); }
h3 { font-size: var(--step-2); font-weight: 500; line-height: 1.2; letter-spacing: -0.01em; }
h4 { font-size: var(--step-1); font-weight: 500; line-height: 1.3; letter-spacing: 0; }

p { margin: 0 0 var(--line); max-width: var(--measure); text-wrap: pretty; }
p:last-child { margin-bottom: 0; }
strong, b { font-weight: 500; color: var(--ink); }
em, i, cite { font-style: normal; }

a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.2em; transition: color 0.15s ease; }
a:hover { color: var(--green); }

:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; border-radius: 2px; }

img, video { display: block; max-width: 100%; height: auto; }
figure { margin: 0; }
ul, ol { margin: 0 0 var(--line); padding: 0 0 0 1.2em; max-width: var(--measure); }
li { margin: 0 0 0.45em; }
dl, dd { margin: 0; }
button { font-family: inherit; }
::selection { background: var(--mint); color: var(--ink); }

.screen-reader-text, .fp-visually-hidden {
	position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
	clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* Dark grounds: light text, lighter accent, thinner rendering. */
.fp-hero, .fp-cta, .fp-band, .fp-card, header.wp-block-template-part, footer.wp-block-template-part {
	color: var(--paper);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
.fp-hero h1, .fp-hero h2, .fp-hero h3, .fp-cta h2, .fp-cta h3, .fp-band h2, .fp-band h3, .fp-card h3 { color: var(--paper); }
.fp-hero strong, .fp-cta strong, .fp-band strong, footer.wp-block-template-part strong { color: var(--paper); }
.fp-hero a:hover, .fp-cta a:hover, .fp-band a:hover, header.wp-block-template-part a:hover, footer.wp-block-template-part a:hover { color: var(--mint); }
.fp-hero :focus-visible, .fp-cta :focus-visible, .fp-band :focus-visible, .fp-card :focus-visible, header.wp-block-template-part :focus-visible, footer.wp-block-template-part :focus-visible { outline-color: var(--mint); }

/* Buttons. Solid green on light grounds, near-white on dark ones. The point leads every solid button. */
.wp-block-buttons { display: flex; flex-wrap: wrap; align-items: center; gap: calc(var(--line) * 0.5) var(--line); margin: 0; }
.wp-block-button { margin: 0; }
.wp-block-button__link, .fp-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.7em;
	min-height: 3em; padding: 0.7em 1.5em;
	border: 1px solid transparent; border-radius: var(--radius);
	background: var(--green); color: #FFFFFF;
	font-family: inherit; font-size: var(--step-0); font-weight: 500; line-height: 1.2; letter-spacing: 0;
	text-decoration: none; cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.wp-block-button__link::after, .fp-btn::after { content: ""; flex: none; width: 1.15em; height: 1.15em; margin-right: -0.2em; background: currentColor; -webkit-mask: var(--arrow) center / contain no-repeat; mask: var(--arrow) center / contain no-repeat; transition: transform 0.3s var(--ease); }
.wp-block-button__link:hover::after, .fp-btn:hover::after { transform: translateX(0.25em); }
.wp-block-button__link:hover, .fp-btn:hover { background: var(--green-d); color: #FFFFFF; }
.fp-hero .wp-block-button__link, .fp-cta .wp-block-button__link, .fp-band .wp-block-button__link, header.wp-block-template-part .fp-btn { background: var(--paper); color: var(--ink); }
.fp-hero .wp-block-button__link:hover, .fp-cta .wp-block-button__link:hover, .fp-band .wp-block-button__link:hover, header.wp-block-template-part .fp-btn:hover { background: var(--mint); color: var(--ink); }
.fp-btn--small { min-height: 2.75em; padding: 0.5em 1.1em; font-size: var(--step--1); }
.fp-btn--line { background: var(--white); color: var(--ink); border-color: var(--rule-firm); }
.fp-btn--line:hover { background: var(--bone); color: var(--ink); }
.fp-btn--dark { background: var(--ink); color: var(--paper); }
.fp-btn--dark:hover { background: #000000; color: var(--paper); }

/* The quiet button: a text link with an arrow. */
.is-style-fp-quiet .wp-block-button__link,
.fp-hero .is-style-fp-quiet .wp-block-button__link,
.fp-cta .is-style-fp-quiet .wp-block-button__link,
.fp-band .is-style-fp-quiet .wp-block-button__link {
	min-height: 2.75em; padding: 0; border: 0; border-radius: 0; background: none; color: inherit;
	font-weight: 400; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.2em;
}
.is-style-fp-quiet .wp-block-button__link:hover { background: none; color: var(--green); }
.fp-hero .is-style-fp-quiet .wp-block-button__link:hover, .fp-cta .is-style-fp-quiet .wp-block-button__link:hover, .fp-band .is-style-fp-quiet .wp-block-button__link:hover { background: none; color: var(--mint); }
.is-style-fp-quiet .wp-block-button__link::after, .fp-more a::after {
	content: ""; display: inline-block; width: 1.15em; height: 1.15em; vertical-align: -0.22em; background: currentColor; -webkit-mask: var(--arrow) center / contain no-repeat; mask: var(--arrow) center / contain no-repeat; margin-left: 0.5em; transition: transform 0.3s var(--ease);
}
.is-style-fp-quiet .wp-block-button__link:hover::after, .fp-more a:hover::after { transform: translateX(0.25em); }
.fp-more { margin-top: var(--line); }

/* 3 Header ---------------------------------------------------------------- */

header.wp-block-template-part { position: absolute; top: 0; left: 0; right: 0; z-index: 30; }

.fp-skip {
	position: absolute; left: var(--gutter); top: -6em; z-index: 60;
	padding: 0.7em 1.1em; border-radius: var(--radius); background: var(--paper); color: var(--ink);
	font-weight: 500; text-decoration: none;
}
.fp-skip:focus { top: 0.75em; color: var(--ink); }

.fp-header__bar { display: flex; align-items: center; justify-content: space-between; gap: var(--line); padding: calc(var(--line) * 0.85) var(--pad); }
.fp-brand { display: inline-flex; align-items: center; gap: 0.6em; min-height: 2.75em; color: inherit; font-size: var(--step-1); font-weight: 500; letter-spacing: -0.01em; line-height: 1; text-decoration: none; white-space: nowrap; }
/* The icon is a disc with a bold turned F cut out of it. On hover it turns until the F stands upright. */
.fp-brand__mark { flex: none; width: 1.5em; height: 1.5em; transition: transform 0.7s var(--ease); }
.fp-brand:hover .fp-brand__mark { transform: rotate(-45deg); }

.fp-nav__list { display: flex; align-items: center; gap: calc(var(--line) * 1.15); margin: 0; padding: 0; max-width: none; list-style: none; font-size: var(--step--1); }
.fp-nav__list li { margin: 0; }
.fp-nav__list > li > a:not(.fp-btn), .fp-nav__toggle {
	display: inline-flex; align-items: center; gap: 0.45em; min-height: 2.75em; padding: 0;
	border: 0; background: none; color: inherit; font: inherit; text-decoration: none; white-space: nowrap; cursor: pointer;
}
.fp-nav__toggle::after { content: ""; width: 0.42em; height: 0.42em; margin-top: -0.2em; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transition: transform 0.2s ease; }
.fp-nav__toggle[aria-expanded="true"]::after { margin-top: 0.15em; transform: rotate(-135deg); }
.fp-nav__list > li > a:not(.fp-btn):hover, .fp-nav__toggle:hover, .fp-nav__list > li > a[aria-current="page"], .fp-nav__toggle.is-current { text-decoration: underline; text-underline-offset: 0.4em; text-decoration-thickness: 1px; }
.fp-nav__toggle:hover { color: var(--mint); }

.fp-nav__group { position: relative; }
.fp-nav__sub {
	display: none; position: absolute; top: calc(100% + 0.3em); left: -1em; z-index: 5;
	min-width: 17em; margin: 0; padding: 0.5em; max-width: none; list-style: none;
	border-radius: var(--radius); background: var(--paper); color: var(--ink);
	box-shadow: 0 1.2em 2.8em rgba(10, 17, 13, 0.28);
}
.fp-nav__group.is-open > .fp-nav__sub { display: block; }
.fp-nav__sub a { display: block; padding: 0.65em 0.8em; border-radius: 3px; text-decoration: none; }
.fp-nav__sub a:hover, .fp-nav__sub a[aria-current="page"] { background: var(--white); color: var(--green); }
.fp-nav__sub .fp-nav__all { margin-top: 0.3em; padding-top: 0.3em; border-top: 1px solid var(--rule); }
header.wp-block-template-part .fp-nav__sub a:hover { color: var(--green); }
header.wp-block-template-part .fp-nav__sub :focus-visible { outline-color: var(--green); }

.fp-menu-btn { display: none; align-items: center; gap: 0.6em; min-height: 2.75em; padding: 0 0.2em; border: 0; background: none; color: inherit; font: inherit; font-size: var(--step-0); font-weight: 500; cursor: pointer; }
.fp-menu-btn__icon { position: relative; width: 1.4em; height: 0.75em; }
.fp-menu-btn__icon::before, .fp-menu-btn__icon::after { content: ""; position: absolute; left: 0; right: 0; height: 1.5px; background: currentColor; transition: transform 0.2s ease, top 0.2s ease, bottom 0.2s ease; }
.fp-menu-btn__icon::before { top: 0; }
.fp-menu-btn__icon::after { bottom: 0; }
.fp-menu-btn[aria-expanded="true"] .fp-menu-btn__icon::before { top: calc(50% - 0.75px); transform: rotate(45deg); }
.fp-menu-btn[aria-expanded="true"] .fp-menu-btn__icon::after { bottom: calc(50% - 0.75px); transform: rotate(-45deg); }

@media (max-width: 56em) {
	.fp-menu-btn { display: inline-flex; position: relative; z-index: 50; }
	.fp-brand { position: relative; z-index: 50; }
	.fp-nav { display: none; position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 40; overflow-y: auto; padding: calc(var(--line) * 5) var(--gutter) calc(var(--line) * 2); background: var(--forest); }
	.fp-nav.is-open { display: block; }
	.fp-nav__list { flex-direction: column; align-items: stretch; gap: 0; font-size: var(--step-3); }
	.fp-nav__list > li { border-top: 1px solid var(--rule-dark); }
	.fp-nav__list > li > a:not(.fp-btn) { display: flex; min-height: 0; padding: 0.55em 0; letter-spacing: -0.015em; white-space: normal; }
	.fp-nav__toggle { display: block; min-height: 0; padding: 0.9em 0 0.3em; font-size: var(--step--1); color: var(--paper-2); cursor: default; pointer-events: none; }
	.fp-nav__toggle::after { display: none; }
	.fp-nav__sub { display: block; position: static; min-width: 0; padding: 0 0 0.6em; background: none; color: inherit; box-shadow: none; }
	.fp-nav__sub a { padding: 0.3em 0; border-radius: 0; letter-spacing: -0.015em; }
	.fp-nav__sub a:hover, .fp-nav__sub a[aria-current="page"], header.wp-block-template-part .fp-nav__sub a:hover { background: none; color: var(--mint); }
	.fp-nav__sub .fp-nav__all { margin: 0; padding: 0; border: 0; font-size: var(--step-0); }
	header.wp-block-template-part .fp-nav__sub :focus-visible { outline-color: var(--mint); }
	.fp-nav__list .fp-nav__cta { padding-top: var(--line); }
	.fp-nav__list .fp-btn { display: flex; min-height: 3.2em; font-size: var(--step-0); }
	body.fp-nav-open { overflow: hidden; }
}

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

.fp-hero {
	position: relative; isolation: isolate; overflow: hidden;
	display: flex; flex-direction: column; justify-content: flex-end;
	min-height: min(100vh, 60rem);
	min-height: min(100svh, 60rem);
	padding: calc(var(--line) * 6) var(--pad) 0;
	background: var(--forest);
}
.fp-hero > .fp-hero__media { position: absolute; top: 0; right: 0; bottom: -18%; left: 0; z-index: -2; margin: 0; overflow: hidden; transform: translate3d(0, var(--py, 0px), 0); }
.fp-hero__content, .fp-facts, .fp-hero__facts { transform: translate3d(0, var(--cy, 0px), 0); opacity: var(--co, 1); }
.fp-hero > .fp-hero__media img, .fp-hero > .fp-hero__media video { width: 100%; height: 100%; object-fit: cover; object-position: 72% 50%; }
.fp-hero::before {
	content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1;
	background:
		linear-gradient(90deg, rgba(10, 17, 13, 0.84) 0%, rgba(10, 17, 13, 0.52) 46%, rgba(10, 17, 13, 0.06) 100%),
		linear-gradient(0deg, rgba(10, 17, 13, 0.78) 0%, rgba(10, 17, 13, 0) 45%),
		rgba(15, 45, 31, 0.28);
}
.fp-hero__content { max-width: 64rem; padding-bottom: calc(var(--line) * 2.5); }
.fp-hero h1 { max-width: 13em; margin-bottom: calc(var(--line) * 1.1); }
.fp-hero .fp-lead { max-width: 31em; margin-bottom: calc(var(--line) * 1.4); color: var(--paper); }
.fp-hero .fp-hero__role { margin-bottom: 0.3em; color: var(--paper-2); }
.fp-hero__crumb { margin-bottom: calc(var(--line) * 0.8); font-size: var(--step--1); }
.fp-hero__crumb a { text-decoration: none; }
.fp-hero__crumb a::before { content: ""; display: inline-block; width: 1.15em; height: 1.15em; vertical-align: -0.22em; background: currentColor; -webkit-mask: var(--arrow) center / contain no-repeat; mask: var(--arrow) center / contain no-repeat; margin-right: 0.5em; transform: rotate(180deg); transition: transform 0.3s var(--ease); }
.fp-hero__crumb a:hover::before { transform: rotate(180deg) translateX(0.25em); }

/* The moving picture. Enlarged from the top left, so the subject sits to the right of the headline and the
   generator's corner mark falls outside the frame. The first frame sits soft; once the clip plays it settles
   to a light blur that keeps the type crisp and the picture cheap to draw. The video overhangs its frame so
   the blur never shows a pale edge. */
.fp-hero > .fp-hero__media.wp-block-video { transform: translate3d(0, var(--py, 0px), 0) scale(1.18); transform-origin: 0 0; }
.fp-hero > .fp-hero__media video { position: absolute; top: -30px; left: -30px; width: calc(100% + 60px); height: calc(100% + 60px); max-width: none; object-position: 50% 40%; filter: blur(14px); transition: filter 1.8s ease; }
.fp-hero > .fp-hero__media.is-playing video, .fp-hero > .fp-hero__media.is-still video { filter: blur(3px); }
.fp-hero > .fp-hero__media .fp-hero__still { position: absolute; top: -30px; left: -30px; width: calc(100% + 60px); height: calc(100% + 60px); max-width: none; object-fit: cover; object-position: 50% 40%; filter: blur(3px); }
.fp-hero > .fp-hero__media video { transition: filter 1.8s ease, opacity 0.9s ease; }
.fp-hero > .fp-hero__media.is-seam video { opacity: 0; }

.fp-hero__pause {
	position: absolute; right: var(--pad); bottom: calc(var(--line) * 0.9); z-index: 3;
	display: inline-flex; align-items: center; justify-content: center; width: 2.75em; height: 2.75em; min-width: 44px; min-height: 44px; padding: 0;
	border: 1px solid var(--rule-dark); border-radius: 50%; background: rgba(10, 17, 13, 0.4); color: var(--paper); cursor: pointer;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}
.fp-hero__pause[hidden] { display: none; }
.fp-hero__pause:hover { background: var(--paper); border-color: var(--paper); color: var(--ink); }
.fp-hero__pause::before { content: ""; width: 0.7em; height: 0.8em; border-left: 0.22em solid currentColor; border-right: 0.22em solid currentColor; }
.fp-hero__pause[aria-pressed="true"]::before { width: 0; height: 0; margin-left: 0.2em; border: 0.45em solid transparent; border-left: 0.75em solid currentColor; border-right: 0; }

.fp-hero--service { min-height: min(88vh, 54rem); min-height: min(88svh, 54rem); }
.fp-hero--mid { min-height: min(64vh, 40rem); min-height: min(64svh, 40rem); }
.fp-hero--mid h1 { font-size: var(--step-7); }
.fp-hero--compact { min-height: 0; padding-top: calc(var(--line) * 7); }
.fp-hero--compact::before { background: radial-gradient(60rem 30rem at 85% 0%, rgba(168, 229, 192, 0.12), rgba(168, 229, 192, 0) 70%), linear-gradient(90deg, rgba(10, 17, 13, 0.88) 0%, rgba(10, 17, 13, 0.6) 100%), rgba(15, 45, 31, 0.4); }
.fp-hero--compact > .fp-hero__media img { filter: blur(6px); transform: scale(1.08); }
.fp-hero--compact h1 { font-size: var(--step-5); letter-spacing: -0.02em; line-height: 1.06; }
.fp-hero--compact .fp-hero__content { padding-bottom: calc(var(--line) * 2); }

/* Figures along the foot of a hero. */
.fp-facts, .fp-hero__facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--rule-dark); }
.fp-hero__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); padding-right: calc(2.75em + var(--line)); }
.fp-fact, .fp-hero__facts > div { padding: var(--line) var(--line) calc(var(--line) * 1.3) 0; }
.fp-fact + .fp-fact, .fp-hero__facts > div + div { padding-left: var(--line); border-left: 1px solid var(--rule-dark); }
.fp-fact p { margin: 0; max-width: 22em; }
.fp-fact__num { font-size: var(--step-5); line-height: 1; letter-spacing: -0.03em; color: var(--paper); }
.fp-fact__label { margin-top: 0.5em !important; font-weight: 500; color: var(--paper); }
.fp-fact__note, .fp-hero__facts dt { font-size: var(--step--1); color: var(--paper-2); }
.fp-hero__facts dd { max-width: 28em; color: var(--paper); }

/* A downloadable outline: a round arrow that drops on hover. */
.fp-hero__facts.has-pdf { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fp-download, .fp-download a { display: inline-flex; align-items: center; gap: 0.7em; text-decoration: none; }
p.fp-download { margin: calc(var(--line) * 0.6) 0 0; }
.fp-download span { color: var(--ink-3); font-size: var(--step--1); }
.fp-hero .fp-download span { color: var(--paper-2); }
a.fp-download::before, .fp-download a::before { content: ""; flex: none; width: 2.6em; height: 2.6em; border-radius: 50%; background: currentColor;
	/* a ring and an arrow, like every other round control: both are drawn in the mask, so they take the colour of the text */
	-webkit-mask: var(--arrow) center / 46% no-repeat, radial-gradient(closest-side, transparent calc(100% - 1.6px), #000 calc(100% - 1px)) center / 100% 100% no-repeat;
	mask: var(--arrow) center / 46% no-repeat, radial-gradient(closest-side, transparent calc(100% - 1.6px), #000 calc(100% - 1px)) center / 100% 100% no-repeat;
	transform: rotate(90deg); transition: transform 0.3s var(--ease); }
a.fp-download:hover::before, .fp-download a:hover::before { opacity: 1; transform: rotate(90deg) translateX(0.12em); }

/* About: the portrait stands in the hero. */
.fp-hero--split { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: var(--gutter); align-items: end; background: var(--ink); }
.fp-hero--split::before { background: linear-gradient(90deg, rgba(10, 17, 13, 0.84) 0%, rgba(10, 17, 13, 0.52) 58%, rgba(10, 17, 13, 0.2) 100%), rgba(15, 45, 31, 0.28); }
.fp-hero--split .fp-hero__portrait { align-self: end; margin: 0; }
.fp-hero--split .fp-hero__portrait img { width: 100%; height: min(80vh, 50rem); object-fit: cover; object-position: 50% 12%; }

@media (max-width: 52em) {
	.fp-hero { min-height: 0; padding-top: calc(var(--line) * 7); }
	.fp-hero > .fp-hero__media img { object-position: 78% 50%; }
	.fp-hero::before { background: linear-gradient(0deg, rgba(10, 17, 13, 0.92) 0%, rgba(10, 17, 13, 0.7) 60%, rgba(10, 17, 13, 0.5) 100%), rgba(15, 45, 31, 0.28); }
	.fp-facts, .fp-hero__facts, .fp-hero__facts.has-pdf { grid-template-columns: minmax(0, 1fr); padding-right: 0; }
	.fp-fact, .fp-fact + .fp-fact { display: grid; grid-template-columns: 4.2em minmax(0, 1fr); column-gap: var(--line); align-items: baseline; padding: calc(var(--line) * 0.7) 0; border-left: 0; }
	.fp-fact + .fp-fact, .fp-hero__facts > div + div { border-top: 1px solid var(--rule-dark); }
	.fp-hero__facts > div, .fp-hero__facts > div + div { padding: calc(var(--line) * 0.7) 0; border-left: 0; }
	.fp-hero__facts > div:last-child { padding-right: calc(2.75em + var(--line)); }
	.fp-fact__num { grid-row: span 2; font-size: var(--step-4); }
	.fp-fact__label { margin-top: 0 !important; }
	.fp-hero--split { grid-template-columns: minmax(0, 1fr); }
	.fp-hero--split .fp-hero__portrait img { height: auto; aspect-ratio: 4 / 5; }
}

/* 5 Sections -------------------------------------------------------------- */

.fp-section {
	display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter);
	padding: 0 var(--pad) var(--section-y);
	background: var(--white);
	scroll-margin-top: var(--line);
}
.fp-section::before { content: ""; grid-column: 1 / -1; margin-bottom: calc(var(--section-y) * 0.7); border-top: 1px solid var(--rule); }
.fp-hero + .fp-section::before, .fp-band + .fp-section::before, .fp-ground-bone::before, .fp-ground-bone + .fp-section::before { border-top-color: transparent; }
.fp-ground-bone { background: var(--bone); }
.fp-ground-bone::before { margin-bottom: var(--section-y); }

.fp-rail { grid-column: 1 / span 5; }
.fp-main { grid-column: 7 / span 6; min-width: 0; }
.fp-rail > h2 { max-width: 11em; }
.fp-rail > p { margin-top: var(--line); max-width: 24em; }
.fp-main > *:last-child { margin-bottom: 0; }
.fp-main > h3 { margin: calc(var(--line) * 1.6) 0 calc(var(--line) * 0.5); }
.fp-main > h3:first-child { margin-top: 0; }
.fp-lead { font-size: var(--step-1); line-height: 1.42; color: var(--ink); }

@media (min-width: 60.01em) {
	.fp-section:not(.is-stacked):not(.has-media) > .fp-rail { position: sticky; top: calc(var(--line) * 1.5); align-self: start; }
}
@media (min-width: 60.01em) and (max-width: 80em) {
	.fp-section:not(.is-stacked) > .fp-rail { grid-column: 1 / span 4; }
	.fp-section:not(.is-stacked) > .fp-main { grid-column: 5 / span 8; }
	.fp-rail > h2 { font-size: var(--step-3); }
}

/* Stacked: heading row on top, content across the full width below. */
.fp-section.is-stacked > .fp-rail { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); align-items: end; margin-bottom: calc(var(--line) * 2.2); }
.fp-section.is-stacked > .fp-rail > h2 { grid-column: 1 / span 5; }
.fp-section.is-stacked > .fp-rail > p { grid-column: 7 / span 6; margin: 0; }
.fp-section.is-stacked > .fp-main { grid-column: 1 / -1; }

/* With a picture in the rail. */
.fp-section.has-media > .fp-rail img { width: 100%; border-radius: var(--radius); }
.fp-section.has-media > .fp-main > h2 { margin-bottom: 0.35em; }
.fp-role { color: var(--ink-3); }

@media (max-width: 60em) {
	.fp-rail, .fp-main { grid-column: 1 / -1; }
	.fp-rail { margin-bottom: calc(var(--line) * 1.2); }
	.fp-section.is-stacked > .fp-rail { display: block; margin-bottom: calc(var(--line) * 1.5); }
	.fp-section.is-stacked > .fp-rail > p { margin-top: var(--line); }
	.fp-section.has-media > .fp-rail { max-width: 26rem; }
}

/* The closing call on every page. */
.fp-cta { position: relative; isolation: isolate; overflow: hidden; padding: calc(var(--section-y) * 1.15) var(--pad); background: var(--forest); }
.fp-cta h2 { max-width: 12em; margin-bottom: calc(var(--line) * 0.9); font-size: var(--display); font-weight: 400; line-height: 1.02; letter-spacing: -0.025em; }
.fp-cta p { max-width: 30em; margin-bottom: calc(var(--line) * 1.4); font-size: var(--step-1); line-height: 1.42; color: var(--paper); }

/* 6 Bands: the separators ------------------------------------------------- */

.fp-band { position: relative; isolation: isolate; overflow: hidden; padding: 0 var(--pad); background: var(--forest); }
.fp-band__bar { display: flex; justify-content: space-between; align-items: center; gap: var(--line); padding: calc(var(--line) * 0.8) 0; border-bottom: 1px solid var(--rule-dark); font-size: var(--step--1); }
.fp-band__bar p { margin: 0; max-width: none; color: var(--paper-2); }
.fp-band__bar a { color: var(--paper); text-decoration: none; }
.fp-band__bar a::after { content: ""; display: inline-block; width: 1.15em; height: 1.15em; vertical-align: -0.22em; background: currentColor; -webkit-mask: var(--arrow) center / contain no-repeat; mask: var(--arrow) center / contain no-repeat; margin-left: 0.5em; transition: transform 0.3s var(--ease); }
.fp-band__bar a:hover::after { transform: translateX(0.25em); }
.fp-band__content { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); padding: calc(var(--section-y) * 1.1) 0 calc(var(--section-y) * 1.2); }
.fp-band__content > * { grid-column: 1 / -1; }

/* The statement: large type whose first line starts at the half, as in a ledger. */
.fp-statement { max-width: none; margin: 0 0 calc(var(--line) * 2); font-size: var(--step-5); font-weight: 400; line-height: 1.1; letter-spacing: -0.022em; color: var(--paper); text-indent: calc(50% + var(--gutter) / 2); text-wrap: pretty; }
.fp-band__content > .fp-band__note { grid-column: 7 / span 3; font-size: var(--step-0); color: var(--paper-2); }
.fp-band__content > .fp-band__note + .fp-band__note { grid-column: 10 / span 3; }
.fp-band__content > .wp-block-quote { grid-column: 7 / span 6; margin: 0; border-left-color: var(--mint); }
.fp-band .wp-block-quote p { color: var(--paper); font-size: var(--step-3); line-height: 1.22; max-width: 22em; }
.fp-band .wp-block-quote cite { color: var(--paper-2); }

/* Single colour. The field of hairlines and the light are added by site.js (see .fp-ground below). */
.fp-band--green { background: radial-gradient(70rem 40rem at 30% -10%, #2A5A41 0%, rgba(42, 90, 65, 0) 62%), var(--forest); }
.fp-band--ink { background: var(--ink); }

/* Picture band: the image sits behind a colour overlay, moves slower than the page, and comes into focus. */
.fp-band--image { background: var(--ink); min-height: min(92vh, 56rem); display: flex; flex-direction: column; }
.fp-band--image .fp-band__content { flex: 1; align-content: end; }
/* On a picture the statement is one short line of thought: it sits in the text column, without the first-line indent. */
.fp-band--image .fp-band__content > .fp-statement { grid-column: 7 / -1; margin-bottom: 0; text-indent: 0; font-size: var(--step-4); line-height: 1.14; }
.fp-band > .fp-band__media { position: absolute; top: -24%; right: 0; bottom: -24%; left: 0; z-index: -2; margin: 0; will-change: transform; }
.fp-band > .fp-band__media img { width: 100%; height: 100%; object-fit: cover; }
.fp-band--image::before { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; background: linear-gradient(0deg, rgba(10, 17, 13, 0.86) 0%, rgba(10, 17, 13, 0.2) 55%, rgba(10, 17, 13, 0.55) 100%), rgba(15, 45, 31, 0.42); }
.fp-band > .fp-band__media img { transform: scale(1.14); transition: transform 2.2s var(--ease); }
.fp-band--image.is-in > .fp-band__media img, .no-js .fp-band > .fp-band__media img { transform: scale(1); }

/* The orbit: rings that draw themselves and a point that travels as the page is scrolled. It never moves by itself. */
.fp-ground { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.fp-ground__lines { position: absolute; top: 0; bottom: 0; left: var(--pad); right: var(--pad); }
.fp-ground__lines i { position: absolute; top: 0; bottom: 0; width: 1px; background: rgba(238, 241, 238, 0.09); transform: scaleY(0); transform-origin: 50% 0; transition: transform 1.6s var(--ease); }
.fp-ground__lines i:nth-child(1) { left: 0; }
.fp-ground__lines i:nth-child(2) { left: calc((100% + var(--gutter)) / 4); transition-delay: 0.12s; }
.fp-ground__lines i:nth-child(3) { left: calc((100% + var(--gutter)) / 2); transition-delay: 0.24s; }
.fp-ground__lines i:nth-child(4) { left: calc((100% + var(--gutter)) * 0.75); transition-delay: 0.36s; }
.fp-ground__lines i:nth-child(5) { left: calc(100% - 1px); transition-delay: 0.48s; }
.is-lit > .fp-ground .fp-ground__lines i { transform: scaleY(1); }
/* The point: round, the point of the logo. It rides a hairline as the section scrolls past: the rule under a
   band's bar, the hairline that opens a section, the rule in the footer. Mint on dark grounds, green on light ones.
   site.js places it (--py is the rule's own position, --px how far along it the point has come). */
.fp-point { position: absolute; z-index: 1; top: 0; left: 0; width: 11px; height: 11px; margin: -5.5px 0 0 -5.5px; border-radius: 50%; background: var(--green); opacity: 0; pointer-events: none;
	transform: translate3d(var(--px, 0px), var(--py, 0px), 0); transition: opacity 0.8s ease 0.6s; }
.fp-band .fp-point, .fp-cta .fp-point, .fp-hero .fp-point, footer.wp-block-template-part .fp-point { background: var(--mint); }
.fp-point.is-on { opacity: 1; }
.fp-ground__light { position: absolute; top: 0; left: 0; width: 0; height: 0; transform: translate3d(var(--lx, 30vw), var(--ly, 12rem), 0); transition: transform 1.6s cubic-bezier(0.2, 0.7, 0.2, 1); }
.fp-ground__light i { position: absolute; top: -32vmax; left: -32vmax; width: 64vmax; height: 64vmax; border-radius: 50%; background: radial-gradient(closest-side, rgba(168, 229, 192, 0.15), rgba(168, 229, 192, 0.05) 55%, rgba(168, 229, 192, 0)); animation: fp-drift 19s ease-in-out infinite alternate; }
.fp-band--green .fp-ground__light i { background: radial-gradient(closest-side, rgba(168, 229, 192, 0.11), rgba(168, 229, 192, 0.04) 55%, rgba(168, 229, 192, 0)); }
@keyframes fp-drift { from { transform: translate3d(-6%, -4%, 0) scale(0.92); } to { transform: translate3d(7%, 6%, 0) scale(1.08); } }

/* A picture band comes into focus: soft and dim as it arrives, sharp once it is in view. Only bands below the fold, and only
   when site.js marks them, so a picture is never left soft if the script fails. */
.fp-band--image.fp-soft > .fp-band__media img { filter: blur(18px) brightness(0.72); transition: filter 1.7s ease, transform 2.2s var(--ease); }
.fp-band--image.fp-soft.is-in > .fp-band__media img { filter: blur(0) brightness(1); }

/* A breather: a picture band with no words in it. */
.fp-band--slim { min-height: min(64vh, 42rem); }
/* The motif: what the logo has cut out of it (the turned F and its point), on its own, very large and very faint, laid over
   the wordless picture bands. It slides into place as the picture comes into focus. Decoration only. */
.fp-band--slim::after { content: ""; position: absolute; z-index: -1; top: 0; right: 0; bottom: 0; left: 0; background: var(--paper); opacity: 0.13; pointer-events: none;
	-webkit-mask: url("../img/motif.svg?v=2") calc(50% + 24vw) 12% / auto 300% no-repeat; mask: url("../img/motif.svg?v=2") calc(50% + 24vw) 12% / auto 300% no-repeat; }
.fp-band--slim.fp-soft::after { opacity: 0; transform: translate3d(5%, 0, 0); transition: opacity 1.6s ease 0.2s, transform 2.4s var(--ease) 0.2s; }
.fp-band--slim.fp-soft.is-in::after { opacity: 0.13; transform: none; }
.fp-band--slim::before { background: linear-gradient(0deg, rgba(10, 17, 13, 0.34) 0%, rgba(10, 17, 13, 0) 40%, rgba(10, 17, 13, 0.26) 100%), rgba(15, 45, 31, 0.2); }

@media (max-width: 60em) {
	.fp-statement { text-indent: 0; font-size: var(--step-4); }
	/* On one column the inner hairlines would run through the words: only the two edges stay. */
	.fp-ground__lines i:nth-child(2), .fp-ground__lines i:nth-child(3), .fp-ground__lines i:nth-child(4) { display: none; }
	.fp-band__content > .fp-band__note, .fp-band__content > .fp-band__note + .fp-band__note, .fp-band__content > .wp-block-quote, .fp-band--image .fp-band__content > .fp-statement { grid-column: 1 / -1; }
	.fp-band--image { min-height: 34rem; }
}

/* 7 Cards and lists ------------------------------------------------------- */

.fp-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: calc(var(--line) * 0.6); }
.fp-cards--1 { grid-template-columns: minmax(0, 1fr); }
.fp-cards--2, .fp-cards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fp-card {
	position: relative; isolation: isolate; overflow: hidden;
	display: flex; flex-direction: column; justify-content: space-between;
	min-height: min(74vh, 40rem); padding: calc(var(--line) * 1.1);
	border-radius: var(--radius); background: var(--ink);
}
.fp-card__media { position: absolute; top: -16%; right: 0; bottom: -16%; left: 0; z-index: -2; will-change: transform; }
.fp-card__img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.fp-card::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; background: linear-gradient(180deg, rgba(10, 17, 13, 0.74) 0%, rgba(10, 17, 13, 0.18) 38%, rgba(10, 17, 13, 0.9) 100%), rgba(15, 45, 31, 0.3); transition: background-color 0.4s ease; }
.fp-card:hover .fp-card__img, .fp-card:focus-within .fp-card__img { transform: scale(1.06); }
.fp-card__top { display: flex; justify-content: space-between; gap: var(--line); padding-bottom: calc(var(--line) * 0.7); border-bottom: 1px solid var(--rule-dark); font-size: var(--step--1); color: var(--paper); }
.fp-card__format { max-width: 20em; text-align: right; color: var(--paper-2); }
.fp-card__body { position: relative; padding-right: 3.6em; }
.fp-card__title { margin-bottom: 0.4em; font-size: var(--step-3); font-weight: 450; letter-spacing: -0.015em; }
.fp-card__title a { color: inherit; text-decoration: none; }
.fp-card__title a::after { content: ""; position: absolute; top: -100vh; right: -100vw; bottom: -100vh; left: -100vw; }
.fp-card__title a:hover { color: var(--paper); }
.fp-card p { margin: 0 0 0.5em; font-size: var(--step--1); color: var(--paper-2); }
.fp-card .fp-card__for { color: var(--paper); }
.fp-card__go { position: absolute; right: 0; bottom: 0; width: 2.75em; height: 2.75em; border: 1px solid var(--paper); border-radius: 50%; transition: background-color 0.3s ease, transform 0.5s var(--ease); }
.fp-card__go::after { content: ""; position: absolute; top: 50%; left: 50%; width: 1.25em; height: 1.25em; transform: translate(-50%, -50%); background: var(--paper); -webkit-mask: var(--arrow) center / contain no-repeat; mask: var(--arrow) center / contain no-repeat; transition: background-color 0.3s ease, transform 0.4s var(--ease); }
.fp-card:hover .fp-card__go, .fp-card:focus-within .fp-card__go { background: var(--paper); }
.fp-card:hover .fp-card__go::after, .fp-card:focus-within .fp-card__go::after { background: var(--ink); transform: translate(-35%, -50%); }
.fp-footnote { margin-top: var(--line); font-size: var(--step--1); color: var(--ink-3); }

@media (max-width: 60em) {
	.fp-cards, .fp-cards--2, .fp-cards--4 { grid-template-columns: minmax(0, 1fr); }
	.fp-card { min-height: 24rem; }
}

/* The full rows on the Services and Programs pages. */
.fp-entries { grid-column: 1 / -1; }
.fp-entry { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); row-gap: var(--line); padding: calc(var(--line) * 1.6) 0; border-top: 1px solid var(--rule); }
.fp-entries > .fp-entry:first-child { border-top-color: var(--rule-firm); }
.fp-entries > .fp-entry:last-child { border-bottom: 1px solid var(--rule); }
.fp-entry__media { grid-column: 1 / span 3; position: relative; overflow: hidden; align-self: start; aspect-ratio: 4 / 5; border-radius: var(--radius); background: var(--ink); }
.fp-entry__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.fp-entry:hover .fp-entry__media img { transform: scale(1.05); }
.fp-entry__head { grid-column: 4 / span 4; }
.fp-entry__facts { grid-column: 9 / span 4; }
.fp-entry__index { margin: 0 0 calc(var(--line) * 0.6); font-size: var(--step--1); color: var(--ink-3); }
.fp-entry__title { margin-bottom: calc(var(--line) * 0.6); font-size: var(--step-3); }
.fp-entry__title a { text-decoration: none; }
.fp-entry__facts > div { padding: calc(var(--line) * 0.6) 0; border-top: 1px solid var(--rule); font-size: var(--step--1); }
.fp-entry__facts > div:first-child { padding-top: 0; border-top: 0; }
.fp-entry__facts dt { margin-bottom: 0.2em; color: var(--ink-3); }
.fp-entry__facts dd { color: var(--ink); }
.fp-entry__facts ul { margin: 0.2em 0 0; }
@media (max-width: 60em) {
	.fp-entry__media, .fp-entry__head, .fp-entry__facts { grid-column: 1 / -1; }
	.fp-entry__media { aspect-ratio: 16 / 9; }
}

/* Lists take the point from the mark. */
.fp-main ul, .fp-row__body ul, .fp-entry__facts ul { padding-left: 0; list-style: none; }
.fp-main ul > li, .fp-row__body ul > li, .fp-entry__facts ul > li { position: relative; padding-left: 1.35em; }
.fp-main ul > li::before, .fp-row__body ul > li::before, .fp-entry__facts ul > li::before { content: ""; position: absolute; left: 0.1em; top: 0.56em; width: 0.4em; height: 0.4em; border-radius: 50%; background: var(--green); }

/* 8 Components ------------------------------------------------------------ */

/* Rows: phases, clusters, pillars, situations. Label left, substance right. */
.fp-rows { border-bottom: 1px solid var(--rule); }
.fp-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 3fr); column-gap: var(--line); padding: calc(var(--line) * 1.1) 0; border-top: 1px solid var(--rule); }
.fp-rows > .fp-row:first-child { border-top-color: var(--rule-firm); }
.fp-row__label { margin: 0; padding-top: 0.3em; font-size: var(--step--1); color: var(--ink-3); }
.fp-row__body > h3 { margin-bottom: 0.45em; }
.fp-row__body > h4 { margin: var(--line) 0 0.4em; font-size: var(--step--1); color: var(--ink-3); }
.fp-row__body > *:last-child { margin-bottom: 0; }
.fp-meta { margin-bottom: calc(var(--line) * 0.6); font-size: var(--step--1); }
.fp-meta strong { display: block; color: var(--ink-3); font-weight: 400; }

/* Credentials: four cells in a row on wide screens. */
.fp-rows--plain { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); column-gap: var(--gutter); row-gap: var(--line); border-bottom: 0; }
.fp-rows--plain .fp-row, .fp-rows--plain > .fp-row:first-child { display: block; padding: calc(var(--line) * 0.8) 0 0; border-top: 1px solid var(--rule-firm); }
.fp-rows--plain .fp-row p { font-size: var(--step--1); }
@media (max-width: 72em) { .fp-rows--plain { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 44em) { .fp-rows--plain { grid-template-columns: minmax(0, 1fr); } }

/* Steps: how an engagement runs. Numbered points on one line. */
.fp-steps { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); column-gap: var(--gutter); counter-reset: step; }   /* as many columns as there are steps: three fill the width as well as five */
.fp-step { position: relative; padding-top: calc(2.75em + var(--line)); counter-increment: step; }
.fp-step::before { content: counter(step); position: absolute; top: 0; left: 0; z-index: 1; display: flex; align-items: center; justify-content: center; width: 2.75em; height: 2.75em; border: 1px solid var(--rule-firm); border-radius: 50%; background: var(--white); color: var(--ink); font-size: var(--step--1); font-weight: 500; transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease; }
.fp-step::after { content: ""; position: absolute; top: calc(var(--step--1) * 1.375); left: 0; right: calc(var(--gutter) * -1); border-top: 1px solid var(--rule); }
.fp-step:last-child::after { right: 0; }
.fp-step:hover::before { background: var(--green); border-color: var(--green); color: #FFFFFF; }
.fp-step h3 { margin-bottom: 0.4em; font-size: var(--step-1); }
.fp-step p { font-size: var(--step--1); }
@media (max-width: 60em) {
	.fp-steps { grid-auto-flow: row; grid-template-columns: minmax(0, 1fr); row-gap: calc(var(--line) * 1.2); }
	.fp-step { padding: 0 0 0 calc(2.75em + var(--line)); min-height: 2.75em; }
	.fp-step::after { top: 0; bottom: calc(var(--line) * -1.2); left: calc(var(--step--1) * 1.375); right: auto; border-top: 0; border-left: 1px solid var(--rule); }
	.fp-step:last-child::after { display: none; }
}

/* Specification rows: Length, Mode, Group size. */
.fp-spec { border-bottom: 1px solid var(--rule); }
.fp-spec__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 3fr); column-gap: var(--line); padding: calc(var(--line) * 0.75) 0; border-top: 1px solid var(--rule); }
.fp-spec > .fp-spec__row:first-child { border-top-color: var(--rule-firm); }
.fp-spec__row p { margin: 0; }
.fp-spec__k { color: var(--ink); font-weight: 500; }
@media (max-width: 36em) {
	.fp-row, .fp-spec__row { grid-template-columns: minmax(0, 1fr); row-gap: 0.25em; }
	.fp-row__label { padding-top: 0; }
}

/* Two lists side by side: on the day, after the session. */
.wp-block-columns.fp-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: calc(var(--line) * 1.5) var(--gutter); margin: 0; }
.fp-pair > .wp-block-column { min-width: 0; margin: 0; padding-top: var(--line); border-top: 1px solid var(--rule-firm); }
.fp-pair h3 { margin-bottom: calc(var(--line) * 0.7); font-size: var(--step-1); }
@media (max-width: 36em) { .wp-block-columns.fp-pair { grid-template-columns: minmax(0, 1fr); } }

/* Lorne's words. */
.wp-block-quote { margin: calc(var(--line) * 1.4) 0; padding: 0 0 0 var(--line); border: 0; border-left: 3px solid var(--green); }
.wp-block-quote p { margin-bottom: 0.6em; font-size: var(--step-2); line-height: 1.3; letter-spacing: -0.01em; color: var(--ink); max-width: 26em; }
.wp-block-quote cite { display: block; font-size: var(--step--1); color: var(--ink-3); }

/* Common questions. */
.wp-block-details.fp-faq { margin: 0; border-top: 1px solid var(--rule); }
.wp-block-details.fp-faq:first-of-type { border-top-color: var(--rule-firm); }
.wp-block-details.fp-faq:last-of-type { border-bottom: 1px solid var(--rule); }
.fp-faq > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--line); padding: calc(var(--line) * 0.85) 0; list-style: none; cursor: pointer; font-size: var(--step-1); font-weight: 450; line-height: 1.3; color: var(--ink); }
.fp-faq > summary::-webkit-details-marker { display: none; }
/* The plus is drawn, not typed, so it sits dead centre in its ring. The ring is ::before, the plus ::after. */
.fp-faq > summary { position: relative; padding-right: calc(2.6em + var(--line)); }
.fp-faq > summary::before, .fp-faq > summary::after { content: ""; position: absolute; top: 50%; right: 0; width: 2.6em; height: 2.6em; margin-top: -1.3em; border-radius: 50%; transition: transform 0.35s var(--ease), background-color 0.2s ease, border-color 0.2s ease; }
.fp-faq > summary::before { border: 1px solid var(--rule-firm); }
.fp-faq > summary::after { background: var(--ink); -webkit-mask: var(--plus) center / 46% no-repeat; mask: var(--plus) center / 46% no-repeat; }
.fp-faq[open] > summary::before { background: var(--green); border-color: var(--green); }
.fp-faq[open] > summary::after { transform: rotate(45deg); background: #FFFFFF; }
.fp-faq > summary:hover::before { border-color: var(--green); }
.fp-faq > summary:hover { color: var(--green); }
.fp-faq > *:not(summary) { margin-right: 3em; }
.fp-faq > *:last-child:not(summary) { margin-bottom: calc(var(--line) * 1.1); }

/* Client marks: an open hairline grid. */
.fp-logos { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border-top: 1px solid var(--rule); border-left: 1px solid var(--rule); }
.fp-logos > .wp-block-image { display: flex; align-items: center; justify-content: center; aspect-ratio: 16 / 9; margin: 0; padding: 0; border-right: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.fp-logos > .wp-block-image img { width: 62%; height: 54%; object-fit: contain; opacity: 0.88; }
@media (min-width: 120em) { .fp-logos { grid-template-columns: repeat(8, minmax(0, 1fr)); } }
@media (max-width: 68em) { .fp-logos { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 40em) { .fp-logos { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.wp-block-details.fp-more-logos { margin-top: var(--line); }
.fp-more-logos > summary { display: inline-flex; align-items: center; min-height: 2.75em; cursor: pointer; color: var(--ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.2em; list-style: none; }
.fp-more-logos > summary::-webkit-details-marker { display: none; }
.fp-more-logos > summary::after { content: ""; width: 1.05em; height: 1.05em; margin-left: 0.55em; background: var(--green); -webkit-mask: var(--plus) center / contain no-repeat; mask: var(--plus) center / contain no-repeat; transition: transform 0.3s var(--ease); }
.fp-more-logos[open] > summary::after { transform: rotate(45deg); }
.fp-more-logos > summary:hover { color: var(--green); }
.fp-more-logos > .fp-logos { margin-top: calc(var(--line) * 0.5); }
.fp-subhead { margin: calc(var(--line) * 2.4) 0 var(--line); font-size: var(--step-1); font-weight: 500; letter-spacing: 0; }
.fp-main > .fp-subhead:first-child { margin-top: 0; }

/* Short biography on the service pages. */
.fp-bio { display: grid; grid-template-columns: 7.5em minmax(0, 1fr); column-gap: calc(var(--line) * 1.2); align-items: start; }
.fp-bio > .wp-block-image { margin: 0; }
.fp-bio > .wp-block-image img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 50%; }
@media (max-width: 36em) { .fp-bio { grid-template-columns: minmax(0, 1fr); row-gap: var(--line); } .fp-bio > .wp-block-image { max-width: 7.5em; } }

/* Plain link lists. */
.fp-links { padding: 0 !important; list-style: none; border-bottom: 1px solid var(--rule); }
.fp-links > li { margin: 0; padding: calc(var(--line) * 0.6) 0 !important; border-top: 1px solid var(--rule); }
.fp-links > li::before { display: none; }
.fp-links > li:first-child { border-top-color: var(--rule-firm); }

/* Text pages: privacy, terms, cookies. */
.fp-prose { padding: calc(var(--section-y) * 0.8) var(--pad) var(--section-y); }
.fp-prose > * { max-width: 40rem; margin-left: 0; }
.fp-prose h2 { margin: calc(var(--line) * 2) 0 calc(var(--line) * 0.6); font-size: var(--step-2); font-weight: 500; letter-spacing: -0.01em; }
.fp-prose > h2:first-child { margin-top: 0; }

/* 9 Form ------------------------------------------------------------------ */

.fp-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--line); row-gap: calc(var(--line) * 1.1); max-width: 46rem; }
.fp-field, .fp-form__status, .fp-form__foot, .fp-form noscript { grid-column: 1 / -1; }
.fp-field--half { grid-column: span 1; }
@media (max-width: 36em) { .fp-field--half { grid-column: 1 / -1; } }

.fp-field label, .fp-choices legend { display: block; margin-bottom: 0.4em; padding: 0; font-weight: 500; color: var(--ink); }
.fp-choices { min-width: 0; margin: 0; padding: 0; border: 0; }
.fp-choices legend { margin-bottom: 0.6em; }
.fp-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5em; }
.fp-chips + .fp-chips { margin-top: 0.7em; }
.fp-chips__label { flex: 0 0 100%; margin-bottom: -0.15em; font-size: var(--step--1); color: var(--ink-3); }
.fp-field label.fp-chip { position: relative; display: inline-flex; margin: 0; font-weight: 400; cursor: pointer; }
.fp-chip input { position: absolute; top: 0; left: 0; width: 100%; height: 100%; min-height: 0; margin: 0; padding: 0; opacity: 0; cursor: pointer; }
.fp-chip span { display: inline-flex; align-items: center; min-height: 2.75em; padding: 0.45em 1.05em; border: 1px solid var(--ink-3); border-radius: var(--radius); background: var(--white); color: var(--ink); line-height: 1.25; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease; }
.fp-chip:hover span { border-color: var(--ink); background: var(--bone); }
.fp-chip input:checked + span { border-color: var(--green); background: var(--green); color: #FFFFFF; }
.fp-chip input:focus-visible + span { outline: 2px solid var(--green); outline-offset: 2px; }
.fp-choices[aria-invalid="true"] .fp-chip span { border-color: var(--error); }
.fp-field__optional { margin-left: 0.4em; font-weight: 400; color: var(--ink-3); }
.fp-field input, .fp-field textarea, .fp-field select {
	display: block; width: 100%; min-height: 3em; padding: 0.7em 0.85em;
	border: 1px solid var(--ink-3); border-radius: var(--radius);
	background: var(--white); color: var(--ink);
	font-family: inherit; font-size: var(--step-0); line-height: 1.4;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.fp-field textarea { min-height: 8.5em; resize: vertical; }
.fp-field select { appearance: none; -webkit-appearance: none; padding-right: 2.6em; background-image: linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%); background-position: calc(100% - 1.25em) 55%, calc(100% - 0.9em) 55%; background-size: 0.35em 0.35em; background-repeat: no-repeat; }
.fp-field input:hover, .fp-field textarea:hover, .fp-field select:hover { border-color: var(--ink); }
.fp-field input:focus-visible, .fp-field textarea:focus-visible, .fp-field select:focus-visible { outline: 2px solid var(--green); outline-offset: 1px; border-color: var(--green); }
.fp-field [aria-invalid="true"] { border-color: var(--error); box-shadow: inset 0 0 0 1px var(--error); }
.fp-field__hint, .fp-field__error { margin: 0.45em 0 0; max-width: none; font-size: var(--step--1); color: var(--ink-3); }
.fp-field__error { color: var(--error); font-weight: 500; }
.fp-field__error:empty { display: none; }
.fp-field--trap { position: absolute !important; left: -200vw; width: 1px; height: 1px; overflow: hidden; }

.fp-form__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--line); }
.fp-form__note { flex: 1 1 16em; margin: 0; font-size: var(--step--1); color: var(--ink-3); }
.fp-form button[aria-busy="true"] { opacity: 0.7; cursor: progress; }
.fp-form__status:empty { display: none; }
.fp-form__status { padding: var(--line); border-left: 3px solid var(--green); border-radius: 0 var(--radius) var(--radius) 0; background: var(--bone); color: var(--ink); }
.fp-form__status.is-error { border-left-color: var(--error); }
.fp-form.is-sent > *:not(.fp-form__status) { display: none; }

/* 10 Footer ---------------------------------------------------------------- */

footer.wp-block-template-part { position: relative; overflow: hidden; background: var(--ink); color: var(--paper-2); }
.fp-footer { padding: calc(var(--section-y) * 0.9) var(--pad) calc(var(--line) * 1.2); font-size: var(--step--1); }
.fp-footer__lead { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); row-gap: var(--line); align-items: end; padding-bottom: calc(var(--section-y) * 0.7); margin-bottom: calc(var(--section-y) * 0.6); border-bottom: 1px solid var(--rule-dark); }
.fp-footer__lead > * { grid-column: 1 / -1; }
.fp-footer__brand { display: flex; align-items: center; gap: 0.45em; margin: 0 !important; max-width: none !important; grid-column: 1 / span 7 !important; font-size: var(--step-5); font-weight: 450; letter-spacing: -0.025em; line-height: 1; color: var(--paper); }
.fp-footer__brand::before { content: ""; flex: none; width: 1.18em; height: 1.18em; background: currentColor; -webkit-mask: url("../img/mark.svg?v=5") center / contain no-repeat; mask: url("../img/mark.svg?v=5") center / contain no-repeat; }
.fp-footer__lead > .fp-footer__line { grid-column: 8 / span 5; margin: 0; max-width: 26em; font-size: var(--step-0); color: var(--paper-2); }
/* Four columns: Services, Programs, Practice, Affiliations. The office sits on its own full-width line below them. */
.wp-block-columns.fp-footer__cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: calc(var(--line) * 2) var(--gutter); margin: 0; }
.fp-footer__cols > .wp-block-column { min-width: 0; margin: 0; }
.fp-footer p { margin-bottom: 0.8em; max-width: 24em; }
.fp-footer h2 { margin-bottom: 0.9em; font-size: var(--step--1); font-weight: 500; letter-spacing: 0; line-height: 1.5; color: var(--paper); }
.fp-footer ul { margin: 0; padding: 0; max-width: none; list-style: none; }
.fp-footer li { margin: 0 0 0.55em; }
.fp-footer a { text-decoration: none; }
.fp-footer a:hover { text-decoration: underline; }
.fp-footer__office { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.4em var(--gutter); margin-top: calc(var(--section-y) * 0.8); padding: var(--line) 0; border-top: 1px solid var(--rule-dark); color: var(--paper-2); }
.fp-footer__office p { margin: 0; max-width: none; }
.fp-footer__office strong { margin-right: 1.2em; font-weight: 500; }
.fp-footer__office + .fp-footer__legal { margin-top: 0; }
.fp-footer__legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.5em var(--line); margin-top: calc(var(--section-y) * 0.8); padding-top: var(--line); border-top: 1px solid var(--rule-dark); }
.fp-footer__legal p { margin: 0; max-width: none; }
.fp-footer__legal a { margin-right: 1.2em; }
.fp-footer__legal a:last-child { margin-right: 0; }
@media (max-width: 60em) {
	.wp-block-columns.fp-footer__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.fp-footer__brand, .fp-footer__lead > .fp-footer__line { grid-column: 1 / -1 !important; }
}
@media (max-width: 36em) { .wp-block-columns.fp-footer__cols { grid-template-columns: minmax(0, 1fr); } }

/* 11 Consent --------------------------------------------------------------- */

.fp-consent-open {
	position: fixed; left: 15px; bottom: 15px; z-index: 70;
	display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; padding: 0;
	border: 1px solid var(--rule); border-radius: 50%; background: var(--white); color: var(--ink); cursor: pointer; opacity: 0.55;
	transition: opacity 0.3s ease, transform 0.5s var(--ease);
}
.fp-consent-open:hover, .fp-consent-open:focus-visible { opacity: 1; }
/* On a phone the round button would sit on the first words of every line. The footer's "Cookie Settings" link opens the same panel. */
@media (max-width: 52em) { .fp-consent-open { display: none; } }
.fp-consent-open[hidden], .fp-consent[hidden], .fp-consent__options[hidden] { display: none; }
.fp-consent {
	position: fixed; left: 15px; right: 15px; bottom: 15px; z-index: 71; max-width: 700px; max-height: calc(100vh - 30px); overflow-y: auto;
	padding: 30px; border: 1px solid var(--rule); border-radius: var(--radius); background: var(--white); color: var(--ink-2);
	box-shadow: 0 1.5em 4em rgba(10, 17, 13, 0.22); font-size: 0.9375rem; line-height: 1.5; text-align: center;
}
.fp-consent:focus { outline: none; }
.fp-consent h2 { margin: 0 0 0.5em; font-size: 1.125rem; font-weight: 500; letter-spacing: 0; color: var(--green); }
.fp-consent p { max-width: none; margin: 0 0 15px; }
.fp-consent__buttons { display: flex; flex-wrap: wrap; gap: 12px; }
.fp-consent__buttons .fp-btn, .fp-consent__options > .fp-btn { flex: 1 1 8em; min-height: 3.4em; font-size: 0.9375rem; }
.fp-consent .fp-btn::after { display: none; }
.fp-consent__options { margin-top: 15px; text-align: left; }
.fp-consent__options > .fp-btn { width: 100%; margin-top: 12px; }
.fp-consent__row { margin-bottom: 10px; padding: 14px 16px; border-radius: var(--radius); background: var(--bone); }
.fp-consent__rowhead { display: flex; justify-content: space-between; align-items: center; gap: 1em; }
.fp-consent__row label { font-weight: 500; color: var(--ink); cursor: pointer; }
.fp-consent__row p { margin: 4px 0 0; font-size: 0.8125rem; color: var(--ink-3); }
.fp-consent__row input { appearance: none; -webkit-appearance: none; flex: none; position: relative; width: 44px; height: 24px; margin: 0; border-radius: 12px; background: var(--ink-3); cursor: pointer; transition: background-color 0.25s ease; }
.fp-consent__row input::before { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: var(--white); transition: transform 0.25s var(--ease); }
.fp-consent__row input:checked { background: var(--green); }
.fp-consent__row input:checked::before { transform: translateX(20px); }

/* 12 Motion and print ------------------------------------------------------ */

/* One quiet entrance, used once per element, only for content that starts below the fold. */
.js .fp-reveal { opacity: 0; transform: translateY(1.4rem); }
.js .fp-reveal.is-in { opacity: 1; transform: none; transition: opacity 0.9s var(--ease), transform 0.9s var(--ease); }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
	.js .fp-reveal { opacity: 1; transform: none; }
		.fp-hero > .fp-hero__media video { filter: blur(3px); }
	.fp-band > .fp-band__media img { transform: none; }
	.fp-ground, .fp-point { display: none; }
}

@media print {
	header.wp-block-template-part, footer.wp-block-template-part, .fp-cta, .fp-consent, .fp-consent-open, .fp-hero > .fp-hero__media, .fp-hero__pause { display: none !important; }
	.fp-hero { min-height: 0; padding: 0 0 1rem; background: none; color: #000; }
	.fp-hero::before { display: none; }
	.fp-hero h1, .fp-hero .fp-lead { color: #000; }
	.js .fp-reveal { opacity: 1; transform: none; }
	/* everything that sits on a dark ground on screen prints in ink on paper */
	.fp-hero, .fp-hero *, .fp-hero__facts dt, .fp-hero__facts dd, .fp-facts *, .fp-hero .fp-hero__crumb a { color: #0A110D !important; border-color: #C9CCC9 !important; }
	.fp-hero a.fp-download, .fp-hero .wp-block-button__link { color: #0A110D !important; background: none !important; border: 1px solid #0A110D !important; }
	.fp-ground, .fp-point { display: none !important; }
	.fp-card, .fp-band, section { break-inside: avoid; }
}

/* ---------- Workshops: the grouped list, the rows, the category cards on the home page ---------- */
.fp-workshops { grid-column: 1 / -1; }
.fp-wsnav ul { display: flex; flex-wrap: wrap; gap: 0.5em; margin: 0 0 calc(var(--line) * 2); padding: 0; list-style: none; }
.fp-wsnav a { display: inline-flex; align-items: center; gap: 0.6em; min-height: 2.75em; padding: 0.4em 1.1em; border: 1px solid var(--rule-firm); border-radius: 999px; color: var(--ink); text-decoration: none; font-size: var(--step--1); }
.fp-wsnav a:hover { border-color: var(--green); color: var(--green); }
.fp-wsnav a span { color: var(--ink-3); font-variant-numeric: tabular-nums; }
.fp-wsgroup { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); padding: calc(var(--line) * 1.6) 0 calc(var(--line) * 2.4); border-top: 1px solid var(--rule-firm); scroll-margin-top: calc(var(--line) * 4); }
.fp-wsgroup__head { grid-column: 1 / span 4; }
.fp-wsgroup__head h2, .fp-wsgroup__head h3 { font-size: var(--step-3); font-weight: 450; }
.fp-wsgroup__head p { margin-top: var(--line); max-width: 24em; color: var(--ink-2); }
/* the workshop's picture, as a point: always there, and it grows a little when the row is under the pointer */
/* like the other lists: the left side stays while its rows pass */
@media (min-width: 64.01em) { .fp-wsgroup__head { position: sticky; top: calc(var(--line) * 1.5); align-self: start; } }
.fp-wsnav ul { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; } .fp-wsnav li { flex: none; } .fp-wsnav a { white-space: nowrap; }
.fp-main .fp-wsnav ul, .fp-workshops ul { max-width: none; }
@media (max-width: 64em) { .fp-wsgroup__head, .fp-wsrows { grid-column: 1 / -1; } .fp-wsgroup__head { margin-bottom: calc(var(--line) * 1.4); } }

.fp-wsgroups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gutter); }
.fp-wsgroups--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .fp-wsgroups--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .fp-wsgroups--1 { grid-template-columns: minmax(0, 1fr); }
.fp-wscard { padding-top: var(--line); border-top: 1px solid var(--rule-firm); }
.fp-wscard__index { display: flex; justify-content: space-between; color: var(--ink-3); font-size: var(--step--1); font-variant-numeric: tabular-nums; }
.fp-wscard h3 { margin-top: calc(var(--line) * 1.2); font-size: var(--step-2); font-weight: 450; }
.fp-wscard h3 a { color: var(--ink); text-decoration: none; } .fp-wscard h3 a:hover { color: var(--green); }
.fp-wscard__text { margin-top: 0.6em; color: var(--ink-2); }
.fp-wscard ul { margin: var(--line) 0 0; padding: 0; list-style: none; }
.fp-wscard li { padding: 0.4em 0; font-size: var(--step--1); }
.fp-wscard li a { color: var(--ink); text-decoration: none; } .fp-wscard li a:hover { color: var(--green); text-decoration: underline; text-underline-offset: 0.3em; }
.fp-wscard__more a { color: var(--ink-3) !important; }
@media (max-width: 60em) { .fp-wsgroups, .fp-wsgroups--4 { grid-template-columns: minmax(0, 1fr); gap: calc(var(--line) * 2); } }
.fp-field--select label { display: block; margin-bottom: 0.5em; }
@media (min-width: 64.01em) { .fp-wsgroup__head { grid-column: 1 / span 3; } .fp-wsrows { grid-column: 4 / -1; } }
/* workshop rows read as items: title and text sit together, the picture spans both, the row answers the pointer as one */
@media (min-width: 64.01em) { .fp-wsgroup__head { grid-column: 1 / span 3; } .fp-wsrows { grid-column: 4 / -1; } }
.fp-wsgroup { padding-bottom: calc(var(--line) * 1.6); }

/* ---------- The outline download: one component everywhere (fulcrum_download_html) ---------- */
a.fp-download { display: inline-flex; align-items: center; gap: 0.65em; color: inherit; text-decoration: none; white-space: nowrap; font-size: var(--step-0); }
a.fp-download::before { width: 2.3em; height: 2.3em; }
a.fp-download span { margin: 0; font-size: var(--step--1); color: var(--ink-3); text-decoration: none; }
a.fp-download:hover { color: var(--green); } .fp-hero a.fp-download:hover { color: var(--mint); } .fp-hero a.fp-download span { color: var(--paper-2); }
.fp-hero__download { display: flex; align-items: center; margin-left: 0.6em; }
.fp-entry__download { margin: calc(var(--line) * 0.8) 0 0; }
@media (max-width: 40em) { .fp-hero__download { margin: 0.4em 0 0; flex-basis: 100%; } }

/* ---------- A workshop row: picture, title with its line of text, length, download. One line, centred, even padding. ---------- */
.fp-wsrows > li.fp-wsrow { position: relative; display: grid; grid-template-columns: 3.6em minmax(0, 1fr) 8em auto; column-gap: 1.6em; align-items: center; margin: 0 -1.2em; padding: 1.2em; border-radius: var(--radius); transition: background-color 0.2s ease; }
.fp-wsrow:hover, .fp-wsrow:focus-within { background: var(--bone); }
.fp-wsrow__img { display: block; width: 3.6em; height: 3.6em; border-radius: 50%; object-fit: cover; background: var(--paper); transition: transform 0.45s var(--ease); }
.fp-wsrow:hover .fp-wsrow__img { transform: scale(1.12); }
.fp-wsrow__title { font-size: var(--step-1); font-weight: 450; line-height: 1.2; }
.fp-wsrow__title a { color: var(--ink); text-decoration: none; }
.fp-wsrow__title a::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; }   /* the whole row opens the workshop */
.fp-wsrow:hover .fp-wsrow__title a, .fp-wsrow__title a:focus-visible { color: var(--green); }
.fp-wsrow__text { margin: 0.3em 0 0; color: var(--ink-2); font-size: var(--step--1); line-height: 1.45; max-width: 44em; }
.fp-wsrow__length { margin: 0; color: var(--ink-3); font-size: var(--step--1); }
.fp-wsrow__pdf { margin: 0; position: relative; z-index: 1; justify-self: end; }   /* above the row link, so it stays its own link */
.fp-wsrow__pdf a.fp-download { font-size: var(--step--1); } .fp-wsrow__pdf a.fp-download::before { width: 2.1em; height: 2.1em; }
@media (max-width: 48em) {
	.fp-wsrows > li.fp-wsrow { grid-template-columns: 3em minmax(0, 1fr); row-gap: 0.6em; align-items: start; }
	.fp-wsrow__img { width: 3em; height: 3em; }
	.fp-wsrow__length, .fp-wsrow__pdf { grid-column: 2; justify-self: start; }
}
@media (prefers-reduced-motion: reduce) { .fp-wsrow__img { transition: none; } }
.fp-wsnav li, .fp-wscard li { padding-left: 0; } .fp-wsnav li::before, .fp-wsrows > li::before, .fp-wscard li::before { display: none !important; }

/* the download, final form: the word, then the round arrow. No size. The arrow never moves the word off its line. */
a.fp-download::before, .fp-download a::before { display: none; }
a.fp-download { gap: 0.6em; line-height: 1; }
a.fp-download::after { content: ""; flex: none; width: 2.1em; height: 2.1em; margin: -0.6em 0; border-radius: 50%; background: currentColor;
	-webkit-mask: var(--arrow) center / 46% no-repeat, radial-gradient(closest-side, transparent calc(100% - 1.6px), #000 calc(100% - 1px)) center / 100% 100% no-repeat;
	mask: var(--arrow) center / 46% no-repeat, radial-gradient(closest-side, transparent calc(100% - 1.6px), #000 calc(100% - 1px)) center / 100% 100% no-repeat;
	transform: rotate(90deg); transition: transform 0.3s var(--ease); }
a.fp-download:hover::after { transform: rotate(90deg) translateX(0.12em); }
.fp-wsrow__pdf a.fp-download::after { width: 2em; height: 2em; }
@media (max-width: 48em) { .fp-wsrows > li.fp-wsrow { margin: 0; padding: 1em 0; } .fp-wsrow:hover, .fp-wsrow:focus-within { background: none; } }
/* arrows stand alone: no thin ring around them anywhere (it rendered poorly and pushed things off their line) */
a.fp-download::after { width: 1.15em; height: 1.15em; margin: 0; border-radius: 0; -webkit-mask: var(--arrow) center / contain no-repeat; mask: var(--arrow) center / contain no-repeat; }
.fp-wsrow__pdf a.fp-download::after { width: 1.15em; height: 1.15em; }
a.fp-download { gap: 0.45em; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.3em; }
.fp-card__go { border: 0; width: 1.6em; height: 1.6em; } .fp-card:hover .fp-card__go, .fp-card:focus-within .fp-card__go { background: none; }
.fp-card__go::after { width: 1.6em; height: 1.6em; } .fp-card:hover .fp-card__go::after, .fp-card:focus-within .fp-card__go::after { background: var(--mint); transform: translate(-30%, -50%); }

.fp-footer__aff { margin-top: calc(var(--section-y) * 0.8); } .fp-footer__aff + .fp-footer__office { margin-top: 0; } .fp-footer__aff a { color: inherit; }

/* a top category that holds sub-categories: its own heading band, the groups under it */
.fp-wssection { padding-top: calc(var(--line) * 2); scroll-margin-top: calc(var(--line) * 3); }
.fp-wssection + .fp-wssection, .fp-wsgroup + .fp-wssection, .fp-wssection + .fp-wsgroup { margin-top: calc(var(--line) * 3); }
.fp-wssection__head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gutter); align-items: end; padding-bottom: calc(var(--line) * 1.6); }
.fp-wssection__head h2 { grid-column: 1 / span 6; font-size: var(--step-4); font-weight: 400; letter-spacing: -0.02em; }
.fp-wssection__head p { grid-column: 8 / -1; margin: 0; color: var(--ink-2); max-width: 34em; }
.fp-wssection .fp-wsgroup__head h3 { font-size: var(--step-2); }
.fp-wsrow__code { display: inline-block; margin-right: 0.5em; color: var(--green); font-size: 0.72em; font-weight: 500; letter-spacing: 0.02em; vertical-align: 0.12em; font-variant-numeric: tabular-nums; }
.fp-wscard li span { float: right; color: var(--ink-3); font-variant-numeric: tabular-nums; }
@media (max-width: 64em) { .fp-wssection__head h2, .fp-wssection__head p { grid-column: 1 / -1; } .fp-wssection__head p { margin-top: var(--line); } }
.fp-wsrows > li.fp-wsrow { grid-template-columns: 3.6em minmax(0, 1fr) 13.5em auto; } .fp-wsrow__length { white-space: nowrap; }
@media (max-width: 48em) { .fp-wsrows > li.fp-wsrow { grid-template-columns: 3em minmax(0, 1fr); } .fp-wsrow__length { white-space: normal; } }

/* the home workshop cards: plain lists, flush left (the content list rule gave them room for a point they do not have) */
.fp-main .fp-wscard ul > li, .fp-wscard ul > li { padding-left: 0; } .fp-main .fp-wscard ul > li::before { display: none; }
.fp-main .fp-wsnav ul > li { padding-left: 0; }
/* footer: four columns, then full-width rows that keep the same four columns */
.fp-footer__row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--gutter); row-gap: 0.4em; align-items: baseline; }
.fp-footer__row p { margin: 0; max-width: none; }
.fp-footer__row .fp-footer__span2 { grid-column: span 2; }
.fp-footer__office.fp-footer__row { justify-content: initial; }
@media (max-width: 52em) { .fp-footer__row { grid-template-columns: repeat(2, minmax(0, 1fr)); } .fp-footer__row .fp-footer__span2 { grid-column: 1 / -1; } }

/* ---------- The workshop categories on Home: the same picture card as Services and Programs, with its groups listed inside ---------- */
.fp-cards--groups .fp-card { min-height: min(70vh, 38rem); }
.fp-cards--3.fp-cards--groups { grid-template-columns: repeat(3, minmax(0, 1fr)); } .fp-cards--5.fp-cards--groups, .fp-cards--6.fp-cards--groups { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fp-card--group .fp-card__body { padding-right: 0; }
.fp-card--group .fp-card__title { font-size: var(--step-4); font-weight: 400; letter-spacing: -0.02em; max-width: 12em; }
.fp-card--group .fp-card__text { max-width: 34em; color: var(--paper); font-size: var(--step-0); }
.fp-card__groups { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--gutter); margin: calc(var(--line) * 1.2) 3.6em 0 0; padding: 0; list-style: none; border-top: 1px solid var(--rule-dark); }
.fp-main .fp-card__groups > li, .fp-card__groups > li { padding: 0; } .fp-main .fp-card__groups > li::before { display: none; }
.fp-card__groups a { display: flex; justify-content: space-between; gap: 1em; padding: 0.7em 0; border-bottom: 1px solid var(--rule-dark); color: var(--paper); text-decoration: none; font-size: var(--step--1); }
.fp-card__groups a span { color: var(--paper-2); font-variant-numeric: tabular-nums; }
.fp-card__groups a:hover { color: var(--mint); }
@media (max-width: 70em) { .fp-card__groups { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 60em) { .fp-cards--groups, .fp-cards--3.fp-cards--groups { grid-template-columns: minmax(0, 1fr); } .fp-cards--groups .fp-card { min-height: 30rem; } }
