/* Project Pro SA – generated from assets/css/partials. Do not edit this file. */

/* ---- 00-tokens.css ---- */
/* Design tokens (README "Design tokens"). Mobile-first: fluid sizes use clamp(). */
:root {
	/* Colour */
	--pp-ink-950: #0f1a14;
	--pp-ink-990: #0a120d;           /* Footer (reference files) */
	--pp-ink-900: #16201a;
	--pp-header: #202c27;
	--pp-forest-700: #1c3326;
	--pp-forest-500: #2e4a3a;
	--pp-text-body: #2e3a33;
	--pp-text-muted: #4e5a52;
	--pp-text-subtle: #6b746e;
	--pp-line: #cfc8b8;
	--pp-line-soft: #e2dccf;
	--pp-line-form: #ddd6c7;
	--pp-stone-100: #ede8dd;
	--pp-stone-50: #f6f3ec;
	--pp-white: #ffffff;
	--pp-lime-400: #b9e15a;
	--pp-lime-500: #a5d13f;
	--pp-on-dark: #f6f3ec;
	--pp-on-dark-2: #e9e5db;
	--pp-on-dark-3: #c9cfc9;
	--pp-on-dark-4: #a9b3ac;
	--pp-line-dark: rgba(246, 243, 236, 0.14);
	--pp-line-header: rgba(246, 243, 236, 0.08);
	--pp-outline-on-dark: rgba(246, 243, 236, 0.6);
	--pp-tag-bg: rgba(246, 243, 236, 0.94);
	--pp-overlay: rgba(15, 26, 20, 0.94);

	/* Type families */
	--pp-font-serif: "Instrument Serif", "Times New Roman", serif;
	--pp-font-sans: "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;

	/* Type scale (mobile → desktop) */
	--pp-fs-display: clamp(48px, 7.2vw, 104px);   /* H1 hero */
	--pp-fs-h1: clamp(44px, 6.4vw, 96px);         /* H1 page */
	--pp-fs-h1-sm: clamp(44px, 6.1vw, 88px);      /* H1 single project / article / contact */
	--pp-fs-h2: clamp(40px, 5vw, 72px);           /* H2 section */
	--pp-fs-h2-md: clamp(38px, 4.45vw, 64px);     /* H2 How we work / About / Enquiry */
	--pp-fs-h2-sm: clamp(34px, 3.9vw, 56px);      /* H2 small */
	--pp-fs-pull: clamp(26px, 3.05vw, 44px);      /* Pull paragraph */
	--pp-fs-h3: clamp(26px, 2.1vw, 30px);         /* H3 card */
	--pp-fs-lead: clamp(18px, 1.46vw, 21px);
	--pp-fs-body: 17px;
	--pp-fs-body-lg: 19px;
	--pp-fs-small: 15px;
	--pp-fs-xs: 13px;
	--pp-fs-eyebrow: 12px;

	--pp-lh-display: 0.95;
	--pp-lh-h1: 0.97;
	--pp-lh-h2: 1;
	--pp-lh-h3: 1.1;
	--pp-lh-lead: 1.45;
	--pp-lh-body: 1.6;

	--pp-ls-display: -0.02em;
	--pp-ls-h2: -0.015em;
	--pp-ls-eyebrow: 0.16em;
	--pp-ls-meta: 0.14em;

	/* Spacing scale (px) */
	--pp-space-4: 4px;
	--pp-space-8: 8px;
	--pp-space-12: 12px;
	--pp-space-16: 16px;
	--pp-space-20: 20px;
	--pp-space-24: 24px;
	--pp-space-28: 28px;
	--pp-space-32: 32px;
	--pp-space-40: 40px;
	--pp-space-48: 48px;
	--pp-space-56: 56px;
	--pp-space-64: 64px;
	--pp-space-72: 72px;
	--pp-space-96: 96px;
	--pp-space-120: 120px;
	--pp-space-144: 144px;

	/* Grid (mobile values; overridden at breakpoints below) */
	--pp-gutter: 16px;
	--pp-page-pad: 20px;
	--pp-section-y: 88px;
	--pp-section-y-tight: 72px;
	--pp-header-h: 64px;

	/* Radius */
	--pp-radius-img: 4px;
	--pp-radius-card: 6px;
	--pp-radius-pill: 999px;

	/* Shadows */
	--pp-shadow-dropdown: 0 24px 48px -16px rgba(15, 26, 20, 0.25);
	--pp-shadow-form: 0 30px 60px -30px rgba(0, 0, 0, 0.5);
	--pp-shadow-card: 0 30px 60px -40px rgba(15, 26, 20, 0.35);
	--pp-shadow-brand-card: 0 30px 60px -30px rgba(15, 26, 20, 0.3);

	/* Motion */
	--pp-dur-colour: 0.2s;
	--pp-dur-press: 0.1s;
	--pp-dur-zoom: 0.8s;
	--pp-dur-reveal: 0.6s;
	--pp-ease-zoom: cubic-bezier(0.2, 0.7, 0.2, 1);
	--pp-press-scale: 0.97;
	--pp-zoom-scale: 1.05;
	--pp-reveal-distance: 24px;

	/* Focus */
	--pp-focus: 2px solid var(--pp-lime-400);
	--pp-focus-offset: 3px;
}

/* Tablet ≥768 */
@media (min-width: 768px) {
	:root {
		--pp-gutter: 20px;
		--pp-page-pad: 40px;
		--pp-section-y: 96px;
		--pp-section-y-tight: 72px;
	}
}

/* Small desktop ≥1024 */
@media (min-width: 1024px) {
	:root {
		--pp-gutter: 24px;
	}
}

/* Header goes full-height with the desktop nav from 1024 */
@media (min-width: 1024px) {
	:root {
		--pp-header-h: 84px;
	}
}

/* Desktop ≥1280 */
@media (min-width: 1280px) {
	:root {
		--pp-page-pad: 80px;
		--pp-section-y: 144px;
		--pp-section-y-tight: 96px;
	}
}

/* ---- 01-fonts.css ---- */
/* Self-hosted fonts (latin subset, WOFF2). Paths are relative to assets/css/theme.css. */
@font-face {
	font-family: "Instrument Serif";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/instrument-serif-400.woff2") format("woff2");
}

@font-face {
	font-family: "Instrument Serif";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/instrument-serif-400-italic.woff2") format("woff2");
}

@font-face {
	font-family: "Figtree";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/figtree-400.woff2") format("woff2");
}

@font-face {
	font-family: "Figtree";
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url("../fonts/figtree-500.woff2") format("woff2");
}

@font-face {
	font-family: "Figtree";
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url("../fonts/figtree-600.woff2") format("woff2");
}

@font-face {
	font-family: "Figtree";
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url("../fonts/figtree-700.woff2") format("woff2");
}

/* ---- 02-reset.css ---- */
/* Minimal modern reset. */
*,
*::before,
*::after {
	box-sizing: border-box;
}

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

body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
figure,
blockquote,
dl,
dd,
ul,
ol {
	margin: 0;
}

ul[class],
ol[class] {
	padding: 0;
	list-style: none;
}

img,
picture,
video,
svg {
	display: block;
	max-width: 100%;
}

img {
	height: auto;
}

input,
button,
textarea,
select {
	font: inherit;
	color: inherit;
}

button {
	cursor: pointer;
}

a {
	color: inherit;
}

table {
	border-collapse: collapse;
}

[hidden] {
	display: none !important;
}

/* ---- 03-base.css ---- */
/* Base elements, focus, skip link, screen-reader text. */
html {
	scroll-behavior: smooth;
	scroll-padding-top: var(--pp-header-h);
}

body {
	background: var(--pp-stone-50);
	color: var(--pp-ink-900);
	font-family: var(--pp-font-sans);
	font-size: var(--pp-fs-body);
	font-weight: 400;
	line-height: var(--pp-lh-body);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

a {
	color: var(--pp-ink-900);
	transition: color var(--pp-dur-colour);
}

a:hover {
	color: var(--pp-forest-500);
}

::selection {
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
}

:focus-visible {
	outline: var(--pp-focus);
	outline-offset: var(--pp-focus-offset);
}

/* Skip link */
.pp-skip-link {
	position: absolute;
	top: 12px;
	left: 12px;
	z-index: 1000;
	padding: 12px 20px;
	border-radius: var(--pp-radius-pill);
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
	font-weight: 600;
	font-size: var(--pp-fs-small);
	text-decoration: none;
	transform: translateY(-200%);
}

.pp-skip-link:focus {
	transform: none;
}

/* Visually hidden (WordPress-compatible names too) */
.pp-sr-only,
.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.screen-reader-text:focus {
	position: static !important;
	width: auto;
	height: auto;
	margin: 0;
	clip: auto;
	white-space: normal;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

/* ---- 04-layout.css ---- */
/*
 * Layout: container, 12-column grid, sections and surfaces.
 * Desktop: full width minus 80px side padding, 24px gutter.
 * Tablet ≤1279/≤1023: 40px padding, 20px gutter. Mobile ≤767: 20px, 16px, columns stack.
 */
.pp-container {
	width: 100%;
	padding-inline: var(--pp-page-pad);
}

.pp-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--pp-gutter);
}

/* Column utilities apply from tablet up; on mobile every column spans full width. */
@media (min-width: 768px) {
	.pp-grid {
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.pp-grid > * {
		grid-column: 1 / -1;
	}

	.pp-span-1 { grid-column-end: span 1; }
	.pp-span-2 { grid-column-end: span 2; }
	.pp-span-3 { grid-column-end: span 3; }
	.pp-span-4 { grid-column-end: span 4; }
	.pp-span-5 { grid-column-end: span 5; }
	.pp-span-6 { grid-column-end: span 6; }
	.pp-span-7 { grid-column-end: span 7; }
	.pp-span-8 { grid-column-end: span 8; }
	.pp-span-9 { grid-column-end: span 9; }
	.pp-span-10 { grid-column-end: span 10; }
	.pp-span-11 { grid-column-end: span 11; }
	.pp-span-12 { grid-column-end: span 12; }

	.pp-grid > [class*="pp-span-"] { grid-column-start: auto; }

	.pp-start-1 { grid-column-start: 1 !important; }
	.pp-start-2 { grid-column-start: 2 !important; }
	.pp-start-3 { grid-column-start: 3 !important; }
	.pp-start-4 { grid-column-start: 4 !important; }
	.pp-start-5 { grid-column-start: 5 !important; }
	.pp-start-6 { grid-column-start: 6 !important; }
	.pp-start-7 { grid-column-start: 7 !important; }
	.pp-start-8 { grid-column-start: 8 !important; }
	.pp-start-9 { grid-column-start: 9 !important; }
	.pp-start-10 { grid-column-start: 10 !important; }
	.pp-start-11 { grid-column-start: 11 !important; }
	.pp-start-12 { grid-column-start: 12 !important; }

	.pp-grid--end { align-items: end; }
	.pp-grid--center { align-items: center; }
}

/* Tablet-only overrides (768–1023): .pp-span-t-6 etc. */
@media (min-width: 768px) and (max-width: 1023px) {
	.pp-span-t-4 { grid-column: auto / span 4 !important; }
	.pp-span-t-6 { grid-column: auto / span 6 !important; }
	.pp-span-t-12 { grid-column: 1 / -1 !important; }
}

/* Sections */
.pp-section {
	padding-block: var(--pp-section-y);
}

.pp-section--tight {
	padding-block: var(--pp-section-y-tight);
}

.pp-section--flush-top {
	padding-top: 0;
}

.pp-section--flush-bottom {
	padding-bottom: 0;
}

/* Surfaces */
.pp-surface-stone {
	background: var(--pp-stone-100);
}

.pp-surface-light {
	background: var(--pp-stone-50);
}

.pp-surface-white {
	background: var(--pp-white);
}

.pp-surface-forest {
	background: var(--pp-forest-700);
	color: var(--pp-on-dark);
}

.pp-surface-ink {
	background: var(--pp-ink-950);
	color: var(--pp-on-dark);
}

/* Zero-specificity wrapper so buttons and components keep their own colours. */
:where(.pp-surface-forest, .pp-surface-ink) a {
	color: var(--pp-on-dark);
}

/* Hairline divider */
.pp-rule {
	height: 1px;
	border: 0;
	background: var(--pp-line);
}

.pp-surface-forest .pp-rule,
.pp-surface-ink .pp-rule {
	background: var(--pp-line-dark);
}

/* Stack helper: vertical rhythm between children */
.pp-stack > * + * {
	margin-top: var(--pp-stack-gap, var(--pp-space-24));
}

/* ---- 05-typography.css ---- */
/* Typography: headings (serif), body (Figtree), eyebrow, lead, meta. <em> in headings = italic serif. */
h1,
h2,
h3,
.pp-display,
.pp-h1,
.pp-h2,
.pp-h3 {
	font-family: var(--pp-font-serif);
	font-weight: 400;
	color: inherit;
	text-wrap: balance;
}

h1 em,
h2 em,
h3 em,
.pp-display em,
.pp-h1 em,
.pp-h2 em,
.pp-h3 em,
.pp-pull em {
	font-family: var(--pp-font-serif);
	font-style: italic;
}

.pp-display {
	font-size: var(--pp-fs-display);
	line-height: var(--pp-lh-display);
	letter-spacing: var(--pp-ls-display);
}

h1,
.pp-h1 {
	font-size: var(--pp-fs-h1);
	line-height: var(--pp-lh-h1);
	letter-spacing: var(--pp-ls-display);
}

.pp-h1--sm {
	font-size: var(--pp-fs-h1-sm);
}

h2,
.pp-h2 {
	font-size: var(--pp-fs-h2);
	line-height: var(--pp-lh-h2);
	letter-spacing: var(--pp-ls-h2);
}

.pp-h2--md {
	font-size: var(--pp-fs-h2-md);
}

.pp-h2--sm {
	font-size: var(--pp-fs-h2-sm);
}

h3,
.pp-h3 {
	font-size: var(--pp-fs-h3);
	line-height: var(--pp-lh-h3);
}

/* Large serif paragraph (brand intro, article lead) */
.pp-pull {
	font-family: var(--pp-font-serif);
	font-size: var(--pp-fs-pull);
	font-weight: 400;
	line-height: 1.18;
	color: var(--pp-ink-900);
	text-wrap: pretty;
}

/* Lead: Figtree 500 */
.pp-lead {
	font-size: var(--pp-fs-lead);
	font-weight: 500;
	line-height: var(--pp-lh-lead);
	text-wrap: pretty;
}

/* Body copy */
.pp-body {
	font-size: 16px;
	line-height: var(--pp-lh-body);
	color: var(--pp-text-body);
	text-wrap: pretty;
}

.pp-body-lg {
	font-size: 17px;
	line-height: 1.65;
	color: var(--pp-text-body);
}

.pp-small {
	font-size: var(--pp-fs-small);
	line-height: 1.55;
}

@media (min-width: 768px) {
	.pp-body {
		font-size: var(--pp-fs-body);
	}

	.pp-body-lg {
		font-size: var(--pp-fs-body-lg);
		line-height: 1.7;
	}
}

/* Eyebrow: 12px 600 uppercase, 28×1 rule before */
.pp-eyebrow {
	display: flex;
	align-items: center;
	gap: 12px;
	font-family: var(--pp-font-sans);
	font-size: var(--pp-fs-eyebrow);
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: var(--pp-ls-eyebrow);
	text-transform: uppercase;
	color: var(--pp-text-muted);
}

.pp-eyebrow::before {
	content: "";
	flex: none;
	width: 28px;
	height: 1px;
	background: currentColor;
}

.pp-eyebrow--light {
	color: var(--pp-on-dark);
}

.pp-eyebrow--light::before {
	background: var(--pp-lime-400);
}

/* Eyebrow without the rule (labels such as "Enquiry process") */
.pp-label {
	font-size: var(--pp-fs-eyebrow);
	font-weight: 600;
	letter-spacing: var(--pp-ls-eyebrow);
	text-transform: uppercase;
	color: var(--pp-text-muted);
}

/* Meta: 12px 600 uppercase .14em muted */
.pp-meta {
	font-size: var(--pp-fs-eyebrow);
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: var(--pp-ls-meta);
	text-transform: uppercase;
	color: var(--pp-text-muted);
}

/* Text on dark surfaces */
.pp-surface-forest,
.pp-surface-ink {
	--pp-text-body: var(--pp-on-dark-3);
	--pp-text-muted: var(--pp-on-dark-4);
}

.pp-on-dark-2 { color: var(--pp-on-dark-2); }
.pp-on-dark-3 { color: var(--pp-on-dark-3); }
.pp-text-muted { color: var(--pp-text-muted); }
.pp-text-subtle { color: var(--pp-text-subtle); }

/* ---- 06-buttons-links.css ---- */
/* Buttons and arrow links. Radius 999, colour .2s, press scale(.97) .1s. */
.pp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 44px;
	padding: 17px 28px;
	border: 1px solid transparent;
	border-radius: var(--pp-radius-pill);
	background: transparent;
	font-family: var(--pp-font-sans);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	transition:
		background-color var(--pp-dur-colour),
		border-color var(--pp-dur-colour),
		color var(--pp-dur-colour),
		transform var(--pp-dur-press);
}

