/* ==========================================================================
   Finstock Foundation — design system
   Institutional, readable, fast: system fonts, no framework, no web fonts.
   All text/background pairs meet WCAG 2.1 AA.
   ========================================================================== */

/* ---------- Tokens ---------- */
:root {
	--c-ink: #13232f;
	--c-ink-soft: #3c4c58;
	--c-muted: #52616c;
	--c-primary: #0b4f5c;
	--c-primary-700: #083a44;
	--c-primary-900: #062a31;
	--c-primary-50: #e9f2f3;
	--c-link: #0a6580;
	--c-accent: #d9a441;
	--c-accent-700: #8a5a12;
	--c-accent-on-dark: #f6d99c; /* gold for text on teal: ≥ 4.5:1 */
	--c-surface: #ffffff;
	--c-surface-2: #f4f6f5;
	--c-border: #d5dde0;
	--c-focus: #d9a441;

	--c-success: #1b6436; --c-success-bg: #e5f3ea;
	--c-warning: #7f4500; --c-warning-bg: #fff1dc;
	--c-info: #0a5680;    --c-info-bg: #e5eff8;
	--c-neutral: #36434d; --c-neutral-bg: #eceff1;
	--c-danger: #992020;  --c-danger-bg: #fcebeb;

	--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
	--font-serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, Cambria, "Times New Roman", serif;

	--fs-xs: .8125rem;
	--fs-sm: .9375rem;
	--fs-base: 1.0625rem;
	--fs-lg: 1.25rem;
	--fs-xl: clamp(1.4rem, 1.2rem + .8vw, 1.75rem);
	--fs-2xl: clamp(1.75rem, 1.4rem + 1.4vw, 2.375rem);
	--fs-3xl: clamp(2.1rem, 1.5rem + 2.6vw, 3.4rem);

	--space-1: .25rem; --space-2: .5rem; --space-3: .75rem; --space-4: 1rem;
	--space-5: 1.5rem; --space-6: 2rem; --space-7: 3rem; --space-8: 4.5rem;

	--radius: 6px;
	--radius-lg: 10px;
	--shadow: 0 1px 2px rgba(10, 30, 40, .06), 0 4px 16px rgba(10, 30, 40, .06);
	--container: 1200px;
	--gutter: 16px;
}
@media (min-width: 768px) { :root { --gutter: 24px; } }

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 1rem; }
body {
	margin: 0;
	background: var(--c-surface);
	color: var(--c-ink);
	font-family: var(--font-sans);
	font-size: var(--fs-base);
	line-height: 1.6;
	text-rendering: optimizeLegibility;
}
img, svg, video, iframe { max-width: 100%; height: auto; }
h1, h2, h3, h4 { font-family: var(--font-serif); font-weight: 600; line-height: 1.2; color: var(--c-ink); margin: 0 0 var(--space-4); letter-spacing: -.005em; }
h1 { font-size: var(--fs-3xl); }
h2 { font-size: var(--fs-2xl); }
h3 { font-size: var(--fs-xl); }
h4 { font-size: var(--fs-lg); }
p, ul, ol, dl, table, figure { margin: 0 0 var(--space-4); }
a { color: var(--c-link); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { color: var(--c-primary-700); text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--c-focus); outline-offset: 2px; border-radius: 2px; }
hr { border: 0; border-top: 1px solid var(--c-border); margin: var(--space-6) 0; }
table { border-collapse: collapse; width: 100%; }
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }

.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	height: 1px; width: 1px; margin: -1px; overflow: hidden; padding: 0;
	position: absolute !important; word-wrap: normal !important;
}
.fft-skip-link {
	position: absolute; left: var(--space-4); top: -100px; z-index: 1000;
	background: var(--c-accent); color: var(--c-primary-900); padding: var(--space-3) var(--space-4);
	font-weight: 700; border-radius: var(--radius); text-decoration: none;
}
.fft-skip-link:focus { top: var(--space-4); }
.fft-main:focus { outline: none; }

