/* fonts */
/* Self-hosted: Figtree (headings) and Inclusive Sans (body). Do not substitute either (brief 4.2). Latin and Latin Extended subsets, weights in use only. */
@font-face {
	font-family: 'Figtree';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/figtree-600-latin-ext.woff2) format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Figtree';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/figtree-600-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'Figtree';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/figtree-700-latin-ext.woff2) format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Figtree';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/figtree-700-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'Figtree';
	font-style: normal;
	font-weight: 800;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/figtree-800-latin-ext.woff2) format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Figtree';
	font-style: normal;
	font-weight: 800;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/figtree-800-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'Inclusive Sans';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/inclusivesans-400-latin-ext.woff2) format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Inclusive Sans';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/inclusivesans-400-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'Inclusive Sans';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/inclusivesans-600-latin-ext.woff2) format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Inclusive Sans';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/inclusivesans-600-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'Inclusive Sans';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/inclusivesans-700-latin-ext.woff2) format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Inclusive Sans';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url(http://gifsa.local/wp-content/themes/gifsa/assets/fonts/inclusivesans-700-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* tokens */
/*
 * Design tokens. The single source for colour, type and spacing.
 * Values are measured from the approved mockup (GIFSA-Mockup-FINAL-2026-09-23)
 * and the August 2026 palette (brief 4.2). Do not add colours here without
 * sign-off: criterion T5 allows only the 11 palette values.
 */
:root {
	/* Palette, August 2026. Orange and Sky Blue use the RGB-derived values, not the guideline typos. */
	--c-cream: #FAF5E7;
	--c-black: #1D1D1D;
	--c-red-orange: #F6440E;
	--c-orange: #F66B0E;
	--c-deep-ochre: #B34E0B;
	--c-yellow: #FFE500;
	--c-warm-gold: #F9C824;
	--c-sky-blue: #00A8F3;
	--c-teal: #2BAFCC;
	--c-deep-teal: #1D788C;
	--c-white: #FFFFFF;

	/*
	 * Non-palette values present in the approved mockup. Pending open
	 * question 8 (greys) and 7 (CTA treatments); kept here so they are easy
	 * to find and remove.
	 */
	--c-contact-hover: #155F70;
	--c-line: rgba(29, 29, 29, .14);
	--c-line-soft: rgba(29, 29, 29, .12);
	--c-faq-border: rgba(29, 29, 29, .16);
	--c-field-border: rgba(29, 29, 29, .35);
	--c-nav-hover: rgba(29, 120, 140, .12);
	--c-rule: rgba(29, 29, 29, .18);
	--c-placeholder-border: rgba(29, 29, 29, .4);
	--c-rule-light: rgba(250, 245, 231, .35); /* step connector on Deep Teal */
	--c-note: rgba(29, 29, 29, .75); /* small print under the New to the NDIS cards */
	--c-muted: rgba(29, 29, 29, .65); /* news dates, 5.4:1 on white */
	--c-hint-text: rgba(29, 29, 29, .68); /* form hint text, 5.8:1 on white, lighter than typed text */
	--c-footer-rule: rgba(250, 245, 231, .25);
	--c-footer-muted: rgba(250, 245, 231, .82);

	/* Type */
	--font-heading: Figtree, Arial, sans-serif;
	--font-body: "Inclusive Sans", system-ui, sans-serif;
	--font-ui: "Inclusive Sans", Arial, sans-serif;

	--fs-body: 1.0625rem;              /* 17px */
	--fs-h1: clamp(2.2rem, 8vw, 3.7rem); /* 59.2px at 1440 */
	--fs-h2: clamp(1.7rem, 6.2vw, 2.8rem); /* 44.8px at 1440 */
	--fs-card-title: 1.22rem;          /* 19.52px */
	--fs-tile-title: 1.18rem;
	--fs-h3-panel: 1.28rem;
	--fs-h3-office: 1.3rem;
	--fs-lead: clamp(1.1rem, 1.5vw, 1.32rem);
	--fs-intro: clamp(1.05rem, 1.35vw, 1.2rem);
	--fs-copy: clamp(1.02rem, 1.3vw, 1.14rem);
	--fs-stat: clamp(1.9rem, 3vw, 2.5rem);
	--fs-quote: clamp(1.05rem, 1.2vw, 1.15rem);
	--fs-quote-glyph: 2.875rem;
	--fs-18: 1.125rem;
	--fs-16: 1rem;
	--fs-15: .9375rem;
	--fs-14: .875rem;

	/* Layout */
	--content-max: 1280px;
	--gutter: clamp(20px, 5vw, 64px);
	--section-pad: clamp(56px, 7vw, 100px);

	/* Shape */
	--r-pill: 999px;
	--shadow-card: 0 12px 30px rgba(29, 29, 29, .08);
	--shadow-menu: 0 18px 40px rgba(29, 29, 29, .16);
	--shadow-start: 0 18px 40px rgba(29, 29, 29, .24);
	--shadow-header: 0 12px 26px -16px rgba(29, 29, 29, .4);

	/* Focus: 3px ring, teal on light surfaces, yellow on dark (A13) */
	--focus-ring: var(--c-deep-teal);

	--header-height: 160px; /* sticky header height, used for scroll-margin-top on sections */
}

/* base */
/* Base: reset, body, headings, focus, utilities. */
*, *::before, *::after { box-sizing: border-box; }
 html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--c-cream);
	color: var(--c-black);
	font-family: var(--font-body);
	font-size: var(--fs-body);
	line-height: 1.7;
	text-wrap: pretty;
}
h1, h2, h3, h4 { font-family: var(--font-heading); text-wrap: balance; margin: 0; }
p { margin: 0; }
a { color: var(--c-black); text-underline-offset: 3px; }
a:hover { color: var(--c-deep-ochre); }
button, input, textarea, select { font: inherit; color: inherit; }
img { max-width: 100%; display: block; }
address { font-style: normal; }

/*
 * The page wrapper clips horizontal overflow. clip, not hidden, so the sticky
 * header still sticks (hidden would create a scroll container).
 */
.site { background: var(--c-cream); overflow-x: clip; }

/* Focus (A13). Dark bands switch to yellow; light panels inside them switch back. */
:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 3px; border-radius: 4px; }
.is-dark { --focus-ring: var(--c-yellow); }
.is-dark .is-light { --focus-ring: var(--c-deep-teal); }

/* Layout primitives */
.container { max-width: var(--content-max); margin: 0 auto; }
.section { padding: var(--section-pad) var(--gutter); scroll-margin-top: var(--header-height); }


.h2 {
	font-size: var(--fs-h2);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -.02em;
}

/* Screen-reader only (C1 allowlist items use this). */
.sr-only {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	margin: -1px; padding: 0; border: 0;
}

/*
 * Skip link (A12). Sits over the Deep Teal top bar, so its focus ring is
 * yellow: the mockup's teal ring measured 1.00:1 there.
 */
.skip-link {
	position: absolute;
	top: 8px; left: 8px;
	z-index: 400;
	transform: translateY(-200%);
	background: var(--c-black);
	color: var(--c-cream);
	padding: 14px 20px;
	border-radius: var(--r-pill);
	font: 600 var(--fs-16)/1 var(--font-heading);
	text-decoration: none;
}
.skip-link:focus, .skip-link:focus-visible { transform: translateY(0); color: var(--c-cream); outline-color: var(--c-yellow); }

/* Reduced motion (A15) */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* buttons */
/*
 * Buttons and text links. Every treatment in the approved mockup is reproduced;
 * the three-tier rule from the August brief is unresolved (open question 7).
 *
 * Each treatment is defined once and serves both markups: the .btn classes
 * written by ACF blocks and PHP templates, and core Button blocks with the
 * matching block style (is-style-*, registered in assets/js/editor.js). A core
 * Button with no style is Yellow. The core selectors carry two classes so they
 * outrank the editor's own button defaults.
 */
.btn-row,
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
/* The link is a flex item, not inline content, so no line box adds space under a link that wraps. */
.wp-block-buttons > .wp-block-button { display: flex; max-width: 100%; }

.btn,
.wp-block-button > .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 56px;
	padding: 0 30px;
	border-radius: var(--r-pill);
	font: 700 var(--fs-body)/1 var(--font-ui);
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
}
.btn__arrow { flex: none; }

.btn--yellow,
.wp-block-button > .wp-block-button__link { background: var(--c-yellow); color: var(--c-black); border: 0; }
.btn--yellow:hover,
.wp-block-button > .wp-block-button__link:hover { background: var(--c-warm-gold); color: var(--c-black); }

.btn--outline,
.is-style-outline-dark > .wp-block-button__link { background: transparent; color: var(--c-black); border: 2px solid var(--c-black); }
.btn--outline:hover,
.is-style-outline-dark > .wp-block-button__link:hover { background: var(--c-black); color: var(--c-cream); }

.btn--dark,
.is-style-dark > .wp-block-button__link { background: var(--c-black); color: var(--c-cream); border: 0; }
.btn--dark:hover,
.is-style-dark > .wp-block-button__link:hover { background: var(--c-cream); color: var(--c-black); }

.btn--dark-alt,
.is-style-dark-alt > .wp-block-button__link { background: var(--c-black); color: var(--c-cream); border: 0; }
.btn--dark-alt:hover,
.is-style-dark-alt > .wp-block-button__link:hover { background: var(--c-deep-ochre); color: var(--c-white); }

.btn--outline-light,
.is-style-outline-light > .wp-block-button__link { background: transparent; color: var(--c-white); border: 2px solid var(--c-white); padding: 0 26px; }
.btn--outline-light:hover,
.is-style-outline-light > .wp-block-button__link:hover { background: var(--c-white); color: var(--c-deep-ochre); }

.btn--outline-light-teal,
.is-style-outline-light-teal > .wp-block-button__link { background: transparent; color: var(--c-white); border: 2px solid var(--c-white); }
.btn--outline-light-teal:hover,
.is-style-outline-light-teal > .wp-block-button__link:hover { background: var(--c-white); color: var(--c-deep-teal); }

.btn--white,
.is-style-white > .wp-block-button__link { background: var(--c-white); color: var(--c-deep-teal); border: 0; }
.btn--white:hover,
.is-style-white > .wp-block-button__link:hover { background: var(--c-cream); color: var(--c-black); }

/* "Learn more" style link with arrow */
.text-link,
.is-style-text-link > .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	min-height: 44px;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
	font: 700 var(--fs-15)/1.45 var(--font-ui);
	text-transform: uppercase;
	text-decoration: underline;
	color: var(--c-black);
}
.text-link:hover,
.is-style-text-link > .wp-block-button__link:hover { background: none; color: var(--c-deep-ochre); }

/* header */
/* Header: top bar, sticky navigation bar, dropdowns, search, mobile menu. */

