/*
Theme Name: Leicester Gardener
Theme URI: https://leicestergardener.co.uk/
Author: Rob Holmes
Author URI: https://leicestergardener.co.uk/
Description: A professional, fast and accessible WordPress theme for gardening and landscaping businesses. Deep-green and warm-stone palette, photo-led layouts, content types for services, projects, testimonials and FAQs, service-area pages for local SEO, a built-in quote request form, LocalBusiness structured data, and a library of eleven block patterns. No build step and no jQuery on the front end.
Version: 1.0.0
Requires at least: 6.3
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: leicester-gardener
Tags: blog, portfolio, business, one-column, two-columns, right-sidebar, custom-logo, custom-menu, featured-images, block-patterns, threaded-comments, translation-ready, accessibility-ready
*/

/* =========================================================================
   TABLE OF CONTENTS
   1.  Design tokens
   2.  Reset & base
   3.  Typography
   4.  Layout & containers
   5.  Buttons
   6.  Forms
   7.  Header & navigation
   8.  Hero
   9.  Sections & components
   10. Block editor styles
   11. Posts & archives
   12. Comments
   13. Sidebar & widgets
   14. Footer
   15. Utilities
   16. Accessibility
   17. Print
   ========================================================================= */


/* =========================================================================
   1. DESIGN TOKENS
   ========================================================================= */

:root {
	/* Brand palette - deep green + warm stone */
	--lg-forest:        #1f3d2b;
	--lg-forest-deep:   #16291d;
	--lg-moss:          #4a7c59;
	--lg-fresh:         #8fbf6a;
	--lg-fresh-soft:    #dcebcd;
	--lg-stone:         #f5f1e8;
	--lg-cream:         #faf8f3;
	--lg-white:         #ffffff;
	--lg-charcoal:      #2b2b28;
	--lg-muted:         #6b6b63;
	--lg-border:        #e2dccd;
	--lg-border-strong: #cdc4ae;

	/* Semantic roles */
	--lg-bg:            var(--lg-white);
	--lg-bg-alt:        var(--lg-cream);
	--lg-bg-sunken:     var(--lg-stone);
	--lg-text:          var(--lg-charcoal);
	--lg-text-muted:    var(--lg-muted);
	--lg-heading:       var(--lg-forest);
	--lg-link:          var(--lg-moss);
	--lg-link-hover:    var(--lg-forest);

	/* Typography */
	--lg-font-body:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--lg-font-display: "Fraunces", Georgia, "Iowan Old Style", "Times New Roman", serif;

	--lg-step--2: clamp(0.75rem,  0.73rem + 0.10vw, 0.8125rem);
	--lg-step--1: clamp(0.875rem, 0.85rem + 0.12vw, 0.9375rem);
	--lg-step-0:  clamp(1rem,     0.96rem + 0.20vw, 1.125rem);
	--lg-step-1:  clamp(1.125rem, 1.05rem + 0.38vw, 1.375rem);
	--lg-step-2:  clamp(1.375rem, 1.24rem + 0.66vw, 1.75rem);
	--lg-step-3:  clamp(1.625rem, 1.39rem + 1.15vw, 2.25rem);
	--lg-step-4:  clamp(2rem,     1.60rem + 1.95vw, 3rem);
	--lg-step-5:  clamp(2.375rem, 1.68rem + 3.40vw, 4rem);

	--lg-leading-tight: 1.15;
	--lg-leading-snug:  1.35;
	--lg-leading-body:  1.7;

	/* Spacing scale */
	--lg-space-3xs: 0.25rem;
	--lg-space-2xs: 0.5rem;
	--lg-space-xs:  0.75rem;
	--lg-space-s:   1rem;
	--lg-space-m:   1.5rem;
	--lg-space-l:   2rem;
	--lg-space-xl:  3rem;
	--lg-space-2xl: 4rem;
	--lg-space-3xl: 6rem;
	--lg-section-y: clamp(3.5rem, 2.4rem + 5vw, 7rem);

	/* Layout */
	--lg-content-width: 46rem;   /* comfortable reading measure */
	--lg-wide-width:    72rem;   /* standard page width          */
	--lg-full-width:    90rem;   /* wide/full sections           */
	--lg-gutter:        clamp(1.25rem, 0.9rem + 1.6vw, 2.5rem);

	/* Shape & depth */
	--lg-radius-s:  6px;
	--lg-radius-m:  12px;
	--lg-radius-l:  20px;
	--lg-radius-pill: 999px;

	--lg-shadow-s:  0 1px 2px rgba(22, 41, 29, 0.06), 0 2px 6px rgba(22, 41, 29, 0.05);
	--lg-shadow-m:  0 4px 10px rgba(22, 41, 29, 0.07), 0 12px 28px rgba(22, 41, 29, 0.08);
	--lg-shadow-l:  0 10px 24px rgba(22, 41, 29, 0.10), 0 28px 60px rgba(22, 41, 29, 0.12);

	--lg-ring: 0 0 0 3px var(--lg-white), 0 0 0 6px var(--lg-moss);

	/* Motion */
	--lg-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
	--lg-duration: 240ms;

	/* Admin bar offset, recalculated in JS-free CSS below */
	--lg-header-h: 72px;
}


/* =========================================================================
   2. RESET & BASE
   ========================================================================= */

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

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--lg-header-h) + 1rem);
}

body {
	margin: 0;
	background-color: var(--lg-bg);
	color: var(--lg-text);
	font-family: var(--lg-font-body);
	font-size: var(--lg-step-0);
	line-height: var(--lg-leading-body);
	font-feature-settings: "kern" 1, "liga" 1;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-wrap: break-word;
}

body.lg-nav-open {
	overflow: hidden;
}

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

img,
video {
	height: auto;
}

svg {
	fill: currentColor;
}

/* Keep WordPress' own image alignment/size classes intact. */
img[class*="wp-image-"],
img[class*="attachment-"] {
	height: auto;
	max-width: 100%;
}

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

button {
	cursor: pointer;
}

hr,
.wp-block-separator {
	border: 0;
	height: 1px;
	background-color: var(--lg-border);
	margin-block: var(--lg-space-xl);
}

.wp-block-separator.is-style-dots {
	background: none;
	height: auto;
}

table {
	border-collapse: collapse;
	width: 100%;
	margin-block: var(--lg-space-m);
	font-size: var(--lg-step--1);
}

th,
td {
	border: 1px solid var(--lg-border);
	padding: var(--lg-space-2xs) var(--lg-space-xs);
	text-align: left;
}

th {
	background-color: var(--lg-stone);
	font-weight: 600;
	color: var(--lg-forest);
}


/* =========================================================================
   3. TYPOGRAPHY
   ========================================================================= */

h1, h2, h3, h4, h5, h6,
.lg-display {
	font-family: var(--lg-font-display);
	color: var(--lg-heading);
	font-weight: 600;
	line-height: var(--lg-leading-tight);
	letter-spacing: -0.015em;
	margin: 0 0 var(--lg-space-s);
	text-wrap: balance;
}

h1 { font-size: var(--lg-step-5); }
h2 { font-size: var(--lg-step-4); }
h3 { font-size: var(--lg-step-3); }
h4 { font-size: var(--lg-step-2); }
h5 { font-size: var(--lg-step-1); }
h6 {
	font-size: var(--lg-step-0);
	font-family: var(--lg-font-body);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
}

h2 + h3,
h3 + h4 {
	margin-top: var(--lg-space-s);
}

p {
	margin: 0 0 var(--lg-space-m);
	text-wrap: pretty;
}

p:last-child,
ul:last-child,
ol:last-child {
	margin-bottom: 0;
}

a {
	color: var(--lg-link);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
	transition: color var(--lg-duration) var(--lg-ease);
}

a:hover,
a:focus {
	color: var(--lg-link-hover);
}

strong, b { font-weight: 700; }
em, i     { font-style: italic; }

small {
	font-size: var(--lg-step--1);
	color: var(--lg-text-muted);
}

ul, ol {
	margin: 0 0 var(--lg-space-m);
	padding-left: 1.35em;
}

li + li {
	margin-top: var(--lg-space-3xs);
}

li > ul,
li > ol {
	margin-top: var(--lg-space-3xs);
	margin-bottom: 0;
}

blockquote,
.wp-block-quote {
	margin: var(--lg-space-l) 0;
	padding: var(--lg-space-s) 0 var(--lg-space-s) var(--lg-space-m);
	border-left: 4px solid var(--lg-fresh);
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-1);
	font-style: italic;
	color: var(--lg-forest);
}

blockquote cite,
.wp-block-quote cite {
	display: block;
	margin-top: var(--lg-space-2xs);
	font-family: var(--lg-font-body);
	font-size: var(--lg-step--1);
	font-style: normal;
	font-weight: 600;
	color: var(--lg-text-muted);
}

.wp-block-pullquote {
	border-top: 2px solid var(--lg-border);
	border-bottom: 2px solid var(--lg-border);
	padding: var(--lg-space-l) 0;
	text-align: center;
}

code, kbd, samp, pre {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.9em;
}

