/* ==========================================================================
   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 {
	position: fixed; inset: 0; z-index: 99999;
	display: grid; place-items: center;
	background: var(--luxe-dark); color: var(--luxe-paper);
	animation: luxe-pre-out .9s var(--luxe-ease) 2.1s forwards;
}
.luxe-preloader__inner { text-align: center; }
.luxe-preloader__name { display: block; font-family: var(--luxe-font-head); font-size: clamp(2rem, 4vw, 3.4rem); line-height: 1; }
.luxe-preloader__caption { display: block; margin-top: .9rem; font-size: .85rem; opacity: .7; }
.luxe-preloader__count {
	position: absolute; right: var(--luxe-pad); bottom: calc(var(--luxe-pad) + 6px);
	font-family: var(--luxe-font-head); font-size: clamp(3rem, 8vw, 7rem); line-height: .8;
	font-variant-numeric: tabular-nums;
}
.luxe-preloader__bar { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: color-mix(in srgb, var(--luxe-paper) 15%, transparent); }
.luxe-preloader__bar i { display: block; height: 100%; background: var(--luxe-accent); transform-origin: left; animation: luxe-bar 2s 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 {
	position: fixed; left: var(--luxe-pad); bottom: var(--luxe-pad); z-index: 950;
	max-width: 400px; padding: 1.4rem 1.5rem;
	background: var(--luxe-paper); color: var(--luxe-ink);
	border: 1px solid color-mix(in srgb, var(--luxe-ink) 14%, transparent);
	font-size: .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: 1.35rem; margin-bottom: .3rem; }
.luxe-cookie__actions { display: flex; gap: .5rem; }
@media (max-width: 560px) { .luxe-cookie { left: .75rem; right: .75rem; bottom: .75rem; max-width: none; } }

/* ---------- 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); }
.luxe-marquee__item {
	flex: none; white-space: nowrap;
	font-family: var(--luxe-font-head); font-weight: 400;
	font-size: clamp(3.4rem, 10vw, 10rem); line-height: 1; letter-spacing: -0.03em;
	padding-inline: clamp(1rem, 2.5vw, 2.5rem);
}
.luxe-marquee__item:nth-child(4n + 3) { color: transparent; -webkit-text-stroke: 1px currentColor; }
.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%); transition: transform .5s var(--luxe-ease); }
.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; }
