/*
	Theme Name: Vizyon
	Theme URI: https://vizyon.com
	Description: Vizyon WordPress Theme
	Version: 1.0.0
	Author: Vizyon
	Author URI: https://vizyon.com
	Tags: Custom, Modern

	License: MIT
	License URI: http://opensource.org/licenses/mit-license.php
*/

/*------------------------------------*\
    MAIN
\*------------------------------------*/

/* global box-sizing */
*,
*:after,
*:before {
	-moz-box-sizing:border-box;
	box-sizing:border-box;
	-webkit-font-smoothing:antialiased;
	font-smoothing:antialiased;
	text-rendering:optimizeLegibility;
}
/* html element 62.5% font-size for REM use */
html {
	font-size:62.5%;
}
body {
	font-family:'League Spartan', sans-serif;
	font-weight:300;
	font-size:2rem;
	line-height:1.75;
	color:#333;
	background-color:#fff5ed;
	letter-spacing:0.01em;
}
h1 {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:6.4rem;
	line-height:1.1;
	letter-spacing:-0.02em;
}
h1 strong,
h1 b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
h2 {
	font-family:'League Spartan', sans-serif;
	font-size:4.2rem;
	line-height:1.2;
	letter-spacing:-0.01em;
}
h3 {
	font-family:'League Spartan', sans-serif;
	font-size:3rem;
	line-height:1.3;
	letter-spacing:-0.01em;
}
h4 {
	font-family:'League Spartan', sans-serif;
	font-size:2.6rem;
	line-height:1.35;
}
h5, h6 {
	font-family:'League Spartan', sans-serif;
	font-size:2rem;
	line-height:1.4;
}
/* clear */
.clear:before,
.clear:after {
    content:' ';
    display:table;
}

.clear:after {
    clear:both;
}
.clear {
    *zoom:1;
}
img {
	max-width:100%;
	vertical-align:bottom;
}
a {
	color:#444;
	text-decoration:none;
}
a:hover {
	color:#444;
}
a:focus {
	outline:0;
}
a:hover,
a:active {
	outline:0;
}
input:focus {
	outline:0;
	border:1px solid #04A4CC;
}

/*------------------------------------*\
    STRUCTURE
\*------------------------------------*/

/* wrapper */
.wrapper {
	max-width:1440px;
	width:92%;
	margin:0 auto;
	position:relative;
}
/*------------------------------------*\
    SITE HEADER / NAVIGATION
\*------------------------------------*/

.site-header {
	position:fixed;
	top:0;
	left:0;
	right:0;
	z-index:1000;
	padding:0 60px;
	transition:transform 0.35s ease, background 0.35s ease;
}
.site-header__inner {
	display:flex;
	align-items:center;
	justify-content:space-between;
	max-width:1440px;
	margin:0 auto;
	height:72px;
}

/* Logo */
.site-header__logo {
	flex-shrink:0;
}
.site-header__logo a {
	display:flex;
	align-items:center;
}
.site-header__logo img {
	height:40px;
	width:auto;
}

/* Logo variant visibility */
.site-header .logo-dark {
	display:none;
}
.site-header .logo-light {
	display:block;
}
.site-header--light .logo-dark {
	display:block;
}
.site-header--light .logo-light {
	display:none;
}

/* Nav links */
.site-header__nav ul {
	list-style:none;
	margin:0;
	padding:0;
	display:flex;
	gap:36px;
}
.site-header__nav ul li a {
	font-family:'League Spartan', sans-serif;
	font-size:1.9rem;
	font-weight:400;
	letter-spacing:0.02em;
	text-decoration:none;
	transition:opacity 0.2s ease;
}
.site-header__nav ul li a:hover {
	opacity:0.7;
}

/* CTA button */
.btn-contact {
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	font-weight:500;
	letter-spacing:0.02em;
	padding:10px 24px;
	border-radius:24px;
	border:1px solid;
	text-decoration:none;
	transition:background 0.2s ease, color 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}
.btn-contact:hover {
	opacity:0.8;
}

/*-- Dark variant (default - white text on dark/image bg) --*/
.site-header__nav ul li a {
	color:#fff;
}
.btn-contact {
	color:#fff;
	border-color:rgba(255,255,255,0.5);
	background:transparent;
}

/*-- Light variant (dark text on light bg) --*/
.site-header--light .site-header__nav ul li a {
	color:#222;
}
.site-header--light .btn-contact {
	color:#222;
	border-color:rgba(0,0,0,0.25);
	background:transparent;
}

/*-- Scrolled state (floating bar with blur) --*/
.site-header--scrolled {
	top:12px;
	left:20px;
	right:20px;
	padding:0 28px;
	background:rgba(0,0,0,0.55);
	-webkit-backdrop-filter:blur(20px);
	backdrop-filter:blur(20px);
	border-radius:16px;
}
.site-header--scrolled .site-header__inner {
	height:60px;
}
/* Scrolled state always uses white text/logo */
.site-header--scrolled .logo-light {
	display:block;
}
.site-header--scrolled .logo-dark {
	display:none;
}
.site-header--scrolled .site-header__nav ul li a {
	color:#fff;
}
.site-header--scrolled .btn-contact {
	color:#fff;
	border-color:rgba(255,255,255,0.4);
	background:rgba(255,255,255,0.1);
}

/*-- Hidden (scroll down) --*/
.site-header--hidden {
	transform:translateY(-120%);
}

/* Hamburger — hidden on desktop */
.site-header__burger {
	display:none;
	background:none;
	border:none;
	cursor:pointer;
	padding:6px;
	flex-direction:column;
	justify-content:center;
	gap:5px;
	width:36px;
	height:36px;
	z-index:1001;
}
.site-header__burger-line {
	display:block;
	width:100%;
	height:2px;
	background:#fff;
	border-radius:2px;
	transition:transform 0.3s ease, opacity 0.3s ease;
}
.site-header--light .site-header__burger-line {
	background:#222;
}
.site-header--scrolled .site-header__burger-line {
	background:#fff;
}
/* X state when nav is open */
.site-header__burger.is-active .site-header__burger-line:nth-child(1) {
	transform:translateY(7px) rotate(45deg);
}
.site-header__burger.is-active .site-header__burger-line:nth-child(2) {
	opacity:0;
}
.site-header__burger.is-active .site-header__burger-line:nth-child(3) {
	transform:translateY(-7px) rotate(-45deg);
}
/* When mobile nav is open, burger lines always white */
.site-header__burger.is-active .site-header__burger-line {
	background:#fff;
}

/* ── Mobile Nav Overlay ── */
.mobile-nav {
	position:fixed;
	inset:0;
	z-index:999;
	background:rgba(0,0,0,0.95);
	-webkit-backdrop-filter:blur(30px);
	backdrop-filter:blur(30px);
	display:flex;
	align-items:center;
	justify-content:center;
	opacity:0;
	pointer-events:none;
	transition:opacity 0.4s cubic-bezier(0.16,1,0.3,1);
}
.mobile-nav.is-open {
	opacity:1;
	pointer-events:auto;
}
.mobile-nav__inner {
	text-align:center;
	padding:0 24px;
	width:100%;
	max-width:480px;
}

/* Nav links */
.mobile-nav__list {
	list-style:none;
	margin:0;
	padding:0;
}
.mobile-nav__list li {
	margin:0;
	padding:0;
	overflow:hidden;
}
.mobile-nav__list li a {
	display:block;
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:400;
	font-size:3.6rem;
	line-height:1.3;
	color:#fff;
	text-decoration:none;
	padding:14px 0;
	transition:color 0.2s ease, opacity 0.2s ease;
	opacity:0;
	transform:translateY(30px);
}
.mobile-nav.is-open .mobile-nav__list li a {
	opacity:1;
	transform:translateY(0);
	transition:opacity 0.5s cubic-bezier(0.16,1,0.3,1), transform 0.5s cubic-bezier(0.16,1,0.3,1), color 0.2s ease;
}
/* Stagger entrance */
.mobile-nav.is-open .mobile-nav__list li:nth-child(1) a { transition-delay:0.08s; }
.mobile-nav.is-open .mobile-nav__list li:nth-child(2) a { transition-delay:0.14s; }
.mobile-nav.is-open .mobile-nav__list li:nth-child(3) a { transition-delay:0.20s; }
.mobile-nav.is-open .mobile-nav__list li:nth-child(4) a { transition-delay:0.26s; }
.mobile-nav.is-open .mobile-nav__list li:nth-child(5) a { transition-delay:0.32s; }
.mobile-nav.is-open .mobile-nav__list li:nth-child(6) a { transition-delay:0.38s; }

.mobile-nav__list li a:hover,
.mobile-nav__list li a:focus {
	color:#d4a04a;
}

/* Divider between links */
.mobile-nav__list li + li {
	border-top:1px solid rgba(255,255,255,0.08);
}

/* CTA button */
.mobile-nav__cta {
	display:inline-block;
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	font-weight:500;
	letter-spacing:0.04em;
	color:#fff;
	padding:14px 48px;
	border:1px solid rgba(255,255,255,0.35);
	border-radius:30px;
	text-decoration:none;
	margin-top:36px;
	transition:background 0.2s ease, border-color 0.2s ease;
	opacity:0;
	transform:translateY(20px);
}
.mobile-nav.is-open .mobile-nav__cta {
	opacity:1;
	transform:translateY(0);
	transition:opacity 0.5s cubic-bezier(0.16,1,0.3,1) 0.4s,
			   transform 0.5s cubic-bezier(0.16,1,0.3,1) 0.4s,
			   background 0.2s ease, border-color 0.2s ease;
}
.mobile-nav__cta:hover {
	background:rgba(255,255,255,0.1);
	border-color:rgba(255,255,255,0.6);
}

/* Social row */
.mobile-nav__social {
	display:flex;
	justify-content:center;
	gap:24px;
	margin-top:40px;
	opacity:0;
}
.mobile-nav.is-open .mobile-nav__social {
	opacity:1;
	transition:opacity 0.5s ease 0.5s;
}
.mobile-nav__social a {
	color:rgba(255,255,255,0.5);
	transition:color 0.2s ease;
}
.mobile-nav__social a:hover {
	color:#d4a04a;
}

/* ── Responsive: Show hamburger, hide desktop nav ── */
@media only screen and (max-width:900px) {
	.site-header {
		padding:0 40px;
	}
	.site-header__nav,
	.site-header__cta {
		display:none;
	}
	.site-header__burger {
		display:flex;
	}
	.site-header__inner {
		height:64px;
	}
	.site-header--scrolled .site-header__inner {
		height:56px;
	}
	.site-header__logo img {
		height:34px;
	}
}
@media only screen and (max-width:600px) {
	.site-header {
		padding:0 20px;
	}
	.site-header__inner {
		height:58px;
	}
	.site-header--scrolled {
		left:12px;
		right:12px;
		padding:0 20px;
		border-radius:12px;
	}
	.site-header--scrolled .site-header__inner {
		height:50px;
	}
	.site-header__logo img {
		height:30px;
	}
	.mobile-nav__list li a {
		font-size:2.8rem;
		padding:12px 0;
	}
	.mobile-nav__cta {
		font-size:1.5rem;
		padding:12px 40px;
	}
}

/* Lock body scroll when mobile nav is open */
body.mobile-nav-open {
	overflow:hidden;
}

/* sidebar */
.sidebar {

}
/* footer */
.footer {

}

/*------------------------------------*\
    PAGES
\*------------------------------------*/

/* Page Hero — featured image as full-bleed hero */
.page-hero {
	position:relative;
	width:100vw;
	margin-left:calc(-50vw + 50%);
	height:70vh;
	min-height:480px;
	max-height:800px;
	overflow:hidden;
	display:flex;
	align-items:flex-end;
	justify-content:flex-start;
}
.page-hero__image {
	position:absolute;
	inset:0;
	z-index:1;
}
.page-hero__image img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
}
.page-hero__overlay {
	position:absolute;
	inset:0;
	z-index:2;
	background:linear-gradient(
		to bottom,
		rgba(0,0,0,0.65) 0%,
		rgba(0,0,0,0.25) 40%,
		rgba(0,0,0,0.1) 70%,
		rgba(0,0,0,0.45) 100%
	);
	pointer-events:none;
}
.page-hero__content {
	position:relative;
	z-index:3;
	width:92%;
	max-width:1440px;
	margin:0 auto;
	padding-bottom:64px;
}
.page-hero__title {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:6.4rem;
	line-height:1.1;
	color:#fff;
	margin:0;
	letter-spacing:-0.02em;
	text-shadow:0 2px 24px rgba(0,0,0,0.4), 0 1px 4px rgba(0,0,0,0.3);
	opacity:0;
	transform:translateY(20px);
	animation:pageHeroTitleIn 0.9s cubic-bezier(0.16,1,0.3,1) 0.2s forwards;
}
@keyframes pageHeroTitleIn {
	to { opacity:1; transform:translateY(0); }
}
.page-hero__subtitle {
	font-family:'Inter', sans-serif;
	font-weight:400;
	font-size:2.4rem;
	line-height:1.5;
	color:rgba(255,255,255,0.85);
	margin:16px 0 0;
	max-width:720px;
	text-shadow:0 1px 8px rgba(0,0,0,0.3);
	opacity:0;
	transform:translateY(16px);
	animation:pageHeroTitleIn 0.9s cubic-bezier(0.16,1,0.3,1) 0.35s forwards;
}

/* Page Header — fallback when no featured image */
.page-header {
	max-width:1440px;
	width:92%;
	margin:0 auto;
	padding:140px 0 48px;
}
.page-header__title {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:6.4rem;
	line-height:1.1;
	color:#000;
	margin:0;
	letter-spacing:-0.02em;
}
.page-header__subtitle {
	font-family:'Inter', sans-serif;
	font-weight:400;
	font-size:2.4rem;
	line-height:1.5;
	color:#555;
	margin:16px 0 0;
	max-width:720px;
}

/* Page Content */
.page-content {
	max-width:960px;
	width:90%;
	margin:0 auto;
	padding:64px 0 80px;
}
.page-content p {
	font-size:2rem;
	line-height:1.75;
	color:#333;
	margin-bottom:1.4em;
}
.page-content h2,
.page-content h3,
.page-content h4 {
	color:#000;
	margin-top:2em;
	margin-bottom:0.6em;
}
.page-content img {
	border-radius:12px;
	display:block;
	max-width:100%;
	height:auto;
	margin:2em auto;
}