code {
	background-color: var(--lg-stone);
	padding: 0.15em 0.4em;
	border-radius: var(--lg-radius-s);
}

pre,
.wp-block-code {
	background-color: var(--lg-forest-deep);
	color: var(--lg-fresh-soft);
	padding: var(--lg-space-m);
	border-radius: var(--lg-radius-m);
	overflow-x: auto;
	line-height: 1.6;
}

pre code,
.wp-block-code code {
	background: none;
	padding: 0;
	color: inherit;
}

figure {
	margin: var(--lg-space-l) 0;
}

figcaption,
.wp-element-caption,
.wp-block-image figcaption {
	margin-top: var(--lg-space-2xs);
	font-size: var(--lg-step--1);
	color: var(--lg-text-muted);
	text-align: center;
}

/* Eyebrow / kicker label above a heading. */
.lg-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: var(--lg-space-2xs);
	margin: 0 0 var(--lg-space-xs);
	font-family: var(--lg-font-body);
	font-size: var(--lg-step--1);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--lg-moss);
}

.lg-eyebrow::before {
	content: "";
	width: 1.75rem;
	height: 2px;
	background-color: var(--lg-fresh);
	flex: none;
}

.lg-lead {
	font-size: var(--lg-step-1);
	line-height: 1.6;
	color: var(--lg-text-muted);
	max-width: 42ch;
}


/* =========================================================================
   4. LAYOUT & CONTAINERS
   ========================================================================= */

.lg-container {
	width: 100%;
	max-width: var(--lg-wide-width);
	margin-inline: auto;
	padding-inline: var(--lg-gutter);
}

.lg-container--narrow { max-width: var(--lg-content-width); }
.lg-container--full   { max-width: var(--lg-full-width); }

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

.lg-section--tight {
	padding-block: calc(var(--lg-section-y) * 0.6);
}

.lg-section--alt    { background-color: var(--lg-bg-alt); }
.lg-section--sunken { background-color: var(--lg-bg-sunken); }

.lg-section--dark {
	background-color: var(--lg-forest);
	color: var(--lg-stone);
}

.lg-section--dark h1,
.lg-section--dark h2,
.lg-section--dark h3,
.lg-section--dark h4 {
	color: var(--lg-white);
}

.lg-section--dark .lg-eyebrow       { color: var(--lg-fresh); }
.lg-section--dark .lg-lead          { color: rgba(245, 241, 232, 0.82); }
.lg-section--dark a:not(.lg-button) { color: var(--lg-fresh); }

.lg-site {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	min-height: 100svh;
}

.lg-main {
	flex: 1 0 auto;
}

/* Two-column content + sidebar layout. */
.lg-layout {
	display: grid;
	gap: var(--lg-space-xl);
	align-items: start;
}

@media (min-width: 62em) {
	.lg-layout--with-sidebar {
		grid-template-columns: minmax(0, 1fr) 20rem;
		gap: var(--lg-space-2xl);
	}
}

/* Section heading block. */
.lg-section-head {
	max-width: 46rem;
	margin-bottom: var(--lg-space-xl);
}

.lg-section-head--center {
	margin-inline: auto;
	text-align: center;
}

.lg-section-head--center .lg-eyebrow { justify-content: center; }
.lg-section-head--center .lg-lead    { margin-inline: auto; }

.lg-section-head > :last-child { margin-bottom: 0; }

/* Generic responsive grid. */
.lg-grid {
	display: grid;
	gap: var(--lg-space-m);
	grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr));
}

.lg-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(22rem, 100%), 1fr)); }
.lg-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(13rem, 100%), 1fr)); }


/* =========================================================================
   5. BUTTONS
   ========================================================================= */

.lg-button,
.wp-block-button__link,
input[type="submit"],
button[type="submit"],
.wp-block-search__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--lg-space-2xs);
	padding: 0.85em 1.75em;
	border: 2px solid transparent;
	border-radius: var(--lg-radius-pill);
	background-color: var(--lg-forest);
	color: var(--lg-white);
	font-family: var(--lg-font-body);
	font-size: var(--lg-step--1);
	font-weight: 700;
	letter-spacing: 0.02em;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition:
		background-color var(--lg-duration) var(--lg-ease),
		border-color var(--lg-duration) var(--lg-ease),
		color var(--lg-duration) var(--lg-ease),
		transform var(--lg-duration) var(--lg-ease),
		box-shadow var(--lg-duration) var(--lg-ease);
}

.lg-button:hover,
.lg-button:focus-visible,
.wp-block-button__link:hover,
input[type="submit"]:hover,
button[type="submit"]:hover {
	background-color: var(--lg-forest-deep);
	color: var(--lg-white);
	transform: translateY(-2px);
	box-shadow: var(--lg-shadow-m);
}

.lg-button:active {
	transform: translateY(0);
	box-shadow: var(--lg-shadow-s);
}

/* Primary accent - use for the single most important action on a screen. */
.lg-button--accent,
.is-style-lg-accent .wp-block-button__link {
	background-color: var(--lg-fresh);
	color: var(--lg-forest-deep);
}

.lg-button--accent:hover,
.lg-button--accent:focus-visible,
.is-style-lg-accent .wp-block-button__link:hover {
	background-color: #7fb256;
	color: var(--lg-forest-deep);
}

.lg-button--outline,
.is-style-outline .wp-block-button__link {
	background-color: transparent;
	border-color: currentColor;
	color: var(--lg-forest);
}

.lg-button--outline:hover,
.lg-button--outline:focus-visible {
	background-color: var(--lg-forest);
	border-color: var(--lg-forest);
	color: var(--lg-white);
}

/* On dark backgrounds the outline button inverts. Every dark surface in the
   theme is listed here - a missing one renders dark text on dark green. */
.lg-section--dark .lg-button--outline,
.lg-hero .lg-button--outline,
.lg-cta .lg-button--outline,
.lg-callbar .lg-button--outline,
.lg-section--dark .is-style-outline .wp-block-button__link,
.lg-cta .is-style-outline .wp-block-button__link {
	color: var(--lg-white);
	border-color: rgba(245, 241, 232, 0.6);
}

.lg-section--dark .lg-button--outline:hover,
.lg-hero .lg-button--outline:hover,
.lg-cta .lg-button--outline:hover,
.lg-callbar .lg-button--outline:hover,
.lg-section--dark .lg-button--outline:focus-visible,
.lg-hero .lg-button--outline:focus-visible,
.lg-cta .lg-button--outline:focus-visible,
.lg-callbar .lg-button--outline:focus-visible,
.lg-section--dark .is-style-outline .wp-block-button__link:hover,
.lg-cta .is-style-outline .wp-block-button__link:hover {
	background-color: var(--lg-white);
	border-color: var(--lg-white);
	color: var(--lg-forest);
}

.lg-button--small {
	padding: 0.6em 1.25em;
	font-size: var(--lg-step--2);
}

.lg-button--large {
	padding: 1em 2.25em;
	font-size: var(--lg-step-0);
}

.lg-button--block {
	width: 100%;
}

/* A quiet text link that still reads as an action. */
.lg-textlink {
	display: inline-flex;
	align-items: center;
	gap: var(--lg-space-3xs);
	font-weight: 700;
	font-size: var(--lg-step--1);
	text-decoration: none;
	color: var(--lg-moss);
}

.lg-textlink::after {
	content: "\2192";
	transition: transform var(--lg-duration) var(--lg-ease);
}

.lg-textlink:hover::after,
.lg-textlink:focus-visible::after {
	transform: translateX(3px);
}


/* =========================================================================
   6. FORMS
   ========================================================================= */

label {
	display: block;
	margin-bottom: var(--lg-space-3xs);
	font-size: var(--lg-step--1);
	font-weight: 600;
	color: var(--lg-forest);
}

input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="number"],
input[type="date"],
textarea,
select {
	width: 100%;
	padding: 0.75em 1em;
	background-color: var(--lg-white);
	border: 1px solid var(--lg-border-strong);
	border-radius: var(--lg-radius-m);
	font-size: var(--lg-step--1);
	line-height: 1.5;
	transition: border-color var(--lg-duration) var(--lg-ease), box-shadow var(--lg-duration) var(--lg-ease);
}

textarea {
	min-height: 9rem;
	resize: vertical;
}

input:focus,
textarea:focus,
select:focus {
	outline: none;
	border-color: var(--lg-moss);
	box-shadow: 0 0 0 3px rgba(74, 124, 89, 0.18);
}

::placeholder {
	color: #9a998f;
	opacity: 1;
}

/* Search form. */
.lg-search-form {
	display: flex;
	gap: var(--lg-space-2xs);
}

.lg-search-form .lg-search-field {
	flex: 1 1 auto;
	min-width: 0;
}

.wp-block-search__inside-wrapper {
	gap: var(--lg-space-2xs);
}

.wp-block-search__input {
	border-radius: var(--lg-radius-m);
	border: 1px solid var(--lg-border-strong);
	padding: 0.75em 1em;
}


/* =========================================================================
   7. HEADER & NAVIGATION
   ========================================================================= */

.lg-topbar {
	background-color: var(--lg-forest-deep);
	color: rgba(245, 241, 232, 0.9);
	font-size: var(--lg-step--2);
}

