/* ==========================================================================
   Luxe Estate — main stylesheet
   Tokens come from the Customizer as :root variables (see inc/enqueue.php).
   Base element styles use :where() (zero specificity) so Elementor widget
   styles always win.
   ========================================================================== */

:root {
	--luxe-bg: #e6e1d6;
	--luxe-paper: #f2efe8;
	--luxe-ink: #2a2c24;
	--luxe-muted: #6c6b60;
	--luxe-accent: #b5a88e;
	--luxe-dark: #30332a;
	--luxe-light: #f2efe8;
	--luxe-line: color-mix(in srgb, currentColor 22%, transparent);
	--luxe-font-head: 'Cormorant Garamond', Georgia, serif;
	--luxe-font-body: 'Jost', system-ui, sans-serif;
	--luxe-size: 17px;
	--luxe-max: 1440px;
	--luxe-pad: clamp(1.25rem, 4vw, 3.5rem);
	--luxe-section: clamp(5rem, 11vw, 10rem);
	--luxe-header-h: 84px;
	--luxe-ease: cubic-bezier(.2, .7, .1, 1);
}

/* Animatable custom properties (image reveal works alongside parallax) */
@property --luxe-rs { syntax: '<number>'; inherits: true; initial-value: 1; }

/* ---------- Smooth scroll (Lenis) ---------- */
html.lenis, html.lenis body { height: auto; }
.lenis:not(.lenis-autoToggle).lenis-stopped { overflow: clip; }
.lenis [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-smooth iframe { pointer-events: none; }
html.lenis { scroll-behavior: auto; }

/* ---------- Reset / base ---------- */

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

html {
	font-size: var(--luxe-size);
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	overflow-x: clip;
}

html.luxe-locked { overflow: hidden; }

body {
	margin: 0;
	background: var(--luxe-bg);
	color: var(--luxe-ink);
	font-family: var(--luxe-font-body);
	font-weight: 400;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}

:where(h1, h2, h3, h4, h5, h6) {
	font-family: var(--luxe-font-head);
	font-weight: 400;
	line-height: 1.1;
	letter-spacing: -0.01em;
	margin: 0 0 .5em;
	color: inherit;
}

:where(h1) { font-size: clamp(2.6rem, 5.5vw, 5rem); }
:where(h2) { font-size: clamp(2rem, 3.8vw, 3.5rem); }
:where(h3) { font-size: clamp(1.45rem, 2.2vw, 2rem); }
:where(h4) { font-size: 1.35rem; }
:where(h5) { font-size: 1.15rem; }
:where(h6) { font-size: 1rem; }

:where(p, ul, ol, dl, figure, blockquote, table, pre) { margin: 0 0 1.25em; }
:where(img, video, svg, iframe) { max-width: 100%; height: auto; display: block; }
:where(a) { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
:where(a:hover) { color: inherit; }
:where(hr) { border: 0; border-top: 1px solid var(--luxe-line); margin: 3rem 0; }
:where(button) { font: inherit; color: inherit; cursor: pointer; }

:focus-visible { outline: 2px solid var(--luxe-accent); outline-offset: 3px; }

::selection { background: var(--luxe-accent); color: var(--luxe-ink); }

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

.skip-link:focus {
	clip: auto; clip-path: none; height: auto; width: auto;
	left: 1rem; top: 1rem; z-index: 100000;
	background: var(--luxe-paper); color: var(--luxe-ink);
	padding: .8rem 1.2rem; text-decoration: none;
}

/* ---------- Layout ---------- */

.luxe-wrap {
	width: 100%;
	max-width: calc(var(--luxe-max) + var(--luxe-pad) * 2);
	margin-inline: auto;
	padding-inline: var(--luxe-pad);
}

.luxe-wrap--narrow { max-width: calc(46rem + var(--luxe-pad) * 2); }

.luxe-section { position: relative; padding-block: var(--luxe-section); isolation: isolate; }
.luxe-section--tight { padding-block: calc(var(--luxe-section) * .5); }

.luxe-main { display: block; }

/* ---------- Type helpers ---------- */

.luxe-display {
	font-family: var(--luxe-font-head);
	font-weight: 400;
	font-size: clamp(2.8rem, 7.4vw, 7.25rem);
	line-height: .96;
	letter-spacing: -0.025em;
	max-width: 14ch;
	margin: 0 0 clamp(2.5rem, 6vw, 5rem);
}

.luxe-h2 { font-size: clamp(2rem, 4vw, 3.6rem); line-height: 1.04; letter-spacing: -0.015em; margin: 0 0 .6em; max-width: 18ch; }
.luxe-h3 { font-size: clamp(1.5rem, 2.2vw, 2.05rem); line-height: 1.12; margin: 0 0 .6em; }

.luxe-prose { max-width: 38rem; }
.luxe-prose > :last-child { margin-bottom: 0; }

.luxe-code {
	display: inline-flex; align-items: center;
	font-size: .78rem; line-height: 1; letter-spacing: .04em;
	padding: .38em .62em; border: 1px solid currentColor; border-radius: 999px;
	opacity: .8;
}

.luxe-empty, .luxe-admin-hint { color: var(--luxe-muted); font-size: .95rem; }
.luxe-admin-hint { border: 1px dashed var(--luxe-line); padding: 1rem; }

/* Placeholder frame when an image hasn't been chosen yet */
.luxe-ph {
	display: block; width: 100%; height: 100%; min-height: 12rem;
	background:
		linear-gradient(135deg, transparent 49.6%, color-mix(in srgb, var(--luxe-ink) 12%, transparent) 50%, transparent 50.4%),
		color-mix(in srgb, var(--luxe-accent) 35%, var(--luxe-bg));
}

/* ---------- Buttons & links ---------- */

.luxe-btn {
	position: relative;
	display: inline-flex; align-items: center; justify-content: center; gap: .5em;
	padding: .78em 1.5em;
	font-family: var(--luxe-font-body); font-size: .86rem; font-weight: 500; line-height: 1; letter-spacing: .02em;
	text-decoration: none; white-space: nowrap;
	border: 1px solid currentColor; border-radius: 999px;
	background: transparent; color: inherit;
	transition: background-color .45s var(--luxe-ease), color .45s var(--luxe-ease), border-color .45s var(--luxe-ease);
}
.luxe-btn--outline:hover { background: color-mix(in srgb, currentColor 9%, transparent); }
.luxe-btn--solid { background: var(--luxe-ink); border-color: var(--luxe-ink); color: var(--luxe-paper); }
.luxe-btn--solid:hover { background: var(--luxe-dark); border-color: var(--luxe-dark); }
.luxe-btn--text { border-color: transparent; text-decoration: underline; text-underline-offset: .3em; }

/* Label roll: the label slides up and a copy slides in from below */
.luxe-roll { display: inline-grid; overflow: hidden; line-height: 1.2; vertical-align: top; }
.luxe-roll > span { grid-area: 1 / 1; transition: transform .6s var(--luxe-ease); }
.luxe-roll__b { transform: translateY(105%); }
:is(a, button):hover > .luxe-roll .luxe-roll__a,
:is(a, button):hover .luxe-roll .luxe-roll__a,
:is(a, button):focus-visible .luxe-roll .luxe-roll__a { transform: translateY(-105%); }
:is(a, button):hover .luxe-roll .luxe-roll__b,
:is(a, button):focus-visible .luxe-roll .luxe-roll__b { transform: none; }
/* Elementor buttons with CSS class "luxe-roll-btn" get the same effect (markup added by JS) */
.luxe-roll-btn .elementor-button-text .luxe-roll { line-height: inherit; }

.luxe-link {
	display: inline-flex; align-items: center; gap: .65em;
	font-size: .92rem; font-weight: 500; letter-spacing: .01em;
	text-decoration: none; padding-bottom: .35em;
	background: linear-gradient(currentColor, currentColor) left bottom / 100% 1px no-repeat;
	transition: background-size .5s var(--luxe-ease);
}
.luxe-link .luxe-icon { transition: transform .4s var(--luxe-ease); }
.luxe-link:hover { background-size: 100% 1px; }
.luxe-link:hover .luxe-icon { transform: translateX(4px); }
.luxe-link--light { color: var(--luxe-paper); }

/* ---------- Preloader ---------- */

.luxe-preloader {
	--luxe-pl-hold: var(--luxe-pl-dur, 2.1s);
	position: fixed; inset: 0; z-index: 99999;
	display: grid; place-items: center;
	background: var(--luxe-pl-bg, var(--luxe-dark));
	color: var(--luxe-pl-fg, var(--luxe-paper));
	font-family: var(--luxe-pl-font, var(--luxe-font-head));
	animation: luxe-pre-out .9s var(--luxe-ease) var(--luxe-pl-hold) forwards;
}
.luxe-preloader__inner { text-align: center; display: grid; gap: .9rem; justify-items: center; }
.luxe-preloader__name {
	display: block; font-family: inherit; line-height: 1;
	font-size: var(--luxe-pl-name, clamp(2rem, 4vw, 3.4rem));
	letter-spacing: var(--luxe-pl-track, normal);
}
.luxe-preloader__logo img { display: block; max-width: min(280px, 60vw); height: auto; }
.luxe-preloader__caption { display: block; font-family: var(--luxe-font-body); font-size: var(--luxe-pl-cap, .85rem); opacity: .7; }
.luxe-preloader__count {
	position: absolute; font-family: inherit; line-height: .8;
	font-size: var(--luxe-pl-count, clamp(3rem, 8vw, 7rem));
	font-variant-numeric: tabular-nums;
}
.luxe-preloader--count-br .luxe-preloader__count { right: var(--luxe-pad); bottom: calc(var(--luxe-pad) + 6px); }
.luxe-preloader--count-bl .luxe-preloader__count { left: var(--luxe-pad); bottom: calc(var(--luxe-pad) + 6px); }
.luxe-preloader--count-tr .luxe-preloader__count { right: var(--luxe-pad); top: var(--luxe-pad); }
.luxe-preloader--count-centre .luxe-preloader__count { position: static; }
/* Where the name block sits */
.luxe-preloader--left .luxe-preloader__inner { text-align: left; justify-items: start; }
.luxe-preloader--bottom-left, .luxe-preloader--top-left { place-items: start; padding: var(--luxe-pad); }
.luxe-preloader--bottom-left { align-content: end; }
.luxe-preloader--bottom-left .luxe-preloader__inner,
.luxe-preloader--top-left .luxe-preloader__inner { text-align: left; justify-items: start; }
.luxe-preloader--bottom-left .luxe-preloader__inner { margin-bottom: 1.5rem; }
.luxe-preloader__bar { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: color-mix(in srgb, currentColor 15%, transparent); }
.luxe-preloader__bar i { display: block; height: 100%; background: var(--luxe-pl-accent, var(--luxe-accent)); transform-origin: left; animation: luxe-bar var(--luxe-pl-hold) var(--luxe-ease) forwards; }

@keyframes luxe-bar { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes luxe-pre-out { to { transform: translateY(-100%); visibility: hidden; } }

html.luxe-seen .luxe-preloader { display: none; }

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

.luxe-header {
	position: relative; z-index: 900;
	color: var(--luxe-ink);
	background: var(--luxe-bg);
	transition: transform .5s var(--luxe-ease), background-color .4s, color .4s, box-shadow .4s;
}

.luxe-header-sticky .luxe-header { position: sticky; top: 0; }

.luxe-header-overlay .luxe-header {
	position: absolute; top: 0; left: 0; right: 0;
	background: transparent; color: var(--luxe-paper);
}
.luxe-header-overlay.luxe-header-sticky .luxe-header { position: fixed; }

.luxe-header.is-scrolled { background: var(--luxe-bg); color: var(--luxe-ink); box-shadow: 0 1px 0 color-mix(in srgb, var(--luxe-ink) 10%, transparent); }
.luxe-header.is-hidden { transform: translateY(-100%); }

.admin-bar.luxe-header-sticky .luxe-header,
.admin-bar.luxe-header-overlay .luxe-header { top: 32px; }
@media (max-width: 782px) {
	.admin-bar.luxe-header-sticky .luxe-header,
	.admin-bar.luxe-header-overlay .luxe-header { top: 46px; }
}
@media (max-width: 600px) {
	.admin-bar.luxe-header-sticky .luxe-header { top: 0; }
}

.luxe-header__bar {
	display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
	min-height: var(--luxe-header-h); gap: 1rem;
}
.luxe-header__right { display: flex; justify-content: flex-end; align-items: center; gap: 1.6rem; }

.luxe-brand { display: inline-flex; align-items: center; text-decoration: none; color: inherit; }
.luxe-brand__text { font-family: var(--luxe-font-head); font-size: 1.6rem; letter-spacing: .02em; line-height: 1; }
.luxe-brand__logo { max-height: 44px; width: auto; }
.luxe-brand__logo--light { display: none; }
.luxe-header-overlay .luxe-header:not(.is-scrolled) .luxe-brand:has(.luxe-brand__logo--light) .luxe-brand__logo--dark,
.luxe-menu .luxe-brand:has(.luxe-brand__logo--light) .luxe-brand__logo--dark { display: none; }
.luxe-header-overlay .luxe-header:not(.is-scrolled) .luxe-brand__logo--light,
.luxe-menu .luxe-brand__logo--light { display: block; }

.luxe-burger {
	display: inline-flex; align-items: center; gap: .75rem;
	background: none; border: 0; padding: .5rem 0;
	font-size: .9rem; font-weight: 500; letter-spacing: .02em;
}
.luxe-burger__lines { display: grid; gap: 6px; width: 26px; }
.luxe-burger__lines i { display: block; height: 1px; background: currentColor; transition: transform .4s var(--luxe-ease); }
.luxe-burger__lines i:last-child { width: 62%; }
.luxe-burger:hover .luxe-burger__lines i:last-child { transform: scaleX(1.6); transform-origin: left; }

.luxe-clock { margin: 0; display: inline-flex; align-items: baseline; gap: .45rem; font-size: .86rem; font-variant-numeric: tabular-nums; }
.luxe-clock__place { opacity: .7; }

@media (max-width: 767px) {
	:root { --luxe-header-h: 68px; }
	.luxe-clock, .luxe-burger__label { display: none; }
	.luxe-header__cta { padding: .7em 1.1em; }
	.luxe-brand__text { font-size: 1.3rem; }
}

/* ---------- Full-screen menu ---------- */

.luxe-menu {
	position: fixed; inset: 0; z-index: 1000;
	background: var(--luxe-dark); color: var(--luxe-paper);
	overflow-y: auto;
	clip-path: inset(0 0 100% 0);
	transition: clip-path .8s var(--luxe-ease);
}
.luxe-menu.is-open { clip-path: inset(0 0 0 0); }
.luxe-menu[hidden] { display: none; }

.luxe-menu__inner { min-height: 100%; display: flex; flex-direction: column; padding-bottom: 3rem; }
.luxe-menu__top { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; min-height: var(--luxe-header-h); }
.luxe-menu__top .luxe-btn { justify-self: end; }
.luxe-menu__close { display: inline-flex; align-items: center; gap: .6rem; background: none; border: 0; padding: .5rem 0; font-size: .9rem; font-weight: 500; justify-self: start; }

.luxe-menu__grid { flex: 1; display: grid; grid-template-columns: 1.4fr 1fr; gap: clamp(2rem, 6vw, 7rem); align-items: end; padding-top: clamp(2rem, 6vh, 5rem); }

.luxe-menu__list { list-style: none; margin: 0; padding: 0; counter-reset: luxe-menu; }
.luxe-menu__list > li { overflow: hidden; }
.luxe-menu__list > li > a {
	display: inline-block; text-decoration: none;
	font-family: var(--luxe-font-head); font-size: clamp(2.6rem, 7vw, 6.4rem); line-height: 1.04; letter-spacing: -0.02em;
	transform: translateY(105%);
	transition: transform .9s var(--luxe-ease), opacity .35s;
}
.luxe-menu.is-open .luxe-menu__list > li > a { transform: none; }
.luxe-menu.is-open .luxe-menu__list > li:nth-child(2) > a { transition-delay: .06s, 0s; }
.luxe-menu.is-open .luxe-menu__list > li:nth-child(3) > a { transition-delay: .12s, 0s; }
.luxe-menu.is-open .luxe-menu__list > li:nth-child(4) > a { transition-delay: .18s, 0s; }
.luxe-menu.is-open .luxe-menu__list > li:nth-child(5) > a { transition-delay: .24s, 0s; }
.luxe-menu.is-open .luxe-menu__list > li:nth-child(n+6) > a { transition-delay: .3s, 0s; }
.luxe-menu__list:hover > li > a { opacity: .38; }
.luxe-menu__list > li > a:hover, .luxe-menu__list > li > a:focus-visible { opacity: 1; }
.luxe-menu__list .current-menu-item > a { font-style: italic; }
.luxe-menu__list .sub-menu { list-style: none; margin: .25rem 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; font-size: 1rem; }
.luxe-menu__list .sub-menu a { text-decoration: none; opacity: .75; }
.luxe-menu__list .sub-menu a:hover { opacity: 1; }

.luxe-menu__aside { display: grid; gap: 1.25rem; max-width: 380px; justify-self: end; }
.luxe-menu__img { margin: 0; aspect-ratio: 4 / 5; overflow: hidden; }
.luxe-menu__img img, .luxe-menu__img .luxe-ph { width: 100%; height: 100%; object-fit: cover; }
.luxe-menu__note { margin: 0; font-family: var(--luxe-font-head); font-size: 1.35rem; line-height: 1.3; }
.luxe-menu__mail { font-size: .95rem; }

@media (max-width: 900px) {
	.luxe-menu__grid { grid-template-columns: 1fr; align-items: start; }
	.luxe-menu__img { display: none; }
	.luxe-menu__aside { justify-self: start; }
	.luxe-menu__top .luxe-brand { display: none; }
	.luxe-menu__top { grid-template-columns: 1fr auto; }
}

.luxe-social { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; font-size: .9rem; }
.luxe-social a { text-decoration: none; }
.luxe-social a:hover { text-decoration: underline; }

/* ---------- Enquiry drawer ---------- */

.luxe-drawer { position: fixed; inset: 0; z-index: 1100; }
.luxe-drawer[hidden] { display: none; }
.luxe-drawer__scrim { position: absolute; inset: 0; background: rgb(20 22 16 / .5); opacity: 0; transition: opacity .5s; }
.luxe-drawer__panel {
	position: absolute; top: 0; right: 0; bottom: 0;
	width: min(600px, 100%); overflow-y: auto;
	background: var(--luxe-paper); color: var(--luxe-ink);
	padding: clamp(4.5rem, 9vh, 6rem) clamp(1.5rem, 4vw, 3.5rem) 3rem;
	transform: translateX(100%);
	transition: transform .7s var(--luxe-ease);
}
.luxe-drawer.is-open .luxe-drawer__scrim { opacity: 1; }
.luxe-drawer.is-open .luxe-drawer__panel { transform: none; }
.luxe-drawer__close { position: absolute; top: 1.25rem; right: 1.25rem; width: 48px; height: 48px; display: grid; place-items: center; border: 1px solid var(--luxe-line); border-radius: 50%; background: none; }
.luxe-drawer__close:hover { background: var(--luxe-ink); color: var(--luxe-paper); }
.luxe-drawer__title { font-size: clamp(2.2rem, 4vw, 3.2rem); line-height: 1; margin-bottom: 1rem; }
.luxe-drawer__text { color: var(--luxe-muted); margin-bottom: 2.5rem; max-width: 34rem; }
.luxe-drawer__direct { margin-top: 2.5rem; font-size: .9rem; color: var(--luxe-muted); }

/* ---------- Forms (CF7, WPForms, comments, generic) ---------- */

:where(input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="number"], input[type="search"], input[type="password"], input[type="date"], select, textarea) {
	width: 100%;
	font: inherit; font-size: 1rem; color: inherit;
	background: transparent;
	border: 0; border-bottom: 1px solid color-mix(in srgb, currentColor 35%, transparent);
	border-radius: 0;
	padding: .7em 0;
	transition: border-color .3s;
	-webkit-appearance: none; appearance: none;
}
:where(textarea) { resize: vertical; min-height: 7rem; }
:where(input, select, textarea):focus { outline: none; border-bottom-color: currentColor; }
:where(input, select, textarea):focus-visible { outline: none; box-shadow: 0 1px 0 0 currentColor; }
:where(select) { background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%); background-position: calc(100% - 10px) 55%, calc(100% - 5px) 55%; background-size: 5px 5px; background-repeat: no-repeat; padding-right: 1.5rem; }
::placeholder { color: inherit; opacity: .45; }

.luxe-field { display: block; margin-bottom: 1.6rem; }
.luxe-field > span:first-child { display: block; font-size: .8rem; color: var(--luxe-muted); letter-spacing: .01em; }
.luxe-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1.5rem; }
@media (max-width: 560px) { .luxe-field-row { grid-template-columns: 1fr; } }
.luxe-form__note { font-size: .8rem; color: var(--luxe-muted); }