/* Page Responsive */
@media only screen and (max-width:900px) {
	.page-hero {
		height:55vh;
		min-height:360px;
	}
	.page-hero__content {
		padding-bottom:48px;
	}
	.page-hero__title {
		font-size:4.8rem;
	}
	.page-hero__subtitle {
		font-size:2rem;
	}
	.page-header {
		padding:120px 0 40px;
	}
	.page-header__title {
		font-size:4.8rem;
	}
	.page-header__subtitle {
		font-size:2rem;
	}
}
@media only screen and (max-width:600px) {
	.page-hero {
		height:50vh;
		min-height:320px;
	}
	.page-hero__content {
		padding-bottom:40px;
	}
	.page-hero__title {
		font-size:3.6rem;
	}
	.page-hero__subtitle {
		font-size:1.8rem;
		margin-top:12px;
	}
	.page-header {
		padding:100px 0 32px;
	}
	.page-header__title {
		font-size:3.6rem;
	}
	.page-header__subtitle {
		font-size:1.8rem;
		margin-top:12px;
	}
}

/*------------------------------------*\
    ABOUT PAGE
\*------------------------------------*/

/* ── Hero ── */
.about-hero {
	position:relative;
	height:100vh;
	min-height:580px;
	display:flex;
	align-items:flex-end;
	overflow:hidden;
	/* Break out of .wrapper constraint */
	width:100vw;
	margin-left:calc(-50vw + 50%);
}
.about-hero--no-image {
	height:auto;
	min-height:0;
	padding:160px 0 80px;
	align-items:flex-start;
}
.about-hero__image {
	position:absolute;
	inset:0;
	z-index:1;
}
.about-hero__image img {
	width:100%;
	height:100%;
	object-fit:cover;
}
.about-hero__overlay {
	position:absolute;
	inset:0;
	z-index:2;
	background:
		linear-gradient(to top, rgba(0,0,0,0.72) 0%, rgba(0,0,0,0.18) 55%, rgba(0,0,0,0.06) 100%),
		linear-gradient(135deg, rgba(0,0,0,0.15) 0%, transparent 60%),
		radial-gradient(ellipse at center, transparent 50%, rgba(0,0,0,0.2) 100%);
}
.about-hero__content {
	position:relative;
	z-index:3;
	width:92%;
	max-width:1440px;
	margin:0 auto;
	padding-bottom:80px;
}
.about-hero--no-image .about-hero__content {
	padding-bottom:0;
}
/* Gold accent line above hero title */
.about-hero__content::before {
	content:'';
	display:block;
	width:56px;
	height:2px;
	background:linear-gradient(90deg, #d4a04a, #e8c06a);
	margin-bottom:28px;
	opacity:0;
	transform:scaleX(0);
	transform-origin:left;
	animation:aboutAccentIn 0.8s cubic-bezier(0.16,1,0.3,1) 0.6s forwards;
}
.about-hero--no-image .about-hero__content::before {
	background:linear-gradient(90deg, #d4a04a, #c08830);
}
@keyframes aboutAccentIn {
	to { opacity:1; transform:scaleX(1); }
}
.about-hero__title {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:7.2rem;
	line-height:1.05;
	color:#fff;
	margin:0;
	letter-spacing:-0.025em;
	text-shadow:0 2px 32px rgba(0,0,0,0.45), 0 1px 4px rgba(0,0,0,0.35);
	opacity:0;
	transform:translateY(30px);
	animation:aboutFadeUp 1s cubic-bezier(0.16,1,0.3,1) 0.15s forwards;
}
.about-hero__title b,
.about-hero__title strong {
	font-family:'League Spartan', sans-serif !important;
	font-weight:700 !important;
}
.about-hero--no-image .about-hero__title {
	color:#000;
	text-shadow:none;
}
.about-hero__subtitle {
	font-family:'League Spartan', sans-serif;
	font-weight:300;
	font-size:2.4rem;
	line-height:1.55;
	color:rgba(255,255,255,0.88);
	margin:20px 0 0;
	max-width:720px;
	letter-spacing:0.01em;
	text-shadow:0 1px 12px rgba(0,0,0,0.35);
	opacity:0;
	transform:translateY(20px);
	animation:aboutFadeUp 1s cubic-bezier(0.16,1,0.3,1) 0.4s forwards;
}
.about-hero--no-image .about-hero__subtitle {
	color:#555;
	text-shadow:none;
}
@keyframes aboutFadeUp {
	to { opacity:1; transform:translateY(0); }
}

/* ── Repeating Sections (Origin / Philosophy) ── */
/* Full-width immersive blocks with scroll-driven reveals */
.about-section {
	position:relative;
	overflow:hidden;
	padding:180px 0;
	/* Break out of .wrapper */
	width:100vw;
	margin-left:calc(-50vw + 50%);
}
/* Thin gold border on sections without bg images */
.about-section:not(.about-section--dark) + .about-section:not(.about-section--dark) {
	border-top:1px solid rgba(212,160,74,0.15);
}

/* Background image + overlay */
.about-section__bg {
	position:absolute;
	inset:0;
	z-index:0;
}
.about-section__bg-img {
	width:100%;
	height:100%;
	object-fit:cover;
	will-change:transform;
}
.about-section__bg-overlay {
	position:absolute;
	inset:0;
	background:
		linear-gradient(135deg, rgba(0,0,0,0.82) 0%, rgba(0,0,0,0.6) 50%, rgba(0,0,0,0.7) 100%);
}

/* Inner grid */
.about-section__inner {
	position:relative;
	z-index:1;
	width:92%;
	max-width:1280px;
	margin:0 auto;
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:96px;
	align-items:center;
}
.about-section--img-left .about-section__media {
	order:1;
}
.about-section--img-left .about-section__text {
	order:2;
}
.about-section--img-right .about-section__media {
	order:2;
}
.about-section--img-right .about-section__text {
	order:1;
}

/* Media / Image — dramatic scale-in */
.about-section__media {
	position:relative;
	opacity:0;
	transform:scale(0.88);
	filter:blur(8px);
	transition:opacity 1.4s cubic-bezier(0.16,1,0.3,1),
			   transform 1.4s cubic-bezier(0.16,1,0.3,1),
			   filter 1.4s cubic-bezier(0.16,1,0.3,1);
}
.about-section.is-visible .about-section__media {
	opacity:1;
	transform:scale(1);
	filter:blur(0);
}
.about-section__image-wrap {
	position:relative;
	border-radius:16px;
	overflow:hidden;
	box-shadow:0 40px 100px rgba(0,0,0,0.28), 0 12px 32px rgba(0,0,0,0.18);
	border:1px solid rgba(255,255,255,0.08);
}
.about-section--dark .about-section__image-wrap {
	border-color:rgba(255,255,255,0.12);
	box-shadow:0 40px 100px rgba(0,0,0,0.4), 0 12px 32px rgba(0,0,0,0.25);
}
.about-section__image {
	width:100%;
	display:block;
	transition:transform 1s cubic-bezier(0.16,1,0.3,1);
}
.about-section__image-wrap:hover .about-section__image {
	transform:scale(1.04);
}

/* Decorative corner accent on image */
.about-section__image-accent {
	position:absolute;
	width:72px;
	height:72px;
	border:2px solid rgba(212,160,74,0.35);
	border-radius:4px;
	pointer-events:none;
	opacity:0;
	transition:opacity 1s cubic-bezier(0.16,1,0.3,1) 0.6s;
}
.about-section.is-visible .about-section__image-accent {
	opacity:1;
}
.about-section--img-right .about-section__image-accent {
	bottom:-16px;
	right:-16px;
	border-top:none;
	border-left:none;
}
.about-section--img-left .about-section__image-accent {
	bottom:-16px;
	left:-16px;
	border-top:none;
	border-right:none;
}
.about-section--dark .about-section__image-accent {
	border-color:rgba(212,160,74,0.45);
}

/* Gold accent line */
.about-section__accent {
	width:56px;
	height:2px;
	background:linear-gradient(90deg, #d4a04a, #e8c06a);
	margin-bottom:36px;
	transform:scaleX(0);
	transform-origin:left;
	transition:transform 1s cubic-bezier(0.16,1,0.3,1) 0.3s;
}
.about-section.is-visible .about-section__accent {
	transform:scaleX(1);
}

/* Text side — slide up with stagger */
.about-section__text {
	max-width:560px;
}
.about-section--img-right .about-section__text {
	justify-self:start;
}
.about-section--img-left .about-section__text {
	justify-self:end;
}
.about-section__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:5.2rem;
	line-height:1.1;
	letter-spacing:-0.025em;
	color:#1a1a1a;
	margin:0 0 20px;
	opacity:0;
	transform:translateY(40px);
	transition:opacity 1s cubic-bezier(0.16,1,0.3,1) 0.15s,
			   transform 1s cubic-bezier(0.16,1,0.3,1) 0.15s;
}
.about-section.is-visible .about-section__headline {
	opacity:1;
	transform:translateY(0);
}
.about-section__headline b,
.about-section__headline strong {
	font-family:'League Spartan', sans-serif !important;
	font-weight:700 !important;
}
.about-section__subheadline {
	font-family:'League Spartan', sans-serif;
	font-weight:500;
	font-size:1.4rem;
	line-height:1.6;
	color:#d4a04a;
	margin:0 0 32px;
	text-transform:uppercase;
	letter-spacing:0.18em;
	opacity:0;
	transform:translateY(30px);
	transition:opacity 1s cubic-bezier(0.16,1,0.3,1) 0.25s,
			   transform 1s cubic-bezier(0.16,1,0.3,1) 0.25s;
}
.about-section.is-visible .about-section__subheadline {
	opacity:1;
	transform:translateY(0);
}
.about-section__body {
	font-family:'League Spartan', sans-serif;
	font-weight:300;
	font-size:2rem;
	line-height:1.85;
	color:#444;
	opacity:0;
	transform:translateY(30px);
	transition:opacity 1s cubic-bezier(0.16,1,0.3,1) 0.4s,
			   transform 1s cubic-bezier(0.16,1,0.3,1) 0.4s;
}
.about-section.is-visible .about-section__body {
	opacity:1;
	transform:translateY(0);
}
.about-section__body p {
	margin:0 0 1.4em;
}
.about-section__body p:last-child {
	margin-bottom:0;
}
/* First letter drop-cap for body content */
.about-section__body p:first-child::first-letter {
	font-family:'Goudy Bookletter 1911', serif;
	font-size:3.6em;
	float:left;
	line-height:0.8;
	margin:6px 12px 0 0;
	color:#d4a04a;
}

/* Dark variant — sections with background images */
.about-section--dark .about-section__headline {
	color:#fff !important;
	text-shadow:0 2px 24px rgba(0,0,0,0.4), 0 1px 4px rgba(0,0,0,0.25);
}
.about-section--dark .about-section__subheadline {
	color:#e8c06a !important;
}
.about-section--dark .about-section__body p:first-child::first-letter {
	color:#e8c06a !important;
}
.about-section--dark .about-section__text,
.about-section--dark .about-section__text *,
.about-section--dark .about-section__body,
.about-section--dark .about-section__body * {
	color:#fff !important;
	font-weight:350;
}
.about-section--dark .about-section__accent {
	background:linear-gradient(90deg, #d4a04a, #e8c06a);
}

/* No-image single-column layout */
.about-section__inner:not(:has(.about-section__media)) {
	grid-template-columns:1fr;
	max-width:800px;
}

/* ── Team Section ── */
.about-team {
	padding:120px 0 140px;
	background-color:#fff5ed;
	/* Break out of .wrapper */
	width:100vw;
	margin-left:calc(-50vw + 50%);
}
.about-team__header {
	width:92%;
	max-width:1280px;
	margin:0 auto 72px;
	text-align:center;
	opacity:0;
	transform:translateY(40px);
	transition:opacity 0.8s cubic-bezier(0.16,1,0.3,1), transform 0.8s cubic-bezier(0.16,1,0.3,1);
}
/* Gold accent line under team header */
.about-team__header::after {
	content:'';
	display:block;
	width:48px;
	height:2px;
	background:linear-gradient(90deg, #d4a04a, #e8c06a);
	margin:36px auto 0;
}
.about-team.is-visible .about-team__header {
	opacity:1;
	transform:translateY(0);
}
.about-team__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:4.8rem;
	line-height:1.15;
	letter-spacing:-0.02em;
	color:#1a1a1a;
	margin:0 0 16px;
}
.about-team__headline b,
.about-team__headline strong {
	font-family:'League Spartan', sans-serif !important;
	font-weight:700 !important;
}
.about-team__subheadline {
	font-family:'League Spartan', sans-serif;
	font-weight:300;
	font-size:2.2rem;
	line-height:1.6;
	color:#555;
	margin:0 auto;
	max-width:680px;
}

/* Card Grid */
.about-team__grid {
	width:92%;
	max-width:1280px;
	margin:0 auto;
	display:grid;
	grid-template-columns:repeat(4, 1fr);
	gap:32px;
}
.about-team__card {
	display:flex;
	flex-direction:column;
	background:none;
	border:none;
	padding:0;
	cursor:pointer;
	text-align:left;
	opacity:0;
	transform:translateY(40px);
	transition:opacity 0.7s cubic-bezier(0.16,1,0.3,1),
			   transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
.about-team__card.is-visible {
	opacity:1;
	transform:translateY(0);
}

/* Card Photo */
.about-team__photo {
	position:relative;
	border-radius:12px;
	overflow:hidden;
	aspect-ratio:3/4;
	margin-bottom:20px;
	box-shadow:0 8px 32px rgba(0,0,0,0.12);
	transition:box-shadow 0.6s cubic-bezier(0.16,1,0.3,1);
}
.about-team__card:hover .about-team__photo {
	box-shadow:0 20px 56px rgba(0,0,0,0.22);
}
.about-team__photo img {
	width:100%;
	height:100%;
	object-fit:cover;
	transition:transform 0.8s cubic-bezier(0.16,1,0.3,1),
			   filter 0.8s cubic-bezier(0.16,1,0.3,1);
}
.about-team__card:hover .about-team__photo img {
	transform:scale(1.06);
	filter:brightness(0.82);
}

/* Hover overlay */
.about-team__photo-overlay {
	position:absolute;
	inset:0;
	display:flex;
	align-items:flex-end;
	justify-content:center;
	padding-bottom:28px;
	background:linear-gradient(to top, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.1) 40%, transparent 60%);
	opacity:0;
	transition:opacity 0.5s cubic-bezier(0.16,1,0.3,1);
}
.about-team__card:hover .about-team__photo-overlay {
	opacity:1;
}
.about-team__view-label {
	font-family:'League Spartan', sans-serif;
	font-weight:500;
	font-size:1.3rem;
	letter-spacing:0.14em;
	text-transform:uppercase;
	color:#fff;
	padding:10px 24px;
	border:1px solid rgba(212,160,74,0.6);
	border-radius:24px;
	backdrop-filter:blur(6px);
	-webkit-backdrop-filter:blur(6px);
	background:rgba(212,160,74,0.12);
	transition:border-color 0.3s ease, background 0.3s ease, transform 0.3s ease;
	transform:translateY(6px);
}
.about-team__card:hover .about-team__view-label {
	border-color:#d4a04a;
	background:rgba(212,160,74,0.2);
	transform:translateY(0);
}

/* Card Info */
.about-team__card-info {
	padding:0 4px;
}
.about-team__name {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:2.4rem;
	line-height:1.3;
	color:#1a1a1a;
	margin:0 0 6px;
	transition:color 0.3s ease;
}
.about-team__card:hover .about-team__name {
	color:#d4a04a;
}
.about-team__title {
	display:block;
	font-family:'League Spartan', sans-serif;
	font-weight:400;
	font-size:1.3rem;
	line-height:1.4;
	color:#9a958f;
	text-transform:uppercase;
	letter-spacing:0.14em;
}

/* ── Team Modal ── */
.about-team__modal {
	position:fixed;
	inset:0;
	z-index:9999;
	display:flex;
	align-items:center;
	justify-content:center;
	pointer-events:none;
	opacity:0;
	transition:opacity 0.45s cubic-bezier(0.16,1,0.3,1);
}
.about-team__modal[aria-hidden="false"] {
	pointer-events:auto;
	opacity:1;
}
.about-team__modal-backdrop {
	position:absolute;
	inset:0;
	background:rgba(10,10,10,0.7);
	backdrop-filter:blur(12px);
	-webkit-backdrop-filter:blur(12px);
}
.about-team__modal-container {
	position:relative;
	width:92%;
	max-width:1080px;
	max-height:88vh;
	background:#fff;
	border-radius:20px;
	overflow:hidden;
	box-shadow:0 48px 120px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,255,255,0.06);
	transform:translateY(32px) scale(0.96);
	transition:transform 0.55s cubic-bezier(0.16,1,0.3,1);
}
.about-team__modal[aria-hidden="false"] .about-team__modal-container {
	transform:translateY(0) scale(1);
}

/* Close button */
.about-team__modal-close {
	position:absolute;
	top:24px;
	right:24px;
	z-index:2;
	width:48px;
	height:48px;
	border:1px solid rgba(0,0,0,0.08);
	background:rgba(255,255,255,0.9);
	backdrop-filter:blur(4px);
	-webkit-backdrop-filter:blur(4px);
	border-radius:50%;
	cursor:pointer;
	display:flex;
	align-items:center;
	justify-content:center;
	transition:background 0.3s ease, transform 0.3s ease, border-color 0.3s ease;
	color:#333;
}
.about-team__modal-close:hover {
	background:#fff;
	border-color:rgba(0,0,0,0.15);
	transform:rotate(90deg);
}

/* Inner layout — text left, photo right */
.about-team__modal-inner {
	display:grid;
	grid-template-columns:1fr 1fr;
	min-height:480px;
}
.about-team__modal-text {
	padding:72px 60px;
	display:flex;
	flex-direction:column;
	justify-content:center;
	overflow-y:auto;
	max-height:88vh;
}
/* Gold accent in modal */
.about-team__modal-text::before {
	content:'';
	display:block;
	width:40px;
	height:2px;
	background:linear-gradient(90deg, #d4a04a, #e8c06a);
	margin-bottom:28px;
	flex-shrink:0;
}
.about-team__modal-name {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:4.8rem;
	line-height:1.08;
	letter-spacing:-0.025em;
	color:#1a1a1a;
	margin:0 0 10px;
}
.about-team__modal-title {
	display:block;
	font-family:'League Spartan', sans-serif;
	font-weight:500;
	font-size:1.3rem;
	line-height:1.4;
	color:#d4a04a;
	text-transform:uppercase;
	letter-spacing:0.16em;
	margin-bottom:36px;
}
.about-team__modal-bio {
	font-family:'League Spartan', sans-serif;
	font-weight:300;
	font-size:1.9rem;
	line-height:1.8;
	color:#444;
}
.about-team__modal-bio p {
	margin:0 0 1.2em;
}
.about-team__modal-bio p:last-child {
	margin-bottom:0;
}

/* Modal photo */
.about-team__modal-photo {
	position:relative;
	overflow:hidden;
}
.about-team__modal-photo img {
	width:100%;
	height:100%;
	object-fit:cover;
}

/* Body lock when modal is open */
body.team-modal-open {
	overflow:hidden;
}

/* ── About Responsive ── */
@media only screen and (max-width:900px) {
	.about-hero {
		height:80vh;
		min-height:420px;
	}
	.about-hero--no-image {
		padding:120px 0 60px;
	}
	.about-hero__content {
		padding-bottom:56px;
	}
	.about-hero__title {
		font-size:5rem;
	}
	.about-hero__subtitle {
		font-size:2rem;
	}
	.about-section {
		padding:100px 0;
	}
	.about-section__inner {
		grid-template-columns:1fr;
		gap:48px;
	}
	.about-section--img-left .about-section__media,
	.about-section--img-right .about-section__media {
		order:1;
	}
	.about-section--img-left .about-section__text,
	.about-section--img-right .about-section__text {
		order:2;
		justify-self:start;
	}
	.about-section__headline {
		font-size:4rem;
	}
	.about-section__text {
		max-width:100%;
	}
	.about-section__image-wrap {
		box-shadow:0 24px 56px rgba(0,0,0,0.2), 0 8px 20px rgba(0,0,0,0.1);
	}
	.about-section__image-accent {
		width:56px;
		height:56px;
	}
	.about-section__body p:first-child::first-letter {
		font-size:3.2em;
		margin:4px 10px 0 0;
	}
	.about-team {
		padding:80px 0 100px;
	}
	.about-team__headline {
		font-size:3.8rem;
	}
	.about-team__grid {
		grid-template-columns:repeat(2, 1fr);
		gap:32px 24px;
	}
	.about-team__modal-inner {
		grid-template-columns:1fr;
	}
	.about-team__modal-photo {
		max-height:340px;
		order:-1;
	}
	.about-team__modal-text {
		padding:44px 36px;
	}
	.about-team__modal-name {
		font-size:3.6rem;
	}
	.about-team__modal-container {
		max-height:92vh;
		overflow-y:auto;
	}
}
@media only screen and (max-width:600px) {
	.about-hero {
		height:70vh;
		min-height:360px;
	}
	.about-hero--no-image {
		padding:100px 0 48px;
	}
	.about-hero__content {
		padding-bottom:48px;
	}
	.about-hero__content::before {
		width:40px;
		margin-bottom:20px;
	}
	.about-hero__title {
		font-size:3.8rem;
	}
	.about-hero__subtitle {
		font-size:1.8rem;
		margin-top:14px;
	}
	.about-section {
		padding:80px 0;
	}
	.about-section__inner {
		gap:36px;
	}
	.about-section__headline {
		font-size:3.2rem;
	}
	.about-section__subheadline {
		font-size:1.2rem;
		letter-spacing:0.14em;
	}
	.about-section__body {
		font-size:1.8rem;
	}
	.about-section__body p:first-child::first-letter {
		font-size:2.8em;
		margin:3px 8px 0 0;
	}
	.about-section__image-wrap {
		box-shadow:0 16px 40px rgba(0,0,0,0.18);
	}
	.about-section__image-accent {
		width:40px;
		height:40px;
		bottom:-10px !important;
	}
	.about-section--img-right .about-section__image-accent { right:-10px; }
	.about-section--img-left .about-section__image-accent { left:-10px; }
	.about-team {
		padding:64px 0 80px;
	}
	.about-team__header {
		margin-bottom:48px;
	}
	.about-team__header::after {
		width:36px;
		margin-top:28px;
	}
	.about-team__headline {
		font-size:3.2rem;
	}
	.about-team__subheadline {
		font-size:1.8rem;
	}
	.about-team__grid {
		grid-template-columns:repeat(2, 1fr);
		gap:24px 16px;
	}
	.about-team__name {
		font-size:1.9rem;
	}
	.about-team__title {
		font-size:1.1rem;
	}
	.about-team__modal-text {
		padding:32px 24px;
	}
	.about-team__modal-text::before {
		width:32px;
		margin-bottom:20px;
	}
	.about-team__modal-name {
		font-size:3rem;
	}
	.about-team__modal-bio {
		font-size:1.7rem;
	}
	.about-team__modal-close {
		top:16px;
		right:16px;
		width:40px;
		height:40px;
	}
}

/* ── About Page: Testimonials + Consultation full-width ── */
#about-testimonials {
	width:100vw;
	margin-left:calc(-50vw + 50%);
	padding:60px 40px;
}
#about-consultation {
	width:100vw;
	margin-left:calc(-50vw + 50%);
}
@media only screen and (max-width:900px) {
	#about-testimonials {
		padding:40px 24px;
	}
}
@media only screen and (max-width:600px) {
	#about-testimonials {
		padding:32px 16px;
	}
}