.lg-topbar__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--lg-space-2xs) var(--lg-space-m);
	min-height: 2.5rem;
	padding-block: var(--lg-space-3xs);
}

.lg-topbar__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lg-space-2xs) var(--lg-space-m);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lg-topbar__list li + li { margin-top: 0; }

.lg-topbar a {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	color: inherit;
	text-decoration: none;
	font-weight: 600;
}

.lg-topbar a:hover,
.lg-topbar a:focus-visible {
	color: var(--lg-fresh);
	text-decoration: underline;
}

.lg-topbar__icon {
	width: 1em;
	height: 1em;
	flex: none;
	color: var(--lg-fresh);
}

.lg-topbar__note {
	display: none;
}

@media (min-width: 48em) {
	.lg-topbar__note { display: inline-flex; }
}

/* --- Main header ------------------------------------------------------ */

.lg-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background-color: var(--lg-white);
	border-bottom: 1px solid var(--lg-border);
	transition: box-shadow var(--lg-duration) var(--lg-ease);
}

.admin-bar .lg-header { top: 32px; }

@media screen and (max-width: 782px) {
	.admin-bar .lg-header { top: 46px; }
}

.lg-header.is-stuck {
	box-shadow: var(--lg-shadow-m);
}

.lg-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--lg-space-m);
	min-height: var(--lg-header-h);
	padding-block: var(--lg-space-2xs);
}

/* Branding. */
.lg-branding {
	display: flex;
	align-items: center;
	gap: var(--lg-space-xs);
	min-width: 0;
}

/* The logo sits beside the text; the title and tagline stack within it. */
.lg-branding__text {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.lg-branding .custom-logo-link {
	display: block;
	line-height: 0;
}

.lg-branding .custom-logo {
	width: auto;
	max-height: 56px;
}

.lg-site-title {
	margin: 0;
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-1);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.02em;
	text-wrap: balance;
}

/* The tagline is supporting detail - hide it where space is tight. */
.lg-header .lg-site-description {
	display: none;
}

@media (min-width: 75em) {
	.lg-header .lg-site-description {
		display: block;
	}
}

.lg-site-title a {
	color: var(--lg-forest);
	text-decoration: none;
}

.lg-site-description {
	margin: 0.15rem 0 0;
	font-size: var(--lg-step--2);
	color: var(--lg-text-muted);
	line-height: 1.3;
}

/* Header actions (CTA + toggle). */
.lg-header__actions {
	display: flex;
	align-items: center;
	gap: var(--lg-space-2xs);
	flex: none;
}

.lg-header__cta {
	display: none;
}

@media (min-width: 30em) {
	.lg-header__cta { display: inline-flex; }
}

/* --- Primary navigation ----------------------------------------------- */

.lg-nav__list {
	display: flex;
	align-items: center;
	gap: var(--lg-space-3xs);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lg-nav__list li + li { margin-top: 0; }

.lg-nav__list a {
	display: block;
	padding: 0.65rem 0.85rem;
	border-radius: var(--lg-radius-s);
	color: var(--lg-charcoal);
	font-size: var(--lg-step--1);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color var(--lg-duration) var(--lg-ease), color var(--lg-duration) var(--lg-ease);
}

.lg-nav__list a:hover,
.lg-nav__list a:focus-visible {
	background-color: var(--lg-stone);
	color: var(--lg-forest);
}

.lg-nav__list .current-menu-item > a,
.lg-nav__list .current_page_item > a,
.lg-nav__list .current-menu-ancestor > a,
.lg-nav__list .current_page_ancestor > a {
	color: var(--lg-forest);
	background-color: var(--lg-fresh-soft);
}

/* Sub-menus. */
.lg-nav .menu-item-has-children {
	position: relative;
}

.lg-nav .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 20;
	min-width: 14rem;
	margin: 0;
	padding: var(--lg-space-3xs);
	list-style: none;
	background-color: var(--lg-white);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-m);
	box-shadow: var(--lg-shadow-m);
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition:
		opacity var(--lg-duration) var(--lg-ease),
		transform var(--lg-duration) var(--lg-ease),
		visibility var(--lg-duration) var(--lg-ease);
}

.lg-nav .sub-menu .sub-menu {
	top: -0.25rem;
	left: 100%;
}

.lg-nav .menu-item-has-children:hover > .sub-menu,
.lg-nav .menu-item-has-children:focus-within > .sub-menu,
.lg-nav .menu-item-has-children.is-open > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.lg-nav .sub-menu a {
	white-space: normal;
	padding: 0.55rem 0.75rem;
}

/* Sub-menu disclosure button (added by navigation.js). */
.lg-submenu-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.75rem;
	height: 1.75rem;
	padding: 0;
	border: 0;
	border-radius: var(--lg-radius-s);
	background: none;
	color: inherit;
}

.lg-submenu-toggle svg {
	width: 0.7em;
	height: 0.7em;
	transition: transform var(--lg-duration) var(--lg-ease);
}

.lg-submenu-toggle[aria-expanded="true"] svg {
	transform: rotate(180deg);
}

/* --- Menu toggle (hamburger) ------------------------------------------ */

.lg-menu-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;
	width: 2.875rem;
	height: 2.875rem;
	padding: 0;
	border: 1px solid var(--lg-border-strong);
	border-radius: var(--lg-radius-m);
	background-color: var(--lg-white);
	color: var(--lg-forest);
}

.lg-menu-toggle:hover {
	background-color: var(--lg-stone);
}

.lg-menu-toggle__bars {
	position: relative;
	display: block;
	width: 20px;
	height: 2px;
	background-color: currentColor;
	border-radius: 2px;
	transition: background-color var(--lg-duration) var(--lg-ease);
}

.lg-menu-toggle__bars::before,
.lg-menu-toggle__bars::after {
	content: "";
	position: absolute;
	left: 0;
	width: 20px;
	height: 2px;
	background-color: currentColor;
	border-radius: 2px;
	transition: transform var(--lg-duration) var(--lg-ease), top var(--lg-duration) var(--lg-ease);
}

.lg-menu-toggle__bars::before { top: -6px; }
.lg-menu-toggle__bars::after  { top: 6px; }

.lg-menu-toggle[aria-expanded="true"] .lg-menu-toggle__bars {
	background-color: transparent;
}

.lg-menu-toggle[aria-expanded="true"] .lg-menu-toggle__bars::before {
	top: 0;
	transform: rotate(45deg);
}

.lg-menu-toggle[aria-expanded="true"] .lg-menu-toggle__bars::after {
	top: 0;
	transform: rotate(-45deg);
}

/* --- Mobile / desktop switch ------------------------------------------ */

/* Below the breakpoint the nav becomes a slide-in drawer. */
@media (max-width: 61.999em) {
	.lg-nav {
		position: fixed;
		inset: 0 0 0 auto;
		z-index: 110;
		width: min(22rem, 86vw);
		padding: var(--lg-space-xl) var(--lg-space-m) var(--lg-space-m);
		background-color: var(--lg-white);
		box-shadow: var(--lg-shadow-l);
		overflow-y: auto;
		transform: translateX(100%);
		visibility: hidden;
		transition: transform 320ms var(--lg-ease), visibility 320ms var(--lg-ease);
	}

	.lg-nav.is-open {
		transform: translateX(0);
		visibility: visible;
	}

	.lg-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}

	.lg-nav__list > li {
		border-bottom: 1px solid var(--lg-border);
	}

	.lg-nav__list a {
		padding: 0.9rem 0.5rem;
		font-size: var(--lg-step-0);
		border-radius: 0;
	}

	.lg-nav .menu-item-has-children > .lg-nav__row {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--lg-space-2xs);
	}

	.lg-nav .menu-item-has-children > .lg-nav__row > a { flex: 1 1 auto; }

	.lg-nav .sub-menu {
		position: static;
		min-width: 0;
		margin: 0 0 var(--lg-space-2xs) var(--lg-space-s);
		padding: 0;
		border: 0;
		border-left: 2px solid var(--lg-fresh-soft);
		border-radius: 0;
		box-shadow: none;
		opacity: 1;
		visibility: visible;
		transform: none;
		display: none;
	}

	.lg-nav .menu-item-has-children.is-open > .sub-menu {
		display: block;
	}

	.lg-nav .sub-menu > li { border: 0; }

	.lg-nav__cta {
		margin-top: var(--lg-space-m);
	}
}

@media (min-width: 62em) {
	.lg-menu-toggle { display: none; }
	.lg-nav__cta    { display: none; }
	.lg-nav {
		display: block !important;
		visibility: visible;
	}
}

/* Backdrop behind the mobile drawer. */
.lg-nav-backdrop {
	position: fixed;
	inset: 0;
	z-index: 105;
	background-color: rgba(22, 41, 29, 0.5);
	backdrop-filter: blur(2px);
	opacity: 0;
	visibility: hidden;
	transition: opacity 320ms var(--lg-ease), visibility 320ms var(--lg-ease);
	border: 0;
	padding: 0;
	cursor: pointer;
}

