@charset "UTF-8";

/* =============================================================
   Lavent — main stylesheet
   -----------------------------------------------------------------
   Phase 04: design tokens, self-hosted fonts, base reset, typography,
   container system, section spacing, buttons, skeleton frontend.

   No header design, no footer design, no homepage sections, no
   components — those land in Phases 05 onwards.

   Source-of-truth:
     - docs/02-design/lavent-design-tokens.md
     - docs/02-design/lavent-component-library.md
     - docs/01-brand/lavent-design-system.md
     - docs/01-brand/experience-guidelines.md
   ============================================================= */

/* -------------------------------------------------------------
   1. Fonts (self-hosted, WOFF2, variable)
   -----------------------------------------------------------------
   Two variable WOFF2 files cover all weights we use (400, 500, 600).
   They were downloaded once from Google Fonts (latin subset) and
   are served from this theme — no external font requests are made.
   See ../fonts/README.md for the exact source URLs and the licence
   notes (both families are SIL Open Font Licence).
   ------------------------------------------------------------- */

@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url("../fonts/inter/inter-variable.woff2") format("woff2-variations"),
	     url("../fonts/inter/inter-variable.woff2") format("woff2");
}

@font-face {
	font-family: "Cormorant Garamond";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url("../fonts/cormorant-garamond/cormorant-garamond-variable.woff2") format("woff2-variations"),
	     url("../fonts/cormorant-garamond/cormorant-garamond-variable.woff2") format("woff2");
}

@font-face {
	font-family: "Brittany Signature";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/brittany-signature/BrittanySignature.ttf") format("truetype");
}

/* -------------------------------------------------------------
   2. Design tokens
   ------------------------------------------------------------- */

:root {
	/* Core colours */
	--lv-colour-warm-ivory: #F7F4EF;
	--lv-colour-soft-stone: #EAE4DB;
	--lv-colour-charcoal:   #2F2F2F;
	--lv-colour-deep-taupe: #5A5048;
	--lv-colour-champagne:  #C6B08A;
	--lv-colour-white:      #FFFFFF;

	/* Backgrounds */
	--lv-bg-page:         var(--lv-colour-warm-ivory);
	--lv-bg-section:      var(--lv-colour-warm-ivory);
	--lv-bg-section-alt:  var(--lv-colour-soft-stone);
	--lv-bg-cta:          var(--lv-colour-deep-taupe);
	--lv-bg-footer:       var(--lv-colour-charcoal);

	/* Text */
	--lv-text-primary: var(--lv-colour-charcoal);
	--lv-text-muted:   rgba(47, 47, 47, 0.72);
	--lv-text-light:   var(--lv-colour-warm-ivory);
	--lv-text-accent:  var(--lv-colour-champagne);

	/* Borders */
	--lv-border-soft:           rgba(47, 47, 47, 0.10);
	--lv-border-medium:         rgba(47, 47, 47, 0.22);
	--lv-border-light-on-dark:  rgba(247, 244, 239, 0.20);

	/* Typography */
	--lv-font-heading: "Cormorant Garamond", Georgia, "Times New Roman", serif;
	--lv-font-body:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;

	--lv-text-xs:   0.75rem;    /* 12px */
	--lv-text-sm:   0.875rem;   /* 14px */
	--lv-text-base: 1rem;       /* 16px mobile, lifted on desktop via body rule */
	--lv-text-lg:   1.125rem;   /* 18px */
	--lv-text-xl:   1.375rem;   /* 22px */

	--lv-heading-sm: clamp(2rem,   4vw, 2.75rem);  /* 32–44px  e.g. minor section heads */
	--lv-heading-md: clamp(2.25rem, 5vw, 3.25rem); /* 36–52px  section heads */
	--lv-heading-lg: clamp(2.625rem, 7vw, 4.5rem); /* 42–72px  hero H1 */
	--lv-heading-supporting: clamp(1.875rem, 3.2vw, 2.5rem); /* 30–40px supporting editorial rows */

	--lv-quote-size: clamp(1.75rem, 3.4vw, 2.375rem); /* 28–38px editorial quote */

	--lv-leading-tight:   1.05;
	--lv-leading-heading: 1.12;
	--lv-leading-body:    1.65;

	--lv-tracking-eyebrow: 0.12em;
	--lv-tracking-button:  0.03em;

	/* Containers (max-widths) */
	--lv-container-narrow:   820px;
	--lv-container-standard: 1180px;
	--lv-container-wide:     1280px;

	/* Container horizontal padding — overridden at breakpoints below */
	--lv-container-padding: 22px;

	/* Section vertical padding — overridden at breakpoints below */
	--lv-section-sm: 44px;
	--lv-section-md: 64px;
	--lv-section-lg: 76px;

	/* Spacing */
	--lv-space-2xs: 0.5rem;   /* 8px  */
	--lv-space-xs:  0.75rem;  /* 12px */
	--lv-space-sm:  1rem;     /* 16px */
	--lv-space-md:  1.5rem;   /* 24px */
	--lv-space-lg:  2rem;     /* 32px */
	--lv-space-xl:  3rem;     /* 48px */
	--lv-space-2xl: 4rem;     /* 64px */
	--lv-space-3xl: 6rem;     /* 96px */

	/* Radius */
	--lv-radius-sm:   6px;
	--lv-radius-md:   12px;
	--lv-radius-pill: 999px;

	/* Buttons */
	--lv-button-bg-primary:        var(--lv-colour-deep-taupe);
	--lv-button-text-primary:      var(--lv-colour-warm-ivory);
	--lv-button-bg-primary-hover:  var(--lv-colour-charcoal);
	--lv-button-border-primary:    var(--lv-colour-deep-taupe);
	--lv-button-text-secondary:    var(--lv-colour-charcoal);
	--lv-button-border-secondary:  rgba(47, 47, 47, 0.35);
	--lv-button-padding-y:         14px;
	--lv-button-padding-x:         26px;
	--lv-button-radius:            var(--lv-radius-pill);

	/* Motion */
	--lv-transition-fast:     160ms ease;
	--lv-transition-standard: 260ms ease;
	--lv-transition-slow:     420ms ease;

	/* Shadows (used sparingly) */
	--lv-shadow-soft:  0 18px 45px rgba(47, 47, 47, 0.08);
	--lv-shadow-panel: 0 12px 30px rgba(47, 47, 47, 0.10);

	/* Z-index */
	--lv-z-header: 100;
	--lv-z-menu:   200;
	--lv-z-modal:  300;

	/* Image ratios */
	--lv-ratio-square:    1 / 1;
	--lv-ratio-portrait:  4 / 5;
	--lv-ratio-tall:      2 / 3;
	--lv-ratio-landscape: 16 / 9;
	--lv-ratio-hero:      16 / 9;
}

/* Container + section padding scale up at tablet / desktop. */
@media (min-width: 768px) {
	:root {
		--lv-container-padding: 32px;
		--lv-section-sm: 56px;
		--lv-section-md: 82px;
		--lv-section-lg: 100px;
	}
}

@media (min-width: 1024px) {
	:root {
		--lv-container-padding: 48px;
		--lv-section-sm: 72px;
		--lv-section-md: 110px;
		--lv-section-lg: 140px;
	}
}

/* -------------------------------------------------------------
   3. Reset / normalisation
   ------------------------------------------------------------- */

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

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

body {
	margin: 0;
	min-height: 100vh;
	background-color: var(--lv-bg-page);
	color: var(--lv-text-primary);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-base);
	line-height: var(--lv-leading-body);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

@media (min-width: 768px) {
	body {
		font-size: 1.0625rem;
	}
}

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

ul,
ol {
	margin: 0;
	padding: 0;
}

a {
	color: inherit;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
	transition: color var(--lv-transition-fast);
}

a:hover {
	color: var(--lv-colour-deep-taupe);
}

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

button {
	background: none;
	border: 0;
	cursor: pointer;
}

hr {
	border: 0;
	border-top: 1px solid var(--lv-border-soft);
	margin: var(--lv-space-xl) 0;
}

:focus-visible {
	outline: 2px solid var(--lv-colour-deep-taupe);
	outline-offset: 3px;
}

::selection {
	background-color: var(--lv-colour-champagne);
	color: var(--lv-colour-charcoal);
}

/* -------------------------------------------------------------
   4. Accessibility helpers
   ------------------------------------------------------------- */

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

.screen-reader-text:focus,
.lv-skip-link:focus {
	background-color: var(--lv-colour-warm-ivory);
	color: var(--lv-colour-charcoal);
	clip: auto !important;
	-webkit-clip-path: none;
	clip-path: none;
	display: block;
	font-size: var(--lv-text-sm);
	font-weight: 500;
	height: auto;
	left: 16px;
	line-height: 1;
	padding: 12px 18px;
	text-decoration: none;
	top: 16px;
	width: auto;
	z-index: 100000;
	box-shadow: var(--lv-shadow-panel);
	border-radius: var(--lv-radius-sm);
}

/* -------------------------------------------------------------
   5. Typography
   ------------------------------------------------------------- */

h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 0 0 var(--lv-space-md);
	font-family: var(--lv-font-heading);
	font-weight: 400;
	line-height: var(--lv-leading-heading);
	color: var(--lv-text-primary);
	letter-spacing: 0;
}

h1 {
	font-size: var(--lv-heading-lg);
	line-height: var(--lv-leading-tight);
}

h2 {
	font-size: var(--lv-heading-md);
	line-height: var(--lv-leading-tight);
}

h3 {
	font-size: var(--lv-heading-sm);
}

h4 {
	font-size: var(--lv-text-xl);
	font-weight: 500;
	letter-spacing: 0;
}

h5,
h6 {
	font-size: var(--lv-text-lg);
	font-weight: 500;
}

p {
	margin: 0 0 var(--lv-space-md);
}

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

strong,
b {
	font-weight: 600;
}

blockquote {
	margin: var(--lv-space-xl) 0;
	font-family: var(--lv-font-heading);
	font-size: var(--lv-quote-size);
	line-height: 1.2;
	color: var(--lv-text-primary);
}

cite {
	display: block;
	margin-top: var(--lv-space-sm);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-sm);
	font-style: normal;
	color: var(--lv-text-muted);
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
}

/* Eyebrow / small label utility */
.lv-eyebrow {
	display: inline-block;
	margin-bottom: var(--lv-space-sm);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-muted);
}

/* -------------------------------------------------------------
   6. Containers
   ------------------------------------------------------------- */

.lv-container,
.lv-container--narrow,
.lv-container--wide {
	width: 100%;
	margin-inline: auto;
	padding-inline: var(--lv-container-padding);
}

.lv-container {
	max-width: var(--lv-container-standard);
}

.lv-container--narrow {
	max-width: var(--lv-container-narrow);
}

.lv-container--wide {
	max-width: var(--lv-container-wide);
}

/* -------------------------------------------------------------
   7. Section spacing
   ------------------------------------------------------------- */

.lv-section {
	padding-block: var(--lv-section-md);
}

.lv-section--small {
	padding-block: var(--lv-section-sm);
}

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

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

/* -------------------------------------------------------------
   8. Buttons
   ------------------------------------------------------------- */

.lv-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--lv-space-2xs);
	padding: var(--lv-button-padding-y) var(--lv-button-padding-x);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-sm);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-button);
	line-height: 1;
	text-decoration: none;
	border: 1px solid transparent;
	border-radius: var(--lv-button-radius);
	cursor: pointer;
	transition:
		background-color var(--lv-transition-standard),
		color var(--lv-transition-standard),
		border-color var(--lv-transition-standard);
}

.lv-button:hover {
	color: inherit;
}

.lv-button--primary {
	background-color: var(--lv-button-bg-primary);
	color: var(--lv-button-text-primary);
	border-color: var(--lv-button-border-primary);
}

.lv-button--primary:hover,
.lv-button--primary:focus-visible {
	background-color: var(--lv-button-bg-primary-hover);
	border-color: var(--lv-button-bg-primary-hover);
	color: var(--lv-button-text-primary);
}

.lv-button--secondary {
	background-color: transparent;
	color: var(--lv-button-text-secondary);
	border-color: var(--lv-button-border-secondary);
}

.lv-button--secondary:hover,
.lv-button--secondary:focus-visible {
	border-color: var(--lv-colour-charcoal);
	color: var(--lv-colour-charcoal);
}

/* Compact button — used in the header where vertical space is tight. */
.lv-button--compact {
	padding: 10px 20px;
	font-size: 0.8125rem; /* 13px */
}

/* On-dark button — inverted primary for use on the Charcoal footer or
   any dark surface. Warm Ivory fill on Charcoal text gives WCAG AAA
   contrast (≈12:1). Hover gently lifts to Champagne. */
.lv-button--on-dark {
	background-color: var(--lv-colour-warm-ivory);
	color: var(--lv-colour-charcoal);
	border-color: var(--lv-colour-warm-ivory);
}

.lv-button--on-dark:hover,
.lv-button--on-dark:focus-visible {
	background-color: var(--lv-colour-champagne);
	border-color: var(--lv-colour-champagne);
	color: var(--lv-colour-charcoal);
}

/* -------------------------------------------------------------
   9. Site header + navigation + mobile menu (Phase 05)
   -----------------------------------------------------------------
	Header is fixed at the top of the viewport. The solid Warm Ivory bar
	is the default. Only pages that opt into the overlay treatment via
	`body.lv-has-transparent-header` render the transparent top state
	(data-lv-header-state="top"). Once the page scrolls, every page uses
	the solid Warm Ivory bar with a hairline border
	(data-lv-header-state="scrolled"). State is toggled by
	assets/js/main.js.

   Source-of-truth:
     - docs/02-design/lavent-component-library.md § Header / Navigation
     - docs/02-design/lavent-design-tokens.md
   ------------------------------------------------------------- */

:root {
	--lv-header-height: 64px;
}

@media (min-width: 1024px) {
	:root {
		--lv-header-height: 84px;
	}
}

/* Push main content below the fixed header. Pages with a transparent
   header (homepage, etc.) opt out so the hero sits flush behind the
   bar. The hero itself accounts for the header height in its padding. */
.lv-site-main {
	display: block;
	padding-top: var(--lv-header-height);
}

body.lv-has-transparent-header .lv-site-main {
	padding-top: 0;
}

/* --- Header bar --------------------------------------------------- */

.lv-site-header {
	position: fixed;
	top: 0;
	inset-inline: 0;
	z-index: var(--lv-z-header);
	background-color: var(--lv-bg-page);
	border-bottom: 1px solid var(--lv-border-soft);
	/* Slower, paired with a larger scroll threshold (assets/js/main.js)
	   so the transparent → solid swap reads as a natural editorial fade
	   instead of a hard flip at the first scroll pixel. */
	transition:
		background-color var(--lv-transition-slow),
		border-color var(--lv-transition-slow),
		box-shadow var(--lv-transition-slow);
}

body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] {
	background-color: transparent;
	border-bottom-color: transparent;
}

/* Subtle top scrim keeps nav copy legible on bright hero imagery. */
body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"]::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: clamp(72px, 10vh, 132px);
	background: linear-gradient(180deg, rgba(20, 18, 16, 0.44) 0%, rgba(20, 18, 16, 0.2) 62%, rgba(20, 18, 16, 0) 100%);
	pointer-events: none;
}

body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] .lv-site-header__inner {
	position: relative;
	z-index: 1;
}

/* Light wordmark + nav while the header is transparent over the hero. */
body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] .lv-site-header__brand a,
body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] .lv-site-header__wordmark,
body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] .lv-nav--desktop a {
	color: var(--lv-text-light);
	text-shadow: 0 1px 8px rgba(20, 18, 16, 0.5);
}

body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] .lv-button--primary.lv-button--compact {
	background-color: transparent;
	border-color: rgba(247, 244, 239, 0.55);
	color: var(--lv-text-light);
}

body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] .lv-button--primary.lv-button--compact:hover,
body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] .lv-button--primary.lv-button--compact:focus-visible {
	background-color: rgba(247, 244, 239, 0.12);
	border-color: var(--lv-text-light);
	color: var(--lv-text-light);
}

body.lv-has-transparent-header .lv-site-header[data-lv-header-state="top"] .lv-site-header__toggle-icon span {
	background-color: var(--lv-text-light);
}

.lv-site-header[data-lv-header-state="scrolled"] {
	background-color: var(--lv-bg-page);
	border-bottom-color: var(--lv-border-soft);
}

.lv-site-header__inner {
	display: flex;
	align-items: center;
	gap: var(--lv-space-md);
	width: 100%;
	max-width: var(--lv-container-wide);
	min-height: var(--lv-header-height);
	margin-inline: auto;
	padding-inline: var(--lv-container-padding);
}

/* --- Brand -------------------------------------------------------- */

.lv-site-header__brand {
	display: flex;
	align-items: center;
	margin: 0;
	margin-inline-end: auto; /* pushes nav + CTA to the right */
	font-family: var(--lv-font-heading);
	font-size: var(--lv-text-xl);
	font-weight: 500;
	letter-spacing: 0.01em;
	line-height: 1;
}

.lv-site-header__brand a,
.lv-site-header__wordmark {
	color: var(--lv-text-primary);
	text-decoration: none;
	transition: color var(--lv-transition-slow), text-shadow var(--lv-transition-slow);
}

/* WordPress emits .custom-logo-link > img inside whatever wraps the
   logo. Cap the logo height to the design system spec. */
.lv-site-header__brand .custom-logo-link,
.lv-site-header__brand .lv-site-header__logo-link {
	display: inline-flex;
	align-items: center;
}

.lv-site-header__brand .custom-logo,
.lv-site-header__brand .lv-site-header__logo-svg {
	display: block;
	height: clamp(28px, 4vw, 40px);
	width: auto;
	max-width: 220px;
}

.lv-site-header__brand .lv-site-header__logo-svg {
	fill: currentColor;
}

.lv-site-header__brand .lv-site-header__logo-svg * {
	fill: currentColor;
}

/* --- Desktop nav -------------------------------------------------- */

.lv-site-header__nav-wrap {
	display: none;
}

@media (min-width: 1024px) {
	.lv-site-header__nav-wrap {
		display: block;
	}
}

.lv-nav--desktop .lv-nav__list,
.lv-nav--desktop > ul {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: clamp(var(--lv-space-sm), 1.6vw, var(--lv-space-lg));
	margin: 0;
	padding: 0;
	list-style: none;
}

.lv-nav--desktop li {
	margin: 0;
}

.lv-nav--desktop a {
	display: inline-block;
	padding: 8px 2px;
	color: var(--lv-text-primary);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-sm);
	font-weight: 500;
	text-decoration: none;
	transition: opacity var(--lv-transition-fast);
}

.lv-nav--desktop a:hover,
.lv-nav--desktop a:focus-visible {
	opacity: 0.7;
}

/* Current page marker — WP applies these classes on real menu items. */
.lv-nav--desktop .current-menu-item > a,
.lv-nav--desktop .current_page_item > a {
	text-decoration: underline;
	text-underline-offset: 6px;
	text-decoration-thickness: 1px;
}

/* --- Desktop CTA -------------------------------------------------- */

.lv-site-header__cta {
	display: none;
}

@media (min-width: 1024px) {
	.lv-site-header__cta {
		display: flex;
		align-items: center;
	}
}

/* --- Mobile toggle ------------------------------------------------ */

.lv-site-header__toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin-inline-start: auto;
	padding: 0;
	background: transparent;
	border: 0;
	color: var(--lv-text-primary);
	cursor: pointer;
	border-radius: var(--lv-radius-sm);
	transition: background-color var(--lv-transition-fast);
}

.lv-site-header__toggle:hover {
	background-color: rgba(47, 47, 47, 0.06);
}

@media (min-width: 1024px) {
	.lv-site-header__toggle {
		display: none;
	}
}

.lv-site-header__toggle-icon {
	display: inline-block;
	position: relative;
	width: 22px;
	height: 14px;
}

.lv-site-header__toggle-icon span {
	position: absolute;
	left: 0;
	width: 100%;
	height: 1.5px;
	background-color: currentColor;
	transition: transform var(--lv-transition-fast), opacity var(--lv-transition-fast), top var(--lv-transition-fast);
}

.lv-site-header__toggle-icon span:nth-child(1) { top: 0; }
.lv-site-header__toggle-icon span:nth-child(2) { top: 6px; }
.lv-site-header__toggle-icon span:nth-child(3) { top: 12px; }

.lv-site-header__toggle[aria-expanded="true"] .lv-site-header__toggle-icon span:nth-child(1) {
	top: 6px;
	transform: rotate(45deg);
}

.lv-site-header__toggle[aria-expanded="true"] .lv-site-header__toggle-icon span:nth-child(2) {
	opacity: 0;
}

.lv-site-header__toggle[aria-expanded="true"] .lv-site-header__toggle-icon span:nth-child(3) {
	top: 6px;
	transform: rotate(-45deg);
}

/* --- Mobile menu panel ------------------------------------------- */

.lv-mobile-menu {
	position: fixed;
	inset: 0;
	z-index: var(--lv-z-menu);
	display: flex;
	flex-direction: column;
	padding-top: var(--lv-header-height);
	background-color: var(--lv-bg-page);
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	animation: lv-mobile-menu-in var(--lv-transition-standard) both;
}

.lv-mobile-menu[hidden] {
	display: none;
}

@keyframes lv-mobile-menu-in {
	from { opacity: 0; transform: translateY(-6px); }
	to   { opacity: 1; transform: none; }
}

.lv-mobile-menu__inner {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-xl);
	width: 100%;
	max-width: var(--lv-container-wide);
	margin-inline: auto;
	padding: var(--lv-space-xl) var(--lv-container-padding) var(--lv-space-2xl);
}

/* Close button — pinned to the top-right of the panel so it sits in the
   same optical position as the hamburger that opened it. 44×44 tap target
   per WCAG 2.5.5. The X is drawn with two 1.5px charcoal bars rotated
   ±45° so we don't ship an SVG asset for one icon. */