.luxe-form .wpcf7-form-control-wrap { display: block; }
.luxe-form input[type="submit"], .wpcf7-submit, .luxe-search button, .wpforms-submit, .comment-form .submit {
	display: inline-flex; align-items: center; justify-content: center;
	padding: .95em 1.9em; margin-top: .5rem;
	font: 500 .9rem/1 var(--luxe-font-body); letter-spacing: .02em;
	background: var(--luxe-ink); color: var(--luxe-paper);
	border: 1px solid var(--luxe-ink); border-radius: 999px;
	cursor: pointer; transition: background-color .3s, color .3s;
	width: auto;
}
.luxe-form input[type="submit"]:hover, .wpcf7-submit:hover, .luxe-search button:hover, .comment-form .submit:hover { background: transparent; color: var(--luxe-ink); }

.wpcf7-spinner { margin: 0 0 0 1rem; vertical-align: middle; }
.wpcf7-not-valid-tip { font-size: .8rem; color: #9b3b2b; margin-top: .35rem; }
.wpcf7 form .wpcf7-response-output { margin: 1.5rem 0 0; padding: 1rem 1.2rem; border: 1px solid var(--luxe-line); font-size: .92rem; }
.wpcf7 form.sent .wpcf7-response-output { border-color: #5d7a4b; background: color-mix(in srgb, #5d7a4b 10%, transparent); }
.wpcf7 form.invalid .wpcf7-response-output, .wpcf7 form.failed .wpcf7-response-output { border-color: #9b3b2b; }
.wpcf7-list-item { margin: 0 1rem 0 0; }
.wpcf7-acceptance label, .wpcf7-checkbox label, .wpcf7-radio label { display: inline-flex; gap: .5rem; align-items: center; font-size: .9rem; }

.luxe-search { display: flex; gap: 1rem; align-items: end; max-width: 34rem; }
.luxe-search button { margin: 0; flex: none; }

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

.luxe-hero {
	position: relative;
	height: var(--luxe-hero-h, 100svh); min-height: 540px;
	color: var(--luxe-paper);
	overflow: hidden; isolation: isolate;
	background: var(--luxe-dark);
}
.luxe-hero__media { position: absolute; inset: 0; z-index: -1; }
.luxe-hero__media video, .luxe-hero__media img, .luxe-hero__media .luxe-ph { width: 100%; height: 100%; object-fit: cover; }
.luxe-hero__media .luxe-ph { background: linear-gradient(160deg, color-mix(in srgb, var(--luxe-dark) 70%, var(--luxe-accent)), var(--luxe-dark)); }
.luxe-hero__media::after {
	content: ""; position: absolute; inset: 0;
	background: linear-gradient(180deg, rgb(0 0 0 / calc(var(--luxe-shade, .35) * .6)) 0%, rgb(0 0 0 / calc(var(--luxe-shade, .35) * .4)) 40%, rgb(0 0 0 / calc(var(--luxe-shade, .35) + .15)) 100%);
}

.luxe-hero__inner {
	position: absolute; left: 0; right: 0; bottom: 0; margin-inline: auto;
	padding-bottom: clamp(2rem, 6vh, 4.5rem);
	display: grid; gap: 2rem;
}
.luxe-hero__title {
	font-family: var(--luxe-font-head); font-weight: 400;
	font-size: clamp(3rem, 8.2vw, 8.6rem); line-height: .94; letter-spacing: -0.03em;
	max-width: 11ch; margin: 0;
}
.luxe-hero__kicker { margin: 0; font-size: .95rem; opacity: .85; }
.luxe-code--hero { justify-self: start; }
.luxe-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }

.luxe-line { display: block; overflow: hidden; padding-bottom: .06em; margin-bottom: -.06em; }
.luxe-line > span { display: block; animation: luxe-rise 1.25s var(--luxe-ease) both; animation-delay: calc(var(--i, 0) * 110ms + 250ms); }
html:not(.luxe-seen) .luxe-has-preloader .luxe-line > span { animation-delay: calc(var(--i, 0) * 110ms + 2.5s); }
@keyframes luxe-rise { from { transform: translateY(108%); } to { transform: none; } }

.luxe-hero__scroll { display: inline-flex; align-items: center; gap: .6rem; font-size: .86rem; text-decoration: none; justify-self: start; opacity: .9; }
.luxe-hero__scroll .luxe-icon { animation: luxe-nudge 2.4s ease-in-out infinite; }
@keyframes luxe-nudge { 0%, 100% { transform: none; } 50% { transform: translateY(4px); } }

.luxe-hero__feature {
	position: absolute; right: var(--luxe-pad); bottom: clamp(2rem, 6vh, 4.5rem);
	display: flex; align-items: center; gap: 1rem;
	padding: .6rem 1.2rem .6rem .6rem; max-width: 340px;
	text-decoration: none; color: var(--luxe-paper);
	background: rgb(255 255 255 / .1); border: 1px solid rgb(255 255 255 / .22);
	-webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
	transition: background-color .4s;
}
.luxe-hero__feature:hover { background: rgb(255 255 255 / .2); }
.luxe-hero__feature-img { flex: none; width: 76px; height: 76px; overflow: hidden; }
.luxe-hero__feature-img img, .luxe-hero__feature-img .luxe-ph { width: 100%; height: 100%; object-fit: cover; min-height: 0; }
.luxe-hero__feature-txt { display: grid; gap: .25rem; font-size: .82rem; line-height: 1.3; }
.luxe-hero__feature-txt strong { font-family: var(--luxe-font-head); font-weight: 400; font-size: 1.35rem; line-height: 1.1; }
.luxe-hero__feature .luxe-code { justify-self: start; font-size: .7rem; }

@media (max-width: 767px) {
	.luxe-hero__feature { position: static; margin: 0 var(--luxe-pad) 1.5rem; }
	.luxe-hero { display: flex; flex-direction: column; justify-content: flex-end; }
	.luxe-hero__inner { position: relative; padding-bottom: 1.5rem; }
}

/* Leaf-shadow overlay */
.luxe-shadow { position: absolute; inset: 0; z-index: 0; pointer-events: none; mix-blend-mode: multiply; opacity: var(--luxe-shadow-op, .3); overflow: hidden; }
.luxe-shadow video { width: 100%; height: 100%; object-fit: cover; }
.luxe-services .luxe-shadow, .luxe-statement .luxe-shadow, .luxe-tone-dark .luxe-shadow, .luxe-has-shadow.luxe-dark .luxe-shadow { opacity: calc(var(--luxe-shadow-op, .3) * 1.8); }
.luxe-section > .luxe-wrap, .luxe-drawer__panel > :not(.luxe-shadow) { position: relative; z-index: 1; }
.luxe-has-shadow { position: relative; isolation: isolate; }
.luxe-has-shadow > .luxe-shadow { z-index: 0; }
.luxe-has-shadow > :not(.luxe-shadow) { position: relative; z-index: 1; }

/* ---------- About ---------- */

.luxe-about__lead {
	font-size: clamp(1.7rem, 3.3vw, 3.1rem); line-height: 1.14; letter-spacing: -0.012em;
	max-width: 30ch; margin: 0 0 clamp(3.5rem, 8vw, 7rem);
}
.luxe-about__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 2rem; align-items: end; }
.luxe-about__img { grid-column: 1 / span 5; margin: 0; aspect-ratio: 4 / 5; overflow: hidden; }
.luxe-about__text { grid-column: 7 / span 5; display: grid; gap: 1.6rem; justify-items: start; }
.luxe-about__intro { font-family: var(--luxe-font-head); font-size: clamp(1.4rem, 2vw, 1.85rem); line-height: 1.2; margin: 0; max-width: 22ch; }
.luxe-about__text .luxe-prose { color: color-mix(in srgb, var(--luxe-ink) 82%, transparent); }

/* ---------- Mission ---------- */

.luxe-mission { background: var(--luxe-paper); }
.luxe-mission__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 2rem; align-items: end; }
.luxe-mission__img { grid-column: 1 / span 8; margin: 0; aspect-ratio: 16 / 10; overflow: hidden; }
.luxe-mission__text { grid-column: 9 / span 4; }
.luxe-mission__text p { margin: 0; font-size: 1.05rem; }