/*------------------------------------*\
    CONTACT PAGE – FULL BG
\*------------------------------------*/

.contact-page {
	position:relative;
	min-height:100vh;
}

/* Fixed full-viewport background */
.contact-bg {
	position:fixed;
	inset:0;
	z-index:0;
}
.contact-bg__image {
	position:absolute;
	inset:0;
}
.contact-bg__image img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
}
.contact-bg__overlay {
	position:absolute;
	inset:0;
	background:rgba(0,0,0,0.55);
	pointer-events:none;
}

/* Content layer */
.contact-content {
	position:relative;
	z-index:1;
	display:flex;
	align-items:center;
	justify-content:center;
	min-height:100vh;
	padding:160px 0 120px;
}
.contact-content__inner {
	max-width:1440px;
	width:92%;
}
.contact-content__title {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:6.4rem;
	line-height:1.1;
	color:#fff;
	margin:0 0 48px;
	letter-spacing:-0.02em;
	text-shadow:0 2px 24px rgba(0,0,0,0.4), 0 1px 4px rgba(0,0,0,0.3);
	opacity:0;
	transform:translateY(20px);
	animation:pageHeroTitleIn 0.9s cubic-bezier(0.16,1,0.3,1) 0.2s forwards;
}
.contact-content__body {
	color:#fff;
}
.contact-content__body p {
	font-size:2rem;
	line-height:1.75;
	color:rgba(255,255,255,0.9);
	margin-bottom:1.4em;
}
.contact-content__body h2,
.contact-content__body h3,
.contact-content__body h4 {
	color:#fff;
	margin-top:2em;
	margin-bottom:0.6em;
}
.contact-content__body a {
	color:#d4a04a;
	text-decoration:underline;
	text-underline-offset:3px;
	transition:color 0.2s ease;
}
.contact-content__body a:hover {
	color:#e6b86a;
}

/* Make footer-hero see-through so the fixed bg image shows through,
   but keep the same warm gradient — just swap beige top for transparent */
.has-fullpage-bg .footer-hero {
	background-color:transparent;
}
.has-fullpage-bg .footer-hero__gradient {
	height:100%;
	background:linear-gradient(
		to bottom,
		transparent 0%,
		#f5e6d3 10%,
		#d4a574 25%,
		#8b5a3c 40%,
		#3d2317 55%,
		#000 70%
	);
}
/* Hide the beige body background on contact page */
.has-fullpage-bg {
	background-color:#000;
}
/* Lift footer above the fixed background on contact page */
.has-fullpage-bg .footer {
	position:relative;
	z-index:2;
}

/* WPForms / CF7 styling on contact page */
.contact-content__body .wpcf7-form-control,
.contact-content__body input[type="text"],
.contact-content__body input[type="email"],
.contact-content__body input[type="tel"],
.contact-content__body textarea,
.contact-content__body select {
	width:100%;
	padding:14px 18px;
	font-family:'League Spartan', sans-serif;
	font-size:1.8rem;
	font-weight:300;
	color:#fff;
	background:rgba(255,255,255,0.1);
	border:1px solid rgba(255,255,255,0.25);
	border-radius:8px;
	outline:none;
	transition:border-color 0.2s ease, background 0.2s ease;
	box-sizing:border-box;
}
.contact-content__body input[type="text"]:focus,
.contact-content__body input[type="email"]:focus,
.contact-content__body input[type="tel"]:focus,
.contact-content__body textarea:focus,
.contact-content__body select:focus {
	border-color:rgba(212,160,74,0.6);
	background:rgba(255,255,255,0.15);
}
.contact-content__body input::placeholder,
.contact-content__body textarea::placeholder {
	color:rgba(255,255,255,0.5);
}
.contact-content__body input[type="submit"],
.contact-content__body button[type="submit"] {
	display:inline-block;
	padding:16px 48px;
	font-family:'League Spartan', sans-serif;
	font-size:1.8rem;
	font-weight:500;
	color:#000;
	background:#d4a04a;
	border:none;
	border-radius:8px;
	cursor:pointer;
	transition:background 0.2s ease, transform 0.15s ease;
	letter-spacing:0.02em;
}
.contact-content__body input[type="submit"]:hover,
.contact-content__body button[type="submit"]:hover {
	background:#e6b86a;
	transform:translateY(-1px);
}
.contact-content__body label {
	display:block;
	font-size:1.6rem;
	font-weight:400;
	color:rgba(255,255,255,0.75);
	margin-bottom:8px;
	letter-spacing:0.02em;
}

@media only screen and (max-width:900px) {
	.contact-content {
		padding:140px 0 100px;
	}
	.contact-content__title {
		font-size:4.8rem;
	}
}
@media only screen and (max-width:600px) {
	.contact-content {
		padding:120px 0 80px;
		align-items:flex-start;
	}
	.contact-content__title {
		font-size:3.6rem;
		margin-bottom:32px;
	}
}

/*------------------------------------*\
    BLOG – READING PROGRESS BAR
\*------------------------------------*/