.lg-nav-backdrop.is-visible {
	opacity: 1;
	visibility: visible;
}

@media (min-width: 62em) {
	.lg-nav-backdrop { display: none; }
}


/* =========================================================================
   8. HERO
   ========================================================================= */

.lg-hero {
	position: relative;
	display: grid;
	align-items: center;
	min-height: clamp(26rem, 20rem + 26vw, 40rem);
	padding-block: var(--lg-space-2xl);
	background-color: var(--lg-forest);
	color: var(--lg-stone);
	isolation: isolate;
	overflow: hidden;
}

.lg-hero__media {
	position: absolute;
	inset: 0;
	z-index: -2;
}

.lg-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.lg-hero__overlay {
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(105deg, rgba(22, 41, 29, 0.92) 0%, rgba(22, 41, 29, 0.74) 42%, rgba(22, 41, 29, 0.32) 100%);
}

.lg-hero__content {
	max-width: 40rem;
}

.lg-hero__title {
	color: var(--lg-white);
	font-size: var(--lg-step-5);
	margin-bottom: var(--lg-space-s);
}

.lg-hero__title em {
	font-style: italic;
	color: var(--lg-fresh);
}

.lg-hero__text {
	font-size: var(--lg-step-1);
	line-height: 1.6;
	color: rgba(245, 241, 232, 0.88);
	margin-bottom: var(--lg-space-l);
	max-width: 34rem;
}

.lg-hero .lg-eyebrow { color: var(--lg-fresh); }

.lg-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lg-space-xs);
}

/* Trust strip under the hero. */
.lg-trust {
	background-color: var(--lg-stone);
	border-bottom: 1px solid var(--lg-border);
}

.lg-trust__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr));
	gap: var(--lg-space-s) var(--lg-space-m);
	margin: 0;
	padding: var(--lg-space-m) 0;
	list-style: none;
}

.lg-trust__list li {
	display: flex;
	align-items: center;
	gap: var(--lg-space-2xs);
	margin: 0;
	font-size: var(--lg-step--1);
	font-weight: 600;
	color: var(--lg-forest);
}

.lg-trust__icon {
	width: 1.5rem;
	height: 1.5rem;
	flex: none;
	color: var(--lg-moss);
}

/* Compact page header for interior pages. */
.lg-page-header {
	position: relative;
	padding-block: clamp(2.5rem, 1.8rem + 3.2vw, 4.5rem);
	background-color: var(--lg-stone);
	border-bottom: 1px solid var(--lg-border);
	isolation: isolate;
	overflow: hidden;
}

.lg-page-header--media {
	background-color: var(--lg-forest);
	color: var(--lg-stone);
}

.lg-page-header--media .lg-page-header__title,
.lg-page-header--media .lg-breadcrumb a,
.lg-page-header--media .lg-breadcrumb {
	color: var(--lg-white);
}

.lg-page-header--media .lg-page-header__media {
	position: absolute;
	inset: 0;
	z-index: -2;
}

.lg-page-header--media .lg-page-header__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lg-page-header--media::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(90deg, rgba(22, 41, 29, 0.9), rgba(22, 41, 29, 0.6));
}

.lg-page-header__title {
	margin: 0;
	font-size: var(--lg-step-4);
}

.lg-page-header__text {
	margin: var(--lg-space-2xs) 0 0;
	max-width: 46ch;
	color: var(--lg-text-muted);
}

.lg-page-header--media .lg-page-header__text {
	color: rgba(245, 241, 232, 0.85);
}

.lg-breadcrumb {
	margin-bottom: var(--lg-space-2xs);
	font-size: var(--lg-step--1);
	color: var(--lg-text-muted);
}

.lg-breadcrumb a {
	color: inherit;
	text-decoration: none;
	font-weight: 600;
}

.lg-breadcrumb a:hover { text-decoration: underline; }

.lg-breadcrumb__sep {
	margin-inline: 0.4em;
	opacity: 0.6;
}


/* =========================================================================
   9. SECTIONS & COMPONENTS
   ========================================================================= */

/* --- Card ------------------------------------------------------------- */

.lg-card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	background-color: var(--lg-white);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-l);
	overflow: hidden;
	transition:
		transform var(--lg-duration) var(--lg-ease),
		box-shadow var(--lg-duration) var(--lg-ease),
		border-color var(--lg-duration) var(--lg-ease);
}

.lg-card:hover,
.lg-card:focus-within {
	transform: translateY(-4px);
	border-color: var(--lg-fresh);
	box-shadow: var(--lg-shadow-m);
}

.lg-card__media {
	position: relative;
	aspect-ratio: 16 / 10;
	background-color: var(--lg-stone);
	overflow: hidden;
}

.lg-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 600ms var(--lg-ease);
}

.lg-card:hover .lg-card__media img {
	transform: scale(1.05);
}

.lg-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	gap: var(--lg-space-2xs);
	padding: var(--lg-space-m);
}

.lg-card__title {
	margin: 0;
	font-size: var(--lg-step-2);
}

.lg-card__title a {
	color: inherit;
	text-decoration: none;
}

/* Make the whole card clickable without trapping other links. */
.lg-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

.lg-card__text {
	margin: 0;
	color: var(--lg-text-muted);
	font-size: var(--lg-step--1);
}

.lg-card__footer {
	margin-top: auto;
	padding-top: var(--lg-space-2xs);
}

.lg-card__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	margin-bottom: var(--lg-space-2xs);
	border-radius: var(--lg-radius-m);
	background-color: var(--lg-fresh-soft);
	color: var(--lg-forest);
}

.lg-card__icon svg {
	width: 1.5rem;
	height: 1.5rem;
}

/* --- Feature / service tile (icon-led, no image) ---------------------- */

.lg-feature {
	display: flex;
	flex-direction: column;
	padding: var(--lg-space-m);
	background-color: var(--lg-white);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-l);
	height: 100%;
}

.lg-feature h3 {
	font-size: var(--lg-step-2);
	margin-bottom: var(--lg-space-3xs);
}

.lg-feature p {
	color: var(--lg-text-muted);
	font-size: var(--lg-step--1);
	margin-bottom: 0;
}

/* --- Media + text split ------------------------------------------------ */

.lg-split {
	display: grid;
	gap: var(--lg-space-xl);
	align-items: center;
}

@media (min-width: 55em) {
	.lg-split {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--lg-space-2xl);
	}

	.lg-split--reverse .lg-split__media { order: 2; }
}

.lg-split__media img {
	width: 100%;
	border-radius: var(--lg-radius-l);
	box-shadow: var(--lg-shadow-m);
}

/* --- Stats ------------------------------------------------------------- */

.lg-stats {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(10rem, 100%), 1fr));
	gap: var(--lg-space-m);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lg-stat {
	text-align: center;
}

.lg-stat__value {
	display: block;
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-4);
	font-weight: 700;
	line-height: 1;
	color: var(--lg-fresh);
}

.lg-stat__label {
	display: block;
	margin-top: var(--lg-space-3xs);
	font-size: var(--lg-step--1);
	color: rgba(245, 241, 232, 0.8);
}

/* --- Testimonial ------------------------------------------------------- */

.lg-quote {
	display: flex;
	flex-direction: column;
	height: 100%;
	padding: var(--lg-space-l);
	background-color: var(--lg-white);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-l);
	box-shadow: var(--lg-shadow-s);
}

.lg-quote__stars {
	display: flex;
	gap: 2px;
	margin-bottom: var(--lg-space-2xs);
	color: #e0a02a;
}

.lg-quote__stars svg {
	width: 1.1rem;
	height: 1.1rem;
}

.lg-quote__text {
	flex: 1 1 auto;
	margin: 0 0 var(--lg-space-m);
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-1);
	line-height: 1.5;
	color: var(--lg-forest);
}

.lg-quote__author {
	display: flex;
	align-items: center;
	gap: var(--lg-space-2xs);
	font-size: var(--lg-step--1);
}

.lg-quote__avatar {
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	object-fit: cover;
	flex: none;
}

.lg-quote__name {
	display: block;
	font-weight: 700;
	color: var(--lg-charcoal);
}

.lg-quote__meta {
	display: block;
	color: var(--lg-text-muted);
	font-size: var(--lg-step--2);
}

/* --- Numbered process steps ------------------------------------------- */

.lg-steps {
	counter-reset: lg-step;
	display: grid;
	gap: var(--lg-space-l);
	grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
	margin: 0;
	padding: 0;
	list-style: none;
}

.lg-steps > li {
	counter-increment: lg-step;
	position: relative;
	margin: 0;
	padding-top: var(--lg-space-l);
}

.lg-steps > li::before {
	content: counter(lg-step, decimal-leading-zero);
	position: absolute;
	top: 0;
	left: 0;
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-2);
	font-weight: 700;
	color: var(--lg-fresh);
	line-height: 1;
}

.lg-steps > li::after {
	content: "";
	position: absolute;
	top: 0.35em;
	left: 3.25rem;
	right: 0;
	height: 1px;
	background-color: var(--lg-border);
}

.lg-steps h3 {
	font-size: var(--lg-step-1);
	margin-bottom: var(--lg-space-3xs);
}