/* Shared image frames */
.luxe-about__img img, .luxe-mission__img img, .luxe-split__img img,
.luxe-about__img .luxe-ph, .luxe-mission__img .luxe-ph, .luxe-split__img .luxe-ph { width: 100%; height: 100%; object-fit: cover; }

/* Image reveal + parallax share one transform via custom properties:
   --luxe-py (parallax shift, set by JS), --luxe-ps (parallax overscale), --luxe-rs (reveal scale) */
[data-luxe-parallax], .luxe-parallax { overflow: hidden; }
[data-luxe-parallax] > :is(img, video, .luxe-ph),
[data-luxe-parallax] > picture > img,
.luxe-hero__media[data-luxe-parallax] > :is(img, video, .luxe-ph),
.luxe-parallax img {
	transform: translate3d(0, var(--luxe-py, 0px), 0) scale(calc(var(--luxe-ps, 1) * var(--luxe-rs, 1)));
	will-change: transform;
}
.js .luxe-reveal { --luxe-rs: 1.08; transition: --luxe-rs 1.6s var(--luxe-ease); }
.js .luxe-reveal.is-in { --luxe-rs: 1; }
.js .luxe-reveal img { transition: none; }

/* ---------- Projects ---------- */

.luxe-projects { --cols: 3; }
.luxe-projects__head { display: flex; justify-content: space-between; align-items: end; gap: 2rem; margin-bottom: clamp(2rem, 4vw, 3.5rem); }
.luxe-projects__head .luxe-h2 { margin: 0; }
.luxe-projects__grid { display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); gap: clamp(1.5rem, 3vw, 3rem); }
.luxe-projects--stagger .luxe-project-card:nth-child(3n + 2) { margin-top: clamp(3rem, 9vw, 9rem); }
.luxe-projects--stagger .luxe-project-card:nth-child(3n + 3) { margin-top: clamp(1.5rem, 4.5vw, 4.5rem); }

.luxe-project-card__link { display: block; text-decoration: none; color: inherit; }
.luxe-project-card__img { margin: 0 0 1.1rem; overflow: hidden; aspect-ratio: 4 / 5; background: color-mix(in srgb, var(--luxe-accent) 30%, var(--luxe-bg)); }
.luxe-ratio-square .luxe-project-card__img { aspect-ratio: 1; }
.luxe-ratio-landscape .luxe-project-card__img { aspect-ratio: 16 / 10; }
.luxe-project-card__img img, .luxe-project-card__img .luxe-ph { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--luxe-ease); }
.luxe-project-card__link:hover .luxe-project-card__img img { transform: scale(1.035); }
.luxe-project-card__info { display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: .2rem 1rem; }
.luxe-project-card__loc { grid-column: 1 / -1; font-size: .82rem; color: var(--luxe-muted); }
.luxe-project-card__title { font-size: clamp(1.5rem, 2.2vw, 2.1rem); margin: 0; line-height: 1.1; }

/* ---------- Split ---------- */

.luxe-split__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 2rem; align-items: center; }
.luxe-split__img { grid-column: 1 / span 5; margin: 0; aspect-ratio: 4 / 5; overflow: hidden; }
.luxe-split__text { grid-column: 7 / span 5; display: grid; gap: 1.5rem; justify-items: start; }
.luxe-split__text .luxe-h2 { margin: 0; }
.luxe-split--reverse .luxe-split__img { grid-column: 8 / span 5; order: 2; }
.luxe-split--reverse .luxe-split__text { grid-column: 2 / span 5; order: 1; }
.luxe-tone-paper { background: var(--luxe-paper); }
.luxe-tone-dark { background: var(--luxe-dark); color: var(--luxe-paper); }

/* ---------- Services ---------- */

.luxe-services { background: var(--luxe-dark); color: var(--luxe-paper); }
.luxe-services__title { margin-bottom: clamp(2.5rem, 6vw, 5rem); }
.luxe-services__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.luxe-services__tabs { display: grid; border-top: 1px solid color-mix(in srgb, var(--luxe-paper) 20%, transparent); }
.luxe-services__tab {
	display: grid; grid-template-columns: 4.2rem 1fr; align-items: baseline; text-align: left;
	padding: 1.15rem 0; background: none; border: 0;
	border-bottom: 1px solid color-mix(in srgb, var(--luxe-paper) 20%, transparent);
	opacity: .42; transition: opacity .35s;
}
.luxe-services__tab:hover, .luxe-services__tab[aria-selected="true"] { opacity: 1; }
.luxe-services__num { font-size: .82rem; font-variant-numeric: tabular-nums; }
.luxe-services__name { font-family: var(--luxe-font-head); font-size: clamp(1.45rem, 2.4vw, 2.25rem); line-height: 1.1; }
.luxe-services__panel { display: grid; gap: 2rem; animation: luxe-fade .7s var(--luxe-ease); }
.luxe-services__panel[hidden] { display: none; }
.luxe-services__img { margin: 0; aspect-ratio: 16 / 10; overflow: hidden; }
.luxe-services__img img, .luxe-services__img .luxe-ph { width: 100%; height: 100%; object-fit: cover; }
.luxe-services__copy { max-width: 32rem; display: grid; gap: 1rem; justify-items: start; }
.luxe-services__copy p { margin: 0; opacity: .85; }
.luxe-services__copy .luxe-h3 { margin: 0; }
@keyframes luxe-fade { from { opacity: 0; } to { opacity: 1; } }

/* ---------- Statement ---------- */

.luxe-statement { background: var(--luxe-dark); color: var(--luxe-paper); overflow: hidden; }
.luxe-services + .luxe-statement { border-top: 1px solid color-mix(in srgb, var(--luxe-paper) 14%, transparent); }
.luxe-statement__bg { position: absolute; inset: 0; z-index: -1; }
.luxe-statement__bg img { width: 100%; height: 100%; object-fit: cover; opacity: .28; }
.luxe-statement__inner { display: grid; grid-template-columns: repeat(12, 1fr); gap: 2rem; align-items: end; }
.luxe-statement__quote { grid-column: 1 / span 8; margin: 0; }
.luxe-statement__quote p { font-family: var(--luxe-font-head); font-size: clamp(2.2rem, 5.2vw, 5rem); line-height: 1.02; letter-spacing: -0.02em; margin: 0; }
.luxe-statement__side { grid-column: 10 / span 3; display: grid; gap: 1.5rem; justify-items: start; }
.luxe-statement__side p { margin: 0; opacity: .82; }

/* ---------- Page header / archives ---------- */

.luxe-page-header { padding-top: clamp(3rem, 8vw, 7rem); padding-bottom: clamp(2rem, 5vw, 4rem); }
.luxe-header-overlay .luxe-page-header { padding-top: calc(var(--luxe-header-h) + clamp(3rem, 8vw, 7rem)); }
.luxe-page-header__title { font-size: clamp(2.8rem, 6.4vw, 6rem); line-height: .98; letter-spacing: -0.025em; margin: 0; max-width: 16ch; }
.luxe-page-header__intro { margin-top: 1.5rem; max-width: 36rem; color: var(--luxe-muted); font-size: 1.05rem; }
.luxe-page-header__intro > :last-child { margin-bottom: 0; }