.blog-progress {
	position:fixed;
	top:0;
	left:0;
	right:0;
	z-index:1100;
	height:3px;
	background:transparent;
}
.blog-progress__bar {
	height:100%;
	width:0;
	background:linear-gradient(90deg, #04A4CC, #0ad4ff);
	transition:width 0.1s linear;
	will-change:width;
}

/*------------------------------------*\
    BLOG – SCROLL REVEAL ANIMATIONS
\*------------------------------------*/

.reveal {
	opacity:0;
	transform:translateY(28px);
	transition:opacity 0.7s cubic-bezier(0.16,1,0.3,1),
	           transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
.reveal.revealed {
	opacity:1;
	transform:translateY(0);
}

/*------------------------------------*\
    BLOG SINGLE
\*------------------------------------*/

.blog-single {
	max-width:960px;
	margin:0 auto;
	padding:120px 20px 60px;
}

/* Title — entrance animation */
.blog-post__title {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
	font-size:5.6rem;
	line-height:1.15;
	color:#000;
	text-align:center;
	margin:0 0 24px;
	letter-spacing:-0.02em;
	opacity:0;
	transform:translateY(20px);
	animation:blogTitleIn 0.9s cubic-bezier(0.16,1,0.3,1) 0.15s forwards;
}
@keyframes blogTitleIn {
	to { opacity:1; transform:translateY(0); }
}

/* Meta row — entrance animation */
.blog-post__meta {
	display:flex;
	align-items:center;
	justify-content:space-between;
	margin-bottom:32px;
	padding-bottom:16px;
	border-bottom:1px solid rgba(0,0,0,0.08);
	opacity:0;
	animation:blogFadeIn 0.7s ease 0.4s forwards;
}
@keyframes blogFadeIn {
	to { opacity:1; }
}
.blog-post__social {
	display:flex;
	gap:16px;
}
.blog-post__social a {
	color:#333;
	transition:opacity 0.2s ease, transform 0.2s ease;
}
.blog-post__social a:hover {
	opacity:0.6;
	transform:translateY(-1px);
}
.blog-post__date {
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	color:#9a958f;
}

/* Featured image — parallax container */
.blog-post__featured-image {
	margin-bottom:48px;
	border-radius:16px;
	overflow:hidden;
	opacity:0;
	animation:blogImageIn 1s cubic-bezier(0.16,1,0.3,1) 0.5s forwards;
}
@keyframes blogImageIn {
	from { opacity:0; transform:scale(0.97); }
	to   { opacity:1; transform:scale(1); }
}
.blog-post__featured-image img {
	width:100%;
	height:auto;
	display:block;
	will-change:transform;
	transition:transform 0.05s linear;
}

/* Post content — narrower than title/featured image */
.blog-post__content {
	font-family:'League Spartan', sans-serif;
	font-size:2rem;
	line-height:1.75;
	color:#333;
	max-width:720px;
	margin:0 auto;
	letter-spacing:0.01em;
}
.blog-post__content p:first-of-type {
	font-size:2.4rem;
	font-weight:600;
	line-height:1.65;
	color:#000;
}
.blog-post__content h2,
.blog-post__content h3,
.blog-post__content h4 {
	color:#000;
	margin-top:2em;
	margin-bottom:0.6em;
}
.blog-post__content p {
	margin-bottom:1.4em;
}
.blog-post__content ul,
.blog-post__content ol {
	margin-bottom:1.4em;
	padding-left:1.6em;
}
.blog-post__content li {
	margin-bottom:0.5em;
}

/* Inline images with radius */
.blog-post__content img {
	border-radius:12px;
	display:block;
	max-width:100%;
	height:auto;
	margin:2em auto;
}

/* WP captions */
.blog-post__content .wp-caption {
	background:transparent !important;
	border:none !important;
	max-width:100% !important;
	padding:0 !important;
	margin:2em auto;
	width:100%;
}
.blog-post__content .wp-caption img {
	margin:0;
	border-radius:12px;
	max-width:100% !important;
	width:100% !important;
}
.blog-post__content .wp-caption .wp-caption-text {
	font-size:1.4rem;
	line-height:1.4;
	color:#fff;
	background:#000;
	border-radius:12px;
	padding:10px 16px;
	margin:8px 0 0 0;
	text-align:center;
}

/* Figure captions (block editor) */
.blog-post__content figure {
	margin:2em auto;
	max-width:100%;
}
.blog-post__content figure img {
	margin:0;
	border-radius:12px;
}
.blog-post__content figure figcaption {
	font-size:1.4rem;
	line-height:1.4;
	color:#fff;
	background:#000;
	border-radius:12px;
	padding:10px 16px;
	margin:8px 0 0 0;
	text-align:center;
}

/* Pull quotes / Blockquotes */
.blog-post__content blockquote {
	position:relative;
	max-width:600px;
	margin:3em auto;
	padding:0 0 0 32px;
	border-left:3px solid #04A4CC;
	font-family:'Goudy Bookletter 1911', serif;
	font-size:2.8rem;
	line-height:1.5;
	color:#000;
	font-style:italic;
}
.blog-post__content blockquote p {
	font-size:inherit;
	font-weight:inherit;
	color:inherit;
}
.blog-post__content blockquote cite {
	display:block;
	margin-top:12px;
	font-family:'League Spartan', sans-serif;
	font-size:1.5rem;
	font-style:normal;
	color:#9a958f;
	letter-spacing:0.03em;
	text-transform:uppercase;
}

/* Horizontal rule / section divider */
.blog-post__content hr {
	border:none;
	height:1px;
	background:linear-gradient(90deg, transparent, rgba(0,0,0,0.12), transparent);
	margin:3em auto;
	max-width:200px;
}

/*------------------------------------*\
    RELATED ARTICLES
\*------------------------------------*/

.blog-related {
	max-width:780px;
	margin:80px auto 0;
	padding-top:48px;
	border-top:1px solid rgba(0,0,0,0.08);
}
.blog-related__heading {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:700;
	font-size:3.6rem;
	text-align:center;
	color:#000;
	margin-bottom:36px;
}
.blog-related__grid {
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:32px;
}
.blog-related__card {
	text-decoration:none;
	color:inherit;
	transition:transform 0.35s cubic-bezier(0.16,1,0.3,1), opacity 0.2s ease;
}
.blog-related__card:hover {
	transform:translateY(-4px);
}
.blog-related__image {
	margin-bottom:14px;
	border-radius:12px;
	overflow:hidden;
}
.blog-related__image img {
	width:100%;
	height:200px;
	object-fit:cover;
	display:block;
	transition:transform 0.5s cubic-bezier(0.16,1,0.3,1);
}
.blog-related__card:hover .blog-related__image img {
	transform:scale(1.04);
}
.blog-related__title {
	font-family:'League Spartan', sans-serif;
	font-size:1.8rem;
	font-weight:600;
	color:#000;
	margin-bottom:4px;
	line-height:1.3;
}
.blog-related__date {
	font-family:'League Spartan', sans-serif;
	font-size:1.5rem;
	color:#9a958f;
}

/* Responsive */
@media only screen and (max-width:600px) {
	.blog-post__title {
		font-size:3.6rem;
	}
	.blog-post__content blockquote {
		font-size:2.2rem;
		margin:2em 0;
	}
	.blog-related__grid {
		grid-template-columns:1fr;
	}
}

/*------------------------------------*\
    BLOG ARCHIVE
\*------------------------------------*/

.blog-archive {
	padding-top:100px;
}

/* Hero / Title */
.blog-archive__hero {
	text-align:center;
	padding:40px 20px 60px;
}
.blog-archive__title {
	font-family:'League Spartan', sans-serif;
	font-size:9rem;
	font-weight:700;
	line-height:1.05;
	color:#000;
	margin:0;
	letter-spacing:-0.03em;
}

/* Featured post */
.blog-archive__featured {
	max-width:960px;
	margin:0 auto;
	padding:0 20px 60px;
}
.blog-featured {
	display:grid;
	grid-template-columns:2fr 1fr;
	gap:48px;
	align-items:stretch;
	text-decoration:none;
	color:inherit;
}
.blog-featured__image {
	border-radius:12px;
	overflow:hidden;
}
.blog-featured__image img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	transition:transform 0.5s cubic-bezier(0.16,1,0.3,1);
}
.blog-featured:hover .blog-featured__image img {
	transform:scale(1.03);
}
.blog-featured__content {
	padding:20px 0;
}
.blog-featured__title {
	font-family:'League Spartan', sans-serif;
	font-size:3.2rem;
	font-weight:700;
	line-height:1.25;
	color:#000;
	margin:0 0 16px;
}
.blog-featured__excerpt {
	font-size:1.8rem;
	line-height:1.65;
	color:#555;
	margin:0 0 16px;
}
.blog-featured__date {
	font-size:1.6rem;
	color:#9a958f;
}

/* Latest articles section */
.blog-archive__latest {
	max-width:960px;
	margin:0 auto;
	padding:0 20px 80px;
}
.blog-archive__section-title {
	font-family:'League Spartan', sans-serif;
	font-size:3.2rem;
	font-weight:700;
	color:#000;
	margin:0 0 32px;
}

/* Blog grid */
.blog-grid {
	display:grid;
	grid-template-columns:repeat(2, 1fr);
	gap:40px 32px;
}
.blog-card {
	text-decoration:none;
	color:inherit;
	transition:transform 0.35s cubic-bezier(0.16,1,0.3,1);
}
.blog-card:hover {
	transform:translateY(-4px);
}
.blog-card__image {
	border-radius:12px;
	overflow:hidden;
	margin-bottom:16px;
}
.blog-card__image img {
	width:100%;
	height:220px;
	object-fit:cover;
	display:block;
	transition:transform 0.5s cubic-bezier(0.16,1,0.3,1);
}
.blog-card:hover .blog-card__image img {
	transform:scale(1.04);
}
.blog-card__title {
	font-family:'League Spartan', sans-serif;
	font-size:2rem;
	font-weight:600;
	line-height:1.35;
	color:#000;
	margin:0 0 6px;
}
.blog-card__date {
	font-size:1.5rem;
	color:#9a958f;
	display:block;
}

/* Load more button */
.blog-archive__load-more {
	text-align:center;
	margin-top:48px;
}
.btn-load-more {
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	font-weight:500;
	color:#000;
	background:transparent;
	border:1px solid rgba(0,0,0,0.2);
	border-radius:30px;
	padding:14px 32px;
	cursor:pointer;
	transition:background 0.2s ease, border-color 0.2s ease;
}
.btn-load-more:hover {
	background:rgba(0,0,0,0.04);
	border-color:rgba(0,0,0,0.35);
}
.btn-load-more:disabled {
	opacity:0.5;
	cursor:not-allowed;
}
.btn-load-more.loading {
	pointer-events:none;
}

/* Blog archive responsive */
@media only screen and (max-width:768px) {
	.blog-archive__title {
		font-size:6rem;
	}
	.blog-featured {
		grid-template-columns:1fr;
		gap:24px;
	}
	.blog-featured__title {
		font-size:2.6rem;
	}
	.blog-grid {
		grid-template-columns:1fr;
		gap:32px;
	}
}

/*------------------------------------*\
    PORTFOLIO SINGLE
\*------------------------------------*/

.portfolio-single {
	max-width:1440px;
	width:92%;
	margin:0 auto;
	padding:120px 0 60px;
}

/* Title */
.portfolio-project__title {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:6.4rem;
	line-height:1.1;
	color:#000;
	text-align:center;
	margin:0 0 48px;
	letter-spacing:-0.02em;
	opacity:0;
	transform:translateY(20px);
	animation:portfolioTitleIn 0.9s cubic-bezier(0.16,1,0.3,1) 0.15s forwards;
}
@keyframes portfolioTitleIn {
	to { opacity:1; transform:translateY(0); }
}

/* ── Gallery ── */
.portfolio-gallery {
	display:grid;
	grid-template-columns:3fr 1fr;
	grid-template-rows:1fr;
	gap:12px;
	margin-bottom:60px;
	opacity:0;
	animation:portfolioGalleryIn 1s cubic-bezier(0.16,1,0.3,1) 0.4s forwards;
}
@keyframes portfolioGalleryIn {
	from { opacity:0; transform:translateY(16px); }
	to   { opacity:1; transform:translateY(0); }
}
.portfolio-gallery__main {
	display:block;
	border-radius:12px;
	overflow:hidden;
	aspect-ratio:12/9;
}
.portfolio-gallery__main img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	transition:transform 0.5s cubic-bezier(0.16,1,0.3,1);
}
.portfolio-gallery__main:hover img {
	transform:scale(1.03);
}
.portfolio-gallery__thumbs {
	display:flex;
	flex-direction:column;
	gap:8px;
	min-height:0;
	overflow:hidden;
}
.portfolio-gallery__thumb {
	display:block;
	border-radius:8px;
	overflow:hidden;
	cursor:pointer;
	flex:1 1 0;
	min-height:0;
}
.portfolio-gallery__thumb img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	transition:transform 0.5s cubic-bezier(0.16,1,0.3,1);
}
.portfolio-gallery__thumb:hover img {
	transform:scale(1.04);
}
.portfolio-gallery__hidden {
	display:none;
}

/* ── Project Info Row ── */
.portfolio-info {
	display:grid;
	grid-template-columns:2fr 1fr;
	gap:48px;
	align-items:center;
	margin-bottom:60px;
}
.portfolio-info__content {
	padding-right:20px;
}
.portfolio-info__headline {
	font-family:'League Spartan', sans-serif;
	font-size:3.2rem;
	font-weight:700;
	line-height:1.2;
	color:#000;
	margin:0 0 16px;
}
.portfolio-info__description {
	font-family:'League Spartan', sans-serif;
	font-size:1.9rem;
	line-height:1.7;
	color:#555;
	margin:0;
}
.portfolio-info__action {
	display:flex;
	justify-content:flex-end;
}
.portfolio-info__btn {
	display:inline-flex;
	align-items:center;
	gap:16px;
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	font-weight:500;
	color:#fff;
	background:#000;
	border-radius:24px;
	padding:14px 16px 14px 28px;
	text-decoration:none;
	transition:background 0.2s ease, transform 0.2s ease;
	white-space:nowrap;
}
.portfolio-info__btn:hover {
	background:#222;
	transform:translateY(-2px);
	color:#fff;
}
.portfolio-info__btn-icon {
	display:inline-flex;
	align-items:center;
	justify-content:center;
	width:36px;
	height:36px;
	border-radius:50%;
	background:#d4a04a;
	color:#000;
	flex-shrink:0;
}

/* ── Video + Form Row ── */
.portfolio-media {
	display:grid;
	grid-template-columns:2fr 1fr;
	gap:48px;
	margin-bottom:80px;
	align-items:start;
}
.portfolio-media__video {
	border-radius:12px;
	overflow:hidden;
	background:#000;
}
.portfolio-media__video iframe {
	width:100%;
	aspect-ratio:16/9;
	height:auto;
	display:block;
	border:none;
}

/* Static consultation form */
.portfolio-media__form {
	background:#f8f6f3;
	border-radius:12px;
	padding:32px 28px;
}
.portfolio-form__title {
	font-family:'League Spartan', sans-serif;
	font-size:2.4rem;
	font-weight:600;
	color:#000;
	margin:0 0 24px;
}
.portfolio-form__field {
	margin-bottom:16px;
}
.portfolio-form__label {
	display:block;
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	font-weight:500;
	color:#333;
	margin-bottom:6px;
}
.portfolio-form__input,
.portfolio-form__textarea {
	width:100%;
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	color:#333;
	background:#fff;
	border:1px solid rgba(0,0,0,0.1);
	border-radius:8px;
	padding:12px 16px;
	transition:border-color 0.2s ease;
	box-sizing:border-box;
}
.portfolio-form__input:focus,
.portfolio-form__textarea:focus {
	outline:0;
	border-color:#04A4CC;
}
.portfolio-form__textarea {
	resize:vertical;
	min-height:100px;
}
.portfolio-form__submit {
	width:100%;
	display:inline-flex;
	align-items:center;
	justify-content:center;
	gap:12px;
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	font-weight:600;
	color:#fff;
	background:#000;
	border:none;
	border-radius:24px;
	padding:14px 24px;
	cursor:pointer;
	transition:background 0.2s ease, transform 0.2s ease;
	margin-top:8px;
}
.portfolio-form__submit:hover {
	background:#222;
	transform:translateY(-2px);
}
.portfolio-form__submit-icon {
	display:inline-flex;
	align-items:center;
	justify-content:center;
	width:28px;
	height:28px;
	border-radius:50%;
	background:#d4a04a;
	color:#000;
	flex-shrink:0;
}