.lv-mobile-menu__close {
	position: absolute;
	top: calc((var(--lv-header-height) - 44px) / 2);
	right: max(var(--lv-container-padding), 16px);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	background: transparent;
	border: 0;
	color: var(--lv-text-primary);
	cursor: pointer;
	border-radius: var(--lv-radius-sm);
	transition: background-color var(--lv-transition-fast);
}

.lv-mobile-menu__close:hover {
	background-color: rgba(47, 47, 47, 0.06);
}

.lv-mobile-menu__close-icon {
	position: relative;
	display: inline-block;
	width: 22px;
	height: 22px;
}

.lv-mobile-menu__close-icon::before,
.lv-mobile-menu__close-icon::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 0;
	width: 100%;
	height: 1.5px;
	background-color: currentColor;
}

.lv-mobile-menu__close-icon::before {
	transform: translateY(-50%) rotate(45deg);
}

.lv-mobile-menu__close-icon::after {
	transform: translateY(-50%) rotate(-45deg);
}

.lv-nav--mobile .lv-nav__list,
.lv-nav--mobile > ul {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-sm);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lv-nav--mobile li {
	margin: 0;
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-nav--mobile li:last-child {
	border-bottom: 0;
}

.lv-nav--mobile a {
	display: block;
	padding: var(--lv-space-md) 0;
	color: var(--lv-text-primary);
	font-family: var(--lv-font-heading);
	font-size: clamp(1.625rem, 5vw, 2rem);
	font-weight: 500;
	line-height: 1.15;
	text-decoration: none;
}

.lv-nav--mobile a:hover,
.lv-nav--mobile a:focus-visible {
	color: var(--lv-colour-deep-taupe);
}

.lv-mobile-menu__cta {
	display: flex;
}

.lv-mobile-menu__cta .lv-button {
	width: 100%;
	justify-content: center;
	padding-block: 16px;
	font-size: 0.875rem;
}

/* When the mobile menu is open, prevent the body from scrolling
   behind it. JS adds this class on <body>. */
body.lv-menu-open {
	overflow: hidden;
}

/* Hide desktop nav-wrap and CTA inside the mobile panel — only the
   mobile-variant nav and the mobile CTA block render there. */
.lv-mobile-menu .lv-nav--desktop,
.lv-mobile-menu .lv-site-header__cta {
	display: none;
}

/* --- Skeleton frontend leftovers (Phase 02 placeholder content)
   ------------------------------------------------------------- */

.lv-skeleton-notice {
	padding-block: var(--lv-section-lg);
	background-color: var(--lv-bg-section-alt);
	text-align: center;
}

.lv-skeleton-notice__inner {
	width: 100%;
	max-width: var(--lv-container-narrow);
	margin-inline: auto;
	padding-inline: var(--lv-container-padding);
}

.lv-skeleton-notice__eyebrow {
	margin: 0 0 var(--lv-space-md);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-muted);
}

.lv-skeleton-notice__title {
	margin: 0 0 var(--lv-space-md);
	font-size: var(--lv-heading-md);
}

.lv-skeleton-notice__body {
	margin: 0;
	color: var(--lv-text-muted);
	font-size: var(--lv-text-lg);
}

/* Generic page / single / archive placeholder spacing — kept
   minimal so Phase 02 templates remain readable until the real
   designs ship in Phase 10+. */

.lv-page,
.lv-single {
	padding-block: var(--lv-section-md);
}

/* Keep About + Contact intro rhythm aligned with the newer
   service-style page headers. */
body.page-about .lv-page,
body.page-about-us .lv-page,
body.page-contact .lv-page,
body.page-contact-us .lv-page,
body.page-id-724 .lv-page,
body.page-id-725 .lv-page {
	padding-top: 0;
	padding-bottom: 0;
}

body.page-about .lv-page__content > :first-child,
body.page-about-us .lv-page__content > :first-child,
body.page-contact .lv-page__content > :first-child,
body.page-contact-us .lv-page__content > :first-child,
body.page-id-724 .lv-page__content > :first-child,
body.page-id-725 .lv-page__content > :first-child {
	margin-top: 0;
}

body.page-about .lv-page .lv-editorial-section.lv-section:first-of-type,
body.page-about-us .lv-page .lv-editorial-section.lv-section:first-of-type,
body.page-contact .lv-page .lv-editorial-section.lv-section:first-of-type,
body.page-contact-us .lv-page .lv-editorial-section.lv-section:first-of-type,
body.page-id-724 .lv-page .lv-editorial-section.lv-section:first-of-type,
body.page-id-725 .lv-page .lv-editorial-section.lv-section:first-of-type,
body.page-id-724 .lv-page__content + .lv-editorial-section.lv-section,
body.page-id-725 .lv-page__content + .lv-editorial-section.lv-section,
body.page-about .lv-page__content + .lv-editorial-section.lv-section,
body.page-contact .lv-page__content + .lv-editorial-section.lv-section {
	padding-top: clamp(var(--lv-space-xl), 6vw, var(--lv-space-2xl));
}

.lv-page__header,
.lv-single__header {
	width: 100%;
	max-width: var(--lv-container-narrow);
	margin-inline: auto;
	margin-bottom: var(--lv-space-xl);
	padding-inline: var(--lv-container-padding);
}

.lv-page__content,
.lv-single__content {
	width: 100%;
	max-width: var(--lv-container-narrow);
	margin-inline: auto;
	padding-inline: var(--lv-container-padding);
}

/* Cookie preferences live only on the Cookie Policy page and sit on the
   page's central content axis, rather than reading as a side utility. */
.lv-page__cookie-preferences {
	display: flex;
	justify-content: center;
	margin: var(--lv-space-xl) auto 0;
	padding-inline: var(--lv-container-padding);
}

.lv-archive__header {
	padding: var(--lv-section-md) var(--lv-container-padding) var(--lv-space-xl);
	max-width: var(--lv-container-narrow);
	margin-inline: auto;
	text-align: center;
}

.lv-archive__list {
	max-width: var(--lv-container-standard);
	margin-inline: auto;
	padding-inline: var(--lv-container-padding);
	padding-bottom: var(--lv-section-md);
}

.lv-archive__item {
	padding-block: var(--lv-space-xl);
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-archive__item:last-child {
	border-bottom: 0;
}

.lv-post-list {
	max-width: var(--lv-container-standard);
	margin-inline: auto;
	padding: var(--lv-section-md) var(--lv-container-padding);
}

.lv-post-list__item {
	padding-block: var(--lv-space-xl);
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-post-list__item:last-child {
	border-bottom: 0;
}

/* -------------------------------------------------------------
   10.5. Reusable components — editorial refinement (Phase 10.5)
   -----------------------------------------------------------------
   Phase 09 introduced shared template-parts. Phase 10.5 refines the
   visual layer against the concept image: no card chrome, no heavy
   shadows, no rounded corners on imagery, photography-led layouts,
   hairline dividers, and tighter editorial rhythm.

   These rules do not change ACF schemas, data flow or partial
   contracts — they only restyle the components rendered by the
   homepage. See docs/02-design/lavent-design-system.md.
   ------------------------------------------------------------- */

/* --- Section heading / editorial intro ------------------------- */

.lv-section-heading {
	width: 100%;
	margin-bottom: var(--lv-space-xl);
}

.lv-section-heading--center {
	text-align: center;
}

.lv-section-heading--narrow .lv-section-heading__inner {
	max-width: var(--lv-container-narrow);
}

.lv-section-heading--standard .lv-section-heading__inner {
	max-width: var(--lv-container-standard);
}

.lv-section-heading--wide .lv-section-heading__inner {
	max-width: var(--lv-container-wide);
}

.lv-section-heading__inner {
	width: 100%;
	margin-inline: auto;
}

.lv-section-heading__heading {
	margin-bottom: var(--lv-space-sm);
}

.lv-section-heading__intro {
	max-width: 56ch;
	color: var(--lv-text-muted);
}

.lv-section-heading--center .lv-section-heading__intro {
	margin-inline: auto;
}

.lv-section-heading__action {
	margin-top: var(--lv-space-md);
}

/* Editorial inline variant — heading + intro stacked inside a column
   without enforced max-width, used in two-column layouts where the
   parent already provides the rhythm (Featured, Services, etc.). */
.lv-section-heading--inline {
	margin-bottom: 0;
}

.lv-section-heading--inline .lv-section-heading__inner {
	max-width: none;
}

/* --- Editorial blocks ---------------------------------------- */

/* Homepage-derived editorial foundation classes for Stage 11 blocks.
   Keep these generic so future editorial layouts can inherit the same
   spacing, typography, media, and responsive rhythm. */

.lv-editorial-section.lv-section {
	padding-block: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
}

.lv-editorial-block--ivory {
	background-color: var(--lv-bg-section);
}

.lv-editorial-block--soft-stone {
	background-color: var(--lv-bg-section-alt);
}

.lv-editorial-container,
.lv-editorial-block__inner {
	width: 100%;
}

.lv-editorial-grid,
.lv-editorial-block__grid {
	display: grid;
	gap: var(--lv-space-lg);
	align-items: start;
}

.lv-editorial-media,
.lv-editorial-block__media {
	margin: 0;
	overflow: hidden;
	border-top: 1px solid var(--lv-border-soft);
	border-bottom: 1px solid var(--lv-border-soft);
	background-color: var(--lv-bg-section-alt);
}

.lv-editorial-block--has-media .lv-editorial-block__media {
	aspect-ratio: var(--lv-ratio-portrait);
}

.lv-editorial-block--image-landscape .lv-editorial-block__media {
	aspect-ratio: var(--lv-ratio-landscape);
}

.lv-editorial-block--image-natural .lv-editorial-block__media {
	aspect-ratio: auto;
}

.lv-editorial-media img,
.lv-editorial-block__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lv-editorial-block--image-natural .lv-editorial-media,
.lv-editorial-block--image-natural .lv-editorial-block__media {
	overflow: visible;
}

.lv-editorial-block--image-natural .lv-editorial-media img,
.lv-editorial-block--image-natural .lv-editorial-block__image {
	height: auto;
	object-fit: initial;
}

.lv-editorial-copy,
.lv-editorial-block__content {
	min-width: 0;
	max-width: 56ch;
}

.lv-editorial-block__heading {
	font-size: var(--lv-heading-md);
	line-height: var(--lv-leading-tight);
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-block__heading--supporting {
	font-size: var(--lv-heading-supporting);
	line-height: var(--lv-leading-tight);
}

.lv-editorial-block__heading--page-title {
	font-size: var(--lv-heading-md);
	line-height: var(--lv-leading-tight);
}

.lv-editorial-block__body {
	max-width: 56ch;
	color: var(--lv-text-muted);
}

/* Shared optional intro description used directly below a block heading.
   Same body typography, restrained width, consistent spacing before the
   structured content that follows. Renders nothing when empty (no wrapper
   emitted by the template). */
.lv-editorial-block__intro {
	margin-top: 0;
	margin-bottom: var(--lv-space-md);
}

.lv-editorial-actions,
.lv-editorial-block__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lv-space-sm);
	margin-top: var(--lv-space-md);
}

.lv-editorial-panel,
.lv-editorial-block__panel {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	border-top: 1px solid var(--lv-border-soft);
	border-bottom: 1px solid var(--lv-border-soft);
	border-left: 0;
	border-right: 0;
	background-color: var(--lv-bg-section);
}

.lv-editorial-block__quote {
	margin: 0;
	padding: 0;
}

.lv-editorial-block--pull-quote .lv-editorial-block__quote {
	max-width: 44ch;
	margin: calc(-1 * clamp(var(--lv-space-sm), 2.4vw, 1.875rem)) auto clamp(var(--lv-space-sm), 2.4vw, 1.875rem);
	padding-block: clamp(var(--lv-space-xs), 2.2vw, var(--lv-space-sm));
	border-top: 1px solid var(--lv-border-soft);
	border-bottom: 1px solid var(--lv-border-soft);
	text-align: center;
}

.lv-editorial-block--pull-quote .lv-editorial-block__quote::before {
	content: "“";
	display: block;
	font-family: var(--lv-font-heading);
	font-size: clamp(2.4rem, 4vw, 3.2rem);
	line-height: 0.82;
	color: var(--lv-colour-champagne);
	margin-bottom: var(--lv-space-xs);
}

.lv-editorial-block__quote-text {
	font-family: var(--lv-font-heading);
	max-width: 44ch;
	margin-inline: auto;
	font-size: clamp(1.125rem, 1.7vw, 1.5rem);
	line-height: 1.45;
	text-align: center;
	color: var(--lv-text-primary);
}

.lv-editorial-block__quote-text p {
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-block--pull-quote .lv-editorial-block__quote-text p:first-child::before {
	content: none;
}

.lv-editorial-block--pull-quote .lv-editorial-block__quote-text p:last-child::after {
	content: none;
}

.lv-editorial-block__quote-attribution {
	display: block;
	margin-top: var(--lv-space-xs);
	font-style: normal;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-sm);
	font-weight: 500;
	letter-spacing: 0;
	text-transform: none;
	text-align: center;
	color: var(--lv-text-muted);
}

.lv-editorial-block__quote-name,
.lv-editorial-block__quote-note {
	display: block;
}

.lv-editorial-block__quote-name {
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-sm);
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	color: var(--lv-text-primary);
}

.lv-editorial-block__quote-note {
	margin-top: 2px;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
	font-style: normal;
}

.lv-editorial-block--tip-box .lv-editorial-block__panel {
	max-width: 56ch;
	margin-inline: auto;
	padding-inline: 0;
	padding-block: clamp(var(--lv-space-md), 2.8vw, var(--lv-space-lg));
	background: transparent;
}

.lv-editorial-block--tip-box .lv-editorial-block__heading,
.lv-editorial-block--tip-box .lv-editorial-block__body {
	max-width: 52ch;
}

.lv-editorial-block--tip-box .lv-editorial-block__actions {
	margin-top: var(--lv-space-sm);
}

.lv-editorial-block--information-panel .lv-editorial-container {
	max-width: var(--lv-container-standard);
}

.lv-editorial-block--information-panel .lv-editorial-block__panel {
	padding-inline: 0;
	padding-block: clamp(var(--lv-space-md), 2.8vw, var(--lv-space-lg));
	background: transparent;
}

.lv-editorial-block--information-panel .lv-editorial-block__heading {
	max-width: 32ch;
	margin-bottom: var(--lv-space-md);
}

.lv-editorial-block--information-panel .lv-editorial-block__facts {
	gap: 0;
	border-top: 0;
}

.lv-editorial-block--information-panel .lv-editorial-block__fact {
	padding-top: var(--lv-space-sm);
	padding-bottom: var(--lv-space-sm);
	border-top: 0;
	border-bottom: 1px solid var(--lv-border-soft);
	align-content: start;
	display: flex;
	flex-direction: column;
}

.lv-editorial-block--information-panel .lv-editorial-block__fact-label,
.lv-editorial-block--information-panel .lv-editorial-block__fact-value,
.lv-editorial-block--information-panel .lv-editorial-block__fact-note {
	margin: 0;
}

.lv-editorial-block--information-panel .lv-editorial-block__fact-value {
	margin-top: 4px;
}

.lv-editorial-block--information-panel .lv-editorial-block__fact-note {
	margin-top: 2px;
}

/* --- Editorial Image + Text — Four Image Editorial Set ---------- */

/* Mosaic media area is a bounded, single composed visual: one dominant
   image plus three supporting images. The mosaic itself defines the
   overall aspect ratio so the four images never dictate section
   height; each image is object-fit: cover inside its cell. */

.lv-editorial-block--image-four-set .lv-editorial-block__media {
	aspect-ratio: 4 / 3;
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	grid-template-rows: repeat(4, 1fr);
	gap: 6px;
	background-color: var(--lv-bg-section-alt);
	overflow: hidden;
}

.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item {
	margin: 0;
	overflow: hidden;
	background-color: var(--lv-bg-section-alt);
}

.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item--1 {
	grid-column: 1 / span 4;
	grid-row: 1 / span 4;
}

.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item--2 {
	grid-column: 5 / span 2;
	grid-row: 1 / span 2;
}

.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item--3 {
	grid-column: 5 / span 1;
	grid-row: 3 / span 2;
}

.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item--4 {
	grid-column: 6 / span 1;
	grid-row: 3 / span 2;
}

/* Graceful three-image state: image 4 missing — image 3 fills the
   bottom-right pair so no empty cell is left visible. */
.lv-editorial-block--image-four-set .lv-editorial-block__media--four-set-3
	.lv-editorial-block__mosaic-item--3 {
	grid-column: 5 / span 2;
}

/* Graceful two-image state: images 3 and 4 missing — image 2 fills
   the full right column instead. */
.lv-editorial-block--image-four-set .lv-editorial-block__media--four-set-2
	.lv-editorial-block__mosaic-item--2 {
	grid-row: 1 / span 4;
}

/* Graceful single-image state: only image 1 present — dominant image
   expands to the full mosaic area. */
.lv-editorial-block--image-four-set .lv-editorial-block__media--four-set-1
	.lv-editorial-block__mosaic-item--1 {
	grid-column: 1 / span 6;
}

@media (max-width: 1023px) {
	.lv-editorial-block--image-text .lv-editorial-block__grid,
	.lv-editorial-block--two-images-text .lv-editorial-block__grid {
		display: grid;
		grid-template-columns: minmax(0, 1fr);
	}

	/* Keep stacked image-led block headings visually aligned with
	   neighboring section blocks on tablet while preserving the
	   reduced desktop supporting scale. */
	.lv-editorial-block--image-text .lv-editorial-block__heading--supporting,
	.lv-editorial-block--two-images-text .lv-editorial-block__heading--supporting {
		font-size: clamp(2.125rem, 4.2vw, 2.5rem);
	}

	/* Image-led editorial blocks share a single semantic heading and
	   reorder content on mobile as: eyebrow/heading -> media -> body/CTA. */
	.lv-editorial-block--image-text .lv-editorial-block__content,
	.lv-editorial-block--two-images-text .lv-editorial-block__content {
		display: contents;
	}

	.lv-editorial-block--image-text .lv-editorial-block__content-header,
	.lv-editorial-block--two-images-text .lv-editorial-block__content-header {
		order: 1;
		max-width: min(100%, 52ch);
		margin-inline: auto;
		margin-bottom: var(--lv-space-sm);
		text-align: left;
	}

	.lv-editorial-block--image-text .lv-editorial-media,
	.lv-editorial-block--image-text .lv-editorial-block__media,
	.lv-editorial-block--two-images-text .lv-editorial-block__image-pair {
		order: 2;
	}

	.lv-editorial-block--image-text .lv-editorial-block__content-body,
	.lv-editorial-block--two-images-text .lv-editorial-block__content-body {
		order: 3;
		max-width: min(100%, 52ch);
		margin-inline: auto;
	}

	.lv-editorial-block--image-text.lv-editorial-block--has-media .lv-editorial-media,
	.lv-editorial-block--image-text.lv-editorial-block--has-media .lv-editorial-block__media {
		width: min(100%, clamp(320px, 72vw, 640px));
		margin-inline: auto;
	}

	.lv-editorial-block--has-media .lv-editorial-block__media {
		max-height: clamp(220px, 46vh, 360px);
	}

	.lv-editorial-block--image-natural .lv-editorial-block__media {
		max-height: none;
	}

	/* Four Image Editorial Set — tablet keeps the same mosaic
	   composition and a bounded height. Media area remains one
	   composed visual, not four stacked images. */
	.lv-editorial-block--image-four-set .lv-editorial-block__media {
		aspect-ratio: 4 / 3;
		max-height: clamp(260px, 52vh, 420px);
		gap: 5px;
	}

	/* Eyebrow, heading, and body remain left-aligned on stacked layouts. */
	.lv-editorial-block--image-text .lv-editorial-block__eyebrow,
	.lv-editorial-block--image-text .lv-editorial-block__heading,
	.lv-editorial-block--image-text .lv-editorial-block__body,
	.lv-editorial-block--two-images-text .lv-editorial-block__eyebrow,
	.lv-editorial-block--two-images-text .lv-editorial-block__heading,
	.lv-editorial-block--two-images-text .lv-editorial-block__body {
		text-align: left;
	}

	/* Shared tablet/mobile rule: centre the action/button row across
	   all Stage 11 editorial/content blocks. Text alignment is NOT
	   changed — only the flex placement of the button row. */
	.lv-editorial-section .lv-editorial-actions,
	.lv-editorial-section .lv-editorial-block__actions,
	.lv-editorial-section .lv-section-heading__action {
		justify-content: center;
	}

	/* Information panel: stay in two columns below 1024px.
	   align-items: stretch ensures each row pair stretches to the
	   same height so the border-bottom dividers remain level. */
	.lv-editorial-block--information-panel .lv-editorial-block__facts {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: clamp(var(--lv-space-md), 3vw, var(--lv-space-xl));
		row-gap: 0;
		align-items: stretch;
	}

	/* Each fact cell stretches to equal row height so its border-
	   bottom aligns with the sibling cell across the row. */
	.lv-editorial-block--information-panel .lv-editorial-block__fact {
		display: flex;
		flex-direction: column;
	}
}

@media (max-width: 767px) {
	.lv-editorial-block--pull-quote .lv-editorial-block__quote::before {
		font-size: clamp(2rem, 11vw, 2.8rem);
	}

	/* Four Image Editorial Set — mobile keeps one compact mosaic:
	   dominant image on the left, two supporting images stacked on
	   the right, and image 4 across the full width beneath. Never
	   four full-width vertical images. */
	.lv-editorial-block--image-four-set .lv-editorial-block__media {
		aspect-ratio: 1 / 1;
		grid-template-columns: repeat(3, 1fr);
		grid-template-rows: repeat(3, 1fr);
		gap: 4px;
		max-height: clamp(300px, 84vw, 480px);
	}

	.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item--1 {
		grid-column: 1 / span 2;
		grid-row: 1 / span 2;
	}

	.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item--2 {
		grid-column: 3 / span 1;
		grid-row: 1 / span 1;
	}

	.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item--3 {
		grid-column: 3 / span 1;
		grid-row: 2 / span 1;
	}

	.lv-editorial-block--image-four-set .lv-editorial-block__mosaic-item--4 {
		grid-column: 1 / span 3;
		grid-row: 3 / span 1;
	}

	.lv-editorial-block--image-four-set .lv-editorial-block__media--four-set-3
		.lv-editorial-block__mosaic-item--3 {
		grid-column: 3 / span 1;
	}

	.lv-editorial-block--image-four-set .lv-editorial-block__media--four-set-2
		.lv-editorial-block__mosaic-item--2 {
		grid-row: 1 / span 2;
	}

	.lv-editorial-block--image-four-set .lv-editorial-block__media--four-set-1
		.lv-editorial-block__mosaic-item--1 {
		grid-column: 1 / span 3;
		grid-row: 1 / span 3;
	}
}