.pp-btn:active {
	transform: scale(var(--pp-press-scale));
}

.pp-btn__arrow {
	display: inline-block;
	line-height: 1;
}

/* Primary: lime */
.pp-btn--primary,
.pp-btn--primary:visited {
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
}

.pp-btn--primary:hover {
	background: var(--pp-lime-500);
	color: var(--pp-ink-950);
}

/* Outline on dark / photo */
.pp-btn--outline-light,
.pp-btn--outline-light:visited {
	border-color: var(--pp-outline-on-dark);
	color: var(--pp-on-dark);
	padding-block: 16px; /* matches 17px primary incl. 1px border */
}

.pp-btn--outline-light:hover {
	border-color: var(--pp-on-dark);
	background: var(--pp-on-dark);
	color: var(--pp-ink-950);
}

/* Outline on light */
.pp-btn--outline-dark,
.pp-btn--outline-dark:visited {
	border-color: var(--pp-ink-900);
	color: var(--pp-ink-900);
	padding-block: 16px;
}

.pp-btn--outline-dark:hover {
	background: var(--pp-ink-900);
	color: var(--pp-stone-50);
}

/* Small (header CTA): 13×22, 15px */
.pp-btn--sm {
	gap: 8px;
	padding: 13px 22px;
	font-size: var(--pp-fs-small);
}

.pp-btn--sm.pp-btn--outline-light,
.pp-btn--sm.pp-btn--outline-dark {
	padding-block: 12px;
}

/* Full width (mobile hero buttons etc.) */
.pp-btn--block {
	display: flex;
	width: 100%;
}

/* Arrow link: 15px 600, 1px bottom border ink-900, padding 10px 0 */
.pp-link-arrow,
.pp-link-arrow:visited {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 10px 0;
	border-bottom: 1px solid var(--pp-ink-900);
	color: var(--pp-ink-900);
	font-size: var(--pp-fs-small);
	font-weight: 600;
	line-height: 1.3;
	text-decoration: none;
	transition: color var(--pp-dur-colour), border-color var(--pp-dur-colour);
}

.pp-link-arrow:hover {
	border-color: var(--pp-lime-400);
	color: var(--pp-forest-500);
}

/* Lime arrow link on dark (home combined banner CTA) */
.pp-link-arrow--lime,
.pp-link-arrow--lime:visited {
	border-color: var(--pp-lime-400);
	color: var(--pp-lime-400);
}

.pp-link-arrow--lime:hover {
	border-color: var(--pp-on-dark);
	color: var(--pp-on-dark);
}

/* Light arrow link on dark */
.pp-link-arrow--light,
.pp-link-arrow--light:visited {
	border-color: var(--pp-on-dark);
	color: var(--pp-on-dark);
}

.pp-link-arrow--light:hover {
	border-color: var(--pp-lime-400);
	color: var(--pp-lime-400);
}

/* Tap targets ≥44px below desktop: small links keep their look and get a
   larger invisible hit area; arrow links get a little more padding. */
@media (max-width: 1023px) {
	.pp-link-arrow,
	.pp-link-arrow:visited {
		padding-block: 12px;
	}

	a.pp-tag,
	.pp-article__brand-link {
		position: relative;
	}

	a.pp-tag::after,
	.pp-article__brand-link::after {
		content: "";
		position: absolute;
		top: min(0px, calc((100% - 46px) / 2));
		bottom: min(0px, calc((100% - 46px) / 2));
		left: -2px;
		right: -2px;
	}
}

/* ---- 07-pills-tags.css ---- */
/* Filter pills and tags. */
.pp-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

/* Horizontal scroll on mobile (home project filter) */
.pp-pills--scroll {
	flex-wrap: nowrap;
	overflow-x: auto;
	margin-inline: calc(var(--pp-page-pad) * -1);
	padding-inline: var(--pp-page-pad);
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.pp-pills--scroll::-webkit-scrollbar {
	display: none;
}

@media (min-width: 768px) {
	.pp-pills--scroll {
		flex-wrap: wrap;
		overflow: visible;
		margin-inline: 0;
		padding-inline: 0;
	}
}

/* Pill: 15px 500, 11×20, 1px line border. Works on <a> and <button>. */
.pp-pill,
.pp-pill:visited {
	display: inline-flex;
	align-items: center;
	flex: none;
	min-height: 44px;
	padding: 11px 20px;
	border: 1px solid var(--pp-line);
	border-radius: var(--pp-radius-pill);
	background: transparent;
	color: var(--pp-ink-900);
	font-family: var(--pp-font-sans);
	font-size: var(--pp-fs-small);
	font-weight: 500;
	line-height: 1.4;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	transition: border-color var(--pp-dur-colour), background-color var(--pp-dur-colour), color var(--pp-dur-colour);
}

.pp-pill:hover {
	border-color: var(--pp-ink-900);
	color: var(--pp-ink-900);
}

.pp-pill.is-active,
.pp-pill[aria-current="page"],
.pp-pill[aria-pressed="true"] {
	border-color: var(--pp-ink-900);
	background: var(--pp-ink-900);
	color: var(--pp-stone-50);
}

/* Tag: on images. 12px 600, 6×11. */
.pp-tag {
	display: inline-flex;
	align-items: center;
	padding: 6px 11px;
	border-radius: var(--pp-radius-pill);
	background: var(--pp-tag-bg);
	color: var(--pp-ink-900);
	font-size: var(--pp-fs-eyebrow);
	font-weight: 600;
	line-height: 1.3;
	text-decoration: none;
	white-space: nowrap;
}

/* Lime: brand tags in single-project / single-article heroes, "Latest" */
.pp-tag--lime,
a.pp-tag--lime:visited {
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
}

a.pp-tag--lime:hover {
	background: var(--pp-lime-500);
	color: var(--pp-ink-950);
}

/* Outline chip on light: 13px 500, 7×13 */
.pp-tag--outline,
a.pp-tag--outline:visited {
	padding: 7px 13px;
	border: 1px solid var(--pp-line);
	background: transparent;
	color: var(--pp-text-body);
	font-size: var(--pp-fs-xs);
	font-weight: 500;
}

a.pp-tag--outline:hover {
	border-color: var(--pp-ink-900);
	color: var(--pp-ink-900);
}

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

/* ---- 08-header.css ---- */
/*
 * Header. Mobile-first: 64px bar with logo, "Quote" and menu button (≤1023).
 * ≥1024: 84px bar, centred nav, "Get a Free Quote" (1024–1100 compressed:
 * small logo, tighter nav). ≥1280: full-size logo.
 * Logo sizes are whole pixels and vertically offset by whole pixels.
 */
.pp-header {
	position: sticky;
	top: var(--pp-adminbar, 0px);
	z-index: 100;
	background: var(--pp-header);
	border-bottom: 1px solid var(--pp-line-header);
	color: var(--pp-on-dark);
}

.admin-bar {
	--pp-adminbar: 46px;
}

@media (min-width: 783px) {
	.admin-bar {
		--pp-adminbar: 32px;
	}
}

/* The admin bar scrolls away below 601px. */
@media (max-width: 600px) {
	.admin-bar {
		--pp-adminbar: 0px;
	}
}

.pp-header__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	height: var(--pp-header-h);
	padding-inline: var(--pp-page-pad) calc(var(--pp-page-pad) - 8px);
}

.pp-header__logo {
	display: block;
	flex: none;
	line-height: 0;
}

.pp-header__logo .pp-logo {
	width: 155px;
	height: 26px;
}

.pp-header .pp-nav,
.pp-header__cta {
	display: none;
}

.pp-header__actions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 4px;
}

/* Mobile "Quote" button */
.pp-header__quote,
.pp-header__quote:visited {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 16px;
	border-radius: var(--pp-radius-pill);
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
	font-size: var(--pp-fs-xs);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color var(--pp-dur-colour), transform var(--pp-dur-press);
}

.pp-header__quote:hover {
	background: var(--pp-lime-500);
	color: var(--pp-ink-950);
}

.pp-header__quote:active {
	transform: scale(var(--pp-press-scale));
}

/* Menu button: two lines → × */
.pp-header__menu-btn {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--pp-on-dark);
}

.pp-burger {
	position: relative;
	display: block;
	width: 22px;
	height: 8px;
}

.pp-burger span {
	position: absolute;
	left: 0;
	width: 22px;
	height: 1.5px;
	background: currentColor;
	transition: transform var(--pp-dur-colour), top var(--pp-dur-colour);
}

.pp-burger span:first-child {
	top: 0;
}

.pp-burger span:last-child {
	top: 6.5px;
}

.pp-header__menu-btn[aria-expanded="true"] .pp-burger span {
	top: 3.25px;
}

.pp-header__menu-btn[aria-expanded="true"] .pp-burger span:first-child {
	transform: rotate(45deg);
}

.pp-header__menu-btn[aria-expanded="true"] .pp-burger span:last-child {
	transform: rotate(-45deg);
}

/* ---------- Desktop (≥1024) ---------- */
@media (min-width: 1024px) {
	.pp-header__bar {
		display: grid;
		grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
		gap: var(--pp-gutter);
		padding-inline: var(--pp-page-pad);
	}

	.pp-header__logo .pp-logo {
		width: 214px;
		height: 36px;
	}

	.pp-header .pp-nav,
	.pp-header__cta {
		display: inline-flex;
	}

	.pp-header__quote,
	.pp-header__menu-btn,
	.pp-mmenu {
		display: none !important;
	}

	.pp-header__actions {
		gap: 24px;
	}
}

/* Small desktop (1024–1100): the nav compresses so logo, nav and button fit. */
@media (min-width: 1024px) and (max-width: 1100px) {
	.pp-header__logo .pp-logo {
		width: 155px;
		height: 26px;
	}
}

@media (min-width: 1280px) {
	.pp-header__logo {
		align-self: start;
		margin-top: 16px; /* (84 − 51) / 2, rounded to a whole pixel */
	}

	.pp-header__logo .pp-logo {
		width: 303px;
		height: 51px;
	}
}