.lg-steps p {
	margin: 0;
	font-size: var(--lg-step--1);
	color: var(--lg-text-muted);
}

/* --- FAQ (details/summary) -------------------------------------------- */

.lg-faq {
	display: grid;
	gap: var(--lg-space-2xs);
	max-width: var(--lg-content-width);
}

.lg-faq__item,
details.lg-faq__item {
	background-color: var(--lg-white);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-m);
	overflow: hidden;
}

.lg-faq__item[open] {
	border-color: var(--lg-fresh);
	box-shadow: var(--lg-shadow-s);
}

.lg-faq__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--lg-space-s);
	padding: var(--lg-space-s) var(--lg-space-m);
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-1);
	font-weight: 600;
	color: var(--lg-forest);
	cursor: pointer;
	list-style: none;
}

.lg-faq__item summary::-webkit-details-marker { display: none; }

.lg-faq__item summary::after {
	content: "";
	flex: none;
	width: 0.7em;
	height: 0.7em;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg) translate(-0.15em, -0.15em);
	transition: transform var(--lg-duration) var(--lg-ease);
}

.lg-faq__item[open] summary::after {
	transform: rotate(-135deg) translate(-0.15em, -0.15em);
}

.lg-faq__answer {
	padding: 0 var(--lg-space-m) var(--lg-space-m);
	color: var(--lg-text-muted);
}

/* --- Service-area chips ------------------------------------------------ */

.lg-areas {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lg-space-2xs);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lg-areas li { margin: 0; }

.lg-areas a,
.lg-areas span {
	display: inline-block;
	padding: 0.45em 1em;
	background-color: var(--lg-white);
	border: 1px solid var(--lg-border-strong);
	border-radius: var(--lg-radius-pill);
	font-size: var(--lg-step--1);
	font-weight: 600;
	color: var(--lg-forest);
	text-decoration: none;
	transition: background-color var(--lg-duration) var(--lg-ease), border-color var(--lg-duration) var(--lg-ease);
}

.lg-areas a:hover,
.lg-areas a:focus-visible {
	background-color: var(--lg-fresh-soft);
	border-color: var(--lg-fresh);
}

/* --- Gallery ----------------------------------------------------------- */

.lg-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
	gap: var(--lg-space-2xs);
}

.lg-gallery__item {
	position: relative;
	display: block;
	aspect-ratio: 4 / 3;
	border-radius: var(--lg-radius-m);
	overflow: hidden;
	background-color: var(--lg-stone);
}

.lg-gallery__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 600ms var(--lg-ease);
}

.lg-gallery__item:hover img,
.lg-gallery__item:focus-visible img {
	transform: scale(1.06);
}

/* --- Call-to-action band ---------------------------------------------- */

.lg-cta {
	position: relative;
	background-color: var(--lg-forest);
	color: var(--lg-stone);
	border-radius: var(--lg-radius-l);
	padding: clamp(2rem, 1.4rem + 2.8vw, 3.5rem);
	overflow: hidden;
	isolation: isolate;
}

.lg-cta::after {
	content: "";
	position: absolute;
	right: -4rem;
	bottom: -6rem;
	z-index: -1;
	width: 20rem;
	height: 20rem;
	border-radius: 50%;
	background-color: rgba(143, 191, 106, 0.14);
}

.lg-cta__inner {
	display: grid;
	gap: var(--lg-space-m);
	align-items: center;
}

@media (min-width: 48em) {
	.lg-cta__inner {
		grid-template-columns: minmax(0, 1fr) auto;
		gap: var(--lg-space-xl);
	}
}

.lg-cta h2 {
	color: var(--lg-white);
	margin-bottom: var(--lg-space-2xs);
}

.lg-cta p {
	margin: 0;
	color: rgba(245, 241, 232, 0.85);
}

.lg-cta__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lg-space-xs);
}

/* --- Contact details list --------------------------------------------- */

.lg-contact-list {
	display: grid;
	gap: var(--lg-space-s);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lg-contact-list li {
	display: flex;
	align-items: flex-start;
	gap: var(--lg-space-xs);
	margin: 0;
}

.lg-contact-list__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: var(--lg-radius-m);
	background-color: var(--lg-fresh-soft);
	color: var(--lg-forest);
}

.lg-contact-list__icon svg {
	width: 1.25rem;
	height: 1.25rem;
}

.lg-contact-list__label {
	display: block;
	font-size: var(--lg-step--2);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--lg-text-muted);
}

.lg-contact-list a {
	font-weight: 600;
	text-decoration: none;
}

.lg-contact-list a:hover { text-decoration: underline; }


/* =========================================================================
   10. BLOCK EDITOR STYLES
   ========================================================================= */

/* Content width for blocks inside the post/page editor output. */
.lg-content > * {
	max-width: var(--lg-content-width);
	margin-inline: auto;
}

.lg-content > .alignwide {
	max-width: var(--lg-wide-width);
}

.lg-content > .alignfull {
	max-width: none;
	width: auto;
	margin-inline: calc(50% - 50vw);
	padding-inline: var(--lg-gutter);
}

.lg-content > .alignfull.lg-bleed {
	padding-inline: 0;
}

.lg-content > * + * {
	margin-top: var(--lg-space-m);
}

.lg-content > h2 { margin-top: var(--lg-space-xl); }
.lg-content > h3 { margin-top: var(--lg-space-l); }

.alignleft {
	float: left;
	margin: 0.35rem var(--lg-space-m) var(--lg-space-s) 0;
}

.alignright {
	float: right;
	margin: 0.35rem 0 var(--lg-space-s) var(--lg-space-m);
}

.aligncenter {
	margin-inline: auto;
	text-align: center;
}

@media (max-width: 34em) {
	.alignleft,
	.alignright {
		float: none;
		margin-inline: auto;
		display: block;
	}
}

.wp-block-image img { border-radius: var(--lg-radius-m); }

.wp-block-cover { border-radius: var(--lg-radius-l); overflow: hidden; }

.wp-block-group.has-background { border-radius: var(--lg-radius-l); }

.wp-block-buttons { gap: var(--lg-space-xs); }

.wp-block-table figcaption { text-align: center; }

.wp-block-columns { gap: var(--lg-space-l); }

.wp-block-latest-posts,
.wp-block-categories,
.wp-block-archives {
	padding-left: 0;
	list-style: none;
}

.wp-block-calendar table th { background-color: var(--lg-stone); }

/* Colour classes exposed to the editor palette (see inc/setup.php). */
.has-lg-forest-color         { color: var(--lg-forest) !important; }
.has-lg-moss-color           { color: var(--lg-moss) !important; }
.has-lg-fresh-color          { color: var(--lg-fresh) !important; }
.has-lg-stone-color          { color: var(--lg-stone) !important; }
.has-lg-cream-color          { color: var(--lg-cream) !important; }
.has-lg-charcoal-color       { color: var(--lg-charcoal) !important; }
.has-lg-white-color          { color: var(--lg-white) !important; }

.has-lg-forest-background-color   { background-color: var(--lg-forest) !important; }
.has-lg-moss-background-color     { background-color: var(--lg-moss) !important; }
.has-lg-fresh-background-color    { background-color: var(--lg-fresh) !important; }
.has-lg-stone-background-color    { background-color: var(--lg-stone) !important; }
.has-lg-cream-background-color    { background-color: var(--lg-cream) !important; }
.has-lg-charcoal-background-color { background-color: var(--lg-charcoal) !important; }
.has-lg-white-background-color    { background-color: var(--lg-white) !important; }

/* Anything on a dark brand background gets light headings. */
.has-lg-forest-background-color h1,
.has-lg-forest-background-color h2,
.has-lg-forest-background-color h3,
.has-lg-forest-background-color h4,
.has-lg-charcoal-background-color h1,
.has-lg-charcoal-background-color h2,
.has-lg-charcoal-background-color h3,
.has-lg-charcoal-background-color h4 {
	color: var(--lg-white);
}

/* Font-size classes. */
.has-small-font-size   { font-size: var(--lg-step--1); }
.has-medium-font-size  { font-size: var(--lg-step-1); }
.has-large-font-size   { font-size: var(--lg-step-3); }
.has-x-large-font-size { font-size: var(--lg-step-4); }


/* =========================================================================
   11. POSTS & ARCHIVES
   ========================================================================= */

.lg-post-list {
	display: grid;
	gap: var(--lg-space-l);
	grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr));
}

.lg-entry-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lg-space-2xs) var(--lg-space-s);
	margin-bottom: var(--lg-space-s);
	font-size: var(--lg-step--1);
	color: var(--lg-text-muted);
}

.lg-entry-meta a {
	color: inherit;
	font-weight: 600;
	text-decoration: none;
}

.lg-entry-meta a:hover { color: var(--lg-moss); text-decoration: underline; }

.lg-entry-meta__item {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
}

.lg-entry-meta__item svg {
	width: 1em;
	height: 1em;
	color: var(--lg-moss);
}

.lg-entry__thumb {
	margin-bottom: var(--lg-space-l);
	border-radius: var(--lg-radius-l);
	overflow: hidden;
}

