/* Cape Fear Development Group — theme styles
   Design tokens live in theme.json; this file holds layout/component styling.
   Placeholder photography lives in ../images and is referenced as CSS backgrounds,
   so it can be swapped for real project photos without touching templates. */

:root {
	--cfdg-gold: var(--wp--preset--color--gold);
	--cfdg-green: var(--wp--preset--color--primary);
	--cfdg-green-dark: var(--wp--preset--color--primary-dark);
	--cfdg-night: #12241a;
	--cfdg-tint: var(--wp--preset--color--primary-light);
	--cfdg-line: rgba(26, 29, 26, 0.12);
	--cfdg-radius: 6px;
	--cfdg-shadow: 0 1px 2px rgba(15, 30, 20, 0.06), 0 10px 28px rgba(15, 30, 20, 0.07);
	--cfdg-gutter: clamp(1.25rem, 4vw, 2.5rem);
}

/* ---------- Base ---------- */
.wp-site-blocks > * {
	margin-block-start: 0;
	margin-block-end: 0;
}
.wp-site-blocks {
	overflow-x: clip;
}
.cfdg-main > * + * {
	margin-block-start: 0;
}
img {
	max-width: 100%;
	height: auto;
}

.cfdg-accent {
	color: var(--cfdg-gold);
	font-style: italic;
}

/* Eyebrow label with a short accent rule */
.cfdg-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 0.9rem;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-dark);
}
.cfdg-eyebrow::before {
	content: "";
	width: 2.25rem;
	height: 2px;
	background: var(--cfdg-gold);
	flex: none;
}
.cfdg-eyebrow--light {
	color: rgba(255, 255, 255, 0.85);
}
.cfdg-eyebrow--center {
	justify-content: center;
}
.cfdg-eyebrow a {
	text-decoration: none;
	color: inherit;
}

/* ---------- Buttons ---------- */
.wp-block-button.is-style-gold .wp-block-button__link {
	background: var(--cfdg-gold);
	color: var(--cfdg-green-dark);
}
.wp-block-button.is-style-gold .wp-block-button__link:hover {
	background: #dab63a;
	color: var(--cfdg-green-dark);
}
.wp-block-button.is-style-ghost-light .wp-block-button__link {
	background: transparent;
	color: #fff;
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55);
}
.wp-block-button.is-style-ghost-light .wp-block-button__link:hover {
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
}
.wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent;
	color: var(--cfdg-green);
	box-shadow: inset 0 0 0 1px var(--cfdg-green);
}
.wp-block-button .wp-block-button__link:focus-visible,
.cfdg-form button:focus-visible {
	outline: 3px solid var(--cfdg-gold);
	outline-offset: 2px;
}

/* ---------- Header ---------- */
/* The sticky behaviour lives on the template-part wrapper: a sticky element only sticks within its
   parent, and .cfdg-header's parent is just as tall as the header itself. */
header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 50;
}
.admin-bar header.wp-block-template-part {
	top: var(--wp-admin--admin-bar--height, 32px);
}
.cfdg-header {
	/* No backdrop-filter here: it would trap the fixed mobile-menu overlay inside the header */
	background: #fff;
	border-bottom: 1px solid var(--cfdg-line);
	padding: 0.7rem var(--cfdg-gutter);
}
.cfdg-header__bar {
	gap: 1rem 1.5rem;
	flex-wrap: nowrap !important;
}
.cfdg-brand {
	gap: 0.75rem;
	align-items: center;
	flex: none;
}
.cfdg-brand .wp-block-site-logo img {
	display: block;
	width: clamp(130px, 18vw, 190px);
	height: auto;
}
.cfdg-wordmark {
	font-size: 1.1rem;
	line-height: 1.1;
	max-width: 14rem;
}
/* The logo already contains the company name */
.cfdg-brand:has(.wp-block-site-logo img) .cfdg-wordmark {
	display: none;
}
.cfdg-header__nav {
	gap: 1.5rem;
	align-items: center;
	flex-wrap: nowrap !important;
}
.cfdg-header__cta .wp-block-button__link {
	padding: 0.8rem 1.3rem;
	white-space: nowrap;
}
/* The quote button moves into the sticky mobile bar on small screens */
@media (max-width: 900px) {
	.cfdg-header__cta {
		display: none !important;
	}
}