.luxe-breadcrumbs { font-size: .82rem; color: var(--luxe-muted); margin-bottom: 1.5rem; }
.luxe-breadcrumbs p { margin: 0; }
.luxe-breadcrumbs a { text-decoration: none; }
.luxe-breadcrumbs a:hover { text-decoration: underline; }

.luxe-filter { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: clamp(2rem, 4vw, 3.5rem); }
.luxe-filter a { padding: .55em 1.1em; font-size: .85rem; text-decoration: none; border: 1px solid var(--luxe-line); border-radius: 999px; transition: background-color .3s, color .3s; }
.luxe-filter a:hover { border-color: currentColor; }
.luxe-filter a[aria-current="page"] { background: var(--luxe-ink); border-color: var(--luxe-ink); color: var(--luxe-paper); }

.luxe-projects-archive, .luxe-blog { padding-bottom: var(--luxe-section); }

/* ---------- Post grid ---------- */

.luxe-posts { --cols: 3; }
.luxe-posts__grid { display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); gap: clamp(2.5rem, 4vw, 4rem) clamp(1.5rem, 2.5vw, 2.5rem); }
.luxe-post-card { display: flex; flex-direction: column; gap: 1.1rem; }
.luxe-post-card__img { display: block; aspect-ratio: 3 / 2; overflow: hidden; }
.luxe-post-card__img img, .luxe-post-card__img .luxe-ph { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--luxe-ease); min-height: 0; }
.luxe-post-card:hover .luxe-post-card__img img { transform: scale(1.035); }
.luxe-post-card__body { display: grid; gap: .7rem; justify-items: start; }
.luxe-post-card__title { font-size: clamp(1.35rem, 1.8vw, 1.75rem); line-height: 1.15; margin: 0; }
.luxe-post-card__title a { text-decoration: none; }
.luxe-post-card__title a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.luxe-post-card__excerpt { margin: 0; color: var(--luxe-muted); font-size: .96rem; }
.luxe-post-card__more { margin-top: .3rem; }

.luxe-meta { display: flex; flex-wrap: wrap; gap: .4rem 1rem; font-size: .8rem; color: var(--luxe-muted); }
.luxe-meta__cat { text-decoration: none; color: var(--luxe-ink); }

.luxe-posts--featured .luxe-post-card:first-child { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: center; }
.luxe-posts--featured .luxe-post-card:first-child .luxe-post-card__title { font-size: clamp(1.9rem, 3.4vw, 3.1rem); }
.luxe-posts--list .luxe-posts__grid { grid-template-columns: 1fr; }
.luxe-posts--list .luxe-post-card { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 2rem; align-items: center; padding-bottom: 2.5rem; border-bottom: 1px solid var(--luxe-line); }

.luxe-pagination { margin-top: clamp(3rem, 6vw, 5rem); }
.luxe-pagination ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.luxe-pagination a, .luxe-pagination span { display: inline-grid; place-items: center; min-width: 2.75rem; height: 2.75rem; padding: 0 .9rem; font-size: .88rem; text-decoration: none; border: 1px solid var(--luxe-line); border-radius: 999px; }
.luxe-pagination .current { background: var(--luxe-ink); color: var(--luxe-paper); border-color: var(--luxe-ink); }
.luxe-pagination a:hover { border-color: currentColor; }

/* ---------- Single post ---------- */

.luxe-single__header { padding-top: clamp(3rem, 8vw, 7rem); padding-bottom: 2.5rem; display: grid; gap: 1.1rem; }
.luxe-single__title { font-size: clamp(2.4rem, 5vw, 4.4rem); line-height: 1.02; letter-spacing: -0.02em; margin: 0; }
.luxe-single__dek { font-family: var(--luxe-font-head); font-size: clamp(1.3rem, 2vw, 1.7rem); line-height: 1.3; margin: 0; color: color-mix(in srgb, var(--luxe-ink) 80%, transparent); }
.luxe-single__byline { font-size: .85rem; color: var(--luxe-muted); margin: 0; }
.luxe-feature-img { margin: 0 auto clamp(2.5rem, 5vw, 4.5rem); }
.luxe-feature-img img { width: 100%; max-height: 82vh; object-fit: cover; }
.luxe-single .luxe-prose, .luxe-main .entry-content.luxe-prose { max-width: 46rem; font-size: 1.06rem; line-height: 1.75; }

.luxe-prose h2 { font-size: clamp(1.8rem, 3vw, 2.5rem); margin-top: 2.2em; }
.luxe-prose h3 { font-size: clamp(1.4rem, 2.2vw, 1.85rem); margin-top: 1.8em; }
.luxe-prose a { text-decoration: underline; }
.luxe-prose blockquote { font-family: var(--luxe-font-head); font-size: clamp(1.45rem, 2.3vw, 1.95rem); line-height: 1.3; margin: 2.2em 0; padding-left: 1.5rem; border-left: 1px solid var(--luxe-accent); }
.luxe-prose blockquote cite { display: block; margin-top: 1rem; font: .85rem/1.4 var(--luxe-font-body); font-style: normal; color: var(--luxe-muted); }
.luxe-prose figure { margin: 2.2em 0; }
.luxe-prose figcaption, .wp-caption-text { font-size: .82rem; color: var(--luxe-muted); margin-top: .6rem; }
.luxe-prose ul, .luxe-prose ol { padding-left: 1.3em; }
.luxe-prose li + li { margin-top: .4em; }
.luxe-prose table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.luxe-prose th, .luxe-prose td { padding: .7rem .5rem; border-bottom: 1px solid var(--luxe-line); text-align: left; }
.luxe-prose code { font-size: .9em; background: color-mix(in srgb, var(--luxe-ink) 7%, transparent); padding: .1em .35em; }
.luxe-prose pre { overflow-x: auto; padding: 1.2rem; background: var(--luxe-dark); color: var(--luxe-paper); font-size: .88rem; }
.luxe-prose .alignwide { width: min(var(--luxe-max), 100vw - var(--luxe-pad) * 2); max-width: none; margin-left: 50%; transform: translateX(-50%); }
.luxe-prose .alignfull { width: 100vw; max-width: none; margin-left: 50%; transform: translateX(-50%); }
.luxe-prose .alignleft { float: left; margin: .3em 1.6em 1em 0; max-width: 50%; }
.luxe-prose .alignright { float: right; margin: .3em 0 1em 1.6em; max-width: 50%; }
.luxe-prose .aligncenter { margin-inline: auto; }
.luxe-prose::after { content: ""; display: table; clear: both; }

.luxe-tags { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 3rem; }
.luxe-tags a { font-size: .8rem; text-decoration: none; padding: .45em .9em; border: 1px solid var(--luxe-line); border-radius: 999px; }

.luxe-post-nav, .post-navigation { margin: 4rem 0 0; }
.post-navigation .nav-links { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; border-top: 1px solid var(--luxe-line); padding-top: 2rem; }
.post-navigation .nav-next { text-align: right; }
.post-navigation a { text-decoration: none; display: grid; gap: .4rem; }
.luxe-nav__label { font-size: .8rem; color: var(--luxe-muted); }
.luxe-nav__title { font-family: var(--luxe-font-head); font-size: 1.4rem; line-height: 1.2; }

.luxe-with-sidebar { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: clamp(2rem, 5vw, 5rem); }
.luxe-sidebar .widget { margin-bottom: 2.5rem; font-size: .95rem; }
.widget-title { font-size: 1.3rem; }
.widget ul { list-style: none; padding: 0; }
.widget li { padding: .45rem 0; border-bottom: 1px solid var(--luxe-line); }
.widget a { text-decoration: none; }

.luxe-related { background: var(--luxe-paper); margin-top: var(--luxe-section); }

/* ---------- Comments ---------- */

.luxe-comments { padding-block: 4rem; }
.luxe-comment-list { list-style: none; padding: 0; }
.luxe-comment-list .children { list-style: none; padding-left: clamp(1rem, 4vw, 3rem); }
.luxe-comment-list .comment-body { padding: 1.5rem 0; border-bottom: 1px solid var(--luxe-line); }
.comment-author { display: flex; align-items: center; gap: .8rem; font-weight: 500; }
.comment-author img { border-radius: 50%; }
.comment-metadata { font-size: .8rem; color: var(--luxe-muted); }
.comment-metadata a { text-decoration: none; }
.comment-form p { margin-bottom: 1.2rem; }
.comment-form label { font-size: .85rem; color: var(--luxe-muted); }

/* ---------- Single project ---------- */

.luxe-hero--project .luxe-hero__title { max-width: 14ch; }
.luxe-project__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 2rem; }
.luxe-project__facts { grid-column: 1 / span 4; display: grid; gap: 2rem; align-content: start; justify-items: start; }
.luxe-project__body { grid-column: 6 / span 7; }
.luxe-project__lead { font-family: var(--luxe-font-head); font-size: clamp(1.6rem, 2.8vw, 2.5rem); line-height: 1.18; margin: 0 0 2.5rem; max-width: 26ch; }

.luxe-facts, .luxe-contact { margin: 0; display: grid; gap: 0; width: 100%; }
.luxe-facts > div { display: grid; grid-template-columns: 9rem 1fr; gap: 1rem; padding: .9rem 0; border-bottom: 1px solid var(--luxe-line); }
.luxe-facts dt, .luxe-contact dt { font-size: .8rem; color: var(--luxe-muted); }
.luxe-facts dd { margin: 0; font-family: var(--luxe-font-head); font-size: 1.2rem; line-height: 1.25; }

.luxe-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(.75rem, 1.5vw, 1.5rem); }
.luxe-gallery__item { display: block; overflow: hidden; aspect-ratio: 4 / 5; cursor: zoom-in; }
.luxe-gallery__item:nth-child(3n + 1) { grid-column: 1 / -1; aspect-ratio: 16 / 9; }
.luxe-gallery__item:last-child:nth-child(3n + 2) { grid-column: 1 / -1; aspect-ratio: 16 / 9; }
.luxe-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--luxe-ease); }
.luxe-gallery__item:hover img { transform: scale(1.03); }

.luxe-project-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; padding-block: clamp(3rem, 6vw, 5rem); border-top: 1px solid var(--luxe-line); }
.luxe-project-nav__item { display: grid; gap: .3rem; text-decoration: none; }
.luxe-project-nav__item span { font-size: .8rem; color: var(--luxe-muted); }
.luxe-project-nav__item strong { font-family: var(--luxe-font-head); font-weight: 400; font-size: clamp(1.6rem, 3vw, 2.6rem); line-height: 1.05; }
.luxe-project-nav__item--next { text-align: right; grid-column: 2; }

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