.lg-entry__thumb img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.lg-entry-footer {
	margin-top: var(--lg-space-xl);
	padding-top: var(--lg-space-m);
	border-top: 1px solid var(--lg-border);
	font-size: var(--lg-step--1);
}

.lg-tags {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lg-space-3xs);
}

.lg-tags a {
	display: inline-block;
	padding: 0.25em 0.75em;
	background-color: var(--lg-stone);
	border-radius: var(--lg-radius-pill);
	font-size: var(--lg-step--2);
	font-weight: 600;
	color: var(--lg-forest);
	text-decoration: none;
}

.lg-tags a:hover { background-color: var(--lg-fresh-soft); }

/* Post navigation. */
.lg-post-nav {
	display: grid;
	gap: var(--lg-space-s);
	margin-top: var(--lg-space-xl);
}

@media (min-width: 45em) {
	.lg-post-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.lg-post-nav__link {
	display: block;
	padding: var(--lg-space-m);
	background-color: var(--lg-cream);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-m);
	text-decoration: none;
	transition: border-color var(--lg-duration) var(--lg-ease), background-color var(--lg-duration) var(--lg-ease);
}

.lg-post-nav__link:hover {
	background-color: var(--lg-white);
	border-color: var(--lg-fresh);
}

.lg-post-nav__label {
	display: block;
	font-size: var(--lg-step--2);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--lg-moss);
	margin-bottom: var(--lg-space-3xs);
}

.lg-post-nav__title {
	display: block;
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-1);
	color: var(--lg-forest);
	line-height: 1.3;
}

.lg-post-nav__link--next { text-align: right; }

/* Pagination. */
.lg-pagination {
	margin-top: var(--lg-space-2xl);
}

.lg-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--lg-space-3xs);
}

.lg-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	height: 2.75rem;
	padding-inline: 0.75rem;
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-m);
	font-size: var(--lg-step--1);
	font-weight: 600;
	color: var(--lg-forest);
	text-decoration: none;
	transition: background-color var(--lg-duration) var(--lg-ease), border-color var(--lg-duration) var(--lg-ease);
}

.lg-pagination .page-numbers:hover {
	background-color: var(--lg-stone);
	border-color: var(--lg-border-strong);
}

.lg-pagination .page-numbers.current {
	background-color: var(--lg-forest);
	border-color: var(--lg-forest);
	color: var(--lg-white);
}

.lg-pagination .page-numbers.dots {
	border-color: transparent;
}

/* "No results" panel. */
.lg-no-results {
	max-width: var(--lg-content-width);
	margin-inline: auto;
	padding: var(--lg-space-xl);
	background-color: var(--lg-cream);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-l);
	text-align: center;
}

.lg-no-results .lg-search-form {
	max-width: 24rem;
	margin: var(--lg-space-m) auto 0;
}

/* 404. */
.lg-404 {
	text-align: center;
	padding-block: var(--lg-space-3xl);
}

.lg-404__code {
	display: block;
	font-family: var(--lg-font-display);
	font-size: clamp(5rem, 3rem + 12vw, 11rem);
	font-weight: 700;
	line-height: 0.9;
	color: var(--lg-fresh-soft);
	letter-spacing: -0.04em;
}


/* =========================================================================
   12. COMMENTS
   ========================================================================= */

.lg-comments {
	max-width: var(--lg-content-width);
	margin: var(--lg-space-2xl) auto 0;
	padding-top: var(--lg-space-xl);
	border-top: 1px solid var(--lg-border);
}

.lg-comments__title {
	font-size: var(--lg-step-3);
	margin-bottom: var(--lg-space-l);
}

.comment-list {
	margin: 0 0 var(--lg-space-xl);
	padding: 0;
	list-style: none;
}

.comment-list .children {
	margin: var(--lg-space-m) 0 0 var(--lg-space-m);
	padding-left: var(--lg-space-m);
	border-left: 2px solid var(--lg-border);
	list-style: none;
}

.comment-body {
	padding: var(--lg-space-m);
	margin-bottom: var(--lg-space-m);
	background-color: var(--lg-cream);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-m);
}

.comment-meta {
	display: flex;
	align-items: center;
	gap: var(--lg-space-2xs);
	margin-bottom: var(--lg-space-2xs);
}

.comment-author img {
	border-radius: 50%;
}

.comment-author .fn {
	font-style: normal;
	font-weight: 700;
	color: var(--lg-forest);
}

.comment-metadata {
	font-size: var(--lg-step--2);
	color: var(--lg-text-muted);
}

.comment-metadata a { color: inherit; text-decoration: none; }

.comment-reply-link {
	font-size: var(--lg-step--2);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	text-decoration: none;
}

.comment-respond {
	padding: var(--lg-space-l);
	background-color: var(--lg-stone);
	border-radius: var(--lg-radius-l);
}

.comment-form > p { margin-bottom: var(--lg-space-s); }

.comment-form .comment-form-cookies-consent {
	display: flex;
	align-items: center;
	gap: var(--lg-space-2xs);
}

.comment-form .comment-form-cookies-consent input { width: auto; }

.comment-form .comment-form-cookies-consent label {
	margin: 0;
	font-weight: 400;
	color: var(--lg-text);
}

.no-comments {
	font-style: italic;
	color: var(--lg-text-muted);
}


/* =========================================================================
   13. SIDEBAR & WIDGETS
   ========================================================================= */

.lg-sidebar {
	display: grid;
	gap: var(--lg-space-m);
}

.lg-widget {
	padding: var(--lg-space-m);
	background-color: var(--lg-cream);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-l);
}

.lg-widget__title,
.lg-widget .wp-block-heading {
	margin: 0 0 var(--lg-space-s);
	font-size: var(--lg-step-1);
	padding-bottom: var(--lg-space-2xs);
	border-bottom: 2px solid var(--lg-fresh);
	display: inline-block;
}

.lg-widget ul {
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: var(--lg-step--1);
}

.lg-widget li + li {
	margin-top: var(--lg-space-3xs);
	padding-top: var(--lg-space-3xs);
	border-top: 1px solid var(--lg-border);
}

.lg-widget li ul {
	margin-top: var(--lg-space-3xs);
	padding-left: var(--lg-space-s);
}

.lg-widget a {
	text-decoration: none;
	font-weight: 600;
}

.lg-widget a:hover { text-decoration: underline; }


/* =========================================================================
   14. FOOTER
   ========================================================================= */

.lg-footer {
	background-color: var(--lg-forest-deep);
	color: rgba(245, 241, 232, 0.78);
	font-size: var(--lg-step--1);
}

.lg-footer a {
	color: rgba(245, 241, 232, 0.78);
	text-decoration: none;
}

.lg-footer a:hover,
.lg-footer a:focus-visible {
	color: var(--lg-fresh);
	text-decoration: underline;
}

.lg-footer h2,
.lg-footer h3,
.lg-footer .lg-widget__title,
.lg-footer .wp-block-heading {
	color: var(--lg-white);
	font-size: var(--lg-step-1);
	margin-bottom: var(--lg-space-s);
	border: 0;
	padding: 0;
}

.lg-footer__widgets {
	display: grid;
	gap: var(--lg-space-xl);
	padding-block: var(--lg-space-2xl);
	grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
}

.lg-footer .lg-widget {
	padding: 0;
	background: none;
	border: 0;
	border-radius: 0;
}

.lg-footer .lg-widget ul { font-size: inherit; }

.lg-footer .lg-widget li + li {
	border-top-color: rgba(245, 241, 232, 0.12);
}

.lg-footer__brand .lg-site-title a { color: var(--lg-white); }

.lg-footer__brand .custom-logo { max-height: 60px; }

.lg-footer__about {
	margin-top: var(--lg-space-s);
	max-width: 32ch;
}

/* Social links. */
.lg-social {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lg-space-2xs);
	margin: var(--lg-space-m) 0 0;
	padding: 0;
	list-style: none;
}

.lg-social li { margin: 0; }

.lg-social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	background-color: rgba(245, 241, 232, 0.08);
	color: var(--lg-stone);
	transition: background-color var(--lg-duration) var(--lg-ease), color var(--lg-duration) var(--lg-ease), transform var(--lg-duration) var(--lg-ease);
}

.lg-social a:hover,
.lg-social a:focus-visible {
	background-color: var(--lg-fresh);
	color: var(--lg-forest-deep);
	transform: translateY(-2px);
}

.lg-social svg {
	width: 1.15rem;
	height: 1.15rem;
}

/* Footer bottom bar. */
.lg-footer__bottom {
	border-top: 1px solid rgba(245, 241, 232, 0.12);
}

.lg-footer__bottom-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--lg-space-2xs) var(--lg-space-m);
	padding-block: var(--lg-space-m);
	font-size: var(--lg-step--2);
}

.lg-footer__bottom p { margin: 0; }

.lg-footer__legal {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lg-space-2xs) var(--lg-space-s);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lg-footer__legal li { margin: 0; }

/* Sticky mobile call bar. */
.lg-callbar {
	position: fixed;
	inset: auto 0 0 0;
	z-index: 90;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	background-color: var(--lg-forest);
	box-shadow: 0 -4px 16px rgba(22, 41, 29, 0.2);
	padding: var(--lg-space-3xs);
	gap: var(--lg-space-3xs);
}