/* Nav: 15px 500, on-dark, gap 24, no wrapping */
.pp-nav__list {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 20px;
	margin: 0;
	padding: 0;
	list-style: none;
	white-space: nowrap;
}

@media (min-width: 1280px) {
	.pp-nav__list {
		gap: 24px;
	}
}

@media (min-width: 1024px) and (max-width: 1100px) {
	.pp-nav__list {
		gap: 14px;
	}
}

.pp-nav__item {
	position: relative;
}

.pp-nav__link,
.pp-nav__link:visited {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 8px 0;
	border: 0;
	background: none;
	color: var(--pp-on-dark);
	font-family: var(--pp-font-sans);
	font-size: var(--pp-fs-small);
	font-weight: 500;
	line-height: 1.6;
	text-decoration: none;
	transition: box-shadow var(--pp-dur-colour), color var(--pp-dur-colour);
}

.pp-nav__link:hover {
	color: var(--pp-on-dark);
	box-shadow: inset 0 -2px 0 var(--pp-on-dark);
}

.pp-nav__link.is-current,
.pp-nav__link.is-current:hover {
	box-shadow: inset 0 -2px 0 var(--pp-lime-400);
}

/* Our Expertise toggle: lime on hover / open */
.pp-nav__toggle:hover,
.pp-nav__toggle[aria-expanded="true"] {
	color: var(--pp-lime-400);
	box-shadow: none;
}

.pp-nav__toggle.is-current {
	box-shadow: inset 0 -2px 0 var(--pp-lime-400);
}

.pp-nav__caret {
	font-size: 10px;
	transform: translateY(1px);
}

/* Dropdown: 400px white card; 18px hover bridge above it */
.pp-nav__sub {
	position: absolute;
	top: 100%;
	left: -24px;
	z-index: 10;
	width: 400px;
	padding-top: 18px;
	visibility: hidden;
	opacity: 0;
	transform: translateY(-4px);
	transition: opacity var(--pp-dur-colour), transform var(--pp-dur-colour), visibility 0s linear var(--pp-dur-colour);
}

.pp-nav__item--has-sub:hover > .pp-nav__sub,
.pp-nav__item--has-sub:has(:focus-visible) > .pp-nav__sub,
.pp-nav__item--has-sub.is-open > .pp-nav__sub {
	visibility: visible;
	opacity: 1;
	transform: none;
	transition-delay: 0s;
}

.pp-nav__item--has-sub.is-dismissed > .pp-nav__sub {
	visibility: hidden;
	opacity: 0;
}

.pp-nav__sub-list {
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 8px;
	list-style: none;
	border-radius: var(--pp-radius-card);
	background: var(--pp-white);
	box-shadow: var(--pp-shadow-dropdown);
	white-space: normal;
}

.pp-nav__sub-link,
.pp-nav__sub-link:visited {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 16px;
	border-radius: var(--pp-radius-img);
	color: var(--pp-ink-900);
	text-decoration: none;
	transition: background-color var(--pp-dur-colour);
}

.pp-nav__sub-link:hover,
.pp-nav__sub-link[aria-current="page"] {
	background: var(--pp-stone-50);
	color: var(--pp-ink-900);
}

.pp-nav__sub-link:focus-visible {
	outline-offset: -2px;
}

.pp-nav__sub-text {
	display: flex;
	flex-direction: column;
	gap: 3px;
}

.pp-nav__sub-title {
	font-size: 16px;
	font-weight: 600;
	line-height: 1.3;
}

.pp-nav__sub-desc {
	color: var(--pp-text-muted);
	font-size: 14px;
	font-weight: 400;
	line-height: 1.4;
}

/* Tap target: the logo link is at least 44px tall below desktop (logo unchanged). */
@media (max-width: 1023px) {
	.pp-header__logo {
		display: flex;
		align-items: center;
		min-height: 44px;
	}
}

/* ---- 09-mobile-menu.css ---- */
/* Full-screen mobile menu (≤1023): ink-950 panel under the bar, large serif links. */
.pp-mmenu {
	position: absolute;
	top: 100%;
	right: 0;
	left: 0;
	display: flex;
	flex-direction: column;
	height: calc(100dvh - var(--pp-header-h) - 1px - var(--pp-adminbar, 0px));
	padding: 16px var(--pp-page-pad) 32px;
	overflow-y: auto;
	overscroll-behavior: contain;
	background: var(--pp-ink-950);
	color: var(--pp-on-dark);
}

.pp-mmenu[hidden] {
	display: none;
}

/* Scroll lock while open */
html.pp-menu-open,
html.pp-menu-open body {
	overflow: hidden;
}

.pp-mmenu__list,
.pp-mmenu__sub {
	margin: 0;
	padding: 0;
	list-style: none;
}

.pp-mmenu__item {
	border-bottom: 1px solid rgba(246, 243, 236, 0.12);
}

.pp-mmenu__link,
.pp-mmenu__link:visited {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 0;
	color: var(--pp-on-dark);
	font-family: var(--pp-font-serif);
	font-size: 34px;
	font-weight: 400;
	line-height: 1.1;
	text-decoration: none;
}

.pp-mmenu__link:hover {
	color: var(--pp-lime-400);
}

.pp-mmenu__label {
	padding-bottom: 14px;
}

.pp-mmenu__dot {
	flex: none;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--pp-lime-400);
}

/* Our Expertise children, indented with a lime rule */
.pp-mmenu__sub {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding-bottom: 16px;
}

.pp-mmenu__sublink,
.pp-mmenu__sublink:visited {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-height: 44px;
	justify-content: center;
	padding: 6px 0 6px 16px;
	border-left: 2px solid var(--pp-lime-400);
	color: var(--pp-on-dark);
	text-decoration: none;
}

.pp-mmenu__sublink:hover {
	color: var(--pp-lime-400);
}

.pp-mmenu__subtitle {
	font-size: 16px;
	font-weight: 500;
	line-height: 1.3;
}

.pp-mmenu__subdesc {
	color: var(--pp-on-dark-4);
	font-size: 14px;
	line-height: 1.4;
}

.pp-mmenu__sublink[aria-current="page"] .pp-mmenu__subtitle {
	color: var(--pp-lime-400);
}

/* Bottom: CTA + phone / service area */
.pp-mmenu__footer {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-top: auto;
	padding-top: 32px;
}

.pp-mmenu__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px 16px;
	color: var(--pp-on-dark-4);
	font-size: 14px;
}

.pp-mmenu__phone,
.pp-mmenu__phone:visited {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--pp-on-dark);
	font-weight: 600;
	text-decoration: none;
}

.pp-mmenu__phone:hover {
	color: var(--pp-lime-400);
}

/* ---- 10-footer.css ---- */
/*
 * Footer (reference files): #0A120D. Desktop grid 1–4 / 6–8 / 9–10 / 11–12.
 * Tablet: brand row, then three columns. Mobile: stacked, links in two columns,
 * brand logos side by side at 125×25.
 */
.pp-footer {
	padding: 64px 0 32px;
	background: var(--pp-ink-990);
	color: var(--pp-on-dark);
}

.pp-footer__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 36px 16px;
}

.pp-footer__brand {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 18px;
	grid-column: 1 / -1;
}

.pp-footer__logo {
	width: 303px;
	height: 51px;
	max-width: none;
}

.pp-footer__blurb {
	max-width: 340px;
	color: var(--pp-on-dark-4);
	font-size: var(--pp-fs-small);
	line-height: 1.6;
}

.pp-footer__brands {
	display: flex;
	align-items: center;
	gap: 12px;
}

.pp-footer__brand-logo {
	width: 125px;
	height: 25px;
	max-width: none;
}

.pp-footer__heading {
	margin-bottom: 18px;
	color: var(--pp-on-dark-4);
	font-family: var(--pp-font-sans);
	font-size: var(--pp-fs-eyebrow);
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: var(--pp-ls-eyebrow);
	text-transform: uppercase;
}

.pp-footer__list {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: var(--pp-fs-small);
	line-height: 1.5;
}

.pp-footer__link,
.pp-footer__link:visited {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	color: var(--pp-on-dark);
	text-decoration: none;
	overflow-wrap: anywhere;
}

.pp-footer__link:hover {
	color: var(--pp-lime-400);
}

/* Social: 44px round, hairline border; hover lime fill, ink icon */
.pp-social {
	display: flex;
	gap: 10px;
	margin: 4px 0 0;
	padding: 0;
	list-style: none;
}

.pp-social__link,
.pp-social__link:visited {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid rgba(246, 243, 236, 0.22);
	border-radius: 50%;
	color: var(--pp-on-dark);
	transition: background-color var(--pp-dur-colour), border-color var(--pp-dur-colour), color var(--pp-dur-colour);
}

.pp-social__link:hover {
	border-color: var(--pp-lime-400);
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
}

/* Legal bar */
.pp-footer__legal {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 12px 24px;
	margin-top: 48px;
	padding-top: 22px;
	border-top: 1px solid rgba(246, 243, 236, 0.12);
	color: var(--pp-on-dark-4);
	font-size: var(--pp-fs-xs);
}

.pp-footer__legal a,
.pp-footer__legal a:visited {
	color: var(--pp-on-dark-4);
}

.pp-footer__legal a:hover {
	color: var(--pp-on-dark);
}

/* Tablet */
@media (min-width: 768px) {
	.pp-footer {
		padding: 96px 0 36px;
	}

	.pp-footer__grid {
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: 56px var(--pp-gutter);
	}

	.pp-footer__brand {
		gap: 24px;
	}

	.pp-footer__brands {
		gap: 24px;
	}

	.pp-footer__brand-logo {
		width: 183px;
		height: 36px;
	}

	.pp-footer__col {
		grid-column: span 4;
	}

	.pp-footer__legal {
		margin-top: 80px;
		padding-top: 28px;
	}
}

/* Desktop: 1–4 / 6–8 / 9–10 / 11–12 */
@media (min-width: 1024px) {
	.pp-footer__brand {
		grid-column: 1 / 5;
	}

	.pp-footer__col--contact {
		grid-column: 6 / 9;
	}

	.pp-footer__col--expertise {
		grid-column: 9 / 11;
	}

	.pp-footer__col--company {
		grid-column: 11 / 13;
	}
}

/* Tap targets ≥44px below desktop. */
@media (max-width: 1023px) {
	.pp-footer__list {
		gap: 0;
	}

	.pp-footer__link,
	.pp-footer__link:visited {
		min-height: 44px;
	}

	.pp-footer__legal a {
		display: inline-flex;
		align-items: center;
		min-height: 44px;
		margin-block: -12px;
	}
}

/* ---- 11-hero.css ---- */
/*
 * Page hero. Mobile: min(78vh, 640px), gradient from the bottom, buttons full width.
 * Tablet/desktop: left gradient, content bottom-left (cols 1–7), 96px from the bottom.
 */
.pp-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	height: min(78vh, 640px);
	min-height: 540px;
	overflow: hidden;
	background: var(--pp-forest-700);
	color: var(--pp-on-dark);
}

.pp-hero__media {
	position: absolute;
	inset: 0;
}

.pp-hero__media img,
.pp-hero__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pp-hero__overlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(15, 26, 20, 0) 25%, rgba(15, 26, 20, 0.82) 72%);
}

.pp-hero__inner {
	position: relative;
	width: 100%;
	padding-bottom: 36px;
}

.pp-hero__content {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.pp-hero__text {
	display: flex;
	flex-direction: column;
	gap: 14px;
	max-width: 600px;
}

.pp-hero .pp-lead {
	color: var(--pp-on-dark);
}

.pp-hero__body {
	display: none;
	color: var(--pp-on-dark-2);
	font-size: var(--pp-fs-body);
	line-height: var(--pp-lh-body);
	text-wrap: pretty;
}

.pp-hero__actions {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.pp-hero__actions .pp-btn {
	width: 100%;
}

@media (min-width: 768px) {
	.pp-hero {
		height: 680px;
		min-height: 0;
	}

	.pp-hero__overlay {
		background: linear-gradient(90deg, rgba(15, 26, 20, 0.78) 0%, rgba(15, 26, 20, 0.45) 42%, rgba(15, 26, 20, 0) 72%);
	}

	.pp-hero--page .pp-hero__overlay {
		background: linear-gradient(90deg, rgba(15, 26, 20, 0.8) 0%, rgba(15, 26, 20, 0.5) 42%, rgba(15, 26, 20, 0) 72%);
	}

	.pp-hero__inner {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		padding-bottom: 72px;
	}

	.pp-hero__content {
		grid-column: 1 / 11;
		gap: 28px;
	}

	.pp-hero__body {
		display: block;
	}

	.pp-hero--page .pp-hero__text {
		max-width: 580px;
	}

	.pp-hero__actions {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 12px;
	}

	.pp-hero__actions .pp-btn {
		width: auto;
	}
}

@media (min-width: 1024px) {
	.pp-hero--home {
		height: 820px;
	}

	.pp-hero--page {
		height: 780px;
	}

	.pp-hero__inner {
		padding-bottom: 96px;
	}

	.pp-hero__content {
		grid-column: 1 / 8;
	}
}

/* ---- 12-section-header.css ---- */
/*
 * Section header: eyebrow + H2 (cols 1–7, or 1–8 with a link), intro or arrow
 * link on the right (cols 8–12 / 10–12), bottom-aligned. Page header: same with H1.
 */
.pp-section-header,
.pp-page-header {
	display: grid;
	gap: 20px;
}

.pp-section-header__main,
.pp-page-header__main {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.pp-page-header__main {
	gap: 24px;
}

.pp-section-header__aside.pp-body {
	margin: 0;
}

.pp-page-header__intro {
	color: var(--pp-text-body);
	font-size: 17px;
	line-height: var(--pp-lh-body);
	text-wrap: pretty;
}

@media (min-width: 768px) {
	.pp-section-header,
	.pp-page-header {
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: end;
	}

	.pp-section-header__main,
	.pp-page-header__main {
		grid-column: 1 / -1;
	}

	.pp-section-header--intro .pp-section-header__main,
	.pp-page-header__main {
		grid-column: 1 / 8;
	}

	.pp-section-header--link .pp-section-header__main {
		grid-column: 1 / 9;
	}

	.pp-section-header--intro .pp-section-header__aside,
	.pp-page-header__intro {
		grid-column: 8 / 13;
	}

	.pp-section-header--link .pp-section-header__aside {
		grid-column: 9 / 13;
		justify-self: end;
	}

	.pp-page-header__intro {
		font-size: 18px;
	}
}

@media (min-width: 1024px) {
	.pp-section-header--link .pp-section-header__aside {
		grid-column: 10 / 13;
	}
}

/* Dark surfaces: lime rule on eyebrows. */
.pp-surface-forest .pp-eyebrow::before,
.pp-surface-ink .pp-eyebrow::before {
	background: var(--pp-lime-400);
}

/* ---- 13-cards.css ---- */
/* Cards: project (4:3), post (3:2), brand (Our Expertise). Grids 1 → 2 → 3 columns. */
.pp-card-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 40px;
}

@media (min-width: 768px) {
	.pp-card-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 48px var(--pp-gutter);
	}
}

@media (min-width: 1024px) {
	.pp-card-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 56px var(--pp-gutter);
	}
}