/* ── Related Projects ── */
.portfolio-related {
	margin:0 auto;
	padding-top:80px;
}
.portfolio-related__heading {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:5.6rem;
	text-align:center;
	color:#000;
	margin-bottom:48px;
	letter-spacing:-0.02em;
}
.portfolio-related__grid {
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:32px;
}
.portfolio-related__card {
	text-decoration:none;
	color:inherit;
	transition:transform 0.35s cubic-bezier(0.16,1,0.3,1);
}
.portfolio-related__card:hover {
	transform:translateY(-4px);
}
.portfolio-related__image {
	margin-bottom:14px;
	border-radius:12px;
	overflow:hidden;
}
.portfolio-related__image img {
	width:100%;
	height:240px;
	object-fit:cover;
	display:block;
	transition:transform 0.5s cubic-bezier(0.16,1,0.3,1);
}
.portfolio-related__card:hover .portfolio-related__image img {
	transform:scale(1.04);
}
.portfolio-related__title {
	font-family:'League Spartan', sans-serif;
	font-size:2rem;
	font-weight:600;
	color:#000;
	line-height:1.3;
}

/* ── GLightbox skin tweaks ── */
.glightbox-clean .gslide-description {
	font-family:'League Spartan', sans-serif;
}

/* ── Portfolio Responsive ── */
@media only screen and (max-width:900px) {
	.portfolio-gallery {
		grid-template-columns:1fr;
	}
	.portfolio-gallery__thumbs {
		flex-direction:row;
		overflow-x:auto;
	}
	.portfolio-gallery__thumb {
		flex:0 0 30%;
		aspect-ratio:16/9;
	}
	.portfolio-info {
		grid-template-columns:1fr;
		gap:24px;
	}
	.portfolio-info__action {
		justify-content:flex-start;
	}
	.portfolio-media {
		grid-template-columns:1fr;
		gap:32px;
	}
}
@media only screen and (max-width:600px) {
	.portfolio-project__title {
		font-size:4rem;
	}
	.portfolio-gallery__thumb {
		flex:0 0 45%;
	}
	.portfolio-related__heading {
		font-size:3.6rem;
	}
	.portfolio-related__grid {
		grid-template-columns:1fr;
	}
}

/*------------------------------------*\
    PORTFOLIO ARCHIVE
\*------------------------------------*/

.portfolio-archive {
	max-width:1440px;
	width:92%;
	margin:0 auto;
	padding:120px 0 0;
}

/* Hero */
.portfolio-archive__hero {
	margin-bottom:64px;
	opacity:0;
	transform:translateY(30px);
	animation:luxFadeUp 1s cubic-bezier(0.16,1,0.3,1) 0.1s forwards;
}
@keyframes luxFadeUp {
	to { opacity:1; transform:translateY(0); }
}
@keyframes luxFadeUpSoft {
	from { opacity:0; transform:translateY(24px); }
	to   { opacity:1; transform:translateY(0); }
}
@keyframes luxScale {
	from { opacity:0; transform:scale(0.97); }
	to   { opacity:1; transform:scale(1); }
}
.portfolio-archive__title {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
	font-size:6.4rem;
	line-height:1.1;
	color:#000;
	margin:0 0 16px;
	letter-spacing:-0.02em;
}
.portfolio-archive__subtitle {
	font-family:'League Spartan', sans-serif;
	font-size:1.9rem;
	line-height:1.6;
	color:#555;
	margin:0;
}

/* ── Staggered Grid: 2-1-3 pattern ── */
.portfolio-grid {
	display:grid;
	grid-template-columns:repeat(6, 1fr);
	gap:32px;
	margin-bottom:48px;
}

/* Row of 2: each card takes 3 of 6 columns */
.portfolio-card--half {
	grid-column:span 3;
}

/* Full width: spans all 6 columns */
.portfolio-card--wide {
	grid-column:span 6;
}

/* Row of 3: each card takes 2 of 6 columns */
.portfolio-card--third {
	grid-column:span 2;
}

/* Card base */
.portfolio-card {
	display:block;
	text-decoration:none;
	color:inherit;
	opacity:0;
	transform:translateY(40px);
	transition:transform 0.6s cubic-bezier(0.22,1,0.36,1), opacity 0.6s ease;
}
.portfolio-card.is-visible {
	opacity:1;
	transform:translateY(0);
}
.portfolio-card:hover {
	transform:translateY(-4px);
}
.portfolio-card.is-visible:hover {
	transform:translateY(-4px);
}
.portfolio-card__image {
	border-radius:12px;
	overflow:hidden;
	margin-bottom:16px;
	position:relative;
	box-shadow:0 4px 20px rgba(0,0,0,0.08);
	transition:box-shadow 0.5s ease;
}
.portfolio-card:hover .portfolio-card__image {
	box-shadow:0 12px 40px rgba(0,0,0,0.15);
}
.portfolio-card__image img {
	width:100%;
	height:auto;
	aspect-ratio:16/9;
	object-fit:cover;
	display:block;
	transition:transform 0.8s cubic-bezier(0.16,1,0.3,1), filter 0.6s ease;
	filter:saturate(0.9);
}
/* Wide card gets a cinematic taller ratio */
.portfolio-card--wide .portfolio-card__image img {
	aspect-ratio:21/9;
}
.portfolio-card:hover .portfolio-card__image img {
	transform:scale(1.03);
	filter:saturate(1.05) brightness(1.02);
}
.portfolio-card__title {
	font-family:'League Spartan', sans-serif;
	font-size:2.1rem;
	font-weight:600;
	color:#000;
	margin:0;
	line-height:1.3;
	letter-spacing:0.02em;
	transition:color 0.4s ease;
	position:relative;
	display:inline;
	padding:6px 12px;
	-webkit-box-decoration-break:clone;
	box-decoration-break:clone;
}
.portfolio-card__title::before {
	content:'';
	position:absolute;
	inset:0;
	background:#000;
	transform:scaleX(0);
	transform-origin:left;
	transition:transform 0.45s cubic-bezier(0.16,1,0.3,1);
	z-index:-1;
	border-radius:3px;
}
.portfolio-card:hover .portfolio-card__title {
	color:#d4a04a;
}
.portfolio-card:hover .portfolio-card__title::before {
	transform:scaleX(1);
}

/* Load more */
.portfolio-archive__load-more {
	text-align:center;
	margin-bottom:80px;
}
.portfolio-archive__load-more .btn-load-more {
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	font-weight:500;
	color:#000;
	background:transparent;
	border:1.5px solid #000;
	border-radius:24px;
	padding:14px 40px;
	cursor:pointer;
	transition:background 0.3s ease, color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}
.portfolio-archive__load-more .btn-load-more:hover {
	background:#000;
	color:#fff;
	transform:translateY(-2px);
	box-shadow:0 8px 24px rgba(0,0,0,0.12);
}

/* ── Testimonials ── */
.portfolio-testimonials {
	background:#000;
	color:#fff;
	padding:80px 60px;
	margin:0 calc(-50vw + 50%);
	width:100vw;
	position:relative;
	left:50%;
	right:50%;
	margin-left:-50vw;
	margin-right:-50vw;
	background-size:cover;
	background-position:center;
}
.portfolio-testimonials__inner {
	max-width:1440px;
	width:92%;
	margin:0 auto;
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:60px;
	align-items:center;
}
.portfolio-testimonials__title {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:4.2rem;
	line-height:1.2;
	color:#fff;
	margin:0 0 32px;
}
.portfolio-testimonials__title strong {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.portfolio-testimonials__nav {
	display:flex;
	gap:8px;
}
.portfolio-testimonials__arrow {
	width:36px;
	height:36px;
	border-radius:6px;
	border:1.5px solid rgba(255,255,255,0.4);
	background:transparent;
	color:#fff;
	cursor:pointer;
	display:inline-flex;
	align-items:center;
	justify-content:center;
	transition:border-color 0.2s ease, background 0.2s ease;
}
.portfolio-testimonials__arrow:hover {
	border-color:#fff;
	background:rgba(255,255,255,0.1);
}
.portfolio-testimonials__slider {
	position:relative;
	min-height:160px;
}
.portfolio-testimonials__slide {
	display:none;
}
.portfolio-testimonials__slide.is-active {
	display:block;
}
.portfolio-testimonials__quote {
	font-family:'League Spartan', sans-serif;
	font-size:2rem;
	font-weight:400;
	line-height:1.6;
	color:#fff;
	margin:0 0 32px;
	quotes:none;
}
.portfolio-testimonials__client {
	display:flex;
	flex-direction:column;
	gap:2px;
}
.portfolio-testimonials__location {
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	font-weight:700;
	color:#fff;
}
.portfolio-testimonials__name {
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	font-weight:700;
	color:#fff;
}

/* ── Consultation Form ── */
.portfolio-consultation {
	padding:120px 0;
}
.portfolio-consultation__inner {
	display:grid;
	grid-template-columns:1fr 1.5fr;
	gap:60px;
	align-items:center;
	max-width:1440px;
	width:92%;
	margin:0 auto;
}
/* Consultation slide-in animations */
#home-consultation .portfolio-consultation__heading,
#about-consultation .portfolio-consultation__heading {
	opacity:0;
	transform:translateX(-60px);
	transition:opacity 0.8s cubic-bezier(0.16,1,0.3,1), transform 0.8s cubic-bezier(0.16,1,0.3,1);
}
#home-consultation .portfolio-consultation__form,
#about-consultation .portfolio-consultation__form {
	opacity:0;
	transform:translateX(60px);
	transition:opacity 0.8s cubic-bezier(0.16,1,0.3,1) 0.15s, transform 0.8s cubic-bezier(0.16,1,0.3,1) 0.15s;
}
#home-consultation.is-visible .portfolio-consultation__heading,
#about-consultation.is-visible .portfolio-consultation__heading {
	opacity:1;
	transform:translateX(0);
}
#home-consultation.is-visible .portfolio-consultation__form,
#about-consultation.is-visible .portfolio-consultation__form {
	opacity:1;
	transform:translateX(0);
}
.portfolio-consultation__title {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:4.2rem;
	line-height:1.2;
	color:#000;
	margin:0;
}
.portfolio-consultation__title strong {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.portfolio-consultation__form {
	display:flex;
	flex-direction:column;
	gap:16px;
}
.portfolio-consultation__field--full {
	width:100%;
}
.portfolio-consultation__field-row {
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:16px;
}
.portfolio-consultation__input {
	width:100%;
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	color:#333;
	background:transparent;
	border:none;
	border-bottom:1px solid rgba(0,0,0,0.2);
	padding:12px 0;
	transition:border-color 0.2s ease;
	box-sizing:border-box;
}
.portfolio-consultation__input:focus {
	outline:0;
	border-bottom-color:#000;
}
.portfolio-consultation__input::placeholder {
	color:#999;
}
.portfolio-consultation__submit {
	width:100%;
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	font-weight:600;
	color:#fff;
	background:#000;
	border:none;
	border-radius:24px;
	padding:14px 24px;
	cursor:pointer;
	transition:background 0.2s ease, transform 0.2s ease;
	margin-top:8px;
}
.portfolio-consultation__submit:hover {
	background:#222;
	transform:translateY(-2px);
}

/* ── Portfolio Archive Responsive ── */
@media only screen and (max-width:900px) {
	.portfolio-archive__title {
		font-size:4.8rem;
	}
	.portfolio-grid {
		grid-template-columns:1fr 1fr;
	}
	.portfolio-card--half,
	.portfolio-card--wide,
	.portfolio-card--third {
		grid-column:span 2;
	}
	.portfolio-card--wide .portfolio-card__image img {
		aspect-ratio:16/9;
	}
	.portfolio-testimonials {
		padding:60px 32px;
	}
	.portfolio-testimonials__inner {
		grid-template-columns:1fr;
		gap:32px;
	}
	.portfolio-consultation__inner {
		grid-template-columns:1fr;
		gap:32px;
	}
}
@media only screen and (max-width:600px) {
	.portfolio-archive__title {
		font-size:3.6rem;
	}
	.portfolio-grid {
		grid-template-columns:1fr;
	}
	.portfolio-card--half,
	.portfolio-card--wide,
	.portfolio-card--third {
		grid-column:span 1;
	}
	.portfolio-testimonials__title {
		font-size:3.2rem;
	}
	.portfolio-consultation__title {
		font-size:3.2rem;
	}
	.portfolio-consultation__field-row {
		grid-template-columns:1fr;
	}
}

/*------------------------------------*\
    HOMEPAGE (front-page.php)
\*------------------------------------*/

/* Break homepage and contact page out of the .wrapper constraint */
.wrapper > .home,
.wrapper > .contact-page {
	width:100vw;
	max-width:none;
	margin-left:calc(-50vw + 50%);
}

/* ── Hero (Parallax Depth) ── */
.home-hero {
	position:relative;
	width:100%;
	height:200vh;
	background:#000;
	z-index:1;
}
.home-hero__sticky {
	position:sticky;
	top:0;
	height:100vh;
	overflow:hidden;
}
.home-hero__layers {
	position:absolute;
	inset:0;
}
.home-hero__layer {
	position:absolute;
	inset:0;
	will-change:transform, opacity;
}
.home-hero__layer-img {
	width:100%;
	height:120%;
	object-fit:cover;
	display:block;
}
.home-hero__layer--bg {
	z-index:1;
}
.home-hero__layer--logo {
	z-index:2;
	display:flex;
	align-items:center;
	justify-content:center;
}
.home-hero__logo-img {
	width:auto;
	height:auto;
	max-width:60%;
	max-height:40vh;
	object-fit:contain;
}
.home-hero__layer--fg {
	z-index:3;
}
.home-hero__gradient {
	position:absolute;
	bottom:0;
	left:0;
	right:0;
	height:60%;
	background:linear-gradient(to top, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.4) 50%, transparent 100%);
	z-index:4;
	opacity:0;
}
.home-hero__content {
	position:absolute;
	bottom:6vh;
	left:0;
	right:0;
	z-index:5;
	display:flex;
	align-items:flex-end;
	justify-content:space-between;
	max-width:1440px;
	width:92%;
	margin:0 auto;
	will-change:opacity;
	opacity:0;
}
.home-hero__left {
	max-width:600px;
}
.home-hero__right {
	text-align:right;
	flex-shrink:0;
}
.home-hero__cta-label {
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	font-weight:600;
	color:#fff;
	margin:0 0 16px;
}
.home-hero__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:6.4rem;
	line-height:1.1;
	color:#fff;
	margin:0 0 16px;
}
.home-hero__headline strong {
	font-family:'League Spartan', sans-serif;
	font-weight:800;
	display:block;
}
.home-hero__sub-headline {
	font-family:'League Spartan', sans-serif;
	font-size:2rem;
	font-weight:300;
	color:rgba(255,255,255,0.85);
	margin:0;
}
.home-hero__toggle {
	display:flex;
	gap:12px;
}
.home-hero__btn {
	font-family:'League Spartan', sans-serif;
	font-size:1.3rem;
	font-weight:600;
	color:#fff;
	padding:10px 24px;
	border-radius:24px;
	border:1.5px solid rgba(255,255,255,0.4);
	background:transparent;
	text-decoration:none;
	transition:background 0.3s ease, border-color 0.3s ease;
	cursor:pointer;
	display:inline-flex;
	align-items:center;
	gap:8px;
}
.home-hero__btn:hover {
	border-color:#fff;
	background:rgba(255,255,255,0.1);
	color:#fff;
}
.home-hero__btn-arrow {
	display:inline-flex;
	align-items:center;
	justify-content:center;
	width:24px;
	height:24px;
	border-radius:50%;
	background:rgba(255,255,255,0.15);
	font-size:1.1rem;
	transition:background 0.3s ease;
}
.home-hero__btn:hover .home-hero__btn-arrow {
	background:rgba(255,255,255,0.3);
}