/* ---- Top bar (Deep Teal) ---- */
.topbar { background: var(--c-deep-teal); color: var(--c-white); border-bottom: 3px solid var(--c-teal); }
.topbar__inner {
	max-width: calc(var(--content-max) + clamp(40px, 10vw, 128px));
	margin: 0 auto;
	padding: 6px var(--gutter);
	display: flex;
	flex-wrap: wrap;
	gap: 4px 24px;
	align-items: center;
	justify-content: space-between;
}
.topbar__phones { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 14px; font-size: var(--fs-14); margin-left: auto; }
.topbar__phone {
	color: var(--c-white);
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	text-decoration: underline;
	white-space: nowrap;
}
.topbar__phone svg { flex: none; }
.topbar__phone:hover { color: var(--c-cream); }
.topbar__sep { color: var(--c-teal); }

/* "Where would you like to start?" */
.start-menu { position: relative; }
.start-menu__toggle {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background: transparent;
	border: 0;
	cursor: pointer;
	color: var(--c-white);
	font: 600 var(--fs-14)/1 var(--font-heading);
	min-height: 44px;
	padding: 0 2px;
}
.start-menu__toggle:hover { color: var(--c-yellow); }
.start-menu__pin {
	flex: none;
	width: 26px; height: 26px;
	border-radius: var(--r-pill);
	background: var(--c-yellow);
	color: var(--c-black);
	display: grid;
	place-items: center;
}
.start-menu__label { text-decoration: underline; text-underline-offset: 3px; }
.start-menu__panel { position: absolute; top: 100%; left: 0; padding-top: 8px; min-width: 320px; z-index: 120; }
.start-menu__card {
	list-style: none;
	margin: 0;
	background: var(--c-cream);
	color: var(--c-black);
	border: 1px solid var(--c-line-soft);
	border-radius: 20px 20px 20px 6px;
	box-shadow: var(--shadow-start);
	padding: 10px;
}
.start-menu__card a {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 10px 12px;
	border-radius: 14px;
	color: var(--c-black);
	text-decoration: none;
	font: 600 var(--fs-15)/1.35 var(--font-heading);
	min-height: 52px;
}
.start-menu__card a:hover { background: var(--c-white); color: var(--c-black); }
.start-menu__icon { flex: none; width: 40px; height: 40px; border-radius: var(--r-pill); display: grid; place-items: center; }

/* ---- Navigation bar (Cream, sticky) ---- */
.site-header {
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 100;
	background: var(--c-cream);
	border-bottom: 1px solid var(--c-line);
	/* box-shadow: var(--shadow-header); */
}
body.scrolled .site-header { box-shadow: var(--shadow-header); }
.site-header__inner {
	max-width: calc(var(--content-max) + clamp(40px, 10vw, 128px));
	margin: 0 auto;
	padding: 10px var(--gutter);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 10px clamp(12px, 2.4vw, 24px);
}
.site-header__logo { display: block; flex: none; padding: 2px; }
.site-header__logo-img { width: clamp(104px, 26vw, 144px); height: auto; }

.primary-nav { display: flex; align-items: center; justify-content: center; flex: 1 1 auto; }
.primary-nav[hidden] { display: none; }
.primary-nav__list { display: flex; align-items: center; gap: 2px; list-style: none; margin: 0; padding: 0; }
.primary-nav__item { position: relative; }
.primary-nav__link {
	background: transparent;
	font: 600 var(--fs-14)/1 var(--font-heading);
	letter-spacing: -.01em;
	color: var(--c-black);
	min-height: 48px;
	padding: 0 8px;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	border-radius: 10px;
	white-space: nowrap;
	text-decoration: none;
}
.primary-nav__link:hover { background: var(--c-nav-hover); color: var(--c-black); }
.primary-nav__panel { position: absolute; top: 100%; left: 0; z-index: 300; padding-top: 10px; min-width: 300px; }
.primary-nav__item:first-child .primary-nav__panel { min-width: 340px; }
.primary-nav__item:last-child .primary-nav__panel { left: auto; right: 0; }
.primary-nav__menu {
	list-style: none;
	margin: 0;
	background: var(--c-white);
	border: 1px solid var(--c-line-soft);
	border-radius: 20px 20px 20px 6px;
	box-shadow: var(--shadow-menu);
	padding: 10px;
}
.primary-nav__menu a {
	display: block;
	padding: 11px 14px;
	border-radius: 12px;
	color: var(--c-black);
	text-decoration: none;
	font: 600 var(--fs-16)/1.4 var(--font-heading);
}
.primary-nav__menu a:hover { background: var(--c-cream); color: var(--c-deep-ochre); }

/* Search: replaces the navigation while open */
.search-form { display: flex; align-items: center; gap: 10px; }
.search-form--header { flex: 1 1 auto; max-width: 640px; }
.search-form[hidden] { display: none; }
.search-form__input {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 48px;
	border: 2px solid var(--c-black);
	border-radius: var(--r-pill);
	background: var(--c-white);
	padding: 0 18px;
	font-size: var(--fs-16);
}
.search-form__close {
	flex: none;
	width: 48px; height: 48px;
	border-radius: var(--r-pill);
	border: 2px solid var(--c-black);
	background: transparent;
	color: var(--c-black);
	cursor: pointer;
	display: grid;
	place-items: center;
}
.search-form__close:hover { background: var(--c-black); color: var(--c-cream); }
.search-form__submit {
	flex: none;
	width: 48px; height: 48px;
	border-radius: var(--r-pill);
	border: 0;
	background: var(--c-black);
	color: var(--c-cream);
	cursor: pointer;
	display: grid;
	place-items: center;
}

.header-actions { display: flex; align-items: center; gap: 10px; flex: none; }
.header-actions__search {
	width: 44px; height: 44px;
	border-radius: var(--r-pill);
	border: 1px solid var(--c-black);
	background: transparent;
	color: var(--c-black);
	cursor: pointer;
	display: grid;
	place-items: center;
}
.header-actions__search[hidden] { display: none; }
.header-actions__search:hover { background: var(--c-black); color: var(--c-cream); }
.header-actions__contact {
	background: var(--c-deep-teal);
	color: var(--c-white);
	font: 600 var(--fs-15)/1 var(--font-ui);
	text-transform: uppercase;
	text-decoration: none;
	border: 1px solid var(--c-deep-teal);
	border-radius: var(--r-pill);
	min-height: 44px;
	padding: 0 20px;
	display: inline-flex;
	align-items: center;
	white-space: nowrap;
}
.header-actions__contact:hover { background: var(--c-contact-hover); color: var(--c-white); }
.header-actions__referral,
.header-mobile__referral {
	background: var(--c-yellow);
	color: var(--c-black);
	font: 700 var(--fs-15)/1.45 var(--font-ui);
	text-transform: uppercase;
	text-decoration: none;
	border-radius: var(--r-pill);
	min-height: 44px;
	padding: 0 20px;
	display: inline-flex;
	align-items: center;
	white-space: nowrap;
}
.header-actions__referral:hover,
.header-mobile__referral:hover { background: var(--c-warm-gold); color: var(--c-black); }

/* Phone and tablet header (below 1240px, the mockup's switch point) */
.header-mobile { display: none; }
.header-mobile__referral {
	min-height: 48px;
	padding: 0 clamp(12px, 3.4vw, 18px);
	justify-content: center;
	text-align: center;
	line-height: 1.15;
	white-space: normal;
	flex: 0 1 auto;
	min-width: 0;
}
.header-mobile__menu {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background: var(--c-black);
	color: var(--c-cream);
	border: 0;
	border-radius: var(--r-pill);
	min-height: 48px;
	padding: 0 clamp(13px, 3.6vw, 20px);
	font: 600 var(--fs-16)/1 var(--font-heading);
	cursor: pointer;
	flex: none;
}
.header-mobile__menu svg { flex: none; }

.mobile-nav {
	background: var(--c-cream);
	border-top: 1px solid var(--c-line);
	padding: 14px var(--gutter) 22px;
	max-height: 70vh;
	overflow: auto;
}
.mobile-nav[hidden] { display: none; }
.mobile-nav .search-form { margin-bottom: 12px; }
.mobile-nav__section {
	width: 100%;
	background: transparent;
	border: 0;
	border-bottom: 1px solid var(--c-line-soft);
	cursor: pointer;
	font: 600 var(--fs-18)/1 var(--font-heading);
	color: var(--c-black);
	min-height: 56px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	text-align: left;
}
.mobile-nav__panel { padding: 6px 0 10px 14px; border-bottom: 1px solid var(--c-line-soft); }
.mobile-nav__panel[hidden] { display: none; }
.mobile-nav__panel ul { list-style: none; margin: 0; padding: 0; }
.mobile-nav__panel a,
.mobile-nav__link {
	display: flex;
	align-items: center;
	min-height: 48px;
	color: var(--c-black);
	font: 600 var(--fs-16)/1.4 var(--font-heading);
}
.mobile-nav__contact {
	display: flex;
	align-items: center;
	min-height: 56px;
	color: var(--c-black);
	text-decoration: none;
	font: 600 var(--fs-18)/1 var(--font-heading);
}

@media (max-width: 1239.98px) {
	.primary-nav,
	.header-actions,
	.search-form--header { display: none !important; }
	.header-mobile { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex: 1 1 auto; min-width: 0; }
}
@media (min-width: 1240px) {
	.mobile-nav { display: none !important; }
}
@media (max-width: 419.98px) {
	.header-mobile__menu-label { display: none; }
}

/* Current section and page (from the mockup) */
.primary-nav__link.is-current-section { background: var(--c-nav-hover); }
.primary-nav__menu a[aria-current="page"] { color: var(--c-deep-ochre); background: var(--c-cream); font-weight: 700; }
.mobile-nav__panel a[aria-current="page"] { color: var(--c-deep-ochre); font-weight: 700; }

/* footer */
/* Footer (Black). */
.site-footer { background: var(--c-black); color: var(--c-cream); padding: clamp(52px, 6vw, 84px) var(--gutter) 32px; }
.site-footer__grid { display: grid; grid-template-columns: 1fr; gap: clamp(28px, 3vw, 56px); align-items: start; }
@media (min-width: 560px) { .site-footer__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
@media (min-width: 820px) { .site-footer__grid { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr); } }

.site-footer__logo { width: 168px; height: auto; margin-bottom: 20px; }
.site-footer__tagline { font-size: var(--fs-16); line-height: 1.7; max-width: 40ch; }