/* Narrow mobile — keep the information panel in two columns but ease
   the spacing so the pair is still readable at 320–360px. */
@media (max-width: 400px) {
	.lv-editorial-block--information-panel .lv-editorial-block__facts {
		column-gap: var(--lv-space-sm);
	}

	.lv-editorial-block--information-panel .lv-editorial-block__fact-label {
		font-size: 0.625rem;
	}

	.lv-editorial-block--information-panel .lv-editorial-block__fact-value {
		font-size: var(--lv-text-sm);
	}

	.lv-editorial-block--information-panel .lv-editorial-block__fact-note {
		font-size: var(--lv-text-xs);
	}
}

.lv-editorial-block__facts {
	display: grid;
	gap: var(--lv-space-md);
	margin: 0;
}

.lv-editorial-block__fact {
	padding-top: var(--lv-space-md);
	border-top: 1px solid var(--lv-border-soft);
}

.lv-editorial-block__fact:first-child {
	padding-top: 0;
	border-top: 0;
}

.lv-editorial-block__fact-label {
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-muted);
}

.lv-editorial-block__fact-value {
	margin-top: var(--lv-space-2xs);
	font-size: var(--lv-text-base);
	line-height: var(--lv-leading-body);
	font-weight: 500;
	color: var(--lv-text-primary);
}

.lv-editorial-block__fact-note {
	margin-top: var(--lv-space-2xs);
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
	color: var(--lv-text-muted);
}

@media (min-width: 1024px) {
	.lv-editorial-block--has-media .lv-editorial-block__grid {
		grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
	}

	/* Information panel: desktop inherits the two-col grid set in
	   the shared max-width:1023px rule; only the column-gap widens. */
	.lv-editorial-block--information-panel .lv-editorial-block__facts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: clamp(var(--lv-space-lg), 3vw, var(--lv-space-xl));
		row-gap: 0;
		align-items: stretch;
	}

	.lv-editorial-block--information-panel .lv-editorial-block__fact {
		padding-top: var(--lv-space-sm);
	}

	.lv-editorial-block--image-right .lv-editorial-block__media {
		order: 2;
	}

	.lv-editorial-block--image-right .lv-editorial-block__content {
		order: 1;
	}

	.lv-editorial-media img,
	.lv-editorial-block__media img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	.lv-editorial-block--image-natural .lv-editorial-media img,
	.lv-editorial-block--image-natural .lv-editorial-block__media img {
		height: auto;
		object-fit: initial;
	}

	/* Landscape editorial rows should center the image against the
	   full text-column height instead of pinning it to the top. */
	.lv-editorial-block--image-text.lv-editorial-block--image-landscape.lv-editorial-block--has-media .lv-editorial-block__grid,
	.lv-editorial-block--image-text.lv-editorial-block--image-four-set.lv-editorial-block--has-media .lv-editorial-block__grid {
		align-items: center;
	}
}

/* --- Stage 11C-2 editorial blocks ------------------------------- */

/* Icon list — quiet two-column on desktop, single column on mobile.
   Avoids card surfaces; uses fine hairline dividers per row. */

.lv-editorial-block--icon-list .lv-editorial-block__heading {
	margin-bottom: var(--lv-space-md);
	max-width: none;
}

.lv-editorial-block--icon-list .lv-editorial-block__intro {
	max-width: none;
}

.lv-editorial-block__icon-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 0;
	border-top: 1px solid var(--lv-border-soft);
}

.lv-editorial-block__icon-item {
	display: grid;
	grid-template-columns: 48px minmax(0, 1fr);
	column-gap: var(--lv-space-md);
	align-items: start;
	padding-top: var(--lv-space-sm);
	padding-bottom: var(--lv-space-sm);
	border-bottom: 1px solid var(--lv-border-soft);
}

/* Icon mark — 48×48 container, stroke icon inside. Same visual
   weight as the homepage service-card icons (72px) scaled to the
   more compact list context. Using 48px keeps the icon intentionally
   sized without dominating the text. */
.lv-editorial-block__icon-mark {
	display: inline-flex;
	align-items: flex-start;
	justify-content: flex-start;
	width: 48px;
	height: 48px;
	padding-top: 2px;
	color: var(--lv-colour-champagne);
}

.lv-editorial-block__icon-mark svg {
	display: block;
	width: 40px;
	height: 40px;
	flex: 0 0 auto;
	stroke: currentColor;
	fill: none;
	stroke-width: 1.25;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.lv-editorial-block__icon-mark svg path,
.lv-editorial-block__icon-mark svg rect,
.lv-editorial-block__icon-mark svg circle {
	fill: none;
	stroke: currentColor;
}

.lv-editorial-block__icon-fallback {
	display: block;
	width: 8px;
	height: 8px;
	margin-top: 10px;
	border-radius: 999px;
	background-color: currentColor;
}

.lv-editorial-block__icon-text {
	min-width: 0;
}

.lv-editorial-block__icon-title {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-base);
	font-weight: 500;
	color: var(--lv-text-primary);
}

.lv-editorial-block__icon-description {
	margin: 4px 0 0;
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
	color: var(--lv-text-muted);
}

@media (min-width: 768px) {
	.lv-editorial-block__icon-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: clamp(var(--lv-space-lg), 3vw, var(--lv-space-xl));
	}
}

/* Client logo list — calm editorial proof section. Logos sit in
   consistent visual areas with generous whitespace. No card chrome,
   no hover animation, no forced monochrome treatment. */

.lv-editorial-block--client-logo-list .lv-editorial-container {
	max-width: var(--lv-container-wide);
}

.lv-editorial-block--client-logo-list .lv-editorial-block__heading {
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-block--client-logo-list .lv-editorial-block__intro {
	max-width: 66ch;
	margin-bottom: var(--lv-space-lg);
}

.lv-editorial-block__logo-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(var(--lv-space-sm), 2vw, var(--lv-space-md));
	align-items: stretch;
}

.lv-editorial-block__logo-item {
	margin: 0;
	min-width: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.lv-editorial-block__logo-media {
	width: 100%;
	height: clamp(72px, 10vw, 104px);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: clamp(var(--lv-space-xs), 1.5vw, var(--lv-space-sm)) clamp(var(--lv-space-sm), 2.2vw, var(--lv-space-md));
	border-top: 1px solid var(--lv-border-soft);
	border-bottom: 1px solid var(--lv-border-soft);
	margin-bottom: -1px;
}

.lv-editorial-block__logo-image {
	display: block;
	max-width: min(160px, 90%);
	max-height: 52px;
	width: auto;
	height: auto;
	object-fit: contain;
}

@media (min-width: 768px) {
	.lv-editorial-block__logo-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.lv-editorial-block__logo-media {
		height: clamp(82px, 7vw, 112px);
	}
}

@media (min-width: 1024px) {
	.lv-editorial-block__logo-grid {
		grid-template-columns: repeat(5, minmax(0, 1fr));
		gap: clamp(var(--lv-space-sm), 1.6vw, var(--lv-space-md));
	}

	.lv-editorial-block__logo-image {
		max-width: min(180px, 88%);
		max-height: 56px;
	}
}

/* Process / steps — editorial numbered rows on mobile, horizontal
   editorial process at tablet/desktop. Numbers use the serif heading
   font for a calm magazine feel. A single hairline runs across all
   steps between the numbers and copy on wider viewports; on mobile
   the block reads as a vertical rhythm with the same fine dividers. */

.lv-editorial-block--process .lv-editorial-block__heading {
	margin-bottom: var(--lv-space-md);
	max-width: none;
}

.lv-editorial-block--process .lv-editorial-block__intro {
	max-width: none;
}

.lv-editorial-block__steps {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 0;
	border-top: 0;
	counter-reset: lv-step;
}

.lv-editorial-block__step {
	display: grid;
	grid-template-columns: 56px minmax(0, 1fr);
	column-gap: var(--lv-space-md);
	align-items: start;
	padding-top: var(--lv-space-md);
	padding-bottom: var(--lv-space-md);
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-editorial-block__step-number {
	display: block;
	font-family: var(--lv-font-heading);
	font-size: clamp(1.5rem, 2.4vw, 2rem);
	line-height: 1;
	color: var(--lv-colour-champagne);
	letter-spacing: 0;
}

.lv-editorial-block__step-body {
	min-width: 0;
	max-width: 56ch;
}

.lv-editorial-block__step-title {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-base);
	font-weight: 500;
	color: var(--lv-text-primary);
}

.lv-editorial-block__step-description {
	margin: 4px 0 0;
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
	color: var(--lv-text-muted);
}

/* Tablet — two-column stepped grid keeps the editorial feel without
   squeezing five columns into a narrow row. */
@media (min-width: 768px) and (max-width: 1023px) {
	.lv-editorial-block--process .lv-editorial-block__steps {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: clamp(var(--lv-space-lg), 4vw, var(--lv-space-xl));
		row-gap: 0;
		border-top: 0;
	}

	.lv-editorial-block--process .lv-editorial-block__step {
		grid-template-columns: minmax(0, 1fr);
		grid-template-rows: auto minmax(0, 1fr);
		padding-block: var(--lv-space-md);
		border-top: 0;
		border-bottom: 1px solid var(--lv-border-soft);
		align-items: start;
	}

	.lv-editorial-block--process .lv-editorial-block__step-number {
		margin-bottom: var(--lv-space-sm);
	}

	.lv-editorial-block--process .lv-editorial-block__step-body {
		max-width: none;
	}
}

/* Desktop — horizontal editorial process. Numbers sit above the fine
   connecting line; step copy sits below it, aligned by a shared row
   grid so the hairline reads as one continuous rhythm across the row. */
@media (min-width: 1024px) {
	.lv-editorial-block--process .lv-editorial-block__steps {
		/* A fixed number/header row keeps every per-step divider segment
		   on the same baseline, independent of title/body length. */
		--lv-process-step-header-height: clamp(3.75rem, 6vw, 4.75rem);
		grid-template-columns: repeat(auto-fit, minmax(10.5rem, 1fr));
		grid-template-columns: repeat(var(--lv-process-count, 5), minmax(0, 1fr));
		column-gap: clamp(var(--lv-space-md), 3vw, var(--lv-space-lg));
		row-gap: 0;
		border-top: 0;
	}

	.lv-editorial-block--process .lv-editorial-block__step {
		grid-template-columns: minmax(0, 1fr);
		grid-template-rows: var(--lv-process-step-header-height) auto;
		row-gap: 0;
		padding: 0 0 var(--lv-space-md);
		border: 0;
		align-items: start;
	}

	.lv-editorial-block--process .lv-editorial-block__step-number {
		align-self: end;
		padding-bottom: var(--lv-space-sm);
		margin-bottom: 0;
		border-bottom: 1px solid var(--lv-border-soft);
	}

	.lv-editorial-block--process .lv-editorial-block__step-body {
		padding-top: var(--lv-space-md);
		max-width: none;
	}

	.lv-editorial-block--process .lv-editorial-block__step-title {
		font-size: var(--lv-text-base);
	}
}

@media (max-width: 767px) {
	.lv-editorial-block--process .lv-editorial-block__step:last-child {
		border-bottom: 0;
	}
}

/* Editorial gallery — adapted from the homepage Featured Weddings
   mosaic. One anchor image + supporting images in a calm, asymmetric
   composition. No card chrome, no rounded corners, no hover effects.
   Clicking opens a restrained lightbox; the anchor href remains a
   normal full-image fallback when JavaScript is unavailable. */

.lv-editorial-block--gallery .lv-editorial-container {
	max-width: var(--lv-container-wide);
}

.lv-editorial-block--gallery-small .lv-editorial-container {
	max-width: var(--lv-container-narrow);
}

.lv-editorial-block--gallery .lv-editorial-block__gallery {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--lv-space-md);
	grid-auto-flow: row;
}

.lv-editorial-block--gallery .lv-editorial-block__gallery-item {
	margin: 0;
	min-width: 0;
}

.lv-editorial-block--gallery .lv-editorial-block__gallery-figure {
	margin: 0;
	min-width: 0;
}

/* The anchor is an invisible wrapper around the image tile. It must
   inherit the same dimensions as the previous image wrapper so the
   visual grid is controlled entirely by the gallery CSS, not by the
   anchor markup. */
.lv-editorial-block--gallery .lv-editorial-block__gallery-link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.lv-editorial-block--gallery .lv-editorial-block__gallery-link:focus-visible {
	outline: 1px solid var(--lv-colour-champagne);
	outline-offset: 4px;
}

.lv-editorial-block--gallery .lv-editorial-block__gallery-media {
	margin: 0;
	overflow: hidden;
	background-color: var(--lv-bg-section-alt);
	aspect-ratio: var(--lv-ratio-portrait);
}

.lv-editorial-block--gallery .lv-editorial-block__gallery-image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lv-editorial-block--gallery .lv-editorial-block__gallery-caption {
	margin-top: var(--lv-space-2xs);
	font-size: var(--lv-text-xs);
	line-height: var(--lv-leading-body);
	letter-spacing: 0.02em;
	color: var(--lv-text-muted);
}

/* Mobile + tablet aspect-ratio composition. Wrapped in max-width
   1023px so these never apply inside the ≥1024px desktop mosaic,
   where the row heights are fixed and the media must stretch to fill
   them — not impose a 16/9 width. */