/* Shared media box */
.pp-card__media {
	position: relative;
	overflow: hidden;
	border-radius: var(--pp-radius-img);
	background: var(--pp-line-soft);
}

.pp-card__media--4x3 { aspect-ratio: 4 / 3; }
.pp-card__media--3x2 { aspect-ratio: 3 / 2; }
.pp-card__media--4x5 { aspect-ratio: 4 / 5; }

.pp-card__img,
.pp-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--pp-dur-zoom) var(--pp-ease-zoom);
}

.pp-card__tags {
	position: absolute;
	top: 12px;
	left: 12px;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
	pointer-events: none;
}

.pp-card__tags .pp-tag {
	padding: 5px 10px;
	font-size: 11px;
}

/* Project & post cards: the whole card is one link */
.pp-card-project,
.pp-card-post,
.pp-card-project:visited,
.pp-card-post:visited {
	display: flex;
	flex-direction: column;
	gap: 16px;
	color: var(--pp-ink-900);
	text-decoration: none;
}

.pp-card-project:hover,
.pp-card-post:hover {
	color: var(--pp-ink-900);
}

.pp-card-project:hover .pp-card__img,
.pp-card-post:hover .pp-card__img {
	transform: scale(var(--pp-zoom-scale));
}

.pp-card-project:hover .pp-card__title,
.pp-card-post:hover .pp-card__title {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.12em;
}

.pp-card-project:focus-visible,
.pp-card-post:focus-visible {
	outline-offset: 6px;
	border-radius: var(--pp-radius-img);
}

.pp-card__body {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.pp-card__body--post {
	gap: 10px;
}

.pp-card__title {
	margin: 0;
}

.pp-card-post .pp-card__title {
	line-height: 1.12;
	text-wrap: balance;
}

.pp-card__text {
	color: var(--pp-text-body);
	font-size: var(--pp-fs-small);
	line-height: 1.55;
}

.pp-card__more {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 4px;
	font-size: var(--pp-fs-small);
	font-weight: 600;
}

.pp-card__more--sm {
	font-size: 14px;
}

@media (min-width: 768px) {
	.pp-card__tags {
		top: 14px;
		left: 14px;
	}

	.pp-card__tags .pp-tag {
		padding: 6px 11px;
		font-size: var(--pp-fs-eyebrow);
	}

	.pp-card-project,
	.pp-card-post {
		gap: 20px;
	}

	.pp-card__body {
		gap: 8px;
	}

	.pp-card__body--post {
		gap: 10px;
	}
}

/* Project grid: pills and mobile "View all" button */
.pp-project-pills {
	margin-top: 28px;
}

.pp-project-grid .pp-card-grid {
	margin-top: 32px;
}

.pp-project-grid__more {
	margin-top: 40px;
}

.pp-project-grid .pp-section-header__aside {
	display: none;
}

@media (min-width: 768px) {
	.pp-project-pills {
		margin-top: 48px;
	}

	.pp-project-grid .pp-card-grid {
		margin-top: 40px;
	}

	.pp-project-grid > .pp-section-header + .pp-card-grid {
		margin-top: 64px;
	}

	.pp-project-grid .pp-section-header__aside {
		display: block;
	}

	.pp-project-grid__more {
		display: none;
	}
}

/* Brand cards */
.pp-brand-cards {
	display: grid;
	gap: 20px;
}

@media (min-width: 768px) {
	.pp-brand-cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--pp-gutter);
	}
}

.pp-card-brand,
.pp-card-brand:visited {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border-radius: var(--pp-radius-card);
	background: var(--pp-white);
	color: var(--pp-ink-900);
	text-decoration: none;
	transition: box-shadow 0.3s;
}

.pp-card-brand:hover {
	color: var(--pp-ink-900);
	box-shadow: var(--pp-shadow-brand-card);
}

.pp-card-brand__media {
	height: 260px;
	overflow: hidden;
	background: var(--pp-line-soft);
}

.pp-card-brand__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--pp-dur-zoom) var(--pp-ease-zoom);
}

.pp-card-brand:hover .pp-card-brand__media img {
	transform: scale(1.04);
}

.pp-card-brand__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 18px;
	padding: 24px;
}

.pp-card-brand__logo {
	flex: none;
	align-self: flex-start;
	width: 249px;
	height: 49px;
	max-width: none;
}

.pp-card-brand .pp-tags {
	margin: 0;
	padding: 0;
	list-style: none;
	gap: 6px;
}

.pp-card-brand .pp-tag--outline {
	padding: 6px 11px;
	font-size: var(--pp-fs-eyebrow);
}

.pp-card-brand__link {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-top: auto;
	padding-top: 16px;
	border-top: 1px solid var(--pp-line-soft);
	font-size: var(--pp-fs-small);
	font-weight: 600;
}

@media (min-width: 768px) {
	.pp-card-brand__media {
		height: 360px;
	}
}

@media (min-width: 1024px) {
	.pp-card-brand__media {
		height: 460px;
	}

	.pp-card-brand__body {
		gap: 22px;
		padding: 36px 40px 40px;
	}

	.pp-card-brand .pp-tags {
		gap: 8px;
	}

	.pp-card-brand .pp-tag--outline {
		padding: 7px 13px;
		font-size: var(--pp-fs-xs);
	}

	.pp-card-brand__link {
		padding-top: 18px;
	}
}

/* ---- 14-banner.css ---- */
/*
 * Banner: forest-700, radius 6. Desktop: image cols 1–3 (stretches) · serif 36px
 * statement · CTA right. Tablet: image left, text and CTA stacked. Mobile: stacked,
 * image 200px on top.
 */
.pp-banner {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border-radius: var(--pp-radius-card);
	background: var(--pp-forest-700);
	color: var(--pp-on-dark);
}

.pp-banner__media {
	height: 200px;
	background: var(--pp-forest-500);
}

.pp-banner__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pp-banner__text {
	padding: 24px 24px 0;
	color: var(--pp-on-dark);
	font-family: var(--pp-font-serif);
	font-size: 28px;
	line-height: 1.15;
	text-wrap: pretty;
}

.pp-banner__cta {
	display: flex;
	padding: 18px 24px 24px;
}

.pp-banner--link .pp-link-arrow {
	padding: 8px 0;
}

@media (min-width: 768px) {
	.pp-banner {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		grid-template-rows: 1fr auto;
		column-gap: var(--pp-gutter);
		min-height: 200px;
	}

	.pp-banner__media {
		grid-column: 1 / 5;
		grid-row: 1 / 3;
		height: auto;
	}

	.pp-banner__text {
		grid-column: 5 / 13;
		align-self: end;
		padding: 32px 32px 0 0;
		font-size: 32px;
	}

	.pp-banner__cta {
		grid-column: 5 / 13;
		padding: 20px 32px 32px 0;
	}
}

@media (min-width: 1024px) {
	.pp-banner {
		grid-template-rows: auto;
		align-items: center;
	}

	.pp-banner--link {
		min-height: 180px;
	}

	.pp-banner__media {
		grid-column: 1 / 4;
		grid-row: 1;
		align-self: stretch;
		min-height: inherit;
	}

	.pp-banner__text {
		align-self: center;
		padding: 32px 16px;
		font-size: 36px;
	}

	.pp-banner__cta {
		justify-content: flex-end;
	}

	/* Link CTA (home): statement 4–9, link 10–12 */
	.pp-banner--link .pp-banner__text {
		grid-column: 4 / 10;
	}

	.pp-banner--link .pp-banner__cta {
		grid-column: 10 / 13;
		padding: 0 48px 0 0;
	}

	.pp-banner--link .pp-link-arrow {
		padding: 10px 0;
		font-size: 16px;
	}

	/* Button CTA: statement 4–8, button 9–12 */
	.pp-banner--button .pp-banner__text {
		grid-column: 4 / 9;
	}

	.pp-banner--button .pp-banner__cta {
		grid-column: 9 / 13;
		padding: 0 40px 0 0;
	}
}

/* Tap target ≥44px below desktop. */
@media (max-width: 1023px) {
	.pp-banner--link .pp-link-arrow {
		padding-block: 12px;
	}
}

/* ---- 15-steps-process.css ---- */
/* Steps (enquiry process) and Process ("How we work"). */
.pp-steps {
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin-top: 8px;
}

.pp-steps__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.pp-steps__item {
	display: grid;
	grid-template-columns: 44px minmax(0, 1fr);
	gap: 16px;
	padding: 18px 0;
	border-top: 1px solid var(--pp-line);
}

.pp-steps__num {
	color: var(--pp-forest-500);
	font-family: var(--pp-font-serif);
	font-size: 28px;
	line-height: 1;
}

.pp-steps__body {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.pp-steps__title {
	color: var(--pp-ink-900);
	font-size: 17px;
	font-weight: 600;
	line-height: 1.4;
}

.pp-steps__text {
	color: var(--pp-text-body);
	font-size: var(--pp-fs-small);
	line-height: 1.55;
}

.pp-surface-forest .pp-steps__item,
.pp-surface-ink .pp-steps__item {
	border-top-color: var(--pp-line-dark);
}

.pp-surface-forest .pp-steps__num,
.pp-surface-ink .pp-steps__num {
	color: var(--pp-lime-400);
}

.pp-surface-forest .pp-steps__title,
.pp-surface-ink .pp-steps__title {
	color: var(--pp-on-dark);
}

/* Process: mobile = heading, image (300px), step rows */
.pp-process {
	display: grid;
	grid-template-areas:
		"head"
		"media"
		"steps";
	gap: 20px;
}

.pp-process__head {
	display: flex;
	flex-direction: column;
	gap: 20px;
	grid-area: head;
}

.pp-process__media {
	grid-area: media;
	height: 300px;
	margin: 12px 0;
	overflow: hidden;
	border-radius: var(--pp-radius-img);
	background: var(--pp-line-soft);
}

.pp-process__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pp-process__steps {
	display: grid;
	gap: 28px;
	grid-area: steps;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pp-process__step {
	display: grid;
	grid-template-columns: 40px minmax(0, 1fr);
	gap: 8px 12px;
	padding-top: 18px;
	border-top: 1px solid var(--pp-ink-900);
}

.pp-process__num {
	color: var(--pp-forest-500);
	font-family: var(--pp-font-serif);
	font-size: 20px;
	line-height: 1.3;
}

.pp-process__body {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.pp-process__title {
	font-size: 17px;
	font-weight: 600;
	line-height: 1.35;
}

.pp-process__text {
	color: var(--pp-text-body);
	font-size: var(--pp-fs-small);
	line-height: 1.6;
}

@media (min-width: 768px) {
	.pp-process__media {
		height: 440px;
	}

	.pp-process__steps {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 44px 32px;
	}

	.pp-process__step {
		display: flex;
		flex-direction: column;
		gap: 10px;
		padding-top: 20px;
	}

	.pp-process__num {
		font-size: 22px;
	}

	.pp-process__body {
		gap: 10px;
	}

	.pp-process__title {
		font-size: 19px;
	}
}

/* Desktop: image cols 1–5 (640px), text cols 7–12, vertically centred */
@media (min-width: 1024px) {
	.pp-process {
		grid-template-areas: none;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		grid-template-rows: 1fr auto auto 1fr;
		gap: 0 var(--pp-gutter);
	}

	.pp-process__media {
		grid-area: auto;
		grid-column: 1 / 6;
		grid-row: 1 / 5;
		height: 640px;
		margin: 0;
	}

	.pp-process__head {
		grid-area: auto;
		grid-column: 7 / 13;
		grid-row: 2;
	}

	.pp-process__steps {
		grid-area: auto;
		grid-column: 7 / 13;
		grid-row: 3;
		margin-top: 56px;
	}
}

/* ---- 16-accordion.css ---- */
/*
 * Accordion (<details>): number (serif 22, muted) · question (serif 36) · 44px
 * round toggle (+ / –; open = lime fill). 1px line between items.
 */
.pp-accordion {
	border-bottom: 1px solid var(--pp-line);
}

.pp-accordion__item {
	border-top: 1px solid var(--pp-line);
}

.pp-accordion__summary {
	display: grid;
	grid-template-columns: 36px minmax(0, 1fr) 44px;
	gap: 12px;
	align-items: center;
	padding: 24px 0;
	list-style: none;
	cursor: pointer;
}

.pp-accordion__summary::-webkit-details-marker {
	display: none;
}

.pp-accordion__summary:focus-visible {
	outline-offset: 4px;
}

.pp-accordion__num {
	color: var(--pp-text-muted);
	font-family: var(--pp-font-serif);
	font-size: 20px;
	line-height: 1;
}

.pp-accordion__q {
	margin: 0;
	color: var(--pp-ink-900);
	font-family: var(--pp-font-serif);
	font-size: 26px;
	font-weight: 400;
	line-height: 1.15;
	letter-spacing: 0;
	text-wrap: pretty;
	transition: color var(--pp-dur-colour);
}

.pp-accordion__summary:hover .pp-accordion__q {
	color: var(--pp-forest-500);
}

.pp-accordion__icon {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid var(--pp-line);
	border-radius: 50%;
	color: var(--pp-ink-900);
	font-size: 20px;
	line-height: 1;
	transition: background-color var(--pp-dur-colour), border-color var(--pp-dur-colour);
}

.pp-accordion__icon::before {
	content: "+";
}

.pp-accordion__item[open] .pp-accordion__icon {
	border-color: var(--pp-lime-400);
	background: var(--pp-lime-400);
}

.pp-accordion__item[open] .pp-accordion__icon::before {
	content: "–";
}

.pp-accordion__a {
	max-width: 640px;
	padding: 0 0 28px 48px;
	color: var(--pp-text-body);
	font-size: 17px;
	line-height: var(--pp-lh-body);
	text-wrap: pretty;
}

.pp-accordion__a p + p {
	margin-top: 1em;
}

@media (min-width: 768px) {
	.pp-accordion__summary {
		grid-template-columns: 56px minmax(0, 1fr) 44px;
		gap: 16px;
		padding: 32px 0;
	}

	.pp-accordion__num {
		font-size: 22px;
	}

	.pp-accordion__q {
		font-size: 36px;
	}

	.pp-accordion__a {
		padding: 0 60px 36px 72px;
		font-size: 18px;
		line-height: 1.6;
	}
}

/* ---- 17-materials.css ---- */
/* Materials grid (Pergolas: 4 × 4:5, Decking: 3 × 4:3) and the note row. */
.pp-materials__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 40px;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 768px) {
	.pp-materials__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 48px var(--pp-gutter);
	}
}

@media (min-width: 1024px) {
	.pp-materials__grid--4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.pp-materials__grid--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 56px var(--pp-gutter);
	}
}