@keyframes homeHeroFadeUp {
	from { opacity:0; transform:translateY(20px); }
	to   { opacity:1; transform:translateY(0); }
}

/* ── Intro (Video Scrub) ── */
.home-intro {
	position:relative;
	z-index:2;
	background:#000;
}
.home-intro__runway {
	height:400vh;
}
.home-intro__sticky {
	position:sticky;
	top:0;
	height:100vh;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	overflow:hidden;
	background:#000;
	transition:background-color 0.1s linear;
}
.home-intro__text {
	position:relative;
	z-index:2;
	text-align:center;
	padding:0 5%;
	max-width:1200px;
	will-change:transform;
}
.home-intro__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:7.2rem;
	line-height:1.1;
	color:#000;
	margin:0 0 24px;
	opacity:0;
	will-change:transform, opacity;
}
.home-intro__headline strong,
.home-intro__headline b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.home-intro__sub-headline {
	font-family:'League Spartan', sans-serif;
	font-size:2.8rem;
	font-weight:300;
	line-height:1.5;
	color:rgba(0,0,0,0.75);
	margin:0;
	opacity:0;
	will-change:transform, opacity;
}
.home-intro__sub-headline strong,
.home-intro__sub-headline b {
	font-weight:600;
}
.home-intro__video-wrap {
	position:absolute;
	inset:0;
	z-index:1;
	opacity:0;
	will-change:opacity;
	-webkit-mask-image:radial-gradient(ellipse 85% 80% at 50% 58%, #000 60%, transparent 100%);
	mask-image:radial-gradient(ellipse 85% 80% at 50% 58%, #000 60%, transparent 100%);
}
.home-intro__video {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
}

/* ── Value Proposition (Sticky Scroll + Crossfade) ── */
.home-value-prop {
	position:relative;
	/* No z-index here — let the sticky element compete directly
	   with Features in the root stacking context so the Features
	   background shows through as the sticky fades out. */
}
.home-value-prop__runway {
	height:calc(var(--vp-count, 3) * 100vh + 200vh);
}
.home-value-prop__sticky {
	position:sticky;
	top:0;
	height:100vh;
	overflow:hidden;
	border-radius:24px 24px 0 0;
	background:#000;
	will-change:filter, opacity;
	z-index:20;
}
.home-value-prop__backgrounds {
	position:absolute;
	inset:0;
	z-index:1;
}
.home-value-prop__bg-layer {
	position:absolute;
	inset:0;
	opacity:0;
}
.home-value-prop__bg-img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	will-change:transform;
}
.home-value-prop__bg-overlay {
	position:absolute;
	inset:0;
}
.home-value-prop__headline-wrap {
	position:absolute;
	inset:0;
	z-index:3;
	display:flex;
	align-items:center;
	justify-content:center;
	opacity:0;
}
.home-value-prop__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:7.2rem;
	line-height:1.1;
	color:#fff;
	text-align:center;
	margin:0;
	padding:0 5%;
	max-width:1000px;
	text-shadow:0 2px 20px rgba(0,0,0,0.6), 0 1px 4px rgba(0,0,0,0.4);
}
.home-value-prop__headline strong,
.home-value-prop__headline b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.home-value-prop__items {
	position:absolute;
	inset:0;
	z-index:4;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	pointer-events:none;
}
.home-value-prop__item {
	position:absolute;
	display:flex;
	flex-direction:column;
	align-items:center;
	text-align:center;
	gap:40px;
	opacity:0;
	will-change:transform, opacity;
	max-width:960px;
	padding:0 5%;
}
.home-value-prop__icon {
	width:220px;
	height:220px;
	display:flex;
	align-items:center;
	justify-content:center;
	will-change:transform, opacity;
	background:radial-gradient(circle, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.3) 50%, transparent 72%);
	border-radius:50%;
	padding:30px;
}
.home-value-prop__icon svg {
	width:100%;
	height:100%;
	stroke:#fff;
	stroke-width:14;
	filter:drop-shadow(0 2px 16px rgba(0,0,0,0.7)) drop-shadow(0 0 40px rgba(0,0,0,0.4));
}
.home-value-prop__icon svg path,
.home-value-prop__icon svg circle,
.home-value-prop__icon svg line,
.home-value-prop__icon svg polyline,
.home-value-prop__icon svg polygon,
.home-value-prop__icon svg rect,
.home-value-prop__icon svg ellipse {
	fill:none !important;
	stroke:#fff;
	stroke-width:14;
}
.home-value-prop__icon-img {
	max-width:100%;
	max-height:100%;
	object-fit:contain;
}
.home-value-prop__claim {
	font-family:'League Spartan', sans-serif;
	font-size:6.4rem;
	font-weight:300;
	line-height:1.15;
	color:#fff;
	margin:0;
	text-shadow:0 2px 24px rgba(0,0,0,0.6), 0 1px 4px rgba(0,0,0,0.4);
}
.home-value-prop__claim strong,
.home-value-prop__claim b {
	font-weight:700;
}
.vp-word {
	display:inline-block;
	will-change:transform, filter, opacity;
	opacity:0;
}

/* Closing copy */
.home-value-prop__closing {
	position:absolute;
	inset:0;
	z-index:5;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	gap:24px;
	text-align:center;
	opacity:0;
	padding:0 5%;
}
.home-value-prop__closing-headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:7.2rem;
	line-height:1.1;
	color:#fff;
	margin:0;
	will-change:transform;
	text-shadow:0 2px 20px rgba(0,0,0,0.6), 0 1px 4px rgba(0,0,0,0.4);
}
.home-value-prop__closing-headline strong,
.home-value-prop__closing-headline b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.home-value-prop__closing-copy {
	font-family:'League Spartan', sans-serif;
	font-size:2.8rem;
	font-weight:300;
	line-height:1.5;
	color:rgba(255,255,255,0.9);
	margin:0;
	max-width:800px;
	will-change:transform;
	text-shadow:0 2px 16px rgba(0,0,0,0.5), 0 1px 3px rgba(0,0,0,0.3);
}
.home-value-prop__closing-copy strong,
.home-value-prop__closing-copy b {
	font-weight:700;
}

/* ── Process (Sticky Carousel) ── */
.home-process {
	position:relative;
	z-index:6;
	color:#fff;
}
.home-process__runway {
	height:calc(var(--process-count, 4) * 100vh + 100vh);
}
.home-process__sticky {
	position:sticky;
	top:0;
	height:100vh;
	display:flex;
	align-items:center;
	justify-content:center;
}
.home-process__grid {
	display:grid;
	grid-template-columns:1fr 1.2fr;
	gap:80px;
	align-items:center;
	width:92%;
	max-width:1440px;
}
.home-process__left {
	opacity:0;
	transform:translateY(24px);
	transition:opacity 0.7s cubic-bezier(0.16,1,0.3,1), transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
.home-process__left.is-revealed {
	opacity:1;
	transform:translateY(0);
}
.home-process__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:7.2rem;
	line-height:1.08;
	color:#fff;
	margin:0 0 24px;
}
.home-process__headline strong,
.home-process__headline b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.home-process__sub-headline {
	font-family:'League Spartan', sans-serif;
	font-size:2.2rem;
	font-weight:300;
	line-height:1.6;
	color:rgba(255,255,255,0.75);
	margin:0;
}
.home-process__right {
	position:relative;
	display:flex;
	flex-direction:column;
}
.home-process__steps-viewport {
	position:relative;
	overflow:hidden;
	min-height:400px;
}
.home-process__step {
	position:absolute;
	top:0;
	left:0;
	right:0;
	opacity:0;
	will-change:transform, opacity;
}
.home-process__step.is-active {
	opacity:1;
}
.home-process__step-image {
	border-radius:16px;
	overflow:hidden;
	margin-bottom:20px;
	background:#111;
}
.home-process__step-image img,
.home-process__step-image video {
	width:100%;
	height:auto;
	display:block;
	aspect-ratio:16/10;
	object-fit:cover;
}
.home-process__step-copy {
	font-family:'League Spartan', sans-serif;
	font-size:1.8rem;
	font-weight:300;
	line-height:1.6;
	color:rgba(255,255,255,0.85);
}
.home-process__step-copy strong,
.home-process__step-copy b {
	font-weight:700;
	color:#fff;
}

/* Progress bars */
.home-process__progress {
	margin-top:24px;
	display:flex;
	gap:8px;
}
.home-process__bar {
	flex:1;
	height:3px;
	background:rgba(255,255,255,0.15);
	border-radius:2px;
	overflow:hidden;
}
.home-process__bar-fill {
	height:100%;
	width:0%;
	background:#d4a04a;
	border-radius:2px;
	transition:width 0.15s linear;
}

/* ── Services (Background Blur) ── */
/* ── Services: Horizontal Card Chapters ── */
.home-services {
	position:relative;
	z-index:6;
	color:#fff;
	background:#1a1a1a;
	margin-top:-100vh;
	/* height set dynamically by JS */
}
.home-services__background {
	position:sticky;
	top:0;
	height:100vh;
	z-index:1;
	overflow:hidden;
	margin-bottom:-100vh;
}
.home-services__bg-img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	will-change:filter;
	transition:filter 0.15s linear;
}
.home-services__bg-overlay {
	position:absolute;
	inset:0;
	opacity:0;
	transition:opacity 0.15s linear;
}

/* Content layer — sticky viewport */
.home-services__content {
	position:sticky;
	top:0;
	z-index:2;
	height:100vh;
	overflow:hidden;
}

/* ── Intro ── */
.home-services__intro {
	position:absolute;
	inset:0;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	text-align:center;
	padding:0 60px;
	opacity:0;
	pointer-events:none;
	will-change:opacity, transform;
}
.home-services__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:9.6rem;
	line-height:1.05;
	color:#fff;
	margin:0 0 32px;
	letter-spacing:-0.03em;
}
.home-services__headline strong,
.home-services__headline b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.home-services__sub-headline {
	font-family:'League Spartan', sans-serif;
	font-size:2.8rem;
	font-weight:300;
	line-height:1.55;
	color:rgba(255,255,255,0.8);
	margin:0;
	max-width:780px;
}

/* ── Category chapters ── */
.home-services__chapter {
	position:absolute;
	top:0;
	left:50%;
	transform:translateX(-50%);
	width:92%;
	height:100%;
	max-width:1440px;
	display:grid;
	grid-template-columns:380px 1fr;
	gap:60px;
	align-items:center;
	padding:0 60px;
	box-sizing:border-box;
	opacity:0;
	pointer-events:none;
	will-change:opacity;
}
.home-services__chapter.is-active {
	opacity:1;
	pointer-events:auto;
}

/* Chapter info (left column) */
.home-services__chapter-info {
	display:flex;
	flex-direction:column;
	will-change:opacity, transform;
}
.home-services__category-icon {
	margin-bottom:24px;
}
.home-services__category-icon img {
	width:72px;
	height:72px;
	object-fit:contain;
	display:block;
}
.home-services__category-label {
	display:block;
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	font-weight:500;
	text-transform:uppercase;
	letter-spacing:0.16em;
	color:#d4a04a;
	margin-bottom:16px;
}
.home-services__category-title {
	font-family:'Goudy Bookletter 1911', serif;
	font-size:5.6rem;
	font-weight:normal;
	color:#fff;
	margin:0 0 16px;
	line-height:1.1;
	letter-spacing:-0.02em;
}
.home-services__category-title strong,
.home-services__category-title b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.home-services__category-subtitle {
	font-family:'League Spartan', sans-serif;
	font-size:2.4rem;
	font-weight:300;
	line-height:1.6;
	color:rgba(255,255,255,0.6);
	margin:0;
	max-width:420px;
}
.home-services__category-subtitle strong,
.home-services__category-subtitle b {
	font-weight:600;
	color:rgba(255,255,255,0.85);
}

/* ── Cards viewport + track ── */
.home-services__cards-viewport {
	overflow:hidden;
	position:relative;
	display:flex;
	align-items:center;
}
.home-services__cards-track {
	display:flex;
	gap:32px;
	align-items:stretch;
	will-change:transform;
}