.site-footer__socials { list-style: none; margin: 22px 0 26px; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.site-footer__social {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px; height: 46px;
	border-radius: var(--r-pill);
	background: var(--c-yellow);
	color: var(--c-black);
	text-decoration: none;
}
.site-footer__social:hover { background: var(--c-warm-gold); color: var(--c-black); }

.site-footer__credentials { list-style: none; margin: 24px 0 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.site-footer__credential { background: var(--c-white); border-radius: 12px; display: flex; align-items: center; }
.site-footer__credential img { height: auto; display: block; }
.site-footer__credential--ndis { padding: 14px 16px; }
.site-footer__credential--ndis img { width: 150px; }
.site-footer__credential--acnc { padding: 12px; }
.site-footer__credential--acnc img { width: 78px; }

/*
 * Column headings are h2 at 16px (brief 4.4). This is a fourth rendered H2
 * size, which conflicts with criterion T3; raised in BUILD-REPORT.md.
 */
.site-footer__heading {
	font-family: var(--font-body);
	font-size: var(--fs-16);
	font-weight: 700;
	line-height: 1.7;
	letter-spacing: .1em;
	text-transform: uppercase;
	margin-bottom: 14px;
	color: var(--c-warm-gold);
}
.site-footer__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; font-size: var(--fs-16); }
.site-footer__link { color: var(--c-cream); display: flex; align-items: center; min-height: 44px; font-size: var(--fs-16); }
.site-footer__link:hover { color: var(--c-warm-gold); }
.site-footer__address { line-height: 1.6; padding-bottom: 8px; }

.site-footer__ack {
	margin-top: clamp(32px, 4vw, 52px);
	padding-top: 26px;
	border-top: 1px solid var(--c-footer-rule);
	font-size: clamp(.75rem, 1.02vw, .875rem);
	line-height: 1.7;
	letter-spacing: -.005em;
}
.site-footer__legal { margin-top: 18px; font-size: var(--fs-14); line-height: 1.7; color: var(--c-footer-muted); }
.site-footer__legal a { color: inherit; display: inline-flex; align-items: center; min-height: 44px; }
.site-footer__legal a:hover { color: var(--c-warm-gold); }

/* blocks */
/* GIFSA sections, in homepage order. Each rule serves the ACF block markup and the
 * core-block page markup; a card in a section is matched by :where(.section), so
 * the card's own colour setting (core-blocks.css) still wins. */

/* Colour utilities for icon chips and bars. Text colour follows the brief's hard colour rule. */
.bg-orange { background: var(--c-orange); color: var(--c-black); }
.bg-red-orange { background: var(--c-red-orange); color: var(--c-black); }
.bg-sky-blue { background: var(--c-sky-blue); color: var(--c-black); }
.bg-teal { background: var(--c-teal); color: var(--c-black); }
.bg-warm-gold { background: var(--c-warm-gold); color: var(--c-black); }
.bg-yellow { background: var(--c-yellow); color: var(--c-black); }
.bg-deep-teal { background: var(--c-deep-teal); color: var(--c-white); }
.bg-deep-ochre { background: var(--c-deep-ochre); color: var(--c-white); }
.ink-black { color: var(--c-black); }
.ink-deep-teal { color: var(--c-deep-teal); }
.ink-deep-ochre { color: var(--c-deep-ochre); }

/* Editor-only prompt when a block has no content yet. */
.block-empty { padding: 24px; border: 2px dashed var(--c-line); font-size: var(--fs-16); }

/* ---- Hero ---- */
.hero { background: var(--c-cream); padding: clamp(40px, 6vw, 84px) var(--gutter) clamp(56px, 7vw, 96px); }
.hero__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 430px), 1fr)); gap: clamp(32px, 4vw, 64px); align-items: stretch; }
.hero__text { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; }
.hero__title { font-size: var(--fs-h1); font-weight: 800; line-height: 1.16; letter-spacing: -.02em; max-width: 24ch; margin: 0 0 24px; }
.hero__intro { font-size: var(--fs-lead); line-height: 1.65; max-width: 60ch; margin: 0 0 32px; }
.hero__image { width: 100%; height: 100%; min-height: clamp(320px, 34vw, 470px); object-fit: cover; border-radius: 40px 150px 40px 40px; }

/* ---- Pathways ---- */
.pathways { background: var(--c-deep-teal); color: var(--c-white); padding: clamp(40px, 5vw, 64px) var(--gutter) clamp(48px, 6vw, 76px); }
.pathways__inner { position: relative; }
.pathways__arrow { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; z-index: 2; stroke: var(--c-warm-gold); }
.pathways__arrow[hidden] { display: none; }
.pathways__title { display: inline-block; line-height: 1.12; color: var(--c-white); }
.pathways__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(320px, 44%)), 1fr)); gap: clamp(16px, 2vw, 24px); margin-top: clamp(26px, 3.4vw, 48px); }
.pathway {
	background: var(--c-cream);
	color: var(--c-black);
	border-radius: 26px 26px 26px 8px;
	padding: 26px 28px;
	text-decoration: none;
	display: flex;
	align-items: flex-start;
	gap: 20px;
}
.pathway:hover { background: var(--c-white); color: var(--c-black); }
.pathway__icon { flex: none; width: 58px; height: 58px; border-radius: 18px 18px 18px 5px; display: grid; place-items: center; }
.pathway__body { display: flex; flex-direction: column; gap: 8px; }
.pathway__title { font-family: var(--font-heading); font-size: var(--fs-tile-title); font-weight: 700; line-height: 1.25; }
.pathway__text { font-size: var(--fs-15); line-height: 1.6; }
.pathway__cta {
	font: 700 var(--fs-15)/1.45 var(--font-ui);
	text-transform: uppercase;
	text-decoration: underline;
	display: inline-flex;
	align-items: center;
	gap: 9px;
	min-height: 44px;
}

/* ---- Service cards ---- */
.services { background: var(--c-cream); }
.services__title { margin-bottom: 18px; }
.services__intro { font-size: var(--fs-intro); line-height: 1.7; max-width: 70ch; margin-bottom: clamp(30px, 4vw, 46px); }
.services__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); gap: clamp(16px, 2vw, 24px); }
.service-card {
	background: var(--c-white);
	color: var(--c-black);
	border-radius: 26px 26px 26px 6px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	min-height: clamp(340px, 26vw, 400px);
}
.service-card__bar { height: 12px; }
.service-card__body { padding: 22px 24px 26px; display: flex; flex-direction: column; gap: 12px; flex: 1 1 0%; }
.service-card__icon { width: 54px; height: 54px; border-radius: var(--r-pill); display: grid; place-items: center; }
.service-card__title { font-size: var(--fs-card-title); font-weight: 700; line-height: 1.25; }
.service-card__text { font-size: var(--fs-15); line-height: 1.6; flex: 1 1 0%; }
.services__buttons { margin-top: clamp(28px, 4vw, 44px); }

/* ---- Statistics ---- */
.stats { background: var(--c-deep-ochre); color: var(--c-white); padding: clamp(56px, 7vw, 100px) var(--gutter) clamp(64px, 8vw, 110px); }
.stats__tab {
	position: relative;
	max-width: 820px;
	background: var(--c-warm-gold);
	color: var(--c-black);
	border-radius: 32px 32px 6px;
	padding: clamp(22px, 2.6vw, 34px) clamp(24px, 3vw, 40px);
}
.stats__tab-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 20px; }
.stats__spark { width: 74px; height: auto; margin-bottom: 8px; }
.stats__nub { position: absolute; left: clamp(30px, 7%, 124px); bottom: -36px; width: 138px; height: 38px; background: var(--c-warm-gold); border-radius: 0 0 70px 70px; z-index: 2; }
.stats__grid {
	position: relative;
	background: var(--c-cream);
	color: var(--c-black);
	border-radius: 36px;
	padding: clamp(46px, 4.6vw, 62px) clamp(22px, 2.6vw, 40px) clamp(34px, 4vw, 56px);
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 215px), 1fr));
	gap: clamp(20px, 2.4vw, 34px) clamp(22px, 2.6vw, 40px);
}
.stat { border-top: 2px solid var(--c-line); padding-top: 16px; }
.stat__figure { font: 800 var(--fs-stat)/1.05 var(--font-heading); color: var(--c-deep-teal); margin-bottom: 10px; font-variant-numeric: tabular-nums; }
.stat__label { font-size: var(--fs-15); line-height: 1.55; }

/* ---- Image and text ---- */
.image-text { background: var(--c-cream); position: relative; overflow: hidden; }
.image-text__motif { position: absolute; right: -40px; bottom: 0; width: min(620px, 50%); height: auto; opacity: .16; }
.image-text__grid { position: relative; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: clamp(32px, 4vw, 64px); align-items: stretch; }
.image-text__media { position: relative; align-self: stretch; min-height: clamp(280px, 40vw, 392px); border-radius: 150px 40px 40px; overflow: hidden; }
.image-text__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.image-text__title { margin-bottom: 22px; }
.image-text__copy { font-size: var(--fs-copy); line-height: 1.75; max-width: 64ch; margin-bottom: 18px; }
.image-text__copy:last-of-type { margin-bottom: 30px; }

/* ---- Feature with image or video ---- */
.feature { background: var(--c-deep-teal); color: var(--c-white); padding-bottom: clamp(64px, 8vw, 112px); }
.feature__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: clamp(24px, 3vw, 40px); align-items: stretch; }
.feature__panel,
:where(.feature) .gifsa-card--panel {
	background: var(--c-warm-gold);
	color: var(--c-black);
	border-radius: 36px 36px 36px 10px;
	padding: clamp(30px, 3.6vw, 50px) clamp(26px, 3vw, 44px);
	position: relative;
	overflow: hidden;
	height: 100%;
}
.feature__title { line-height: 1.08; margin-bottom: 20px; }
.feature__copy { font-size: var(--fs-copy); line-height: 1.75; max-width: 46ch; margin-bottom: 28px; }
.feature__media { position: relative; min-height: clamp(280px, 32vw, 420px); }
.feature__image,
:where(.feature__media) > .wp-block-gifsa-video,
.feature__media iframe { width: 100%; height: 100%; min-height: clamp(280px, 32vw, 420px); object-fit: cover; border-radius: 36px 36px 10px; }
.feature__media iframe { position: absolute; inset: 0; border: 0; }
.feature__play {
	position: absolute;
	left: 50%; top: 50%;
	transform: translate(-50%, -50%);
	width: 78px; height: 78px;
	border-radius: var(--r-pill);
	border: 0;
	background: var(--c-warm-gold);
	color: var(--c-black);
	display: grid;
	place-items: center;
	box-shadow: 0 10px 26px rgba(29, 29, 29, .3);
	cursor: pointer;
}
.feature__play:hover { background: var(--c-yellow); }

/* ---- Testimonials ---- */
.stories { background: var(--c-cream); }
.stories__head { margin-bottom: clamp(30px, 4vw, 46px); }
.stories__title { line-height: 1.14; letter-spacing: -.022em; margin-bottom: 10px; display: flex; flex-wrap: wrap; gap: 0 .38em; }
.stories__phrase { transition: opacity .55s ease, transform .55s ease, visibility 0s; transition-delay: calc(var(--i, 0) * 130ms); }
/* visibility as well as opacity, so nothing half-transparent is ever exposed to assistive tech or audits. */
.stories__title.is-waiting .stories__phrase { opacity: 0; visibility: hidden; transform: translateY(16px); }
.stories__intro { font-size: var(--fs-intro); line-height: 1.7; max-width: 70ch; }
.stories__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: clamp(18px, 2vw, 26px); }
.story-card { background: var(--c-white); border-radius: 34px 34px 34px 10px; overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--shadow-card); }
.story-card__photo { width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; }
.story-card__body { padding: 26px 28px 28px; display: flex; flex-direction: column; gap: 20px; flex: 1 1 0%; }
.story-card__summary { font-size: var(--fs-16); line-height: 1.7; }
.story-card__quote { margin: 0; background: var(--c-cream); border-radius: 24px 24px 24px 6px; padding: 22px 24px 20px; display: flex; flex-direction: column; gap: 0; }
.story-card__glyph { display: block; font-family: var(--font-heading); font-weight: 800; font-size: var(--fs-quote-glyph); color: var(--c-deep-ochre); }
.story-card__glyph--open { height: .34em; line-height: .34; }
.story-card__glyph--close { align-self: flex-end; height: .5em; margin-top: -.06em; line-height: .5; }
.story-card__words { font-size: var(--fs-quote); line-height: 1.6; font-weight: 600; }
.story-card__footer { margin-top: 10px; }
.story-card__cite { font-style: normal; font-size: var(--fs-16); line-height: 1.7; font-weight: 700; color: var(--c-black); }
.stories__buttons { margin-top: clamp(28px, 4vw, 44px); }