.pp-material {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.pp-material:hover .pp-card__img {
	transform: scale(var(--pp-zoom-scale));
}

.pp-material__body {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding-top: 18px;
	border-top: 1px solid var(--pp-ink-900);
}

.pp-material__body .pp-h3 {
	margin: 0;
}

/* Note row: serif statement + lime button */
.pp-materials__note {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
	margin-top: 48px;
	padding-top: 28px;
	border-top: 1px solid var(--pp-line);
}

.pp-materials__note-text {
	color: var(--pp-ink-900);
	font-family: var(--pp-font-serif);
	font-size: 26px;
	line-height: 1.2;
	text-wrap: pretty;
}

.pp-materials__note .pp-btn {
	white-space: normal;
}

@media (min-width: 768px) {
	.pp-materials__note {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: center;
		margin-top: 72px;
		padding-top: 32px;
	}

	.pp-materials__note-text {
		grid-column: 1 / 8;
		font-size: 32px;
	}

	.pp-materials__note .pp-btn {
		grid-column: 8 / 13;
		justify-self: end;
		white-space: nowrap;
	}
}

@media (min-width: 1024px) {
	.pp-materials__note-text {
		grid-column: 1 / 9;
	}

	.pp-materials__note .pp-btn {
		grid-column: 9 / 13;
	}
}

/* ---- 18-about-intro.css ---- */
/* About block and Brand intro. */
.pp-about {
	display: flex;
	flex-direction: column;
	gap: 40px;
}

.pp-about__text {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
}

.pp-about__copy {
	display: flex;
	flex-direction: column;
	gap: 18px;
	max-width: 560px;
	margin-top: 8px;
}

.pp-about__lead {
	color: var(--pp-ink-900);
	font-size: 17px;
	line-height: 1.55;
	text-wrap: pretty;
}

.pp-about__copy > p:not(.pp-about__lead) {
	color: var(--pp-text-body);
	font-size: 16px;
	line-height: var(--pp-lh-body);
	text-wrap: pretty;
}

.pp-about__btn {
	margin-top: 8px;
}

.pp-about__media {
	height: 420px;
	overflow: hidden;
	border-radius: var(--pp-radius-img);
	background: var(--pp-line-soft);
}

.pp-about__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (min-width: 768px) {
	.pp-about {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: center;
	}

	.pp-about__text {
		grid-column: 1 / 7;
	}

	.pp-about__copy {
		margin-top: 16px;
	}

	.pp-about__lead {
		font-size: 19px;
	}

	.pp-about__copy > p:not(.pp-about__lead) {
		font-size: 17px;
	}

	.pp-about__btn {
		margin-top: 16px;
	}

	.pp-about__media {
		grid-column: 8 / 13;
		height: 560px;
	}
}

@media (min-width: 1024px) {
	.pp-about__media {
		height: 680px;
	}
}

/* Brand intro */
.pp-brand-intro__head {
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.pp-brand-intro__brand {
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.pp-brand-intro__logo {
	flex: none;
	width: 249px;
	height: 49px;
	max-width: none;
}

.pp-brand-intro__text {
	letter-spacing: -0.01em;
}

.pp-brand-intro__media {
	display: grid;
	gap: 16px;
	margin-top: 48px;
}

.pp-brand-intro__photo {
	height: 300px;
	overflow: hidden;
	border-radius: var(--pp-radius-img);
	background: var(--pp-line-soft);
}

.pp-brand-intro__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (min-width: 768px) {
	.pp-brand-intro__head {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: start;
	}

	.pp-brand-intro__brand {
		grid-column: 1 / 5;
	}

	.pp-brand-intro__text {
		grid-column: 5 / 13;
	}

	.pp-brand-intro__media {
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		margin-top: 72px;
	}

	.pp-brand-intro__photo {
		grid-column: 8 / 13;
		height: 420px;
	}

	.pp-brand-intro__photo--wide {
		grid-column: 1 / 8;
	}
}

@media (min-width: 1024px) {
	.pp-brand-intro__text {
		grid-column: 6 / 13;
	}

	.pp-brand-intro__media {
		margin-top: 96px;
	}

	.pp-brand-intro__photo {
		height: 600px;
	}
}

/* ---- 19-enquiry.css ---- */
/* Enquiry section (#enquire): intro + steps cols 1–5, form card cols 7–12. */
.pp-enquiry__grid {
	display: flex;
	flex-direction: column;
	gap: 48px;
}

.pp-enquiry__intro {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

@media (min-width: 768px) {
	.pp-enquiry__intro {
		gap: 24px;
	}
}

@media (min-width: 1024px) {
	.pp-enquiry__grid {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: start;
	}

	.pp-enquiry__intro {
		grid-column: 1 / 6;
	}

	.pp-enquiry__form {
		grid-column: 7 / 13;
	}
}

/* Shown until the Forminator form is connected (step 6 styles the real form). */
.pp-form-placeholder {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
	padding: 24px;
	border-radius: var(--pp-radius-card);
	background: var(--pp-stone-50);
	box-shadow: var(--pp-shadow-form);
	color: var(--pp-ink-900);
	--pp-text-body: #2e3a33;
	--pp-text-muted: #4e5a52;
}

@media (min-width: 768px) {
	.pp-form-placeholder {
		padding: 32px;
	}
}

/* ---- 20-forms.css ---- */
/*
 * Forminator forms restyled (Forminator design style: "None").
 * Scope: .pp-form wrapper. Enquiry card = stone-50 card with step bars
 * (EnquiryForm.dc.html); Contact = fields inside the white contact card.
 */
.pp-form {
	--pp-form-error: #a33a2b;
	--pp-text-body: #2e3a33;
	--pp-text-muted: #4e5a52;
	color: var(--pp-ink-900);
	container-type: inline-size;
}

.pp-form[data-pp-form="enquiry"] {
	padding: 24px;
	border-radius: var(--pp-radius-card);
	background: var(--pp-stone-50);
	box-shadow: var(--pp-shadow-form);
}

@media (min-width: 768px) {
	.pp-form[data-pp-form="enquiry"] {
		padding: 32px;
	}
}

.pp-form .forminator-ui {
	margin: 0;
	font-family: var(--pp-font-sans);
}

.pp-form .forminator-hidden,
.pp-form [hidden] {
	display: none !important;
}

/* Rows: stacked; 12-column grid once the card is wide enough */
.pp-form .forminator-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 16px;
	margin: 0 0 16px;
}

.pp-form .forminator-pagination--content > .forminator-row:last-child {
	margin-bottom: 0;
}

@container (min-width: 440px) {
	.pp-form .forminator-row {
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.pp-form .forminator-col,
	.pp-form .forminator-col-12 {
		grid-column: 1 / -1;
	}

	.pp-form .forminator-col-6 {
		grid-column: span 6;
	}
}

.pp-form .forminator-field {
	position: relative;
	margin: 0;
}

/* Labels */
.pp-form .forminator-label {
	display: block;
	margin-bottom: 6px;
	color: var(--pp-ink-900);
	font-size: var(--pp-fs-xs);
	font-weight: 600;
	line-height: 1.4;
}

.pp-form .forminator-required {
	color: #4e7a1f;
}

.pp-form[data-pp-form="enquiry"] .forminator-required {
	display: none;
}

.pp-form .pp-optional > .forminator-field > .forminator-label::after {
	content: " (optional)";
	color: var(--pp-text-muted);
	font-weight: 400;
}

/* Inputs */
.pp-form .forminator-input,
.pp-form .forminator-textarea,
.pp-form select {
	display: block;
	width: 100%;
	min-height: 48px;
	padding: 13px 14px;
	border: 1px solid var(--pp-line);
	border-radius: var(--pp-radius-img);
	background: var(--pp-white);
	color: var(--pp-ink-900);
	font-family: var(--pp-font-sans);
	font-size: var(--pp-fs-small);
	line-height: 1.4;
	transition: border-color var(--pp-dur-colour), box-shadow var(--pp-dur-colour);
	-webkit-appearance: none;
	appearance: none;
}

.pp-form .forminator-textarea {
	min-height: 96px;
	resize: vertical;
}

.pp-form select {
	padding-right: 40px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2316201A' stroke-width='1.6'/%3E%3C/svg%3E");
	background-position: right 16px center;
	background-repeat: no-repeat;
	cursor: pointer;
}

.pp-form .forminator-input::placeholder,
.pp-form .forminator-textarea::placeholder {
	color: var(--pp-text-subtle);
	opacity: 1;
}

.pp-form .forminator-input:focus,
.pp-form .forminator-textarea:focus,
.pp-form select:focus {
	border-color: var(--pp-ink-900);
	outline: none;
	box-shadow: 0 0 0 3px rgba(185, 225, 90, 0.6);
}

/* Validation */
.pp-form .forminator-has_error .forminator-input,
.pp-form .forminator-has_error .forminator-textarea,
.pp-form .forminator-has_error select {
	border-color: var(--pp-form-error);
}

.pp-form .forminator-error-message {
	display: block;
	margin-top: 6px;
	color: var(--pp-form-error);
	font-size: var(--pp-fs-xs);
	font-weight: 500;
	line-height: 1.4;
}

.pp-form .forminator-error-message:empty {
	display: none;
}

.pp-form .forminator-description {
	display: block;
	margin-top: 6px;
	color: var(--pp-text-muted);
	font-size: var(--pp-fs-xs);
}

/* Step headings (HTML fields) and helper text */
.pp-form .forminator-field-html .forminator-label:empty,
.pp-form .pp-field--consent .forminator-label,
.pp-form .pp-field--optin .forminator-label {
	display: none;
}

.pp-form__heading,
.pp-form .pp-field--heading [role="radiogroup"] > .forminator-label {
	margin: 0 0 8px;
	color: var(--pp-ink-900);
	font-family: var(--pp-font-serif);
	font-size: 28px;
	font-weight: 400;
	line-height: 1.1;
}

@container (min-width: 440px) {
	.pp-form__heading,
	.pp-form .pp-field--heading [role="radiogroup"] > .forminator-label {
		font-size: 34px;
	}
}

.pp-form__helper {
	color: var(--pp-text-muted);
	font-size: 14px;
	line-height: 1.5;
}

/* ---------- Radio cards (2×2; contact choice 3 in a row) ---------- */
.pp-form .pp-field--cards [role="radiogroup"] {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.pp-form .pp-field--cards [role="radiogroup"] > .forminator-label,
.pp-form .pp-field--cards [role="radiogroup"] > .forminator-error-message {
	grid-column: 1 / -1;
}

.pp-form .pp-field--cards-3 [role="radiogroup"] {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 359px) {
	.pp-form .pp-field--cards [role="radiogroup"] {
		grid-template-columns: minmax(0, 1fr);
	}
}

.pp-form .forminator-radio {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	min-height: 56px;
	margin: 0;
	padding: 16px;
	border: 1.5px solid var(--pp-line-form);
	border-radius: var(--pp-radius-img);
	background: transparent;
	color: var(--pp-ink-900);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.25;
	cursor: pointer;
	transition: border-color var(--pp-dur-colour), background-color var(--pp-dur-colour);
}

@container (max-width: 360px) {
	.pp-form .forminator-radio {
		gap: 10px;
		padding: 14px 12px;
		font-size: var(--pp-fs-small);
	}
}

.pp-form .pp-field--cards-3 .forminator-radio {
	gap: 10px;
	min-height: 48px;
	padding: 12px;
	font-size: var(--pp-fs-small);
}

.pp-form .forminator-radio:hover {
	border-color: var(--pp-ink-900);
}

.pp-form .forminator-radio input,
.pp-form .forminator-checkbox input {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: 0;
	opacity: 0;
}

.pp-form .forminator-radio-bullet {
	position: relative;
	flex: none;
	width: 18px;
	height: 18px;
	border: 1.5px solid var(--pp-ink-900);
	border-radius: 50%;
	background: var(--pp-white);
}

.pp-form .pp-field--cards-3 .forminator-radio-bullet {
	width: 16px;
	height: 16px;
}

.pp-form .forminator-radio-bullet::after {
	content: "";
	position: absolute;
	inset: 0;
	margin: auto;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--pp-ink-900);
	transform: scale(0);
	transition: transform var(--pp-dur-colour);
}

.pp-form .pp-field--cards-3 .forminator-radio-bullet::after {
	width: 8px;
	height: 8px;
}

.pp-form .forminator-radio:has(input:checked) {
	border-color: var(--pp-ink-900);
	background: var(--pp-white);
}

.pp-form .forminator-radio:has(input:checked) .forminator-radio-bullet::after {
	transform: scale(1);
}

.pp-form .forminator-radio:has(input:focus-visible),
.pp-form .forminator-checkbox:has(input:focus-visible) .forminator-checkbox-box {
	outline: var(--pp-focus);
	outline-offset: 2px;
}

/* ---------- Checkboxes (consent, marketing opt-in) ---------- */
.pp-form .forminator-checkbox__wrapper,
.pp-form .forminator-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
	cursor: pointer;
}

.pp-form .forminator-checkbox {
	position: relative;
}

.pp-form .forminator-checkbox-box {
	position: relative;
	flex: none;
	width: 20px;
	height: 20px;
	margin-top: 1px;
	border: 1.5px solid var(--pp-ink-900);
	border-radius: 3px;
	background: var(--pp-white);
	transition: background-color var(--pp-dur-colour);
}

.pp-form .forminator-checkbox:has(input:checked) .forminator-checkbox-box {
	background: var(--pp-ink-900);
}

.pp-form .forminator-checkbox:has(input:checked) .forminator-checkbox-box::after {
	content: "✓";
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	color: var(--pp-lime-400);
	font-size: 13px;
	font-weight: 700;
	line-height: 1;
}

.pp-form .forminator-checkbox__label,
.pp-form .forminator-checkbox-label {
	color: var(--pp-text-body);
	font-size: 14px;
	font-weight: 400;
	line-height: 1.5;
}

.pp-form .forminator-checkbox__label a {
	color: var(--pp-ink-900);
	text-decoration: underline;
}

.pp-form[data-optin="0"] .pp-field--optin {
	display: none;
}

/* ---------- Upload ---------- */
.pp-form .forminator-multi-upload {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 48px;
	padding: 12px 14px;
	border: 1.5px dashed #b9b1a0;
	border-radius: var(--pp-radius-img);
	background: var(--pp-white);
	cursor: pointer;
	transition: border-color var(--pp-dur-colour);
}

.pp-form .forminator-multi-upload:hover,
.pp-form .forminator-multi-upload:focus-within {
	border-color: var(--pp-ink-900);
}

.pp-form .forminator-multi-upload:focus-within {
	box-shadow: 0 0 0 3px rgba(185, 225, 90, 0.6);
}

.pp-form .forminator-multi-upload .forminator-input-file {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	cursor: pointer;
}

.pp-form .forminator-upload--remove {
	display: none !important;
}

.pp-upload__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	color: var(--pp-ink-900);
	font-size: 14px;
	font-weight: 600;
	line-height: 1.3;
	pointer-events: none;
}

.pp-upload__hint {
	color: var(--pp-text-muted);
	font-size: 12px;
	font-weight: 400;
}

.pp-upload__button {
	flex: none;
	padding: 8px 14px;
	border: 1px solid var(--pp-ink-900);
	border-radius: var(--pp-radius-pill);
	font-size: var(--pp-fs-xs);
	font-weight: 600;
	pointer-events: none;
}

.pp-form[data-pp-form="enquiry"] .pp-upload__button {
	display: none;
}

.pp-form[data-pp-form="contact"] .forminator-multi-upload {
	padding: 14px 16px;
	border-style: solid;
	border-color: var(--pp-line);
	background: var(--pp-stone-50);
}

.pp-form .forminator-uploaded-files {
	display: flex;
	flex-direction: column;
	gap: 6px;
	margin: 8px 0 0;
	padding: 0;
	list-style: none;
	font-size: var(--pp-fs-xs);
}

.pp-form .forminator-uploaded-files:empty {
	display: none;
}

.pp-form .forminator-uploaded-files li {
	display: flex;
	align-items: center;
	gap: 8px;
}

.pp-form .forminator-uploaded-files button {
	padding: 2px 8px;
	border: 1px solid var(--pp-line);
	border-radius: var(--pp-radius-pill);
	background: transparent;
	font-size: 12px;
}

/* ---------- Buttons ---------- */
.pp-form .forminator-pagination-footer,
.pp-form .forminator-row-last .forminator-field {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}

.pp-form .forminator-pagination-footer {
	margin-top: 28px;
}

.pp-form .forminator-row-last {
	margin: 24px 0 0;
	padding-top: 24px;
	border-top: 1px solid var(--pp-line-soft);
}

.pp-form .forminator-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 48px;
	padding: 15px 26px;
	border: 0;
	border-radius: var(--pp-radius-pill);
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
	font-family: var(--pp-font-sans);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
	transition: background-color var(--pp-dur-colour), transform var(--pp-dur-press);
}

.pp-form .forminator-button:hover {
	background: var(--pp-lime-500);
}

.pp-form .forminator-button:active {
	transform: scale(var(--pp-press-scale));
}

.pp-form .forminator-button:disabled {
	opacity: 0.6;
	cursor: progress;
}

.pp-form .forminator-button-next,
.pp-form .forminator-button-submit,
.pp-form #forminator-submit {
	margin-left: auto;
}