@media (max-width: 1023px) {
	.lv-editorial-block--gallery .lv-editorial-block__gallery-item:first-child .lv-editorial-block__gallery-media {
		aspect-ratio: var(--lv-ratio-portrait);
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-item:not(:first-child) .lv-editorial-block__gallery-media {
		aspect-ratio: var(--lv-ratio-landscape);
	}
}

/* Tablet: simplify to a balanced editorial pair while keeping the
   first image dominant. */
@media (min-width: 768px) and (max-width: 1023px) {
	.lv-editorial-block--gallery .lv-editorial-block__gallery {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--lv-space-md);
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-item:only-child {
		grid-column: 1 / -1;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-item:only-child .lv-editorial-block__gallery-media {
		aspect-ratio: var(--lv-ratio-landscape);
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-item:first-child:nth-last-child(3),
	.lv-editorial-block--gallery .lv-editorial-block__gallery-item:first-child:nth-last-child(n + 5) {
		grid-column: 1 / -1;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-item:first-child:nth-last-child(3) .lv-editorial-block__gallery-media,
	.lv-editorial-block--gallery .lv-editorial-block__gallery-item:first-child:nth-last-child(n + 5) .lv-editorial-block__gallery-media {
		aspect-ratio: var(--lv-ratio-landscape);
	}
}

/* Desktop editorial compositions — driven by item-count modifier
   classes so each gallery is an intentional, complete composition
   with no dead columns or rows. Style spirit is shared with the
   homepage Featured Weddings mosaic; the dimensions are bespoke to
   each count so a 1-image gallery isn't a 3-column shell with two
   empty cells. The height:100% cascade (item → figure → link → media)
   keeps the lightbox anchor wrapper invisible to the visual layout. */
@media (min-width: 1024px) {
	.lv-editorial-block--gallery .lv-editorial-block__gallery {
		gap: clamp(var(--lv-space-sm), 1.4vw, var(--lv-space-md));
		align-items: stretch;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-item {
		height: 100%;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-figure {
		height: 100%;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-link {
		height: 100%;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery-item .lv-editorial-block__gallery-media {
		aspect-ratio: auto;
		height: 100%;
	}

	/* --- Count 1: single editorial hero, full width, calm landscape
	   crop. No empty neighbour columns. The media must be width:100% so
	   the image fills edge-to-edge; height is set by max-height + the
	   image's own aspect-ratio via object-fit:cover. */
	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-1 {
		display: block;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-1 .lv-editorial-block__gallery-item,
	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-1 .lv-editorial-block__gallery-figure,
	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-1 .lv-editorial-block__gallery-link {
		display: block;
		width: 100%;
		height: auto;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-1 .lv-editorial-block__gallery-item .lv-editorial-block__gallery-media {
		width: 100%;
		height: auto;
		aspect-ratio: 16 / 9;
		max-height: clamp(360px, 42vw, 580px);
	}

	/* --- Count 2: balanced editorial pair, two equal columns. */
	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-2 {
		display: grid;
		grid-template-columns: 1fr 1fr;
		grid-auto-rows: clamp(320px, 34vw, 480px);
	}

	/* --- Count 3: feature + two stacked supports. Matches the
	   homepage rhythm without forcing a third empty column. */
	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-3 {
		display: grid;
		grid-template-columns: 1.35fr 1fr;
		grid-template-rows: repeat(2, clamp(200px, 22vw, 300px));
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-3 .lv-editorial-block__gallery-item:first-child {
		grid-column: 1 / 2;
		grid-row: 1 / 3;
	}

	/* --- Count 4: feature + three supports laid into a complete
	   three-column / two-row composition. Every cell is filled. */
	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-4 {
		display: grid;
		grid-template-columns: 1.35fr 1fr 1fr;
		grid-template-rows: repeat(2, clamp(200px, 22vw, 300px));
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-4 .lv-editorial-block__gallery-item:nth-child(1) {
		grid-column: 1 / 2;
		grid-row: 1 / 3;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-4 .lv-editorial-block__gallery-item:nth-child(2) {
		grid-column: 2 / 3;
		grid-row: 1 / 2;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-4 .lv-editorial-block__gallery-item:nth-child(3) {
		grid-column: 3 / 4;
		grid-row: 1 / 2;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-4 .lv-editorial-block__gallery-item:nth-child(4) {
		grid-column: 2 / 4;
		grid-row: 2 / 3;
	}

	/* --- Count 5+: continuous editorial rhythm. First image spans
	   two columns + two rows as the feature; remaining images flow
	   into a clean 3-column rhythm with auto-placement so no slot
	   is left empty regardless of count. */
	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-many {
		display: grid;
		grid-template-columns: repeat(3, 1fr);
		grid-auto-rows: clamp(200px, 22vw, 300px);
		grid-auto-flow: dense;
	}

	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-many .lv-editorial-block__gallery-item:nth-child(1) {
		grid-column: span 2;
		grid-row: span 2;
	}

	/* Visible restraint: cap to nine tiles on a single editorial
	   composition. Anything more is unintentional for a curated page. */
	.lv-editorial-block--gallery .lv-editorial-block__gallery--count-many .lv-editorial-block__gallery-item:nth-child(n + 10) {
		display: none;
	}
}

/* Lightbox — editorial image viewer. Dark quiet overlay, no plugin
   chrome. Controls are always positionally separated:
     close  → top-right of the image frame
     prev   → left of the image frame, vertically centred
     next   → right of the image frame, vertically centred
   Caption sits below the image and never overlaps controls. */

body.lv-lightbox-open {
	overflow: hidden;
}

.lv-gallery-lightbox {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: clamp(48px, 6vw, 80px) clamp(var(--lv-space-md), 5vw, 80px) clamp(var(--lv-space-md), 4vw, 48px);
	background: rgba(20, 20, 20, 0.88);
}

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

/* Transparent full-bleed button behind everything that closes on click */
.lv-gallery-lightbox__backdrop {
	position: absolute;
	inset: 0;
	border: 0;
	padding: 0;
	background: transparent;
	cursor: pointer;
}

/* Dialog sits on top of the backdrop and contains image + caption */
.lv-gallery-lightbox__dialog {
	position: relative;
	z-index: 1;
	width: min(960px, 100%);
	max-height: calc(100dvh - 96px);
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-xs);
	outline: 0;
}

/* Image frame — buttons are positioned relative to this */
.lv-gallery-lightbox__frame {
	position: relative;
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: visible;
}

.lv-gallery-lightbox__image {
	display: block;
	max-width: 100%;
	max-height: calc(100dvh - 152px);
	width: auto;
	height: auto;
	object-fit: contain;
	box-shadow: none;
}

.lv-gallery-lightbox__caption {
	flex: 0 0 auto;
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
	color: rgba(247, 244, 239, 0.76);
	text-align: center;
	padding: 0 48px;
}

/* Controls — ivory translucent treatment so they read clearly against
   the dark overlay while staying editorial and restrained. Fine 1px
   ivory hairline border, soft translucent ivory fill, no heavy shadow. */
.lv-gallery-lightbox__close,
.lv-gallery-lightbox__prev,
.lv-gallery-lightbox__next {
	appearance: none;
	-webkit-appearance: none;
	border: 1px solid rgba(247, 244, 239, 0.35);
	padding: 0;
	background-color: rgba(247, 244, 239, 0.10);
	color: var(--lv-text-light);
	width: 44px;
	height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 999px;
	cursor: pointer;
	transition: background-color var(--lv-transition-fast), border-color var(--lv-transition-fast), color var(--lv-transition-fast);
	font-size: 1.25rem;
	line-height: 1;
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
}

.lv-gallery-lightbox__close:hover,
.lv-gallery-lightbox__close:focus-visible,
.lv-gallery-lightbox__prev:hover,
.lv-gallery-lightbox__prev:focus-visible,
.lv-gallery-lightbox__next:hover,
.lv-gallery-lightbox__next:focus-visible {
	background-color: rgba(247, 244, 239, 0.22);
	border-color: rgba(247, 244, 239, 0.65);
	color: var(--lv-text-light);
	outline: 0;
}

/* Close — top-right of the image frame */
.lv-gallery-lightbox__close {
	position: absolute;
	top: -52px;
	right: 0;
	z-index: 2;
}

/* Prev / Next — left/right of the image frame, vertically centred */
.lv-gallery-lightbox__prev,
.lv-gallery-lightbox__next {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 2;
}

.lv-gallery-lightbox__prev {
	left: -52px;
}

.lv-gallery-lightbox__next {
	right: -52px;
}

.lv-gallery-lightbox__prev[disabled],
.lv-gallery-lightbox__next[disabled] {
	opacity: 0.18;
	pointer-events: none;
	cursor: default;
}

/* Single image: hide nav buttons entirely so they don't claim space */
.lv-gallery-lightbox--single .lv-gallery-lightbox__prev,
.lv-gallery-lightbox--single .lv-gallery-lightbox__next {
	display: none;
}

.lv-gallery-lightbox__icon {
	display: block;
	width: 18px;
	height: 18px;
	stroke: currentColor;
	fill: none;
	stroke-width: 1.6;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* Mobile: pull controls inside the viewport */
@media (max-width: 767px) {
	.lv-gallery-lightbox {
		padding: 60px var(--lv-space-sm) var(--lv-space-sm);
	}

	.lv-gallery-lightbox__dialog {
		max-height: calc(100dvh - 80px);
	}

	.lv-gallery-lightbox__image {
		max-height: calc(100dvh - 148px);
	}

	.lv-gallery-lightbox__close {
		top: -48px;
	}

	.lv-gallery-lightbox__prev {
		left: -2px;
	}

	.lv-gallery-lightbox__next {
		right: -2px;
	}

	.lv-gallery-lightbox__close,
	.lv-gallery-lightbox__prev,
	.lv-gallery-lightbox__next {
		width: 40px;
		height: 40px;
	}

	.lv-gallery-lightbox__caption {
		padding: 0 var(--lv-space-sm);
	}
}

/* FAQ accordion block — reuse homepage FAQ styling exactly. Only
   adjust the section rhythm so it sits naturally between editorial
   blocks. No new colours, dividers or animations. */

.lv-editorial-block--faq {
	padding-block: 0;
}

.lv-editorial-block--faq .lv-faq-accordion {
	padding-block: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
}

/* --- Stage 11C-3 editorial blocks ------------------------------- */

/* Two Images + Text — sibling of the image+text block, with two
   supporting images composed asymmetrically in the image column.
   Reuses the editorial grid, container and copy classes for full
   visual consistency with the existing image+text block. */

.lv-editorial-block--two-images-text .lv-editorial-block__image-pair {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--lv-space-sm);
	min-width: 0;
}

.lv-editorial-block--two-images-text .lv-editorial-block__image-pair-figure {
	margin: 0;
	height: clamp(220px, 18vw, 300px);
}

.lv-editorial-block--two-images-text .lv-editorial-block__image-pair-figure .lv-editorial-block__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lv-editorial-block--two-images-text .lv-editorial-block__image-pair-figure--primary {
	aspect-ratio: auto;
	overflow: hidden;
	border-top: 1px solid var(--lv-border-soft);
	border-bottom: 1px solid var(--lv-border-soft);
	background-color: var(--lv-bg-section-alt);
}

.lv-editorial-block--two-images-text .lv-editorial-block__image-pair-figure--secondary {
	aspect-ratio: auto;
	overflow: hidden;
	border-top: 1px solid var(--lv-border-soft);
	border-bottom: 1px solid var(--lv-border-soft);
	background-color: var(--lv-bg-section-alt);
}

.lv-editorial-block--two-images-text .lv-editorial-block__image-pair-caption {
	margin-top: var(--lv-space-2xs);
	font-size: var(--lv-text-xs);
	line-height: var(--lv-leading-body);
	letter-spacing: 0.02em;
	color: var(--lv-text-muted);
}

@media (min-width: 1024px) {
	/* Desktop: keep the media as a composed editorial column beside text.
	   Two aligned landscape crops have enough depth to avoid a thin-strip
	   gallery feel, while staying in the same visual language as image+text. */
	.lv-editorial-block--two-images-text .lv-editorial-block__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		align-items: start;
	}

	.lv-editorial-block--two-images-text .lv-editorial-block__image-pair {
		gap: clamp(var(--lv-space-sm), 1.2vw, var(--lv-space-md));
	}

	.lv-editorial-block--image-pair-count-1 .lv-editorial-block__image-pair {
		grid-template-columns: minmax(0, 1fr);
	}

	.lv-editorial-block--image-pair-count-1 .lv-editorial-block__image-pair-figure {
		height: clamp(280px, 24vw, 380px);
		max-width: none;
	}

	.lv-editorial-block--image-pair-count-1 .lv-editorial-block__image-pair-figure--primary {
		margin-left: 0;
	}

	.lv-editorial-block--images-right.lv-editorial-block--image-pair-count-1 .lv-editorial-block__image-pair-figure--primary {
		margin-left: auto;
	}

	/* Optional reversed position: text on the left, images on the
	   right. Mirrors the editorial-image-text image-right modifier
	   so editors get the same affordance. */
	.lv-editorial-block--images-right .lv-editorial-block__image-pair {
		order: 2;
	}

	.lv-editorial-block--images-right .lv-editorial-block__content {
		order: 1;
	}
}

@media (max-width: 1023px) {
	/* Tablet/mobile: stack image pair into a calm vertical rhythm.
	   Cap the column width and centre it so the composition reads
	   alongside the centred text column (matching image+text). */
	.lv-editorial-block--two-images-text .lv-editorial-block__image-pair {
		width: min(100%, 640px);
		margin-inline: auto;
		gap: var(--lv-space-md);
		grid-template-columns: minmax(0, 1fr);
	}

	.lv-editorial-block--two-images-text .lv-editorial-block__image-pair-figure {
		height: clamp(180px, 40vw, 300px);
	}

	.lv-editorial-block--two-images-text .lv-editorial-block__image-pair-figure--secondary {
		width: 100%;
		margin-left: 0;
	}

	/* Content-width + text alignment are handled by shared stacked
	   ordering rules above. */
}

/* Large Image Break — wide editorial image used as a section pause.
   Optional overlay statement and small caption. No card chrome. */

.lv-editorial-block--large-image-break .lv-editorial-block__inner {
	padding-inline: 0;
}

.lv-editorial-block--large-image-break .lv-editorial-block__large-image {
	position: relative;
	margin: 0;
	width: 100%;
	height: clamp(320px, 60vh, 620px);
	overflow: hidden;
	background-color: var(--lv-bg-section-alt);
	border-top: 1px solid var(--lv-border-soft);
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-editorial-block--large-image-break .lv-editorial-block__large-image-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: var(--lv-large-image-focal, center);
}

/* Overlay statement — only used when statement field is set.
   A light gradient ensures legibility without dominating the image. */
.lv-editorial-block--large-image-break.lv-editorial-block--has-statement .lv-editorial-block__large-image::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(
		180deg,
		rgba(20, 18, 16, 0) 0%,
		rgba(20, 18, 16, 0) 50%,
		rgba(20, 18, 16, 0.42) 100%
	);
	pointer-events: none;
}

.lv-editorial-block--large-image-break .lv-editorial-block__large-image-statement {
	position: absolute;
	left: 0;
	right: 0;
	bottom: clamp(var(--lv-space-md), 4vw, var(--lv-space-xl));
	display: flex;
	justify-content: center;
	padding-inline: var(--lv-container-padding);
	color: var(--lv-text-light);
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.7vw, 1.5rem);
	line-height: 1.45;
	font-weight: 400;
	text-align: center;
	z-index: 1;
}

.lv-editorial-block--large-image-break .lv-editorial-block__large-image-statement-text {
	max-width: 36ch;
}

.lv-editorial-block--large-image-break .lv-editorial-block__large-image-caption {
	margin: var(--lv-space-xs) auto 0;
	padding-inline: var(--lv-container-padding);
	max-width: 56ch;
	font-size: var(--lv-text-xs);
	letter-spacing: 0.02em;
	line-height: var(--lv-leading-body);
	color: var(--lv-text-muted);
	text-align: center;
}

@media (max-width: 767px) {
	.lv-editorial-block--large-image-break .lv-editorial-block__large-image {
		height: clamp(260px, 56vh, 420px);
	}
}

/* Flexible Text Section — a clean, controlled editorial reading
   column. Eyebrow + heading + optional intro lead + body + button.
   No image, no card chrome, no decorative dividers. */

.lv-editorial-block--flexible-text .lv-editorial-block__content {
	max-width: none;
	margin-inline: auto;
}

.lv-editorial-block--flexible-text .lv-editorial-block__heading {
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-block--flexible-text .lv-editorial-block__intro {
	margin: 0 0 var(--lv-space-md);
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.6vw, 1.375rem);
	line-height: 1.45;
	color: var(--lv-text-primary);
	font-weight: 400;
}

.lv-editorial-block--flexible-text .lv-editorial-block__body {
	max-width: none;
}

.lv-editorial-block--flexible-text .lv-editorial-block__body p {
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-block--flexible-text .lv-editorial-block__body p:last-child {
	margin-bottom: 0;
}

.lv-editorial-block--flexible-text .lv-editorial-block__actions {
	margin-top: var(--lv-space-md);
}

/* Contact Prompt — reuses the homepage CTA band treatment:
   deep taupe full-width background with narrow centered content. */

.lv-editorial-block--contact-prompt {
	background-color: var(--lv-bg-cta);
	color: var(--lv-text-light);
}

.lv-editorial-block--contact-prompt.lv-section {
	padding-block: 0;
}

.lv-editorial-block--contact-prompt .lv-editorial-block__prompt {
	padding-block: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
	text-align: center;
}

.lv-editorial-block--contact-prompt .lv-editorial-block__eyebrow {
	color: rgba(247, 244, 239, 0.62);
	margin-bottom: var(--lv-space-xs);
}

.lv-editorial-block--contact-prompt .lv-editorial-block__heading {
	margin: 0 auto var(--lv-space-sm);
	max-width: 26ch;
	color: var(--lv-text-light);
	font-size: clamp(1.875rem, 3.6vw, 2.625rem);
	line-height: 1.15;
}

.lv-editorial-block--contact-prompt .lv-editorial-block__heading em,
.lv-editorial-block--contact-prompt .lv-editorial-block__heading i {
	font-style: italic;
}

.lv-editorial-block--contact-prompt .lv-editorial-block__prompt-text {
	margin: 0 auto var(--lv-space-md);
	max-width: 46ch;
	color: rgba(247, 244, 239, 0.82);
	font-size: var(--lv-text-base);
	line-height: var(--lv-leading-body);
}

.lv-editorial-block--contact-prompt .lv-editorial-block__actions {
	justify-content: center;
	margin-top: 0;
}

.lv-editorial-block--contact-prompt .lv-editorial-block__prompt-secondary {
	margin: var(--lv-space-sm) 0 0;
	font-size: var(--lv-text-xs);
	letter-spacing: 0.02em;
	color: rgba(247, 244, 239, 0.72);
}

/* Editorial Divider — quiet pacing block. With text: small eyebrow
   and/or short statement, centred between two short hairline rules.
   Without text: a single thin centred rule. No icons, no flourishes. */

.lv-editorial-block--divider.lv-section {
	padding-block: clamp(var(--lv-space-md), 3vw, var(--lv-space-xl));
}

.lv-editorial-block--divider .lv-editorial-block__inner {
	max-width: 44ch;
}

.lv-editorial-block--divider-rule .lv-editorial-block__divider-rule {
	width: clamp(64px, 12vw, 120px);
	height: 1px;
	margin: 0 auto;
	border: 0;
	background-color: var(--lv-border-medium);
}

.lv-editorial-block--divider-with-text .lv-editorial-block__divider {
	position: relative;
	text-align: center;
	padding-block: var(--lv-space-md);
}

.lv-editorial-block--divider-with-text .lv-editorial-block__divider::before,
.lv-editorial-block--divider-with-text .lv-editorial-block__divider::after {
	content: "";
	display: block;
	width: clamp(48px, 8vw, 88px);
	height: 1px;
	margin: 0 auto;
	background-color: var(--lv-border-medium);
}

.lv-editorial-block--divider-with-text .lv-editorial-block__divider::before {
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-block--divider-with-text .lv-editorial-block__divider::after {
	margin-top: var(--lv-space-sm);
}

.lv-editorial-block--divider-with-text .lv-editorial-block__divider-eyebrow {
	margin: 0 0 var(--lv-space-xs);
}

.lv-editorial-block--divider-with-text .lv-editorial-block__divider-statement {
	margin: 0 auto;
	max-width: 38ch;
	font-family: var(--lv-font-heading);
	font-size: var(--lv-text-lg);
	line-height: 1.4;
	color: var(--lv-text-primary);
}

/* --- Hero ------------------------------------------------------- */

.lv-hero {
	position: relative;
	overflow: clip;
	min-height: 88vh;
	background-color: var(--lv-colour-soft-stone);
	color: var(--lv-text-light);
}

.lv-hero--no-media {
	min-height: clamp(360px, 56vh, 560px);
	background:
		linear-gradient(90deg, rgba(47, 47, 47, 0.18) 0%, rgba(47, 47, 47, 0.07) 50%, rgba(47, 47, 47, 0.15) 100%),
		var(--lv-colour-soft-stone);
}

@media (min-width: 1024px) {
	.lv-hero {
		min-height: 100vh;
	}

	.lv-hero--no-media {
		min-height: clamp(420px, 62vh, 640px);
	}
}

.lv-hero__media,
.lv-hero__overlay {
	position: absolute;
	inset: 0;
}

.lv-hero__media {
	z-index: 0;
}

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

/* Subtle, photographic overlay. Strength is set by the inline
   `--lv-hero-overlay` custom property (component partial), so the
   gradient stays consistent while editors can tone it up or down
   per image. */
.lv-hero__overlay {
	z-index: 1;
	background:
		linear-gradient(
			90deg,
			rgba(20, 18, 16, calc(var(--lv-hero-overlay, 0.42) * 0.64)) 0%,
			rgba(20, 18, 16, calc(var(--lv-hero-overlay, 0.42) * 0.42)) 36%,
			rgba(20, 18, 16, calc(var(--lv-hero-overlay, 0.42) * 0.16)) 64%,
			rgba(20, 18, 16, calc(var(--lv-hero-overlay, 0.42) * 0.28)) 100%
		),
		linear-gradient(
			180deg,
			rgba(20, 18, 16, 0.34) 0%,
			rgba(20, 18, 16, 0.12) 22%,
			rgba(20, 18, 16, 0.18) 62%,
			rgba(20, 18, 16, 0.32) 100%
		);
}

.lv-hero--no-media .lv-hero__overlay {
	display: none;
}

.lv-hero__inner {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	min-height: inherit;
	padding-block: calc(var(--lv-header-height) + var(--lv-space-xl)) var(--lv-section-md);
}

.lv-hero__content {
	max-width: 560px;
	padding-right: 0;
}

.lv-hero__eyebrow {
	color: rgba(247, 244, 239, 0.72);
}

.lv-hero__heading {
	margin-bottom: var(--lv-space-md);
	color: var(--lv-text-light);
	font-weight: 400;
	letter-spacing: 0;
}

/* Subtle italic emphasis inside the hero headline, matching the
   "around you." treatment in the concept. */
.lv-hero__heading em,
.lv-hero__heading i {
	font-style: italic;
	font-weight: 400;
}

.lv-hero__text {
	max-width: 38ch;
	margin-bottom: var(--lv-space-lg);
	font-size: var(--lv-text-lg);
	line-height: 1.55;
	color: rgba(247, 244, 239, 0.88);
}

.lv-hero__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lv-space-sm) var(--lv-space-md);
}

.lv-hero__button {
	min-width: 0;
}

/* "Check Availability →" reads as a quiet text link beside the
   primary CTA, not as another solid button. */
.lv-hero__actions .lv-button--secondary {
	background-color: transparent;
	border-color: transparent;
	padding-inline: 0;
	color: var(--lv-text-light);
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	font-size: var(--lv-text-xs);
}

.lv-hero__actions .lv-button--secondary::after {
	content: "→";
	margin-left: 0.5em;
}

.lv-hero__actions .lv-button--secondary:hover,
.lv-hero__actions .lv-button--secondary:focus-visible {
	border-color: transparent;
	color: var(--lv-colour-champagne);
}

/* On-image primary button: warm ivory pill, charcoal text. */
.lv-hero__actions .lv-button--primary {
	background-color: rgba(247, 244, 239, 0.94);
	border-color: rgba(247, 244, 239, 0.94);
	color: var(--lv-colour-charcoal);
}

.lv-hero__actions .lv-button--primary:hover,
.lv-hero__actions .lv-button--primary:focus-visible {
	background-color: var(--lv-text-light);
	border-color: var(--lv-text-light);
	color: var(--lv-colour-charcoal);
}

/* Scroll indicator — small static cue at the bottom centre of the
   hero, fades out as soon as the user starts scrolling (handled
   purely with CSS by transitioning opacity on the hero hover state
   would be too fragile; we leave it static and let it slide off
   naturally as the page scrolls past). Hidden if reduced motion. */
.lv-hero__scroll-hint {
	position: absolute;
	left: 50%;
	bottom: var(--lv-space-md);
	transform: translateX(-50%);
	z-index: 2;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: rgba(247, 244, 239, 0.78);
	text-align: center;
	pointer-events: none;
}

.lv-hero__scroll-hint::after {
	content: "";
	display: block;
	width: 1px;
	height: 28px;
	margin: 10px auto 0;
	background-color: rgba(247, 244, 239, 0.6);
}

@media (max-width: 767px) {
	.lv-hero__content {
		margin-inline: auto;
		padding-bottom: var(--lv-space-lg);
		text-align: center;
	}

	.lv-hero__text {
		margin-inline: auto;
	}

	.lv-hero__actions {
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: var(--lv-space-sm);
	}

	.lv-hero__actions .lv-button--primary {
		width: auto;
		min-width: 176px;
	}

	.lv-hero__scroll-hint {
		display: none;
	}
}

/* Internal service hero — same family as homepage hero, but more
   compact and editorial for service-level pages. */
.lv-hero--service,
.lv-hero--location,
.lv-hero--venue {
	min-height: clamp(520px, 74vh, 760px);
}

.lv-hero--service.lv-hero--no-media,
.lv-hero--location.lv-hero--no-media,
.lv-hero--venue.lv-hero--no-media {
	min-height: clamp(420px, 60vh, 640px);
}

@media (min-width: 1024px) {
	.lv-hero--service,
	.lv-hero--location,
	.lv-hero--venue {
		min-height: clamp(560px, 72vh, 800px);
	}
}

.lv-hero--service .lv-hero__inner,
.lv-hero--location .lv-hero__inner,
.lv-hero--venue .lv-hero__inner {
	justify-content: center;
	padding-block: calc(var(--lv-header-height) + var(--lv-space-lg)) clamp(var(--lv-space-lg), 6vh, var(--lv-section-md));
}

.lv-hero--service .lv-hero__content,
.lv-hero--location .lv-hero__content,
.lv-hero--venue .lv-hero__content {
	max-width: 640px;
}

.lv-hero--service .lv-hero__heading,
.lv-hero--location .lv-hero__heading,
.lv-hero--venue .lv-hero__heading {
	font-size: clamp(2rem, 3.6vw, 3.125rem);
	line-height: 1.12;
}

.lv-hero--service .lv-hero__text,
.lv-hero--location .lv-hero__text,
.lv-hero--venue .lv-hero__text {
	max-width: 44ch;
	font-size: var(--lv-text-base);
	line-height: var(--lv-leading-body);
	margin-bottom: var(--lv-space-md);
}

.lv-service-page__body .lv-cta-block--final {
	margin-top: clamp(var(--lv-space-md), 4vw, var(--lv-space-xl));
}

/* Service pages use the same broad outer container track as the
	 homepage for major editorial sections; internal text measures stay
	 constrained inside each block's own content styles. */
.lv-service-page .lv-editorial-section .lv-container.lv-editorial-container {
	max-width: var(--lv-container-wide);
}

@media (max-width: 767px) {
	.lv-hero--service,
	.lv-hero--location,
	.lv-hero--venue {
		min-height: clamp(420px, 70vh, 620px);
	}

	.lv-hero--service .lv-hero__heading,
	.lv-hero--location .lv-hero__heading,
	.lv-hero--venue .lv-hero__heading {
		font-size: clamp(1.75rem, 8vw, 2.5rem);
	}

	.lv-hero--service .lv-hero__text,
	.lv-hero--location .lv-hero__text,
	.lv-hero--venue .lv-hero__text {
		font-size: var(--lv-text-base);
	}
}

/* --- CTA block -------------------------------------------------- */

.lv-cta-block {
	background-color: var(--lv-bg-cta);
	color: var(--lv-text-light);
}

/* Reduced, editorial padding — concept shows a compact band, not a
   full-section band. Scales gently with viewport. */
.lv-cta-block__inner {
	padding-block: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
	text-align: center;
}

.lv-cta-block__eyebrow {
	color: rgba(247, 244, 239, 0.62);
	margin-bottom: var(--lv-space-xs);
}

.lv-cta-block__heading {
	margin-bottom: var(--lv-space-md);
	color: var(--lv-text-light);
	font-size: clamp(1.875rem, 3.6vw, 2.625rem);
	line-height: 1.15;
	font-weight: 400;
}

.lv-cta-block__heading em,
.lv-cta-block__heading i {
	font-style: italic;
}

.lv-cta-block__text {
	max-width: 46ch;
	margin-inline: auto;
	margin-bottom: var(--lv-space-md);
	color: rgba(247, 244, 239, 0.82);
	font-size: var(--lv-text-base);
}

.lv-cta-block__button {
	margin-top: var(--lv-space-xs);
}

/* Variant tweaks */
.lv-cta-block--final {
	/* Slightly tighter still on the closing band. */
	padding-block: 0;
}

/* --- Review card (editorial quote, no chrome) ------------------ */

.lv-review-card {
	padding: 0;
	background: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	text-align: center;
	max-width: 44ch;
	margin-inline: auto;
}

.lv-review-card::before {
	content: "“";
	display: block;
	font-family: var(--lv-font-heading);
	font-size: clamp(3rem, 5vw, 4rem);
	line-height: 0.8;
	color: var(--lv-colour-champagne);
	margin-bottom: var(--lv-space-sm);
}

.lv-review-card__quote {
	margin: 0;
	text-align: center;
}

.lv-review-card__quote p {
	margin: 0;
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.7vw, 1.5rem);
	line-height: 1.45;
	font-weight: 400;
	color: var(--lv-text-primary);
}

.lv-review-card__footer {
	margin-top: var(--lv-space-sm);
	text-align: center;
}

.lv-review-card__name {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-primary);
}

.lv-review-card__meta {
	margin-top: 4px;
	font-size: var(--lv-text-xs);
	color: var(--lv-text-muted);
}

/* --- Featured Real Wedding card (overlay caption, no chrome) ---- */

.lv-featured-wedding-card {
	height: 100%;
	border-radius: 0;
	overflow: hidden;
	background: none;
	box-shadow: none;
	position: relative;
}

.lv-featured-wedding-card__link {
	display: block;
	height: 100%;
	color: var(--lv-text-light);
	text-decoration: none;
	position: relative;
}

.lv-featured-wedding-card__media {
	margin: 0;
	background-color: var(--lv-bg-section-alt);
	overflow: hidden;
	aspect-ratio: 4 / 5;
	position: relative;
}

.lv-featured-wedding-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--lv-transition-slow);
}

.lv-featured-wedding-card__link:hover .lv-featured-wedding-card__media img,
.lv-featured-wedding-card__link:focus-visible .lv-featured-wedding-card__media img {
	transform: scale(1.02);
}

.lv-featured-wedding-card__overlay {
	position: absolute;
	inset: 0;
	background:
		linear-gradient(
			180deg,
			rgba(var(--lv-card-overlay-color, 20, 18, 16), 0) 0%,
			rgba(var(--lv-card-overlay-color, 20, 18, 16), calc(var(--lv-card-overlay-opacity, 0.45) * 1.15)) 100%
		);
	pointer-events: none;
}

.lv-featured-wedding-card--overlay-off .lv-featured-wedding-card__overlay,
.lv-overlay--off .lv-featured-wedding-card__overlay {
	display: none;
}



/* Caption overlay sits inside the image bottom-left, with a soft
   bottom gradient that improves legibility without obscuring the
   photo. Matches the concept's editorial overlay treatment. */
.lv-featured-wedding-card__body {
	position: absolute;
	inset: auto 0 0 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: var(--lv-space-md) var(--lv-space-md) var(--lv-space-md);
	color: var(--lv-text-light);
	background: linear-gradient(180deg, rgba(20, 18, 16, 0) 0%, rgba(20, 18, 16, 0.55) 100%);
}

.lv-featured-wedding-card__label {
	margin: 0 0 4px;
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: rgba(247, 244, 239, 0.78);
}

.lv-featured-wedding-card__title {
	margin: 0;
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.6vw, 1.375rem);
	line-height: 1.15;
	font-weight: 500;
	color: var(--lv-text-light);
	letter-spacing: 0.02em;
	text-transform: uppercase;
}

.lv-featured-wedding-card__meta {
	margin: 2px 0 0;
	font-size: var(--lv-text-xs);
	color: rgba(247, 244, 239, 0.82);
}

/* In the editorial overlay treatment we suppress the long-form
   excerpt and inline "View Wedding" cta — the whole tile is the
   link. Hidden visually, kept in the DOM for context if present. */
.lv-featured-wedding-card__excerpt,
.lv-featured-wedding-card__button {
	display: none;
}

/* --- Service pathway card (editorial column, no chrome) -------- */

.lv-service-card {
	height: 100%;
	background: none;
	border: 0;
	border-radius: 0;
	overflow: visible;
	box-shadow: none;
}

.lv-service-card__link {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--lv-space-sm);
	height: 100%;
	padding: 0;
	color: inherit;
	text-decoration: none;
}

.lv-service-card__icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	align-self: center;
	width: 72px;
	height: 72px;
	margin-bottom: var(--lv-space-xs);
	background: none;
	border-radius: 0;
	color: var(--lv-colour-deep-taupe);
	opacity: 0.88;
	transition: transform var(--lv-transition-fast), color var(--lv-transition-fast), opacity var(--lv-transition-fast);
}

.lv-service-card__icon svg {
	width: 72px;
	height: 72px;
	stroke: currentColor;
	stroke-width: 1.25;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.lv-service-card__icon-image {
	width: 72px;
	height: 72px;
	object-fit: contain;
	object-position: center;
	max-width: none;
	max-height: none;
}

.lv-service-card__body {
	min-width: 0;
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-xs);
}

.lv-service-card__title {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: 0.875rem;
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	line-height: 1.2;
	color: var(--lv-text-primary);
}

.lv-service-card__text {
	margin: 0;
	font-size: var(--lv-text-sm);
	line-height: 1.55;
	color: var(--lv-text-muted);
}

/* Quiet "Discover more →" cue at the bottom of each service column. */
.lv-service-card__arrow {
	margin-top: var(--lv-space-sm);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-primary);
	transition: color var(--lv-transition-fast), transform var(--lv-transition-fast);
}

.lv-service-card:hover .lv-service-card__icon,
.lv-service-card:focus-within .lv-service-card__icon,
.lv-service-card__link:focus-visible .lv-service-card__icon {
	transform: translateY(-2px);
	opacity: 1;
	color: var(--lv-text-primary);
}

.lv-service-card:hover .lv-service-card__arrow,
.lv-service-card:focus-within .lv-service-card__arrow,
.lv-service-card__link:focus-visible .lv-service-card__arrow {
	color: var(--lv-colour-deep-taupe);
	transform: translateX(3px);
}

/* --- Location / venue link card (editorial list row) ----------- */

.lv-link-card {
	height: auto;
	background: none;
	border: 0;
	border-radius: 0;
	overflow: visible;
	transition: none;
}

.lv-link-card:hover,
.lv-link-card:focus-within {
	transform: none;
	border: 0;
	box-shadow: none;
}

.lv-link-card__link {
	display: flex;
	align-items: center;
	gap: var(--lv-space-sm);
	height: auto;
	padding: var(--lv-space-xs) 0;
	color: var(--lv-text-primary);
	text-decoration: none;
	border-bottom: 1px solid var(--lv-border-soft);
	transition: color var(--lv-transition-fast), border-color var(--lv-transition-fast);
}

.lv-link-card__link:hover,
.lv-link-card__link:focus-visible {
	color: var(--lv-colour-deep-taupe);
	border-bottom-color: var(--lv-border-medium);
}

/* Pin glyph at the start of each location row. */
.lv-link-card__link::before {
	content: "";
	flex: 0 0 auto;
	width: 14px;
	height: 14px;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M12 21s-7-7.5-7-12a7 7 0 1 1 14 0c0 4.5-7 12-7 12Z'/><circle cx='12' cy='9' r='2.5'/></svg>") no-repeat center / contain;
	        mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M12 21s-7-7.5-7-12a7 7 0 1 1 14 0c0 4.5-7 12-7 12Z'/><circle cx='12' cy='9' r='2.5'/></svg>") no-repeat center / contain;
	opacity: 0.78;
}

.lv-link-card__body {
	min-width: 0;
	flex: 1 1 auto;
	display: flex;
	align-items: baseline;
	gap: var(--lv-space-sm);
}

.lv-link-card__meta,
.lv-link-card__text {
	display: none;
}

.lv-link-card__title {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: inherit;
}

.lv-link-card__arrow {
	display: none;
}

/* --- FAQ accordion (hairline-divided rows) --------------------- */

.lv-faq-accordion {
	background: none;
}

.lv-faq-accordion__inner {
	max-width: var(--lv-container-wide);
}

.lv-faq-accordion .lv-section-heading--narrow .lv-section-heading__inner {
	max-width: none;
}

.lv-faq-accordion .lv-section-heading,
.lv-faq-accordion .lv-section-heading__inner,
.lv-faq-accordion .lv-section-heading__eyebrow,
.lv-faq-accordion .lv-section-heading__heading,
.lv-faq-accordion .lv-section-heading__intro {
	text-align: left;
}

.lv-faq-accordion .lv-section-heading__intro {
	max-width: 56ch;
}

.lv-faq-accordion__items {
	display: block;
	border-top: 1px solid var(--lv-border-soft);
}

.lv-faq-accordion__item {
	background: none;
	border: 0;
	border-bottom: 1px solid var(--lv-border-soft);
	border-radius: 0;
	overflow: hidden;
	transition: border-bottom-color var(--lv-transition-fast);
}

.lv-faq-accordion__question {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--lv-space-md);
	padding: calc(var(--lv-space-md) + 2px) 0 var(--lv-space-md);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-base);
	font-weight: 400;
	line-height: 1.45;
	letter-spacing: 0;
	color: var(--lv-text-primary);
	cursor: pointer;
	list-style: none;
	transition: color var(--lv-transition-fast);
}

.lv-faq-accordion__question::-webkit-details-marker {
	display: none;
}

.lv-faq-accordion__question:hover,
.lv-faq-accordion__question:focus-visible {
	color: var(--lv-colour-deep-taupe);
}

.lv-faq-accordion__item:hover,
.lv-faq-accordion__item:focus-within {
	border-bottom-color: var(--lv-border-medium);
}

.lv-faq-accordion__indicator {
	position: relative;
	flex: 0 0 auto;
	width: 10px;
	height: 10px;
	color: rgba(47, 47, 47, 0.52);
	transition: transform var(--lv-transition-fast), color var(--lv-transition-fast);
}

.lv-faq-accordion__item:hover .lv-faq-accordion__indicator,
.lv-faq-accordion__item:focus-within .lv-faq-accordion__indicator {
	color: rgba(47, 47, 47, 0.72);
}

.lv-faq-accordion__indicator::before,
.lv-faq-accordion__indicator::after {
	content: "";
	position: absolute;
	background-color: currentColor;
}

.lv-faq-accordion__indicator::before {
	top: 50%;
	left: 0;
	right: 0;
	height: 0.75px;
	margin-top: -0.5px;
}

.lv-faq-accordion__indicator::after {
	left: 50%;
	top: 0;
	bottom: 0;
	width: 0.75px;
	margin-left: -0.5px;
}

.lv-faq-accordion__item[open] .lv-faq-accordion__indicator {
	transform: rotate(45deg);
}

.lv-faq-accordion__answer {
	padding: var(--lv-space-xs) 0 var(--lv-space-lg);
	max-width: 56ch;
	font-size: 0.9375rem;
	font-weight: 400;
	line-height: 1.65;
	color: var(--lv-text-muted);
}

.lv-faq-accordion__answer p {
	margin: 0 0 var(--lv-space-sm);
}

.lv-faq-accordion__answer > :last-child {
	margin-bottom: 0;
}

/* --- Homepage composition (editorial rhythm) ------------------- */

.lv-homepage {
	display: block;
}

.lv-homepage__section {
	position: relative;
}

/* Global homepage rhythm tightened slightly for a denser editorial flow. */
.lv-homepage .lv-section {
	padding-block: clamp(var(--lv-space-xl), 6.2vw, var(--lv-space-2xl));
}

/* Tight editorial review band — reads as a single quote, not a card. */
.lv-homepage__section--review {
	padding-block: clamp(var(--lv-space-lg), 4.6vw, var(--lv-space-2xl));
	background-color: var(--lv-bg-page);
}

/* Featured weddings: text intro column + editorial image mosaic. */
.lv-homepage__section--featured {
	background-color: var(--lv-bg-section-alt);
}

.lv-homepage__featured-layout {
	display: grid;
	gap: var(--lv-space-xl);
	align-items: start;
	grid-template-columns: 1fr;
}

.lv-homepage__featured-intro {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-md);
}