/* Mobile menu overlay */
.wp-block-navigation__responsive-container.is-menu-open {
	background: var(--cfdg-night) !important;
	color: #fff !important;
	padding: 2rem var(--cfdg-gutter) !important;
}
.wp-block-navigation__responsive-container.is-menu-open a {
	color: #fff !important;
	font-family: var(--wp--preset--font-family--serif);
	font-size: 1.75rem;
	letter-spacing: 0;
	text-transform: none;
}
.wp-block-navigation__responsive-container-open svg,
.wp-block-navigation__responsive-container-close svg {
	width: 28px;
	height: 28px;
}
.wp-block-navigation__responsive-container-open {
	padding: 0.4rem;
	border-radius: 50%;
	background: var(--cfdg-green-dark);
	color: #fff;
}

/* ---------- Hero ---------- */
.cfdg-hero {
	position: relative;
	isolation: isolate;
	min-height: min(88vh, 780px);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: clamp(3.5rem, 8vw, 7rem) var(--cfdg-gutter) 0;
	color: #fff;
	background:
		radial-gradient(900px 420px at 15% 10%, rgba(53, 94, 59, 0.55), transparent 65%),
		var(--cfdg-night);
}
.cfdg-hero > * {
	width: 100%;
	max-width: var(--wp--style--global--wide-size, 1200px);
	margin-inline: auto;
}
/* Building photo (an editable Image block), fading into the dark green on the left */
.cfdg-hero > .cfdg-hero__photo {
	position: absolute;
	inset: 0 0 0 36%;
	z-index: -1;
	width: auto;
	max-width: none;
	margin: 0;
	-webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 42%);
	mask-image: linear-gradient(90deg, transparent 0%, #000 42%);
}
.cfdg-hero__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}
/* Dark fade along the bottom so the licensed-states row stays readable over the bright photo */
.cfdg-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background: linear-gradient(0deg, rgba(6, 33, 21, 0.96) 0%, rgba(6, 33, 21, 0.82) 14%, rgba(6, 33, 21, 0) 38%);
}
/* Faint blueprint grid on the dark side */
.cfdg-hero::before {
	content: "";
	position: absolute;
	inset: 0 40% 0 0;
	z-index: -1;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
	background-size: 64px 64px;
}
.cfdg-hero h1,
.cfdg-hero .cfdg-hero__title {
	color: #fff;
	font-size: clamp(2.5rem, 6.4vw, 5rem);
	max-width: 11ch;
	line-height: 1.04;
	margin: 0 0 1.5rem;
}
.cfdg-hero__lead {
	max-width: 30rem;
	font-size: clamp(1.02rem, 1.5vw, 1.2rem);
	color: rgba(255, 255, 255, 0.9);
}
.cfdg-hero__inner {
	padding-bottom: clamp(2.5rem, 6vw, 5rem);
}
.cfdg-hero .wp-block-buttons {
	margin-top: 2rem;
	gap: 0.75rem;
}

/* Develop / Invest / Construct / Sustain, top right */
.cfdg-hero__pillars.cfdg-hero__pillars {
	position: absolute;
	top: clamp(4rem, 8vw, 7rem);
	right: var(--cfdg-gutter);
	width: auto;
	max-width: none;
	margin: 0;
	padding-left: 1.25rem;
	border-left: 1px solid rgba(255, 255, 255, 0.45);
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
}
.cfdg-hero__pillars p {
	margin: 0 0 0.6rem;
}
@media (max-width: 1100px) {
	.cfdg-hero__pillars.cfdg-hero__pillars {
		display: none;
	}
}

/* Licensed-states bar. The label and every state are cells of ONE grid, so the rows always come out
   even: 2 columns on phones, 4 on tablets, a single row on wide screens. A name never splits across lines. */
.cfdg-states.cfdg-states {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.7rem 1rem;
	align-items: center;
	padding: 1.25rem 0;
	border-top: 1px solid rgba(255, 255, 255, 0.28);
	font-size: 0.68rem;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-shadow: 0 1px 4px rgba(0, 0, 0, 0.7);
}
.cfdg-states.cfdg-states > * {
	margin: 0;
}
/* The list paragraph steps aside so its states become cells of the grid above */
.cfdg-states__list {
	display: contents;
}
.cfdg-states__label {
	color: var(--cfdg-gold);
	font-weight: 600;
}
.cfdg-states__item {
	color: #fff;
	white-space: nowrap;
}
@media (min-width: 600px) {
	.cfdg-states.cfdg-states {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		font-size: 0.72rem;
	}
}
@media (min-width: 1000px) {
	.cfdg-states.cfdg-states {
		display: flex;
		flex-wrap: wrap;
		gap: 0.4rem 1.5rem;
		letter-spacing: 0.14em;
	}
	.cfdg-states__list {
		display: flex;
		flex-wrap: wrap;
		gap: 0.4rem 1.5rem;
	}
}