.fft-container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.fft-section { padding-block: var(--space-7); }
@media (min-width: 900px) { .fft-section { padding-block: var(--space-8); } }
.fft-section--tint { background: var(--c-surface-2); }
.fft-section--dark { background: var(--c-primary-700); color: #eaf2f3; }
.fft-section--dark h2 { color: #fff; }
.fft-section__intro { max-width: 70ch; color: var(--c-ink-soft); font-size: var(--fs-lg); }
.fft-section--dark .fft-section__intro { color: #d3e2e5; }
.fft-section-heading { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--space-2) var(--space-5); margin-bottom: var(--space-5); }
.fft-section-heading h2 { margin: 0; }

.fft-eyebrow { font-family: var(--font-sans); font-size: var(--fs-sm); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--c-accent-700); margin-bottom: var(--space-2); }
.fft-eyebrow--on-dark { color: var(--c-accent); }
.fft-muted { color: var(--c-muted); }
.ff-lead, .fft-lead { font-size: var(--fs-lg); color: var(--c-ink-soft); }
.fft-meta-line { color: var(--c-muted); font-size: var(--fs-sm); border-top: 1px solid var(--c-border); padding-top: var(--space-4); margin-top: var(--space-6); }

.fft-icon { flex: none; vertical-align: -.2em; }
.fft-link-arrow { display: inline-flex; align-items: center; gap: var(--space-2); font-weight: 600; text-decoration: none; }
.fft-link-arrow:hover { text-decoration: underline; }
.fft-link-arrow--on-dark { color: #fff; }
.fft-link-arrow--on-dark:hover { color: var(--c-accent); }

/* ---------- Buttons ---------- */
.ff-button {
	display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
	min-height: 44px; padding: .6rem 1.2rem; border-radius: var(--radius);
	border: 2px solid transparent; font: 600 var(--fs-sm)/1.2 var(--font-sans);
	text-decoration: none; cursor: pointer; transition: background-color .15s, color .15s, border-color .15s;
}
.ff-button--primary { background: var(--c-primary); color: #fff; }
.ff-button--primary:hover { background: var(--c-primary-700); color: #fff; }
.ff-button--secondary { background: #fff; color: var(--c-primary); border-color: var(--c-primary); }
.ff-button--secondary:hover { background: var(--c-primary-50); color: var(--c-primary-700); }
.ff-button--accent { background: var(--c-accent); color: var(--c-primary-900); }
.ff-button--accent:hover { background: #e7b65b; color: var(--c-primary-900); }
.ff-button--on-dark { background: #fff; color: var(--c-primary-700); }
.ff-button--on-dark:hover { background: var(--c-primary-50); color: var(--c-primary-900); }
.ff-button--ghost-dark { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .7); }
.ff-button--ghost-dark:hover { background: rgba(255, 255, 255, .1); color: #fff; border-color: #fff; }
.ff-button--block { display: flex; width: 100%; margin-bottom: var(--space-3); }
.fft-button-row { display: flex; flex-wrap: wrap; gap: var(--space-3); }

/* ---------- Header ---------- */
.fft-header { background: #fff; border-bottom: 1px solid var(--c-border); position: relative; z-index: 50; }
.fft-utility { background: var(--c-primary-900); color: #cfdfe2; font-size: var(--fs-xs); }
.fft-utility__inner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-2) var(--space-5); padding-block: var(--space-2); }
.fft-utility a { color: #fff; }
.fft-utility__eco { margin: 0; }
.fft-utility__links { list-style: none; display: flex; gap: var(--space-4); margin: 0; padding: 0; }
@media (max-width: 599px) { .fft-utility__links { display: none; } }

.fft-masthead__inner { display: flex; align-items: center; gap: var(--space-4); padding-block: var(--space-4); }
.fft-logo, .custom-logo-link { display: inline-flex; align-items: center; gap: var(--space-3); color: var(--c-primary); text-decoration: none; margin-right: auto; }
.fft-logo__text { font-family: var(--font-serif); font-size: 1.35rem; font-weight: 700; color: var(--c-ink); letter-spacing: -.01em; }
.custom-logo { max-height: 56px; width: auto; }
.fft-search { display: none; position: relative; }
.fft-search input { min-height: 44px; width: 14rem; padding: .5rem 2.6rem .5rem .8rem; border: 1px solid var(--c-border); border-radius: var(--radius); font: inherit; font-size: var(--fs-sm); }
.fft-search button { position: absolute; right: 2px; top: 2px; bottom: 2px; width: 40px; border: 0; background: transparent; color: var(--c-ink-soft); cursor: pointer; border-radius: var(--radius); }
.fft-search--page { display: flex; flex-wrap: wrap; align-items: end; gap: var(--space-3); margin-bottom: var(--space-5); }
.fft-search--page label { width: 100%; font-weight: 600; }
.fft-search--page input { flex: 1 1 16rem; min-height: 44px; padding: .5rem .8rem; border: 1px solid #8a979f; border-radius: var(--radius); font: inherit; }
.fft-masthead__cta { display: none; }
.fft-menu-toggle { display: inline-flex; align-items: center; gap: var(--space-2); min-height: 44px; padding: .5rem .9rem; background: var(--c-primary); color: #fff; border: 0; border-radius: var(--radius); font: 600 var(--fs-sm) var(--font-sans); cursor: pointer; }
@media (min-width: 768px) {
	.fft-search { display: block; }
	.fft-masthead__cta { display: inline-flex; }
}

/* Navigation — mobile first (panel) */
.fft-nav { display: none; background: #fff; border-top: 1px solid var(--c-border); }
.fft-nav.is-open { display: block; }
.no-js .fft-nav { display: block; }
.fft-nav__list, .fft-nav__submenu { list-style: none; margin: 0; padding: 0; }
.fft-nav__item { position: relative; border-bottom: 1px solid var(--c-border); display: flex; flex-wrap: wrap; align-items: center; }
.fft-nav__link { flex: 1; display: block; padding: .8rem 0; color: var(--c-ink); font-weight: 600; text-decoration: none; }
.fft-nav__link:hover, .fft-nav__link[aria-current="page"] { color: var(--c-link); }
.fft-nav__toggle { min-width: 44px; min-height: 44px; border: 0; background: transparent; color: var(--c-ink-soft); cursor: pointer; border-radius: var(--radius); }
.fft-nav__toggle[aria-expanded="true"] .fft-icon { transform: rotate(180deg); }
.fft-nav__submenu { display: none; width: 100%; padding: 0 0 var(--space-3) var(--space-4); }
.fft-nav__toggle[aria-expanded="true"] + .fft-nav__submenu { display: block; }
.no-js .fft-nav__submenu { display: block; }
.fft-nav__submenu .fft-nav__item { border: 0; }
.fft-nav__submenu .fft-nav__link { font-weight: 400; padding: .45rem 0; }
.fft-nav__cta { margin: var(--space-4) 0; width: 100%; }

@media (min-width: 1100px) {
	.fft-menu-toggle, .fft-nav__cta { display: none; }
	.fft-nav, .fft-nav.is-open { display: block; background: var(--c-primary); border: 0; }
	.fft-nav__list { display: flex; flex-wrap: wrap; }
	.fft-nav__item { border: 0; flex-wrap: nowrap; }
	.fft-nav__link { color: #fff; padding: .7rem .05rem .7rem .5rem; font-size: .9rem; white-space: nowrap; }
	.fft-nav__item:not(.fft-nav__item--parent) > .fft-nav__link { padding-right: .45rem; }
	.fft-nav__link:hover, .fft-nav__link[aria-current="page"] { color: var(--c-accent-on-dark); }
	.fft-nav__item.is-current-section > .fft-nav__link { box-shadow: inset 0 -3px 0 var(--c-accent); }
	.fft-nav__toggle { color: #d3e2e5; min-width: 24px; padding: 0 .15rem 0 0; }
	.fft-nav__toggle .fft-icon { width: 16px; height: 16px; }
	.fft-nav__submenu {
		position: absolute; left: 0; top: 100%; min-width: 17rem; padding: var(--space-2) 0;
		background: #fff; border: 1px solid var(--c-border); border-top: 3px solid var(--c-accent);
		border-radius: 0 0 var(--radius) var(--radius); box-shadow: var(--shadow);
	}
	.fft-nav__submenu .fft-nav__link { color: var(--c-ink); padding: .5rem 1rem; white-space: normal; }
	.fft-nav__submenu .fft-nav__link:hover { background: var(--c-primary-50); color: var(--c-primary-700); }
	.no-js .fft-nav__submenu { display: none; }
	.no-js .fft-nav__item:hover > .fft-nav__submenu,
	.no-js .fft-nav__item:focus-within > .fft-nav__submenu { display: block; }
	.fft-nav__list > .fft-nav__item:nth-last-child(-n+3) > .fft-nav__submenu { left: auto; right: 0; }
}

/* ---------- Page header & breadcrumbs ---------- */
.fft-page-header { background: var(--c-primary-50); border-bottom: 1px solid var(--c-border); padding-block: var(--space-5) var(--space-6); }
.fft-page-header__title { margin-bottom: var(--space-3); max-width: 28ch; }
.fft-page-header--grant .fft-page-header__title { max-width: 32ch; }
.fft-page-header__intro { font-size: var(--fs-lg); color: var(--c-ink-soft); max-width: 70ch; margin: 0; }
.fft-page-header__badges { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-3); }
.fft-breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); padding: 0; margin: 0 0 var(--space-4); font-size: var(--fs-sm); }
.fft-breadcrumbs li:not(:last-child)::after { content: "/"; margin-left: var(--space-2); color: var(--c-muted); }
.fft-breadcrumbs [aria-current] { color: var(--c-muted); }

/* ---------- Hero ---------- */
.fft-hero {
	background:
		radial-gradient(circle at 85% 20%, rgba(217, 164, 65, .18), transparent 45%),
		linear-gradient(135deg, var(--c-primary-900) 0%, var(--c-primary) 100%);
	color: #e6f0f1;
}
.fft-hero__inner { padding-block: var(--space-8); }
@media (min-width: 900px) { .fft-hero__inner { padding-block: 6.5rem; } }
.fft-hero__title { color: #fff; max-width: 18ch; font-size: var(--fs-3xl); }
.fft-hero__lead { font-size: var(--fs-lg); max-width: 60ch; margin-bottom: var(--space-6); }

.fft-intro__grid { display: grid; gap: var(--space-5); }
@media (min-width: 900px) { .fft-intro__grid { grid-template-columns: 1fr 1.2fr; gap: var(--space-7); } }

/* ---------- Grid & cards ---------- */
.fft-grid { display: grid; gap: var(--space-5); grid-template-columns: 1fr; list-style: none; padding: 0; margin: 0 0 var(--space-5); }
@media (min-width: 640px) {
	.fft-grid--2, .fft-grid--3, .fft-grid--programmes { grid-template-columns: repeat(2, 1fr); }
	.fft-grid--partners { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1000px) {
	.fft-grid--3 { grid-template-columns: repeat(3, 1fr); }
	.fft-grid--programmes { grid-template-columns: repeat(4, 1fr); }
	.fft-grid--partners { grid-template-columns: repeat(4, 1fr); }
}

.fft-card {
	position: relative; display: flex; flex-direction: column; gap: var(--space-2);
	background: #fff; border: 1px solid var(--c-border); border-radius: var(--radius-lg);
	padding: var(--space-5); box-shadow: 0 1px 0 rgba(10, 30, 40, .03);
	transition: border-color .15s, box-shadow .15s;
}
.fft-card:hover { border-color: #aebcc2; box-shadow: var(--shadow); }
.fft-card__title { font-size: 1.2rem; margin: 0; }
.fft-card__title a { color: var(--c-ink); text-decoration: none; }
.fft-card__title a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.fft-card__title a:hover { text-decoration: underline; }
.fft-card__title a:focus-visible { outline: none; }
.fft-card:focus-within { outline: 3px solid var(--c-focus); outline-offset: 2px; }
.fft-card__text { color: var(--c-ink-soft); font-size: var(--fs-sm); margin: 0; }
.fft-card__kicker { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--c-muted); margin: 0; }
.fft-card__top { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); }
.fft-card__meta { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); margin: auto 0 0; padding-top: var(--space-3); border-top: 1px solid var(--c-border); font-size: var(--fs-sm); }
.fft-card__meta dt { font-size: var(--fs-xs); color: var(--c-muted); font-weight: 600; }
.fft-card__meta dd { margin: 0; }
.fft-card__line { display: flex; gap: var(--space-2); margin: 0; font-size: var(--fs-sm); color: var(--c-ink-soft); }
.fft-card__code {
	display: inline-grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: var(--radius);
	background: var(--c-primary); color: #fff; font: 700 1.1rem var(--font-serif);
}
.fft-card--programme { border-top: 4px solid var(--c-accent); }
.fft-card--post.has-image { padding: 0; overflow: hidden; }
.fft-card--post.has-image .fft-card__body { padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-2); }
.fft-card__media img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.fft-card--event { flex-direction: row; align-items: flex-start; gap: var(--space-4); }
.fft-card--partner { align-items: center; text-align: center; }
.fft-card__logo { height: 90px; display: grid; place-items: center; }
.fft-card__logo img { max-height: 80px; width: auto; }
.fft-card__initials { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: var(--c-primary-50); color: var(--c-primary); font: 700 1.6rem var(--font-serif); }
.fft-card--link { border-left: 4px solid var(--c-primary); }
.fft-date-tile { flex: none; display: grid; place-items: center; width: 4.2rem; padding: var(--space-2); margin: 0; border-radius: var(--radius); background: var(--c-primary-50); color: var(--c-primary-700); font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; line-height: 1.1; text-align: center; }
.fft-date-tile span { font: 700 1.6rem/1 var(--font-serif); }

/* ---------- Badges ---------- */
.fft-badge { display: inline-block; padding: .15rem .55rem; border-radius: 999px; font-size: var(--fs-xs); font-weight: 700; line-height: 1.5; border: 1px solid transparent; }
.fft-badge--success { background: var(--c-success-bg); color: var(--c-success); border-color: #b7dcc4; }
.fft-badge--warning { background: var(--c-warning-bg); color: var(--c-warning); border-color: #f1cf95; }
.fft-badge--info    { background: var(--c-info-bg);    color: var(--c-info);    border-color: #b8d2ea; }
.fft-badge--neutral { background: var(--c-neutral-bg); color: var(--c-neutral); border-color: #cdd5da; }
.fft-badge--danger  { background: var(--c-danger-bg);  color: var(--c-danger);  border-color: #efbcbc; }
.fft-badge--muted   { background: #f0f2f3; color: var(--c-muted); border-color: #d5dde0; }
.fft-badge--outline { background: #fff; color: var(--c-ink-soft); border-color: var(--c-border); }

/* ---------- Flows / steps / impact chain ---------- */
.fft-flow { list-style: none; padding: 0; margin: var(--space-6) 0; display: grid; gap: var(--space-3); counter-reset: flow; }
.fft-flow li { counter-increment: flow; position: relative; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .16); border-radius: var(--radius); padding: var(--space-4); padding-left: 3.4rem; }
.fft-flow li::before { content: counter(flow); position: absolute; left: var(--space-4); top: var(--space-4); width: 1.8rem; height: 1.8rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-accent); color: var(--c-primary-900); font-weight: 700; font-size: var(--fs-sm); }
.fft-flow strong { display: block; color: #fff; font-family: var(--font-serif); font-size: 1.15rem; }
.fft-flow span { color: #d3e2e5; font-size: var(--fs-sm); }
@media (min-width: 900px) {
	.fft-flow { grid-template-columns: repeat(7, 1fr); gap: var(--space-2); }
	.fft-flow li { padding: 3.2rem var(--space-3) var(--space-4); }
	.fft-flow li::before { left: var(--space-3); top: var(--space-3); }
	.fft-flow li:not(:last-child)::after { content: "→"; position: absolute; right: -.75rem; top: var(--space-3); color: var(--c-accent); font-weight: 700; z-index: 1; }
}

.ff-steps { list-style: none; padding: 0; margin: var(--space-5) 0; counter-reset: step; }
.ff-steps li { counter-increment: step; position: relative; padding: 0 0 var(--space-5) 3.6rem; }
.ff-steps li::before { content: counter(step); position: absolute; left: 0; top: 0; width: 2.4rem; height: 2.4rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-primary); color: #fff; font-weight: 700; }
.ff-steps li:not(:last-child)::after { content: ""; position: absolute; left: 1.15rem; top: 2.6rem; bottom: .3rem; width: 2px; background: var(--c-border); }
.ff-steps strong { display: block; font-family: var(--font-serif); font-size: 1.2rem; }
.ff-steps span { display: block; color: var(--c-ink-soft); }
.ff-steps--compact li { padding-bottom: var(--space-4); }

.fft-impact-chain { list-style: none; padding: 0; margin: var(--space-5) 0; display: grid; gap: var(--space-2); }
.fft-impact-chain li { background: var(--c-surface-2); border-left: 4px solid var(--c-primary); border-radius: 0 var(--radius) var(--radius) 0; padding: var(--space-3) var(--space-4); }
.fft-impact-chain li:last-child { border-left-color: var(--c-accent); }
.fft-impact-chain strong { display: block; font-size: var(--fs-sm); text-transform: uppercase; letter-spacing: .06em; color: var(--c-primary-700); }
.fft-impact-chain span { font-size: var(--fs-sm); }
@media (min-width: 700px) { .fft-impact-chain { grid-template-columns: repeat(2, 1fr); } .fft-impact-chain li:last-child { grid-column: 1 / -1; } }
@media (min-width: 1000px) {
	/* Five across only where the chain has the full container width. */
	.fft-container > .fft-block .fft-impact-chain { grid-template-columns: repeat(5, 1fr); }
	.fft-container > .fft-block .fft-impact-chain li:last-child { grid-column: auto; }
}

/* ---------- Stats ---------- */
.fft-stats { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); }
.fft-stat { background: var(--c-primary); color: #fff; border-radius: var(--radius-lg); padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-1); }
.fft-stat__value { font: 700 var(--fs-2xl)/1.1 var(--font-serif); color: #fff; }
.fft-stat__label { font-weight: 600; }
.fft-stat__note { font-size: var(--fs-xs); color: #cfe0e3; }
.fft-stats--light .fft-stat { background: var(--c-primary-50); color: var(--c-ink); border: 1px solid var(--c-border); }
.fft-stats--light .fft-stat__value { color: var(--c-primary-700); }
.fft-stats--light .fft-stat__note { color: var(--c-muted); }

/* ---------- Quotes ---------- */
.fft-quote { margin: 0; background: #fff; border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-4); }
.fft-quote__text { margin: 0; font-family: var(--font-serif); font-size: 1.15rem; color: var(--c-ink); border-left: 4px solid var(--c-accent); padding-left: var(--space-4); }
.fft-quote__text p:last-child { margin: 0; }
.fft-quote__by { display: flex; align-items: center; gap: var(--space-3); font-size: var(--fs-sm); color: var(--c-ink-soft); }
.fft-quote__by img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }
.fft-quote--pull { margin-block: var(--space-6); background: var(--c-surface-2); }

/* ---------- Layouts ---------- */
.fft-layout-aside { display: grid; gap: var(--space-6); }
@media (min-width: 1000px) {
	.fft-layout-aside { grid-template-columns: minmax(0, 1fr) 22rem; gap: var(--space-7); align-items: start; }
	.fft-layout-aside__side { position: sticky; top: var(--space-4); }
}
.fft-layout-form { display: grid; gap: var(--space-6); }
@media (min-width: 1000px) { .fft-layout-form { grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: var(--space-7); align-items: start; } }

.fft-block { margin-bottom: var(--space-7); }
.fft-block > h2 { font-size: var(--fs-xl); padding-bottom: var(--space-2); border-bottom: 2px solid var(--c-primary-50); }

.fft-panel { background: #fff; border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: var(--space-5); margin-bottom: var(--space-4); }
.fft-panel__title { font-size: 1.15rem; margin-bottom: var(--space-3); }
.fft-panel--apply { border-top: 4px solid var(--c-accent); }
.fft-panel__foot { font-size: var(--fs-xs); color: var(--c-muted); margin: var(--space-3) 0 0; }
.fft-panel__logo { margin-bottom: var(--space-4); }
.fft-facts { margin: 0 0 var(--space-4); }
.fft-facts > div { padding: var(--space-2) 0; border-bottom: 1px solid var(--c-border); }
.fft-facts > div:last-child { border-bottom: 0; }
.fft-facts dt { font-size: var(--fs-xs); font-weight: 700; color: var(--c-muted); text-transform: uppercase; letter-spacing: .05em; }
.fft-facts dd { margin: 0; }

.fft-programme-list { display: grid; gap: var(--space-3); }
.fft-programme-row { display: grid; grid-template-columns: auto 1fr; gap: var(--space-4); align-items: start; padding: var(--space-5); border: 1px solid var(--c-border); border-radius: var(--radius-lg); border-left: 4px solid var(--c-accent); }
.fft-programme-row h2 { font-size: var(--fs-xl); margin-bottom: var(--space-2); }
.fft-programme-row h2 a { color: var(--c-ink); text-decoration: none; }
.fft-programme-row h2 a:hover { text-decoration: underline; }
.fft-programme-row p { margin: 0; color: var(--c-ink-soft); }
.fft-programme-row > .fft-link-arrow { display: none; }
@media (min-width: 900px) { .fft-programme-row { grid-template-columns: auto 1fr auto; align-items: center; } .fft-programme-row > .fft-link-arrow { display: inline-flex; } }
.fft-programme-facts { margin-top: var(--space-6); }

/* ---------- Prose ---------- */
.fft-prose { max-width: 72ch; }
.fft-prose--wide { max-width: 80ch; }
.fft-prose > *:last-child { margin-bottom: 0; }
.fft-prose h2 { margin-top: var(--space-6); font-size: var(--fs-xl); }
.fft-prose h3 { margin-top: var(--space-5); font-size: var(--fs-lg); }
.fft-prose ul, .fft-prose ol { padding-left: 1.3rem; }
.fft-prose li { margin-bottom: var(--space-2); }
.fft-feature-image { margin: 0 0 var(--space-6); }
.fft-feature-image img { width: 100%; border-radius: var(--radius-lg); }
.fft-abstract { background: var(--c-surface-2); border-radius: var(--radius-lg); padding: var(--space-5); margin-bottom: var(--space-5); }
.fft-abstract h2 { font-size: var(--fs-lg); }

.ff-statement { border-left: 4px solid var(--c-accent); padding: var(--space-2) 0 var(--space-2) var(--space-5); margin-bottom: var(--space-6); }
.ff-statement p { font-family: var(--font-serif); font-size: var(--fs-lg); }
.ff-values { list-style: none; padding: 0; counter-reset: val; display: grid; gap: var(--space-3); }
.ff-values li { counter-increment: val; background: var(--c-surface-2); border-radius: var(--radius); padding: var(--space-4) var(--space-4) var(--space-4) 3.4rem; position: relative; margin: 0; }
.ff-values li::before { content: counter(val); position: absolute; left: var(--space-4); top: var(--space-4); font: 700 1.25rem var(--font-serif); color: var(--c-accent-700); }
.ff-link-list { list-style: none; padding: 0; }
.ff-link-list li { padding: var(--space-3) 0; border-bottom: 1px solid var(--c-border); margin: 0; }
.ff-definitions dt { font-weight: 700; margin-top: var(--space-3); }
.ff-definitions dd { margin: 0 0 var(--space-2); color: var(--c-ink-soft); }
.ff-callout, .fft-empty--large { background: var(--c-primary-50); border: 1px solid #c7dcdf; border-radius: var(--radius-lg); padding: var(--space-5); margin: var(--space-6) 0; }
.ff-callout h2 { font-size: var(--fs-lg); margin-bottom: var(--space-2); }
.ff-callout > *:last-child { margin-bottom: 0; }

.ff-placeholder { background: #fff8e8; border: 1px dashed #c9912b; border-radius: var(--radius); padding: var(--space-4); margin: var(--space-4) 0; color: #5c3d06; }
.ff-placeholder p { margin: 0; }

.fft-checklist { list-style: none; padding: 0; }
.fft-checklist li { position: relative; padding-left: 1.7rem; margin-bottom: var(--space-2); }
.fft-checklist li::before { content: ""; position: absolute; left: .2rem; top: .45em; width: .8rem; height: .45rem; border-left: 2px solid var(--c-primary); border-bottom: 2px solid var(--c-primary); transform: rotate(-45deg); }
.fft-numbered { padding-left: 1.4rem; }
.fft-columns { columns: 2 16rem; }
.fft-table th, .fft-table td { text-align: left; padding: var(--space-3); border-bottom: 1px solid var(--c-border); }
.fft-table thead th { background: var(--c-surface-2); font-size: var(--fs-sm); }
.fft-details { border: 1px solid var(--c-border); border-radius: var(--radius); padding: var(--space-3) var(--space-4); margin-block: var(--space-3); }
.fft-details summary { cursor: pointer; font-weight: 600; color: var(--c-link); }
.fft-details[open] summary { margin-bottom: var(--space-3); }

.fft-doclist { list-style: none; padding: 0; }
.fft-doclist li { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-2); padding: var(--space-3) 0; border-bottom: 1px solid var(--c-border); }
.fft-doclist a { display: inline-flex; gap: var(--space-2); align-items: center; font-weight: 600; }
.fft-doclist--rich li { flex-wrap: nowrap; align-items: flex-start; gap: var(--space-3); }
.fft-doclist--rich li > div { display: flex; flex-direction: column; }
.fft-doclist--rich p { margin: var(--space-1) 0 0; font-size: var(--fs-sm); color: var(--c-ink-soft); }

.fft-people { list-style: none; padding: 0; display: grid; gap: var(--space-5); }
@media (min-width: 800px) { .fft-people { grid-template-columns: repeat(2, 1fr); } }
.fft-person { display: grid; grid-template-columns: 1fr; gap: var(--space-4); border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: var(--space-5); }
@media (min-width: 500px) { .fft-person:has(img) { grid-template-columns: 8rem 1fr; } }
.fft-person img { width: 8rem; height: auto; border-radius: var(--radius); }
.fft-person__name { font-size: 1.25rem; margin-bottom: var(--space-1); }
.fft-person__role { color: var(--c-accent-700); font-weight: 600; }

/* ---------- Tabs, filters, finder ---------- */
.fft-tabs { display: flex; gap: var(--space-2); overflow-x: auto; padding-bottom: var(--space-2); margin-bottom: var(--space-5); border-bottom: 1px solid var(--c-border); scrollbar-width: thin; }
.fft-tabs a { flex: none; padding: .5rem .9rem; border-radius: 999px; text-decoration: none; color: var(--c-ink-soft); font-weight: 600; font-size: var(--fs-sm); border: 1px solid transparent; }
.fft-tabs a:hover { background: var(--c-surface-2); color: var(--c-ink); }
.fft-tabs a[aria-current="page"] { background: var(--c-primary); color: #fff; }

.fft-finder { display: grid; gap: var(--space-6); }
@media (min-width: 1000px) { .fft-finder { grid-template-columns: 17rem minmax(0, 1fr); align-items: start; } .fft-filters { position: sticky; top: var(--space-4); } }
.fft-filters { background: var(--c-surface-2); border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: var(--space-5); }
.fft-filters__title { font-size: 1.1rem; }
.fft-filters__field { margin-bottom: var(--space-4); }
.fft-filters__field label { display: block; font-weight: 600; font-size: var(--fs-sm); margin-bottom: var(--space-1); }
.fft-filters__field input, .fft-filters__field select { width: 100%; min-height: 44px; padding: .45rem .6rem; border: 1px solid #8a979f; border-radius: var(--radius); background: #fff; font: inherit; font-size: var(--fs-sm); }
.fft-filters__actions { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; }
.fft-results-count { font-weight: 600; color: var(--c-ink-soft); }
.fft-empty { background: var(--c-surface-2); border-radius: var(--radius-lg); padding: var(--space-5); color: var(--c-ink-soft); }
.fft-empty p:last-child { margin: 0; }
.fft-hint { color: var(--c-ink-soft); }

.fft-pagination ul { list-style: none; display: flex; flex-wrap: wrap; gap: var(--space-2); padding: 0; }
.fft-pagination a, .fft-pagination span { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 .75rem; border: 1px solid var(--c-border); border-radius: var(--radius); text-decoration: none; }
.fft-pagination .current { background: var(--c-primary); color: #fff; border-color: var(--c-primary); }

/* ---------- Alerts ---------- */
.ff-alert { border-radius: var(--radius); padding: var(--space-4); margin-bottom: var(--space-5); border: 1px solid; }
.ff-alert p:last-child { margin: 0; }
.ff-alert--success { background: var(--c-success-bg); border-color: #9fcfb1; color: var(--c-success); }
.ff-alert--error   { background: var(--c-danger-bg);  border-color: #e6a3a3; color: var(--c-danger); }
.ff-alert--info    { background: var(--c-info-bg);    border-color: #a9c8e5; color: var(--c-info); }
.ff-alert:focus { outline: 3px solid var(--c-focus); outline-offset: 2px; }
.ff-error-summary__title { font-family: var(--font-sans); font-size: 1.05rem; color: var(--c-danger); margin-bottom: var(--space-2); }
.ff-error-summary ul { margin: 0; padding-left: 1.2rem; }
.ff-error-summary a { color: var(--c-danger); font-weight: 600; }

/* ---------- Forms (rendered by the core plugin) ---------- */
.fft-form-card { background: #fff; border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: var(--space-5); box-shadow: var(--shadow); }
@media (min-width: 700px) { .fft-form-card { padding: var(--space-6); } }
.ff-form__section { border: 0; padding: 0; margin: 0 0 var(--space-6); min-width: 0; }
.ff-form__section > legend { font: 600 var(--fs-lg)/1.3 var(--font-serif); padding: 0; margin-bottom: var(--space-4); width: 100%; border-bottom: 2px solid var(--c-primary-50); padding-bottom: var(--space-2); }
.ff-form__step { display: block; font: 700 var(--fs-xs) var(--font-sans); letter-spacing: .08em; text-transform: uppercase; color: var(--c-accent-700); margin-bottom: var(--space-1); }
.ff-field { margin-bottom: var(--space-5); }
.ff-field__label, .ff-choice-group > legend { display: block; font-weight: 600; margin-bottom: var(--space-1); padding: 0; }
.ff-field__help { font-size: var(--fs-sm); color: var(--c-muted); margin: 0 0 var(--space-2); }
.ff-field__error { font-size: var(--fs-sm); font-weight: 600; color: var(--c-danger); margin: 0 0 var(--space-2); }
.ff-field input[type="text"], .ff-field input[type="email"], .ff-field input[type="tel"], .ff-field input[type="url"],
.ff-field select, .ff-field textarea {
	display: block; width: 100%; min-height: 48px; padding: .6rem .75rem;
	border: 1px solid #7d8b93; border-radius: var(--radius); background: #fff;
	font: inherit; color: var(--c-ink);
}
.ff-field textarea { min-height: 8rem; resize: vertical; }
.ff-field input[type="file"] { display: block; width: 100%; padding: var(--space-3); border: 1px dashed #7d8b93; border-radius: var(--radius); background: var(--c-surface-2); font-size: var(--fs-sm); }
.ff-field--error input, .ff-field--error select, .ff-field--error textarea { border: 2px solid var(--c-danger); }
.ff-field--error { border-left: 4px solid var(--c-danger); padding-left: var(--space-3); }
.ff-choice-group { border: 0; padding: 0; margin: 0; }
.ff-choice { display: flex; gap: var(--space-3); align-items: flex-start; margin-bottom: var(--space-2); }
.ff-choice input { flex: none; width: 1.3rem; height: 1.3rem; margin-top: .2rem; accent-color: var(--c-primary); }
.ff-choice label { cursor: pointer; }
.ff-req { color: var(--c-danger); font-weight: 700; }
.ff-form__required-note, .ff-form__hint, .ff-form__privacy { font-size: var(--fs-sm); color: var(--c-muted); }
.ff-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.ff-form .ff-button { width: 100%; }
@media (min-width: 600px) { .ff-form .ff-button { width: auto; } }

/* ---------- CTA band & footer ---------- */
.fft-cta-band { background: var(--c-primary-900); color: #d3e2e5; padding-block: var(--space-7); }
.fft-cta-band h2 { color: #fff; }
.fft-cta-band__inner { display: grid; gap: var(--space-5); align-items: center; }
@media (min-width: 900px) { .fft-cta-band__inner { grid-template-columns: 1.4fr auto; } }
.fft-cta-band p { max-width: 60ch; margin: 0; }

.fft-footer { background: #0a1d24; color: #c2d2d6; font-size: var(--fs-sm); }
.fft-footer a { color: #fff; }
.fft-footer a:hover { color: var(--c-accent); }
.fft-footer__grid { display: grid; gap: var(--space-6); padding-block: var(--space-7); }
@media (min-width: 700px) { .fft-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .fft-footer__grid { grid-template-columns: 1.6fr 1fr 1fr 1.2fr; } }
.fft-footer__name { font: 700 1.3rem var(--font-serif); color: #fff; margin-bottom: var(--space-1); }
.fft-footer__tagline { color: var(--c-accent); font-weight: 600; }
.fft-footer__eco { max-width: 44ch; }
.fft-footer__heading { font: 700 var(--fs-xs) var(--font-sans); text-transform: uppercase; letter-spacing: .08em; color: #93aab0; margin-bottom: var(--space-3); }
.fft-footer__list { list-style: none; padding: 0; margin: 0; }
.fft-footer__list li { margin-bottom: var(--space-2); }
.fft-footer__contact li { display: flex; gap: var(--space-2); }
.fft-footer__social { list-style: none; padding: 0; margin: var(--space-4) 0 0; display: flex; flex-wrap: wrap; gap: var(--space-3); }
.fft-footer__bottom { border-top: 1px solid rgba(255, 255, 255, .1); }
.fft-footer__bottom .fft-container { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-2); padding-block: var(--space-4); }
.fft-footer__bottom p { margin: 0; }

/* ---------- Print ---------- */
@media print {
	.fft-utility, .fft-nav, .fft-menu-toggle, .fft-search, .fft-masthead__cta, .fft-cta-band, .fft-footer, .fft-filters, .ff-form-wrap { display: none !important; }
	.fft-layout-aside { display: block; }
	a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .8em; }
}