/* ---- Text with panel ---- */
.text-panel { background: var(--c-deep-ochre); color: var(--c-white); padding-top: clamp(56px, 7vw, 104px); padding-bottom: clamp(56px, 7vw, 104px); position: relative; overflow: hidden; }
.text-panel__motif { position: absolute; top: 0; left: -60px; width: min(600px, 48%); height: auto; transform: scaleY(-1) scaleX(-1); opacity: .16; }
.text-panel__grid { position: relative; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: clamp(28px, 3.4vw, 56px); align-items: stretch; }
.text-panel__text { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; }
.text-panel__title { color: var(--c-white); margin-bottom: 22px; max-width: 20ch; }
.text-panel__copy { font-size: clamp(1.05rem, 1.35vw, 1.22rem); line-height: 1.8; max-width: 50ch; }
.text-panel__copy + .text-panel__copy { margin-top: 18px; }
.text-panel__panel,
:where(.text-panel) .gifsa-card--panel { position: relative; background: var(--c-cream); color: var(--c-black); border-radius: 36px 36px 36px 10px; padding: clamp(28px, 3.2vw, 44px); }
.text-panel__panel-title { font-size: var(--fs-h3-panel); font-weight: 700; line-height: 1.25; margin-bottom: 16px; }
.text-panel__panel-copy { font-size: clamp(1.02rem, 1.25vw, 1.16rem); line-height: 1.85; }

/* ---- Call-to-action banner ---- */
.cta-banner { background: var(--c-cream); }
.cta-banner__card,
:where(.cta-banner) .gifsa-card--panel {
	background: var(--c-warm-gold);
	color: var(--c-black);
	border-radius: clamp(28px, 4vw, 52px) clamp(28px, 4vw, 52px) clamp(28px, 4vw, 52px) 12px;
	padding: clamp(30px, 3.4vw, 46px) clamp(28px, 3.4vw, 48px);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: clamp(16px, 1.6vw, 24px);
}
.cta-banner__text { flex: 1 1 min(100%, 620px); max-width: 88ch; }
.cta-banner__title { line-height: 1.12; max-width: 26ch; margin-bottom: 16px; }
.cta-banner__copy { font-size: clamp(1.02rem, 1.25vw, 1.12rem); line-height: 1.7; margin-bottom: 26px; }
.cta-banner__illustration { flex: none; height: clamp(230px, 27vw, 370px); width: auto; margin-left: auto; margin-right: 0; align-self: flex-end; }

/* ---- Get in touch ---- */
.contact { background: var(--c-deep-teal); color: var(--c-white); position: relative; overflow: hidden; }
.contact__grid { position: relative; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: clamp(24px, 3vw, 40px); align-items: stretch; }
.contact__details { display: flex; flex-direction: column; gap: 18px; justify-content: space-between; }
.contact__title { color: var(--c-white); }
.contact__copy { font-size: var(--fs-intro); line-height: 1.7; }
.office-card { background: var(--c-cream); color: var(--c-black); border-radius: 28px 28px 28px 6px; padding: 26px; }
.office-card__name { font-size: var(--fs-h3-office); font-weight: 700; margin-bottom: 12px; }
.office-card__phone { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; font: 700 var(--fs-18)/1 var(--font-heading); color: var(--c-black); }
.office-card__address { font-size: var(--fs-16); line-height: 1.7; margin-top: 8px; }
.contact__buttons { gap: 12px; }
.contact__form,
:where(.contact) .gifsa-card--panel { background: var(--c-cream); color: var(--c-black); border-radius: 36px 36px 36px 8px; padding: clamp(24px, 3vw, 36px); display: flex; flex-direction: column; gap: 18px; }
.contact__form-intro { font-size: var(--fs-16); line-height: 1.7; }

/* ---- Hero, inner page style ---- */
.hero--page { padding: clamp(32px, 5vw, 64px) var(--gutter) clamp(52px, 7vw, 92px); }
.hero--page .hero__grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.hero--page .hero__title { line-height: 1.08; letter-spacing: -.025em; margin-bottom: 22px; max-width: none; }
.hero--page .hero__intro { font-size: clamp(1.1rem, 1.5vw, 1.3rem); max-width: 58ch; }
.hero__media { position: relative; align-self: stretch; min-height: clamp(280px, 38vw, 392px); border-radius: 40px 150px 40px 40px; overflow: hidden; }
.hero__media .hero__image { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0; border-radius: 0; }

/* ---- Breadcrumb (X8) ---- */
.breadcrumb { margin-bottom: 24px; padding-bottom: 14px; border-bottom: 1px solid var(--c-rule); }
.breadcrumb__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 2px 9px; font-size: var(--fs-14); font-weight: 600; color: var(--c-deep-ochre); }
.breadcrumb__link { color: var(--c-deep-ochre); min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; text-decoration: underline; text-underline-offset: 3px; }
.breadcrumb__link:hover { color: var(--c-black); }
.breadcrumb__sep { opacity: .5; }
.breadcrumb__current { display: inline-flex; align-items: center; min-height: 44px; }

/* ---- Service cards, listing layout (Services overview) ---- */
.services--listing { padding-top: 0; padding-bottom: clamp(52px, 7vw, 92px); }
.services--listing .service-card { min-height: 0; }

/* ---- Feature with photos (vehicle fleet) ---- */
.fleet { background: var(--c-warm-gold); color: var(--c-black); padding-top: clamp(52px, 7vw, 92px); padding-bottom: clamp(52px, 7vw, 92px); position: relative; overflow: hidden; }
.fleet__mark { position: absolute; left: -70px; bottom: -110px; width: 330px; height: auto; opacity: .34; }
.fleet__grid { position: relative; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: clamp(28px, 3vw, 48px); align-items: stretch; }
.fleet__text { display: flex; flex-direction: column; gap: 16px; max-width: 58ch; justify-content: center; }
.fleet__title { line-height: 1.08; }
.fleet__intro { font-size: clamp(1.08rem, 1.45vw, 1.25rem); line-height: 1.65; font-weight: 600; }
.fleet__copy { font-size: clamp(1rem, 1.25vw, 1.1rem); line-height: 1.75; }
.fleet__photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(14px, 1.6vw, 20px); align-content: start; }
.fleet__photo { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 24px 24px 24px 6px; }
.fleet__photos > :first-child { grid-column: 1 / -1; aspect-ratio: 16 / 9; border-radius: 28px 28px 28px 8px; }
.fleet__placeholder { background: var(--c-cream); border: 2px dashed var(--c-placeholder-border); display: grid; place-items: center; padding: 16px; }
.fleet__photos > .fleet__placeholder:first-child { padding: 20px; }
.fleet__placeholder-label,
.fleet__placeholder > p { background: var(--c-black); color: var(--c-yellow); font: 700 .6875rem/1.45 var(--font-heading); letter-spacing: .05em; padding: 9px 13px; border-radius: 14px; text-align: center; }
.fleet__photos > :first-child .fleet__placeholder-label,
.fleet__photos > :first-child > p { font-size: .75rem; padding: 10px 14px; }

/* ---- Numbered steps ---- */
.steps { background: var(--c-cream); color: var(--c-black); padding-top: clamp(52px, 7vw, 92px); padding-bottom: clamp(60px, 7vw, 104px); }
.steps__title { color: var(--c-black); margin-bottom: clamp(26px, 3vw, 42px); }
.steps__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; max-width: 880px; }
.step { display: grid; grid-template-columns: 58px 1fr; gap: 0 22px; }
.step__marker { display: flex; flex-direction: column; align-items: center; }
.step__number { flex: none; width: 58px; height: 58px; border-radius: var(--r-pill); display: grid; place-items: center; font: 800 1.5rem/1 var(--font-heading); }
.step__line { flex: 1 1 auto; width: 3px; min-height: 18px; background: var(--c-rule); margin: 8px 0; border-radius: var(--r-pill); }
.step__text { font-size: clamp(1.02rem, 1.3vw, 1.15rem); line-height: 1.7; max-width: 62ch; padding: 15px 0 clamp(24px, 3vw, 38px); }
.step:last-child .step__text { padding-bottom: 0; }

/* ---- Call-to-action band ---- */
.cta-band { background: var(--c-deep-teal); color: var(--c-white); padding-top: clamp(52px, 7vw, 92px); padding-bottom: clamp(52px, 7vw, 92px); position: relative; overflow: hidden; }
.cta-band__motif { position: absolute; right: -40px; top: -30px; width: min(560px, 46%); height: auto; opacity: .14; transform: scaleY(-1); }
.cta-band__inner { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 24px; }
.cta-band__title { line-height: 1.15; max-width: 24ch; color: var(--c-white); }
.cta-band__copy { font-size: var(--fs-intro); line-height: 1.7; max-width: 58ch; }
.cta-band__buttons { justify-content: center; }
.cta-band__buttons .btn { padding: 0 28px; }

/* core-blocks */
/*
 * Core blocks and GIFSA elements.
 *
 * The block library stylesheet is not loaded on the front end (inc/setup.php),
 * so every core block a page may use is styled here. Section appearance comes
 * from the class names in blocks.css (hero, services, stats...), set on each
 * Group or Columns block; this file adapts those rules to core markup.
 */

/* ---- Palette utilities (theme.json palette; global styles are not loaded) ---- */
.has-cream-color { color: var(--c-cream) !important; }
.has-black-color { color: var(--c-black) !important; }
.has-red-orange-color { color: var(--c-red-orange) !important; }
.has-orange-color { color: var(--c-orange) !important; }
.has-deep-ochre-color { color: var(--c-deep-ochre) !important; }
.has-yellow-color { color: var(--c-yellow) !important; }
.has-warm-gold-color { color: var(--c-warm-gold) !important; }
.has-sky-blue-color { color: var(--c-sky-blue) !important; }
.has-teal-color { color: var(--c-teal) !important; }
.has-deep-teal-color { color: var(--c-deep-teal) !important; }
.has-white-color { color: var(--c-white) !important; }
mark.has-inline-color { background: transparent; }

/* ---- Core layout blocks ---- */
.wp-block-columns { display: flex; flex-wrap: wrap !important; align-items: stretch; }
.wp-block-column { flex: 1 1 340px; min-width: 0; }
.wp-block-image { margin: 0; }
.wp-block-image img { height: auto; }
.wp-block-image figcaption { font-size: var(--fs-14); line-height: 1.5; margin-top: 8px; }