@media (max-width: 781px) {
	.cfdg-hero {
		min-height: 0;
		padding-top: 3.5rem;
	}
	/* Photo sits behind the text on phones, with the dark wash from the top */
	.cfdg-hero > .cfdg-hero__photo {
		inset: 0;
		opacity: 0.55;
		-webkit-mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.35) 0%, #000 100%);
		mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.35) 0%, #000 100%);
	}
	.cfdg-hero__photo img {
		object-position: 68% center;
	}
	.cfdg-hero::before {
		display: none;
	}
	.cfdg-hero::after {
		background: linear-gradient(0deg, rgba(6, 33, 21, 0.97) 0%, rgba(6, 33, 21, 0.85) 22%, rgba(6, 33, 21, 0) 52%);
	}
	.cfdg-hero h1,
	.cfdg-hero .cfdg-hero__title {
		max-width: none;
	}
	.cfdg-hero .wp-block-buttons {
		flex-direction: column;
		align-items: stretch;
	}
	.cfdg-hero .wp-block-button__link {
		display: block;
		text-align: center;
	}
}

/* ---------- Sections ---------- */
.cfdg-section {
	padding: clamp(3rem, 7vw, 6rem) var(--cfdg-gutter);
}
.cfdg-section--tint {
	background: var(--cfdg-tint);
}
.cfdg-section-head.cfdg-section-head {
	display: grid;
	grid-template-columns: 1.2fr 1fr;
	gap: 1.5rem 4rem;
	align-items: end;
	margin-bottom: 2.5rem;
}
.cfdg-section-head h2 {
	margin: 0;
	font-size: clamp(1.9rem, 3.6vw, 2.9rem);
}
.cfdg-section-head__text {
	color: var(--wp--preset--color--muted);
	font-size: 1.1rem;
	border-left: 2px solid var(--cfdg-gold);
	padding-left: 1.25rem;
}
.cfdg-section .alignwide > .cfdg-section-head__text,
.cfdg-section > .cfdg-section-head__text {
	max-width: 52rem;
}
@media (max-width: 781px) {
	.cfdg-section-head.cfdg-section-head {
		grid-template-columns: 1fr;
		margin-bottom: 1.75rem;
	}
}

.cfdg-split {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 2.5rem 4rem;
	align-items: start;
}
.cfdg-split--form {
	grid-template-columns: 5fr 6fr;
}
.cfdg-split--project {
	grid-template-columns: 2fr 1fr;
}
.cfdg-split > * {
	min-width: 0;
}
.cfdg-split h2 {
	font-size: clamp(1.7rem, 3.2vw, 2.4rem);
}
@media (max-width: 900px) {
	.cfdg-split,
	.cfdg-split--form,
	.cfdg-split--project {
		grid-template-columns: 1fr;
		gap: 2rem;
	}
}

/* ---------- Cards + grids ---------- */
.cfdg-grid.cfdg-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.5rem;
	margin-top: 2rem;
}
.cfdg-grid.cfdg-grid > * {
	margin: 0;
}
@media (max-width: 960px) {
	.cfdg-grid.cfdg-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 640px) {
	.cfdg-grid.cfdg-grid {
		grid-template-columns: 1fr;
	}
}

.cfdg-card {
	background: #fff;
	border: 1px solid var(--cfdg-line);
	border-radius: var(--cfdg-radius);
	padding: 1.75rem;
	box-shadow: var(--cfdg-shadow);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.cfdg-card > * + * {
	margin-block-start: 0.75rem;
}
.cfdg-card h3 {
	margin: 0;
}
.cfdg-card p {
	color: var(--wp--preset--color--muted);
	font-size: 0.97rem;
}
.cfdg-card__link a {
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--wp--preset--color--gold-dark);
}
.cfdg-card__link a:hover {
	text-decoration: underline;
}