.luxe-footer { background: var(--luxe-dark); color: var(--luxe-paper); padding-bottom: 2rem; }
.luxe-footer__image { margin: 0 0 clamp(3rem, 6vw, 5rem); aspect-ratio: 21 / 8; overflow: hidden; }
.luxe-footer__image img { width: 100%; height: 100%; object-fit: cover; }
.luxe-footer:not(:has(.luxe-footer__image)) { padding-top: clamp(4rem, 8vw, 7rem); }
.luxe-footer__cta { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 2rem; padding-bottom: clamp(3rem, 6vw, 5rem); border-bottom: 1px solid color-mix(in srgb, var(--luxe-paper) 18%, transparent); }
.luxe-footer__heading { font-size: clamp(2.6rem, 6.5vw, 6.2rem); line-height: .96; letter-spacing: -0.025em; margin: 0; max-width: 12ch; }
.luxe-footer__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; padding-block: clamp(2.5rem, 5vw, 4rem); }
.luxe-footer__label { font-family: var(--luxe-font-body); font-size: .8rem; font-weight: 400; letter-spacing: .01em; opacity: .6; margin: 0 0 1.1rem; }
.luxe-footer__menu, .luxe-footer .luxe-menu__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.luxe-footer__menu a, .luxe-footer .luxe-menu__list a { font-family: var(--luxe-font-head); font-size: 1.45rem; text-decoration: none; transform: none; }
.luxe-footer__menu a:hover, .luxe-footer .luxe-menu__list a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.luxe-contact > div { display: grid; grid-template-columns: 4.5rem 1fr; gap: .5rem; padding: .3rem 0; }
.luxe-contact dd { margin: 0; font-size: .95rem; }
.luxe-contact a { text-decoration: none; }
.luxe-contact a:hover { text-decoration: underline; }
.luxe-footer .widget { margin-top: 1.5rem; font-size: .92rem; }
.luxe-footer .widget li { border-color: color-mix(in srgb, var(--luxe-paper) 15%, transparent); }
.luxe-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem 2rem; padding-top: 1.75rem; border-top: 1px solid color-mix(in srgb, var(--luxe-paper) 18%, transparent); font-size: .8rem; opacity: .75; }
.luxe-footer__bottom p { margin: 0; }
.luxe-footer__legal { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 1.4rem; }
.luxe-footer__legal a, .luxe-footer__credit a { text-decoration: none; }
.luxe-footer__legal a:hover, .luxe-footer__credit a:hover { text-decoration: underline; }

/* ---------- Cookie ---------- */

.luxe-cookie {
	--luxe-ck-edge: var(--luxe-ck-gap, var(--luxe-pad));
	position: fixed; z-index: 950;
	width: min(var(--luxe-ck-w, 400px), calc(100vw - var(--luxe-ck-edge) * 2));
	padding: var(--luxe-ck-pad, 1.4rem);
	background: var(--luxe-ck-bg, var(--luxe-paper));
	color: var(--luxe-ck-fg, var(--luxe-ink));
	border: 1px solid var(--luxe-ck-border, color-mix(in srgb, currentColor 14%, transparent));
	border-radius: var(--luxe-ck-radius, 0);
	font-family: var(--luxe-ck-font, var(--luxe-font-body));
	font-size: var(--luxe-ck-text, .86rem); line-height: 1.5;
	animation: luxe-fade .6s var(--luxe-ease);
}
.luxe-cookie[hidden] { display: none; }
.luxe-cookie__text { margin: 0 0 1rem; }
.luxe-cookie__text strong { display: block; font-family: var(--luxe-font-head); font-weight: 400; font-size: var(--luxe-ck-title, 1.35rem); margin-bottom: .3rem; }
.luxe-cookie__actions { display: flex; gap: .5rem; flex-wrap: wrap; }

/* Position */
.luxe-cookie--bl { left: var(--luxe-ck-edge); bottom: var(--luxe-ck-edge); }
.luxe-cookie--br { right: var(--luxe-ck-edge); bottom: var(--luxe-ck-edge); }
.luxe-cookie--bc { left: 50%; bottom: var(--luxe-ck-edge); transform: translateX(-50%); }
.luxe-cookie--centre { left: 50%; top: 50%; transform: translate(-50%, -50%); }
.luxe-cookie--bar, .luxe-cookie--topbar {
	left: 0; right: 0; width: 100%; max-width: none; border-width: 1px 0 0;
	border-radius: 0;
	display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
	padding-inline: var(--luxe-pad);
}
.luxe-cookie--bar { bottom: 0; }
.luxe-cookie--topbar { top: 0; border-width: 0 0 1px; }
.luxe-cookie--bar .luxe-cookie__text, .luxe-cookie--topbar .luxe-cookie__text { margin: 0; max-width: 70ch; }
.luxe-cookie--bar .luxe-cookie__text strong, .luxe-cookie--topbar .luxe-cookie__text strong { display: inline; font-size: inherit; margin: 0 .35em 0 0; }
.luxe-cookie--bar .luxe-cookie__actions, .luxe-cookie--topbar .luxe-cookie__actions { flex: none; }

@media (max-width: 560px) {
	.luxe-cookie:not(.luxe-cookie--bar):not(.luxe-cookie--topbar) {
		left: .75rem; right: .75rem; bottom: .75rem; top: auto;
		width: auto; max-width: none; transform: none;
	}
	.luxe-cookie--bar, .luxe-cookie--topbar { flex-direction: column; align-items: flex-start; gap: .9rem; }
}

/* ---------- 404 ---------- */

.luxe-404 { padding-block: clamp(5rem, 12vw, 10rem); }
.luxe-404__code { font-family: var(--luxe-font-head); font-size: clamp(5rem, 16vw, 12rem); line-height: .8; margin: 0 0 2rem; color: var(--luxe-accent); }
.luxe-404__links { display: flex; gap: 2rem; margin-top: 2.5rem; }

/* ---------- Elementor compatibility ---------- */

.luxe-elementor-content > .elementor { width: 100%; }
.luxe-elementor-page .luxe-main { padding: 0; }
.elementor-widget-luxe-hero .luxe-hero__inner,
.elementor-widget-luxe-projects .luxe-wrap { max-width: none; }
.elementor-widget-container .luxe-section { padding-block: clamp(3rem, 7vw, 6rem); }
/* Elementor Pro Theme Builder header sitting over a hero */
.elementor-location-header { position: relative; z-index: 900; }

/* ---------- WooCommerce (light touch) ---------- */

.luxe-woo { padding-bottom: var(--luxe-section); }
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #respond input#submit, .woocommerce a.button.alt, .woocommerce button.button.alt {
	border-radius: 999px; padding: .9em 1.6em; font: 500 .88rem/1 var(--luxe-font-body);
	background: var(--luxe-ink); color: var(--luxe-paper);
}
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce button.button.alt:hover { background: var(--luxe-dark); color: var(--luxe-paper); }
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-family: var(--luxe-font-head); font-size: 1.4rem; }
.woocommerce span.onsale { background: var(--luxe-accent); color: var(--luxe-ink); border-radius: 999px; }

/* ---------- Responsive ---------- */

@media (max-width: 1024px) {
	.luxe-projects__grid, .luxe-posts__grid { grid-template-columns: repeat(var(--cols-t, min(var(--cols), 2)), minmax(0, 1fr)); }
	.luxe-projects--stagger .luxe-project-card:nth-child(n) { margin-top: 0; }
	.luxe-projects--stagger .luxe-project-card:nth-child(2n) { margin-top: clamp(2rem, 7vw, 5rem); }
	.luxe-statement__quote { grid-column: 1 / -1; }
	.luxe-statement__side { grid-column: 1 / span 8; }
	.luxe-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.luxe-with-sidebar { grid-template-columns: 1fr; }
}

@media (max-width: 767px) {
	.luxe-about__grid, .luxe-mission__grid, .luxe-split__grid, .luxe-statement__inner, .luxe-project__grid { grid-template-columns: 1fr; }
	.luxe-about__img, .luxe-about__text, .luxe-mission__img, .luxe-mission__text,
	.luxe-split__img, .luxe-split__text, .luxe-split--reverse .luxe-split__img, .luxe-split--reverse .luxe-split__text,
	.luxe-statement__quote, .luxe-statement__side, .luxe-project__facts, .luxe-project__body { grid-column: auto; order: initial; }
	.luxe-projects__grid, .luxe-posts__grid { grid-template-columns: repeat(var(--cols-m, 1), minmax(0, 1fr)); }
	.luxe-projects--stagger .luxe-project-card:nth-child(n) { margin-top: 0; }
	.luxe-projects__head { flex-direction: column; align-items: start; }
	.luxe-services__grid { grid-template-columns: 1fr; }
	.luxe-posts--featured .luxe-post-card:first-child, .luxe-posts--list .luxe-post-card { grid-template-columns: 1fr; }
	.luxe-footer__grid { grid-template-columns: 1fr; }
	.luxe-gallery { grid-template-columns: 1fr; }
	.luxe-gallery__item:nth-child(n) { aspect-ratio: 4 / 3; grid-column: auto; }
	.luxe-project-nav, .post-navigation .nav-links { grid-template-columns: 1fr; }
	.luxe-project-nav__item--next { grid-column: auto; text-align: left; }
	.luxe-facts > div { grid-template-columns: 7rem 1fr; }
}

/* ---------- Reduced motion ---------- */

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

/* ---------- Print ---------- */

@media print {
	.luxe-header, .luxe-footer, .luxe-menu, .luxe-drawer, .luxe-cookie, .luxe-preloader { display: none !important; }
	body { background: #fff; color: #000; }
}

/* ==========================================================================
   v1.1 — scroll & motion effects
   ========================================================================== */

/* ---------- Word-by-word heading reveal ---------- */
.luxe-w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .1em; margin-bottom: -.1em; }
.luxe-w__i { display: inline-block; transform: translateY(108%); transition: transform 1.05s var(--luxe-ease); transition-delay: calc(min(var(--wi, 0), 18) * 38ms); }
.is-words-in .luxe-w__i { transform: none; }
/* Scrub mode: words fill in as you scroll through the paragraph */
.luxe-words-scrub .luxe-w { overflow: visible; }
.luxe-words-scrub .luxe-w__i { transform: none; opacity: .16; transition: opacity .35s linear; transition-delay: 0s; }
.luxe-words-scrub .luxe-w__i.is-on { opacity: 1; }

/* ---------- Moving text band ---------- */
.luxe-marquee { position: relative; overflow: hidden; padding-block: clamp(2.5rem, 6vw, 5.5rem); border-block: 1px solid color-mix(in srgb, currentColor 12%, transparent); }
.luxe-marquee__track { display: flex; align-items: center; width: max-content; will-change: transform; transform: translate3d(var(--luxe-mx, 0px), 0, 0); padding-inline-start: var(--luxe-pad); }
.luxe-marquee__item {
	flex: none; white-space: nowrap;
	font-family: var(--luxe-font-head); font-weight: 400;
	/* JS caps this so one full phrase always fits on screen and stays readable. */
	font-size: var(--luxe-mq-fs, clamp(3.4rem, 10vw, 10rem)); line-height: 1; letter-spacing: -0.03em;
	padding-inline: clamp(1rem, 2.5vw, 2.5rem);
}
.luxe-marquee__dot { flex: none; width: clamp(.6rem, 1vw, .9rem); aspect-ratio: 1; border-radius: 50%; background: var(--luxe-accent); }
/* No JS / no scroll loop: drift slowly on its own */
html:not(.luxe-scroll-fx) .luxe-marquee__track { animation: luxe-marquee 60s linear infinite; }
@keyframes luxe-marquee { to { transform: translate3d(-50%, 0, 0); } }

/* ---------- Gallery viewer ---------- */
.luxe-viewer { position: fixed; inset: 0; z-index: 1200; display: grid; grid-template-rows: auto 1fr auto; background: rgb(18 19 15); color: var(--luxe-paper); opacity: 0; transition: opacity .4s; }
.luxe-viewer.is-open { opacity: 1; }
.luxe-viewer__bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem var(--luxe-pad); font-size: .85rem; }
.luxe-viewer__count { font-variant-numeric: tabular-nums; opacity: .8; }
.luxe-viewer__caption { flex: 1; text-align: center; opacity: .8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.luxe-viewer__tools { display: flex; gap: .5rem; }
.luxe-viewer button { background: none; color: inherit; border: 1px solid rgb(255 255 255 / .28); border-radius: 999px; padding: .65em 1.15em; font-size: .82rem; line-height: 1; }
.luxe-viewer button:hover { background: rgb(255 255 255 / .1); }
.luxe-viewer__stage { position: relative; overflow: hidden; display: grid; place-items: center; touch-action: none; cursor: zoom-in; }
.luxe-viewer.is-zoomed .luxe-viewer__stage { cursor: grab; }
.luxe-viewer.is-dragging .luxe-viewer__stage { cursor: grabbing; }
.luxe-viewer__img { max-width: 92vw; max-height: calc(100svh - 11rem); width: auto; height: auto; object-fit: contain; user-select: none; -webkit-user-drag: none; transform-origin: center; transition: transform .45s var(--luxe-ease), opacity .3s; }
.luxe-viewer.is-dragging .luxe-viewer__img { transition: none; }
.luxe-viewer__img.is-loading { opacity: .25; }
.luxe-viewer__nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 52px; height: 52px; padding: 0 !important; display: grid; place-items: center; }
.luxe-viewer__nav--prev { left: var(--luxe-pad); }
.luxe-viewer__nav--next { right: var(--luxe-pad); }
.luxe-viewer__nav--prev .luxe-icon { transform: rotate(180deg); }
.luxe-viewer.is-zoomed .luxe-viewer__nav { opacity: 0; pointer-events: none; }
.luxe-viewer__thumbs { display: flex; gap: .5rem; overflow-x: auto; padding: .75rem var(--luxe-pad) 1rem; scrollbar-width: thin; justify-content: safe center; }
.luxe-viewer__thumbs button { flex: none; width: 64px; height: 48px; padding: 0; border-radius: 0; overflow: hidden; opacity: .45; border-color: transparent; }
.luxe-viewer__thumbs button[aria-current="true"] { opacity: 1; border-color: var(--luxe-paper); }
.luxe-viewer__thumbs img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 767px) {
	.luxe-viewer__nav { top: auto; bottom: 5.5rem; transform: none; width: 44px; height: 44px; }
	.luxe-viewer__caption { display: none; }
	.luxe-viewer__img { max-height: calc(100svh - 12rem); }
}