/* A level 2 core heading takes the section heading style (the .h2 class). Zero specificity, so section rules still win. */
:where(h2.wp-block-heading) { font-size: var(--fs-h2); font-weight: 700; line-height: 1.1; letter-spacing: -.02em; }

/* ---- Maroon Bush motif (Group setting) ---- */
.has-motif-ochre, .has-motif-white { position: relative; overflow: hidden; }
.has-motif-ochre > :not(.is-motif), .has-motif-white > :not(.is-motif) { position: relative; }
.gifsa-motif { position: absolute; right: -40px; bottom: 0; width: min(620px, 50%); height: auto; opacity: .16; pointer-events: none; }
.gifsa-motif--white { top: 0; bottom: auto; left: -60px; right: auto; width: min(600px, 48%); transform: scaleY(-1) scaleX(-1); }

/* ---- Card (gifsa/card) ---- */
.gifsa-card { position: relative; color: var(--c-black); }

/* Icon in a card or icon list item: a chip in its colour. White icon only on the dark colours (brief 4.2). */
:is(.gifsa-card, .icon-list__item) .wp-block-gifsa-icon { flex: none; display: grid; place-items: center; background: var(--card-colour); color: var(--c-black); }
:is(.gifsa-card, .icon-list__item).has-dark-colour .wp-block-gifsa-icon { color: var(--c-white); }
.wp-block-gifsa-icon svg { display: block; }
/* An uploaded icon fills the same 40px box as the built-in icons, keeping its proportions. */
.wp-block-gifsa-icon img { display: block; width: 40px; height: 40px; object-fit: contain; }

/* Service: white card, colour bar along the top, round icon. */
.gifsa-card--service {
	background: linear-gradient(var(--card-colour), var(--card-colour)) top / 100% 12px no-repeat, var(--c-white);
	border-radius: 26px 26px 26px 6px;
	padding: 34px 24px 26px;
	display: flex;
	flex-direction: column;
	gap: 12px;
	min-height: clamp(340px, 26vw, 400px);
}
.gifsa-card--service .wp-block-gifsa-icon { width: 54px; height: 54px; border-radius: var(--r-pill); }
.gifsa-card--service > :is(h2, h3, h4) { font-size: var(--fs-card-title); font-weight: 700; line-height: 1.25; letter-spacing: normal; }
.gifsa-card--service > p { font-size: var(--fs-15); line-height: 1.6; }
.gifsa-card--service > .wp-block-buttons { margin-top: auto; }
.services--listing .gifsa-card--service { min-height: 0; }

/* Pathway tile: cream, icon square on the left. */
.gifsa-card--pathway {
	background: var(--c-cream);
	border-radius: 26px 26px 26px 8px;
	padding: 26px 28px 26px 106px;
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.gifsa-card--pathway:hover { background: var(--c-white); }
.gifsa-card--pathway .wp-block-gifsa-icon { position: absolute; left: 28px; top: 26px; width: 58px; height: 58px; border-radius: 18px 18px 18px 5px; }
.gifsa-card--pathway > :is(h2, h3, h4),
.gifsa-card--pathway > .pathway__title { font-family: var(--font-heading); font-size: var(--fs-tile-title); font-weight: 700; line-height: 1.25; letter-spacing: normal; }
.gifsa-card--pathway > p:not(.pathway__title) { font-size: var(--fs-15); line-height: 1.6; }
.gifsa-card--pathway .is-style-text-link > .wp-block-button__link,
.gifsa-card--pathway .is-style-text-link > .wp-block-button__link:hover { color: inherit; }
/* A tile with one link is rendered as that link (blocks/card/render.php). */
a.gifsa-card--pathway { text-decoration: none; }
a.gifsa-card--pathway:hover { color: var(--c-black); }

/* Statistic: rule above, figure in the card colour, label below. */
.gifsa-card--stat { border-top: 2px solid var(--c-line); padding-top: 16px; }
.gifsa-card--stat > p:first-child { font: 800 var(--fs-stat)/1.05 var(--font-heading); color: var(--card-colour); margin-bottom: 10px; font-variant-numeric: tabular-nums; }
.gifsa-card--stat > p + p { font-size: var(--fs-15); line-height: 1.55; }

/* Panel: filled with the card colour. A panel inside the feature, text-panel,
 * cta-banner or contact section takes that section's padding and corners from
 * blocks.css; these zero-specificity defaults cover a panel used anywhere else. */
.gifsa-card--panel { background: var(--card-colour); }
.gifsa-card--panel.has-dark-colour { color: var(--c-white); }
:where(.gifsa-card--panel) { border-radius: 36px 36px 36px 10px; padding: clamp(28px, 3.2vw, 44px); }
.wp-block-column > .gifsa-card--panel:only-child { height: 100%; }
/* The banner panel sits straight in its section, so it carries the content width itself. */
.cta-banner > .gifsa-card--panel { max-width: var(--content-max); margin: 0 auto; }

/* ---- Sections built from core blocks ----
 * Gaps, backgrounds and padding come from blocks.css; only what differs in core markup is here. */

/* Hero (inner page style: "hero hero--page", photo in a hero__media column) */
.hero__grid > .wp-block-column { flex-basis: 430px; }
.hero--page .hero__grid > .wp-block-column { flex-basis: 420px; }
.wp-block-image.hero__image { overflow: hidden; }
.wp-block-image.hero__image img { width: 100%; height: 100%; object-fit: cover; }

/* Pathways and services grids are Groups; blocks.css already lays them out. */

/* Statistics: the tab's nub is drawn here rather than as an empty element. */
.stats__tab::after { content: ""; position: absolute; left: clamp(30px, 7%, 124px); bottom: -36px; width: 138px; height: 38px; background: var(--c-warm-gold); border-radius: 0 0 70px 70px; z-index: 2; }

/* Image and text */
.image-text__grid > .wp-block-column { flex-basis: 340px; }
.image-text__media .wp-block-image { position: absolute; inset: 0; }
.image-text__media .wp-block-image img { width: 100%; height: 100%; object-fit: cover; }

/* Feature with image or video */
.feature__grid > .wp-block-column { flex-basis: 360px; }
.wp-block-image.feature__image { position: relative; overflow: hidden; }
.wp-block-image.feature__image img { width: 100%; height: 100%; min-height: inherit; object-fit: cover; }

/* Video with cover image (gifsa/video). The cover fills its frame; in the feature
 * section the frame is the one blocks.css gives .feature__image. The player is
 * added in place by blocks.js and covers the photo. */
.wp-block-gifsa-video { position: relative; overflow: hidden; margin: 0; }
.wp-block-gifsa-video__image { display: block; width: 100%; height: 100%; min-height: inherit; object-fit: cover; }
.wp-block-gifsa-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Text with panel */
.text-panel__grid > .wp-block-column { flex-basis: 340px; }

/* Get in touch */
.contact__grid > .wp-block-column { flex-basis: 320px; }
.gifsa-offices { display: contents; }

/* Feature with photos (vehicle fleet). The text column keeps its 58ch measure on
 * its contents, so the column itself shares the row equally with the photos. */
.fleet__grid > .wp-block-column { flex-basis: 360px; }
@property --fleet-measure { syntax: "<length>"; inherits: true; initial-value: 0px; }
/* Registered, so 58ch resolves to pixels at the column's font size, as the ACF version measured it. */
.fleet__grid > .fleet__text { max-width: none; --fleet-measure: 58ch; }
.fleet__text > * { max-width: var(--fleet-measure); }
.wp-block-image.fleet__photo img { width: 100%; height: 100%; object-fit: cover; }

/* Numbered steps: a numbered List with the "Numbered steps" style. Each step's
 * number colour is a list item setting (has-step-*); the numbers are hidden from
 * screen readers, which announce the list's own numbering. */
ol.is-style-steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; max-width: 880px; counter-reset: step; }
ol.is-style-steps > li {
	--step-colour: var(--c-yellow);
	counter-increment: step;
	position: relative;
	min-height: 92px;
	max-width: calc(62ch + 80px);
	padding: 15px 0 clamp(24px, 3vw, 38px) 80px;
	font-size: clamp(1.02rem, 1.3vw, 1.15rem);
	line-height: 1.7;
}
ol.is-style-steps > li:last-of-type { min-height: 58px; padding-bottom: 0; }
ol.is-style-steps > li::before {
	content: counter(step) / "";
	position: absolute;
	left: 0;
	top: 0;
	width: 58px;
	height: 58px;
	border-radius: var(--r-pill);
	display: grid;
	place-items: center;
	font: 800 1.5rem/1 var(--font-heading);
	background: var(--step-colour);
	color: var(--c-black);
}
ol.is-style-steps > li:not(:last-of-type)::after { content: ""; position: absolute; left: 27.5px; top: 66px; bottom: 8px; width: 3px; background: var(--c-rule); border-radius: var(--r-pill); }
ol.is-style-steps > li.has-step-yellow { --step-colour: var(--c-yellow); }
ol.is-style-steps > li.has-step-sky-blue { --step-colour: var(--c-sky-blue); }
ol.is-style-steps > li.has-step-teal { --step-colour: var(--c-teal); }
ol.is-style-steps > li.has-step-warm-gold { --step-colour: var(--c-warm-gold); }
ol.is-style-steps > li.has-step-orange { --step-colour: var(--c-orange); }
ol.is-style-steps > li.has-step-red-orange { --step-colour: var(--c-red-orange); }

/* Call-to-action band */
.cta-band__buttons .wp-block-button__link { padding: 0 28px; }

/* ==== Service pages ==== */

/* Photo placeholder: a dashed box until the licensed photo arrives (C2: gone before launch). */
.photo-placeholder { background: var(--c-cream); border: 2px dashed var(--c-placeholder-border); display: grid; place-items: center; padding: 16px; }
.photo-placeholder-label, .photo-placeholder > p { background: var(--c-black); color: var(--c-yellow); font: 700 .75rem/1.45 var(--font-heading); letter-spacing: .05em; padding: 10px 14px; border-radius: 14px; text-align: center; }
.hero__media > .photo-placeholder { position: absolute; inset: 0; border-radius: inherit; }
.why__media > .photo-placeholder { position: absolute; inset: 0; border-radius: 32px 32px 8px; }

/* What's included: Deep Teal band with a list of icon tiles. */
.included { background: var(--c-deep-teal); color: var(--c-white); padding: clamp(52px, 7vw, 92px) var(--gutter) clamp(60px, 7vw, 104px); }
.included h2 { color: var(--c-white); }
.included__intro { font-size: var(--fs-intro); line-height: 1.7; margin-bottom: clamp(26px, 3vw, 42px); }
.icon-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(320px, 44%)), 1fr)); gap: clamp(20px, 2.4vw, 30px); }
.icon-list__item { background: var(--c-cream); color: var(--c-black); border-radius: 26px 26px 26px 8px; padding: 26px 28px; display: flex; align-items: center; gap: 20px; }
.icon-list__item .wp-block-gifsa-icon { width: 58px; height: 58px; border-radius: 18px 18px 18px 5px; }
.icon-list__item > p { font-family: var(--font-heading); font-size: 1.06rem; font-weight: 600; line-height: 1.4; }
/* A tile with a second paragraph is a title and a description (Respite: the two types of respite). */
.icon-list__item:has(> p + p) { display: grid; grid-template-columns: 58px minmax(0, 1fr); column-gap: 20px; row-gap: 8px; align-content: center; }
.icon-list__item:has(> p + p) > .wp-block-gifsa-icon { grid-row: 1 / span 2; align-self: center; }
.icon-list__item > p:first-of-type:not(:last-of-type) { font-size: 1.18rem; font-weight: 700; line-height: 1.25; }
.icon-list__item > p + p { font-family: var(--font-body); font-size: var(--fs-15); font-weight: 400; line-height: 1.6; }