/* Services: four wide cards (photo left), two per row */
.cfdg-services.cfdg-services {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: 1.5rem;
}
.cfdg-services.cfdg-services > .cfdg-service {
	grid-column: span 2;
	margin: 0;
}
.cfdg-services.cfdg-services > .cfdg-service--wide {
	grid-column: span 3;
}
.cfdg-service {
	display: flex;
	flex-direction: column;
	padding: 0;
	overflow: hidden;
	background: #fff;
}
.cfdg-service:hover,
.cfdg-project-card:hover,
.cfdg-post-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 2px 4px rgba(15, 30, 20, 0.08), 0 18px 40px rgba(15, 30, 20, 0.14);
}
.cfdg-card__media {
	flex: none;
	margin: 0;
	aspect-ratio: 16 / 9;
	background: var(--cfdg-green);
	overflow: hidden;
}
.cfdg-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cfdg-service__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1.5rem 1.5rem 1.4rem;
}
.cfdg-service__body > * {
	margin: 0;
}
.cfdg-service__body > * + * {
	margin-top: 0.75rem;
}
.cfdg-service__body .cfdg-card__link {
	margin-top: auto;
	padding-top: 0.5rem;
}
/* Icon badge before each service title */
.cfdg-service h3 {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	font-size: 1.3rem;
}
.cfdg-service h3::before {
	content: "";
	flex: none;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	background: var(--cfdg-icon) center / 52% no-repeat, var(--cfdg-tint);
}
.cfdg-service--commercial { --cfdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23355E3B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='3' width='14' height='18' rx='1'/%3E%3Cpath d='M9 7h2M13 7h2M9 11h2M13 11h2M9 15h2M13 15h2M10 21v-3h4v3'/%3E%3C/svg%3E"); }
.cfdg-service--industrial { --cfdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23355E3B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21V10l6 3V10l6 3V5h3v16z'/%3E%3Cpath d='M7 17h2M12 17h2M16 17h1'/%3E%3C/svg%3E"); }
.cfdg-service--marine { --cfdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23355E3B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='5' r='2'/%3E%3Cpath d='M12 7v14M7.5 11h9M5 15c0 3 3 6 7 6s7-3 7-6'/%3E%3C/svg%3E"); }
.cfdg-service--residential { --cfdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23355E3B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 11l9-8 9 8'/%3E%3Cpath d='M5 10v10h14V10M10 20v-6h4v6'/%3E%3C/svg%3E"); }

@media (min-width: 961px) {
	.cfdg-service--wide {
		flex-direction: row;
	}
	.cfdg-service--wide .cfdg-card__media {
		flex: 0 0 42%;
		aspect-ratio: auto;
		min-height: 15rem;
	}
	.cfdg-service--wide .cfdg-service__body {
		justify-content: center;
	}
}
@media (max-width: 960px) {
	.cfdg-services.cfdg-services {
		grid-template-columns: repeat(2, 1fr);
	}
	.cfdg-services.cfdg-services > .cfdg-service,
	.cfdg-services.cfdg-services > .cfdg-service--wide {
		grid-column: span 1;
	}
}
@media (max-width: 640px) {
	.cfdg-services.cfdg-services {
		grid-template-columns: 1fr;
	}
	.cfdg-services.cfdg-services > .cfdg-service,
	.cfdg-services.cfdg-services > .cfdg-service:last-child {
		grid-column: 1 / -1;
	}
}

/* Project / post cards: photo bleeds to the card edges; a gradient stands in until a photo is set */
.cfdg-project-card,
.cfdg-post-card {
	padding: 1.5rem;
	overflow: hidden;
	display: flex;
	flex-direction: column;
}
/* Doubled class: WordPress's ":first-child { margin-top: 0 }" layout rule has equal weight and loads later */
.cfdg-project-card.cfdg-project-card > .wp-block-post-featured-image,
.cfdg-post-card.cfdg-post-card > .wp-block-post-featured-image {
	margin: -1.5rem -1.5rem 1.25rem;
}
.cfdg-project-card:not(:has(.wp-block-post-featured-image img))::before,
.cfdg-post-card:not(:has(.wp-block-post-featured-image img))::before {
	content: "";
	display: block;
	height: 10rem;
	margin: -1.5rem -1.5rem 1.25rem;
	border-bottom: 3px solid var(--cfdg-gold);
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.07) 1px, transparent 1px),
		linear-gradient(135deg, var(--cfdg-green-dark), var(--cfdg-green));
	background-size: 32px 32px, 32px 32px, auto;
}
.cfdg-project-card .wp-block-post-title,
.cfdg-post-card .wp-block-post-title {
	margin: 0.25rem 0 0.5rem;
}
.cfdg-project-card .wp-block-post-title a,
.cfdg-post-card .wp-block-post-title a {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}
.cfdg-project-card .wp-block-post-featured-image img,
.cfdg-post-card .wp-block-post-featured-image img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	display: block;
}

/* Project facts */
.cfdg-project-main > * + * {
	margin-block-start: 1.5rem;
}
.cfdg-project-main .wp-block-post-featured-image img {
	width: 100%;
	border-radius: var(--cfdg-radius);
	object-fit: cover;
	display: block;
}
.cfdg-fact-label {
	margin: 1rem 0 0 !important;
	font-size: 0.7rem !important;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-dark) !important;
}
.cfdg-fact-label + p {
	margin-top: 0.15rem;
	color: var(--wp--preset--color--ink);
}
.cfdg-facts .wp-block-buttons {
	margin-top: 1.5rem;
}