/* Contact: submit sits on the left (reference) */
.pp-form[data-pp-form="contact"] .forminator-row-last .forminator-button-submit {
	margin-left: 0;
}

.pp-form .forminator-row-last .forminator-col {
	padding: 0;
}

/* Back: text link */
.pp-form .forminator-button-back {
	min-height: 44px;
	padding: 10px 0;
	background: transparent;
	color: var(--pp-ink-900);
	font-size: var(--pp-fs-small);
}

.pp-form .forminator-button-back:hover {
	background: transparent;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* ---------- Messages ---------- */
.pp-form .forminator-response-message[aria-hidden="true"],
.pp-form .forminator-response-message:empty {
	display: none;
}

.pp-form .forminator-response-message.forminator-error {
	margin-bottom: 20px;
	padding: 14px 16px;
	border-left: 3px solid var(--pp-form-error);
	border-radius: var(--pp-radius-img);
	background: #fbeeec;
	color: var(--pp-form-error);
	font-size: 14px;
}

.pp-form .forminator-response-message.forminator-error ul {
	margin: 6px 0 0;
	padding-left: 18px;
}

.pp-form .forminator-response-message.forminator-success {
	padding: 8px 0;
	color: var(--pp-ink-900);
}

.pp-form-success {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
	color: var(--pp-text-body);
	font-size: 17px;
	line-height: 1.6;
}

.pp-form-success__icon {
	display: grid;
	place-items: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
	font-size: 26px;
	font-weight: 700;
}

.pp-form-success__title {
	margin-top: 8px;
	color: var(--pp-ink-900);
	font-family: var(--pp-font-serif);
	font-size: 40px;
	line-height: 1;
}

@container (min-width: 440px) {
	.pp-form-success__title {
		font-size: 48px;
	}
}

/* ---------- Contact card (white, padding 48) ---------- */
.pp-contact-card {
	padding: 24px;
	border-radius: var(--pp-radius-card);
	background: var(--pp-white);
	box-shadow: var(--pp-shadow-card);
}

.pp-contact-card > .pp-h2 {
	margin-bottom: 24px;
}

.pp-contact-card .pp-form .forminator-row {
	gap: 20px;
	margin-bottom: 20px;
}

@media (min-width: 768px) {
	.pp-contact-card {
		padding: 48px;
	}

	.pp-contact-card > .pp-h2 {
		margin-bottom: 32px;
	}
}

.pp-contact-card__privacy {
	margin-top: 16px;
	color: var(--pp-text-muted);
	font-size: var(--pp-fs-xs);
	line-height: 1.5;
}

.pp-contact-card__privacy a {
	color: var(--pp-ink-900);
}

/* ---------- Step indicator (theme markup, synced by forms.js) ---------- */
.pp-form-steps {
	margin-bottom: 28px;
}

.pp-form-steps__count {
	margin-bottom: 12px;
	color: var(--pp-text-muted);
	font-size: var(--pp-fs-eyebrow);
	font-weight: 600;
	letter-spacing: var(--pp-ls-eyebrow);
	text-transform: uppercase;
}

.pp-form-steps__list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pp-form-steps__item {
	display: flex;
	flex-direction: column;
	gap: 8px;
	color: var(--pp-text-muted);
	font-size: var(--pp-fs-xs);
	line-height: 1.3;
}

.pp-form-steps__bar {
	height: 3px;
	border-radius: 2px;
	background: var(--pp-line-form);
	transition: background-color var(--pp-dur-colour);
}

.pp-form-steps__item.is-done .pp-form-steps__bar,
.pp-form-steps__item.is-current .pp-form-steps__bar {
	background: var(--pp-ink-900);
}

.pp-form-steps__item.is-current {
	color: var(--pp-ink-900);
	font-weight: 600;
}

.pp-form.is-sent .pp-form-steps {
	display: none;
}

/* ---- 21-single-archive.css ---- */
/*
 * Single project / article hero, project body (sticky aside + content),
 * masonry gallery, and the project archive (header, pills bar, grid).
 */

/* ---------- Full-bleed hero (always the same layout) ---------- */
.pp-hero-single {
	position: relative;
	display: flex;
	align-items: flex-end;
	height: min(78vh, 640px);
	min-height: 520px;
	overflow: hidden;
	background: var(--pp-forest-700);
	color: var(--pp-on-dark);
}

.pp-hero-single__media {
	position: absolute;
	inset: 0;
}

.pp-hero-single__media img,
.pp-hero-single__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover; /* object-position comes from the focal point */
}

.pp-hero-single__overlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(15, 26, 20, 0.55) 0%, rgba(15, 26, 20, 0) 26%, rgba(15, 26, 20, 0.35) 55%, rgba(15, 26, 20, 0.88) 100%);
}

.pp-hero-single--article .pp-hero-single__overlay {
	background: linear-gradient(180deg, rgba(15, 26, 20, 0.35) 0%, rgba(15, 26, 20, 0) 30%, rgba(15, 26, 20, 0.4) 58%, rgba(15, 26, 20, 0.9) 100%);
}

.pp-hero-single__inner {
	position: relative;
	width: 100%;
	padding-bottom: 36px;
	pointer-events: none;
}

.pp-hero-single__content {
	display: flex;
	flex-direction: column;
	gap: 18px;
	max-width: 1100px;
}

.pp-hero-single__tags {
	margin: 0;
	padding: 0;
	list-style: none;
}

.pp-hero-single__tags a {
	pointer-events: auto;
}

.pp-hero-single__title {
	color: var(--pp-on-dark);
}

@media (min-width: 768px) {
	.pp-hero-single {
		height: 680px;
		min-height: 0;
	}

	.pp-hero-single__inner {
		padding-bottom: 56px;
	}

	.pp-hero-single__content {
		gap: 24px;
	}
}

@media (min-width: 1024px) {
	.pp-hero-single--project {
		height: 880px;
	}

	.pp-hero-single--article {
		height: 820px;
	}

	.pp-hero-single__inner {
		padding-bottom: 72px;
	}
}

/* ---------- Project body ---------- */
.pp-project {
	display: flex;
	flex-direction: column;
	gap: 40px;
	padding-top: 56px;
	padding-bottom: 72px;
}

.pp-details {
	margin: 0;
	border-bottom: 1px solid var(--pp-line);
}

.pp-details__row {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 20px 0;
	border-top: 1px solid var(--pp-line);
}

.pp-details dd {
	margin: 0;
	color: var(--pp-ink-900);
	font-size: 17px;
	line-height: 1.5;
}

.pp-details .pp-tags {
	margin: 0;
	padding: 0;
	list-style: none;
}

.pp-details__logos {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 20px;
}

.pp-details__logos .pp-logo {
	flex: none;
	width: 132px;
	height: 26px;
}

.pp-tag--strong {
	color: var(--pp-ink-900);
	font-weight: 600;
}