/* Why GIFSA: photo beside text on Cream, Maroon Bush top right. */
.why { background: var(--c-cream); color: var(--c-black); padding: clamp(52px, 7vw, 92px) var(--gutter); position: relative; overflow: hidden; }
.why__motif { position: absolute; right: -40px; top: -30px; width: min(520px, 42%); height: auto; opacity: .16; transform: scaleY(-1); pointer-events: none; }
.wp-block-columns.why__grid { gap: clamp(28px, 3.4vw, 56px); }
.why__grid > .wp-block-column { flex-basis: 320px; }
.why__media { position: relative; align-self: stretch; min-height: clamp(260px, 30vw, 360px); }
.why__media .wp-block-image { position: absolute; inset: 0; }
.why__media .wp-block-image img { width: 100%; height: 100%; object-fit: cover; border-radius: 32px 32px 8px; }
.why__text { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; }
.why__title { line-height: 1.12; margin-bottom: 20px; }
.why__copy { font-size: clamp(1.02rem, 1.3vw, 1.15rem); line-height: 1.8; max-width: 56ch; }

/* The GIFSA Difference: the statistics layout, five across from 860px (mockup). */
.trust .stats__grid { grid-template-columns: minmax(0, 1fr); gap: clamp(20px, 2.4vw, 34px) clamp(18px, 1.8vw, 26px); }
@media (min-width: 600px) { .trust .stats__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 860px) { .trust .stats__grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.trust .gifsa-card--stat > p:first-child { font-size: clamp(1.32rem, 2.4vw, 2.5rem); line-height: 1.1; }

/* Participant story: one wide card (Testimonial cards, Featured layout). */
.stories--feature .stories__head { margin-bottom: clamp(26px, 3.4vw, 40px); }
.stories--feature .stories__title { line-height: 1.12; letter-spacing: -.02em; }
.stories__grid--feature { grid-template-columns: minmax(0, 1fr); }
.stories__grid--feature .story-card { border-radius: 36px 36px 36px 12px; }
.stories__grid--feature .story-card__body { padding: clamp(26px, 3vw, 40px); justify-content: center; }
.stories__grid--feature .story-card__summary { font-size: var(--fs-body); }
.stories__grid--feature .story-card__quote { padding: 22px 26px 20px; }
.stories__grid--feature .story-card__glyph { font-size: 3.25rem; }
.stories__grid--feature .story-card__words { font-size: clamp(1.1rem, 1.35vw, 1.28rem); }
.stories__grid--feature .story-card__cite { font-size: var(--fs-body); }

/* FAQ accordion. */
.faqs { background: var(--c-cream); padding: clamp(52px, 7vw, 92px) var(--gutter); }
.faqs__title { line-height: 1.12; margin-bottom: clamp(24px, 3vw, 38px); }
/* Straight after the Cream participant story (no fleet band between, as on Skill-Building) the FAQ drops its top padding, as the mockup does. */
.stories + .faqs { padding-top: 0; }
.faq { display: flex; flex-direction: column; gap: 12px; }
/* No overflow: hidden here: it clipped the toggle's focus ring (drawn outside the button) to nothing (A13). */
.faq__item { border: 1px solid var(--c-faq-border); border-radius: 22px 22px 22px 6px; background: var(--c-white); }
.faq__item:has([aria-expanded="true"]) { border-color: var(--c-deep-teal); }
.faq__question { margin: 0; }
.faq__toggle { width: 100%; background: transparent; border: 0; cursor: pointer; text-align: left; font: 700 clamp(1.02rem, 1.3vw, 1.15rem)/1.45 var(--font-heading); color: var(--c-black); min-height: 64px; padding: 16px 22px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.faq__toggle:focus-visible { border-radius: 22px 22px 22px 6px; }
.faq__icon { flex: none; width: 40px; height: 40px; border-radius: var(--r-pill); border: 2px solid var(--c-black); color: var(--c-black); display: grid; place-items: center; font-size: 1.375rem; line-height: 1; }
.faq__icon::before { content: "+"; }
[aria-expanded="true"] > .faq__icon { background: var(--c-deep-teal); border-color: var(--c-deep-teal); color: var(--c-white); font-size: 1.625rem; }
[aria-expanded="true"] > .faq__icon::before { content: "\2212"; }
.faq__answer { border-top: 1px solid var(--c-line-soft); margin: 0 22px; padding: 18px 0 22px; font-size: var(--fs-16); line-height: 1.7; max-width: 70ch; }
.faq__answer > * + * { margin-top: 12px; }
.faq__answer[hidden] { display: none; }

/* "Is this in my NDIS plan?" callout: a Warm Gold panel with its button to the right. */
.callout { background: var(--c-cream); padding: 0 var(--gutter) clamp(52px, 7vw, 92px); }
:where(.callout) .gifsa-card--panel {
	max-width: var(--content-max);
	margin: 0 auto;
	border-radius: clamp(28px, 4vw, 52px) clamp(28px, 4vw, 52px) clamp(28px, 4vw, 52px) 12px;
	padding: clamp(30px, 3.4vw, 46px) clamp(28px, 3.4vw, 48px);
	display: flex;
	flex-wrap: wrap;
	gap: clamp(22px, 3vw, 44px);
	align-items: center;
	justify-content: space-between;
}
.callout__text { flex: 1 1 520px; min-width: min(100%, 320px); }
.callout__title { line-height: 1.12; margin-bottom: 16px; }
.callout__copy { font-size: clamp(1.02rem, 1.3vw, 1.15rem); line-height: 1.75; max-width: 72ch; }
.callout .wp-block-buttons { flex: none; margin-left: auto; gap: 12px; }
.callout .wp-block-button__link { white-space: nowrap; }

/* "You might also be interested in": service cards after the callout, no top padding. */
.services--related .services__title { line-height: 1.12; margin-bottom: clamp(24px, 3vw, 38px); }

/* A tile band with no intro line (Skill-Building's "at a glance"): the list keeps the intro's spacing. */
.included h2 + .icon-list { margin-top: clamp(26px, 3vw, 42px); }

/* The programs (Skill-Building): Service cards without an icon or link, no minimum height. */
.programs { background: var(--c-cream); padding: clamp(52px, 7vw, 92px) var(--gutter); }
.programs__title { line-height: 1.12; margin-bottom: 10px; }
.programs__intro { font-size: var(--fs-intro); line-height: 1.7; max-width: 70ch; margin-bottom: clamp(24px, 3vw, 38px); }
.programs__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: clamp(16px, 2vw, 24px); }
.programs .gifsa-card--service { min-height: 0; }

/* A second tile list under a sub-heading (The Activity Hub: "Outdoors & Active"). */
.included__subtitle { font-size: clamp(1.2rem, 1.8vw, 1.5rem); font-weight: 700; color: var(--c-white); margin: clamp(30px, 3.6vw, 48px) 0 18px; }

/* Virtual tour (The Activity Hub): text beside placeholder boxes, named for screen readers as the mockup does. */
.tour { background: var(--c-cream); padding: clamp(52px, 7vw, 92px) var(--gutter); }
.wp-block-columns.tour__grid { gap: clamp(24px, 3vw, 40px); align-items: center; }
.tour__grid > .wp-block-column { flex-basis: 320px; }
.tour__copy { font-size: clamp(1.02rem, 1.3vw, 1.15rem); line-height: 1.8; max-width: 56ch; }
.tour__photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(14px, 1.6vw, 20px); align-content: start; }
.tour__photos > .photo-placeholder { border-radius: 24px 24px 24px 6px; aspect-ratio: 4 / 3; }
.tour__photos > .photo-placeholder:first-child { grid-column: 1 / -1; aspect-ratio: 16 / 9; }
.tour__photos .photo-placeholder > p { font-size: .6875rem; padding: 9px 13px; }

/* Our Story: a hero intro with no buttons after it keeps no bottom margin; the
 * "still community-driven" section follows the Cream hero with no top padding;
 * buttons under the Why text sit 30px below it (all as mocked). */
.hero__intro:last-child { margin-bottom: 0; }
.hero + .why { padding-top: 0; }
.why__text .wp-block-buttons { margin-top: 30px; }

/* Purpose, Vision & Values: a Warm Gold panel after a dark band keeps its top
 * padding (Children's Safety Statement, as mocked). */
.is-dark + .callout { padding-top: clamp(52px, 7vw, 92px); }

/* ==== Our Team & Board ====
 * Sections follow the Cream hero and each other with no top padding, as mocked.
 * Cards come from the Team members block (blocks/team). */
.team { background: var(--c-cream); color: var(--c-black); padding: 0 var(--gutter) clamp(52px, 7vw, 92px); }
.team__title { line-height: 1.12; margin-bottom: clamp(24px, 3vw, 38px); }
.team__title:has(+ .team__intro) { margin-bottom: 10px; }
.team__intro { font-size: var(--fs-intro); line-height: 1.7; max-width: 70ch; margin-bottom: clamp(24px, 3vw, 38px); }
.team__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: clamp(16px, 2vw, 24px); }
.team__grid--board { grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); }
.team-card { --card-colour: var(--c-teal); background: var(--c-white); color: var(--c-black); border-radius: 26px 26px 26px 6px; overflow: hidden; display: flex; flex-direction: column; }
.team-card__bar { flex: none; height: 12px; background: var(--card-colour); }
.team-card__body { flex: 1 1 0%; padding: 22px 24px 26px; display: flex; flex-direction: column; gap: 12px; }
.team__grid--board .team-card__body { gap: 6px; }
.team-card__photo { width: 100%; aspect-ratio: 4 / 3; border-radius: 24px 24px 24px 6px; }
img.team-card__photo { height: auto; object-fit: cover; }
.team-card__photo.photo-placeholder > p { font-size: .6875rem; padding: 9px 13px; }
.team-card__name { font-size: var(--fs-card-title); font-weight: 700; line-height: 1.25; }
.team-card__meta, .team-card__bio { font-size: var(--fs-15); line-height: 1.6; }
.team-card__bio > * + * { margin-top: 12px; }
.team-card__role { font-family: var(--font-heading); font-weight: 600; }
.team__grid--management .team-card__role, .team-card__email { color: var(--c-deep-teal); }
/* A 44px target (A9), as the mockup's breadcrumb links are; the mockup's email link was text height. */
.team-card__email { display: inline-flex; align-items: center; min-height: 44px; }

/* ==== Shared by the Who We Are pages ==== */