/* ── Card (frosted glass) ── */
.home-services__card {
	flex:0 0 360px;
	min-height:320px;
	background:rgba(255,255,255,0.06);
	backdrop-filter:blur(12px);
	-webkit-backdrop-filter:blur(12px);
	border:1px solid rgba(255,255,255,0.08);
	border-radius:16px;
	padding:40px 36px;
	display:flex;
	flex-direction:column;
	box-sizing:border-box;
	will-change:opacity, transform;
	transition:background 0.4s cubic-bezier(0.16,1,0.3,1), border-color 0.4s cubic-bezier(0.16,1,0.3,1);
}
.home-services__card:hover {
	background:rgba(255,255,255,0.1);
	border-color:rgba(212,160,74,0.3);
}
.home-services__card-number {
	font-family:'Goudy Bookletter 1911', serif;
	font-size:1.4rem;
	color:#d4a04a;
	letter-spacing:0.08em;
	margin-bottom:20px;
}
.home-services__card-title {
	font-family:'League Spartan', sans-serif;
	font-size:2.6rem;
	font-weight:500;
	color:#fff;
	margin:0 0 8px;
	letter-spacing:-0.01em;
	line-height:1.2;
}
.home-services__card-title strong,
.home-services__card-title b {
	font-weight:700;
}
.home-services__card-subtitle {
	font-family:'League Spartan', sans-serif;
	font-size:1.6rem;
	font-weight:300;
	color:rgba(255,255,255,0.45);
	margin:0 0 20px;
	line-height:1.5;
}
.home-services__card-subtitle strong,
.home-services__card-subtitle b {
	font-weight:500;
	color:rgba(255,255,255,0.6);
}
.home-services__card-divider {
	width:40px;
	height:1px;
	background:#d4a04a;
	margin-bottom:20px;
	opacity:0.6;
}
.home-services__card-desc {
	font-family:'League Spartan', sans-serif;
	font-size:1.8rem;
	font-weight:300;
	line-height:1.65;
	color:rgba(255,255,255,0.7);
}
.home-services__card-desc strong,
.home-services__card-desc b {
	font-weight:600;
	color:#fff;
}

/* ── Progress tabs ── */
.home-services__progress {
	position:absolute;
	bottom:48px;
	left:50%;
	transform:translateX(-50%);
	display:flex;
	gap:32px;
	z-index:10;
	opacity:0;
	will-change:opacity;
}
.home-services__progress-tab {
	display:flex;
	flex-direction:column;
	align-items:center;
	gap:8px;
	cursor:pointer;
	opacity:0.4;
	transition:opacity 0.5s cubic-bezier(0.16,1,0.3,1);
}
.home-services__progress-tab.is-active {
	opacity:1;
}
.home-services__progress-label {
	font-family:'League Spartan', sans-serif;
	font-size:1.2rem;
	font-weight:500;
	text-transform:uppercase;
	letter-spacing:0.14em;
	color:#fff;
	white-space:nowrap;
}
.home-services__progress-bar {
	width:80px;
	height:2px;
	background:rgba(255,255,255,0.15);
	border-radius:1px;
	overflow:hidden;
}
.home-services__progress-fill {
	height:100%;
	width:0%;
	background:#d4a04a;
	border-radius:1px;
}

/* ── Services responsive ── */
@media only screen and (max-width:900px) {
	.home-services__headline {
		font-size:6.4rem;
	}
	.home-services__sub-headline {
		font-size:2.4rem;
	}
	.home-services__chapter {
		grid-template-columns:1fr;
		gap:32px;
		padding:80px 32px 120px;
		align-content:start;
		padding-top:120px;
	}
	.home-services__card {
		flex:0 0 300px;
		min-height:280px;
		padding:32px 28px;
	}
	.home-services__card-title {
		font-size:2.2rem;
	}
	.home-services__category-title {
		font-size:4.2rem;
	}
	.home-services__category-subtitle {
		font-size:2.2rem;
		max-width:none;
	}
	.home-services__progress {
		gap:20px;
		bottom:32px;
	}
	.home-services__progress-bar {
		width:60px;
	}
}
@media only screen and (max-width:600px) {
	.home-services__intro {
		padding:0 28px;
	}
	.home-services__headline {
		font-size:4.8rem;
	}
	.home-services__sub-headline {
		font-size:2rem;
	}
	.home-services__chapter {
		padding:80px 24px 100px;
	}
	.home-services__card {
		flex:0 0 260px;
		min-height:240px;
		padding:28px 24px;
		border-radius:12px;
	}
	.home-services__card-title {
		font-size:2rem;
	}
	.home-services__card-desc {
		font-size:1.6rem;
	}
	.home-services__category-icon img {
		width:48px;
		height:48px;
	}
	.home-services__category-title {
		font-size:3.2rem;
	}
	.home-services__category-subtitle {
		font-size:1.9rem;
	}
	.home-services__progress {
		gap:16px;
		bottom:24px;
	}
	.home-services__progress-label {
		font-size:1rem;
	}
	.home-services__progress-bar {
		width:48px;
	}
}

/* ── Portfolio (Before/After Slider) ── */
.home-portfolio {
	position:relative;
	z-index:7;
	background:#fff5ed; /* fallback; inline style overrides */
}
.home-portfolio__inner {
	display:grid;
	grid-template-columns:1fr 2.5fr;
	gap:60px;
	max-width:1440px;
	width:92%;
	margin:0 auto;
	align-items:start;
}
.home-portfolio__left {
	position:sticky;
	top:0;
	padding-top:calc(50vh - 150px);
	padding-bottom:calc(50vh - 150px);
	align-self:start;
}
.home-portfolio__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:7.2rem;
	line-height:1.08;
	color:#000;
	margin:0 0 20px;
}
.home-portfolio__headline strong,
.home-portfolio__headline b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.home-portfolio__sub-headline {
	font-family:'League Spartan', sans-serif;
	font-size:2rem;
	font-weight:300;
	line-height:1.6;
	color:#555;
	margin:0 0 36px;
}
.home-portfolio__cta {
	display:inline-flex;
	align-items:center;
	gap:10px;
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	font-weight:600;
	color:#fff;
	background:#000;
	padding:12px 28px;
	border-radius:24px;
	text-decoration:none;
	transition:background 0.3s ease, transform 0.2s ease;
}
.home-portfolio__cta:hover {
	background:#222;
	transform:translateY(-2px);
	color:#fff;
}
.home-portfolio__cta-icon {
	display:flex;
	align-items:center;
	justify-content:center;
	width:28px;
	height:28px;
	background:#d4a04a;
	border-radius:50%;
	color:#fff;
}
.home-portfolio__right {
	display:flex;
	flex-direction:column;
}

/* Before/After Comparison Slider */
.home-portfolio__slider {
	min-height:100vh;
	display:flex;
	align-items:center;
}
.home-portfolio__comparison {
	position:relative;
	overflow:hidden;
	cursor:ew-resize;
	border-radius:16px;
	aspect-ratio:16/10;
	width:100%;
	user-select:none;
	-webkit-user-select:none;
}
.home-portfolio__before,
.home-portfolio__after {
	position:absolute;
	inset:0;
}
.home-portfolio__before img,
.home-portfolio__after img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
}
.home-portfolio__after {
	clip-path:inset(0 0 0 var(--handle-x, 50%));
}

/* Labels */
.home-portfolio__label {
	position:absolute;
	top:16px;
	font-family:'League Spartan', sans-serif;
	font-size:1.4rem;
	font-weight:600;
	padding:6px 14px;
	border-radius:20px;
	z-index:3;
	pointer-events:none;
	transition:opacity 0.25s ease;
}
.home-portfolio__label--before {
	left:16px;
	background:#fff;
	color:#000;
}
.home-portfolio__label--after {
	right:16px;
	background:#000;
	color:#fff;
}

/* Drag Handle */
.home-portfolio__handle {
	position:absolute;
	top:0;
	bottom:0;
	left:var(--handle-x, 50%);
	transform:translateX(-50%);
	display:flex;
	flex-direction:column;
	align-items:center;
	z-index:4;
	pointer-events:none;
}
.home-portfolio__handle-line {
	flex:1;
	width:2px;
	background:rgba(255,255,255,0.8);
}
.home-portfolio__handle-icon {
	width:44px;
	height:44px;
	background:#d4a04a;
	border-radius:50%;
	display:flex;
	align-items:center;
	justify-content:center;
	cursor:ew-resize;
	pointer-events:auto;
	flex-shrink:0;
	box-shadow:0 2px 12px rgba(0,0,0,0.25);
	transition:transform 0.2s ease;
}
.home-portfolio__handle-icon:hover {
	transform:scale(1.1);
}
.home-portfolio__handle-icon svg {
	width:24px;
	height:24px;
	fill:#fff;
}
.home-portfolio__comparison.is-dragging .home-portfolio__handle-icon {
	transform:scale(1.15);
}

/* ── Testimonials (Homepage wrapper) ── */
.home-testimonials {
	position:relative;
	z-index:7;
	padding:60px 24px;
}
.home-testimonials .portfolio-testimonials {
	position:relative;
	width:auto;
	left:auto;
	right:auto;
	margin-left:0;
	margin-right:0;
	border-radius:16px;
	overflow:hidden;
}
.home-testimonials__dots-overlay {
	position:absolute;
	inset:0;
	z-index:1;
	background:radial-gradient(circle, rgba(255,255,255,0.06) 1px, transparent 1px);
	background-size:20px 20px;
	pointer-events:none;
}
.home-testimonials .portfolio-testimonials__inner {
	position:relative;
	z-index:2;
}

/* ── Generic Reveal ── */
.home-reveal {
	opacity:0;
	transform:translateY(28px);
	transition:opacity 0.7s cubic-bezier(0.16,1,0.3,1), transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
.home-reveal.home-revealed {
	opacity:1;
	transform:translateY(0);
}

/* ── Homepage Responsive ── */
@media only screen and (max-width:900px) {
	.home-hero__content {
		flex-direction:column;
		align-items:flex-start;
		gap:32px;
		bottom:5vh;
	}
	.home-hero__right {
		text-align:left;
	}
	.home-hero__headline {
		font-size:4.8rem;
	}
	.home-intro__headline,
	.home-value-prop__headline,
	.home-value-prop__closing-headline {
		font-size:4.2rem;
	}
	.home-process__grid {
		grid-template-columns:1fr;
		gap:40px;
	}
	.home-process__sticky {
		align-items:flex-start;
		padding-top:80px;
	}
	.home-process__right {
		position:relative;
		min-height:300px;
	}
	.home-process__headline {
		font-size:5.2rem;
	}
	.home-portfolio__inner {
		grid-template-columns:1fr;
		gap:40px;
	}
	.home-portfolio__left {
		position:relative;
		top:0;
		padding-top:60px;
		padding-bottom:0;
	}
	.home-portfolio__slider {
		min-height:auto;
		padding:20px 0;
	}
	.home-portfolio__headline {
		font-size:5.2rem;
	}
	.home-services__headline {
		font-size:3.8rem;
	}
}
@media only screen and (max-width:600px) {
	.home-hero__headline {
		font-size:3.6rem;
	}
	.home-hero__sub-headline {
		font-size:1.7rem;
	}
	.home-hero__toggle {
		flex-direction:column;
		align-items:flex-start;
	}
	.home-intro__headline,
	.home-value-prop__headline,
	.home-value-prop__closing-headline {
		font-size:3.2rem;
	}
	.home-intro__runway {
		height:300vh;
	}
	.home-intro__video-wrap {
		-webkit-mask-image:radial-gradient(ellipse 95% 80% at 50% 58%, #000 50%, transparent 100%);
		mask-image:radial-gradient(ellipse 95% 80% at 50% 58%, #000 50%, transparent 100%);
	}
	.home-value-prop__icon {
		width:80px;
		height:80px;
	}
	.home-process__headline,
	.home-services__headline,
	.home-portfolio__headline {
		font-size:3.6rem;
	}
	.home-process__sticky {
		padding-top:60px;
	}
	.home-testimonials {
		padding:0 12px;
	}
}

/*------------------------------------*\
    HOMEOWNER PAGE — Value Prop Variant
\*------------------------------------*/

/* Override runway: 3 headlines + claims teleprompter + closing */
.home-value-prop--hown .home-value-prop__runway {
	height:calc(var(--vp-count, 3) * 100vh + 150vh);
}

/* Background layer stays visible (single shared image) */
.home-value-prop--hown .home-value-prop__bg-layer--single {
	opacity:1 !important;
}

/* ─── Headlines: full-screen centered, stacked ─── */
.home-value-prop--hown .hown-vp__headline {
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
	z-index:3;
	display:flex;
	align-items:center;
	justify-content:center;
	opacity:0;
	will-change:transform, opacity;
}

/* ─── Headline 3 + Claims: inline sentence ───
   The sentence wraps both the lead-in text and the
   scroll window. It's centered via the parent flex,
   and laid out as a row with baseline alignment so
   the lead-in and the active claim sit on one line. */
.hown-vp__sentence {
	flex-wrap:nowrap;
	align-items:center;
	justify-content:center;
	gap:24px;
}
.hown-vp__lead-in {
	font-family:'Goudy Bookletter 1911', serif;
	font-size:7.2rem;
	font-weight:normal;
	line-height:1.1;
	color:#fff;
	white-space:nowrap;
	text-shadow:0 2px 20px rgba(0,0,0,0.6), 0 1px 4px rgba(0,0,0,0.4);
	flex-shrink:0;
}

/* ─── Claims scroll window ───
   Tall enough to show ~5 claim lines so you can see
   blurred items above and below the active one.
   Height in px so it doesn't depend on inherited font-size. */
.hown-vp__scroll-window {
	display:block;
	position:relative;
	height:420px;
	overflow:hidden;
	flex-shrink:0;
	/* width is set by JS to match widest claim */
}

/* The track holds all claims stacked vertically
   and gets translateY'd as a group by JS */
.hown-vp__claims-track {
	display:flex;
	flex-direction:column;
	align-items:flex-start;
	position:absolute;
	left:0;
	top:0;
	will-change:transform;
}
/* Individual claim — white by default, gold when in focus (set by JS) */
.hown-vp__claim {
	display:block;
	padding:14px 0;
	white-space:nowrap;
	transition:filter 0.15s ease, opacity 0.15s ease, color 0.25s ease;
	font-family:'League Spartan', sans-serif;
	font-size:7.2rem;
	font-weight:700;
	line-height:1.1;
	letter-spacing:-0.01em;
	color:#fff;
	text-shadow:0 2px 20px rgba(0,0,0,0.6), 0 1px 4px rgba(0,0,0,0.4);
}

/* Blur masks — gradient darkening at top and bottom of scroll window */
.hown-vp__blur-mask {
	display:block;
	position:absolute;
	left:0;
	right:0;
	z-index:2;
	pointer-events:none;
}
.hown-vp__blur-mask--top {
	top:0;
	height:38%;
	background:linear-gradient(to bottom, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.4) 60%, transparent 100%);
}
.hown-vp__blur-mask--bottom {
	bottom:0;
	height:38%;
	background:linear-gradient(to top, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.4) 60%, transparent 100%);
}

/* ─── Closing copy ─── */
.home-value-prop--hown .hown-vp__closing {
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
	z-index:7;
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	text-align:center;
	opacity:0;
	padding:0 8%;
}
.home-value-prop--hown .hown-vp__closing .home-value-prop__closing-copy {
	max-width:1000px;
	font-size:5.6rem;
	line-height:1.2;
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	color:#fff;
	text-shadow:0 2px 20px rgba(0,0,0,0.6), 0 1px 4px rgba(0,0,0,0.4);
}

/*------------------------------------*\
    HOMEOWNER PAGE — Features Section
\*------------------------------------*/

.home-features {
	position:relative;
	z-index:5;
	color:#fff;
	/* Pull section up so its bg fills behind the VP sticky during crossfade.
	   padding-top creates the overlap zone; content uses sticky to pin
	   at the viewport top so there's no dead scrolling zone.
	   NO overflow:hidden here — it breaks position:sticky on __content. */
	margin-top:-200vh;
	padding-top:200vh;
}
.home-features__background {
	position:absolute;
	inset:0;
	z-index:1;
	overflow:hidden;
}
.home-features__bg-img {
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	/* Initial state: blurred. JS drives the deblur during VP exit. */
	filter:blur(20px) saturate(0.3);
	transform:scale(1.1);
	will-change:filter, transform;
}
.home-features__bg-overlay {
	position:absolute;
	inset:0;
	/* CSS fallback — inline style from PHP can override this.
	   Ensures overlay is always dark even if ACF field is empty.
	   Solid black — opacity is driven by JS for the crossfade. */
	background-color:#000;
	/* Initial state: heavy overlay. JS drives the reveal. */
	opacity:0.9;
	will-change:opacity;
}
.home-features__content {
	position:sticky;
	top:0;
	z-index:2;
	max-width:1440px;
	width:92%;
	margin:0 auto;
	/* Sticky pins content to the viewport as the 200vh overlap zone scrolls.
	   Flex centers the headline + cards vertically within 100vh. */
	display:flex;
	flex-direction:column;
	align-items:center;
	justify-content:center;
	height:100vh;
	padding:80px 0;
	text-align:center;
	box-sizing:border-box;
}
.home-features__header {
	margin-bottom:72px;
	max-width:900px;
	opacity:0;
	transform:translateY(60px);
	transition:opacity 1s cubic-bezier(0.16,1,0.3,1), transform 1.2s cubic-bezier(0.16,1,0.3,1);
}
.home-features__header.is-visible {
	opacity:1;
	transform:translateY(0);
}
.home-features__headline {
	font-family:'Goudy Bookletter 1911', serif;
	font-weight:normal;
	font-size:7.2rem;
	line-height:1.08;
	color:#fff;
	margin:0 0 24px;
	letter-spacing:-0.02em;
}
.home-features__headline strong,
.home-features__headline b {
	font-family:'League Spartan', sans-serif;
	font-weight:700;
}
.home-features__sub-headline {
	font-family:'League Spartan', sans-serif;
	font-size:2.4rem;
	font-weight:300;
	line-height:1.55;
	color:rgba(255,255,255,0.8);
	margin:0 auto;
	max-width:700px;
	letter-spacing:0.01em;
}

/* Card grid */
.home-features__grid {
	display:grid;
	grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));
	gap:28px;
	width:100%;
}
.home-features__card {
	background:rgba(255,255,255,0.05);
	border:1px solid rgba(255,255,255,0.08);
	border-radius:20px;
	padding:48px 36px;
	text-align:center;
	opacity:0;
	transform:translateY(50px) scale(0.95);
	transition:opacity 0.8s cubic-bezier(0.16,1,0.3,1),
			   transform 1s cubic-bezier(0.16,1,0.3,1),
			   background 0.4s ease,
			   border-color 0.4s ease,
			   box-shadow 0.4s ease;
	-webkit-backdrop-filter:blur(12px);
	backdrop-filter:blur(12px);
}
.home-features__card.is-visible {
	opacity:1;
	transform:translateY(0) scale(1);
}
.home-features__card:hover {
	background:rgba(255,255,255,0.1);
	border-color:rgba(255,255,255,0.18);
	box-shadow:0 8px 40px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08);
	transform:translateY(-4px) scale(1);
}
.home-features__card-icon {
	width:72px;
	height:72px;
	margin:0 auto 28px;
}
.home-features__card-icon img {
	width:100%;
	height:100%;
	object-fit:contain;
	filter:brightness(0) invert(1);
	opacity:0.9;
}
.home-features__card-text {
	font-family:'League Spartan', sans-serif;
	font-size:2.2rem;
	font-weight:300;
	line-height:1.55;
	color:rgba(255,255,255,0.85);
	margin:0;
}
.home-features__card-text strong,
.home-features__card-text b {
	font-weight:600;
	color:#fff;
}