/* ---------- Stats ---------- */
.cfdg-stats {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1.5rem;
	text-align: center;
}
.cfdg-stat > * {
	margin: 0;
}
.cfdg-stat__num {
	font-family: var(--wp--preset--font-family--sans);
	font-weight: 300;
	letter-spacing: -0.02em;
	font-size: clamp(2.5rem, 5vw, 3.75rem);
	line-height: 1;
	font-variant-numeric: lining-nums; /* Playfair defaults to old-style figures */
	color: var(--cfdg-green);
}
.cfdg-stat__label {
	margin-top: 0.6rem !important;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.cfdg-stat + .cfdg-stat {
	border-left: 1px solid var(--cfdg-line);
}
@media (max-width: 700px) {
	.cfdg-stats {
		grid-template-columns: repeat(2, 1fr);
		row-gap: 2rem;
	}
	.cfdg-stat:nth-child(3) {
		border-left: 0;
	}
}

/* ---------- Checklist ---------- */
.cfdg-checklist {
	list-style: none;
	padding: 0;
	margin: 1rem 0 0;
	display: grid;
	gap: 0.65rem;
}
.cfdg-checklist li {
	position: relative;
	padding-left: 1.75rem;
}
.cfdg-checklist li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.5em;
	width: 0.9rem;
	height: 0.5rem;
	border-left: 2px solid var(--cfdg-green);
	border-bottom: 2px solid var(--cfdg-green);
	transform: rotate(-45deg) translateY(-30%);
}