/* Links inside running text and tiles are 44px targets (A9), as the mockup draws them. */
.icon-list__item a, .callout__copy a, .contact-cards .gifsa-card--service > p a, .key-docs .gifsa-card--service > :is(p, ul) a { display: inline-flex; align-items: center; min-height: 44px; }
.icon-list__item a { color: var(--c-black); }
.callout__copy a[href^="tel:"] { white-space: nowrap; }

/* Download link (blocks/download): the "Learn more" treatment. Hidden until a file is chosen. */
.download__link { display: inline-flex; align-items: center; gap: 9px; min-height: 44px; font: 700 var(--fs-15)/1.45 var(--font-ui); text-transform: uppercase; text-decoration: underline; color: var(--c-black); }
.download__arrow { flex: none; }
.is-dark .download__link { color: var(--c-white); }
.is-dark .download__link:hover { color: var(--c-yellow); }

/* A heading and copy on Cream, no panel (Feedback & Complaints). Sections follow
 * each other with no top padding; a text section after a dark band keeps it. */
.prose { background: var(--c-cream); color: var(--c-black); padding: 0 var(--gutter) clamp(52px, 7vw, 92px); }
.prose:has(+ .prose) { padding-bottom: clamp(34px, 4vw, 54px); }
.is-dark + .prose { padding-top: clamp(52px, 7vw, 92px); }
.prose__title { line-height: 1.12; margin-bottom: 16px; }
.prose__copy { font-size: clamp(1.02rem, 1.3vw, 1.15rem); line-height: 1.8; max-width: 72ch; }
.prose__copy + .prose__copy { margin-top: 14px; }

/* ==== Our Impact ==== */
.hero + .stories { padding-top: 0; }
.stories__heading { line-height: 1.12; margin-bottom: clamp(24px, 3vw, 38px); }
/* Careers: Career Spotlight's heading sits a little further from its card, as mocked. */
.stories--spotlight .stories__heading { margin-bottom: clamp(26px, 3.4vw, 40px); }

/* ==== Key Information: one white card per document ==== */
.key-docs { background: var(--c-cream); padding: 0 var(--gutter) clamp(52px, 7vw, 92px); }
.key-docs__list { display: flex; flex-direction: column; gap: clamp(18px, 2.2vw, 28px); }
.key-docs .gifsa-card--service { min-height: 0; padding: 38px 28px 30px; gap: 14px; }
.key-docs .gifsa-card--service > h2 { font-size: var(--fs-h2); line-height: 1.25; }
.key-docs .gifsa-card--service > h3 { font-size: 1.05rem; line-height: 1.7; margin-top: 6px; }
.key-docs .gifsa-card--service > p { font-size: var(--fs-16); line-height: 1.7; max-width: 72ch; }
.key-docs .gifsa-card--service > ul { margin: 0; padding-left: 1.25em; display: flex; flex-direction: column; gap: 8px; font-size: var(--fs-16); line-height: 1.7; max-width: 72ch; }
.key-docs .gifsa-card--service > .wp-block-buttons { margin-top: 0; }
.key-docs .download { margin-top: 6px; }

/* A callout with a list and its buttons on their own row (Key Information: Additional Information). */
.callout__list { margin: 14px 0; padding-left: 1.25em; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 8px 40px; font-size: var(--fs-16); line-height: 1.7; }
.callout .wp-block-buttons.callout__buttons { flex: 1 1 100%; margin-left: 0; gap: 12px; }

/* ==== Feedback & Complaints ==== */
.feedback-form { background: var(--c-deep-teal); color: var(--c-white); padding: clamp(52px, 7vw, 92px) var(--gutter) clamp(60px, 7vw, 104px); }
.feedback-form__title { font-size: clamp(1.85rem, 6.2vw, 2.8rem); color: var(--c-white); margin-bottom: clamp(24px, 3vw, 38px); }
:where(.feedback-form) .gifsa-card--panel { border-radius: 36px 36px 36px 8px; padding: clamp(24px, 3vw, 36px); }
.feedback-form .download { margin-top: 22px; }
.feedback-form .gform_wrapper.gravity-theme .gform_fields { row-gap: 28px; }
:is(.feedback-form, .referral) .gform_wrapper.gravity-theme :is(.gfield--type-radio, .gfield--type-checkbox) legend.gfield_label { font: 700 1.3rem/1.7 var(--font-heading); margin-bottom: 8px; }
:is(.feedback-form, .referral) .gform_wrapper.gravity-theme .gform_footer { margin-top: 28px; }
:is(.feedback-form, .referral) .gform_wrapper.gravity-theme :is(.gfield_radio, .gfield_checkbox) { display: flex; flex-direction: column; gap: 12px; }
:is(.feedback-form, .referral) .gform_wrapper.gravity-theme .gchoice { display: flex; align-items: center; gap: 12px; min-height: 44px; }
:is(.feedback-form, .referral) .gform_wrapper.gravity-theme .gchoice input:is([type="radio"], [type="checkbox"]) { width: 24px; height: 24px; margin: 0; flex: none; accent-color: var(--c-deep-teal); }
:is(.feedback-form, .referral) .gform_wrapper.gravity-theme .gchoice label { font: 400 var(--fs-16)/1.4 var(--font-body); margin: 0; min-height: 44px; display: flex; align-items: center; cursor: pointer; }
.gform_wrapper.gravity-theme ::placeholder { color: var(--c-hint-text); opacity: 1; }

/* Other ways to provide feedback: Service cards with a heading and contact lines. */
.contact-cards { margin-top: clamp(24px, 3vw, 38px); display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: clamp(16px, 2vw, 24px); }
.contact-cards .gifsa-card--service { min-height: 0; gap: 10px; }

/* ==== NDIS Made Simple ==== */

/* New to the NDIS: "The Basics", Service cards with a heading, text and a link, then two lines of small print. */
.basics { background: var(--c-cream); padding: 0 var(--gutter) clamp(52px, 7vw, 92px); }
.basics__title { line-height: 1.12; margin-bottom: clamp(24px, 3vw, 38px); }
.basics__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: clamp(16px, 2vw, 24px); }
.basics .gifsa-card--service { min-height: 0; }
.basics .gifsa-card--service > p { flex: 1 1 0%; }
.basics__note { margin-top: 10px; font-size: var(--fs-14); line-height: 1.7; color: var(--c-note); max-width: 72ch; }
.basics__grid + .basics__note { margin-top: 18px; }
.basics__note a { color: var(--c-deep-ochre); display: inline-flex; align-items: center; min-height: 44px; } /* 44px target (A9) */
.basics__note a:hover { color: var(--c-black); }

/* A text link straight on the Deep Teal band (Understanding Your NDIS Plan). */
.included .icon-list + .wp-block-buttons { margin-top: 26px; }
.included > .container > .wp-block-buttons .is-style-text-link > .wp-block-button__link { color: var(--c-white); }
.included > .container > .wp-block-buttons .is-style-text-link > .wp-block-button__link:hover { color: var(--c-yellow); }

/* Numbered steps on the Deep Teal band (How to Start): light connector. */
.included h2 + ol.is-style-steps { margin-top: clamp(26px, 3vw, 42px); }
.is-dark ol.is-style-steps > li:not(:last-of-type)::after { background: var(--c-rule-light); }

/* ==== News & Stories (inc/news.php) ==== */
.news { background: var(--c-cream); padding: 0 var(--gutter) clamp(52px, 7vw, 92px); }
.news-list { display: flex; flex-direction: column; gap: clamp(24px, 3vw, 40px); }
.news-pill { align-self: flex-start; background: var(--pill-colour); color: var(--c-black); font: 700 .75rem/1 var(--font-heading); letter-spacing: .08em; text-transform: uppercase; padding: 8px 12px; border-radius: var(--r-pill); }
.news-pill--dark { color: var(--c-white); }
.news-date { font-size: var(--fs-14); color: var(--c-muted); }
.news-more { align-self: flex-start; display: inline-flex; align-items: center; gap: 9px; min-height: 44px; font: 700 var(--fs-15)/1.45 var(--font-ui); text-transform: uppercase; text-decoration: underline; color: var(--c-black); }
.news-more svg { flex: none; }
.news-empty { font-size: var(--fs-copy); }

/* Featured: image beside the text on a wide white card. */
.news-feature { background: var(--c-white); border-radius: 36px 36px 36px 12px; overflow: hidden; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(320px, 45%)), 1fr)); box-shadow: var(--shadow-card); }
.news-feature__media { padding: 14px; display: flex; flex-direction: column; }
.news-feature__image { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 20px; }
.news-feature__body { padding: clamp(26px, 3vw, 40px); display: flex; flex-direction: column; gap: 14px; justify-content: center; }
.news-feature__title { font-size: clamp(1.4rem, 2.2vw, 1.9rem); font-weight: 700; line-height: 1.2; }
.news-feature__excerpt { font-size: var(--fs-16); line-height: 1.7; }

/* Cards */
/* auto-fill, not the mockup's auto-fit: identical with a full grid, and a lone card keeps its column width instead of stretching across the page. */
.news-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: clamp(18px, 2vw, 26px); }
.news-card { background: var(--c-white); border-radius: 26px 26px 26px 6px; overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--shadow-card); }
.news-card__media { padding: 14px 14px 0; }
.news-card__image { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 20px; }
.news-card__body { padding: 20px 24px 24px; display: flex; flex-direction: column; gap: 10px; flex: 1 1 0%; }
.news-card__title { font-size: var(--fs-card-title); font-weight: 700; line-height: 1.3; }
.news-card__excerpt { font-size: var(--fs-15); line-height: 1.6; flex: 1 1 0%; }
.news-list .photo-placeholder > p { font-size: .6875rem; padding: 9px 13px; }

/* Community Events: a Cream panel on Deep Teal holding the calendar (a placeholder until open questions 17 and 36 are answered). */
.events { background: var(--c-deep-teal); color: var(--c-white); padding: clamp(52px, 7vw, 92px) var(--gutter) clamp(60px, 7vw, 104px); }
.events__title { color: var(--c-white); margin-bottom: clamp(24px, 3vw, 38px); }
:where(.events) .gifsa-card--panel { border-radius: 28px 28px 28px 8px; padding: 14px; }
.events .photo-placeholder { aspect-ratio: 21 / 9; border-radius: 20px; }
.events .photo-placeholder > p { font-size: .6875rem; padding: 9px 13px; }

/* The article template (single.php): hero, then the post's text in the site's styles. */
.article__date { margin-top: -8px; }
.hero__text > .news-pill { margin-bottom: 16px; }
.article__body { background: var(--c-cream); padding: 0 var(--gutter) clamp(52px, 7vw, 92px); }
.article__content > * { max-width: 72ch; }
.article__content > * + * { margin-top: 18px; }
.article__content > p, .article__content > ul, .article__content > ol { font-size: clamp(1.02rem, 1.3vw, 1.15rem); line-height: 1.8; }
.article__content > :is(ul, ol) { padding-left: 1.25em; }
.article__content > h2 { margin-top: clamp(32px, 4vw, 48px); line-height: 1.12; }
.article__content > h3 { margin-top: 28px; font-size: var(--fs-card-title); line-height: 1.3; }
.article__content > .wp-block-image { max-width: 100%; }
.article__content > .wp-block-image img { border-radius: 24px 24px 24px 6px; }
.article__content a:not(.wp-block-button__link):not(.download__link) { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; } /* A9 */