/* ---------- Rotate notice (touch phones held sideways) ---------- */
.luxe-rotate { display: none; }
@media (orientation: landscape) and (max-height: 500px) and (pointer: coarse) {
	.luxe-rotate {
		position: fixed; inset: 0; z-index: 100000;
		display: grid; place-content: center; justify-items: center; gap: .75rem;
		padding: 2rem; text-align: center;
		background: var(--luxe-dark); color: var(--luxe-paper);
	}
	.luxe-rotate__icon { animation: luxe-tilt 2.4s var(--luxe-ease) infinite; }
	.luxe-rotate__name { margin: .5rem 0 0; font-family: var(--luxe-font-head); font-size: 1.8rem; line-height: 1; }
	.luxe-rotate__text { margin: 0; max-width: 28rem; font-size: .9rem; opacity: .75; }
	html:has(.luxe-rotate) { overflow: hidden; }
}
@keyframes luxe-tilt { 0%, 30% { transform: rotate(-90deg); } 60%, 100% { transform: rotate(0); } }

/* ---------- Tablet refinements ---------- */
@media (min-width: 768px) and (max-width: 1024px) {
	.luxe-about__img { grid-column: 1 / span 6; }
	.luxe-about__text { grid-column: 7 / span 6; }
	.luxe-mission__img { grid-column: 1 / -1; }
	.luxe-mission__text { grid-column: 1 / span 8; }
	.luxe-split__img { grid-column: 1 / span 6; }
	.luxe-split__text { grid-column: 7 / span 6; }
	.luxe-split--reverse .luxe-split__img { grid-column: 7 / span 6; }
	.luxe-split--reverse .luxe-split__text { grid-column: 1 / span 6; }
	.luxe-services__grid { grid-template-columns: 1fr; }
	.luxe-project__facts { grid-column: 1 / -1; }
	.luxe-project__body { grid-column: 1 / -1; }
	.luxe-menu__aside { max-width: 300px; }
	.luxe-hero__feature { max-width: 300px; }
}

@media (prefers-reduced-motion: reduce) {
	.luxe-w__i { transform: none !important; opacity: 1 !important; }
	.luxe-marquee__track { animation: none !important; transform: none !important; }
	.luxe-shadow { display: none; }
	[data-luxe-parallax] > * { transform: none !important; }
}

/* ==========================================================================
   v1.2 — Elementor-built pages, header/footer/drawer templates
   ========================================================================== */

/* Header/footer coming from an Elementor template (Luxe template, Pro Theme Builder) */
.luxe-tpl-header .luxe-header,
.elementor-location-header .luxe-header { position: relative !important; top: auto !important; }
.luxe-tpl-header { position: relative; z-index: 900; }
.luxe-header-overlay .luxe-tpl-header, .luxe-header-overlay .elementor-location-header { position: absolute; top: 0; left: 0; right: 0; z-index: 900; }
.luxe-header-overlay.luxe-header-sticky .luxe-tpl-header, .luxe-header-overlay.luxe-header-sticky .elementor-location-header { position: fixed; }
.luxe-header-solid.luxe-header-sticky .luxe-tpl-header, .luxe-header-solid.luxe-header-sticky .elementor-location-header { position: sticky; top: 0; }
.admin-bar.luxe-header-sticky .luxe-tpl-header, .admin-bar.luxe-header-overlay .luxe-tpl-header { top: 32px; }
@media (max-width: 782px) { .admin-bar.luxe-header-sticky .luxe-tpl-header, .admin-bar.luxe-header-overlay .luxe-tpl-header { top: 46px; } }
@media (max-width: 600px) { .admin-bar.luxe-header-sticky .luxe-tpl-header { top: 0; } }
/* Native-widget headers built straight in the template */
.luxe-tpl-header.is-scrolled { background: var(--luxe-bg); }
.luxe-tpl-header.is-hidden { transform: translateY(-100%); }
/* Only the pinned element moves — never both, or the bar tears out of its box. */
.luxe-tpl-header .luxe-header.is-hidden { transform: none; }
.luxe-tpl-header, .luxe-header { transition: transform .45s var(--luxe-ease), background-color .35s linear, box-shadow .35s linear; will-change: transform; }
.luxe-tpl-header { backface-visibility: hidden; }
.luxe-tpl-header > .elementor > .e-con, .luxe-tpl-footer > .elementor > .e-con { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; }
/* Inside the Elementor editor the header sits in the page, not over it */
.elementor-editor-active .luxe-header-overlay .luxe-header, .elementor-editor-preview .luxe-tpl-header { position: relative; }
.luxe-editor-hint { margin: 0; padding: .5rem var(--luxe-pad); font-size: .75rem; opacity: .6; }

/* Drawer content from an Elementor template */
.luxe-drawer__tpl .e-con { --padding-left: 0px; --padding-right: 0px; }
.luxe-el-drawer-title .elementor-heading-title { font-size: clamp(2.2rem, 4vw, 3.2rem); line-height: 1; }

/* ---------- Containers created by "Build site in Elementor" ---------- */
.e-con.luxe-el-section { --padding-top: var(--luxe-section); --padding-bottom: var(--luxe-section); --padding-left: var(--luxe-pad); --padding-right: var(--luxe-pad); --container-max-width: var(--luxe-max); --gap: clamp(2.5rem, 6vw, 5rem); --row-gap: clamp(2.5rem, 6vw, 5rem); position: relative; }
.e-con.luxe-el-flush { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; --gap: 0px; --row-gap: 0px; }
.e-con.luxe-el-tight, .e-con.luxe-el-tight-top { --padding-top: calc(var(--luxe-section) * .5); }
.e-con.luxe-el-tight { --padding-bottom: calc(var(--luxe-section) * .5); }
.e-con.luxe-el-pagehead { --padding-top: clamp(3rem, 8vw, 7rem); --padding-bottom: clamp(1rem, 3vw, 2rem); --gap: 1.5rem; --row-gap: 1.5rem; }
.luxe-header-overlay .e-con.luxe-el-pagehead { --padding-top: calc(var(--luxe-header-h) + clamp(3rem, 8vw, 7rem)); }
.e-con.luxe-el-row, .e-con.luxe-el-col { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; }
.e-con.luxe-el-col { --gap: 1.5rem; --row-gap: 1.5rem; }
.e-con.luxe-el-paper { background-color: var(--luxe-paper); }
.e-con.luxe-el-dark { background-color: var(--luxe-dark); color: var(--luxe-paper); }
.e-con.luxe-el-section > .e-con-inner { position: relative; z-index: 1; }

/* Native heading / text / image / button presets (any Elementor style you set overrides these) */
.luxe-el-display .elementor-heading-title { font-size: clamp(2.8rem, 7.4vw, 7.25rem); line-height: .96; letter-spacing: -0.025em; max-width: 14ch; }
.luxe-el-pagetitle .elementor-heading-title { font-size: clamp(2.8rem, 6.4vw, 6rem); line-height: .98; letter-spacing: -0.025em; max-width: 16ch; }
.luxe-el-lead .elementor-heading-title { font-size: clamp(1.7rem, 3.3vw, 3.1rem); line-height: 1.14; letter-spacing: -0.012em; max-width: 30ch; }
.luxe-el-h2 .elementor-heading-title { font-size: clamp(2rem, 4vw, 3.6rem); line-height: 1.04; letter-spacing: -0.015em; max-width: 18ch; }
.luxe-el-h3 .elementor-heading-title { font-size: clamp(1.4rem, 2vw, 1.85rem); line-height: 1.2; max-width: 22ch; }
.luxe-el-prose { max-width: 38rem; }
.luxe-el-prose p:last-child, .luxe-el-intro p:last-child, .luxe-el-small p:last-child { margin-bottom: 0; }
.luxe-el-intro { max-width: 36rem; color: var(--luxe-muted); font-size: 1.05rem; }
.luxe-el-small { font-size: .9rem; color: var(--luxe-muted); }
.luxe-el-portrait img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.luxe-el-wide img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.luxe-parallax .elementor-widget-container, .luxe-parallax.elementor-widget-image { overflow: hidden; }

.elementor-widget.luxe-el-link .elementor-button {
	padding: 0 0 .35em; border: 0; border-radius: 0; background: linear-gradient(currentColor, currentColor) left bottom / 100% 1px no-repeat;
	color: var(--luxe-ink); font: 500 .92rem/1.2 var(--luxe-font-body); letter-spacing: .01em; fill: currentColor;
}
.elementor-widget.luxe-el-link .elementor-button:hover { background-size: 100% 1px; color: var(--luxe-ink); }
.luxe-el-dark .elementor-widget.luxe-el-link .elementor-button { color: var(--luxe-paper); }
.elementor-widget.luxe-el-btn .elementor-button { padding: .9em 1.6em; border: 1px solid currentColor; border-radius: 999px; background: transparent; color: inherit; font: 500 .86rem/1 var(--luxe-font-body); }

/* Projects grid client-side filter */
button[data-filter] { padding: .55em 1.1em; font-size: .85rem; background: none; border: 1px solid var(--luxe-line); border-radius: 999px; transition: background-color .3s, color .3s; }
button[data-filter]:hover { border-color: currentColor; }
button[data-filter][aria-pressed="true"] { background: var(--luxe-ink); border-color: var(--luxe-ink); color: var(--luxe-paper); }
.luxe-project-card[hidden] { display: none; }

.luxe-contact-widget { display: grid; gap: 1.5rem; }

/* ==========================================================================
   v1.3 — trailing pointer, scroll-video, giant wordmark
   ========================================================================== */