/* About teaser: support offerings, grouped */
.cfdg-offerings.cfdg-offerings {
	display: grid;
	gap: 0;
}
.cfdg-offerings > h3 {
	margin: 0 0 0.5rem;
}
.cfdg-offer.cfdg-offer {
	display: grid;
	grid-template-columns: 2.75rem 1fr;
	column-gap: 1rem;
	padding: 1.25rem 0;
	border-top: 1px solid var(--cfdg-line);
	margin: 0;
}
.cfdg-offer > * {
	grid-column: 2;
	margin: 0;
}
.cfdg-offer h4 {
	font-size: 1.15rem;
	position: relative;
}
.cfdg-offer h4::before {
	content: "";
	position: absolute;
	left: -3.75rem;
	top: -0.15rem;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	background: var(--cfdg-icon) center / 52% no-repeat, var(--cfdg-tint);
}
.cfdg-offer__text {
	margin-top: 0.25rem;
	color: #5b6b60;
	font-size: 0.95rem;
}
.cfdg-offer .cfdg-checklist {
	margin-top: 0.75rem;
	gap: 0.4rem;
}
.cfdg-offer--licensing { --cfdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23355E3B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='16' height='13' rx='2'/%3E%3Cpath d='M8 8h8M8 11h5'/%3E%3Cpath d='M9 16l-1.5 5 4.5-2 4.5 2L15 16'/%3E%3C/svg%3E"); }
.cfdg-offer--permits { --cfdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23355E3B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='4' width='14' height='17' rx='2'/%3E%3Cpath d='M9 4V3h6v1M9 11l2 2 4-4M9 17h6'/%3E%3C/svg%3E"); }
.cfdg-offer--working { --cfdg-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23355E3B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12l4-4 4 3 3-3 7 6-5 5-3-2-2 2-4-3z'/%3E%3C/svg%3E"); }

/* ---------- Clients ---------- */
.cfdg-logos {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 1rem 2.75rem;
	margin: 1.5rem 0 0;
	padding: 0;
}
.cfdg-logo {
	margin: 0;
	font-family: var(--wp--preset--font-family--serif);
	font-size: 1.25rem;
	color: rgba(26, 29, 26, 0.45);
}
.cfdg-logo a {
	color: inherit;
	text-decoration: none;
}
.cfdg-logo__img {
	display: block;
	width: auto;
	height: 2.75rem;
	max-width: 9rem;
	object-fit: contain;
	mix-blend-mode: multiply; /* any leftover white background disappears into the page */
	filter: grayscale(1);
	opacity: 0.62;
	transition: filter 0.25s ease, opacity 0.25s ease;
}
.cfdg-logo:hover .cfdg-logo__img {
	filter: none;
	opacity: 1;
}
.cfdg-logo a:hover .cfdg-logo__img {
	filter: none;
	opacity: 1;
}
@media (max-width: 600px) {
	.cfdg-logos {
		gap: 0.75rem 1.5rem;
	}
	.cfdg-logo {
		font-size: 1.05rem;
	}
	.cfdg-logo__img {
		height: 2.2rem;
		max-width: 6.5rem;
	}
}

/* ---------- Team ---------- */
.cfdg-member {
	padding: 0;
	overflow: hidden;
}
.cfdg-member > * + * {
	margin-block-start: 0;
}
.cfdg-member .cfdg-member__photo {
	margin: 0;
}
.cfdg-member__photo img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: center 20%;
}
/* No photo uploaded yet: initials on a green tile, same shape as a photo */
.cfdg-member__initials {
	display: grid;
	place-items: center;
	width: 100%;
	aspect-ratio: 4 / 5;
	background: linear-gradient(135deg, var(--cfdg-green-dark), var(--cfdg-green));
	font-family: var(--wp--preset--font-family--serif);
	font-size: clamp(3rem, 8vw, 4.5rem);
	letter-spacing: 0.04em;
	color: var(--cfdg-gold);
}
.cfdg-member__body {
	padding: 1.5rem;
}
.cfdg-member__body > * {
	margin: 0;
}
.cfdg-member__body > * + * {
	margin-top: 0.6rem;
}
.cfdg-member__role {
	font-size: 0.72rem !important;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-dark) !important;
}

/* ---------- CTA band ---------- */
.cfdg-cta {
	position: relative;
	isolation: isolate;
	padding: clamp(3rem, 6vw, 5rem) var(--cfdg-gutter);
	color: #fff;
	background: var(--cfdg-night);
}
/* Faded building photo on the right, like the reference */
.cfdg-cta::after {
	content: "";
	position: absolute;
	inset: 0 0 0 45%;
	z-index: -1;
	background: url("../images/hero.jpg") center 30% / cover no-repeat;
	opacity: 0.28;
	filter: grayscale(0.6);
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 60%);
	mask-image: linear-gradient(90deg, transparent, #000 60%);
}
.cfdg-cta__inner {
	display: grid;
	grid-template-columns: 1.2fr 1fr;
	gap: 2rem 4rem;
	align-items: center;
}
.cfdg-cta h2 {
	color: #fff;
	margin: 0;
	font-size: clamp(2rem, 4.2vw, 3.1rem);
}
.cfdg-cta__action > * + * {
	margin-top: 1.25rem;
}
.cfdg-cta p {
	color: rgba(255, 255, 255, 0.88);
}
@media (max-width: 781px) {
	.cfdg-cta__inner {
		grid-template-columns: 1fr;
	}
	.cfdg-cta::after {
		inset: 0;
		opacity: 0.18;
		-webkit-mask-image: none;
		mask-image: none;
	}
	.cfdg-cta .wp-block-button__link {
		display: block;
		text-align: center;
	}
}

/* ---------- Page header band ---------- */
.cfdg-pagehead {
	position: relative;
	isolation: isolate;
	padding: clamp(3rem, 6vw, 5rem) var(--cfdg-gutter);
	color: #fff;
	background: var(--cfdg-night);
}
.cfdg-pagehead::after {
	content: "";
	position: absolute;
	inset: 0 0 0 50%;
	z-index: -1;
	background: url("../images/hero.jpg") center 35% / cover no-repeat;
	opacity: 0.4;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 70%);
	mask-image: linear-gradient(90deg, transparent, #000 70%);
}
.cfdg-pagehead .wp-block-post-title,
.cfdg-pagehead h1 {
	color: #fff;
	margin: 0;
	font-size: clamp(2.2rem, 5vw, 3.5rem);
}
.cfdg-pagehead .cfdg-eyebrow,
.cfdg-pagehead .cfdg-eyebrow a,
.cfdg-pagehead .wp-block-post-date {
	color: var(--cfdg-gold);
}
@media (max-width: 781px) {
	.cfdg-pagehead::after {
		inset: 0;
		opacity: 0.18;
		-webkit-mask-image: none;
		mask-image: none;
	}
}

/* ---------- About page ---------- */
.cfdg-member__link a {
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--cfdg-green);
}
.cfdg-member__link a:hover {
	text-decoration: underline;
}