/* ==== Friends & Partners ==== */
.partners { background: var(--c-cream); padding: 0 var(--gutter) clamp(52px, 7vw, 92px); }
.partners__title { line-height: 1.12; margin-bottom: clamp(24px, 3vw, 38px); }
.partners__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: clamp(14px, 1.8vw, 20px); }
.partner { aspect-ratio: 1 / 1; border-radius: 24px 24px 24px 6px; display: grid; place-items: center; padding: 16px; }
.partner:not(.photo-placeholder) { background: var(--c-white); }
.partner.photo-placeholder > p { font-size: .6875rem; padding: 9px 13px; }
.partner__link { display: grid; place-items: center; width: 100%; height: 100%; }
.partner__logo { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }

/* ==== For Professionals ==== */

/* Refer a Participant: the referral form on a Cream panel, Deep Teal band, the page's Maroon Bush top right. */
.referral { background: var(--c-deep-teal); color: var(--c-white); padding: clamp(56px, 7vw, 100px) var(--gutter); position: relative; overflow: hidden; }
.referral__motif { position: absolute; right: -40px; top: -30px; width: min(560px, 44%); height: auto; opacity: .14; transform: scaleY(-1); pointer-events: none; }
.referral__title { color: var(--c-white); margin-bottom: clamp(24px, 3vw, 38px); }
:where(.referral) .gifsa-card--panel { border-radius: 36px 36px 36px 8px; padding: clamp(24px, 3vw, 36px); }
.referral .gform_wrapper.gravity-theme .gform_fields { row-gap: 14px; column-gap: 16px; }
/* Each group starts 28px below the last, as the mockup's fieldsets do. */
.referral .gform_wrapper.gravity-theme :is(.gsection, .gfield--type-checkbox) { margin-top: 14px; }
.referral .gform_wrapper.gravity-theme .gsection { padding: 0; border: 0; margin-bottom: -6px; }
.referral .gform_wrapper.gravity-theme .gsection_title { font: 700 1.3rem/1.7 var(--font-heading); margin: 0; }
.referral .gform_wrapper.gravity-theme .gfield_checkbox { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 0 24px; }
.referral .gform_wrapper.gravity-theme .gfield textarea.small { height: 105px; } /* three rows, as mocked */
.referral .gform_wrapper.gravity-theme .gfield--type-radio .gfield_radio { gap: 2px; }

/* Allied Health: the hero's three buttons stacked, as mocked. */
.hero__text .wp-block-buttons.is-stacked { flex-direction: column; align-items: flex-start; gap: 12px; }
.referral .gform_wrapper.gravity-theme .gchoice input:is([type="radio"], [type="checkbox"]) { width: 22px; height: 22px; }
/* Support Coordinators: the hero buttons are narrower (22px sides), so both fit on one row, as mocked. */
.wp-block-buttons.is-compact > .wp-block-button > .wp-block-button__link { padding: 0 22px; }
/* Support Coordinators: "Our Referral Pathway" has even padding and a tighter heading gap than the Services steps, as mocked. */
.steps--pathway { padding-bottom: clamp(52px, 7vw, 92px); }
.steps--pathway .steps__title { line-height: 1.1; margin-bottom: clamp(24px, 3vw, 38px); }

/* ==== Contact Us ==== */
/* The hero's email address: bold link with an envelope, as mocked (the envelope is drawn in CSS, so the paragraph stays plain editable text). */
.hero__email { margin-top: 22px; }
.hero__email a { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; font: 700 var(--fs-18)/1 var(--font-heading); color: var(--c-black); text-underline-offset: 3px; }
.hero__email a::before { content: ""; flex: none; width: 19px; height: 19px; background: currentColor; -webkit-mask: var(--icon-mail) center / contain no-repeat; mask: var(--icon-mail) center / contain no-repeat; }
.hero__email a:hover { color: var(--c-deep-ochre); }
:root { --icon-mail: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.6' y='5.6' width='16.8' height='12.8' rx='2.4'/%3E%3Cpath d='M4.4 7.2 12 13l7.6-5.8'/%3E%3C/svg%3E"); }

/* Our Two Locations: the page's Maroon Bush top right; office cards grow to fill the column, each with its map. */
.contact__motif { position: absolute; right: -40px; top: -30px; width: min(560px, 44%); height: auto; opacity: .14; transform: scaleY(-1); pointer-events: none; }
.contact--page .contact__details { justify-content: flex-start; }
.contact--page .office-card { flex: 1 1 auto; }
.office-card__map { margin-top: 16px; aspect-ratio: 16 / 9; border-radius: 24px 24px 24px 6px; overflow: hidden; background: var(--c-white); }
.office-card__map iframe { display: block; width: 100%; height: 100%; border: 0; }
/* The message box stretches so the form panel matches the offices column, as mocked. */
.contact--page .gifsa-card--panel { height: 100%; }
.contact--page .gform_wrapper, .contact--page .gform_wrapper form, .contact--page .gform-body { flex: 1 1 auto; display: flex; flex-direction: column; }
/* One column here, so the fields stack as a flex column and the message field can take the spare height. */
.contact--page .gform_wrapper.gravity-theme .gform_fields { flex: 1 1 auto; display: flex; flex-direction: column; }
.contact--page .gfield--type-textarea { flex: 1 1 auto; }
.contact--page .gfield--type-textarea { display: flex; flex-direction: column; }
.contact--page .gfield--type-textarea .ginput_container { flex: 1 1 auto; display: flex; flex-direction: column; }
body .contact--page .gform_wrapper.gravity-theme .gfield textarea.medium { height: 130px; min-height: 104px !important; flex: 1 1 130px; } /* four rows, as mocked; grows to fill the panel beside the offices */ /* outranks the 130px in forms.css */
.hero__intro:has(+ .hero__email) { margin-bottom: 0; }

/* ==== Search results (search.php): not designed, built from existing parts (decision 93) ==== */
.hero--search .hero__grid > .hero__text { flex-basis: 100%; max-width: 760px; }
.hero--search .search-form--page { width: 100%; max-width: 640px; margin-top: 22px; }
.hero--search .hero__intro { margin-bottom: 0; }
.search-results .news-card__body { padding-top: 26px; } /* no image area above */
.search-pagination { margin-top: clamp(28px, 4vw, 44px); }
.search-pagination .nav-links { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.search-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 12px; border-radius: var(--r-pill); font: 700 var(--fs-15)/1 var(--font-ui); color: var(--c-black); text-decoration: underline; }
.search-pagination .page-numbers.current { background: var(--c-black); color: var(--c-cream); text-decoration: none; }
.search-pagination .page-numbers:hover:not(.current) { color: var(--c-deep-ochre); }

/* ==== Upcoming events (blocks/events): not designed, built from the card styles (decision 96) ====
 * One event per row (lead, 28 Sep): the date on the left, then name, place and
 * details, then the link. On narrow screens each row stacks. */
.events__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.event-card { background: var(--c-white); color: var(--c-black); border-radius: 20px 20px 20px 6px; padding: 20px 24px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
@media (min-width: 768px) {
	.event-card { grid-template-columns: 220px minmax(0, 1fr) auto; column-gap: 28px; align-items: center; }
	.event-card__link { justify-self: end; }
}
.event-card__date { font: 700 var(--fs-16)/1.4 var(--font-heading); color: var(--c-deep-teal); display: flex; flex-direction: column; }
.event-card__time { font: 400 var(--fs-15)/1.5 var(--font-body); color: var(--c-black); }
.event-card__body { display: flex; flex-direction: column; gap: 4px; }
.event-card__title { font-size: var(--fs-card-title); font-weight: 700; line-height: 1.3; }
.event-card__where { font-size: var(--fs-14); color: var(--c-muted); }
.event-card__details { font-size: var(--fs-15); line-height: 1.6; max-width: 72ch; }

/* forms */
/*
 * Gravity Forms, restyled to the mockup's form treatment: Figtree labels,
 * 52px fields with a 2px border, 14px corners, yellow submit button.
 */
body .gform_wrapper.gravity-theme .gform_fields { row-gap: 18px; }
body .gform_wrapper.gravity-theme .gfield_label,
body .gform_wrapper.gravity-theme .gform-field-label {
	font: 600 var(--fs-16)/1.4 var(--font-heading);
	color: var(--c-black);
	margin-bottom: 7px;
	padding: 0;
}
body .gform_wrapper.gravity-theme input[type="text"],
body .gform_wrapper.gravity-theme input[type="email"],
body .gform_wrapper.gravity-theme input[type="tel"],
body .gform_wrapper.gravity-theme select,
body .gform_wrapper.gravity-theme textarea {
	width: 100%;
	/* !important: Gravity Forms' mobile rules use long :not() chains that outrank any sensible selector (A9). */
	min-height: 52px !important;
	border: 2px solid var(--c-field-border);
	border-radius: 14px;
	background: var(--c-white);
	padding: 0 16px;
	font-size: var(--fs-16);
	font-family: var(--font-body);
	color: var(--c-black);
}
body .gform_wrapper.gravity-theme textarea { padding: 12px 16px; line-height: 1.6; resize: vertical; }
body .gform_wrapper.gravity-theme .gfield textarea.medium,
body .gform_wrapper.gravity-theme .gfield textarea.large { display: block; height: 130px; min-height: 0; }
/* A small box is a block too, so no line-box gap opens beneath it. */
body .gform_wrapper.gravity-theme .gfield textarea.small { display: block; }
body .gform_wrapper.gravity-theme .gform_footer { margin: 18px 0 0; padding: 0; }
body .gform_wrapper.gravity-theme { margin: 0; }
body .gform_wrapper.gravity-theme .gfield_label { display: block; }
body .gform_wrapper.gravity-theme .ginput_container { margin: 0; }
body .gform_wrapper.gravity-theme .gform_footer .btn { min-height: 56px !important; width: auto !important; margin: 0; line-height: 1 !important; font-size: var(--fs-body) !important; padding: 0 30px !important; }

/* Errors */
body .gform_wrapper.gravity-theme .gfield_error input,
body .gform_wrapper.gravity-theme .gfield_error textarea { border-color: var(--c-deep-ochre); }
body .gform_wrapper.gravity-theme .validation_message,
body .gform_wrapper.gravity-theme .gform_validation_errors {
	color: var(--c-black);
	font-size: var(--fs-16);
}
body .gform_wrapper.gravity-theme .gform_validation_errors { border: 2px solid var(--c-deep-ochre); border-radius: 14px; background: var(--c-white); box-shadow: none; }
body .gform_wrapper.gravity-theme .gform_validation_errors > h2 { color: var(--c-black); font-size: var(--fs-16); }
.gform_confirmation_message { font-size: var(--fs-18); line-height: 1.6; }

/* Required indicator: plain text after the label, "Name (required)" as mocked (F3). */
body .gform_wrapper.gravity-theme .gfield_label .gfield_required,
body .gform_wrapper.gravity-theme .gfield_label .gfield_required.gfield_required_custom { color: inherit; font: inherit; font-style: normal; padding-inline-start: 4px; }

