/* =========================================================================
   Leave Our Hills Alone - theme styles

   Powered by ObjectNow. https://object.now
   Copyright (c) ObjectNow. Released under the GPL-2.0-or-later licence.
   Tokens are injected as CSS custom properties from the Customizer.
   ========================================================================= */

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

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



@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: .001ms !important;
		transition-duration: .001ms !important;
	}
}

body.loha {
	margin: 0;
	background: var(--loha-cream, #f0eeea);
	color: var(--loha-ink, #12211a);
	font-family: var(--loha-font-body);
	font-size: 16px;
	line-height: 1.75;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}

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

a { color: var(--loha-sage-dark); text-decoration: none; }
a:hover { text-decoration: underline; }

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

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0);
	white-space: nowrap; border: 0;
}

.loha-skip-link:focus {
	position: fixed !important;
	top: 12px; left: 12px;
	width: auto; height: auto;
	clip: auto; z-index: 999;
	padding: 12px 18px;
	background: #fff; color: var(--loha-forest);
	border-radius: 6px;
}

/* ------------------------------------------------------------- Typography */
h1, h2, h3, h4, h5, h6, .loha-serif {
	font-family: var(--loha-font-head);
	font-weight: 500;
	color: var(--loha-forest);
	line-height: 1.14;
	letter-spacing: -0.005em;
	margin: 0 0 .5em;
}

h1 { font-size: clamp(2.4rem, 5vw, 3.9rem); }
h2 { font-size: clamp(1.9rem, 3.4vw, 2.65rem); }
h3 { font-size: clamp(1.2rem, 2vw, 1.45rem); }
h4 { font-size: 1.05rem; }

p { margin: 0 0 1.1em; }
p:last-child { margin-bottom: 0; }

.loha-eyebrow {
	font-family: var(--loha-font-body);
	font-size: .76rem;
	font-weight: 700;
	letter-spacing: .13em;
	text-transform: uppercase;
	color: var(--loha-sage-dark);
	margin: 0 0 .85rem;
	line-height: 1.5;
}
.loha-eyebrow a { color: inherit; }
.loha-eyebrow-dot { margin: 0 .55em; opacity: .6; }
.loha-eyebrow-meta { color: inherit; opacity: .95; }

.loha-rule {
	display: block;
	width: 56px; height: 3px;
	background: var(--loha-sage);
	border-radius: 2px;
	margin: 1.1rem 0 1.4rem;
}
.loha-rule-short { width: 40px; height: 2px; margin: .6rem 0 1rem; }
.loha-center { text-align: center; }
.loha-center .loha-rule { margin-inline: auto; }

/* ----------------------------------------------------------------- Layout */
.loha-container {
	width: 100%;
	max-width: var(--loha-width, 1240px);
	margin-inline: auto;
	padding-inline: 28px;
}
.loha-container-narrow { max-width: 800px; }

.loha-section { padding: clamp(56px, 7vw, 100px) 0; }
.loha-section-tight { padding: clamp(40px, 4vw, 64px) 0; }
.loha-section-dark {
	background: var(--loha-forest);
	color: #e6eae4;
	position: relative;
	overflow: hidden;
}
.loha-section-dark h1,
.loha-section-dark h2,
.loha-section-dark h3,
.loha-section-dark h4 { color: #fff; }
.loha-section-dark .loha-eyebrow { color: var(--loha-sage); }

/* Faint fern texture on dark bands, drawn in CSS so no image is needed. */
.loha-section-dark::before,
.loha-band-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image:
		radial-gradient(circle at 12% 18%, rgba(131,175,93,.07), transparent 34%),
		radial-gradient(circle at 88% 78%, rgba(131,175,93,.06), transparent 36%);
	pointer-events: none;
}
.loha-section-dark > *,
.loha-band-cta > * { position: relative; z-index: 1; }

.loha-section-heading { max-width: 720px; margin-bottom: 2.6rem; }
.loha-section-heading-center { margin-inline: auto; text-align: center; }
.loha-section-heading-center .loha-rule { margin-inline: auto; }

.loha-leaf-divider {
	display: flex; align-items: center; justify-content: center;
	gap: 14px; margin: 1rem 0 2.4rem; color: var(--loha-sage);
}
.loha-leaf-divider::before,
.loha-leaf-divider::after {
	content: ""; width: 54px; height: 2px;
	background: currentColor; opacity: .5; border-radius: 2px;
}

/* ---------------------------------------------------------------- Buttons */
.loha-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 13px 22px;
	border: 1px solid transparent;
	border-radius: calc(var(--loha-radius, 8px) - 2px);
	font-family: var(--loha-font-body);
	font-size: .92rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: .005em;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .18s ease, color .18s ease, border-color .18s ease, transform .18s ease;
}
.loha-btn:hover { text-decoration: none; transform: translateY(-1px); }
.loha-btn .loha-btn-icon { flex: 0 0 auto; }