.lv-homepage__featured-intro .lv-section-heading {
	margin-bottom: 0;
}

.lv-homepage__featured-intro .lv-section-heading__heading {
	font-size: clamp(2rem, 3.8vw, 3rem);
}

.lv-homepage__view-all {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-primary);
	text-decoration: none;
	transition: color var(--lv-transition-fast);
}

.lv-homepage__view-all::after {
	content: "→";
}

.lv-homepage__view-all:hover,
.lv-homepage__view-all:focus-visible {
	color: var(--lv-colour-deep-taupe);
}

.lv-homepage__featured-grid {
	display: grid;
	gap: var(--lv-space-sm);
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-auto-flow: dense;
}

/* Phase 10.12 lock: keep the current featured grid proportions,
   four-tile cap, and overlay captions unchanged in this pass. */
.lv-homepage__featured-grid > .lv-featured-wedding-card:nth-child(n + 5) {
	display: none;
}

.lv-homepage__featured-grid > .lv-featured-wedding-card {
	min-width: 0;
}

/* Founder split: image left, content right. Image is flush — no
   rounded corners, no card chrome. */
.lv-homepage__section--founder {
	background-color: var(--lv-bg-page);
}

.lv-homepage__split {
	display: grid;
	gap: var(--lv-space-xl);
	align-items: start;
	grid-template-columns: 1fr;
}

.lv-homepage__split-media {
	min-width: 0;
}

.lv-homepage__founder-image {
	width: 100%;
	height: auto;
	border-radius: 0;
	box-shadow: none;
	aspect-ratio: 4 / 3;
	max-height: 520px;
	object-fit: cover;
}

.lv-homepage__split-content {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-md);
}

.lv-homepage__split-content .lv-section-heading {
	margin-bottom: 0;
}

.lv-homepage__split-content .lv-section-heading__heading {
	font-size: clamp(1.875rem, 3.4vw, 2.625rem);
}

/* Italic subhead inside the founder heading, e.g. "The heart behind Lavent". */
.lv-homepage__split-content .lv-section-heading__heading em,
.lv-homepage__split-content .lv-section-heading__heading i {
	display: block;
	font-style: italic;
	font-weight: 400;
	color: var(--lv-colour-champagne);
	font-size: 0.78em;
	margin-top: 4px;
}

/* Founder sign-off sits directly below the founder copy and keeps
   an elegant handwritten signature without changing section layout. */
.lv-homepage__founder-signoff {
	margin-top: var(--lv-space-xs);
	padding-top: 0;
	border-top: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.lv-homepage__founder-signoff-intro {
	margin: 0;
	font: 400 var(--lv-text-sm) / 1.5 var(--lv-font-body);
	color: var(--lv-text-muted);
}

.lv-homepage__founder-signoff-signature {
	margin: 0;
	font-family: "Brittany Signature", var(--lv-font-heading);
	font-size: clamp(2rem, 2.9vw, 2.45rem);
	line-height: 1.1;
	color: var(--lv-text-primary);
}


.lv-homepage__founder-signoff-role {
	margin: 0;
	font-size: 0.625rem;
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--lv-text-muted);
}

@media (min-width: 1024px) {
	.lv-homepage__section--founder .lv-homepage__split {
		grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr);
		align-items: center;
	}

	.lv-homepage__section--founder .lv-homepage__split-media {
		align-self: center;
	}

	.lv-homepage__section--founder .lv-section-heading__intro {
		max-width: 43.5rem;
	}
}

/* Services section sits on a Soft Stone band, matching the concept's
   warm beige tile. Intro column + service columns. */
.lv-homepage__section--services {
	background-color: var(--lv-bg-section-alt);
}

.lv-homepage__services-layout {
	display: grid;
	gap: var(--lv-space-lg);
	align-items: start;
	grid-template-columns: 1fr;
}

.lv-homepage__services-intro {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-md);
}

.lv-homepage__services-intro,
.lv-homepage__services-intro .lv-section-heading,
.lv-homepage__services-intro .lv-section-heading__inner {
	width: 100%;
	max-width: none;
}

.lv-homepage__services-intro .lv-section-heading__intro {
	width: 100%;
	max-width: none;
}

.lv-homepage__services-intro .lv-section-heading {
	margin-bottom: 0;
}

.lv-homepage__services-intro .lv-section-heading__heading {
	font-size: clamp(1.875rem, 3.4vw, 2.5rem);
}

.lv-homepage__service-grid {
	display: grid;
	gap: var(--lv-space-lg);
	grid-template-columns: 1fr;
	justify-items: center;
}

.lv-homepage__service-grid > .lv-service-card {
	width: min(100%, 320px);
}

.lv-homepage__service-grid > .lv-service-card .lv-service-card__link {
	align-items: center;
	text-align: center;
}

.lv-homepage__service-grid > .lv-service-card .lv-service-card__body {
	align-items: center;
	text-align: center;
}

.lv-homepage__service-grid > .lv-service-card .lv-service-card__text {
	max-width: 28ch;
	margin-inline: auto;
}

.lv-homepage__service-grid > .lv-service-card .lv-service-card__arrow {
	align-self: center;
}

/* Locations: image left + intro/list right. */
.lv-homepage__section--locations {
	background-color: var(--lv-bg-section-alt);
}

/*
 * Phase 10.18 lock: preserve the current Locations implementation as approved.
 * Desktop and mobile structure/ratios/ordering/typography/spacing are locked.
 * Do not redesign this section in future phases unless explicitly requested.
 */

.lv-homepage__locations-grid {
	display: grid;
	gap: var(--lv-space-xl);
	align-items: start;
	grid-template-columns: 1fr;
}

.lv-homepage__locations-media {
	min-width: 0;
}

.lv-homepage__locations-image {
	width: 100%;
	height: auto;
	border-radius: 0;
	box-shadow: none;
	aspect-ratio: 16 / 10;
	max-height: 400px;
	object-fit: cover;
}

.lv-homepage__locations-copy {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-sm);
}

.lv-homepage__locations-copy .lv-section-heading {
	margin-bottom: 0;
}

.lv-homepage__locations-copy .lv-section-heading__heading {
	font-size: clamp(1.875rem, 3.4vw, 2.5rem);
}

.lv-homepage__locations-list {
	min-width: 0;
}

.lv-homepage__link-groups {
	display: grid;
	gap: var(--lv-space-md);
	margin-top: var(--lv-space-sm);
}

.lv-homepage__link-group {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-2xs);
}

.lv-homepage__group-title {
	margin: 0 0 var(--lv-space-2xs);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-muted);
}

.lv-homepage__link-grid {
	display: grid;
	grid-template-columns: 1fr;
	row-gap: var(--lv-space-2xs);
	column-gap: 0;
	align-items: start;
	margin-top: var(--lv-space-2xs);
}

.lv-homepage__section--locations .lv-link-card {
	min-width: 0;
	width: 100%;
}

.lv-homepage__section--locations .lv-link-card__link {
	display: grid;
	grid-template-columns: 18px minmax(0, 1fr);
	column-gap: 12px;
	align-items: center;
	min-height: 42px;
	padding-block: var(--lv-space-xs);
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-homepage__section--locations .lv-link-card__title {
	font-size: clamp(0.94rem, 0.2vw + 0.9rem, 1rem);
	font-weight: 400;
	line-height: 1.38;
	letter-spacing: 0;
	text-transform: none;
	white-space: normal;
	hyphens: none;
	overflow-wrap: normal;
	word-break: normal;
}

.lv-homepage__section--locations .lv-link-card__link::before {
	width: 13px;
	height: 13px;
	opacity: 0.72;
}

.lv-homepage__section--locations .lv-link-card__link:hover,
.lv-homepage__section--locations .lv-link-card__link:focus-visible {
	border-bottom-color: var(--lv-border-medium);
}

/* FAQ section spacing. */
.lv-homepage__section--faq,
.lv-faq-accordion {
	padding-block: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
	background-color: var(--lv-bg-page);
}

/* Two-column FAQ list at tablet+. */
@media (min-width: 768px) {
	.lv-faq-accordion__items {
		columns: 2;
		column-gap: clamp(var(--lv-space-xl), 4vw, var(--lv-space-2xl));
	}

	.lv-faq-accordion__item {
		break-inside: avoid;
		margin-bottom: var(--lv-space-xs);
	}
}

/* ---- Breakpoints ---- */

@media (min-width: 768px) {
	/* Keep tablet simple; desktop gets the fixed editorial mosaic. */
	.lv-homepage__featured-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--lv-space-sm);
	}

	.lv-homepage__service-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		justify-items: stretch;
	}

	.lv-homepage__service-grid > .lv-service-card {
		width: 100%;
	}

	.lv-homepage__link-groups {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.lv-homepage__split {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: var(--lv-space-2xl);
	}

	.lv-homepage__locations-grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: var(--lv-space-xl);
	}

	.lv-homepage__locations-copy {
		grid-column: 1;
		grid-row: 1;
	}

	.lv-homepage__locations-list {
		grid-column: 2;
		grid-row: 1;
	}

	.lv-homepage__section--locations .lv-homepage__link-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: var(--lv-space-md);
		row-gap: 0;
		margin-top: 0;
	}

	.lv-homepage__locations-media {
		grid-column: 1 / -1;
		grid-row: 2;
	}
}

@media (max-width: 1023px) {
	.lv-homepage__service-grid > .lv-service-card {
		position: relative;
	}

	.lv-homepage__service-grid > .lv-service-card:not(:last-child)::after {
		content: "";
		position: absolute;
		left: 0;
		right: 0;
		bottom: calc(var(--lv-space-lg) * -0.5);
		height: 1px;
		background-color: var(--lv-border-soft);
		transition: background-color var(--lv-transition-fast);
	}

	.lv-homepage__service-grid > .lv-service-card:hover:not(:last-child)::after,
	.lv-homepage__service-grid > .lv-service-card:focus-within:not(:last-child)::after {
		background-color: var(--lv-border-medium);
	}
}

@media (min-width: 768px) and (max-width: 1023px) {
	.lv-homepage__service-grid > .lv-service-card:last-child::after {
		content: "";
		position: absolute;
		left: 0;
		right: 0;
		bottom: calc(var(--lv-space-lg) * -0.5);
		height: 1px;
		background-color: var(--lv-border-soft);
		transition: background-color var(--lv-transition-fast);
	}

	.lv-homepage__service-grid > .lv-service-card:last-child:hover::after,
	.lv-homepage__service-grid > .lv-service-card:last-child:focus-within::after {
		background-color: var(--lv-border-medium);
	}
}