.pp-project__body {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.pp-project__content > * + * {
	margin-top: 24px;
}

.pp-project__content p {
	color: var(--pp-text-body);
	font-size: 17px;
	line-height: 1.7;
	text-wrap: pretty;
}

.pp-project__content > p:first-of-type {
	color: var(--pp-ink-900);
	font-family: var(--pp-font-serif);
	font-size: 26px;
	line-height: 1.22;
}

.pp-project__actions {
	margin-top: 16px;
}

@media (min-width: 768px) {
	.pp-project__content p {
		font-size: var(--pp-fs-body-lg);
	}

	.pp-project__content > p:first-of-type {
		font-size: 32px;
	}
}

@media (min-width: 1024px) {
	.pp-project {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: start;
		padding-top: 96px;
		padding-bottom: 120px;
	}

	.pp-project__aside {
		position: sticky;
		top: calc(var(--pp-header-h) + var(--pp-adminbar, 0px) + 48px);
		grid-column: 1 / 5;
	}

	.pp-project__body {
		grid-column: 6 / 13;
	}

	.pp-project__content > p:first-of-type {
		font-size: 36px;
	}
}

/* ---------- Masonry gallery ---------- */
.pp-gallery-section {
	padding-bottom: var(--pp-section-y);
}

.pp-gallery-section__head {
	padding-bottom: 28px;
	border-bottom: 1px solid var(--pp-line);
}

.pp-masonry {
	margin: 32px 0 0;
	padding: 0;
	list-style: none;
	column-gap: var(--pp-gutter);
	columns: 1;
}

.pp-masonry__item {
	margin-bottom: var(--pp-gutter);
	break-inside: avoid;
}

.pp-masonry__open {
	display: block;
	width: 100%;
	padding: 0;
	overflow: hidden;
	border: 0;
	border-radius: var(--pp-radius-img);
	background: var(--pp-line-soft);
	cursor: zoom-in;
}

.pp-masonry__img {
	display: block;
	width: 100%;
	height: auto;
	transition: transform var(--pp-dur-zoom) var(--pp-ease-zoom);
}

.pp-masonry__open:hover .pp-masonry__img {
	transform: scale(1.04);
}

@media (min-width: 768px) {
	.pp-masonry {
		margin-top: 40px;
		columns: 2;
	}
}

@media (min-width: 1024px) {
	.pp-masonry {
		columns: 3;
	}
}

/* ---------- Project archive ---------- */
.pp-archive-head {
	padding-top: 72px;
	padding-bottom: 40px;
}

.pp-archive-grid {
	padding-bottom: var(--pp-section-y);
}

.pp-pills-bar {
	padding-bottom: 20px;
	border-bottom: 1px solid var(--pp-line);
}

.pp-card-grid--archive {
	margin-top: 40px;
}

.pp-archive-empty {
	margin-top: 40px;
}

@media (min-width: 768px) {
	.pp-archive-head {
		padding-top: 96px;
		padding-bottom: 48px;
	}

	.pp-pills-bar {
		padding-bottom: 28px;
	}
}

@media (min-width: 1024px) {
	.pp-archive-head {
		padding-top: 128px;
		padding-bottom: 64px;
	}

	.pp-card-grid--archive {
		margin-top: 56px;
		row-gap: 64px;
	}
}

/* ---- 22-blog-article.css ---- */
/* Advice & Inspiration (featured card, pills, grid) and the single article. */

/* ---------- Blog list ---------- */
@media (min-width: 1024px) {
	.pp-archive-head--blog {
		padding-bottom: 72px;
	}
}

.pp-featured,
.pp-featured:visited {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border-radius: var(--pp-radius-card);
	background: var(--pp-white);
	color: var(--pp-ink-900);
	text-decoration: none;
	transition: box-shadow 0.3s;
}

.pp-featured:hover {
	color: var(--pp-ink-900);
	box-shadow: var(--pp-shadow-brand-card);
}

.pp-featured__media {
	height: 260px;
	overflow: hidden;
	background: var(--pp-line-soft);
}

.pp-featured__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--pp-dur-zoom) var(--pp-ease-zoom);
}

.pp-featured:hover .pp-featured__media img {
	transform: scale(1.04);
}

.pp-featured__body {
	display: flex;
	flex-direction: column;
	gap: 18px;
	padding: 24px;
}

.pp-featured__body .pp-tags {
	margin: 0;
	padding: 0;
	list-style: none;
}

.pp-featured__title {
	margin: 0;
	font-size: 32px;
	line-height: 1.04;
	letter-spacing: -0.01em;
}

.pp-featured__more {
	display: flex;
	align-items: center;
	gap: 10px;
	padding-top: 18px;
	border-top: 1px solid var(--pp-line-soft);
	font-size: var(--pp-fs-small);
	font-weight: 600;
}

@media (min-width: 768px) {
	.pp-featured__media {
		height: 400px;
	}

	.pp-featured__body {
		gap: 20px;
		padding: 40px;
	}

	.pp-featured__title {
		font-size: 44px;
	}
}

@media (min-width: 1024px) {
	.pp-featured,
	.pp-featured:visited {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: center;
	}

	.pp-featured__media {
		grid-column: 1 / 8;
		height: 560px;
	}

	.pp-featured__body {
		grid-column: 8 / 13;
		padding: 48px 56px 48px 16px;
	}

	.pp-featured__title {
		font-size: 52px;
		line-height: 1.02;
	}
}

.pp-blog-grid {
	padding-top: 56px;
	padding-bottom: var(--pp-section-y);
}

.pp-blog-grid .pp-card-grid {
	margin-top: 32px;
}

/* Category/tag archives (no featured card): pills follow the header directly. */
.pp-archive-head--blog + .pp-blog-grid {
	padding-top: 0 !important;
}

@media (min-width: 768px) {
	.pp-blog-grid {
		padding-top: 96px;
	}

	.pp-blog-grid .pp-card-grid {
		margin-top: 48px;
	}
}

/* ---------- Article: meta + share row ---------- */
.pp-share-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px 24px;
	padding: 24px 0;
	border-bottom: 1px solid var(--pp-line);
}

.pp-share {
	display: flex;
	align-items: center;
	gap: 10px;
}

.pp-share__btn,
.pp-share__btn:visited {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border: 1px solid var(--pp-line);
	border-radius: 50%;
	color: var(--pp-ink-900);
	transition: background-color var(--pp-dur-colour), border-color var(--pp-dur-colour);
}

.pp-share__btn:hover {
	border-color: var(--pp-lime-400);
	background: var(--pp-lime-400);
	color: var(--pp-ink-900);
}

.pp-share__copy {
	display: inline-flex;
	align-items: center;
	box-sizing: border-box;
	height: 40px; /* exactly 40px, matching the round buttons */
	padding: 0 16px;
	border: 1px solid var(--pp-line);
	border-radius: var(--pp-radius-pill);
	background: transparent;
	color: var(--pp-ink-900);
	font-family: var(--pp-font-sans);
	font-size: var(--pp-fs-xs);
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
	transition: border-color var(--pp-dur-colour);
}

.pp-share__copy:hover,
.pp-share__copy.is-copied {
	border-color: var(--pp-ink-900);
}

@media (min-width: 768px) {
	.pp-share-row {
		padding-top: 32px;
	}
}

/* ---------- Article: aside + content ---------- */
.pp-article__layout {
	display: flex;
	flex-direction: column;
	gap: 40px;
	padding-top: 48px;
	padding-bottom: 72px;
}

.pp-article__aside {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
}

.pp-article__logo {
	flex: none;
	max-width: none;
}

.pp-article__blurb {
	max-width: 240px;
	color: var(--pp-text-muted);
	font-size: 14px;
	line-height: 1.55;
}

.pp-article__brand-link,
.pp-article__brand-link:visited {
	display: inline-flex;
	gap: 8px;
	padding-bottom: 4px;
	border-bottom: 1px solid var(--pp-ink-900);
	color: var(--pp-ink-900);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	transition: border-color var(--pp-dur-colour);
}

.pp-article__brand-link:hover {
	border-color: var(--pp-lime-400);
	color: var(--pp-ink-900);
}

@media (min-width: 1024px) {
	.pp-article__layout {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: start;
		padding-top: 96px;
		padding-bottom: 120px;
	}

	.pp-article__aside {
		position: sticky;
		top: calc(var(--pp-header-h) + var(--pp-adminbar, 0px) + 48px);
		grid-column: 1 / 4;
		gap: 20px;
		padding-top: 8px;
	}

	.pp-article__body {
		grid-column: 4 / 11;
	}
}

/* ---------- Article content (the_content) ---------- */
.pp-prose {
	color: var(--pp-text-body);
	font-size: 17px;
	line-height: 1.7;
}

.pp-prose > * {
	margin-top: 0;
	margin-bottom: 0;
}

.pp-prose > * + * {
	margin-top: 24px;
}

.pp-prose p {
	text-wrap: pretty;
}

.pp-prose > p:first-of-type {
	color: var(--pp-ink-900);
	font-size: 20px;
	line-height: 1.55;
}

.pp-prose h2 {
	margin-top: 48px;
	color: var(--pp-ink-900);
	font-size: 32px;
	line-height: 1.08;
	letter-spacing: -0.01em;
}

.pp-prose > h2:first-child {
	margin-top: 24px;
}

.pp-prose h3 {
	margin-top: 40px;
	color: var(--pp-ink-900);
	font-family: var(--pp-font-sans);
	font-size: 19px;
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: 0;
}

.pp-prose ul,
.pp-prose ol {
	padding-left: 1.25em;
}

.pp-prose li + li {
	margin-top: 0.5em;
}

.pp-prose a {
	color: var(--pp-ink-900);
	font-weight: 700;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

.pp-prose a:hover {
	color: var(--pp-forest-500);
	text-decoration-color: var(--pp-lime-400);
}

.pp-prose figure,
.pp-prose .wp-block-image {
	margin: 40px 0 16px;
}

.pp-prose img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--pp-radius-img);
}

/* No visible captions (README). */
.pp-prose figcaption,
.pp-prose .wp-element-caption,
.pp-prose .wp-caption-text {
	display: none;
}

.pp-prose blockquote,
.pp-prose .wp-block-quote {
	margin: 40px 0 16px;
	padding: 8px 0 8px 24px;
	border-left: 2px solid var(--pp-lime-400);
	color: var(--pp-ink-900);
	font-family: var(--pp-font-serif);
	font-size: 28px;
	line-height: 1.15;
}

.pp-prose blockquote p {
	margin: 0;
	font-size: inherit;
	line-height: inherit;
	color: inherit;
}

.pp-prose blockquote em {
	font-family: var(--pp-font-serif);
	font-style: italic;
}

.pp-prose blockquote cite {
	display: block;
	margin-top: 12px;
	font-family: var(--pp-font-sans);
	font-size: 14px;
	font-style: normal;
}

@media (min-width: 768px) {
	.pp-prose {
		font-size: var(--pp-fs-body-lg);
	}

	.pp-prose > p:first-of-type {
		font-size: 24px;
	}

	.pp-prose h2 {
		font-size: 44px;
	}

	.pp-prose h3 {
		font-size: 21px;
	}

	.pp-prose blockquote,
	.pp-prose .wp-block-quote {
		padding-left: 32px;
		font-size: 40px;
	}
}

/* Filed under */
.pp-filed {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-top: 48px;
	padding-top: 24px;
	border-top: 1px solid var(--pp-line);
}

.pp-filed .pp-meta {
	margin-right: 8px;
}

/* Related posts */
.pp-related .pp-card-grid {
	margin-top: 32px;
}

@media (min-width: 768px) {
	.pp-related .pp-card-grid {
		margin-top: 56px;
	}
}

/* Tap targets ≥44px below desktop. */
@media (max-width: 1023px) {
	.pp-share__btn,
	.pp-share__btn:visited {
		width: 44px;
		height: 44px;
	}

	.pp-share__copy {
		height: 44px;
	}
}

/* ---- 24-pagination-lightbox.css ---- */
/* Pagination and lightbox. */

/* ---------- Pagination: 48px round buttons, gap 8, hairline above ---------- */
.pp-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 56px;
	padding-top: 28px;
	border-top: 1px solid var(--pp-line);
}

.pp-pagination__item,
.pp-pagination__item:visited {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-width: 48px;
	height: 48px;
	padding: 0 14px;
	border: 1px solid var(--pp-line);
	border-radius: var(--pp-radius-pill);
	color: var(--pp-ink-900);
	font-size: var(--pp-fs-small);
	font-weight: 600;
	text-decoration: none;
	transition: background-color var(--pp-dur-colour), border-color var(--pp-dur-colour);
}

a.pp-pagination__item:hover {
	border-color: var(--pp-ink-900);
	color: var(--pp-ink-900);
}

.pp-pagination__item.is-current {
	border-color: var(--pp-ink-900);
	background: var(--pp-ink-900);
	color: var(--pp-stone-50);
}

.pp-pagination__item.is-disabled {
	opacity: 0.35;
}

.pp-pagination__item.is-dots {
	min-width: 24px;
	padding: 0;
	border-color: transparent;
}

@media (min-width: 768px) {
	.pp-pagination {
		margin-top: 96px;
		padding-top: 40px;
	}
}

/* ---------- Lightbox ---------- */
html.pp-lightbox-open,
html.pp-lightbox-open body {
	overflow: hidden;
}

.pp-lightbox {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	align-items: center;
	background: var(--pp-overlay);
	color: var(--pp-on-dark);
}

.pp-lightbox[hidden] {
	display: none;
}