/* ── Homeowner Page Responsive ── */
@media only screen and (max-width:900px) {
	/* Value Prop — inline sentence */
	.hown-vp__lead-in {
		font-size:5rem;
	}
	.hown-vp__claim {
		font-size:5rem;
	}
	.hown-vp__sentence {
		gap:16px;
	}
	.hown-vp__scroll-window {
		height:300px;
	}
	.hown-vp__claim {
		padding:10px 0;
	}
	.home-value-prop--hown .hown-vp__closing .home-value-prop__closing-copy {
		font-size:4rem;
	}
	/* Features */
	.home-features__headline {
		font-size:5.2rem;
	}
	.home-features__sub-headline {
		font-size:2rem;
	}
	.home-features__content {
		height:auto;
		min-height:100vh;
		padding:60px 0;
	}
	.home-features__grid {
		grid-template-columns:1fr 1fr;
		gap:20px;
	}
	.home-features__card {
		padding:36px 28px;
	}
	.home-features__card-text {
		font-size:1.9rem;
	}
	.home-features__card-icon {
		width:56px;
		height:56px;
		margin-bottom:20px;
	}
}
@media only screen and (max-width:600px) {
	/* Value Prop — stack vertically on small screens */
	.hown-vp__sentence {
		flex-direction:column;
		align-items:center;
		gap:8px;
	}
	.hown-vp__lead-in {
		font-size:3.4rem;
	}
	.hown-vp__claim {
		font-size:3.4rem;
		padding:8px 0;
	}
	.hown-vp__scroll-window {
		height:220px;
	}
	.home-value-prop--hown .hown-vp__closing .home-value-prop__closing-copy {
		font-size:3rem;
	}
	.hown-vp__blur-mask--top,
	.hown-vp__blur-mask--bottom {
		height:30%;
	}
	/* Features */
	.home-features__headline {
		font-size:3.8rem;
	}
	.home-features__sub-headline {
		font-size:1.8rem;
	}
	.home-features__header {
		margin-bottom:48px;
	}
	.home-features__grid {
		grid-template-columns:1fr;
		gap:16px;
	}
	.home-features__card {
		padding:32px 24px;
	}
	.home-features__card-text {
		font-size:1.7rem;
	}
	.home-features__card-icon {
		width:48px;
		height:48px;
		margin-bottom:16px;
	}
}

/*------------------------------------*\
    FOOTER
\*------------------------------------*/

.footer {
	width:100%;
}

/* Footer Hero with Gradient */
.footer-hero {
	position:relative;
	padding:200px 60px 100px;
	background-color:#000;
	overflow:hidden;
}
.footer-hero__gradient {
	position:absolute;
	top:0;
	left:0;
	right:0;
	height:70%;
	background:linear-gradient(
		to bottom,
		#fff5ed 0%,
		#f5e6d3 15%,
		#d4a574 35%,
		#8b5a3c 55%,
		#3d2317 75%,
		#000 100%
	);
	pointer-events:none;
}
.footer-hero__content {
	position:relative;
	z-index:1;
	max-width:1440px;
	margin:0 auto;
}
.footer-hero__title {
	font-family:'Goudy Bookletter 1911', serif;
	font-size:6.4rem;
	font-weight:400;
	line-height:1.15;
	color:#fff;
	margin:0 0 60px;
	letter-spacing:-0.01em;
}
.footer-hero__line {
	width:100%;
	height:1px;
	background:rgba(255,255,255,0.25);
}

/* Footer Main */
.footer-main {
	background-color:#000;
	padding:40px 60px 50px;
}
.footer-main__inner {
	display:flex;
	justify-content:space-between;
	align-items:center;
	max-width:1440px;
	margin:0 auto;
}

/* Footer Logo */
.footer-logo {
	flex-shrink:0;
}
.footer-logo__img {
	height:32px;
	width:auto;
}

/* Footer Navigation */
.footer-nav {
	flex:1;
	display:flex;
	justify-content:center;
}
.footer-nav__list {
	display:flex;
	gap:40px;
	list-style:none;
	margin:0;
	padding:0;
}
.footer-nav__list li {
	margin:0;
	padding:0;
}
.footer-nav__list a {
	font-family:'League Spartan', sans-serif;
	font-size:1.7rem;
	font-weight:400;
	color:#fff;
	text-decoration:none;
	transition:opacity 0.2s ease;
}
.footer-nav__list a:hover {
	opacity:0.7;
}

/* Footer Social */
.footer-social {
	display:flex;
	gap:20px;
	flex-shrink:0;
}
.footer-social__link {
	color:#fff;
	transition:opacity 0.2s ease;
}
.footer-social__link:hover {
	opacity:0.7;
}
.footer-social__link svg {
	display:block;
}

/* Footer Copyright */
.footer-copyright {
	background-color:#000;
	border-top:1px solid rgba(255,255,255,0.08);
	padding:20px 60px;
}
.footer-copyright__inner {
	max-width:1440px;
	margin:0 auto;
	text-align:center;
}
.footer-copyright p {
	font-family:'League Spartan', sans-serif;
	font-size:1.3rem;
	font-weight:300;
	color:rgba(255,255,255,0.35);
	margin:0;
	letter-spacing:0.03em;
}

/* Footer Responsive */
@media only screen and (max-width:900px) {
	.footer-hero {
		padding:150px 40px 80px;
	}
	.footer-hero__title {
		font-size:4.8rem;
	}
	.footer-main {
		padding:30px 40px 40px;
	}
	.footer-main__inner {
		flex-wrap:wrap;
		gap:30px;
	}
	.footer-logo {
		order:1;
	}
	.footer-social {
		order:2;
	}
	.footer-nav {
		order:3;
		width:100%;
		justify-content:flex-start;
	}
	.footer-nav__list {
		flex-wrap:wrap;
		gap:20px 30px;
	}
	.footer-copyright {
		padding:20px 40px;
	}
}
@media only screen and (max-width:600px) {
	.footer-hero {
		padding:120px 24px 60px;
	}
	.footer-hero__title {
		font-size:3.6rem;
	}
	.footer-hero__line {
		margin-bottom:0;
	}
	.footer-main {
		padding:28px 24px;
	}
	.footer-main__inner {
		flex-direction:column;
		align-items:center;
		text-align:center;
		gap:28px;
	}
	.footer-logo {
		order:1;
	}
	.footer-nav {
		order:2;
		width:100%;
		justify-content:center;
	}
	.footer-nav__list {
		flex-direction:column;
		align-items:center;
		gap:16px;
	}
	.footer-nav__list a {
		font-size:1.5rem;
	}
	.footer-social {
		order:3;
		justify-content:center;
	}
	.footer-copyright {
		padding:18px 24px;
	}
	.footer-copyright p {
		font-size:1.2rem;
	}
}

/*------------------------------------*\
    IMAGES
\*------------------------------------*/



/*------------------------------------*\
	TYPOGRAPHY
\*------------------------------------*/

@font-face {
	font-family:'Font-Name';
	src:url('fonts/font-name.eot');
	src:url('fonts/font-name.eot?#iefix') format('embedded-opentype'),
		url('fonts/font-name.woff') format('woff'),
		url('fonts/font-name.ttf') format('truetype'),
		url('fonts/font-name.svg#font-name') format('svg');
    font-weight:normal;
    font-style:normal;
}

/*------------------------------------*\
    RESPONSIVE
\*------------------------------------*/

@media only screen and (min-width:320px) {

}
@media only screen and (min-width:480px) {

}
@media only screen and (min-width:768px) {

}
@media only screen and (min-width:1024px) {

}
@media only screen and (min-width:1140px) {

}
@media only screen and (min-width:1280px) {

}
@media only screen and (-webkit-min-device-pixel-ratio:1.5),
	   only screen and (min-resolution:144dpi) {

}

/*------------------------------------*\
    MISC
\*------------------------------------*/

::selection {
	background:#04A4CC;
	color:#FFF;
	text-shadow:none;
}
::-webkit-selection {
	background:#04A4CC;
	color:#FFF;
	text-shadow:none;
}
::-moz-selection {
	background:#04A4CC;
	color:#FFF;
	text-shadow:none;
}

/*------------------------------------*\
    WORDPRESS CORE
\*------------------------------------*/

.alignnone {
	margin:5px 20px 20px 0;
}
.aligncenter,
div.aligncenter {
	display:block;
	margin:5px auto 5px auto;
}
.alignright {
	float:right;
	margin:5px 0 20px 20px;
}
.alignleft {
	float:left;
	margin:5px 20px 20px 0;
}
a img.alignright {
	float:right;
	margin:5px 0 20px 20px;
}
a img.alignnone {
	margin:5px 20px 20px 0;
}
a img.alignleft {
	float:left;
	margin:5px 20px 20px 0;
}
a img.aligncenter {
	display:block;
	margin-left:auto;
	margin-right:auto;
}
.wp-caption {
	background:#FFF;
	border:1px solid #F0F0F0;
	max-width:96%;
	padding:5px 3px 10px;
	text-align:center;
}
.wp-caption.alignnone {
	margin:5px 20px 20px 0;
}
.wp-caption.alignleft {
	margin:5px 20px 20px 0;
}
.wp-caption.alignright {
	margin:5px 0 20px 20px;
}
.wp-caption img {
	border:0 none;
	height:auto;
	margin:0;
	max-width:98.5%;
	padding:0;
	width:auto;
}
.wp-caption .wp-caption-text,
.gallery-caption {
	font-size:11px;
	line-height:17px;
	margin:0;
	padding:0 4px 5px;
}
.sticky {

}
.bypostauthor {

}

/*------------------------------------*\
    PRINT
\*------------------------------------*/

@media print {
	* {
		background:transparent !important;
		color:#000 !important;
		box-shadow:none !important;
		text-shadow:none !important;
	}
	a,
	a:visited {
		text-decoration:underline;
	}
	a[href]:after {
		content:" (" attr(href) ")";
	}
	abbr[title]:after {
		content:" (" attr(title) ")";
	}
	.ir a:after,
	a[href^="javascript:"]:after,
	a[href^="#"]:after {
		content:"";
	}
	pre,blockquote {
		border:1px solid #999;
		page-break-inside:avoid;
	}
	thead {
		display:table-header-group;
	}
	tr,img {
		page-break-inside:avoid;
	}
	img {
		max-width:100% !important;
	}
	@page {
		margin:0.5cm;
	}
	p,
	h2,
	h3 {
		orphans:3;
		widows:3;
	}
	h2,
	h3 {
		page-break-after:avoid;
	}
}