/* ---------- Trailing pointer ---------- */
.luxe-cursor { position: fixed; inset: 0; z-index: 12000; pointer-events: none; opacity: 0; transition: opacity .3s; contain: strict; }
.luxe-cursor.is-on { opacity: 1; }
.luxe-cursor__dot,
.luxe-cursor__tail { position: absolute; top: 0; left: 0; border-radius: 50%; will-change: transform; }
.luxe-cursor__dot { width: 6px; height: 6px; margin: -3px 0 0 -3px; background: #fff; mix-blend-mode: difference; }
.luxe-cursor__tail {
	width: 38px; height: 38px; margin: -19px 0 0 -19px;
	border: 1px solid rgba(255, 255, 255, .95); mix-blend-mode: difference;
	transition: width .35s var(--luxe-ease), height .35s var(--luxe-ease), margin .35s var(--luxe-ease), background-color .3s, border-color .3s;
}
.luxe-cursor.is-link .luxe-cursor__tail { width: 62px; height: 62px; margin: -31px 0 0 -31px; background: rgba(255, 255, 255, .14); }
.luxe-cursor.is-down .luxe-cursor__tail { width: 28px; height: 28px; margin: -14px 0 0 -14px; }
.luxe-cursor__tail::after {
	content: attr(data-label); position: absolute; inset: 0; display: grid; place-items: center;
	font: 500 .6rem/1 var(--luxe-font-body); letter-spacing: .14em; text-transform: uppercase; color: #fff;
	opacity: 0; transition: opacity .25s;
}
.luxe-cursor__tail[data-label]:not([data-label=""])::after { opacity: 1; }
.luxe-cursor.is-link .luxe-cursor__tail[data-label]:not([data-label=""]) { background: rgba(20, 20, 16, .78); border-color: transparent; mix-blend-mode: normal; width: 76px; height: 76px; margin: -38px 0 0 -38px; }
@media (pointer: coarse), (prefers-reduced-motion: reduce) { .luxe-cursor { display: none; } }

/* ---------- Scroll-driven video ---------- */
.luxe-scrollvid { position: relative; height: var(--luxe-sv-len, 260vh); background: #121210; }
.luxe-scrollvid__pin { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; display: grid; }
.luxe-scrollvid__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.luxe-scrollvid__shade { position: absolute; inset: 0; background: rgb(12 12 10 / var(--luxe-shade, .25)); }
.luxe-scrollvid__inner { position: relative; align-self: end; justify-self: start; padding-bottom: clamp(2.5rem, 7vh, 5rem); color: #fff; }
.luxe-scrollvid__kicker { margin: 0 0 .9rem; font: 500 .72rem/1 var(--luxe-font-body); letter-spacing: .22em; text-transform: uppercase; opacity: .75; }
.luxe-scrollvid__title { margin: 0; max-width: 16ch; font: 400 clamp(2.2rem, 5vw, 4.4rem)/1.02 var(--luxe-font-head); letter-spacing: -0.02em; color: inherit; }
.luxe-scrollvid__bar { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: rgb(255 255 255 / .18); }
.luxe-scrollvid__bar i { position: absolute; inset: 0; background: rgb(255 255 255 / .85); transform: scaleX(0); transform-origin: left center; }
.luxe-scrollvid.is-autoplay .luxe-scrollvid__bar { display: none; }
@media (prefers-reduced-motion: reduce) { .luxe-scrollvid { height: auto; } .luxe-scrollvid__pin { position: relative; height: 72svh; } .luxe-scrollvid__bar { display: none; } }

/* ---------- Giant brand wordmark ---------- */
.luxe-wordmark { overflow: hidden; padding: clamp(1rem, 3vw, 2rem) 0 0; line-height: 0; }
.luxe-wordmark__text {
	display: inline-block; white-space: nowrap; visibility: hidden;
	font-family: var(--luxe-font-head); font-weight: 400; line-height: .78; letter-spacing: .01em;
	text-transform: uppercase; transform: translateY(.045em); user-select: none;
}
.luxe-wordmark.is-fit .luxe-wordmark__text { visibility: visible; }
/* Base letters sit barely above the background; a soft light sweeps through on scroll (--luxe-wm). */
.luxe-wordmark--dark { background: var(--luxe-dark); }
.luxe-wordmark--dark .luxe-wordmark__text {
	color: transparent;
	background-image: linear-gradient(105deg, rgb(255 255 255 / .07) 0%, rgb(255 255 255 / .07) 32%, rgb(255 253 246 / .66) 50%, rgb(255 255 255 / .07) 68%, rgb(255 255 255 / .07) 100%);
	background-size: 300% 100%;
	background-position: calc(100% - var(--luxe-wm, 0%) * 2) 0;
	-webkit-background-clip: text; background-clip: text;
}
.luxe-wordmark--light { background: transparent; }
.luxe-wordmark--light .luxe-wordmark__text {
	color: transparent;
	background-image: linear-gradient(105deg, rgb(26 26 22 / .12) 0%, rgb(26 26 22 / .12) 32%, rgb(26 26 22 / .78) 50%, rgb(26 26 22 / .12) 68%, rgb(26 26 22 / .12) 100%);
	background-size: 300% 100%;
	background-position: calc(100% - var(--luxe-wm, 0%) * 2) 0;
	-webkit-background-clip: text; background-clip: text;
}
@media (prefers-reduced-motion: reduce) {
	.luxe-wordmark--dark .luxe-wordmark__text { background-image: none; color: rgb(255 255 255 / .28); }
	.luxe-wordmark--light .luxe-wordmark__text { background-image: none; color: rgb(26 26 22 / .3); }
}
/* Above the footer content (the footer itself is already dark) */
.luxe-wordmark--footer { background: transparent; padding: clamp(2.5rem, 6vw, 5rem) 0 clamp(1rem, 3vw, 2.5rem); }
.luxe-footer:not(:has(.luxe-footer__image)) { padding-top: clamp(4rem, 8vw, 7rem); }
.luxe-footer:has(.luxe-wordmark--footer) { padding-top: 0; }
.luxe-wordmark--footer + .luxe-footer__image { margin-top: 0; }
/* Scroll video inside the Elementor editor: no pin, normal height */
.luxe-scrollvid-editor .luxe-scrollvid { height: auto; }
.luxe-scrollvid-editor .luxe-scrollvid__pin { position: relative; height: 70vh; }
.luxe-scrollvid-editor .luxe-scrollvid__bar { display: none; }

/* ---------- Smoke trail pointer ---------- */
.luxe-smoke {
	position: fixed; inset: 0; width: 100%; height: 100%;
	z-index: 11900; pointer-events: none;
	mix-blend-mode: soft-light; filter: blur(16px); contain: strict;
}
/* Over light sections the same trail is inverted, so it reads as a soft shadow. */
.luxe-smoke.is-light { filter: blur(16px) invert(1) sepia(.45) saturate(1.3); opacity: .45; }
@media (pointer: coarse), (prefers-reduced-motion: reduce) { .luxe-smoke { display: none; } }

/* ==========================================================================
   v1.5 — text animation styles
   Add one of these as a CSS class on any Elementor widget (Advanced > CSS
   Classes), or pick it from the Animation dropdown on a Luxe widget:
   luxe-anim--words | chars | lines | fade | mask | blur | type | scrub
   ========================================================================== */
.luxe-anim .luxe-c { display: inline-block; }
.luxe-anim--chars .luxe-w, .luxe-anim--type .luxe-w { white-space: nowrap; }

/* words / chars / lines — rise up out of a mask */
.luxe-anim--words .luxe-w, .luxe-anim--chars .luxe-w, .luxe-anim--lines .luxe-w { overflow: hidden; }
.luxe-anim--words .luxe-w__i,
.luxe-anim--chars .luxe-w__i,
.luxe-anim--lines .luxe-w__i {
	display: inline-block; transform: translateY(105%);
	transition: transform .9s var(--luxe-ease);
	transition-delay: calc(var(--wi, 0) * var(--luxe-anim-step, .055s));
}
.luxe-anim--chars .luxe-w__i { transition-duration: .7s; --luxe-anim-step: .024s; }
.luxe-anim--lines .luxe-w__i { --luxe-anim-step: .12s; }
.is-words-in.luxe-anim--words .luxe-w__i,
.is-words-in.luxe-anim--chars .luxe-w__i,
.is-words-in.luxe-anim--lines .luxe-w__i { transform: translateY(0); }

/* fade — the whole block drifts up */
.luxe-anim--fade { opacity: 0; transform: translateY(26px); transition: opacity .9s var(--luxe-ease), transform .9s var(--luxe-ease); }
.luxe-anim--fade.is-words-in { opacity: 1; transform: none; }

/* blur — focus pulls in */
.luxe-anim--blur { opacity: 0; filter: blur(10px); transition: opacity 1s var(--luxe-ease), filter 1s var(--luxe-ease); }
.luxe-anim--blur.is-words-in { opacity: 1; filter: blur(0); }

/* mask — a wipe uncovers each word */
.luxe-anim--mask .luxe-w__i {
	display: inline-block; clip-path: inset(0 100% 0 0); opacity: .001;
	transition: clip-path .85s var(--luxe-ease), opacity .01s linear;
	transition-delay: calc(var(--wi, 0) * .07s);
}
.is-words-in.luxe-anim--mask .luxe-w__i { clip-path: inset(0 0 0 0); opacity: 1; }

/* type — characters appear one at a time, with a caret */
.luxe-anim--type .luxe-w__i { display: inline-block; opacity: 0; transition: opacity .01s linear; transition-delay: calc(var(--wi, 0) * .045s); }
.is-words-in.luxe-anim--type .luxe-w__i { opacity: 1; }
.luxe-anim--type.is-words-in::after {
	content: ""; display: inline-block; width: .06em; height: .95em;
	margin-left: .06em; background: currentColor; vertical-align: text-bottom;
	animation: luxe-caret .9s steps(1) infinite;
}
@keyframes luxe-caret { 0%, 50% { opacity: 1; } 50.01%, 100% { opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
	.luxe-anim--fade, .luxe-anim--blur { opacity: 1; transform: none; filter: none; }
	.luxe-anim .luxe-w__i { transform: none !important; clip-path: none !important; opacity: 1 !important; }
	.luxe-anim--type.is-words-in::after { display: none; }
}

/* ==========================================================================
   v1.5 — extra sections
   ========================================================================== */
.luxe-sec { display: grid; gap: clamp(2rem, 4vw, 3.4rem); }
.luxe-sec__head { display: grid; gap: .9rem; max-width: 46rem; }
.luxe-sec__intro { margin: 0; color: var(--luxe-muted); font-size: 1.02rem; max-width: 38rem; }

/* FAQ */
.luxe-faq__list { display: grid; }
.luxe-faq__item { border-top: 1px solid color-mix(in srgb, currentColor 16%, transparent); }
.luxe-faq__item:last-child { border-bottom: 1px solid color-mix(in srgb, currentColor 16%, transparent); }
.luxe-faq__q { margin: 0; font-size: inherit; font-weight: inherit; }
.luxe-faq__q button {
	width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
	padding: clamp(1rem, 2vw, 1.6rem) 0; background: none; border: 0; text-align: left; cursor: pointer;
	font-family: var(--luxe-font-head); font-size: clamp(1.15rem, 1.9vw, 1.6rem); line-height: 1.25; color: inherit;
}
.luxe-faq__mark { position: relative; flex: none; width: 15px; height: 15px; }
.luxe-faq__mark::before, .luxe-faq__mark::after { content: ""; position: absolute; inset: 50% 0 auto; height: 1px; background: currentColor; transition: transform .35s var(--luxe-ease); }
.luxe-faq__mark::after { transform: rotate(90deg); }
.luxe-faq__item.is-open .luxe-faq__mark::after { transform: rotate(0deg); }
.luxe-faq__a { height: auto; overflow: hidden; transition: height .4s var(--luxe-ease); }
.luxe-faq__item:not(.is-open) .luxe-faq__a { height: 0; }
.luxe-faq__a > div { padding-bottom: clamp(1rem, 2vw, 1.6rem); max-width: 54rem; color: var(--luxe-muted); }
.luxe-faq__a p { margin: 0 0 .8rem; }

/* Stats */
.luxe-stats__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.5rem, 3vw, 3rem); }
.luxe-stat { display: grid; gap: .4rem; align-content: start; }
.luxe-stat__value { font-family: var(--luxe-font-head); font-size: clamp(2.6rem, 6vw, 5rem); line-height: .95; font-variant-numeric: tabular-nums; }
.luxe-stat__label { font-size: .95rem; }
.luxe-stat__text { font-size: .85rem; color: var(--luxe-muted); }
@media (max-width: 680px) { .luxe-stats__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Logos */
.luxe-logos { gap: 1.5rem; }
.luxe-logos__title { margin: 0; font-size: .74rem; letter-spacing: .2em; text-transform: uppercase; color: var(--luxe-muted); }
.luxe-logos__grid { display: flex; flex-wrap: wrap; align-items: center; gap: clamp(1.5rem, 4vw, 4rem); }
.luxe-logos__item { flex: none; }
.luxe-logos__item img { display: block; width: auto; height: 46px; object-fit: contain; filter: grayscale(1); transition: opacity .35s, filter .35s; }
.luxe-logos__item img:hover { opacity: 1 !important; filter: grayscale(0); }
.luxe-logos__viewport { overflow: hidden; }
.luxe-logos__track { display: flex; align-items: center; gap: clamp(1.5rem, 4vw, 4rem); width: max-content; }

/* Testimonials */
.luxe-quotes__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.5rem, 3vw, 2.6rem); }
.luxe-quote { margin: 0; display: grid; gap: 1.2rem; padding: clamp(1.4rem, 3vw, 2.2rem); border: 1px solid color-mix(in srgb, currentColor 14%, transparent); }
.luxe-quote__text { margin: 0; font-family: var(--luxe-font-head); font-size: clamp(1.15rem, 2vw, 1.55rem); line-height: 1.35; }
.luxe-quote__text::before { content: "\201C"; }
.luxe-quote__text::after { content: "\201D"; }
.luxe-quote__by { display: flex; align-items: center; gap: .9rem; font-size: .9rem; }
.luxe-quote__by strong { display: block; font-weight: 500; }
.luxe-quote__by em { display: block; font-style: normal; color: var(--luxe-muted); font-size: .84rem; }
.luxe-quote__img img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; display: block; }
@media (max-width: 680px) { .luxe-quotes__grid { grid-template-columns: 1fr; } }