/* Licensed-states tile map */
.cfdg-split--map {
	grid-template-columns: 5fr 6fr;
	align-items: center;
}
@media (max-width: 900px) {
	.cfdg-split--map {
		grid-template-columns: 1fr;
	}
}
.cfdg-map-card {
	padding: clamp(1rem, 2.5vw, 2rem);
}
/* The map and the brand logos share a background, so close up the gap between them */
.cfdg-section:has(.cfdg-map-card) {
	padding-bottom: clamp(1.5rem, 3vw, 2.5rem);
}
.cfdg-statemap {
	display: grid;
	grid-template-columns: repeat(11, 1fr);
	gap: 0.3rem;
}
.cfdg-statemap__tile {
	display: grid;
	place-items: center;
	aspect-ratio: 1;
	border-radius: 4px;
	background: #e6ebe6;
	color: #8a948b;
	font-size: clamp(0.5rem, 1.15vw, 0.72rem);
	font-weight: 600;
	letter-spacing: 0.02em;
}
.cfdg-statemap__tile.is-licensed {
	background: var(--cfdg-green);
	color: #fff;
	font-weight: 700;
}
.cfdg-statemap__tile.is-hq {
	background: var(--cfdg-green-dark);
	box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--cfdg-gold);
	position: relative;
	z-index: 1;
}
.cfdg-statemap__legend.cfdg-statemap__legend {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
	margin: 1.25rem 0 0;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
/* Each swatch stays with its label, so "Headquarters" can never drop to its own line away from its marker */
.cfdg-statemap__item {
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	white-space: nowrap;
}
.cfdg-statemap__key {
	flex: none;
	display: inline-block;
	width: 0.85rem;
	height: 0.85rem;
	border-radius: 3px;
}
@media (max-width: 480px) {
	.cfdg-statemap__legend.cfdg-statemap__legend {
		gap: 0.5rem 1rem;
		font-size: 0.7rem;
		letter-spacing: 0.06em;
	}
}
@media (max-width: 360px) {
	.cfdg-statemap__legend.cfdg-statemap__legend {
		font-size: 0.66rem;
		letter-spacing: 0.04em;
		gap: 0.5rem 0.75rem;
	}
	.cfdg-statemap__item {
		gap: 0.4rem;
	}
}
.cfdg-statemap__key.is-licensed {
	background: var(--cfdg-green);
}
.cfdg-statemap__key.is-hq {
	background: var(--cfdg-green-dark);
	box-shadow: 0 0 0 2px #fff, 0 0 0 3.5px var(--cfdg-gold);
}

/* ---------- Contact + steps ---------- */
.cfdg-contact > * + * {
	margin-block-start: 0.35rem;
}
.cfdg-steps > * + * {
	margin-block-start: 1.25rem;
}
.cfdg-step {
	display: flex;
	gap: 1rem;
	align-items: flex-start;
}
.cfdg-step > * {
	margin: 0;
}
.cfdg-step__num {
	flex: none;
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 50%;
	background: var(--cfdg-green);
	color: #fff;
	font-weight: 600;
	font-size: 0.9rem;
}
.cfdg-step__title {
	font-weight: 600;
	margin: 0 0 0.15rem !important;
}

/* ---------- Quote form ---------- */
.cfdg-form-card {
	padding: clamp(1.25rem, 3vw, 2.5rem);
}
.cfdg-form p {
	margin: 0 0 1.1rem;
	color: var(--wp--preset--color--ink);
}
.cfdg-form__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 1.25rem;
}
@media (max-width: 600px) {
	.cfdg-form__row {
		grid-template-columns: 1fr;
	}
}
.cfdg-form label {
	display: block;
	margin-bottom: 0.35rem;
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.04em;
}
.cfdg-form .req {
	color: #a33;
}
.cfdg-form input[type="text"],
.cfdg-form input[type="email"],
.cfdg-form input[type="tel"],
.cfdg-form select,
.cfdg-form textarea {
	width: 100%;
	padding: 0.8rem 0.9rem;
	font: inherit;
	font-size: 1rem; /* 16px+ stops iOS zooming on focus */
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--base);
	border: 1px solid rgba(26, 29, 26, 0.28);
	border-radius: 3px;
	box-sizing: border-box;
}
.cfdg-form input:focus,
.cfdg-form select:focus,
.cfdg-form textarea:focus {
	outline: 3px solid rgba(201, 162, 39, 0.5);
	outline-offset: 0;
	border-color: var(--cfdg-green);
}
.cfdg-form button[type="submit"] {
	cursor: pointer;
	border: 0;
	padding: 1rem 2.25rem;
	background: var(--cfdg-green);
	color: #fff;
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	border-radius: 3px;
}
.cfdg-form button[type="submit"]:hover {
	background: var(--cfdg-green-dark);
}
@media (max-width: 600px) {
	.cfdg-form button[type="submit"] {
		width: 100%;
	}
}
.cfdg-form__note {
	margin: 0 !important;
	font-size: 0.8rem;
	color: var(--wp--preset--color--muted) !important;
}
/* Honeypot: hidden from people and assistive tech */
.cfdg-form__trap {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
.cfdg-form__notice {
	margin-bottom: 1.25rem;
	padding: 1rem 1.25rem;
	border-radius: 3px;
	border-left: 4px solid;
}
.cfdg-form__notice--success {
	background: var(--cfdg-tint);
	border-color: var(--cfdg-green);
	color: var(--cfdg-green-dark);
}
.cfdg-form__notice--error {
	background: #fbeeee;
	border-color: #a33;
	color: #6b1c1c;
}

/* ---------- Footer ---------- */
.cfdg-footer {
	padding: clamp(3rem, 6vw, 4.5rem) var(--cfdg-gutter) 1.5rem;
	background: var(--cfdg-night);
	color: rgba(255, 255, 255, 0.78);
	font-size: 0.95rem;
}
.cfdg-footer a {
	color: rgba(255, 255, 255, 0.9);
	text-decoration: none;
}
.cfdg-footer a:hover {
	color: var(--cfdg-gold);
	text-decoration: underline;
}
.cfdg-footer__grid {
	display: grid;
	grid-template-columns: 1.3fr 0.8fr 1.3fr 1.2fr;
	gap: 2.5rem;
	padding-bottom: 2.5rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.14);
}
.cfdg-footer__col > * {
	margin: 0 0 0.75rem;
}
.cfdg-footer__brand {
	font-family: var(--wp--preset--font-family--serif);
	font-size: 1.4rem;
	color: #fff;
}
/* Note: paragraphs holding only a shortcode need a class (cfdg-footer__text) — in template parts WordPress
   strips a bare <p>[shortcode]</p> wrapper, which would make neighbouring lines run together. */