@media (min-width: 1024px) {
	.lv-homepage__featured-layout {
		grid-template-columns: minmax(240px, 0.32fr) minmax(0, 0.68fr);
		gap: var(--lv-space-2xl);
	}

	.lv-homepage__featured-intro {
		position: sticky;
		top: calc(var(--lv-header-height) + var(--lv-space-lg));
	}

	/* Fixed editorial wedding mosaic: one hero tile + three supports. */
	.lv-homepage__featured-grid {
		grid-template-columns: 1.35fr 1fr 1fr;
		grid-template-rows: repeat(2, clamp(150px, 18vw, 220px));
		grid-auto-flow: row;
		align-items: stretch;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card {
		height: 100%;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card .lv-featured-wedding-card__link,
	.lv-homepage__featured-grid > .lv-featured-wedding-card .lv-featured-wedding-card__media {
		height: 100%;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card .lv-featured-wedding-card__media {
		aspect-ratio: auto;
	}

	/* 1 item fallback */
	.lv-homepage__featured-grid > .lv-featured-wedding-card:only-child {
		grid-column: 1 / 4;
		grid-row: 1 / 3;
	}

	/* 2 items fallback */
	.lv-homepage__featured-grid > .lv-featured-wedding-card:first-child:nth-last-child(2) {
		grid-column: 1 / 3;
		grid-row: 1 / 3;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card:nth-child(2):last-child {
		grid-column: 3 / 4;
		grid-row: 1 / 3;
	}

	/* 3 items fallback */
	.lv-homepage__featured-grid > .lv-featured-wedding-card:first-child:nth-last-child(3) {
		grid-column: 1 / 2;
		grid-row: 1 / 3;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card:first-child:nth-last-child(3) + .lv-featured-wedding-card {
		grid-column: 2 / 4;
		grid-row: 1 / 2;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card:nth-child(3):last-child {
		grid-column: 2 / 4;
		grid-row: 2 / 3;
	}

	/* 4 items fixed editorial arrangement */
	.lv-homepage__featured-grid > .lv-featured-wedding-card:first-child:nth-last-child(4) {
		grid-column: 1 / 2;
		grid-row: 1 / 3;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card:first-child:nth-last-child(4) + .lv-featured-wedding-card {
		grid-column: 2 / 3;
		grid-row: 1 / 2;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card:first-child:nth-last-child(4) + .lv-featured-wedding-card + .lv-featured-wedding-card {
		grid-column: 3 / 4;
		grid-row: 1 / 2;
	}

	.lv-homepage__featured-grid > .lv-featured-wedding-card:nth-child(4):last-child {
		grid-column: 2 / 4;
		grid-row: 2 / 3;
	}

	.lv-homepage__services-layout {
		grid-template-columns: 1fr;
		gap: var(--lv-space-lg);
	}

	.lv-homepage__services-intro {
		position: static;
		max-width: none;
	}

	.lv-homepage__service-grid {
		grid-auto-flow: column;
		grid-auto-columns: minmax(0, 1fr);
		grid-template-columns: none;
		align-items: start;
		gap: clamp(var(--lv-space-md), 2.6vw, var(--lv-space-xl));
	}

	/* Editorial dividers between service columns (no cards, no shadows). */
	.lv-homepage__service-grid > .lv-service-card {
		position: relative;
		padding-inline: clamp(var(--lv-space-sm), 1.8vw, var(--lv-space-md));
	}

	.lv-homepage__service-grid > .lv-service-card:not(:last-child)::after {
		content: "";
		position: absolute;
		top: 4px;
		right: 0;
		bottom: 4px;
		width: 1px;
		background-color: var(--lv-border-soft);
		transition: background-color var(--lv-transition-fast);
	}

	.lv-homepage__service-grid > .lv-service-card:hover:not(:last-child)::after,
	.lv-homepage__service-grid > .lv-service-card:focus-within:not(:last-child)::after {
		background-color: var(--lv-border-medium);
	}

	/* Phase 10.17: stable 2-column shell (left content stack / right image). */
	.lv-homepage__locations-grid {
		grid-template-columns: minmax(0, 1.28fr) minmax(0, 0.92fr);
		grid-template-rows: auto auto;
		grid-template-areas:
			"copy media"
			"list media";
		column-gap: clamp(var(--lv-space-lg), 3vw, var(--lv-space-2xl));
		row-gap: var(--lv-space-md);
		align-items: start;
	}

	.lv-homepage__locations-copy {
		grid-area: copy;
		display: flex;
		flex-direction: column;
		gap: var(--lv-space-sm);
	}

	.lv-homepage__locations-copy .lv-section-heading__inner,
	.lv-homepage__locations-copy .lv-section-heading__intro {
		max-width: none;
	}

	.lv-homepage__locations-list {
		grid-area: list;
		align-self: start;
	}

	.lv-homepage__locations-media {
		grid-area: media;
		align-self: stretch;
		overflow: hidden;
		max-height: min(70vh, 620px);
	}

	.lv-homepage__locations-image {
		display: block;
		width: 100%;
		height: 100%;
		aspect-ratio: 4 / 5;
		max-height: min(70vh, 620px);
		object-fit: cover;
	}

	.lv-homepage__section--locations .lv-homepage__link-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: clamp(var(--lv-space-sm), 1.4vw, var(--lv-space-md));
		row-gap: 0;
		margin-top: 0;
	}
}

@media (min-width: 1024px) and (max-width: 1180px) {
	.lv-homepage__locations-grid {
		grid-template-columns: minmax(0, 1.18fr) minmax(0, 0.82fr);
	}

	.lv-homepage__section--locations .lv-homepage__link-grid {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 767px) {
	.lv-homepage__locations-copy {
		order: 1;
	}

	.lv-homepage__locations-list {
		order: 2;
	}

	.lv-homepage__locations-media {
		order: 3;
	}

	.lv-homepage__service-grid > .lv-service-card .lv-service-card__link {
		align-items: center;
		text-align: center;
	}
}

/* -------------------------------------------------------------
   10. Site footer — compact editorial (Phase 06 refinement v2)
   -----------------------------------------------------------------
   Compact sign-off footer on solid Charcoal, Warm Ivory text.
   Three zones separated by hairlines:

     1. Top brand row  — eyebrow + wordmark (left),
                         brand statement (middle),
                         enquiry prompt + Start Your Enquiry CTA
                         (right, with vertical hairline before it on
                         desktop). Centred stack on mobile.

     2. Link zone      — four groups (Explore / Services / Locations
                         / Legal). Each group is a <details> element:
                         on mobile it collapses to a tappable accordion
                         with a +/× icon; on desktop CSS forces the
                         bodies open and hides the toggle indicator so
                         the columns behave as static link lists.

     3. Meta zone      — © year + site name.

   Source-of-truth:
     - docs/02-design/lavent-component-library.md § Component 11 — Editorial Footer
     - docs/02-design/lavent-design-tokens.md
   ------------------------------------------------------------- */

.lv-site-footer {
	background-color: var(--lv-bg-footer);
	color: var(--lv-text-light);
	font-family: var(--lv-font-body);
}

.lv-site-footer__inner {
	width: 100%;
	max-width: var(--lv-container-wide);
	margin-inline: auto;
	/* v2: smallest section padding to keep the footer compact */
	padding: var(--lv-section-sm) var(--lv-container-padding) var(--lv-space-md);
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-lg);
}

/* --- Hairlines (Warm Ivory @ 20%) -------------------------------- */

.lv-site-footer__rule {
	height: 1px;
	margin: 0;
	border: 0;
	background-color: var(--lv-border-light-on-dark);
}

/* --- Zone 1: Top brand row --------------------------------------- */

.lv-site-footer__top {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: var(--lv-space-md);
}

@media (min-width: 768px) {
	.lv-site-footer__top {
		display: grid;
		grid-template-columns: auto minmax(0, 1fr) auto;
		align-items: center;
		text-align: left;
		gap: var(--lv-space-xl);
	}
}

.lv-site-footer__brand-mark {
	display: block;
}

.lv-site-footer__eyebrow {
	display: block;
	margin: 0 0 6px;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: rgba(247, 244, 239, 0.62);
}

.lv-site-footer__wordmark {
	display: block;
	margin: 0;
	font-family: var(--lv-font-heading);
	/* v2: much smaller wordmark — sign-off scale, not headline scale */
	font-size: clamp(2rem, 4.5vw, 3rem);
	font-weight: 500;
	line-height: 1.1;
	letter-spacing: 0.01em;
	color: var(--lv-text-light);
}

.lv-site-footer__statement {
	max-width: 36ch;
	margin: 0 auto;
	font-family: var(--lv-font-heading);
	/* v2: compact middle column */
	font-size: clamp(0.9375rem, 1.4vw, 1.0625rem);
	line-height: 1.4;
	color: rgba(247, 244, 239, 0.86);
}

@media (min-width: 768px) {
	.lv-site-footer__statement {
		margin: 0;
	}
}

.lv-site-footer__cta-block {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-sm);
	align-items: center;
}

@media (min-width: 768px) {
	.lv-site-footer__cta-block {
		align-items: flex-end;
		text-align: right;
		/* Vertical hairline before the CTA block, matching the reference */
		border-left: 1px solid var(--lv-border-light-on-dark);
		padding-left: var(--lv-space-xl);
		min-height: 64px;
		justify-content: center;
	}
}

.lv-site-footer__cta-prompt {
	max-width: 32ch;
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.5;
	color: rgba(247, 244, 239, 0.78);
}

/* --- Zone 2: Link groups (mobile accordion / desktop static) -----
   Two variants are rendered in the DOM (see footer.php) and toggled
   here by media query:
     • .lv-site-footer__columns--mobile  — <details> accordions,
                                           visible <1024px only.
     • .lv-site-footer__columns--desktop — static <section>/<ul>
                                           columns, visible ≥1024px.
   Each variant is removed from the layout AND the a11y tree at the
   opposite breakpoint via display:none. This sidesteps the cross-
   browser quirks where Safari/Chromium/Firefox each hide closed
   <details> content using a different UA mechanism that author CSS
   cannot reliably override at a single breakpoint. */

.lv-site-footer__columns {
	margin: 0;
}

/* Desktop variant: hidden on mobile, 4-col grid on ≥1024px */
.lv-site-footer__columns--desktop {
	display: none;
}

@media (min-width: 1024px) {
	.lv-site-footer__columns--desktop {
		display: grid;
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: var(--lv-space-lg) var(--lv-space-xl);
	}
}

/* Mobile variant: shown by default, hidden on ≥1024px */
.lv-site-footer__columns--mobile {
	display: flex;
	flex-direction: column;
	gap: 0;
}

@media (min-width: 1024px) {
	.lv-site-footer__columns--mobile {
		display: none;
	}
}

/* --- Desktop static columns -------------------------------------- */

.lv-site-footer__column {
	min-width: 0;
}

.lv-site-footer__column-title {
	margin: 0 0 var(--lv-space-sm);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: rgba(247, 244, 239, 0.62);
}

/* --- Mobile <details> accordion groups --------------------------- */

.lv-site-footer__group {
	border-top: 1px solid var(--lv-border-light-on-dark);
}

.lv-site-footer__group:last-child {
	border-bottom: 1px solid var(--lv-border-light-on-dark);
}

/* Strip native <details> marker so we can render our own indicator */
.lv-site-footer__group-toggle::-webkit-details-marker {
	display: none;
}

.lv-site-footer__group-toggle {
	list-style: none;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--lv-space-md);
	padding: 14px 0;
	cursor: pointer;
	color: var(--lv-text-light);
	transition: color var(--lv-transition-fast);
}

.lv-site-footer__group-toggle:hover,
.lv-site-footer__group-toggle:focus-visible {
	color: var(--lv-colour-champagne);
}

.lv-site-footer__group-title {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: rgba(247, 244, 239, 0.78);
}

/* +/× indicator drawn from two CSS bars (no SVG, no JS).
   The cross becomes an × by rotating the entire icon 45° when [open]. */
.lv-site-footer__group-icon {
	position: relative;
	display: inline-block;
	width: 14px;
	height: 14px;
	flex-shrink: 0;
	transition: transform var(--lv-transition-fast);
	color: rgba(247, 244, 239, 0.62);
}

.lv-site-footer__group-icon::before,
.lv-site-footer__group-icon::after {
	content: "";
	position: absolute;
	background-color: currentColor;
}

.lv-site-footer__group-icon::before {
	top: 50%;
	left: 0;
	right: 0;
	height: 1px;
	margin-top: -0.5px;
}

.lv-site-footer__group-icon::after {
	left: 50%;
	top: 0;
	bottom: 0;
	width: 1px;
	margin-left: -0.5px;
}

.lv-site-footer__group[open] .lv-site-footer__group-icon {
	transform: rotate(45deg);
	color: var(--lv-text-light);
}

.lv-site-footer__group-body {
	padding: 0 0 var(--lv-space-md);
}

/* --- Link list (shared by both variants) ------------------------- */

.lv-site-footer__list,
.lv-site-footer .menu {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.lv-site-footer__list li,
.lv-site-footer .menu li {
	margin: 0;
}

.lv-site-footer__list a,
.lv-site-footer .menu a {
	display: inline-block;
	padding: 2px 0;
	color: var(--lv-text-light);
	font-family: var(--lv-font-heading);
	font-size: 1.0625rem;
	line-height: 1.3;
	text-decoration: none;
	transition: color var(--lv-transition-fast), opacity var(--lv-transition-fast);
}

.lv-site-footer__list a:hover,
.lv-site-footer__list a:focus-visible,
.lv-site-footer .menu a:hover,
.lv-site-footer .menu a:focus-visible {
	color: var(--lv-colour-champagne);
}

/* --- Zone 3: Meta ------------------------------------------------- */

.lv-site-footer__meta {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: var(--lv-space-md);
}

@media (min-width: 768px) {
	.lv-site-footer__meta {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		text-align: left;
		gap: var(--lv-space-lg);
	}
}

.lv-site-footer__credit {
	margin: 0;
	font-size: var(--lv-text-xs);
	letter-spacing: 0.04em;
	color: rgba(247, 244, 239, 0.62);
}

/* --- Social links ------------------------------------------------- */

.lv-site-footer__socials {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	align-items: center;
	gap: 6px;
}

.lv-site-footer__socials li {
	margin: 0;
}

.lv-site-footer__social {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 999px;
	color: var(--lv-text-light);
	text-decoration: none;
	transition: color var(--lv-transition-fast), background-color var(--lv-transition-fast);
}

.lv-site-footer__social svg {
	display: block;
}

.lv-site-footer__social:hover,
.lv-site-footer__social:focus-visible {
	color: var(--lv-colour-champagne);
}

.lv-site-footer__social:focus-visible {
	outline: 1px solid var(--lv-colour-champagne);
	outline-offset: 2px;
}

/* -------------------------------------------------------------
   Stage 11 — Final batch editorial blocks
   Before/After · Related Content · Location Link List ·
   Venue Practical Notes · Wedding Details Panel · Supplier
   Credits · Featured Review · Video Block
   ------------------------------------------------------------- */

/* Before & After ------------------------------------------------- */

.lv-editorial-block--before-after .lv-editorial-block__pair {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(var(--lv-space-sm), 2.4vw, var(--lv-space-lg));
}

.lv-editorial-block--before-after .lv-editorial-block__pair-item {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-xs);
}

.lv-editorial-block--before-after .lv-editorial-block__pair-label {
	margin: 0;
}

.lv-editorial-block--before-after .lv-editorial-block__pair-media {
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background-color: var(--lv-bg-section-alt);
}

.lv-editorial-block--before-after .lv-editorial-block__pair-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.lv-editorial-block--before-after .lv-editorial-block__pair-footer {
	max-width: 56ch;
	margin-inline: auto;
	margin-top: var(--lv-space-md);
	text-align: center;
}

.lv-editorial-block--before-after .lv-editorial-block__pair-caption {
	margin: 0;
	font-family: var(--lv-font-heading);
	font-size: clamp(1rem, 1.4vw, 1.25rem);
	line-height: 1.5;
	color: var(--lv-text-primary);
}

.lv-editorial-block--before-after .lv-editorial-block__pair-explanation {
	margin: var(--lv-space-xs) 0 0;
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
	color: var(--lv-text-muted);
}

@media (max-width: 767px) {
	.lv-editorial-block--before-after .lv-editorial-block__pair {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Related Content ------------------------------------------------ */

.lv-editorial-block--related-content .lv-editorial-block__heading {
	margin-bottom: var(--lv-space-md);
}

.lv-editorial-block--related-content .lv-editorial-block__related-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(var(--lv-space-sm), 2.4vw, var(--lv-space-lg));
}

.lv-editorial-block--related-content .lv-editorial-block__related-grid[data-count="1"] {
	grid-template-columns: minmax(0, min(420px, 100%));
	justify-content: center;
}

.lv-editorial-block--related-content .lv-editorial-block__related-grid[data-count="2"] {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	max-width: 820px;
	margin-inline: auto;
}

.lv-editorial-block--related-content .lv-editorial-block__related-item {
	margin: 0;
}

/* Card-link hover mirrors quiet text-link behaviour used across the
   theme: no image motion, clear title affordance. */
.lv-editorial-block--related-content .lv-editorial-block__related-link {
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-xs);
	text-decoration: none;
	color: inherit;
}

.lv-editorial-block--related-content .lv-editorial-block__related-media {
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background-color: var(--lv-bg-section-alt);
	margin: 0;
}

.lv-editorial-block--related-content .lv-editorial-block__related-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform var(--lv-transition-slow);
}

.lv-editorial-block--related-content .lv-editorial-block__related-link:hover .lv-editorial-block__related-media img,
.lv-editorial-block--related-content .lv-editorial-block__related-link:focus-visible .lv-editorial-block__related-media img {
	transform: scale(1.02);
}

.lv-editorial-block--related-content .lv-editorial-block__related-body {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.lv-editorial-block--related-content .lv-editorial-block__related-eyebrow {
	margin: 0;
}

.lv-editorial-block--related-content .lv-editorial-block__related-title {
	margin: 0;
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.5vw, 1.375rem);
	line-height: 1.3;
	font-weight: 400;
	color: var(--lv-text-primary);
}

@media (max-width: 1024px) {
	.lv-editorial-block--related-content .lv-editorial-block__related-grid,
	.lv-editorial-block--related-content .lv-editorial-block__related-grid[data-count="2"] {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.lv-editorial-block--related-content .lv-editorial-block__related-media {
		aspect-ratio: 3 / 2;
	}
}

@media (max-width: 599px) {
	.lv-editorial-block--related-content .lv-editorial-block__related-grid,
	.lv-editorial-block--related-content .lv-editorial-block__related-grid[data-count="2"] {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Location Link List --------------------------------------------- */

.lv-editorial-block--location-link-list.lv-section {
	padding-block: clamp(var(--lv-space-md), 3.5vw, var(--lv-space-xl));
}

.lv-editorial-block--location-link-list .lv-editorial-container,
.lv-editorial-block--location-link-list .lv-editorial-block__inner {
	max-width: var(--lv-container-standard);
}

.lv-editorial-block--location-link-list .lv-editorial-block__heading {
	margin-bottom: var(--lv-space-md);
	max-width: none;
}

.lv-editorial-block--location-link-list .lv-editorial-block__body {
	max-width: none;
	margin-bottom: var(--lv-space-lg);
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0;
	border-top: 1px solid var(--lv-border-soft);
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list-item {
	margin: 0;
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list-link,
.lv-editorial-block--location-link-list .lv-editorial-block__link-list-item > span:not(.lv-editorial-block__link-list-area):not(.lv-editorial-block__link-list-label) {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-start;
	gap: var(--lv-space-2xs);
	padding-block: var(--lv-space-sm);
	color: var(--lv-text-primary);
	text-decoration: none;
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list-item > .lv-editorial-block__link-list-label,
.lv-editorial-block--location-link-list .lv-editorial-block__link-list-item > .lv-editorial-block__link-list-area {
	display: inline-block;
	color: var(--lv-text-primary);
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list-label {
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.5vw, 1.3125rem);
	line-height: 1.25;
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list-area {
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-sm);
	color: var(--lv-text-muted);
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list-link {
	transition: color var(--lv-transition-fast);
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list-link:hover,
.lv-editorial-block--location-link-list .lv-editorial-block__link-list-link:focus-visible {
	/* Match the homepage `.lv-link-card__link:hover` accent so every
	   text-link surface across the site lands on the same tone. */
	color: var(--lv-colour-deep-taupe);
}

.lv-editorial-block--location-link-list .lv-editorial-block__link-list-link:hover .lv-editorial-block__link-list-label,
.lv-editorial-block--location-link-list .lv-editorial-block__link-list-link:focus-visible .lv-editorial-block__link-list-label {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

@media (min-width: 640px) {
	.lv-editorial-block--location-link-list .lv-editorial-block__link-list {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: clamp(var(--lv-space-lg), 3vw, var(--lv-space-xl));
		row-gap: 0;
	}

}

@media (min-width: 1280px) {
	.lv-editorial-block--location-link-list .lv-editorial-block__link-list {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}
}

@media (max-width: 639px) {
	.lv-editorial-block--location-link-list .lv-editorial-block__link-list {
		display: grid;
		grid-template-columns: minmax(0, 1fr);
		column-gap: 0;
	}
}

/* Venue Practical Notes ----------------------------------------- */

.lv-editorial-block--venue-practical-notes .lv-editorial-container {
	max-width: var(--lv-container-standard);
}

.lv-editorial-block--venue-practical-notes .lv-editorial-block__panel {
	padding-inline: 0;
	padding-block: clamp(var(--lv-space-md), 2.8vw, var(--lv-space-lg));
	background: transparent;
}

.lv-editorial-block--venue-practical-notes .lv-editorial-block__heading {
	max-width: 32ch;
	margin-bottom: var(--lv-space-md);
}

.lv-editorial-block--venue-practical-notes .lv-editorial-block__notes-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: clamp(var(--lv-space-md), 3vw, var(--lv-space-xl));
	row-gap: 0;
	border-top: 1px solid var(--lv-border-soft);
}

.lv-editorial-block--venue-practical-notes .lv-editorial-block__notes-item {
	margin: 0;
	padding-block: var(--lv-space-md);
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-editorial-block--venue-practical-notes .lv-editorial-block__notes-title {
	margin: 0 0 var(--lv-space-xs);
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-muted);
}

.lv-editorial-block--venue-practical-notes .lv-editorial-block__notes-body {
	margin: 0;
	color: var(--lv-text-primary);
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
}

.lv-editorial-block--venue-practical-notes .lv-editorial-block__notes-body p {
	margin: 0 0 var(--lv-space-xs);
}

.lv-editorial-block--venue-practical-notes .lv-editorial-block__notes-body p:last-child {
	margin-bottom: 0;
}

@media (max-width: 767px) {
	.lv-editorial-block--venue-practical-notes .lv-editorial-block__notes-list {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Wedding Details Panel ----------------------------------------- */

.lv-editorial-block--wedding-details-panel .lv-editorial-container {
	max-width: var(--lv-container-standard);
}

.lv-editorial-block--wedding-details-panel .lv-editorial-block__panel {
	padding-inline: 0;
	padding-block: clamp(var(--lv-space-md), 2.8vw, var(--lv-space-lg));
	background: transparent;
}

.lv-editorial-block--wedding-details-panel .lv-editorial-block__heading {
	max-width: 32ch;
	margin-bottom: var(--lv-space-md);
}

.lv-editorial-block--wedding-details-panel .lv-editorial-block__facts {
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: clamp(var(--lv-space-md), 3vw, var(--lv-space-xl));
	row-gap: 0;
	border-top: 1px solid var(--lv-border-soft);
}

.lv-editorial-block--wedding-details-panel .lv-editorial-block__fact {
	padding-block: var(--lv-space-sm);
	border-bottom: 1px solid var(--lv-border-soft);
	display: flex;
	flex-direction: column;
	gap: 2px;
}

/* Match Information Panel exactly — Wedding Details Panel is the same
   labelled-facts pattern in a different context. Only spacing and
   overflow-wrap need adjustment; typography inherits from the shared
   `.lv-editorial-block__fact-*` base rules. */
.lv-editorial-block--wedding-details-panel .lv-editorial-block__fact-label,
.lv-editorial-block--wedding-details-panel .lv-editorial-block__fact-value {
	margin: 0;
}

.lv-editorial-block--wedding-details-panel .lv-editorial-block__fact-value {
	font-weight: 400;
	overflow-wrap: anywhere;
}

@media (max-width: 767px) {
	.lv-editorial-block--wedding-details-panel .lv-editorial-block__facts {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Supplier Credits ---------------------------------------------- */

.lv-editorial-block--supplier-credits .lv-editorial-block__heading {
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-block--supplier-credits .lv-editorial-block__body {
	margin-bottom: var(--lv-space-md);
}

.lv-editorial-block--supplier-credits .lv-editorial-block__credits {
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	border-top: 1px solid var(--lv-border-soft);
}

.lv-editorial-block--supplier-credits .lv-editorial-block__credit {
	display: grid;
	grid-template-columns: minmax(140px, 1fr) 2fr;
	gap: var(--lv-space-sm);
	align-items: baseline;
	padding-block: clamp(var(--lv-space-xs), 1.4vw, var(--lv-space-sm));
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-editorial-block--supplier-credits .lv-editorial-block__credit-role {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-muted);
}

.lv-editorial-block--supplier-credits .lv-editorial-block__credit-name {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-base);
	line-height: var(--lv-leading-body);
	font-weight: 400;
	color: var(--lv-text-primary);
	overflow-wrap: anywhere;
}

.lv-editorial-block--supplier-credits .lv-editorial-block__credit-name a {
	color: inherit;
	text-decoration: none;
	border-bottom: 1px solid var(--lv-border-soft);
	transition: color var(--lv-transition-fast), border-color var(--lv-transition-fast);
}

.lv-editorial-block--supplier-credits .lv-editorial-block__credit-name a:hover,
.lv-editorial-block--supplier-credits .lv-editorial-block__credit-name a:focus-visible {
	color: var(--lv-colour-deep-taupe);
	border-color: currentColor;
}

@media (max-width: 599px) {
	.lv-editorial-block--supplier-credits .lv-editorial-block__credit {
		grid-template-columns: minmax(0, 1fr);
		gap: 2px;
	}
}

/* Featured Review ----------------------------------------------- */

.lv-editorial-block--featured-review .lv-editorial-block__featured-review {
	margin: 0;
	max-width: 44ch;
	margin-inline: auto;
	padding-block: clamp(var(--lv-space-md), 3vw, var(--lv-space-lg));
	border-top: 1px solid var(--lv-border-soft);
	border-bottom: 1px solid var(--lv-border-soft);
	text-align: center;
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-eyebrow {
	margin: 0 0 var(--lv-space-sm);
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-quote {
	margin: 0;
	position: relative;
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-quote::before {
	/* Sized to match the homepage `.lv-review-card::before` glyph so
	   Featured Review reads as the editorial cousin of the homepage
	   review card. Pull Quote intentionally uses a smaller glyph. */
	content: "“";
	display: block;
	font-family: var(--lv-font-heading);
	font-size: clamp(3rem, 5vw, 4rem);
	line-height: 0.8;
	color: var(--lv-colour-champagne);
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-quote p {
	margin: 0;
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.7vw, 1.5rem);
	line-height: 1.45;
	font-weight: 400;
	color: var(--lv-text-primary);
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-footer {
	margin-top: var(--lv-space-sm);
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-name {
	margin: 0;
	font-family: var(--lv-font-body);
	font-size: var(--lv-text-xs);
	font-weight: 500;
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-primary);
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-meta {
	margin: 4px 0 0;
	font-size: var(--lv-text-xs);
	color: var(--lv-text-muted);
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-link {
	margin: var(--lv-space-xs) 0 0;
	font-size: var(--lv-text-sm);
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-link a {
	color: var(--lv-text-primary);
	text-decoration: none;
	border-bottom: 1px solid var(--lv-border-soft);
	padding-bottom: 1px;
	transition: color var(--lv-transition-fast), border-color var(--lv-transition-fast);
}

.lv-editorial-block--featured-review .lv-editorial-block__featured-review-link a:hover,
.lv-editorial-block--featured-review .lv-editorial-block__featured-review-link a:focus-visible {
	color: var(--lv-colour-deep-taupe);
	border-color: currentColor;
}

/* Featured Review — emphasis treatment.
   Wraps the review in a soft-stone panel so it creates a clear pause
   moment on service pages. Reuses the same review typography; only
   the section container gains a background token and generous padding. */
.lv-editorial-block--featured-review-emphasis {
	background-color: var(--lv-bg-section-alt);
	padding-block: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
}

.lv-editorial-block--featured-review-emphasis .lv-editorial-block__featured-review {
	max-width: 52ch;
	border-top: 0;
	border-bottom: 0;
	padding-block: 0;
}

.lv-editorial-block--featured-review-emphasis .lv-editorial-block__featured-review-quote p {
	font-size: clamp(1.25rem, 1.9vw, 1.625rem);
}

/* Video Block --------------------------------------------------- */

.lv-editorial-block--video-block .lv-editorial-block__eyebrow {
	margin: 0 0 var(--lv-space-xs);
}

.lv-editorial-block--video-block .lv-editorial-block__heading {
	margin-bottom: var(--lv-space-md);
	max-width: 32ch;
}

.lv-editorial-block--video-block .lv-editorial-block__video-figure {
	margin: 0;
}

.lv-editorial-block--video-block .lv-editorial-block__video-frame {
	position: relative;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background-color: var(--lv-bg-section-alt);
}

.lv-editorial-block--video-block .lv-editorial-block__video,
.lv-editorial-block--video-block .lv-editorial-block__video-fallback {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.lv-editorial-block--video-block .lv-editorial-block__video-caption {
	margin-top: var(--lv-space-sm);
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
	color: var(--lv-text-muted);
	text-align: center;
}

/* -------------------------------------------------------------
   Pricing / Investment columns
   Two-column editorial section for commercial "investment" content.
   Left column = pricing prose (WYSIWYG). Right column = restrained
   list of additional support / included items. A single optional
   CTA renders centred below both columns. No cards, no rounded
   panels, no tables — Stage 11 editorial rules.
   ------------------------------------------------------------- */


.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-heading-group {
	max-width: none;
}

.lv-editorial-block--pricing-columns .lv-editorial-block__eyebrow {
	text-align: center;
	margin-inline: auto;
}

.lv-editorial-block--pricing-columns .lv-editorial-block__heading {
	max-width: 32ch;
	text-align: center;
	margin-inline: auto;
}

.lv-editorial-block--pricing-columns .lv-editorial-block__intro {
	text-align: center;
	margin-inline: auto;
}

.lv-editorial-block--pricing-columns .lv-editorial-block__intro {
	max-width: min(100%, 62ch);
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
	margin-top: var(--lv-space-xl);
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-left > *:first-child,
.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-right > *:first-child {
	margin-top: 0;
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-left > *:last-child,
.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-right > *:last-child {
	margin-bottom: 0;
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-left p {
	margin-top: 0;
	margin-bottom: var(--lv-space-md);
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-right-heading {
	margin: 0 0 var(--lv-space-md);
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.6vw, 1.375rem);
	font-weight: 500;
	line-height: 1.45;
	color: var(--lv-text-primary);
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--lv-space-sm);
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-item {
	padding-top: var(--lv-space-sm);
	border-top: 1px solid var(--lv-border-soft);
	display: flex;
	flex-direction: column;
	gap: var(--lv-space-2xs);
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-item:first-child {
	padding-top: 0;
	border-top: 0;
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-item-label {
	font-size: var(--lv-text-base);
	line-height: var(--lv-leading-body);
	color: var(--lv-text-primary);
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-item-note {
	font-size: var(--lv-text-sm);
	line-height: var(--lv-leading-body);
	color: var(--lv-text-muted);
}

.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-cta {
	display: flex;
	justify-content: center;
	margin-top: clamp(var(--lv-space-lg), 4vw, var(--lv-space-xl));
}

@media (min-width: 768px) {
	.lv-editorial-block--pricing-columns .lv-editorial-block__pricing-grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		column-gap: clamp(var(--lv-space-xl), 6vw, var(--lv-space-2xl));
		align-items: start;
	}
}

/* -------------------------------------------------------------
   11. Reduced motion preferences
   ------------------------------------------------------------- */

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

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

	/* Autoplay video blocks fall back to poster + controls only. */
	.lv-editorial-block--video-block.lv-editorial-block--video-autoplay .lv-editorial-block__video {
		animation: none;
	}
}

/* =============================================================
   PHASE 13 — CPT scaffolds, editorial header, discovery graph
   -------------------------------------------------------------
   Rules added in Phase 13 for the site-page scaffolds and the
   Venue / Location / Real Wedding discovery paths. Kept in one
   trailing block so it can be reviewed and staged separately from
   the Stage 12C client-logo-list rules earlier in this file.

   Components styled below:
     - .lv-editorial-header         (archive/index header component)
     - .lv-archive-grid             (venue / location / journal / real-wedding archives)
     - .lv-journal-card             (journal post card)
     - .lv-related                  (related-content section on singles)

   Source-of-truth:
     - docs/03-development/lavent-template-architecture.md § T06-T15
     - docs/03-development/phase-13-site-page-architecture-and-scaffolds.md
   ============================================================= */

/* --- Editorial header (archives + journal index) --------------- */

.lv-editorial-header {
	padding-block: clamp(var(--lv-space-xl), 6vw, var(--lv-space-2xl));
	background-color: var(--lv-bg-section);
}

.lv-editorial-header__inner {
	max-width: var(--lv-container-narrow);
	margin-inline: auto;
}

.lv-editorial-header__eyebrow {
	margin-bottom: var(--lv-space-sm);
}

.lv-editorial-header__heading {
	margin-bottom: var(--lv-space-md);
	font-size: clamp(2rem, 4.5vw, 3rem);
	line-height: var(--lv-leading-tight);
	max-width: 22ch;
}

.lv-editorial-header__intro {
	margin: 0;
	color: var(--lv-text-muted);
	max-width: 56ch;
	font-size: var(--lv-text-lg);
	line-height: var(--lv-leading-body);
}

/* --- Archive grids --------------------------------------------- */

.lv-archive-grid {
	padding-block: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
}

.lv-archive-grid__inner {
	width: 100%;
}

.lv-archive-grid__list {
	display: grid;
	gap: clamp(var(--lv-space-lg), 3vw, var(--lv-space-xl));
	grid-template-columns: minmax(0, 1fr);
}

.lv-archive-grid--venues .lv-archive-grid__list,
.lv-archive-grid--locations .lv-archive-grid__list {
	grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 768px) {
	.lv-archive-grid--real-weddings .lv-archive-grid__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.lv-archive-grid--venues .lv-archive-grid__list,
	.lv-archive-grid--locations .lv-archive-grid__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.lv-archive-grid--venues .lv-archive-grid__list,
	.lv-archive-grid--locations .lv-archive-grid__list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.lv-archive-grid__empty {
	max-width: var(--lv-container-narrow);
	margin-inline: auto;
	padding-block: var(--lv-space-xl);
	text-align: center;
}

.lv-archive-grid__empty-text {
	color: var(--lv-text-muted);
	margin-bottom: var(--lv-space-lg);
	max-width: 52ch;
	margin-inline: auto;
	font-size: var(--lv-text-lg);
	line-height: var(--lv-leading-body);
}

.lv-archive-grid__empty-actions {
	margin: 0;
}

/* WP-native pagination emitted by the_posts_pagination() */
.lv-archive-grid .pagination,
.lv-archive-grid .nav-links {
	display: flex;
	justify-content: center;
	gap: var(--lv-space-sm);
	margin-top: var(--lv-space-xl);
	font-size: var(--lv-text-sm);
}

.lv-archive-grid .page-numbers {
	display: inline-flex;
	min-width: 34px;
	padding: 6px 10px;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--lv-border-soft);
	border-radius: var(--lv-radius-sm);
	text-decoration: none;
	color: var(--lv-text-primary);
}

.lv-archive-grid .page-numbers.current {
	background-color: var(--lv-colour-deep-taupe);
	color: var(--lv-text-light);
	border-color: var(--lv-colour-deep-taupe);
}

/* --- Journal archive + cards ----------------------------------- */

.lv-journal-archive {
	padding-block: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
}

.lv-journal-archive__section-heading,
.lv-journal-related__header {
	max-width: 46ch;
	margin-bottom: var(--lv-space-lg);
}

.lv-journal-archive__heading,
.lv-journal-related__heading {
	margin: var(--lv-space-xs) 0 0;
	font-size: clamp(1.8rem, 3.2vw, 2.6rem);
}

.lv-journal-archive__latest,
.lv-journal-related {
	margin-top: clamp(var(--lv-space-xl), 6vw, var(--lv-space-2xl));
}

.lv-journal-archive__grid,
.lv-journal-related__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(var(--lv-space-lg), 3vw, var(--lv-space-xl));
}

@media (min-width: 768px) {
	.lv-journal-archive__grid,
	.lv-journal-related__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1100px) {
	.lv-journal-archive__grid,
	.lv-journal-related__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.lv-journal-card {
	display: flex;
	flex-direction: column;
	min-width: 0;
	background: var(--lv-bg-section);
}

.lv-journal-card__media {
	display: block;
	overflow: hidden;
	background: var(--lv-bg-section-alt);
	aspect-ratio: 4 / 3;
}

.lv-journal-card__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--lv-transition-standard);
}

.lv-journal-card:hover .lv-journal-card__image,
.lv-journal-card:focus-within .lv-journal-card__image {
	transform: scale(1.025);
}

.lv-journal-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: flex-start;
	padding-top: var(--lv-space-md);
}

.lv-journal-card__meta {
	font-size: var(--lv-text-xs);
	letter-spacing: var(--lv-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--lv-text-muted);
	margin: 0;
}

.lv-journal-card__title {
	margin: 0;
	font-size: clamp(1.375rem, 2.4vw, 1.75rem);
	line-height: var(--lv-leading-heading);
}

.lv-journal-card__title a {
	color: var(--lv-text-primary);
	text-decoration: none;
}

.lv-journal-card__title a:hover,
.lv-journal-card__title a:focus-visible {
	color: var(--lv-colour-deep-taupe);
}

.lv-journal-card__excerpt {
	margin: 0;
	color: var(--lv-text-muted);
	max-width: 60ch;
}

.lv-journal-card__link {
	margin-top: var(--lv-space-md);
	color: var(--lv-text-primary);
	font-size: var(--lv-text-sm);
	font-weight: 600;
	text-decoration: none;
}

.lv-journal-card__link:hover,
.lv-journal-card__link:focus-visible {
	color: var(--lv-colour-deep-taupe);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.lv-journal-card--featured {
	gap: 0;
	border: 1px solid var(--lv-border-soft);
	background: var(--lv-bg-section-alt);
}

.lv-journal-card--featured .lv-journal-card__media {
	aspect-ratio: 4 / 3;
}

.lv-journal-card--featured .lv-journal-card__body {
	justify-content: center;
	padding: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
}

.lv-journal-card--featured .lv-journal-card__title {
	font-size: clamp(2rem, 4vw, 3.5rem);
}

@media (min-width: 900px) {
	.lv-journal-card--featured {
		display: grid;
		grid-template-columns: minmax(0, 58fr) minmax(0, 42fr);
	}

	.lv-journal-card--featured .lv-journal-card__media {
		min-height: clamp(380px, 42vw, 580px);
		aspect-ratio: auto;
	}
}

/* --- Single Journal article ------------------------------------ */

.lv-journal-article__hero {
	padding-bottom: clamp(var(--lv-space-lg), 4vw, var(--lv-space-xl));
	background: var(--lv-bg-section);
}

.lv-journal-article__hero-inner {
	max-width: var(--lv-container-narrow);
}

.lv-journal-article__eyebrow {
	margin-bottom: var(--lv-space-sm);
}

.lv-journal-article__title {
	max-width: 18ch;
	margin: 0;
	font-size: clamp(2.5rem, 6vw, 5rem);
	line-height: 0.98;
}

.lv-journal-article__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: var(--lv-space-md);
	color: var(--lv-text-muted);
	font-size: var(--lv-text-sm);
}

.lv-journal-article__featured-media {
	max-width: var(--lv-container-wide);
	margin-top: 0;
	margin-bottom: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
}

.lv-journal-article__featured-image {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.lv-journal-article__content {
	max-width: 44rem;
	margin-inline: auto;
	padding-inline: var(--lv-container-padding);
	font-size: clamp(1.0625rem, 1.3vw, 1.1875rem);
	line-height: 1.75;
}

.lv-journal-article__content > :first-child {
	margin-top: 0;
}

.lv-journal-article__content h2,
.lv-journal-article__content h3,
.lv-journal-article__content h4 {
	margin-top: clamp(var(--lv-space-xl), 5vw, var(--lv-space-2xl));
	line-height: var(--lv-leading-tight);
}

.lv-journal-article__content h2 {
	font-size: clamp(1.8rem, 3.2vw, 2.6rem);
}

.lv-journal-article__content h3 {
	font-size: clamp(1.4rem, 2.5vw, 1.9rem);
}

.lv-journal-article__content p,
.lv-journal-article__content ul,
.lv-journal-article__content ol {
	margin-block: var(--lv-space-md);
}

.lv-journal-article__content a {
	color: inherit;
	text-decoration-color: var(--lv-colour-deep-taupe);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
}

.lv-journal-article__content blockquote {
	margin: clamp(var(--lv-space-xl), 5vw, var(--lv-space-2xl)) 0;
	padding-left: var(--lv-space-md);
	border-left: 1px solid var(--lv-colour-deep-taupe);
	font-family: var(--lv-font-heading);
	font-size: clamp(1.5rem, 3vw, 2.25rem);
	line-height: 1.25;
}

.lv-journal-article__content img {
	display: block;
	width: 100%;
	height: auto;
	margin-block: clamp(var(--lv-space-lg), 4vw, var(--lv-space-xl));
}

.lv-journal-related {
	padding-block: clamp(var(--lv-space-xl), 5vw, var(--lv-space-2xl));
	background: var(--lv-bg-section-alt);
}

.lv-journal-related .lv-journal-card {
	background: transparent;
}

/* --- Related content sections (single venue / location / RW) --- */

.lv-related {
	padding-block: clamp(var(--lv-space-xl), 5vw, var(--lv-space-2xl));
}

.lv-related--ivory {
	background-color: var(--lv-bg-section);
}

.lv-related--soft-stone {
	background-color: var(--lv-bg-section-alt);
}

.lv-related__inner {
	width: 100%;
}

.lv-related__header {
	max-width: 56ch;
	margin: 0 auto var(--lv-space-xl);
	text-align: center;
}

.lv-related__eyebrow {
	margin-bottom: var(--lv-space-xs);
}

.lv-related__heading {
	margin-bottom: var(--lv-space-sm);
	font-size: clamp(1.75rem, 3.6vw, 2.5rem);
	line-height: var(--lv-leading-tight);
}

.lv-related__intro {
	margin: 0;
	color: var(--lv-text-muted);
}

.lv-related__grid {
	display: grid;
	gap: clamp(var(--lv-space-lg), 3vw, var(--lv-space-xl));
	grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 768px) {
	.lv-related__grid--weddings {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.lv-related__grid--venues,
	.lv-related__grid--locations {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.lv-related__grid--venues,
	.lv-related__grid--locations {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* Single-item grids (e.g. one location context link on a venue page)
   should not stretch the card to full row width — cap it and centre. */
.lv-related__grid > .lv-link-card:only-child {
	max-width: 420px;
	margin-inline: auto;
	width: 100%;
}

/* --- Real-wedding single: subtle body spacing ------------------ */

.lv-real-wedding__body,
.lv-venue__body,
.lv-location__body {
	padding-block: clamp(var(--lv-space-md), 3vw, var(--lv-space-xl));
}

.lv-real-wedding__intro,
.lv-venue__intro,
.lv-location__intro {
	padding-block: var(--lv-space-md);
	color: var(--lv-text-muted);
}


/* ========================================================================
 * PHASE 14 — CPT template design alignment
 * ------------------------------------------------------------------------
 * Additive polish only. All fixed CPT-single sections reuse existing
 * .lv-editorial-block--* classes so no per-block visual work is repeated
 * here. The rules below cover:
 *   1. Featured wedding tile (Real Weddings archive)
 *   2. Small archive-grid header (eyebrow + heading above the card grid)
 *   3. Tip list layout (stacked tip-boxes on Venue singles)
 *   4. Reusable editorial-block header (used by gallery + tip-list)
 *   5. Optional classic-content polish for CPT singles
 * ======================================================================== */

/* 1. Featured wedding tile (Real Weddings archive) --------------------- */
.lv-featured-wedding-tile {
	padding-block: var(--lv-space-md) var(--lv-space-lg);
	background: var(--lv-bg-section);
}

.lv-featured-wedding-tile--soft-stone {
	background: var(--lv-bg-section-alt);
}

.lv-featured-wedding-tile__inner {
        display: block;
}

.lv-featured-wedding-tile__link {
        position: relative;
        display: grid;
        grid-template-columns: 1fr;
        gap: 0;
        color: inherit;
        text-decoration: none;
        border-radius: var(--lv-radius-md, 4px);
        overflow: hidden;
        isolation: isolate;
}

.lv-featured-wedding-tile__media {
        position: relative;
        margin: 0;
        aspect-ratio: 16 / 9;
        overflow: hidden;
	background: var(--lv-bg-section-alt);
}

.lv-featured-wedding-tile__image {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform var(--lv-transition-slow, 700ms ease);
}

.lv-featured-wedding-tile__link:hover .lv-featured-wedding-tile__image,
.lv-featured-wedding-tile__link:focus-visible .lv-featured-wedding-tile__image {
        transform: scale(1.02);
}

.lv-featured-wedding-tile__overlay {
        position: absolute;
        inset: 0;
        pointer-events: none;
        background: linear-gradient(180deg, rgba(20, 18, 16, 0) 40%, rgba(20, 18, 16, 0.55) 100%);
}

.lv-featured-wedding-tile__body {
        position: absolute;
        inset-inline: 0;
        bottom: 0;
        padding: clamp(var(--lv-space-md), 4vw, var(--lv-space-lg));
		color: var(--lv-text-light);
        display: flex;
        flex-direction: column;
        gap: var(--lv-space-xs);
		max-width: 42ch;
}

.lv-featured-wedding-tile__eyebrow {
        color: rgba(247, 244, 239, 0.9);
        margin: 0;
}

.lv-featured-wedding-tile__title {
        font-family: var(--lv-font-heading);
        font-size: clamp(1.75rem, 3.5vw, 3rem);
        line-height: 1.1;
        margin: 0;
	color: var(--lv-text-light);
}

.lv-featured-wedding-tile__meta {
        margin: 0;
        color: rgba(247, 244, 239, 0.85);
        font-size: 0.95rem;
        letter-spacing: 0.02em;
}

.lv-featured-wedding-tile__excerpt {
        margin: 0;
        max-width: 60ch;
        color: rgba(247, 244, 239, 0.9);
        font-size: 1rem;
        line-height: 1.55;
}

.lv-featured-wedding-tile__button {
        align-self: flex-start;
        margin-top: var(--lv-space-sm);
}

@media (max-width: 640px) {
        .lv-featured-wedding-tile__media {
                aspect-ratio: 4 / 5;
        }
        .lv-featured-wedding-tile__body {
                gap: 0.35rem;
                padding: var(--lv-space-md);
        }
        .lv-featured-wedding-tile__excerpt {
                display: none;
        }
}

/* 2. Archive-grid header (used above the card grid) -------------------- */
.lv-archive-grid__header {
        margin-bottom: clamp(var(--lv-space-md), 3vw, var(--lv-space-lg));
        text-align: center;
        max-width: 720px;
        margin-inline: auto;
}

.lv-archive-grid__eyebrow {
        margin: 0 0 var(--lv-space-xs);
        color: var(--lv-text-muted);
}

.lv-archive-grid__heading {
        margin: 0;
        font-family: var(--lv-font-heading);
        font-size: clamp(1.5rem, 2.4vw, 2rem);
        line-height: 1.2;
	color: var(--lv-text-primary);
}

/* 3. Tip list (stack of tip-box aside items) --------------------------- */
.lv-editorial-block__tip-list {
        list-style: none;
        margin: 0;
        padding: 0;
        display: grid;
        gap: var(--lv-space-md);
}

.lv-editorial-block__tip-item {
        margin: 0;
}

.lv-editorial-block__tip-item .lv-editorial-block__panel--tip-box {
        margin: 0;
}

.lv-editorial-block__tip-title {
	margin: 0 0 var(--lv-space-xs);
	font-family: var(--lv-font-heading);
	font-size: clamp(1.125rem, 1.5vw, 1.375rem);
	line-height: 1.3;
	font-weight: 400;
	letter-spacing: 0;
	color: var(--lv-text-primary);
}

/* 4. Reusable editorial-block section header --------------------------- */
.lv-editorial-block__header {
        text-align: center;
        max-width: 720px;
        margin: 0 auto clamp(var(--lv-space-md), 3vw, var(--lv-space-lg));
        display: flex;
        flex-direction: column;
        gap: var(--lv-space-xs);
}

.lv-editorial-block__header .lv-editorial-block__eyebrow,
.lv-editorial-block__header .lv-editorial-block__heading,
.lv-editorial-block__header .lv-editorial-block__intro {
        margin: 0;
}

/* 5. Optional classic-content polish for CPT singles ------------------- */
.lv-real-wedding__classic-content,
.lv-venue__classic-content,
.lv-location__classic-content {
        padding-block: clamp(var(--lv-space-md), 3vw, var(--lv-space-lg));
        color: var(--lv-text-muted);
}

.lv-real-wedding__classic-content > * + *,
.lv-venue__classic-content > * + *,
.lv-location__classic-content > * + * {
        margin-block-start: var(--lv-space-sm);
}

/* 6. Editorial header — with-image variant (Phase 14 rework) ----------- *
 *
 * Used by the Locations Archive hero to compose the calm heading column
 * beside a stylised map artwork. Text-only invocations of the editorial
 * header component are unchanged.
 *
 * ------------------------------------------------------------------------- */
.lv-editorial-header--with-image .lv-editorial-header__inner {
        max-width: var(--lv-container-standard);
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        gap: clamp(var(--lv-space-lg), 5vw, var(--lv-space-2xl));
        align-items: center;
}

.lv-editorial-header--with-image .lv-editorial-header__content {
        max-width: 48ch;
}

.lv-editorial-header--with-image .lv-editorial-header__heading {
        max-width: 18ch;
}

.lv-editorial-header--with-image .lv-editorial-header__intro {
        max-width: 46ch;
}

.lv-editorial-header--with-image .lv-editorial-header__figure {
        margin: 0;
}

.lv-editorial-header--with-image .lv-editorial-header__image {
        display: block;
        width: 100%;
        height: auto;
        max-height: 60vh;
        object-fit: contain;
        object-position: center;
}

@media (min-width: 1024px) {
        .lv-editorial-header--with-image .lv-editorial-header__inner {
                grid-template-columns: minmax(0, 4fr) minmax(0, 6fr);
                gap: clamp(var(--lv-space-xl), 6vw, var(--lv-space-3xl, 6rem));
                align-items: center;
        }

        .lv-editorial-header--with-image .lv-editorial-header__image {
                max-height: 72vh;
        }
}

/* 7. Real Weddings archive grid — three-column desktop (Phase 14 rework) *
 *
 * The 2-column desktop layout felt sparse against the homepage's four-up
 * portfolio row. Three columns at ≥1024 preserves single-column mobile and
 * two-column tablet while giving the desktop grid the intended editorial
 * cadence.
 *
 * ------------------------------------------------------------------------- */
@media (min-width: 1024px) {
        .lv-archive-grid--real-weddings .lv-archive-grid__list {
                grid-template-columns: repeat(3, minmax(0, 1fr));
        }
}

/* 8. Phase 14 refinement pass (user-directed visual QA) ------------------ */

/* Archive header text should sit on the same canonical outer track as
   the archive bodies; inner copy measure stays restrained. */
.lv-editorial-header--real-weddings .lv-editorial-header__inner,
.lv-editorial-header--journal .lv-editorial-header__inner {
	max-width: var(--lv-container-standard);
}

.lv-editorial-header--venues .lv-editorial-header__inner {
	max-width: var(--lv-container-standard);
}

.lv-editorial-header--real-weddings .lv-editorial-header__content,
.lv-editorial-header--journal .lv-editorial-header__content {
	max-width: none;
}

.lv-editorial-header--real-weddings .lv-editorial-header__heading,
.lv-editorial-header--journal .lv-editorial-header__heading {
	max-width: none;
}

.lv-editorial-header--real-weddings .lv-editorial-header__intro,
.lv-editorial-header--journal .lv-editorial-header__intro {
	max-width: none;
}

.lv-editorial-header--venues .lv-editorial-header__content {
	max-width: 56ch;
}

/* Locations archive map-hero fallback: keeps the 45/55 architecture reviewable
   until final custom artwork is supplied via options. */
.lv-editorial-header--locations.lv-editorial-header--with-image .lv-editorial-header__inner {
	max-width: var(--lv-container-standard);
}

@media (min-width: 1024px) {
	.lv-editorial-header--locations.lv-editorial-header--with-image .lv-editorial-header__inner {
		grid-template-columns: minmax(0, 40fr) minmax(0, 60fr);
	}
}

.lv-editorial-header__figure--fallback {
	margin: 0;
}

.lv-editorial-header__map-fallback {
	position: relative;
	aspect-ratio: 5 / 4;
	background:
		radial-gradient(circle at 18% 22%, rgba(91, 78, 67, 0.1) 0 22%, transparent 23%),
		radial-gradient(circle at 66% 72%, rgba(91, 78, 67, 0.08) 0 18%, transparent 19%),
		linear-gradient(145deg, #f5f2ed 0%, #e8e3db 100%);
	overflow: hidden;
}

/* Keep the approved RW archive direction, but align its section tracks to
   the same grid rhythm as other major page bands. */
.lv-archive-grid--real-weddings .lv-archive-grid__header {
	text-align: left;
	max-width: 56ch;
	margin-inline: 0;
}

.lv-featured-wedding-tile + .lv-archive-grid--real-weddings {
	padding-top: clamp(var(--lv-space-md), 4vw, var(--lv-space-xl));
}

.lv-editorial-header__map-fallback::before,
.lv-editorial-header__map-fallback::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.lv-editorial-header__map-fallback::before {
	background:
		linear-gradient(110deg, transparent 0 15%, rgba(117, 102, 89, 0.2) 16% 18%, transparent 19% 39%, rgba(117, 102, 89, 0.2) 40% 42%, transparent 43% 100%),
		linear-gradient(15deg, transparent 0 26%, rgba(117, 102, 89, 0.15) 27% 29%, transparent 30% 100%);
}

.lv-editorial-header__map-fallback::after {
	background: repeating-linear-gradient(
		-12deg,
		rgba(129, 113, 100, 0.07) 0,
		rgba(129, 113, 100, 0.07) 1px,
		transparent 1px,
		transparent 18px
	);
}

.lv-editorial-header__map-fallback-pin {
	position: absolute;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--lv-colour-deep-taupe);
	box-shadow: 0 0 0 5px rgba(91, 78, 67, 0.12);
}

.lv-editorial-header__map-fallback-pin--a {
	left: 18%;
	top: 28%;
}

.lv-editorial-header__map-fallback-pin--b {
	left: 55%;
	top: 52%;
}

.lv-editorial-header__map-fallback-pin--c {
	left: 73%;
	top: 31%;
}

/* Real Weddings archive: stronger editorial featured split + curated grid lead. */
.lv-featured-wedding-tile--split .lv-featured-wedding-tile__link {
	grid-template-columns: minmax(0, 58fr) minmax(0, 42fr);
	border: 1px solid var(--lv-border-soft);
	border-radius: 0;
	background: var(--lv-bg-section-alt);
}

.lv-featured-wedding-tile--split .lv-featured-wedding-tile__media {
	aspect-ratio: auto;
	min-height: clamp(400px, 48vw, 640px);
}

.lv-featured-wedding-tile--split .lv-featured-wedding-tile__overlay {
	display: none;
}

.lv-featured-wedding-tile--split .lv-featured-wedding-tile__body {
	position: static;
	max-width: none;
	color: var(--lv-text-primary);
	justify-content: center;
	padding: clamp(var(--lv-space-lg), 4vw, var(--lv-space-2xl));
	gap: var(--lv-space-sm);
}

.lv-featured-wedding-tile--split .lv-featured-wedding-tile__eyebrow,
.lv-featured-wedding-tile--split .lv-featured-wedding-tile__meta,
.lv-featured-wedding-tile--split .lv-featured-wedding-tile__excerpt {
	color: var(--lv-text-muted);
}

.lv-featured-wedding-tile--split .lv-featured-wedding-tile__title {
	color: var(--lv-text-primary);
	font-size: clamp(2rem, 3.6vw, 3.5rem);
}

.lv-featured-wedding-tile--split .lv-featured-wedding-tile__excerpt {
	max-width: 36ch;
}

@media (max-width: 1023px) {
	.lv-featured-wedding-tile--split .lv-featured-wedding-tile__link {
		grid-template-columns: minmax(0, 1fr);
	}

	.lv-featured-wedding-tile--split .lv-featured-wedding-tile__media {
		min-height: 0;
		aspect-ratio: 4 / 5;
	}

	.lv-featured-wedding-tile--split .lv-featured-wedding-tile__body {
		padding: var(--lv-space-lg) var(--lv-space-md);
	}
}

@media (max-width: 767px) {
	.lv-featured-wedding-tile--split .lv-featured-wedding-tile__body {
		align-items: center;
		text-align: center;
	}

	.lv-featured-wedding-tile--split .lv-featured-wedding-tile__excerpt {
		margin-inline: auto;
	}

	.lv-featured-wedding-tile--split .lv-featured-wedding-tile__button {
		align-self: center;
	}
}

@media (min-width: 1024px) {
	.lv-archive-grid--real-weddings .lv-featured-wedding-card--lead {
		grid-column: span 2;
	}

	.lv-archive-grid--real-weddings .lv-featured-wedding-card--lead .lv-featured-wedding-card__media {
		aspect-ratio: 16 / 10;
	}
}

/* Venues archive: stronger rhythm and clearer featured-venues anchor. */
.lv-archive-venues__intro .lv-editorial-block__content {
	max-width: 56ch;
}

.lv-archive-grid--venues-editorial .lv-archive-grid__header {
	text-align: left;
	max-width: 48ch;
	margin-inline: 0;
}

.lv-archive-grid--venues-editorial .lv-archive-grid__list {
	gap: clamp(var(--lv-space-lg), 3.5vw, var(--lv-space-2xl));
}

@media (min-width: 1024px) {
	.lv-archive-grid--venues-editorial .lv-archive-grid__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.lv-archive-venues__value .lv-editorial-block__content {
	max-width: 56ch;
}

/* Single venue: opening chapter flow + practical/tips + related section hierarchy. */
.single-venue .lv-venue-story .lv-editorial-block__content {
	max-width: 56ch;
}

.single-venue .lv-venue-practical .lv-editorial-block__panel {
	max-width: none;
	border-color: var(--lv-border-soft);
	box-shadow: none;
}

.single-venue .lv-venue-tips .lv-editorial-block__tip-list {
	gap: var(--lv-space-md);
}

.lv-related--quiet-links .lv-related__header {
	max-width: 42ch;
}

.lv-related--quiet-links .lv-related__heading {
	font-size: clamp(1.5rem, 2.6vw, 2rem);
}

/* =====================================================================
   Cookie preferences
   Essential cookies support the consent setting itself. Analytics remains
   opt-in and is not loaded by the theme unless a future integration checks
   the consent API exposed by assets/js/main.js.
   ===================================================================== */

.lv-cookie-consent {
	position: fixed;
	z-index: 1000;
	right: var(--lv-space-md);
	bottom: var(--lv-space-md);
	width: min(calc(100vw - (2 * var(--lv-space-md))), 430px);
}

.lv-cookie-consent[hidden] {
	display: none;
}

.lv-cookie-consent__dialog {
	max-height: calc(100vh - (2 * var(--lv-space-md)));
	overflow: auto;
	padding: var(--lv-space-lg);
	background: var(--lv-bg-page);
	border: 1px solid var(--lv-border-soft);
	box-shadow: 0 24px 80px rgba(20, 18, 16, 0.25);
}

.lv-cookie-consent__close {
	position: absolute;
	top: var(--lv-space-sm);
	right: var(--lv-space-sm);
	width: 2.5rem;
	height: 2.5rem;
	border: 1px solid var(--lv-border-soft);
	border-radius: 50%;
	padding: 0;
	background: transparent;
	color: var(--lv-text-primary);
	font-size: 1.7rem;
	font-weight: 300;
	line-height: 1;
	cursor: pointer;
}

.lv-cookie-consent__close:hover,
.lv-cookie-consent__close:focus-visible {
	background: var(--lv-bg-section-alt);
}

.lv-cookie-consent__eyebrow {
	margin: 0 0 var(--lv-space-xs);
	color: var(--lv-text-muted);
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.lv-cookie-consent__title {
	margin: 0;
	padding-right: var(--lv-space-xl);
	font-size: clamp(1.75rem, 4vw, 2.35rem);
	font-weight: 400;
	line-height: 0.98;
}

.lv-cookie-consent__intro {
	max-width: 60ch;
	margin: var(--lv-space-md) 0 0;
	color: var(--lv-text-muted);
}

.lv-cookie-consent__choices {
	margin-top: var(--lv-space-lg);
	border-top: 1px solid var(--lv-border-soft);
}

.lv-cookie-consent__choice {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--lv-space-md);
	padding: var(--lv-space-md) 0;
	border-bottom: 1px solid var(--lv-border-soft);
}

.lv-cookie-consent__choice h3,
.lv-cookie-consent__choice p {
	margin: 0;
}

.lv-cookie-consent__choice h3 {
	font-size: 1rem;
	font-weight: 600;
}

.lv-cookie-consent__choice p {
	max-width: 52ch;
	margin-top: 0.35rem;
	color: var(--lv-text-muted);
	font-size: 0.9rem;
}

.lv-cookie-consent__always-on {
	flex: 0 0 auto;
	color: var(--lv-text-muted);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.lv-cookie-consent__switch {
	position: relative;
	flex: 0 0 auto;
	width: 3.25rem;
	height: 1.875rem;
	cursor: pointer;
}

.lv-cookie-consent__switch input {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
}

.lv-cookie-consent__switch-ui {
	position: absolute;
	inset: 0;
	border: 1px solid var(--lv-border-soft);
	border-radius: 999px;
	background: var(--lv-bg-section-alt);
	transition: background-color 160ms ease, border-color 160ms ease;
}

.lv-cookie-consent__switch-ui::after {
	position: absolute;
	top: 0.25rem;
	left: 0.25rem;
	width: 1.25rem;
	height: 1.25rem;
	border-radius: 50%;
	background: var(--lv-text-muted);
	content: '';
	transition: transform 160ms ease, background-color 160ms ease;
}

.lv-cookie-consent__switch input:checked + .lv-cookie-consent__switch-ui {
	border-color: var(--lv-colour-deep-taupe);
	background: var(--lv-colour-deep-taupe);
}

.lv-cookie-consent__switch input:checked + .lv-cookie-consent__switch-ui::after {
	transform: translateX(1.375rem);
	background: var(--lv-colour-warm-ivory);
}

.lv-cookie-consent__switch input:focus-visible + .lv-cookie-consent__switch-ui {
	outline: 2px solid var(--lv-colour-deep-taupe);
	outline-offset: 3px;
}

.lv-cookie-consent__policy-link {
	margin: var(--lv-space-md) 0 0;
	font-size: 0.875rem;
}

.lv-cookie-consent__policy-link a {
	color: inherit;
	text-underline-offset: 0.2em;
}

.lv-cookie-consent__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lv-space-sm);
	margin-top: var(--lv-space-lg);
}

.lv-cookie-consent__actions .lv-button {
	margin: 0;
}

@media (max-width: 599px) {
	.lv-cookie-consent {
		right: var(--lv-space-sm);
		bottom: var(--lv-space-sm);
		width: calc(100vw - (2 * var(--lv-space-sm)));
	}

	.lv-cookie-consent__dialog {
		max-height: calc(100vh - (2 * var(--lv-space-sm)));
	}

	.lv-cookie-consent__choice {
		align-items: flex-start;
	}

	.lv-cookie-consent__actions .lv-button {
		width: 100%;
		justify-content: center;
	}
}

/* Single real wedding: quieter summary while preserving approved block tracks. */
.single-real_wedding .lv-rw-summary .lv-editorial-block__panel {
	background: transparent;
	border-color: var(--lv-border-soft);
	box-shadow: none;
}

.single-real_wedding .lv-rw-story .lv-editorial-block__content {
	max-width: 56ch;
}

.single-real_wedding .lv-related--rw-continuation .lv-related__header {
	max-width: 52ch;
}

/* Locations archive: use the approved location-link-list block pattern and
   keep its heading track aligned with editorial-section rhythm. */
.lv-archive-locations__list .lv-archive-grid__header--locations-list {
	margin-bottom: clamp(var(--lv-space-md), 3vw, var(--lv-space-lg));
}