.loha-btn-primary { background: var(--loha-forest); color: #fff; }
.loha-btn-primary:hover { background: var(--loha-forest-3); color: #fff; }

.loha-btn-sage { background: var(--loha-sage); color: var(--loha-forest); }
.loha-btn-sage:hover { background: #93c06c; color: var(--loha-forest); }

/* The urgent second header button. Its colours come from the Customizer so a
   campaign can dial the urgency up or down without editing code. */
.loha-btn-alert { background: var(--loha-cta2-bg, #d9482f); color: var(--loha-cta2-fg, #fff); }
.loha-btn-alert:hover { background: var(--loha-cta2-bg, #d9482f); color: var(--loha-cta2-fg, #fff); filter: brightness(1.1); }
.loha-btn-alert:focus-visible { outline: 2px solid var(--loha-cta2-bg, #d9482f); outline-offset: 3px; }

.loha-btn-ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.55); }
.loha-btn-ghost:hover { background: rgba(255,255,255,.1); color: #fff; }

.loha-btn-outline { background: transparent; color: var(--loha-forest); border-color: var(--loha-forest); }
.loha-btn-outline:hover { background: var(--loha-forest); color: #fff; }

.loha-text-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: .9rem;
	font-weight: 700;
	color: var(--loha-sage-dark);
}
.loha-text-link:hover { text-decoration: none; color: var(--loha-forest); }
.loha-text-link .loha-icon { transition: transform .18s ease; }
.loha-text-link:hover .loha-icon { transform: translateX(3px); }

.loha-section-dark .loha-text-link,
.loha-footer .loha-text-link { color: var(--loha-sage); }

/* ----------------------------------------------------------------- Header */
.loha-header {
	background: var(--loha-forest);
	color: #fff;
	position: relative;
	z-index: 40;
}
body.loha-has-sticky-header .loha-header.is-sticky {
	position: sticky;
	top: 0;
}
.loha-header.is-scrolled { box-shadow: 0 10px 30px rgba(0,0,0,.22); }

.loha-header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	min-height: 84px;
}

.loha-brand {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	color: #fff;
	flex: 0 0 auto;
}
.loha-brand:hover { text-decoration: none; }

.loha-brand-mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px; height: 42px;
	border: 1.5px solid rgba(255,255,255,.55);
	border-radius: 7px;
	color: var(--loha-sage);
	flex: 0 0 auto;
}
/* An uploaded logo replaces the boxed leaf mark entirely. No border, no
   fixed square: it runs at its own aspect ratio at the height set in the
   Customizer, capped by the maximum width so it cannot crowd the menu. */
.loha-brand-logo {
	display: block;
	height: var(--loha-logo-h, 46px);
	width: auto;
	max-width: var(--loha-logo-mw, 260px);
	object-fit: contain;
	object-position: left center;
	flex: 0 0 auto;
}
.loha-brand-logo-footer {
	height: var(--loha-footer-logo-h, 52px);
	max-width: var(--loha-footer-logo-mw, 300px);
}
/* With no text beside it the flex gap would leave a dead space. */
.loha-brand-logo-only { gap: 0; }

.loha-brand-words {
	display: flex;
	flex-direction: column;
	font-family: var(--loha-font-body);
	font-weight: 700;
	font-size: 1.06rem;
	line-height: 1.16;
	letter-spacing: -0.01em;
}

/* Navigation */
.loha-nav { flex: 1 1 auto; display: flex; justify-content: flex-end; }

.loha-menu,
.loha-submenu { list-style: none; margin: 0; padding: 0; }

.loha-menu {
	display: flex;
	align-items: center;
	gap: 4px;
}
.loha-menu > li { position: relative; display: flex; align-items: center; }

.loha-menu-link {
	display: inline-flex;
	align-items: center;
	padding: 10px 12px;
	color: rgba(255,255,255,.92);
	font-size: .94rem;
	font-weight: 500;
	white-space: nowrap;
	position: relative;
}
.loha-menu-link:hover { color: #fff; text-decoration: none; }

.loha-menu > li > .loha-menu-link::after {
	content: "";
	position: absolute;
	left: 12px; right: 12px; bottom: 0;
	height: 2px;
	background: var(--loha-sage);
	border-radius: 2px;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .2s ease;
}
.loha-menu > li.loha-current > .loha-menu-link::after,
.loha-menu > li:hover > .loha-menu-link::after { transform: scaleX(1); }
.loha-menu > li.loha-current > .loha-menu-link { color: #fff; }

.loha-submenu-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: none;
	border: 0;
	padding: 4px 8px 4px 0;
	margin-left: -8px;
	color: rgba(255,255,255,.8);
	cursor: pointer;
}
.loha-submenu-toggle:hover { color: #fff; }
.loha-submenu-toggle .loha-caret { transition: transform .2s ease; }
.loha-submenu-toggle[aria-expanded="true"] .loha-caret { transform: rotate(180deg); }

.loha-submenu {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 244px;
	background: var(--loha-forest-2);
	border: 1px solid rgba(255,255,255,.1);
	border-radius: var(--loha-radius, 8px);
	padding: 8px;
	box-shadow: 0 22px 44px rgba(0,0,0,.35);
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity .18s ease, transform .18s ease, visibility .18s;
}
.loha-menu > li:hover > .loha-submenu,
.loha-menu > li:focus-within > .loha-submenu,
.loha-menu > li.is-open > .loha-submenu {
	opacity: 1; visibility: visible; transform: translateY(0);
}
.loha-submenu li { position: relative; }
.loha-submenu .loha-menu-link {
	display: block;
	width: 100%;
	padding: 9px 12px;
	border-radius: 5px;
	font-size: .9rem;
	color: rgba(255,255,255,.86);
}
.loha-submenu .loha-menu-link:hover { background: rgba(255,255,255,.08); color: #fff; }
.loha-submenu .loha-submenu { top: 0; left: 100%; margin-left: 6px; }
.loha-submenu .loha-submenu-toggle { position: absolute; right: 6px; top: 6px; transform: rotate(-90deg); }



/* ------------------------------------------------------- Rich body text */
/* Card, band and hero text fields accept real HTML: blank lines become
   paragraphs and links, bold, italics and short lists are kept. This wrapper
   makes that behave inside a card without inheriting page prose sizing. */
.loha-rich > *:first-child { margin-top: 0; }
.loha-rich > *:last-child { margin-bottom: 0; }
.loha-rich p { margin: 0 0 .85em; }
.loha-rich a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.loha-rich a:hover { color: var(--loha-sage); }
.loha-rich strong { font-weight: 700; }
.loha-rich em { font-style: italic; }

.loha-rich ul,
.loha-rich ol { margin: 0 0 .85em; padding-left: 1.15em; }
.loha-rich li { margin: 0 0 .35em; }
.loha-rich ul { list-style: disc; }
.loha-rich ol { list-style: decimal; }

.loha-rich h3,
.loha-rich h4 {
	font-family: var(--loha-font-head);
	font-size: 1.02rem;
	margin: 1em 0 .4em;
	line-height: 1.3;
}

.loha-rich blockquote {
	margin: 0 0 .85em;
	padding-left: 14px;
	border-left: 3px solid var(--loha-sage);
	font-style: italic;
}

.loha-rich-small { font-size: .86rem; }

/* Cards set their own colour and size, so the wrapper inherits rather than
   imposing anything of its own. */
.loha-card .loha-rich,
.loha-card-dark-body .loha-rich,
.loha-value .loha-rich,
.loha-band-copy .loha-rich,
.loha-megamenu-copy .loha-rich { color: inherit; font-size: inherit; line-height: inherit; }

/* On a dark background an underlined link at full opacity is too loud. */
.loha-card-dark-body .loha-rich a,
.loha-band-dark .loha-rich a,
.loha-section-dark .loha-rich a { color: var(--loha-sage); text-decoration-color: rgba(131,175,93,.5); }



/* ------------------------------------------------- Per item menu styling */
/* Each menu item can be given its own colour, badge and icon in
   Appearance then Menus. The colour is applied as a variable so the link,
   its hover state and its underline all move together. */
.loha-menu-icon { margin-right: 7px; opacity: .9; flex: 0 0 auto; }

.loha-menu-badge {
	display: inline-flex;
	align-items: center;
	margin-left: 7px;
	padding: 2px 7px;
	border-radius: 999px;
	background: var(--loha-menu-link, var(--loha-sage));
	color: var(--loha-forest);
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	line-height: 1.5;
}

.loha-menu-style-accent > .loha-menu-link { --loha-menu-link: var(--loha-menu-accent, var(--loha-sage)); }
.loha-menu-style-alert  > .loha-menu-link { --loha-menu-link: var(--loha-menu-alert, #e2553d); }

.loha-menu-style-accent > .loha-menu-link,
.loha-menu-style-alert > .loha-menu-link,
.loha-menu-style-custom > .loha-menu-link {
	color: var(--loha-menu-link);
	font-weight: 600;
}
.loha-menu-style-accent > .loha-menu-link:hover,
.loha-menu-style-alert > .loha-menu-link:hover,
.loha-menu-style-custom > .loha-menu-link:hover { color: var(--loha-menu-link); opacity: .82; }

.loha-menu > li.loha-menu-style-accent > .loha-menu-link::after,
.loha-menu > li.loha-menu-style-alert > .loha-menu-link::after,
.loha-menu > li.loha-menu-style-custom > .loha-menu-link::after { background: var(--loha-menu-link); }

/* Button style: a filled pill, for a single call to action in the menu. */
.loha-menu-style-button > .loha-menu-link {
	background: var(--loha-menu-link, var(--loha-menu-alert, #e2553d));
	color: #fff;
	border-radius: 999px;
	padding: 9px 18px;
	font-weight: 600;
}
.loha-menu-style-button > .loha-menu-link:hover { filter: brightness(1.08); color: #fff; }
.loha-menu > li.loha-menu-style-button > .loha-menu-link::after { display: none; }
.loha-menu-style-button .loha-menu-badge { background: rgba(255,255,255,.9); color: var(--loha-ink); }

/* ------------------------------------------------------- Feature panel */
/* A mega menu that spans the header rather than a narrow dropdown. The
   positioning context is .loha-header, which is already relative, so the panel
   can never overflow the right edge of the window. Do not make
   .loha-header-inner relative: the mobile nav panel is positioned against
   .loha-header and would then be inset by the container padding. */
.loha-menu > li.loha-has-panel { position: static; }

.loha-megamenu {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	background: var(--loha-forest-2);
	border-top: 1px solid rgba(255,255,255,.1);
	box-shadow: 0 26px 50px rgba(0,0,0,.38);
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity .2s ease, transform .2s ease, visibility .2s;
	z-index: 5;
}
.loha-menu > li.loha-has-panel:hover > .loha-megamenu,
.loha-menu > li.loha-has-panel:focus-within > .loha-megamenu,
.loha-menu > li.loha-has-panel.is-open > .loha-megamenu {
	opacity: 1; visibility: visible; transform: translateY(0);
}

.loha-megamenu-inner {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	gap: 40px;
	padding-top: 30px;
	padding-bottom: 30px;
	align-items: start;
}

.loha-megamenu-feature { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 20px; align-items: start; }
.loha-megamenu-media { display: block; border-radius: var(--loha-radius, 8px); overflow: hidden; }
.loha-megamenu-media img { display: block; width: 100%; height: 130px; object-fit: cover; }
.loha-megamenu-copy .loha-eyebrow { margin: 0 0 6px; color: var(--loha-sage); }
.loha-megamenu-copy h3 {
	font-family: var(--loha-font-head);
	font-size: 1.24rem;
	margin: 0 0 8px;
	color: #fff;
	line-height: 1.25;
}
.loha-megamenu-copy p { margin: 0 0 12px; font-size: .88rem; line-height: 1.65; color: rgba(255,255,255,.7); }

.loha-megamenu-links { border-left: 1px solid rgba(255,255,255,.12); padding-left: 36px; }
.loha-submenu-mega {
	position: static;
	opacity: 1;
	visibility: visible;
	transform: none;
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	min-width: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 2px 18px;
}
.loha-submenu-mega > li > .loha-menu-link {
	padding: 10px 12px 10px 0;
	border-radius: 5px;
	border-bottom: 1px solid rgba(255,255,255,.07);
}
.loha-submenu-mega > li > .loha-menu-link:hover { background: transparent; padding-left: 6px; color: #fff; }


/* Two buttons side by side need a little more room than one. */
.loha-header-cta2 { margin-right: 8px; }

.loha-header-actions { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; }
.loha-nav-mobile-cta { display: none; }

.loha-burger {
	display: none;
	align-items: center;
	justify-content: center;
	width: 44px; height: 44px;
	background: transparent;
	border: 1px solid rgba(255,255,255,.28);
	border-radius: 7px;
	cursor: pointer;
	color: #fff;
}
.loha-burger-bars { display: block; width: 18px; }
.loha-burger-bars i {
	display: block; height: 2px; background: currentColor;
	border-radius: 2px; margin: 3.5px 0;
	transition: transform .2s ease, opacity .2s ease;
}
.loha-burger[aria-expanded="true"] .loha-burger-bars i:nth-child(1) { transform: translateY(5.5px) rotate(45deg); }
.loha-burger[aria-expanded="true"] .loha-burger-bars i:nth-child(2) { opacity: 0; }
.loha-burger[aria-expanded="true"] .loha-burger-bars i:nth-child(3) { transform: translateY(-5.5px) rotate(-45deg); }

/* -------------------------------------------------------------- Page hero */
.loha-page-hero {
	background-color: var(--loha-forest);
	background-size: cover;
	background-position: center;
	color: #fff;
	display: flex;
	align-items: center;
	min-height: 420px;
	padding: 72px 0;
}
.loha-page-hero-large { min-height: 470px; }
.loha-page-hero-post { min-height: 420px; padding: 64px 0; }
.loha-page-hero-compact { min-height: 320px; }
.loha-page-hero-tall { min-height: min(78vh, 720px); }

.loha-page-hero-inner { max-width: 720px; }
.loha-page-hero-title { color: #fff; margin: 0 0 .5rem; }
.loha-page-hero-post .loha-page-hero-title { font-size: clamp(2.1rem, 4vw, 3.15rem); }
.loha-page-hero-text {
	color: rgba(255,255,255,.86);
	font-size: 1rem;
	max-width: 480px;
	margin-top: 1.1rem;
}
.loha-page-hero .loha-eyebrow { color: var(--loha-sage); }
.loha-page-hero .loha-rule { background: var(--loha-sage); }

.loha-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	font-size: .84rem;
	margin-top: 1.5rem;
	color: rgba(255,255,255,.66);
}
.loha-page-hero-inner > .loha-breadcrumb:first-child { margin: 0 0 1.6rem; }
.loha-breadcrumb a { color: var(--loha-sage); }
.loha-breadcrumb-sep { opacity: .5; }

/* ---------------------------------------------------------- Home page hero */
.loha-hero {
	position: relative;
	background-color: var(--loha-forest);
	background-size: cover;
	background-position: center;
	color: #fff;
	display: flex;
	align-items: center;
	min-height: 660px;
	padding: 90px 0 150px;
}
.loha-hero-copy { max-width: 620px; }
.loha-hero-copy h1 {
	color: #fff;
	font-size: clamp(2.6rem, 5.4vw, 4rem);
	text-transform: uppercase;
	letter-spacing: -0.012em;
	line-height: 1.06;
}
.loha-hero-copy p {
	color: rgba(255,255,255,.86);
	max-width: 460px;
	margin-top: 1.3rem;
}
.loha-hero-buttons { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 2rem; }

/* Campaign status strip */
.loha-status {
	background: rgba(2,23,15,.82);
	backdrop-filter: blur(4px);
	border: 1px solid rgba(255,255,255,.12);
	border-radius: var(--loha-radius, 8px);
	color: #fff;
	display: grid;
	grid-template-columns: 1.2fr 1fr 1fr;
	gap: 0;
	overflow: hidden;
}
.loha-hero + .loha-status-wrap,
.loha-status-wrap { margin-top: -74px; position: relative; z-index: 5; }
.loha-status-cell {
	padding: 20px 26px;
	display: flex;
	flex-direction: column;
	gap: 3px;
	border-left: 1px solid rgba(255,255,255,.12);
	font-size: .88rem;
}
.loha-status-cell:first-child { border-left: 0; flex-direction: row; align-items: center; gap: 14px; }
.loha-status-cell .loha-icon { color: var(--loha-sage); flex: 0 0 auto; }
.loha-status-label {
	font-size: .72rem; font-weight: 700; letter-spacing: .12em;
	text-transform: uppercase; color: var(--loha-sage);
}
.loha-status-value { color: rgba(255,255,255,.86); }
.loha-status-value strong { color: #fff; font-weight: 700; }
.loha-status-cell a { color: var(--loha-sage); display: inline-flex; align-items: center; gap: 7px; font-weight: 700; }

/* ------------------------------------------------------------ Split section */
.loha-split {
	display: grid;
	grid-template-columns: 1fr 1.05fr;
	gap: clamp(32px, 5vw, 72px);
	align-items: center;
}
.loha-split-reverse .loha-split-media { order: -1; }
.loha-split-copy { max-width: 520px; }
.loha-split-media img {
	width: 100%;
	border-radius: var(--loha-radius, 8px);
	object-fit: cover;
}
.loha-split-collage {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
}
.loha-split-collage > *:first-child { grid-column: 1 / -1; }

/* --------------------------------------------------------------- Card grids */
.loha-card-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
	gap: 24px;
}
.loha-card-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.loha-card-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.loha-card-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.loha-card {
	background: var(--loha-panel);
	border: 1px solid var(--loha-line);
	border-radius: var(--loha-radius, 8px);
	padding: 22px;
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.loha-card h3 { font-family: var(--loha-font-body); font-size: 1rem; font-weight: 700; margin: 0; }
.loha-card p { font-size: .88rem; color: var(--loha-muted); margin: 0; line-height: 1.65; }
.loha-card-icon { color: var(--loha-forest); }

.loha-card-dark {
	background: var(--loha-forest-2);
	border: 1px solid rgba(255,255,255,.1);
	border-radius: var(--loha-radius, 8px);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	color: #dfe6dd;
	transition: transform .2s ease, border-color .2s ease;
}
.loha-card-dark:hover { transform: translateY(-3px); border-color: rgba(131,175,93,.5); }
.loha-card-dark-media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; }
.loha-card-dark-media img { width: 100%; height: 100%; object-fit: cover; }
.loha-card-dark-body { padding: 22px 22px 24px; display: flex; flex-direction: column; gap: 9px; }
.loha-card-dark-body h3 { color: #fff; margin: 0; }
.loha-card-dark-body p { font-size: .88rem; color: rgba(255,255,255,.68); margin: 0; }

.loha-icon-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px; height: 44px;
	border-radius: 999px;
	background: var(--loha-sage);
	color: var(--loha-forest);
	flex: 0 0 auto;
}
.loha-icon-badge-outline {
	background: transparent;
	border: 1.5px solid var(--loha-sage);
	color: var(--loha-sage);
}
.loha-card-dark-media .loha-icon-badge { position: absolute; left: 20px; bottom: -22px; }
.loha-card-dark-media + .loha-card-dark-body { padding-top: 34px; }

/* -------------------------------------------------------------- Facts strip */
.loha-facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	background: var(--loha-panel);
	border: 1px solid var(--loha-line);
	border-radius: var(--loha-radius, 8px);
	overflow: hidden;
}
.loha-fact {
	padding: 22px 20px;
	border-left: 1px solid var(--loha-line);
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.loha-fact:first-child { border-left: 0; }
.loha-fact .loha-icon { color: var(--loha-forest); margin-bottom: 6px; }
.loha-fact-value {
	font-family: var(--loha-font-head);
	font-size: 1.5rem;
	color: var(--loha-forest);
	line-height: 1.1;
}
.loha-fact-label { font-size: .8rem; color: var(--loha-muted); line-height: 1.45; }

/* ---------------------------------------------------------------- Values row */
.loha-values-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	gap: 0;
}
.loha-value {
	padding: 8px 22px;
	border-left: 1px solid rgba(255,255,255,.14);
	text-align: center;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
}
.loha-value:first-child { border-left: 0; }
.loha-value h3 { font-family: var(--loha-font-head); font-size: 1.2rem; margin: 0; color: #fff; }
.loha-value p { font-size: .84rem; color: rgba(255,255,255,.66); margin: 0; line-height: 1.6; }

/* --------------------------------------------------------------- News cards */
.loha-news-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
	margin-bottom: 2.2rem;
}
.loha-news-toolbar-title { margin: 0; }

.loha-news-filters { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.loha-news-filter {
	position: relative;
	padding: 8px 12px;
	font-size: .9rem;
	font-weight: 500;
	color: var(--loha-ink);
}
.loha-news-filter:hover { text-decoration: none; color: var(--loha-forest); }
.loha-news-filter.is-active { font-weight: 700; }
.loha-news-filter.is-active::after {
	content: "";
	position: absolute; left: 12px; right: 12px; bottom: 0;
	height: 2px; background: var(--loha-sage); border-radius: 2px;
}
.loha-news-search-toggle {
	background: none; border: 0; cursor: pointer;
	padding: 8px; color: var(--loha-forest);
	display: inline-flex;
}
.loha-news-search { margin-bottom: 2rem; }

.loha-news-card { display: flex; flex-direction: column; gap: 14px; }
.loha-news-card-media {
	display: block;
	border-radius: var(--loha-radius, 8px);
	overflow: hidden;
	background: var(--loha-panel);
	aspect-ratio: 16 / 10;
}
.loha-news-card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.loha-news-card:hover .loha-news-card-media img { transform: scale(1.03); }
.loha-news-card-body { display: flex; flex-direction: column; gap: 4px; }
.loha-news-card-body .loha-eyebrow { margin: 0; }
.loha-news-card-body time { font-size: .82rem; color: var(--loha-muted); }
.loha-news-card-body h3 { margin: .35rem 0 .2rem; }
.loha-news-card-body h3 a { color: var(--loha-forest); }
.loha-news-card-body h3 a:hover { text-decoration: none; color: var(--loha-sage-dark); }
.loha-news-card-excerpt { font-size: .9rem; color: var(--loha-muted); margin: 0 0 .6rem; }
.loha-news-card-body .loha-btn { align-self: flex-start; margin-top: .5rem; }

.loha-news-card-feature {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(28px, 4vw, 56px);
	align-items: center;
	padding-bottom: clamp(32px, 4vw, 52px);
	margin-bottom: clamp(32px, 4vw, 52px);
	border-bottom: 1px solid var(--loha-line);
}
.loha-news-card-feature .loha-news-card-media { aspect-ratio: 4 / 3; }
.loha-news-card-feature h3 { font-size: clamp(1.7rem, 2.8vw, 2.3rem); }

.loha-news-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: clamp(24px, 3vw, 40px);
}

/* Column counts chosen on the News Archive section. */
.loha-news-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.loha-news-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.loha-news-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(20px, 2vw, 28px); }
.loha-news-grid-tight { gap: clamp(20px, 2vw, 30px); }

/* Wide row layout: image beside the text, one post per row. */
.loha-news-grid-list { grid-template-columns: minmax(0, 1fr); gap: 0; }
.loha-news-card-row {
	display: grid;
	grid-template-columns: minmax(0, 300px) minmax(0, 1fr);
	gap: clamp(20px, 3vw, 36px);
	align-items: center;
	padding: clamp(22px, 2.4vw, 30px) 0;
	border-bottom: 1px solid var(--loha-line);
}
.loha-news-grid-list > .loha-news-card-row:first-child { padding-top: 4px; }
.loha-news-card-row .loha-news-card-media { aspect-ratio: 16 / 11; }
.loha-news-card-row h3 { font-size: 1.32rem; }
.loha-news-card-row .loha-news-card-body { padding: 0; }

/* Home page latest news: one tall card plus two stacked */
.loha-news-showcase {
	display: grid;
	grid-template-columns: 1.1fr 1fr;
	gap: clamp(22px, 3vw, 36px);
	align-items: start;
}
.loha-news-showcase-side { display: grid; gap: clamp(18px, 2vw, 28px); }
.loha-news-showcase-main {
	position: relative;
	border-radius: var(--loha-radius, 8px);
	overflow: hidden;
	min-height: 380px;
	display: flex;
	align-items: flex-end;
	background: var(--loha-forest);
}
.loha-news-showcase-main img {
	position: absolute; inset: 0;
	width: 100%; height: 100%; object-fit: cover;
}
.loha-news-showcase-main::after {
	content: "";
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(2,23,15,0) 34%, rgba(2,23,15,.9) 100%);
}
.loha-news-showcase-copy { position: relative; z-index: 2; padding: 28px; color: #fff; }
.loha-news-showcase-copy time { font-size: .82rem; color: rgba(255,255,255,.8); }
.loha-news-showcase-copy h3 { color: #fff; margin: .4rem 0 .7rem; }
.loha-news-showcase-copy h3 a { color: #fff; }
.loha-news-showcase-copy .loha-text-link { color: var(--loha-sage); }

.loha-news-mini { display: grid; grid-template-columns: 168px 1fr; gap: 18px; align-items: center; }
.loha-news-mini-media { border-radius: var(--loha-radius, 8px); overflow: hidden; aspect-ratio: 4 / 3; background: var(--loha-panel); }
.loha-news-mini-media img { width: 100%; height: 100%; object-fit: cover; }
.loha-news-mini time { font-size: .8rem; color: var(--loha-muted); }
.loha-news-mini h3 { font-size: 1.12rem; margin: .3rem 0 .6rem; }
.loha-news-mini h3 a { color: var(--loha-forest); }

/* ------------------------------------------------------------- Pagination */
.loha-pagination {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 8px;
	margin-top: clamp(36px, 4vw, 56px);
}
.loha-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px; height: 40px;
	padding: 0 10px;
	border: 1px solid var(--loha-line);
	border-radius: 6px;
	color: var(--loha-forest);
	font-size: .9rem;
	font-weight: 600;
	background: transparent;
}
.loha-pagination .page-numbers:hover { text-decoration: none; border-color: var(--loha-forest); }
.loha-pagination .page-numbers.current { background: var(--loha-forest); border-color: var(--loha-forest); color: #fff; }
.loha-pagination .page-numbers.dots { border-color: transparent; }

/* ----------------------------------------------------------- Post layout */
.loha-post-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 340px;
	gap: clamp(32px, 4vw, 64px);
	align-items: start;
}
.loha-post-layout-full { grid-template-columns: minmax(0, 1fr); max-width: 820px; margin-inline: auto; }

.loha-article-figure { margin: 0 0 2rem; }
.loha-article-figure img { width: 100%; border-radius: var(--loha-radius, 8px); }
.loha-article-figure figcaption { font-size: .82rem; color: var(--loha-muted); margin-top: .6rem; }

.loha-prose { font-size: 1rem; line-height: 1.82; color: #26332c; }
.loha-prose > *:first-child { margin-top: 0; }
.loha-prose h2 { font-size: clamp(1.6rem, 2.4vw, 2rem); margin: 2.2rem 0 .9rem; }
.loha-prose h3 { font-size: 1.3rem; margin: 1.8rem 0 .7rem; }
.loha-prose ul, .loha-prose ol { padding-left: 1.25rem; margin: 0 0 1.3rem; }
.loha-prose li { margin-bottom: .5rem; }
.loha-prose a { color: var(--loha-sage-dark); text-decoration: underline; text-underline-offset: 3px; }
.loha-prose blockquote {
	margin: 1.8rem 0;
	padding: 20px 26px;
	border-left: 3px solid var(--loha-sage);
	background: var(--loha-panel);
	border-radius: 0 var(--loha-radius, 8px) var(--loha-radius, 8px) 0;
	font-size: 1.05rem;
}
.loha-prose img { border-radius: var(--loha-radius, 8px); margin: 1.6rem 0; }
.loha-prose table { width: 100%; border-collapse: collapse; margin: 1.6rem 0; font-size: .92rem; }
.loha-prose th, .loha-prose td { border: 1px solid var(--loha-line); padding: 10px 12px; text-align: left; }
.loha-prose th { background: var(--loha-panel); font-weight: 700; }
.loha-prose code {
	background: var(--loha-panel); padding: .15em .4em;
	border-radius: 4px; font-size: .9em;
}

.loha-article-tags { margin-top: 2rem; display: flex; gap: 8px; flex-wrap: wrap; }
.loha-article-tags a {
	font-size: .8rem; padding: 5px 12px;
	border: 1px solid var(--loha-line); border-radius: 999px;
	color: var(--loha-muted);
}

.loha-share {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: 2.4rem;
	padding-top: 1.6rem;
	border-top: 1px solid var(--loha-line);
	flex-wrap: wrap;
}
.loha-share-label { font-size: .84rem; font-weight: 700; color: var(--loha-forest); }
.loha-share-links { display: flex; gap: 8px; }
.loha-share-links a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px; height: 36px;
	border-radius: 999px;
	background: var(--loha-forest);
	color: #fff;
	transition: background-color .18s ease;
}
.loha-share-links a:hover { background: var(--loha-sage); color: var(--loha-forest); }

.loha-post-nav {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
	margin-top: 2.4rem;
	padding-top: 1.8rem;
	border-top: 1px solid var(--loha-line);
}
.loha-post-nav-item { display: flex; align-items: center; gap: 14px; }
.loha-post-nav-item:hover { text-decoration: none; }
.loha-post-nav-next { justify-content: flex-end; text-align: right; }
.loha-post-nav-arrow {
	display: inline-flex; align-items: center; justify-content: center;
	width: 40px; height: 40px; flex: 0 0 auto;
	border: 1px solid var(--loha-line); border-radius: 999px;
	color: var(--loha-forest);
	transition: background-color .18s ease, color .18s ease;
}
.loha-post-nav-item:hover .loha-post-nav-arrow { background: var(--loha-forest); color: #fff; }
.loha-post-nav-copy { display: flex; flex-direction: column; gap: 3px; }
.loha-post-nav-copy small {
	font-size: .72rem; font-weight: 700; letter-spacing: .12em;
	text-transform: uppercase; color: var(--loha-sage-dark);
}
.loha-post-nav-copy strong {
	font-family: var(--loha-font-head);
	font-size: 1.08rem; font-weight: 500;
	color: var(--loha-forest); line-height: 1.25;
}
.loha-post-nav-item.is-empty { border: 0; }

/* ---------------------------------------------------------------- Sidebar */
.loha-sidebar { display: flex; flex-direction: column; gap: 24px; position: sticky; top: 108px; }
body:not(.loha-has-sticky-header) .loha-sidebar { top: 24px; }

.loha-side-card {
	background: var(--loha-panel);
	border: 1px solid var(--loha-line);
	border-radius: var(--loha-radius, 8px);
	padding: 24px;
}
.loha-side-title {
	font-size: 1.2rem;
	margin: 0;
	color: var(--loha-forest);
}
.loha-side-card p { font-size: .88rem; color: var(--loha-muted); line-height: 1.65; }
.loha-side-card .loha-btn { margin-top: 1rem; }

.loha-side-news, .loha-side-cats { background: transparent; border: 0; padding: 0; }
.loha-side-news .loha-rule, .loha-side-cats .loha-rule { margin-bottom: 1.1rem; }

.loha-side-news-list { list-style: none; margin: 0 0 1.1rem; padding: 0; display: grid; gap: 16px; }
.loha-side-news-list a { display: grid; grid-template-columns: 92px 1fr; gap: 14px; align-items: center; }
.loha-side-news-list a:hover { text-decoration: none; }
.loha-side-news-media {
	display: block; border-radius: 6px; overflow: hidden;
	aspect-ratio: 4 / 3; background: var(--loha-panel);
}
.loha-side-news-media img { width: 100%; height: 100%; object-fit: cover; }
.loha-side-news-copy { display: flex; flex-direction: column; gap: 4px; }
.loha-side-news-copy time { font-size: .7rem; font-weight: 700; letter-spacing: .1em; color: var(--loha-muted); }
.loha-side-news-copy strong {
	font-family: var(--loha-font-head);
	font-size: 1rem; font-weight: 500; line-height: 1.3;
	color: var(--loha-forest);
}
.loha-side-news-list a:hover strong { color: var(--loha-sage-dark); }

.loha-side-cat-list { list-style: none; margin: 0 0 1rem; padding: 0; }
.loha-side-cat-list li {
	display: flex; justify-content: space-between; gap: 12px;
	padding: 10px 0;
	border-bottom: 1px solid var(--loha-line);
	font-size: .9rem;
}
.loha-side-cat-list li:last-child { border-bottom: 0; }
.loha-side-cat-list a { color: var(--loha-forest); font-weight: 500; }
.loha-side-cat-list span { color: var(--loha-muted); }

.loha-side-subscribe {
	background: var(--loha-forest);
	border-color: rgba(255,255,255,.12);
	color: rgba(255,255,255,.8);
	text-align: left;
}
.loha-side-subscribe .loha-side-title { color: #fff; margin-top: .8rem; }
.loha-side-subscribe p { color: rgba(255,255,255,.7); }
.loha-side-icon {
	display: inline-flex; align-items: center; justify-content: center;
	width: 46px; height: 46px; border-radius: 999px;
	border: 1.5px solid var(--loha-sage); color: var(--loha-sage);
}

/* ------------------------------------------------------- Subscribe forms */
.loha-subscribe { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 1rem; }
.loha-subscribe input[type="email"] {
	flex: 1 1 180px;
	min-width: 0;
	padding: 12px 14px;
	border-radius: 6px;
	border: 1px solid rgba(255,255,255,.22);
	background: rgba(255,255,255,.06);
	color: #fff;
	font-family: inherit;
	font-size: .9rem;
}
.loha-subscribe input::placeholder { color: rgba(255,255,255,.5); }
.loha-subscribe-dark .loha-btn { width: 100%; justify-content: center; }
.loha-subscribe-band { flex-wrap: nowrap; min-width: 360px; }
.loha-subscribe-note { flex: 1 0 100%; font-size: .82rem; color: var(--loha-sage); margin: .4rem 0 0; }
.loha-hp { position: absolute; left: -9999px; }

/* ------------------------------------------------------------------ Bands */
.loha-band {
	background: var(--loha-forest);
	color: rgba(255,255,255,.82);
	background-size: cover;
	background-position: center;
	padding: 44px 0;
	position: relative;
	overflow: hidden;
}
.loha-band-inner {
	display: flex;
	align-items: center;
	gap: clamp(20px, 3vw, 40px);
	flex-wrap: wrap;
}
.loha-band-icon {
	display: inline-flex; align-items: center; justify-content: center;
	width: 66px; height: 66px; flex: 0 0 auto;
	border-radius: 999px;
	border: 1.5px solid var(--loha-sage);
	color: var(--loha-sage);
}
.loha-band-copy { flex: 1 1 320px; }
.loha-band-copy h2 { color: #fff; font-size: clamp(1.4rem, 2.2vw, 1.85rem); margin: 0 0 .35rem; }
.loha-band-copy p { color: rgba(255,255,255,.72); font-size: .93rem; margin: 0; max-width: 520px; }
.loha-band-action { flex: 0 0 auto; }

/* ----------------------------------------------------------------- Footer */
.loha-footer { background: var(--loha-forest); color: rgba(255,255,255,.72); }

.loha-footer-grid {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1fr 1.25fr;
	gap: clamp(24px, 3vw, 44px);
	padding-top: clamp(48px, 5vw, 72px);
	padding-bottom: clamp(36px, 4vw, 52px);
}
.loha-footer-brand .loha-social { margin-top: 1.5rem; }
.loha-footer-brand p {
	font-size: .86rem;
	line-height: 1.7;
	margin: 1.1rem 0;
	max-width: 300px;
	color: rgba(255,255,255,.62);
}
.loha-footer h4 {
	color: #fff;
	font-family: var(--loha-font-body);
	font-size: .95rem;
	font-weight: 700;
	margin: 0 0 1rem;
}
.loha-footer-links { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.loha-footer-links a { color: rgba(255,255,255,.66); font-size: .88rem; }
.loha-footer-links a:hover { color: #fff; text-decoration: none; }
.loha-footer-links li.loha-current a { color: var(--loha-sage); }

.loha-footer-panel {
	border: 1px solid rgba(131,175,93,.32);
	border-radius: var(--loha-radius, 8px);
	padding: 24px;
	display: flex;
	gap: 18px;
	align-items: flex-start;
	background: rgba(255,255,255,.02);
}

/* The statement panel can sit beside the link columns or, by default, as a
   full width band underneath them. Underneath reads better once the columns
   have more than a handful of links in them. */
.loha-footer-panel-below { grid-template-columns: 1.4fr 1fr 1fr 1fr; }
.loha-footer-panel-below .loha-footer-panel {
	grid-column: 1 / -1;
	align-items: center;
	margin-top: 8px;
	padding: 22px 28px;
}
.loha-footer-panel-below .loha-footer-panel > div { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 18px; }
.loha-footer-panel-below .loha-footer-panel strong { margin: 0; }
.loha-footer-panel-below .loha-footer-panel span { display: inline; }

.loha-footer-panel-mark { color: var(--loha-sage); flex: 0 0 auto; }
.loha-footer-panel-image { width: 66px; border-radius: 6px; flex: 0 0 auto; }
.loha-footer-panel strong {
	display: block;
	font-family: var(--loha-font-head);
	font-size: 1.22rem;
	font-weight: 500;
	line-height: 1.24;
	color: var(--loha-sage);
	margin-bottom: .7rem;
}
.loha-footer-panel span { display: block; font-size: .86rem; color: rgba(255,255,255,.72); line-height: 1.6; }

.loha-social { display: flex; gap: 9px; }
.loha-social a {
	display: inline-flex; align-items: center; justify-content: center;
	width: 36px; height: 36px; border-radius: 999px;
	border: 1px solid rgba(255,255,255,.2);
	color: rgba(255,255,255,.8);
	transition: background-color .18s ease, color .18s ease, border-color .18s ease;
}
.loha-social a:hover { background: var(--loha-sage); border-color: var(--loha-sage); color: var(--loha-forest); }
.loha-social-light a { border-color: var(--loha-line); color: var(--loha-forest); }

/* Header row: smaller and lighter than the footer set, so it reads as a
   secondary action beside the button rather than competing with it. */
.loha-social-in-menu { display: none; }
.loha-social-header { gap: 4px; margin-left: 14px; }
.loha-social-header a {
	width: 32px; height: 32px;
	border-color: transparent;
	color: rgba(255,255,255,.66);
}
.loha-social-header a:hover {
	background: transparent;
	border-color: rgba(131,175,93,.55);
	color: var(--loha-sage);
}
.loha-social-header a:focus-visible { outline: 2px solid var(--loha-sage); outline-offset: 2px; }

/* Inside the open menu panel on phones, where there is room to breathe. */
.loha-social-in-menu { margin: 18px 0 0; gap: 8px; }
.loha-social-in-menu a { width: 40px; height: 40px; border-color: rgba(255,255,255,.22); }

.loha-footer-base { border-top: 1px solid rgba(255,255,255,.1); }
.loha-footer-base-inner {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
	padding-top: 20px;
	padding-bottom: 20px;
}
.loha-footer-base p { margin: 0; font-size: .82rem; color: rgba(255,255,255,.55); }
.loha-footer-credit a { color: var(--loha-sage); }


/* ------------------------------------------------------------------- FAQ */
/* An accordion built from the same parts as the rest of the site: the sage
   rule, the card border, the chevron used in the navigation. */
.loha-faq { display: grid; gap: 0; max-width: 900px; margin: 0 auto; }
.loha-faq-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 clamp(28px, 3vw, 48px); max-width: none; }
.loha-section-heading + .loha-faq { margin-top: clamp(28px, 3vw, 44px); }

.loha-faq-item { border-bottom: 1px solid var(--loha-line); }
.loha-faq-cols-2 > .loha-faq-item:nth-last-child(-n+1) { border-bottom: 1px solid var(--loha-line); }

.loha-faq-question { margin: 0; font-family: var(--loha-font-body); }

.loha-faq-trigger {
	width: 100%;
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 22px 4px;
	background: none;
	border: 0;
	cursor: pointer;
	text-align: left;
	font-family: var(--loha-font-head);
	font-size: clamp(1.02rem, 1.3vw, 1.16rem);
	font-weight: 500;
	line-height: 1.4;
	color: var(--loha-ink);
	transition: color .18s ease;
}
.loha-faq-trigger:hover { color: var(--loha-sage-dark); }
.loha-faq-trigger:focus-visible { outline: 2px solid var(--loha-sage); outline-offset: 3px; border-radius: 4px; }

.loha-faq-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px; height: 38px;
	border-radius: 50%;
	border: 1px solid rgba(131,175,93,.45);
	color: var(--loha-sage-dark);
	flex: 0 0 auto;
}
.loha-faq-text { flex: 1 1 auto; }

.loha-faq-marker {
	flex: 0 0 auto;
	display: inline-flex;
	color: var(--loha-sage-dark);
	transition: transform .22s ease;
}
.loha-faq-item.is-open .loha-faq-marker { transform: rotate(180deg); }

.loha-faq-answer {
	padding: 0 4px 24px;
	font-size: .93rem;
	line-height: 1.75;
	color: var(--loha-muted);
	max-width: 68ch;
}
.loha-faq-answer[hidden] { display: none; }
.loha-faq-answer .loha-rich a { color: var(--loha-sage-dark); }


/* Topic groups. Questions that share a topic sit under one heading, and the
   groups need clear separation or the page reads as one long list. */
.loha-faq-groups { display: grid; gap: 0; }
.loha-faq-groups.is-grouped { gap: clamp(34px, 4vw, 56px); }

.loha-faq-group-head { margin-bottom: 18px; }
.loha-faq-group-title {
	font-family: var(--loha-font-head);
	font-size: clamp(1.3rem, 2vw, 1.65rem);
	line-height: 1.25;
	margin: 0;
	color: var(--loha-forest);
}
.loha-faq-group-head .loha-rule-short { margin: 12px 0 0; }
.loha-faq-group-intro { margin: 12px 0 0; color: var(--loha-muted); font-size: .93rem; max-width: 62ch; }

/* Rule style: a hairline above each topic after the first. */
.loha-faq-topics-rule.is-grouped > .loha-faq-group + .loha-faq-group {
	border-top: 1px solid var(--loha-line);
	padding-top: clamp(30px, 3.5vw, 48px);
}

/* Panel style: each topic in its own bordered card. */
.loha-faq-topics-panel.is-grouped > .loha-faq-group {
	border: 1px solid var(--loha-line);
	border-radius: var(--loha-radius, 8px);
	padding: clamp(22px, 2.6vw, 34px);
	background: rgba(255,255,255,.45);
}
.loha-faq-topics-panel.is-grouped .loha-faq-item:last-child { border-bottom: 0; }
.loha-faq-topics-panel.is-grouped .loha-faq-item:last-child .loha-faq-answer { padding-bottom: 4px; }

/* Jump links to each topic. */
.loha-faq-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 10px;
	justify-content: center;
	margin: 0 0 clamp(28px, 3vw, 40px);
}
.loha-faq-nav a {
	display: inline-flex;
	padding: 8px 16px;
	border: 1px solid var(--loha-line);
	border-radius: 999px;
	font-size: .84rem;
	font-weight: 600;
	color: var(--loha-forest);
	transition: background-color .18s ease, border-color .18s ease, color .18s ease;
}
.loha-faq-nav a:hover {
	background: var(--loha-sage);
	border-color: var(--loha-sage);
	color: var(--loha-forest);
	text-decoration: none;
}

/* Dark variant. */
.loha-faq-section.loha-section-dark .loha-faq-group-title { color: #fff; }
.loha-faq-section.loha-section-dark .loha-faq-group-intro { color: rgba(255,255,255,.7); }
.loha-faq-section.loha-section-dark .loha-faq-topics-rule.is-grouped > .loha-faq-group + .loha-faq-group { border-top-color: rgba(255,255,255,.14); }
.loha-faq-section.loha-section-dark .loha-faq-topics-panel.is-grouped > .loha-faq-group {
	border-color: rgba(255,255,255,.14);
	background: rgba(255,255,255,.03);
}
.loha-faq-section.loha-section-dark .loha-faq-nav a { border-color: rgba(255,255,255,.22); color: rgba(255,255,255,.82); }
.loha-faq-section.loha-section-dark .loha-faq-nav a:hover { background: var(--loha-sage); border-color: var(--loha-sage); color: var(--loha-forest); }

.loha-faq-foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 16px 22px;
	margin-top: clamp(28px, 3vw, 40px);
	text-align: center;
}
.loha-faq-foot p { margin: 0; color: var(--loha-muted); font-size: .95rem; }

/* Dark variant, matching the other dark bands. */
.loha-faq-section.loha-section-dark .loha-faq-item { border-bottom-color: rgba(255,255,255,.14); }
.loha-faq-section.loha-section-dark .loha-faq-trigger { color: #fff; }
.loha-faq-section.loha-section-dark .loha-faq-trigger:hover { color: var(--loha-sage); }
.loha-faq-section.loha-section-dark .loha-faq-icon { border-color: rgba(255,255,255,.28); color: var(--loha-sage); }
.loha-faq-section.loha-section-dark .loha-faq-marker { color: var(--loha-sage); }
.loha-faq-section.loha-section-dark .loha-faq-answer { color: rgba(255,255,255,.72); }
.loha-faq-section.loha-section-dark .loha-faq-answer .loha-rich a { color: var(--loha-sage); }
.loha-faq-section.loha-section-dark .loha-faq-foot p { color: rgba(255,255,255,.72); }


/* --------------------------------------------------------- Back to top */
/* Shape, colours and size all arrive as custom properties on the element
   itself, set from the Customizer, so no per-site stylesheet is needed. */
.loha-totop {
	position: fixed;
	bottom: 24px;
	z-index: 90;
	width: var(--loha-totop-size, 52px);
	height: var(--loha-totop-size, 52px);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 0;
	cursor: pointer;
	background: var(--loha-totop-bg, #02170f);
	color: var(--loha-totop-fg, #fff);
	box-shadow: 0 8px 22px rgba(0,0,0,.24);
	opacity: 0;
	visibility: hidden;
	transform: translateY(12px);
	transition: opacity .22s ease, transform .22s ease, visibility .22s,
		background-color .18s ease, color .18s ease;
}
.loha-totop.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.loha-totop:hover { background: var(--loha-totop-bg-hover, #83af5d); color: var(--loha-totop-fg-hover, #02170f); }
.loha-totop:focus-visible { outline: 2px solid var(--loha-sage); outline-offset: 3px; }
.loha-totop:active { transform: translateY(2px); }

.loha-totop-right { right: 24px; }
.loha-totop-left { left: 24px; }

.loha-totop-inner { display: inline-flex; align-items: center; gap: 8px; pointer-events: none; }
.loha-totop-label { font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }

/* Shapes. The clipped ones lose their shadow, since a box shadow follows the
   box and not the clip path, so they take a drop shadow filter instead. */
.loha-totop-shape-circle { border-radius: 50%; }
.loha-totop-shape-square { border-radius: 0; }
.loha-totop-shape-rounded { border-radius: 12px; }

.loha-totop-shape-rectangle {
	width: auto;
	min-width: calc(var(--loha-totop-size, 52px) * 1.7);
	padding: 0 18px;
	border-radius: 6px;
}

.loha-totop-shape-hexagon,
.loha-totop-shape-diamond,
.loha-totop-shape-shield,
.loha-totop-shape-star {
	box-shadow: none;
	filter: drop-shadow(0 6px 14px rgba(0,0,0,.3));
}
.loha-totop-shape-hexagon { clip-path: polygon(25% 3%, 75% 3%, 100% 50%, 75% 97%, 25% 97%, 0 50%); }
.loha-totop-shape-diamond { clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.loha-totop-shape-shield  { clip-path: polygon(50% 0, 100% 18%, 100% 62%, 50% 100%, 0 62%, 0 18%); }
.loha-totop-shape-star {
	clip-path: polygon(50% 0, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
}
/* A star's centre of mass sits below the middle of its box. */
.loha-totop-shape-star .loha-totop-inner { transform: translateY(3px); }

/* The label only makes sense on a shape with room for it. */
.loha-totop-has-label.loha-totop-shape-circle .loha-totop-label,
.loha-totop-has-label.loha-totop-shape-star .loha-totop-label,
.loha-totop-has-label.loha-totop-shape-diamond .loha-totop-label,
.loha-totop-has-label.loha-totop-shape-hexagon .loha-totop-label { display: none; }

@media (max-width: 820px) {
	.loha-totop { bottom: 16px; }
	.loha-totop-right { right: 16px; }
	.loha-totop-left { left: 16px; }
}

@media (prefers-reduced-motion: reduce) {
	.loha-totop { transition: opacity .01s, visibility .01s; transform: none; }
	.loha-totop.is-visible { transform: none; }
}

@media print { .loha-totop { display: none; } }


/* --------------------------------------------------------------- Gallery */
.loha-gallery { --loha-gallery-gap: 16px; }

.loha-gallery-item { margin: 0; position: relative; }
.loha-gallery-item img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--loha-radius, 8px);
	background: var(--loha-panel);
}
.loha-gallery-item figcaption {
	margin-top: 8px;
	font-size: .82rem;
	line-height: 1.5;
	color: var(--loha-muted);
}
.loha-section-dark .loha-gallery-item figcaption { color: rgba(255,255,255,.66); }

.loha-gallery-link { display: block; position: relative; overflow: hidden; border-radius: var(--loha-radius, 8px); }
.loha-gallery-link img { transition: transform .4s ease; }
.loha-gallery-link:hover img { transform: scale(1.04); }

.loha-gallery-zoom {
	position: absolute;
	right: 10px; bottom: 10px;
	display: inline-flex; align-items: center; justify-content: center;
	width: 34px; height: 34px;
	border-radius: 999px;
	background: rgba(2,23,15,.72);
	color: #fff;
	opacity: 0;
	transform: translateY(6px);
	transition: opacity .2s ease, transform .2s ease;
}
.loha-gallery-link:hover .loha-gallery-zoom,
.loha-gallery-link:focus-visible .loha-gallery-zoom { opacity: 1; transform: translateY(0); }

/* Fixed tile shapes. */
.loha-gallery-ratio-1-1 .loha-gallery-item img,
.loha-gallery-ratio-1-1 .loha-gallery-link { aspect-ratio: 1 / 1; }
.loha-gallery-ratio-4-3 .loha-gallery-item img,
.loha-gallery-ratio-4-3 .loha-gallery-link { aspect-ratio: 4 / 3; }
.loha-gallery-ratio-3-2 .loha-gallery-item img,
.loha-gallery-ratio-3-2 .loha-gallery-link { aspect-ratio: 3 / 2; }
.loha-gallery-ratio-16-9 .loha-gallery-item img,
.loha-gallery-ratio-16-9 .loha-gallery-link { aspect-ratio: 16 / 9; }
.loha-gallery-ratio-3-4 .loha-gallery-item img,
.loha-gallery-ratio-3-4 .loha-gallery-link { aspect-ratio: 3 / 4; }

/* Grid. */
.loha-gallery-grid .loha-gallery-tiles { display: grid; gap: var(--loha-gallery-gap); }
.loha-gallery-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.loha-gallery-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.loha-gallery-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.loha-gallery-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.loha-gallery-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

/* Masonry, using CSS columns so images keep their own proportions. */
.loha-gallery-masonry .loha-gallery-tiles { display: block; column-gap: var(--loha-gallery-gap); }
.loha-gallery-masonry .loha-gallery-cols-2 { column-count: 2; }
.loha-gallery-masonry .loha-gallery-cols-3 { column-count: 3; }
.loha-gallery-masonry .loha-gallery-cols-4 { column-count: 4; }
.loha-gallery-masonry .loha-gallery-cols-5 { column-count: 5; }
.loha-gallery-masonry .loha-gallery-item {
	break-inside: avoid;
	margin-bottom: var(--loha-gallery-gap);
}
.loha-gallery-masonry .loha-gallery-item img { height: auto; }

/* Carousel, built on scroll snapping so it swipes natively on a phone. */
.loha-carousel { position: relative; }
.loha-carousel-track {
	display: grid;
	grid-auto-flow: column;
	gap: var(--loha-gallery-gap);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	padding-bottom: 2px;
}
.loha-carousel-track::-webkit-scrollbar { display: none; }
.loha-carousel-track:focus-visible { outline: 2px solid var(--loha-sage); outline-offset: 4px; border-radius: var(--loha-radius, 8px); }
.loha-carousel-slide { scroll-snap-align: start; }

.loha-gallery-per-1 { grid-auto-columns: 100%; }
.loha-gallery-per-2 { grid-auto-columns: calc((100% - var(--loha-gallery-gap)) / 2); }
.loha-gallery-per-3 { grid-auto-columns: calc((100% - var(--loha-gallery-gap) * 2) / 3); }
.loha-gallery-per-4 { grid-auto-columns: calc((100% - var(--loha-gallery-gap) * 3) / 4); }

.loha-carousel-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex; align-items: center; justify-content: center;
	width: 44px; height: 44px;
	border: 0;
	border-radius: 999px;
	background: var(--loha-forest);
	color: #fff;
	cursor: pointer;
	box-shadow: 0 6px 18px rgba(0,0,0,.22);
	transition: background-color .18s ease, color .18s ease, opacity .18s ease;
	z-index: 2;
}
.loha-carousel-arrow:hover { background: var(--loha-sage); color: var(--loha-forest); }
.loha-carousel-arrow:focus-visible { outline: 2px solid var(--loha-sage); outline-offset: 3px; }
.loha-carousel-arrow[disabled] { opacity: .3; cursor: default; }
.loha-carousel-prev { left: -12px; }
.loha-carousel-next { right: -12px; }

.loha-carousel-dots { display: flex; justify-content: center; gap: 8px; margin-top: 18px; }
.loha-carousel-dots button {
	width: 9px; height: 9px;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: var(--loha-line);
	cursor: pointer;
	transition: background-color .18s ease, width .18s ease;
}
.loha-carousel-dots button.is-active { background: var(--loha-sage); width: 24px; }
.loha-section-dark .loha-carousel-dots button { background: rgba(255,255,255,.28); }
.loha-section-dark .loha-carousel-dots button.is-active { background: var(--loha-sage); }

/* Showcase. */
.loha-showcase-stage { position: relative; margin: 0 0 var(--loha-gallery-gap); }
.loha-showcase-stage img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--loha-radius, 8px);
	background: var(--loha-panel);
}
.loha-showcase-stage.loha-gallery-ratio-4-3 img { aspect-ratio: 4 / 3; }
.loha-showcase-stage.loha-gallery-ratio-3-2 img { aspect-ratio: 3 / 2; }
.loha-showcase-stage.loha-gallery-ratio-16-9 img { aspect-ratio: 16 / 9; }

.loha-showcase-expand {
	position: absolute;
	right: 14px; top: 14px;
	display: inline-flex; align-items: center; justify-content: center;
	width: 40px; height: 40px;
	border-radius: 999px;
	background: rgba(2,23,15,.72);
	color: #fff;
}
.loha-showcase-expand:hover { background: var(--loha-sage); color: var(--loha-forest); }

.loha-showcase-caption { margin-top: 10px; font-size: .86rem; color: var(--loha-muted); }
.loha-showcase-caption:empty { display: none; }

.loha-showcase-thumbs { display: grid; gap: var(--loha-gallery-gap); }
.loha-showcase-thumb {
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	border-radius: var(--loha-radius, 8px);
	overflow: hidden;
	position: relative;
	line-height: 0;
}
.loha-showcase-thumb img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.loha-showcase-thumb::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	border: 2px solid transparent;
	background: rgba(2,23,15,.35);
	transition: background-color .18s ease, border-color .18s ease;
}
.loha-showcase-thumb:hover::after { background: rgba(2,23,15,.1); }
.loha-showcase-thumb.is-active::after { background: transparent; border-color: var(--loha-sage); }
.loha-showcase-thumb:focus-visible { outline: 2px solid var(--loha-sage); outline-offset: 3px; }

/* Lightbox. */
.loha-lightbox {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 4vmin;
	background: rgba(2,23,15,.94);
	opacity: 0;
	visibility: hidden;
	transition: opacity .22s ease, visibility .22s;
}
.loha-lightbox.is-open { opacity: 1; visibility: visible; }
.loha-lightbox img {
	max-width: 100%;
	max-height: 82vh;
	border-radius: var(--loha-radius, 8px);
	display: block;
}
.loha-lightbox-caption {
	margin-top: 14px;
	text-align: center;
	color: rgba(255,255,255,.78);
	font-size: .88rem;
}
.loha-lightbox-count { display: block; margin-top: 6px; color: rgba(255,255,255,.5); font-size: .78rem; }
.loha-lightbox-close,
.loha-lightbox-prev,
.loha-lightbox-next {
	position: absolute;
	display: inline-flex; align-items: center; justify-content: center;
	width: 46px; height: 46px;
	border: 1px solid rgba(255,255,255,.22);
	border-radius: 999px;
	background: transparent;
	color: #fff;
	cursor: pointer;
	transition: background-color .18s ease, color .18s ease;
}
.loha-lightbox-close:hover,
.loha-lightbox-prev:hover,
.loha-lightbox-next:hover { background: var(--loha-sage); border-color: var(--loha-sage); color: var(--loha-forest); }
.loha-lightbox-close { top: 18px; right: 18px; }
.loha-lightbox-prev { left: 18px; top: 50%; transform: translateY(-50%); }
.loha-lightbox-next { right: 18px; top: 50%; transform: translateY(-50%); }

@media (max-width: 1024px) {
	.loha-gallery-cols-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.loha-gallery-cols-4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.loha-gallery-masonry .loha-gallery-cols-4,
	.loha-gallery-masonry .loha-gallery-cols-5 { column-count: 3; }
	.loha-gallery-per-4 { grid-auto-columns: calc((100% - var(--loha-gallery-gap) * 2) / 3); }
	.loha-carousel-prev { left: 4px; }
	.loha-carousel-next { right: 4px; }
}

@media (max-width: 820px) {
	.loha-gallery-cols-3,
	.loha-gallery-cols-4,
	.loha-gallery-cols-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.loha-gallery-masonry .loha-gallery-cols-3,
	.loha-gallery-masonry .loha-gallery-cols-4,
	.loha-gallery-masonry .loha-gallery-cols-5 { column-count: 2; }
	.loha-gallery-per-3,
	.loha-gallery-per-4 { grid-auto-columns: calc((100% - var(--loha-gallery-gap)) / 2); }
	.loha-showcase-thumbs.loha-gallery-cols-5,
	.loha-showcase-thumbs.loha-gallery-cols-6 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
	.loha-gallery-cols-2,
	.loha-gallery-cols-3,
	.loha-gallery-cols-4,
	.loha-gallery-cols-5 { grid-template-columns: minmax(0, 1fr); }
	.loha-gallery-masonry .loha-gallery-tiles { column-count: 1 !important; }
	.loha-gallery-per-2,
	.loha-gallery-per-3,
	.loha-gallery-per-4 { grid-auto-columns: 88%; }
	.loha-showcase-thumbs.loha-gallery-cols-4,
	.loha-showcase-thumbs.loha-gallery-cols-5,
	.loha-showcase-thumbs.loha-gallery-cols-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (prefers-reduced-motion: reduce) {
	.loha-carousel-track { scroll-behavior: auto; }
	.loha-gallery-link:hover img { transform: none; }
}



/* ------------------------------------------------------------------- Map */
.loha-map { position: relative; margin: 0; }
.loha-map-rounded > iframe,
.loha-map-rounded > .loha-map-gate {
	border-radius: var(--loha-radius, 8px);
	border: 1px solid var(--loha-line);
	overflow: hidden;
}

.loha-map > iframe,
.loha-map > .loha-map-gate {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
	background: var(--loha-panel);
}

/* Fixed shapes, so the map does not change height between screens. */
.loha-map-ratio-4-3 > iframe,
.loha-map-ratio-4-3 > .loha-map-gate { aspect-ratio: 4 / 3; }
.loha-map-ratio-3-2 > iframe,
.loha-map-ratio-3-2 > .loha-map-gate { aspect-ratio: 3 / 2; }
.loha-map-ratio-16-9 > iframe,
.loha-map-ratio-16-9 > .loha-map-gate { aspect-ratio: 16 / 9; }
.loha-map-ratio-21-9 > iframe,
.loha-map-ratio-21-9 > .loha-map-gate { aspect-ratio: 21 / 9; }
.loha-map-ratio-fixed > iframe,
.loha-map-ratio-fixed > .loha-map-gate { aspect-ratio: auto; height: 100%; }

/* The panel shown before the map is loaded. */
.loha-map-gate {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	background-color: var(--loha-forest-2);
	background-size: cover;
	background-position: center;
	padding: 28px;
}
.loha-map-gate::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(2,23,15,.72), rgba(2,23,15,.86));
}
.loha-map-gate-inner { position: relative; max-width: 420px; }
.loha-map-gate-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 54px; height: 54px;
	margin-bottom: 16px;
	border-radius: 999px;
	border: 1px solid rgba(131,175,93,.5);
	color: var(--loha-sage);
}
.loha-map-gate-note {
	margin: 14px 0 0;
	font-size: .8rem;
	line-height: 1.6;
	color: rgba(255,255,255,.66);
}


/* Width.
   Only the map changes width; the heading and caption stay in the ordinary
   content column, so a full width map is not left with its title pressed
   against the edge of the screen.

   The values below are a no-JavaScript fallback using the usual breakout
   trick, which only lands correctly when the parent happens to be centred in
   the window. Elementor containers, section padding and nested columns all
   break that assumption, which is how a full width map ends up shifted to one
   side with part of it off screen. The script measures each map's actual
   position and sets --loha-bleed-x and --loha-bleed-w accordingly, so the
   result is exact wherever the section is placed and at any screen size. */
.loha-map-width-content { max-width: none; }

.loha-map-width-wide,
.loha-map-width-full {
	position: relative;
	/*
	 * An Elementor container is a flex container, and a section can be a grid
	 * one. In either, giving a child an explicit width lets the parent's own
	 * alignment move it sideways, which then corrupts the measurement and
	 * throws the map off centre. Pinning the alignment takes the parent out of
	 * the equation entirely.
	 */
	align-self: flex-start;
	justify-self: start;
	width: var(--loha-bleed-w, 100vw);
	max-width: var(--loha-bleed-w, 100vw);
	margin-left: var(--loha-bleed-x, calc(50% - 50vw));
	margin-right: 0;
	transform: none;
}

/* The neutral state the script measures from: no width override, no offset,
   so the element reports where it naturally sits. */
.loha-map-measuring {
	width: auto !important;
	max-width: 100% !important;
	margin-left: 0 !important;
}

.loha-map-width-wide { --loha-bleed-w: min(100vw - 32px, 1600px); }

/* Edge to edge and rounded corners do not belong together. */
.loha-map-width-full:not(.loha-map-gutter).loha-map-rounded > iframe,
.loha-map-width-full:not(.loha-map-gutter).loha-map-rounded > .loha-map-gate {
	border-radius: 0;
	border-left: 0;
	border-right: 0;
}

.loha-map-width-custom { margin-left: auto; margin-right: auto; }

/* The caption follows the map, so it lines up with whatever width is in use. */
.loha-map-width-full > .loha-map-caption,
.loha-map-width-wide > .loha-map-caption {
	max-width: var(--loha-width, 1240px);
	margin-left: auto;
	margin-right: auto;
	padding: 0 clamp(16px, 4vw, 32px);
}

.loha-map-caption {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 8px 20px;
	margin-top: 12px;
	font-size: .84rem;
	line-height: 1.6;
	color: var(--loha-muted);
}
.loha-section-dark .loha-map-caption { color: rgba(255,255,255,.68); }

@media (max-width: 640px) {
	/* A wide map is unusable on a phone, so the shape squares up. */
	.loha-map-ratio-16-9 > iframe,
	.loha-map-ratio-16-9 > .loha-map-gate,
	.loha-map-ratio-21-9 > iframe,
	.loha-map-ratio-21-9 > .loha-map-gate { aspect-ratio: 4 / 3; }
	.loha-map-caption { flex-direction: column; }
}

/* ------------------------------------------------------------------ Forms */
.loha-form { display: grid; gap: 18px; }
.loha-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.loha-form label {
	display: block;
	font-size: .86rem;
	font-weight: 600;
	color: var(--loha-forest);
}
.loha-form .loha-required { color: #b4472f; }
.loha-form input[type="text"],
.loha-form input[type="email"],
.loha-form input[type="tel"],
.loha-form select,
.loha-form textarea {
	width: 100%;
	margin-top: 7px;
	padding: 12px 14px;
	border: 1px solid var(--loha-line);
	border-radius: 6px;
	background: #fff;
	font-family: inherit;
	font-size: .92rem;
	font-weight: 400;
	color: var(--loha-ink);
}
.loha-form textarea { min-height: 150px; resize: vertical; }
.loha-form select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--loha-muted) 50%), linear-gradient(135deg, var(--loha-muted) 50%, transparent 50%); background-position: calc(100% - 18px) 22px, calc(100% - 13px) 22px; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; }
.loha-form .loha-btn { justify-self: start; }
/* The thank you message is editable and can run to several paragraphs, so it
   is a block with an icon rather than a single line. */
.loha-form-success {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 12px;
	align-items: start;
	padding: 16px 18px;
	border-radius: 6px;
	background: rgba(131,175,93,.16);
	border: 1px solid var(--loha-sage);
	color: var(--loha-forest);
	font-size: .92rem;
	line-height: 1.6;
	margin-bottom: 1.4rem;
}
.loha-form-success-icon { color: var(--loha-sage-dark); margin-top: 2px; }
.loha-form-success .loha-rich p { margin: 0 0 .7em; }
.loha-form-success .loha-rich p:last-child { margin-bottom: 0; }
.loha-form-success .loha-rich a { color: var(--loha-sage-dark); }
.loha-form-error {
	padding: 14px 18px; border-radius: 6px;
	background: rgba(180,71,47,.1); border: 1px solid #b4472f;
	color: #7e2f1d; font-size: .9rem; margin-bottom: 1.4rem;
}
.loha-honeypot { position: absolute !important; left: -9999px; }

.loha-searchform { display: flex; gap: 8px; max-width: 480px; }
.loha-searchform input {
	flex: 1;
	padding: 12px 14px;
	border: 1px solid var(--loha-line);
	border-radius: 6px;
	background: #fff;
	font-family: inherit;
	font-size: .92rem;
}
.loha-searchform button {
	display: inline-flex; align-items: center; justify-content: center;
	width: 46px; border: 0; border-radius: 6px;
	background: var(--loha-forest); color: #fff; cursor: pointer;
}

/* ------------------------------------------------------- Contact section */
.loha-contact-grid {
	display: grid;
	grid-template-columns: 1.25fr 1fr;
	gap: clamp(32px, 5vw, 72px);
	align-items: start;
}
.loha-contact-grid > * { min-width: 0; }
.loha-contact-aside { border-left: 1px solid var(--loha-line); padding-left: clamp(24px, 3vw, 44px); }
.loha-contact-row {
	display: grid;
	grid-template-columns: 54px 1fr;
	gap: 18px;
	padding: 22px 0;
	border-bottom: 1px solid var(--loha-line);
}
.loha-contact-row:last-child { border-bottom: 0; }
.loha-contact-row-icon {
	display: inline-flex; align-items: center; justify-content: center;
	width: 54px; height: 54px; border-radius: 999px;
	background: var(--loha-forest); color: #fff;
}
.loha-contact-row h3 { font-family: var(--loha-font-head); font-size: 1.2rem; margin: 0 0 .35rem; }
.loha-contact-row p, .loha-contact-row address {
	font-size: .9rem; color: var(--loha-muted);
	margin: 0; font-style: normal; line-height: 1.65;
}
.loha-contact-row a { color: var(--loha-forest); }

/* ------------------------------------------------- Development page layout */
.loha-doc-layout {
	display: grid;
	grid-template-columns: 280px minmax(0, 1fr);
	gap: clamp(28px, 4vw, 56px);
	align-items: start;
}
.loha-doc-nav { position: sticky; top: 108px; display: flex; flex-direction: column; gap: 20px; }
body:not(.loha-has-sticky-header) .loha-doc-nav { top: 24px; }

.loha-doc-nav-card {
	background: var(--loha-panel);
	border: 1px solid var(--loha-line);
	border-radius: var(--loha-radius, 8px);
	overflow: hidden;
}
.loha-doc-nav-head {
	background: var(--loha-forest);
	color: #fff;
	padding: 18px 20px;
	font-family: var(--loha-font-head);
	font-size: 1.1rem;
}
.loha-doc-nav-list { list-style: none; margin: 0; padding: 0; }
.loha-doc-nav-list li { border-top: 1px solid var(--loha-line); }
.loha-doc-nav-list li:first-child { border-top: 0; }
.loha-doc-nav-list a {
	display: flex; align-items: center; gap: 12px;
	padding: 13px 20px;
	font-size: .9rem; font-weight: 500;
	color: var(--loha-ink);
}
.loha-doc-nav-list a:hover { text-decoration: none; background: rgba(255,255,255,.5); }
.loha-doc-nav-list .loha-icon { color: var(--loha-muted); flex: 0 0 auto; }
.loha-doc-nav-list .is-active { background: #fff; font-weight: 700; color: var(--loha-forest); box-shadow: inset 3px 0 0 var(--loha-sage); }
.loha-doc-nav-list .is-active .loha-icon { color: var(--loha-sage); }

.loha-doc-aside-card {
	background: var(--loha-panel);
	border: 1px solid var(--loha-line);
	border-radius: var(--loha-radius, 8px);
	padding: 20px;
}
.loha-doc-aside-card h4 { display: flex; align-items: center; gap: 9px; color: var(--loha-forest); margin-bottom: .6rem; }
.loha-doc-aside-card p { font-size: .86rem; color: var(--loha-muted); margin-bottom: 1rem; }

.loha-doc-block { margin-bottom: clamp(36px, 4vw, 56px); }
.loha-doc-block:last-child { margin-bottom: 0; }
.loha-doc-block h2 { margin-bottom: .3rem; }

/* --------------------------------------------------------------- Utilities */
.loha-image-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 140px;
	height: 100%;
	background: repeating-linear-gradient(45deg, #e4e2dc, #e4e2dc 10px, #eceae4 10px, #eceae4 20px);
	color: var(--loha-muted);
	border-radius: inherit;
}
.loha-empty { text-align: center; padding: 40px 0; }
.loha-empty .loha-searchform { margin: 1.6rem auto 0; }
.loha-404-search { margin-top: 2rem; display: flex; justify-content: center; }
.loha-page-links { margin-top: 1.6rem; font-size: .9rem; }

/* -------------------------------------------------- Elementor integration */
/* LOHA section widgets are designed to span the full window. Set the parent
   Elementor container to Full Width with zero padding, or add the CSS class
   loha-fullbleed to the widget. */
.elementor-widget-container > .loha-header,
.elementor-widget-container > .loha-footer,
.elementor-widget-container > .loha-hero,
.elementor-widget-container > .loha-page-hero,
.elementor-widget-container > .loha-band,
.elementor-widget-container > .loha-section { width: 100%; }

.loha-fullbleed > .elementor-widget-container {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
}

.elementor-editor-active .loha-header.is-sticky,
.elementor-editor-preview .loha-header.is-sticky { position: relative; }

/* --------------------------------------------------------------- Responsive */
@media (max-width: 1180px) {
	.loha-menu-link { padding: 10px 9px; font-size: .9rem; }
	.loha-footer-grid { grid-template-columns: 1.3fr 1fr 1fr 1fr; }
	.loha-footer-panel { grid-column: 1 / -1; }
	.loha-footer-panel-below .loha-footer-panel > div { display: block; }
}

@media (max-width: 1024px) {
	.loha-burger { display: inline-flex; }
	.loha-header-actions .loha-social-header { display: none; }
	/* Both buttons stack in the menu panel rather than crowding the burger. */
	.loha-header-actions .loha-header-cta2 { display: none; }
	.loha-nav-mobile-cta { display: flex; flex-wrap: wrap; gap: 10px; }
	.loha-nav-mobile-cta .loha-header-cta2 { margin-right: 0; }
	.loha-nav-mobile-cta .loha-social-in-menu { display: flex; }
	.loha-header-cta { display: none; }
	.loha-nav-mobile-cta { display: block; padding: 16px 4px 4px; }

	.loha-nav {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		background: var(--loha-forest-2);
		border-top: 1px solid rgba(255,255,255,.1);
		padding: 14px 20px 22px;
		display: none;
		max-height: calc(100vh - 84px);
		overflow-y: auto;
	}
	.loha-nav.is-open { display: block; }

	.loha-menu { flex-direction: column; align-items: stretch; gap: 0; }
	.loha-menu > li { display: block; border-bottom: 1px solid rgba(255,255,255,.08); position: relative; }
	.loha-menu-link { padding: 14px 4px; font-size: 1rem; }
	.loha-menu > li > .loha-menu-link::after { display: none; }
	.loha-menu > li.loha-current > .loha-menu-link { color: var(--loha-sage); }

	.loha-submenu-toggle {
		position: absolute; top: 8px; right: 0;
		width: 40px; height: 40px; margin: 0; padding: 0;
	}
	.loha-submenu {
		position: static;
		opacity: 1;
		visibility: visible;
		transform: none;
		display: none;
		box-shadow: none;
		border: 0;
		background: transparent;
		padding: 0 0 12px 14px;
		min-width: 0;
	}
	.loha-menu > li.is-open > .loha-submenu,
	.loha-submenu li.is-open > .loha-submenu { display: block; }
	.loha-submenu .loha-submenu { margin: 0; padding-left: 14px; }
	.loha-submenu .loha-submenu-toggle { transform: none; }

	/* The feature panel collapses into the ordinary accordion on small screens.
	   The image and the promotional copy are dropped so the menu stays short
	   and thumb friendly, leaving the links themselves. */
	.loha-megamenu {
		position: static;
		opacity: 1;
		visibility: visible;
		transform: none;
		display: none;
		background: transparent;
		border: 0;
		box-shadow: none;
	}
	.loha-menu > li.loha-has-panel.is-open > .loha-megamenu { display: block; }
	.loha-megamenu-inner { display: block; padding: 0 0 12px; }
	.loha-megamenu-feature { display: none; }
	.loha-megamenu-links { border-left: 0; padding-left: 14px; }
	.loha-submenu-mega { display: block; }
	.loha-submenu-mega > li > .loha-menu-link { border-bottom: 0; }
	.loha-menu-style-button > .loha-menu-link { display: inline-flex; margin: 8px 0; }

	.loha-post-layout { grid-template-columns: minmax(0, 1fr); }
	.loha-sidebar { position: static; }
	.loha-doc-layout { grid-template-columns: minmax(0, 1fr); }
	.loha-doc-nav { position: static; }
	.loha-news-showcase { grid-template-columns: minmax(0, 1fr); }
	.loha-contact-grid { grid-template-columns: minmax(0, 1fr); }
	.loha-contact-aside { border-left: 0; padding-left: 0; border-top: 1px solid var(--loha-line); padding-top: 32px; }
	.loha-status { grid-template-columns: 1fr; }
	.loha-status-cell { border-left: 0; border-top: 1px solid rgba(255,255,255,.12); }
	.loha-status-cell:first-child { border-top: 0; }
	.loha-card-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.loha-card-grid-3 { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
	.loha-news-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.loha-news-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 820px) {
	.loha-container { padding-inline: 20px; }
	.loha-split { grid-template-columns: minmax(0, 1fr); }
	.loha-faq-cols-2 { grid-template-columns: minmax(0, 1fr); }
	.loha-news-grid-2,
	.loha-news-grid-3,
	.loha-news-grid-4 { grid-template-columns: minmax(0, 1fr); }
	.loha-news-card-row { grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: start; }
	.loha-news-card-row .loha-news-card-media { aspect-ratio: 16 / 10; }
	.loha-split-reverse .loha-split-media { order: 0; }
	.loha-news-card-feature { grid-template-columns: minmax(0, 1fr); }
	.loha-footer-grid { grid-template-columns: 1fr 1fr; }
	.loha-values-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 26px 0; }
	.loha-value { border-left: 0; }
	.loha-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.loha-fact { border-left: 0; border-top: 1px solid var(--loha-line); }
	.loha-fact:nth-child(-n+2) { border-top: 0; }
	.loha-form-grid { grid-template-columns: minmax(0, 1fr); }
	.loha-post-nav { grid-template-columns: minmax(0, 1fr); }
	.loha-post-nav-next { justify-content: flex-start; text-align: left; flex-direction: row-reverse; }
	.loha-band-inner { flex-direction: column; align-items: flex-start; gap: 20px; }
	/* flex-basis sizes the main axis, which is the height once the container
	   is a column, so the copy block has to be reset or it reserves 320px of
	   empty space above the button. */
	.loha-band-copy { flex: 0 1 auto; width: 100%; }
	.loha-band-action { width: 100%; }
	.loha-band-action .loha-btn { width: auto; }
	.loha-subscribe-band { min-width: 0; width: 100%; }
}

@media (max-width: 560px) {
	body.loha { font-size: 15.5px; }
	.loha-header-inner { min-height: 72px; }
	.loha-brand-words { font-size: .98rem; }
	.loha-brand-logo { height: calc(var(--loha-logo-h, 46px) * .84); max-width: 190px; }
	.loha-brand-logo-footer { height: calc(var(--loha-footer-logo-h, 52px) * .88); max-width: 240px; }
	.loha-page-hero { min-height: 340px; padding: 56px 0; }
	.loha-hero { min-height: 540px; padding: 70px 0 120px; }
	.loha-news-mini { grid-template-columns: 110px 1fr; gap: 14px; }
	/* Stacked in one column, the columns need more room between them than they
	   do side by side, or the headings read as part of the list above. */
	.loha-footer-grid { grid-template-columns: minmax(0, 1fr); gap: 34px; }
	.loha-footer-panel { margin-top: 6px; }
	.loha-footer-brand .loha-social { margin-top: 1.3rem; }
	.loha-card-grid-2, .loha-card-grid-4 { grid-template-columns: minmax(0, 1fr); }
	.loha-values-grid { grid-template-columns: minmax(0, 1fr); }
	.loha-facts { grid-template-columns: minmax(0, 1fr); }
	.loha-fact { border-top: 1px solid var(--loha-line); }
	.loha-fact:first-child { border-top: 0; }
	.loha-subscribe { flex-wrap: wrap; }
	.loha-subscribe .loha-btn { width: 100%; justify-content: center; }
}

@media print {
	.loha-header, .loha-footer, .loha-sidebar, .loha-share, .loha-post-nav, .loha-band { display: none !important; }
	body.loha { background: #fff; color: #000; }
}

/* Paragraph spacing inside cards and bands.
   The card rules below set p margin to zero for the single line case, and they
   appear later in this file, so the rich text wrapper has to state its spacing
   with a more specific selector rather than relying on order. */
.loha-card .loha-rich p,
.loha-card-dark-body .loha-rich p,
.loha-value .loha-rich p,
.loha-band-copy .loha-rich p,
.loha-megamenu-copy .loha-rich p,
.loha-contact-row .loha-rich p,
.loha-hero-copy .loha-rich p,
.loha-page-hero-text p { margin: 0 0 .9em; }

.loha-card .loha-rich p:last-child,
.loha-card-dark-body .loha-rich p:last-child,
.loha-value .loha-rich p:last-child,
.loha-band-copy .loha-rich p:last-child,
.loha-megamenu-copy .loha-rich p:last-child,
.loha-contact-row .loha-rich p:last-child,
.loha-hero-copy .loha-rich p:last-child,
.loha-page-hero-text p:last-child { margin-bottom: 0; }

.loha-card .loha-rich ul,
.loha-card .loha-rich ol,
.loha-card-dark-body .loha-rich ul,
.loha-card-dark-body .loha-rich ol,
.loha-value .loha-rich ul,
.loha-value .loha-rich ol { margin: 0 0 .9em; padding-left: 1.15em; }

/* Lists and headings inside a card inherit the card's own text colour. */
.loha-card-dark-body .loha-rich li,
.loha-value .loha-rich li { color: inherit; font-size: inherit; }
.loha-card .loha-rich li { font-size: .88rem; color: var(--loha-muted); line-height: 1.65; }


/* ObjectNow Campaign Theme 1.0.0 - white-label header/footer variants */
.loha-header-light{background:#fff;color:var(--loha-forest);border-bottom:1px solid var(--loha-line)}
.loha-header-light .loha-brand,.loha-header-light .loha-menu-link,.loha-header-light .loha-submenu-toggle,.loha-header-light .loha-burger{color:var(--loha-forest)}
.loha-header-light .loha-menu-link:hover,.loha-header-light .loha-menu>li.loha-current>.loha-menu-link{color:var(--loha-forest-3)}
.loha-header-light .loha-social-header a{color:var(--loha-forest)}
.loha-header-light .loha-brand-mark{border-color:var(--loha-line);color:var(--loha-sage-dark)}
.loha-header-layout-centered .loha-header-inner{flex-wrap:wrap;justify-content:center;padding-top:12px;padding-bottom:12px}
.loha-header-layout-centered .loha-brand{width:100%;justify-content:center}
.loha-header-layout-centered .loha-nav{justify-content:center}
.loha-header-layout-centered .loha-header-actions{position:absolute;right:max(20px,calc((100vw - var(--loha-width))/2))}
.loha-header-layout-compact .loha-header-inner{min-height:64px}
.loha-logo-center:not(.loha-header-layout-centered) .loha-header-inner{position:relative}
.loha-logo-center:not(.loha-header-layout-centered) .loha-brand{position:absolute;left:50%;transform:translateX(-50%)}
.loha-menu-left .loha-nav{justify-content:flex-start}.loha-menu-center .loha-nav{justify-content:center}.loha-menu-right .loha-nav{justify-content:flex-end}
.loha-header-search{margin-left:10px;max-width:190px}.loha-header-search .search-form{display:flex}.loha-header-search label{margin:0}.loha-header-search .search-field{width:150px;height:36px;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;padding:0 13px}.loha-header-light .loha-header-search .search-field{border-color:var(--loha-line);background:var(--loha-cream);color:var(--loha-ink)}.loha-header-search .search-submit{display:none}
.loha-mobile-menu-logo,.loha-mobile-menu-search{display:none}
.loha-footer-layout-compact .loha-footer-panel{display:none}.loha-footer-layout-compact .loha-footer-grid{grid-template-columns:1.4fr 1fr 1fr 1fr;padding-top:38px;padding-bottom:30px}
.loha-footer-layout-centered .loha-footer-grid{display:flex;flex-direction:column;align-items:center;text-align:center}.loha-footer-layout-centered .loha-footer-brand{display:flex;flex-direction:column;align-items:center}.loha-footer-layout-centered .loha-footer-brand p{max-width:650px}.loha-footer-layout-centered .loha-footer-col{min-width:220px}.loha-footer-layout-centered .loha-footer-panel{width:min(760px,100%);justify-content:center}.loha-footer-layout-centered .loha-footer-base-inner{justify-content:center;text-align:center}
@media(max-width:1024px){.loha-header-layout-centered .loha-header-actions{position:static}.loha-logo-center:not(.loha-header-layout-centered) .loha-brand{position:static;transform:none}.loha-mobile-menu-logo{display:block;padding:6px 4px 16px}.loha-mobile-menu-logo img{display:block;max-height:56px;max-width:220px;width:auto}.loha-mobile-menu-search{display:block;padding:4px 4px 14px}.loha-mobile-menu-search .search-form{display:flex}.loha-mobile-menu-search label{flex:1}.loha-mobile-menu-search .search-field{width:100%;min-height:44px;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:#fff;padding:0 12px}.loha-mobile-menu-search .search-submit{min-height:44px;border:0;border-radius:8px;margin-left:7px;padding:0 14px;background:var(--loha-sage);color:var(--loha-forest);font-weight:700}.loha-header-light .loha-nav{background:#fff;border-color:var(--loha-line)}.loha-header-light .loha-mobile-menu-search .search-field{background:var(--loha-cream);border-color:var(--loha-line);color:var(--loha-ink)}.loha-header-light .loha-menu>li{border-color:var(--loha-line)}.loha-header-search{display:none}.loha-footer-layout-compact .loha-footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.loha-footer-layout-compact .loha-footer-grid{grid-template-columns:1fr}}