.cfdg-footer__text {
	margin: 0 0 0.75rem;
}
/* Social icons: round outlined buttons that fill gold on hover */
.cfdg-social {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 0.6rem;
}
.cfdg-footer .cfdg-social__link {
	display: grid;
	place-items: center;
	width: 2.6rem;
	height: 2.6rem;
	border: 1px solid rgba(255, 255, 255, 0.3);
	border-radius: 50%;
	color: #fff;
	text-decoration: none;
	transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
}
.cfdg-social__link svg {
	display: block;
	width: 1.15rem;
	height: 1.15rem;
}
.cfdg-footer .cfdg-social__link:hover,
.cfdg-footer .cfdg-social__link:focus-visible {
	background: var(--cfdg-gold);
	border-color: var(--cfdg-gold);
	color: var(--cfdg-night);
	text-decoration: none;
	transform: translateY(-2px);
}
/* Same icons on a light background (Contact page): green outline, gold fill on hover */
.cfdg-contact .cfdg-social__link {
	display: grid;
	place-items: center;
	width: 2.6rem;
	height: 2.6rem;
	border: 1px solid rgba(53, 94, 59, 0.45);
	border-radius: 50%;
	color: var(--cfdg-green);
	text-decoration: none;
	transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
}
.cfdg-contact .cfdg-social__link:hover,
.cfdg-contact .cfdg-social__link:focus-visible {
	background: var(--cfdg-gold);
	border-color: var(--cfdg-gold);
	color: var(--cfdg-night);
	transform: translateY(-2px);
}
.cfdg-contact__social {
	margin-top: 0.4rem;
}
.cfdg-footer__heading {
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--cfdg-gold);
}
.cfdg-footer__legal {
	margin: 1.5rem 0 0;
	font-size: 0.8rem;
	color: rgba(255, 255, 255, 0.55);
}
@media (max-width: 900px) {
	.cfdg-footer__grid {
		grid-template-columns: 1fr 1fr;
	}
}
@media (max-width: 560px) {
	.cfdg-footer__grid {
		grid-template-columns: 1fr;
		gap: 1.75rem;
	}
}

/* ---------- Sticky call / quote bar (phones only) ---------- */
.cfdg-mobile-bar {
	display: none;
}
@media (max-width: 781px) {
	.cfdg-mobile-bar {
		position: fixed;
		inset: auto 0 0 0;
		z-index: 60;
		display: grid;
		grid-template-columns: 1fr 2fr;
		gap: 1px;
		box-shadow: 0 -6px 24px rgba(0, 0, 0, 0.25);
		padding-bottom: env(safe-area-inset-bottom);
		background-color: var(--cfdg-night);
	}
	.cfdg-mobile-bar a {
		display: block;
		padding: 1rem;
		text-align: center;
		font-size: 0.8rem;
		font-weight: 600;
		letter-spacing: 0.12em;
		text-transform: uppercase;
		text-decoration: none;
		color: #fff;
	}
	.cfdg-mobile-bar a + a {
		background: var(--cfdg-gold);
		color: var(--cfdg-green-dark);
	}
	/* Keep the footer legal line clear of the bar */
	.cfdg-footer {
		padding-bottom: 5rem;
	}
}

/* Motion preferences */
@media (prefers-reduced-motion: reduce) {
	.cfdg-card {
		transition: none;
	}
	.cfdg-card:hover {
		transform: none;
	}
}

/* Hide the sticky bar while the mobile menu is open */
body:has(.wp-block-navigation__responsive-container.is-menu-open) .cfdg-mobile-bar,
body:has(.cfdg-form) .cfdg-mobile-bar {
	display: none;
}