/* Timeline */
.luxe-timeline__list { list-style: none; margin: 0; padding: 0; display: grid; }
.luxe-timeline__item { display: grid; grid-template-columns: minmax(80px, 140px) 1fr; gap: clamp(1rem, 3vw, 3rem); padding: clamp(1.2rem, 2.5vw, 2rem) 0; border-top: 1px solid color-mix(in srgb, currentColor 16%, transparent); }
.luxe-timeline__item:last-child { border-bottom: 1px solid color-mix(in srgb, currentColor 16%, transparent); }
.luxe-timeline__mark { font-family: var(--luxe-font-head); font-size: clamp(1.3rem, 2.6vw, 2.1rem); line-height: 1; color: var(--luxe-muted); }
.luxe-timeline__body h3 { margin: 0 0 .5rem; font-size: clamp(1.1rem, 1.8vw, 1.5rem); font-weight: 400; }
.luxe-timeline__body p { margin: 0; color: var(--luxe-muted); max-width: 48rem; }
.luxe-tl-cards .luxe-timeline__list { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.5rem; }
.luxe-tl-cards .luxe-timeline__item { grid-template-columns: 1fr; border: 1px solid color-mix(in srgb, currentColor 16%, transparent); padding: clamp(1.2rem, 2vw, 1.8rem); }
@media (max-width: 900px) { .luxe-tl-cards .luxe-timeline__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) {
	.luxe-timeline__item { grid-template-columns: 1fr; gap: .5rem; }
	.luxe-tl-cards .luxe-timeline__list { grid-template-columns: 1fr; }
}

/* Before / after */
.luxe-compare { position: relative; aspect-ratio: 16 / 10; overflow: hidden; touch-action: pan-y; user-select: none; }
.luxe-compare figure { position: absolute; inset: 0; margin: 0; }
.luxe-compare img { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; }
.luxe-compare__over { clip-path: inset(0 0 0 var(--luxe-cmp, 50%)); }
.luxe-compare figcaption {
	position: absolute; bottom: 1rem; padding: .35em .8em; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase;
	background: color-mix(in srgb, var(--luxe-dark) 72%, transparent); color: var(--luxe-paper);
}
.luxe-compare__base figcaption { left: 1rem; }
.luxe-compare__over figcaption { right: 1rem; }
.luxe-compare__handle { position: absolute; top: 0; bottom: 0; left: var(--luxe-cmp, 50%); width: 2px; background: var(--luxe-paper); transform: translateX(-50%); pointer-events: none; }
.luxe-compare__handle::after {
	content: ""; position: absolute; top: 50%; left: 50%; width: 42px; height: 42px; transform: translate(-50%, -50%);
	border: 2px solid var(--luxe-paper); border-radius: 50%; background: color-mix(in srgb, var(--luxe-dark) 35%, transparent);
}
.luxe-compare__range { position: absolute; inset: auto 0 0; width: 100%; height: 100%; opacity: 0; cursor: ew-resize; margin: 0; }

/* CTA band */
.luxe-cta { position: relative; overflow: hidden; gap: 0; }
.luxe-cta__bg { position: absolute; inset: 0; margin: 0; }
.luxe-cta__bg img { width: 100%; height: 100%; object-fit: cover; }
.luxe-cta::before { content: ""; position: absolute; inset: 0; background: rgb(12 12 10 / var(--luxe-shade, .45)); }
.luxe-cta--light::before { background: rgb(242 239 231 / var(--luxe-shade, .45)); }
.luxe-cta__inner { position: relative; display: grid; gap: 1.2rem; justify-items: start; padding: clamp(3rem, 8vw, 7rem) var(--luxe-pad); }
.luxe-cta--dark { color: var(--luxe-paper); }
.luxe-cta--dark:not(.luxe-cta--img) { background: var(--luxe-dark); }
.luxe-cta--light:not(.luxe-cta--img) { background: var(--luxe-paper); color: var(--luxe-ink); }
.luxe-cta:not(.luxe-cta--img)::before { display: none; }
.luxe-cta__kicker { margin: 0; font-size: .74rem; letter-spacing: .2em; text-transform: uppercase; opacity: .75; }
.luxe-cta__title { margin: 0; font-size: clamp(2rem, 4.6vw, 4rem); line-height: 1.02; letter-spacing: -0.02em; max-width: 18ch; }
.luxe-cta__text { margin: 0; max-width: 42ch; opacity: .85; }

/* Feature list */
.luxe-features__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.5rem, 3vw, 3rem); }
.luxe-feature { display: grid; gap: .6rem; align-content: start; }
.luxe-feature__num { font-family: var(--luxe-font-head); font-size: .95rem; color: var(--luxe-muted); }
.luxe-feature__icon img { width: 40px; height: 40px; object-fit: contain; display: block; }
.luxe-feature__title { margin: 0; font-size: clamp(1.05rem, 1.7vw, 1.35rem); font-weight: 400; }
.luxe-feature__text { margin: 0; color: var(--luxe-muted); }
@media (max-width: 860px) { .luxe-features__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .luxe-features__grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   v1.5 — form styling (CF7, Elementor Pro, WPForms, Gravity, Ninja)
   Tokens come from Site Settings > Luxe Theme > Forms.
   ========================================================================== */
.luxe-form, .wpcf7, .elementor-widget-form, .wpforms-container, .gform_wrapper, .nf-form-cont { --luxe-fm-gap-d: 1rem; }

.luxe-form input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.luxe-form select, .luxe-form textarea,
.wpcf7 input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.wpcf7 select, .wpcf7 textarea,
.elementor-field-group .elementor-field-textual,
.wpforms-field input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.wpforms-field select, .wpforms-field textarea,
.gform_wrapper input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.gform_wrapper select, .gform_wrapper textarea,
.nf-form-cont input:not([type="button"]), .nf-form-cont select, .nf-form-cont textarea {
	width: 100%;
	padding: var(--luxe-fm-pad, .85rem) calc(var(--luxe-fm-pad, .85rem) + .1rem);
	background: var(--luxe-fm-bg, transparent);
	color: var(--luxe-fm-fg, inherit);
	border: 1px solid var(--luxe-fm-border, color-mix(in srgb, currentColor 24%, transparent));
	border-radius: var(--luxe-fm-radius, 0);
	font-family: var(--luxe-fm-font, var(--luxe-font-body));
	font-size: var(--luxe-fm-size, .95rem);
	line-height: 1.4;
	transition: border-color .3s, background-color .3s;
}
.luxe-form input:focus, .luxe-form select:focus, .luxe-form textarea:focus,
.wpcf7 input:focus, .wpcf7 select:focus, .wpcf7 textarea:focus,
.elementor-field-group .elementor-field-textual:focus,
.wpforms-field input:focus, .wpforms-field textarea:focus,
.gform_wrapper input:focus, .gform_wrapper textarea:focus {
	outline: none;
	border-color: var(--luxe-fm-focus, var(--luxe-accent));
}
.luxe-field, .wpcf7 .luxe-field { display: block; margin-bottom: var(--luxe-fm-gap, var(--luxe-fm-gap-d)); }
.luxe-field > span,
.wpcf7 label > span:first-child,
.elementor-field-group > label,
.wpforms-field-label, .gform_wrapper .gfield_label, .nf-field-label label {
	display: block; margin-bottom: .45em;
	color: var(--luxe-fm-label, var(--luxe-muted));
	font-family: var(--luxe-fm-font, var(--luxe-font-body));
	font-size: var(--luxe-fm-label-size, .76rem);
	letter-spacing: .12em; text-transform: uppercase;
}
.luxe-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--luxe-fm-gap, var(--luxe-fm-gap-d)); }
@media (max-width: 560px) { .luxe-field-row { grid-template-columns: 1fr; } }
.elementor-field-group, .wpforms-field, .gform_wrapper .gfield { margin-bottom: var(--luxe-fm-gap, var(--luxe-fm-gap-d)); }

.luxe-form input[type="submit"], .wpcf7 input[type="submit"],
.elementor-widget-form .elementor-button[type="submit"],
.wpforms-submit, .gform_wrapper .gform_button, .nf-form-cont input[type="button"] {
	padding: .95em 2em;
	background: var(--luxe-fm-btn-bg, var(--luxe-ink));
	color: var(--luxe-fm-btn-fg, var(--luxe-paper));
	border: 1px solid var(--luxe-fm-btn-bg, var(--luxe-ink));
	border-radius: var(--luxe-fm-btn-radius, 999px);
	font-family: var(--luxe-fm-font, var(--luxe-font-body));
	font-size: .86rem; letter-spacing: .02em; cursor: pointer;
	transition: opacity .3s, transform .3s;
}
.luxe-form input[type="submit"]:hover, .wpcf7 input[type="submit"]:hover, .wpforms-submit:hover { opacity: .85; }
body.luxe-form-wide .luxe-form input[type="submit"],
body.luxe-form-wide .wpcf7 input[type="submit"],
body.luxe-form-wide .wpforms-submit { width: 100%; }
.luxe-form__note { margin: .2rem 0 1rem; font-size: .78rem; color: var(--luxe-muted); }
.wpcf7-not-valid-tip { color: #b3261e; font-size: .78rem; margin-top: .35rem; }
.wpcf7 form .wpcf7-response-output { margin: 1rem 0 0; padding: .8rem 1rem; border-width: 1px; font-size: .88rem; }

/* ---------- Composable header / footer built from containers ---------- */
.e-con.luxe-el-headerbar { --padding-top: 0px; --padding-bottom: 0px; --padding-left: var(--luxe-pad); --padding-right: var(--luxe-pad); min-height: var(--luxe-header-h); }
.e-con.luxe-el-footer { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; --gap: 0px; --row-gap: 0px; }
.e-con.luxe-el-footer-inner { --padding-top: clamp(1rem, 3vw, 2rem); --padding-bottom: 2rem; --padding-left: var(--luxe-pad); --padding-right: var(--luxe-pad); --container-max-width: var(--luxe-max); --gap: clamp(2rem, 5vw, 4rem); --row-gap: clamp(2rem, 5vw, 4rem); }
.luxe-el-footer .luxe-footer__bottom { margin-top: 0; }
.luxe-menu-block { display: grid; gap: .9rem; align-content: start; }
.luxe-menu-row .luxe-footer__menu { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.luxe-social-row .luxe-social { display: flex; flex-wrap: wrap; gap: 1.2rem; }
.elementor-widget-luxe-footer-cta .luxe-footer__cta { margin: 0; }
.elementor-widget-luxe-brand .luxe-brand { display: inline-flex; }
/* The parts inherit the footer's own colours when dropped on the dark block */
.luxe-el-footer { background: var(--luxe-dark); color: var(--luxe-paper); }