.lg-callbar a {
	padding: 0.7em 0.5em;
	font-size: var(--lg-step--1);
}

@media (min-width: 48em) {
	.lg-callbar { display: none; }
}

body.has-callbar { padding-bottom: 4.25rem; }

@media (min-width: 48em) {
	body.has-callbar { padding-bottom: 0; }
}

/* Back-to-top. */
.lg-to-top {
	position: fixed;
	right: var(--lg-gutter);
	bottom: var(--lg-gutter);
	z-index: 80;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 0;
	border-radius: 50%;
	background-color: var(--lg-forest);
	color: var(--lg-white);
	box-shadow: var(--lg-shadow-m);
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity var(--lg-duration) var(--lg-ease), transform var(--lg-duration) var(--lg-ease), visibility var(--lg-duration) var(--lg-ease);
}

.lg-to-top.is-visible {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.lg-to-top svg { width: 1.1rem; height: 1.1rem; }

body.has-callbar .lg-to-top { bottom: calc(4.25rem + var(--lg-gutter)); }

@media (min-width: 48em) {
	body.has-callbar .lg-to-top { bottom: var(--lg-gutter); }
}


/* =========================================================================
   15. UTILITIES
   ========================================================================= */

.lg-stack > * + *        { margin-top: var(--lg-space-s); }
.lg-stack--l > * + *     { margin-top: var(--lg-space-l); }

.lg-text-center { text-align: center; }
.lg-mb-0        { margin-bottom: 0 !important; }
.lg-mt-l        { margin-top: var(--lg-space-l); }
.lg-mt-xl       { margin-top: var(--lg-space-xl); }

.lg-flow > * + * { margin-top: var(--lg-space-m); }

/* Reveal-on-scroll, enhanced by theme.js; safe without JS. */
.lg-reveal {
	opacity: 0;
	transform: translateY(14px);
	transition: opacity 600ms var(--lg-ease), transform 600ms var(--lg-ease);
}

.lg-reveal.is-visible,
.no-js .lg-reveal {
	opacity: 1;
	transform: none;
}


/* =========================================================================
   16. ACCESSIBILITY
   ========================================================================= */

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

.screen-reader-text:focus {
	background-color: var(--lg-white);
	border-radius: var(--lg-radius-s);
	box-shadow: var(--lg-shadow-m);
	clip: auto !important;
	clip-path: none;
	color: var(--lg-forest);
	display: block;
	font-size: 0.95rem;
	font-weight: 700;
	height: auto;
	left: 1rem;
	line-height: normal;
	padding: 0.75rem 1.25rem;
	text-decoration: none;
	top: 1rem;
	width: auto;
	z-index: 100000;
}

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

.lg-hero :focus-visible,
.lg-section--dark :focus-visible,
.lg-footer :focus-visible {
	outline-color: var(--lg-fresh);
}

/* Hide the sticky pieces while the mobile drawer is open. */
body.lg-nav-open .lg-callbar,
body.lg-nav-open .lg-to-top {
	display: none;
}

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

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

	.lg-reveal {
		opacity: 1;
		transform: none;
	}
}

@media (prefers-contrast: more) {
	:root {
		--lg-text-muted: #4a4a44;
		--lg-border: #b8b0a0;
	}
}


/* =========================================================================
   17. PRINT
   ========================================================================= */

@media print {
	.lg-topbar,
	.lg-header__actions,
	.lg-nav,
	.lg-callbar,
	.lg-to-top,
	.lg-footer__widgets,
	.comment-respond,
	.lg-post-nav,
	.lg-pagination {
		display: none !important;
	}

	body {
		background: #fff;
		color: #000;
		font-size: 12pt;
	}

	a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 0.85em;
		word-break: break-all;
	}

	.lg-hero,
	.lg-section--dark,
	.lg-cta {
		background: none !important;
		color: #000 !important;
	}
}


/* =========================================================================
   18. TEMPLATE & PATTERN SUPPORT
   Classes introduced by the PHP templates and the block pattern library.
   ========================================================================= */

/* --- Navigation row (link + submenu disclosure) ------------------------ */

.lg-nav__row {
	display: flex;
	align-items: center;
	gap: 0.15rem;
}

.lg-nav .sub-menu .lg-nav__row {
	width: 100%;
}

/* --- Single entry header ---------------------------------------------- */

.lg-entry-header {
	margin-bottom: var(--lg-space-l);
}

.lg-entry-title {
	margin-bottom: var(--lg-space-s);
	font-size: var(--lg-step-4);
}

/* Blog posts and pages keep a readable measure; the sidebar layout already
   constrains the column, so the content block sits flush inside it. */
.lg-content--flush > * {
	max-width: none;
	margin-inline: 0;
}

/* Full-width templates let blocks run edge to edge. */
.lg-content--full > * {
	max-width: var(--lg-content-width);
	margin-inline: auto;
	padding-inline: var(--lg-gutter);
}

.lg-content--full > .alignwide {
	max-width: var(--lg-wide-width);
}

.lg-content--full > .alignfull,
.lg-content--full > .lg-section,
.lg-content--full > .wp-block-group.alignfull {
	max-width: none;
	width: auto;
	margin-inline: 0;
	padding-inline: 0;
}

.lg-content--full > * + * {
	margin-top: 0;
}

.lg-content--full > :not(.alignfull) + :not(.alignfull) {
	margin-top: var(--lg-space-m);
}

/* The front page is composed entirely of full-width pattern sections. */
.lg-front-page > .lg-content--full > :first-child {
	margin-top: 0;
}

/* --- Post cards -------------------------------------------------------- */

.lg-card__kicker {
	font-size: var(--lg-step--2);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--lg-moss);
}

.lg-card__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--lg-space-2xs);
	flex-wrap: wrap;
}

.lg-card__date {
	font-size: var(--lg-step--2);
	color: var(--lg-text-muted);
}

/* --- Page links (multi-page posts) ------------------------------------ */

.lg-page-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lg-space-3xs);
	margin-top: var(--lg-space-l);
	font-size: var(--lg-step--1);
}

.lg-page-links__label {
	font-weight: 700;
	color: var(--lg-forest);
	margin-right: var(--lg-space-3xs);
}

.lg-page-links a,
.lg-page-links > span:not(.lg-page-links__label) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.25rem;
	height: 2.25rem;
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-s);
	text-decoration: none;
	font-weight: 600;
}

/* --- Footer lists ------------------------------------------------------ */

.lg-footer__menu,
.lg-footer__areas {
	margin: 0;
	padding: 0;
	list-style: none;
}

.lg-footer__menu li,
.lg-footer__areas li {
	margin: 0;
	padding: var(--lg-space-3xs) 0;
	border-top: 1px solid rgba(245, 241, 232, 0.12);
}

.lg-footer__menu li:first-child,
.lg-footer__areas li:first-child {
	border-top: 0;
	padding-top: 0;
}

.lg-footer__menu a {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	font-weight: 600;
}

.lg-footer__menu a::before {
	content: "\203A";
	color: var(--lg-fresh);
	font-weight: 700;
}

/* --- Small layout utilities used by 404 and friends -------------------- */

.lg-center-block {
	margin-inline: auto;
}

.lg-center-block--sm {
	max-width: 24rem;
}

.lg-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lg-space-xs);
}

.lg-actions--center {
	justify-content: center;
}

/* --- Pattern: numbered step cards -------------------------------------- */

.lg-steps-cols {
	gap: var(--lg-space-l);
}

.lg-step-card {
	position: relative;
	height: 100%;
	padding-top: var(--lg-space-m);
	border-top: 2px solid var(--lg-border);
}

.lg-step-card__num {
	margin: 0 0 var(--lg-space-2xs);
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-2);
	font-weight: 700;
	line-height: 1;
	color: var(--lg-fresh);
}

.lg-step-card h3 {
	font-size: var(--lg-step-1);
	margin-bottom: var(--lg-space-3xs);
}

.lg-step-card p:last-child {
	margin-bottom: 0;
	color: var(--lg-text-muted);
	font-size: var(--lg-step--1);
}

/* --- Pattern: service-area links --------------------------------------- */

.lg-area-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--lg-space-2xs);
	margin: 0;
}

.lg-area-links a {
	display: inline-block;
	padding: 0.45em 1.1em;
	background-color: var(--lg-white);
	border: 1px solid var(--lg-border-strong);
	border-radius: var(--lg-radius-pill);
	font-size: var(--lg-step--1);
	font-weight: 600;
	color: var(--lg-forest);
	text-decoration: none;
	transition: background-color var(--lg-duration) var(--lg-ease), border-color var(--lg-duration) var(--lg-ease);
}

.lg-area-links a:hover,
.lg-area-links a:focus-visible {
	background-color: var(--lg-fresh-soft);
	border-color: var(--lg-fresh);
}

/* --- Pattern: form panel ----------------------------------------------- */