.pp-lightbox__stage {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 16px;
	height: 100vh;
	height: 100dvh;
	margin: 0;
	padding: 72px 16px 104px;
	touch-action: pan-y;
}

.pp-lightbox__img {
	display: block;
	width: auto;
	max-width: 100%;
	height: auto;
	max-height: 100%;
	min-height: 0;
	object-fit: contain;
	border-radius: var(--pp-radius-img);
	user-select: none;
}

.pp-lightbox__count {
	flex: none;
	color: var(--pp-on-dark-3);
	font-size: 14px;
}

.pp-lightbox__btn {
	display: grid;
	place-items: center;
	padding: 0;
	border: 1px solid rgba(246, 243, 236, 0.4);
	border-radius: 50%;
	background: transparent;
	color: var(--pp-on-dark);
	cursor: pointer;
	transition: background-color var(--pp-dur-colour), border-color var(--pp-dur-colour), color var(--pp-dur-colour);
}

.pp-lightbox__nav {
	position: absolute;
	bottom: 24px;
	width: 56px;
	height: 56px;
	font-size: 20px;
}

.pp-lightbox__prev {
	left: calc(50% - 72px);
}

.pp-lightbox__next {
	right: calc(50% - 72px);
}

.pp-lightbox__nav:hover {
	border-color: var(--pp-lime-400);
	background: var(--pp-lime-400);
	color: var(--pp-ink-950);
}

.pp-lightbox__close {
	position: absolute;
	top: 16px;
	right: 16px;
	width: 48px;
	height: 48px;
	font-size: 18px;
}

.pp-lightbox__close:hover {
	border-color: var(--pp-on-dark);
}

@media (min-width: 768px) {
	.pp-lightbox {
		grid-template-columns: 96px minmax(0, 1fr) 96px;
	}

	.pp-lightbox__stage {
		grid-column: 2;
		grid-row: 1;
		padding: 48px 0;
	}

	.pp-lightbox__img {
		max-height: calc(100vh - 140px);
	}

	.pp-lightbox__nav {
		position: static;
		grid-row: 1;
		justify-self: center;
	}

	.pp-lightbox__prev {
		grid-column: 1;
	}

	.pp-lightbox__next {
		grid-column: 3;
	}

	.pp-lightbox__close {
		top: 24px;
		right: 24px;
	}
}

/* ---- 25-pages.css ---- */
/* FAQ, Contact and Privacy Notice elements (inside standard WPBakery rows, which provide the section spacing). */

/* ---------- FAQ: sticky intro (cols 1–4) + accordion (cols 6–12) ---------- */
.pp-faq {
	display: flex;
	flex-direction: column;
	gap: 40px;
}

.pp-faq__intro {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.pp-faq__title {
	font-size: clamp(44px, 5.6vw, 80px);
}

.pp-faq__lead {
	max-width: 360px;
}

.pp-faq__lead a {
	color: var(--pp-ink-900);
	font-weight: 600;
}

.pp-faq__media {
	height: 240px;
	margin-top: 8px;
	overflow: hidden;
	border-radius: var(--pp-radius-img);
	background: var(--pp-line-soft);
}

.pp-faq__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (min-width: 768px) {
	.pp-faq__intro {
		gap: 24px;
	}

	.pp-faq__media {
		height: 320px;
		margin-top: 24px;
	}
}

@media (min-width: 1024px) {
	.pp-faq {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: start;
	}

	.pp-faq__intro {
		position: sticky;
		top: calc(var(--pp-header-h) + var(--pp-adminbar, 0px) + 48px);
		grid-column: 1 / 5;
	}

	.pp-faq__media {
		height: 360px;
	}

	.pp-faq__list {
		grid-column: 6 / 13;
	}
}

/* ---------- Contact: intro + rows (cols 1–5), form card (cols 7–12) ---------- */
.pp-contact {
	display: flex;
	flex-direction: column;
	gap: 48px;
}

.pp-contact__intro {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.pp-contact__text p {
	max-width: 460px;
	color: var(--pp-text-body);
	font-size: 17px;
	line-height: var(--pp-lh-body);
	text-wrap: pretty;
}

.pp-contact__rows {
	max-width: 460px;
	margin: 8px 0 0;
	padding: 0;
	list-style: none;
	border-bottom: 1px solid var(--pp-line);
}

.pp-contact__row,
.pp-contact__row:visited {
	display: grid;
	grid-template-columns: 104px minmax(0, 1fr);
	gap: 16px;
	align-items: baseline;
	padding: 20px 0;
	border-top: 1px solid var(--pp-line);
	color: var(--pp-ink-900);
	text-decoration: none;
}

.pp-contact__row:hover {
	color: var(--pp-forest-500);
}

.pp-contact__value {
	font-size: 17px;
	font-weight: 500;
	overflow-wrap: anywhere;
}

.pp-contact__value--large {
	font-family: var(--pp-font-serif);
	font-size: 28px;
	font-weight: 400;
	line-height: 1;
}

.pp-contact__media {
	max-width: 460px;
	height: 240px;
	margin-top: 8px;
	overflow: hidden;
	border-radius: var(--pp-radius-img);
	background: var(--pp-line-soft);
}

.pp-contact__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pp-contact-card {
	scroll-margin-top: calc(var(--pp-header-h) + 24px);
}

.pp-contact-card__title {
	font-size: 34px;
}

@media (min-width: 768px) {
	.pp-contact__intro {
		gap: 24px;
	}

	.pp-contact__text p {
		font-size: 18px;
	}

	.pp-contact__rows {
		margin-top: 24px;
	}

	.pp-contact__row {
		grid-template-columns: 120px minmax(0, 1fr);
	}

	.pp-contact__value {
		font-size: 18px;
	}

	.pp-contact__value--large {
		font-size: 32px;
	}

	.pp-contact__media {
		height: 300px;
		margin-top: 24px;
	}

	.pp-contact-card__title {
		font-size: 40px;
	}
}

@media (min-width: 1024px) {
	.pp-contact {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: start;
	}

	.pp-contact__intro {
		grid-column: 1 / 6;
	}

	.pp-contact-card {
		grid-column: 7 / 13;
	}
}

/* ---------- Privacy Notice: TOC (cols 1–3) + sections (cols 5–11) ---------- */
.pp-legal-head {
	display: flex;
	flex-direction: column;
	gap: 24px;
	margin-bottom: 48px;
}

.pp-legal {
	display: flex;
	flex-direction: column;
	gap: 48px;
}

.pp-toc__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.pp-toc .pp-meta {
	padding-bottom: 14px;
}

.pp-toc__link,
.pp-toc__link:visited {
	display: grid;
	grid-template-columns: 32px minmax(0, 1fr);
	gap: 8px;
	padding: 14px 0;
	border-top: 1px solid var(--pp-line);
	color: var(--pp-ink-900);
	font-size: var(--pp-fs-small);
	line-height: 1.4;
	text-decoration: none;
}

.pp-toc__link:hover {
	color: var(--pp-forest-500);
}

.pp-toc__num {
	color: var(--pp-text-muted);
	font-family: var(--pp-font-serif);
	font-size: 18px;
	line-height: 1.2;
}

.pp-legal__box {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
	margin-top: 32px;
	padding: 24px;
	border-radius: var(--pp-radius-card);
	background: var(--pp-stone-100);
	font-size: var(--pp-fs-small);
}

.pp-legal__box-title {
	color: var(--pp-ink-900);
	font-weight: 600;
}

.pp-legal__box a {
	color: var(--pp-ink-900);
	overflow-wrap: anywhere;
}

.pp-legal__content {
	display: flex;
	flex-direction: column;
	gap: 40px;
}

.pp-legal__section {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding-top: 32px;
	border-top: 1px solid var(--pp-line);
	scroll-margin-top: calc(var(--pp-header-h) + 36px);
}

.pp-legal__num {
	color: var(--pp-text-muted);
	font-family: var(--pp-font-serif);
	font-size: 22px;
	line-height: 1;
}

.pp-legal__title {
	margin: 0;
	font-size: 32px;
	line-height: 1.08;
	letter-spacing: -0.01em;
}

.pp-legal__body p,
.pp-legal__body li,
.pp-legal__intro p {
	color: var(--pp-text-body);
	font-size: 17px;
	line-height: 1.7;
	text-wrap: pretty;
}

.pp-legal__body > * + * {
	margin-top: 16px;
}

.pp-legal__body a {
	color: var(--pp-ink-900);
	font-weight: 600;
}

@media (min-width: 768px) {
	.pp-legal-head {
		margin-bottom: 64px;
	}

	.pp-legal__title {
		font-size: 44px;
	}

	.pp-legal__body p,
	.pp-legal__body li,
	.pp-legal__intro p {
		font-size: 18px;
	}
}

@media (min-width: 1024px) {
	.pp-legal-head {
		margin-bottom: 96px;
	}

	.pp-legal-head .pp-h1 {
		max-width: 66%;
	}

	.pp-legal {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
		align-items: start;
	}

	.pp-legal__aside {
		position: sticky;
		top: calc(var(--pp-header-h) + var(--pp-adminbar, 0px) + 48px);
		grid-column: 1 / 4;
	}

	.pp-legal__content {
		grid-column: 5 / 12;
		gap: 56px;
	}
}

/* Privacy contact box: 44px links below desktop. */
@media (max-width: 1023px) {
	.pp-legal__box {
		gap: 0;
	}

	.pp-legal__box-title {
		margin-bottom: 4px;
	}

	.pp-legal__box a {
		display: inline-flex;
		align-items: center;
		min-height: 44px;
	}
}

/* ---------- 404 ---------- */
.pp-not-found__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 40px;
}

@media (max-width: 767px) {
	.pp-not-found__actions .pp-btn {
		width: 100%;
	}
}

/* ---------- Search results ---------- */
.pp-results {
	margin: 0;
	padding: 0;
	list-style: none;
	border-bottom: 1px solid var(--pp-line);
}

.pp-results__item {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 28px 0;
	border-top: 1px solid var(--pp-line);
}

.pp-results__title {
	margin: 0;
	font-size: 28px;
	line-height: 1.15;
}

.pp-results__title a,
.pp-results__title a:visited {
	display: inline-block;
	padding-block: 6px;
	color: var(--pp-ink-900);
	text-decoration: none;
}

.pp-results__title a:hover {
	color: var(--pp-forest-500);
}

@media (min-width: 768px) {
	.pp-results__title {
		font-size: 34px;
	}
}

/* ---- 26-wpbakery.css ---- */
/*
 * WPBakery rows and columns (its own front-end CSS is not loaded).
 * A row is a section (pp-section / pp-surface-* / pp-container from the row
 * settings). Elements inside a column stack with a 72px gap (48px on mobile).
 */
.vc_row,
.wpb_row {
	position: relative;
	margin: 0;
}

.vc_row::before,
.vc_row::after {
	content: none;
}

.vc_column_container > .vc_column-inner,
.wpb_column > .vc_column-inner {
	padding: 0;
}

.wpb_wrapper > * + * {
	margin-top: var(--pp-stack, 48px);
}

@media (min-width: 768px) {
	.wpb_wrapper > * + * {
		margin-top: var(--pp-stack, 72px);
	}

	/* Multi-column rows: 12-column grid */
	.vc_row:has(> .wpb_column:not(.vc_col-sm-12)) {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: var(--pp-gutter);
	}

	.vc_col-sm-1 { grid-column: span 1; }
	.vc_col-sm-2 { grid-column: span 2; }
	.vc_col-sm-3 { grid-column: span 3; }
	.vc_col-sm-4 { grid-column: span 4; }
	.vc_col-sm-5 { grid-column: span 5; }
	.vc_col-sm-6 { grid-column: span 6; }
	.vc_col-sm-7 { grid-column: span 7; }
	.vc_col-sm-8 { grid-column: span 8; }
	.vc_col-sm-9 { grid-column: span 9; }
	.vc_col-sm-10 { grid-column: span 10; }
	.vc_col-sm-11 { grid-column: span 11; }
	.vc_col-sm-12 { grid-column: 1 / -1; }
}

/* Mobile: columns in multi-column rows stack with a gap */
@media (max-width: 767px) {
	.vc_row > .wpb_column + .wpb_column {
		margin-top: 40px;
	}
}

/* A row holding only a Hero or Enquiry section adds no spacing or margins. */
.pp-row:has(> .wpb_column > .vc_column-inner > .wpb_wrapper > :is(.pp-hero, .pp-enquiry):only-child) {
	padding: 0;
}

/* WPBakery "Text block": readable defaults */
.wpb_text_column {
	color: var(--pp-text-body);
	font-size: 17px;
	line-height: var(--pp-lh-body);
}

.wpb_text_column p + p,
.wpb_text_column ul,
.wpb_text_column ol {
	margin-top: 1em;
}

/* Anchored sections clear the sticky header via html { scroll-padding-top } (03-base). */

/* ---- 27-motion.css ---- */
/* Scroll reveal (added by reveal.js only below the fold, never with reduced motion). */
.pp-reveal {
	opacity: 0;
	transform: translateY(var(--pp-reveal-distance));
	transition:
		opacity var(--pp-dur-reveal) ease,
		transform var(--pp-dur-reveal) var(--pp-ease-zoom);
}

.pp-reveal.is-visible {
	opacity: 1;
	transform: none;
}

/* Project filter: dim the grid while new cards load */
.pp-card-grid.is-loading {
	opacity: 0.45;
	transition: opacity var(--pp-dur-colour);
}

@media print {
	.pp-reveal {
		opacity: 1;
		transform: none;
	}
}