.lg-form-panel {
	padding: var(--lg-space-l);
	background-color: var(--lg-cream);
	border: 1px solid var(--lg-border);
	border-radius: var(--lg-radius-l);
	box-shadow: var(--lg-shadow-s);
}

.lg-form-panel h3 {
	margin-top: 0;
}

/* Third-party form plugins inherit the theme's field styling. */
.lg-form-panel .wpcf7-form-control-wrap,
.lg-form-panel .wpforms-field {
	margin-bottom: var(--lg-space-s);
}

.lg-form-panel input[type="submit"],
.lg-form-panel button[type="submit"] {
	width: 100%;
}

/* --- Pattern: gallery block -------------------------------------------- */

.lg-block-gallery.wp-block-gallery img {
	border-radius: var(--lg-radius-m);
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

/* --- Pattern helpers: cards, quotes and features inside core blocks ----- */

/* Core's constrained layout adds top margins to every child; inside our
   card components the padding already provides the rhythm. */
.lg-feature > :first-child,
.lg-card__body > :first-child,
.lg-quote > :first-child,
.lg-step-card > :first-child,
.lg-form-panel > :first-child {
	margin-top: 0;
}

.lg-feature > :last-child,
.lg-card__body > :last-child,
.lg-quote > :last-child,
.lg-step-card > :last-child,
.lg-form-panel > :last-child {
	margin-bottom: 0;
}

/* In the testimonial pattern the name and location are plain paragraphs, so
   core's constrained-layout gap pushes them apart. Pull them back together. */
.lg-quote > .lg-quote__name {
	margin-top: 0;
	margin-bottom: 0;
}

.lg-quote > .lg-quote__meta {
	margin-top: var(--lg-space-3xs);
	margin-bottom: 0;
}

.lg-stat > .lg-stat__label,
.lg-step-card > .lg-step-card__num + * {
	margin-top: var(--lg-space-3xs);
}

/* When a pattern uses an image block as the card media, strip the block's
   own margins so it sits flush against the card edge. */
.lg-card > .lg-card__media,
.lg-card > figure.lg-card__media {
	margin: 0;
	border-radius: 0;
}

.lg-card__media.wp-block-image img {
	border-radius: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Columns wearing a layout class become a real grid. The selectors are
   doubled up on purpose: core's .wp-block-columns rule has the same
   specificity as a bare .lg-grid, and stylesheet order is not guaranteed. */
.wp-block-columns.lg-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr));
	gap: var(--lg-space-m);
}

.wp-block-columns.lg-grid.lg-grid--2 {
	grid-template-columns: repeat(auto-fit, minmax(min(22rem, 100%), 1fr));
}

.wp-block-columns.lg-grid.lg-grid--4 {
	grid-template-columns: repeat(auto-fit, minmax(min(13rem, 100%), 1fr));
}

.wp-block-columns.lg-split {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--lg-space-xl);
	align-items: center;
}

@media (min-width: 55em) {
	.wp-block-columns.lg-split {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--lg-space-2xl);
	}
}

.wp-block-columns.lg-grid > .wp-block-column,
.wp-block-columns.lg-split > .wp-block-column {
	min-width: 0;
	flex-basis: auto;
}

/* Stats sit inside plain columns; keep them centred and evenly spaced. */
.wp-block-column.lg-stat > * {
	margin-top: 0;
}

/* Dark sections: make sure pattern text inherits the light colour. */
.lg-section--dark p,
.lg-section--dark li {
	color: inherit;
}

/* CTA band inside a pattern group. */
.wp-block-group.lg-cta > .wp-block-columns {
	margin-bottom: 0;
}


/* =========================================================================
   19. CONTENT TYPES, FORM & SCHEMA COMPONENTS
   Services, projects, testimonials, FAQs and the built-in quote form.
   ========================================================================= */

/* --- Service & feature extras ------------------------------------------ */

.lg-feature h3 a,
.lg-card__title a {
	color: inherit;
	text-decoration: none;
}

.lg-feature h3 a:hover,
.lg-feature h3 a:focus-visible {
	color: var(--lg-moss);
	text-decoration: underline;
}

.lg-feature__price,
.lg-card__price {
	margin: var(--lg-space-2xs) 0 0;
	font-size: var(--lg-step--1);
	font-weight: 700;
	color: var(--lg-forest);
}

/* Pin the "learn more" link to the foot of the tile so a row of services
   lines up even when only some of them carry a price. */
.lg-feature__more {
	margin: var(--lg-space-s) 0 0;
	padding-top: var(--lg-space-2xs);
}

.lg-feature > .lg-feature__more:last-child {
	margin-top: auto;
}

/* The archive reuses .lg-feature for services without a photo; keep the
   cards in a row the same height. */
.lg-grid > .lg-feature,
.lg-grid > .lg-card {
	height: 100%;
}

/* --- Service detail bar ------------------------------------------------ */

.lg-service-bar {
	background-color: var(--lg-cream);
	border-bottom: 1px solid var(--lg-border);
}

.lg-service-bar__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lg-space-s) var(--lg-space-xl);
	padding-block: var(--lg-space-s);
}

.lg-service-bar__price strong {
	font-family: var(--lg-font-display);
	font-size: var(--lg-step-2);
	color: var(--lg-forest);
	display: block;
	line-height: 1.1;
}

.lg-service-bar__areas {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lg-space-2xs) var(--lg-space-s);
}

.lg-areas--center {
	justify-content: center;
}

/* --- Project meta and before/after ------------------------------------- */

.lg-project-meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lg-space-2xs) var(--lg-space-m);
	margin: 0 0 var(--lg-space-l);
	padding: 0;
	list-style: none;
	font-size: var(--lg-step--1);
	font-weight: 600;
	color: var(--lg-text-muted);
}

.lg-project-meta li {
	display: flex;
	align-items: center;
	gap: 0.45em;
	margin: 0;
}

.lg-project-meta svg {
	width: 1.1em;
	height: 1.1em;
	color: var(--lg-moss);
}

.lg-beforeafter {
	display: grid;
	gap: var(--lg-space-m);
	margin-bottom: var(--lg-space-xl);
	grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 45em) {
	.lg-beforeafter {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.lg-beforeafter__item {
	position: relative;
	margin: 0;
	border-radius: var(--lg-radius-l);
	overflow: hidden;
	background-color: var(--lg-stone);
}

.lg-beforeafter__item img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	display: block;
}

.lg-beforeafter__item figcaption {
	position: absolute;
	top: var(--lg-space-2xs);
	left: var(--lg-space-2xs);
	margin: 0;
	padding: 0.3em 0.9em;
	border-radius: var(--lg-radius-pill);
	background-color: rgba(22, 41, 29, 0.85);
	color: var(--lg-white);
	font-size: var(--lg-step--2);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	text-align: left;
}

/* --- Block editor notices ---------------------------------------------- */

.lg-block-empty {
	margin: 0;
	padding: var(--lg-space-m);
	border: 1px dashed var(--lg-border-strong);
	border-radius: var(--lg-radius-m);
	background-color: var(--lg-cream);
	color: var(--lg-text-muted);
	font-size: var(--lg-step--1);
	text-align: center;
}

/* --- Quote form -------------------------------------------------------- */

.lg-form-row {
	margin: 0 0 var(--lg-space-s);
}

.lg-form-row label {
	display: block;
	margin-bottom: var(--lg-space-3xs);
}

.lg-form-required {
	color: #a8332f;
	margin-left: 0.15em;
}

.lg-form-row.has-error input,
.lg-form-row.has-error textarea,
.lg-form-row.has-error select {
	border-color: #a8332f;
}

.lg-form-error {
	display: block;
	margin-top: var(--lg-space-3xs);
	font-size: var(--lg-step--1);
	font-weight: 600;
	color: #a8332f;
}

.lg-form-consent {
	margin: var(--lg-space-m) 0;
	font-size: var(--lg-step--1);
}

.lg-form-consent label {
	display: flex;
	align-items: flex-start;
	gap: var(--lg-space-2xs);
	font-weight: 400;
	color: var(--lg-text);
	margin: 0;
}

.lg-form-consent input {
	width: auto;
	margin-top: 0.3em;
	flex: none;
}

/* The honeypot must be reachable by bots but invisible and unreachable to
   people — so it is moved off-screen rather than display:none. */
.lg-hp {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.lg-form-notice {
	padding: var(--lg-space-m);
	border-radius: var(--lg-radius-m);
	margin-bottom: var(--lg-space-m);
}

.lg-form-notice > :last-child {
	margin-bottom: 0;
}

.lg-form-notice--success {
	background-color: var(--lg-fresh-soft);
	border: 1px solid var(--lg-fresh);
	color: var(--lg-forest-deep);
}

.lg-form-notice--success h3 {
	margin-top: 0;
	font-size: var(--lg-step-2);
}

.lg-form-notice--error {
	background-color: #fdecec;
	border: 1px solid #e4b4b2;
	color: #7a221f;
}

.lg-form-notice--error p {
	margin: 0;
	font-weight: 600;
}

/* A form dropped straight into a page, outside the panel, still reads well. */
.lg-content .lg-form-panel {
	max-width: var(--lg-content-width);
	margin-inline: auto;
}
