/**
 * AlFath Group — Main Stylesheet  ·  v1.1 "Architectural Monograph"
 * Arabic-first / RTL. A calm, editorial, architectural identity:
 * limestone canvas, espresso ink, restrained bronze, hairline rules,
 * oversized typography and an architect's "datum line" signature.
 *
 * Customizer color slots are repurposed:
 *   --gold  = bronze accent | --gold-bright = brass (on dark)
 *   --ink   = espresso      | --charcoal = bistre | --cream = limestone
 *
 * @package AlFath
 */

/* =========================================================
   0. Tokens
   ========================================================= */
:root {
	/* Brand slots (overridden by Customizer dynamic CSS). */
	--gold: #8A6A38;          /* bronze (antique) */
	--gold-bright: #C6A56B;   /* brass    */
	--ink: #1E1A15;           /* espresso */
	--charcoal: #2C261E;      /* bistre   */
	--cream: #EFEAE0;         /* limestone canvas */

	/* Semantic aliases. */
	--bronze: var(--gold);
	--brass: var(--gold-bright);
	--espresso: var(--ink);
	--bistre: var(--charcoal);
	--bone: var(--cream);

	/* Derived neutrals. */
	--paper: #F8F5EE;                       /* cards / raised surfaces */
	--ink-soft: #4A4339;                    /* secondary text on light */
	--stone: #8A8074;                       /* muted captions / meta   */
	--bone-text: #E9E2D5;                   /* text on espresso        */
	--stone-dark: rgba(233,226,213,.58);    /* muted text on espresso  */
	--line: rgba(30,26,21,.16);             /* hairline on light       */
	--line-soft: rgba(30,26,21,.08);
	--line-dark: rgba(233,226,213,.16);     /* hairline on espresso    */

	/* Typography. */
	--font-display: "El Messiri", "IBM Plex Sans Arabic", serif;       /* Arabic display  */
	--font-body: "IBM Plex Sans Arabic", system-ui, "Segoe UI", sans-serif;
	--font-mark: "Archivo", "IBM Plex Sans Arabic", sans-serif;        /* Latin wayfinding & numerals */

	/* Layout. */
	--container: 1280px;
	--container-narrow: 760px;
	--gutter: clamp(20px, 5vw, 64px);
	--section-y: clamp(72px, 11vw, 150px);
	--radius: 3px;
	--radius-lg: 4px;

	/* Effects — restrained, architectural. */
	--shadow-sm: 0 1px 2px rgba(30,26,21,.05);
	--shadow: 0 30px 60px -34px rgba(30,26,21,.42);
	--ease: cubic-bezier(.22,.61,.36,1);
	--t: .4s var(--ease);
	--header-h: 78px;
}

/* =========================================================
   1. Reset & base
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
	margin: 0;
	font-family: var(--font-body);
	font-size: 17px;
	font-weight: 400;
	line-height: 1.75;
	color: var(--ink-soft);
	background: var(--bone);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

img, svg, video, iframe { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; transition: color var(--t); }

h1, h2, h3, h4, h5 {
	font-family: var(--font-display);
	font-weight: 600;
	line-height: 1.14;
	color: var(--espresso);
	margin: 0 0 .5em;
	letter-spacing: -.005em;
}
p { margin: 0 0 1.15em; }
strong, b { font-weight: 700; color: var(--espresso); }

button { font-family: inherit; cursor: pointer; }
:focus-visible { outline: 2px solid var(--bronze); outline-offset: 3px; }
::selection { background: var(--espresso); color: var(--bone); }

/* Tabular figures everywhere numerals matter. */
.stat__num, .p-card__price strong, .fact__val, .error-404__code,
.post-card__date, .about__badge-num { font-variant-numeric: tabular-nums; }

/* =========================================================
   2. Helpers
   ========================================================= */
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.container--narrow { max-width: var(--container-narrow); }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px;
	clip: rect(1px,1px,1px,1px); clip-path: inset(50%);
	overflow: hidden; white-space: nowrap; border: 0; padding: 0; margin: -1px;
}
.skip-link {
	position: fixed; inset-block-start: -120px; inset-inline-start: 16px; z-index: 2000;
	background: var(--espresso); color: var(--bone); padding: 12px 20px;
	transition: inset-block-start var(--t);
}
.skip-link:focus { inset-block-start: 0; color: var(--bone); }

.ico { width: 1.1em; height: 1.1em; flex: none; vertical-align: middle; }

/* Wayfinding label (the recurring "spec label"). */
.kicker {
	display: inline-flex; align-items: center; gap: 14px;
	font-family: var(--font-mark); font-size: .74rem; font-weight: 600;
	letter-spacing: .24em; text-transform: uppercase;
	color: var(--bronze); margin-block-end: 22px;
}
.kicker__rule { width: 34px; height: 1px; background: var(--bronze); flex: none; }

/* Section rhythm. */
.stats, .about, .projects, .why, .leadership, .partners,
.contact, .blog, .page-body, .project-body { padding-block: var(--section-y); }

.section-head {
	display: flex; align-items: flex-end; justify-content: space-between;
	gap: 28px; flex-wrap: wrap;
	margin-block-end: clamp(40px, 6vw, 72px);
	padding-block-end: 24px;
	border-block-end: 1px solid var(--line);
}
.section-head--center {
	display: block; text-align: center;
	border-block-end: 0; padding-block-end: 0;
	margin-inline: auto; max-width: 760px;
}
.section-head--center .kicker { justify-content: center; }
.section-title { font-size: clamp(2rem, 4.4vw, 3.4rem); margin: 0; }
.section-title--light { color: var(--bone); }
.section-head__link {
	display: inline-flex; align-items: center; gap: 9px;
	font-family: var(--font-mark); font-size: .8rem; font-weight: 600;
	letter-spacing: .12em; text-transform: uppercase;
	color: var(--espresso); white-space: nowrap; padding-block-end: 4px;
	border-block-end: 1px solid var(--bronze);
}
.section-head__link:hover { color: var(--bronze); }
.section-head__link .ico { transition: transform var(--t); }
[dir="rtl"] .section-head__link:hover .ico { transform: translateX(-5px); }
[dir="ltr"] .section-head__link:hover .ico { transform: translateX(5px); }

/* =========================================================
   3. Buttons — quiet, precise, hairline-driven
   ========================================================= */
.btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 11px;
	padding: 15px 30px;
	font-family: var(--font-mark); font-size: .86rem; font-weight: 600;
	letter-spacing: .1em; text-transform: uppercase; line-height: 1;
	border: 1px solid transparent; border-radius: var(--radius);
	transition: background var(--t), color var(--t), border-color var(--t), transform var(--t);
}
.btn .ico { width: 1.05em; height: 1.05em; }
.btn:active { transform: translateY(1px); }

.btn--gold { background: var(--espresso); color: var(--bone); }
.btn--gold:hover { background: var(--bronze); color: var(--espresso); }

.btn--dark { background: var(--espresso); color: var(--bone); border-color: var(--espresso); }
.btn--dark:hover { background: transparent; color: var(--espresso); }

.btn--ghost { background: transparent; color: var(--espresso); border-color: var(--line); }
.btn--ghost:hover { border-color: var(--espresso); }

.btn--ghost-light { background: transparent; color: var(--bone); border-color: var(--line-dark); }
.btn--ghost-light:hover { border-color: var(--brass); color: var(--brass); }

.btn--lg { padding: 17px 38px; font-size: .9rem; }
.btn--block { width: 100%; }

/* On dark backgrounds the primary CTA must read as light, not espresso-on-espresso. */
.hero .btn--gold, .cta-band .btn--gold, .project-hero .btn--gold {
	background: var(--brass); color: var(--espresso); border-color: var(--brass);
}
.hero .btn--gold:hover, .cta-band .btn--gold:hover, .project-hero .btn--gold:hover {
	background: var(--bone); color: var(--espresso); border-color: var(--bone);
}

/* =========================================================
   4. Topbar
   ========================================================= */
.topbar { background: var(--espresso); color: var(--stone-dark); border-block-end: 1px solid var(--line-dark); }
.topbar__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 40px; padding-block: 5px; font-size: .82rem; }
.topbar__text { letter-spacing: .02em; }
.topbar__contact { display: inline-flex; align-items: center; gap: 24px; }
.topbar__contact a { display: inline-flex; align-items: center; gap: 8px; color: var(--bone-text); font-family: var(--font-mark); font-size: .78rem; letter-spacing: .04em; }
.topbar__contact a:hover { color: var(--brass); }
.topbar__contact .ico { color: var(--bronze); width: 1em; height: 1em; }

/* =========================================================
   5. Header
   ========================================================= */
.site-header {
	position: sticky; inset-block-start: 0; z-index: 900;
	background: rgba(239,234,224,.86);
	backdrop-filter: saturate(140%) blur(12px);
	border-block-end: 1px solid var(--line-soft);
	transition: background var(--t), border-color var(--t);
}
.site-header.is-scrolled { background: rgba(239,234,224,.97); border-color: var(--line); }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 28px; min-height: var(--header-h); }

.site-branding img, .custom-logo { max-height: 46px; width: auto; }
.site-branding .custom-logo-link { display: inline-flex; }
.brand-text { display: inline-flex; align-items: baseline; gap: 12px; }
.brand-text__afg { font-family: var(--font-mark); font-weight: 700; font-size: 1.5rem; letter-spacing: .14em; color: var(--bronze); }
.brand-text__name { font-family: var(--font-display); font-size: 1.05rem; color: var(--espresso); }

/* Primary nav */
.main-nav .menu { display: flex; align-items: center; gap: 4px; list-style: none; margin: 0; padding: 0; }
.main-nav .menu a {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 10px 16px; color: var(--espresso);
	font-size: .98rem; font-weight: 500; position: relative;
}
.main-nav .menu > li > a::after {
	content: ""; position: absolute; inset-inline: 16px; inset-block-end: 6px;
	height: 1px; background: var(--bronze); transform: scaleX(0); transform-origin: inline-start;
	transition: transform var(--t);
}
.main-nav .menu > li > a:hover, .main-nav .menu > li.current-menu-item > a { color: var(--bronze); }
.main-nav .menu > li > a:hover::after, .main-nav .menu > li.current-menu-item > a::after { transform: scaleX(1); }
.caret { width: 0; height: 0; border-inline: 4px solid transparent; border-block-start: 5px solid currentColor; opacity: .6; }

.main-nav .menu li { position: relative; }
.main-nav .sub-menu {
	position: absolute; inset-block-start: calc(100% + 8px); inset-inline-start: 0;
	min-width: 220px; background: var(--paper);
	border: 1px solid var(--line); box-shadow: var(--shadow);
	list-style: none; margin: 0; padding: 8px;
	opacity: 0; visibility: hidden; transform: translateY(8px);
	transition: opacity var(--t), transform var(--t), visibility var(--t); z-index: 50;
}
.main-nav .menu li:hover > .sub-menu, .main-nav .menu li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.main-nav .sub-menu a { padding: 9px 12px; }
.main-nav .sub-menu a:hover { color: var(--bronze); }

.header-actions { display: flex; align-items: center; gap: 14px; }
.header-cta .ico { width: 1.05em; height: 1.05em; }

/* Hamburger */
.nav-toggle {
	display: none; flex-direction: column; gap: 5px;
	width: 46px; height: 46px; align-items: center; justify-content: center;
	background: transparent; border: 1px solid var(--line); border-radius: var(--radius);
}
.nav-toggle__bar { width: 22px; height: 1.5px; background: var(--espresso); transition: transform var(--t), opacity var(--t); }
.nav-toggle.is-active .nav-toggle__bar:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.nav-toggle.is-active .nav-toggle__bar:nth-child(2) { opacity: 0; }
.nav-toggle.is-active .nav-toggle__bar:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

/* Mobile nav */
.mobile-nav {
	position: fixed; inset-block-start: var(--header-h); inset-inline: 0;
	background: var(--bone); border-block-start: 1px solid var(--line);
	padding: 20px var(--gutter) 32px; max-height: calc(100dvh - var(--header-h)); overflow-y: auto;
	transform: translateY(-12px); opacity: 0; visibility: hidden;
	transition: transform var(--t), opacity var(--t), visibility var(--t); z-index: 850;
}
.mobile-nav.is-open { transform: translateY(0); opacity: 1; visibility: visible; }
.mobile-nav .menu, .mobile-nav .mobile-menu { list-style: none; margin: 0 0 18px; padding: 0; }
.mobile-nav .menu a, .mobile-nav .mobile-menu a {
	display: block; padding: 15px 4px; color: var(--espresso);
	font-family: var(--font-display); font-size: 1.2rem;
	border-block-end: 1px solid var(--line-soft);
}
.mobile-nav .menu a:hover, .mobile-nav .mobile-menu a:hover { color: var(--bronze); }
.mobile-nav .sub-menu { list-style: none; padding-inline-start: 16px; }
.mobile-nav .mobile-cta { margin-block-start: 8px; }
body.nav-open { overflow: hidden; }

/* =========================================================
   6. Hero — editorial "datum" hero
   ========================================================= */
.hero {
	position: relative; min-height: 92svh; display: flex; align-items: flex-end;
	background: var(--espresso); color: var(--bone-text); overflow: hidden; isolation: isolate;
}
.hero__media { position: absolute; inset: 0; z-index: -2; background: var(--espresso); }
.hero--has-image .hero__media {
	background-image: var(--hero-image); background-size: cover; background-position: center;
	transform: scale(1.06); animation: hero-settle 1.6s var(--ease) forwards;
}
@keyframes hero-settle { to { transform: scale(1); } }
.hero--blueprint .hero__media {
	background-image:
		linear-gradient(var(--line-dark) 1px, transparent 1px),
		linear-gradient(90deg, var(--line-dark) 1px, transparent 1px);
	background-size: 64px 64px, 64px 64px;
	opacity: .5;
}
.hero__scrim {
	position: absolute; inset: 0; z-index: -1;
	background:
		linear-gradient(to top, var(--espresso) 4%, rgba(30,26,21,.58) 32%, rgba(30,26,21,.12) 62%, rgba(30,26,21,.28) 100%);
}
.hero--blueprint .hero__scrim { background: radial-gradient(120% 90% at 80% 10%, rgba(154,123,74,.12), transparent 55%); }

.hero__rail {
	position: absolute; inset-block-end: clamp(96px, 16vh, 160px); inset-inline-start: clamp(18px, 3vw, 40px);
	writing-mode: vertical-rl; transform: rotate(180deg);
	font-family: var(--font-mark); font-size: .72rem; font-weight: 600;
	letter-spacing: .42em; text-transform: uppercase; color: var(--stone-dark); z-index: 2;
}
.hero__inner { position: relative; max-width: 980px; padding-block: 150px clamp(56px, 9vw, 120px); }

.hero__datum { display: flex; align-items: center; gap: 18px; margin-block-end: 30px; }
.hero__datum-label { font-family: var(--font-mark); font-size: .74rem; font-weight: 600; letter-spacing: .26em; text-transform: uppercase; color: var(--brass); white-space: nowrap; }
.hero__datum-line { position: relative; flex: 1; height: 1px; background: var(--line-dark); max-width: 280px; }
.hero__datum-line::before, .hero__datum-line::after { content: ""; position: absolute; inset-block-start: -4px; width: 1px; height: 9px; background: var(--brass); }
.hero__datum-line::before { inset-inline-start: 0; }
.hero__datum-line::after { inset-inline-end: 0; }
.hero__datum-mark { font-family: var(--font-mark); font-size: .8rem; font-weight: 700; letter-spacing: .16em; color: var(--brass); }

.hero__title { font-size: clamp(2.6rem, 6.6vw, 5.6rem); line-height: 1.04; color: #fff; max-width: 16ch; margin-block-end: 26px; }
.hero__title strong, .hero__title b { color: var(--brass); font-weight: 600; }
.hero__subtitle { font-size: clamp(1.05rem, 1.8vw, 1.32rem); line-height: 1.7; color: var(--stone-dark); max-width: 54ch; margin-block-end: 38px; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 16px; }

.hero__scroll {
	position: absolute; inset-block-end: clamp(24px, 4vw, 44px); inset-inline-end: clamp(24px, 4vw, 52px);
	display: flex; flex-direction: column; align-items: center; gap: 14px; z-index: 2;
}
.hero__scroll-text { writing-mode: vertical-rl; font-family: var(--font-mark); font-size: .68rem; font-weight: 600; letter-spacing: .26em; text-transform: uppercase; color: var(--stone-dark); }
.hero__scroll-line { position: relative; width: 1px; height: 56px; background: var(--line-dark); overflow: hidden; }
.hero__scroll-line::after { content: ""; position: absolute; inset-inline: 0; inset-block-start: -60%; height: 60%; background: var(--brass); animation: scroll-run 2s var(--ease) infinite; }
@keyframes scroll-run { 0% { inset-block-start: -60%; } 60%, 100% { inset-block-start: 120%; } }
.hero__scroll:hover .hero__scroll-text { color: var(--brass); }

/* =========================================================
   7. Stats — editorial ledger row
   ========================================================= */
.stats { padding-block: clamp(48px, 7vw, 84px); background: var(--bone); }
.stats__inner { display: grid; grid-template-columns: repeat(4, 1fr); }
.stat { padding: 8px clamp(16px, 3vw, 40px); position: relative; }
.stat + .stat { border-inline-start: 1px solid var(--line); }
.stat__num {
	display: block; font-family: var(--font-mark); font-weight: 600;
	font-size: clamp(2.6rem, 5vw, 4rem); line-height: 1; color: var(--espresso);
	margin-block-end: 12px;
}
.stat__num::before { content: ""; display: block; width: 26px; height: 1px; background: var(--bronze); margin-block-end: 18px; }
.stat__label { font-family: var(--font-body); font-size: .92rem; color: var(--stone); letter-spacing: .01em; }

/* =========================================================
   8. About
   ========================================================= */
.about { background: var(--bone); }
.about__grid { display: grid; grid-template-columns: 1fr 1.1fr; gap: clamp(36px, 6vw, 88px); align-items: center; }
.about__media { position: relative; }
.about__media img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--radius-lg); }
.about__media-placeholder {
	display: flex; align-items: center; justify-content: center; aspect-ratio: 4 / 5;
	border-radius: var(--radius-lg); background: var(--paper); border: 1px solid var(--line); color: rgba(154,123,74,.35);
}
.about__media-placeholder .ico { width: 80px; height: 80px; }
.about__badge {
	position: absolute; inset-block-end: 26px; inset-inline-start: -1px;
	background: var(--espresso); color: var(--bone); padding: 18px 24px; text-align: center; min-width: 116px;
}
.about__badge-num { display: block; font-family: var(--font-mark); font-weight: 600; font-size: 2.1rem; line-height: 1; color: var(--brass); }
.about__badge-text { font-size: .78rem; color: var(--stone-dark); letter-spacing: .02em; }
.about__text { font-size: 1.1rem; line-height: 1.85; color: var(--ink-soft); margin-block-end: 1.8em; }
.about--page { background: var(--bone); }

/* =========================================================
   9. Projects + catalogue cards
   ========================================================= */
.projects { background: var(--paper); }
.p-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(24px, 3vw, 44px); counter-reset: portfolio; }

.p-card { counter-increment: portfolio; position: relative; display: flex; flex-direction: column; background: transparent; }
.p-card__media {
	position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden;
	background: var(--espresso); border-radius: var(--radius);
}
.p-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); }
.p-card:hover .p-card__media img { transform: scale(1.05); }
.p-card__noimg { display: flex; align-items: center; justify-content: center; height: 100%; color: rgba(198,165,107,.4); }
.p-card__noimg .ico { width: 54px; height: 54px; }
.p-card__media::after {
	content: counter(portfolio, decimal-leading-zero);
	position: absolute; inset-block-start: 14px; inset-inline-end: 16px;
	font-family: var(--font-mark); font-size: .74rem; font-weight: 600; letter-spacing: .14em; color: var(--bone);
	text-shadow: 0 1px 6px rgba(0,0,0,.4);
}
.p-card__status {
	position: absolute; inset-block-start: 14px; inset-inline-start: 14px;
	background: rgba(30,26,21,.72); color: var(--bone); backdrop-filter: blur(4px);
	font-family: var(--font-mark); font-size: .68rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
	padding: 6px 12px; border-radius: 2px;
}
.p-card__body { padding: 22px 2px 0; display: flex; flex-direction: column; flex: 1; }
.p-card__loc {
	display: inline-flex; align-items: center; gap: 7px;
	font-family: var(--font-mark); font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
	color: var(--stone); margin-block-end: 10px;
}
.p-card__loc .ico { color: var(--bronze); width: 1em; height: 1em; }
.p-card__title { font-size: 1.5rem; margin-block-end: 8px; }
.p-card__title a:hover { color: var(--bronze); }
.p-card__sub { color: var(--stone); font-size: .96rem; margin-block-end: 18px; }
.p-card__foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-block-start: auto; padding-block-start: 18px; border-block-start: 1px solid var(--line); }
.p-card__price { display: flex; flex-direction: column; line-height: 1.3; }
.p-card__price span { font-family: var(--font-mark); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--stone); }
.p-card__price strong { font-family: var(--font-mark); font-size: 1.1rem; font-weight: 600; color: var(--espresso); }
.p-card__more { display: inline-flex; align-items: center; gap: 7px; font-family: var(--font-mark); font-size: .76rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--bronze); }
.p-card__more .ico { width: 1em; height: 1em; transition: transform var(--t); }
[dir="rtl"] .p-card:hover .p-card__more .ico { transform: translateX(-5px); }
[dir="ltr"] .p-card:hover .p-card__more .ico { transform: translateX(5px); }

/* =========================================================
   10. Why us — hairline ledger
   ========================================================= */
.why { background: var(--bone); }
.why__grid { display: grid; grid-template-columns: repeat(4, 1fr); border-block-start: 1px solid var(--line); }
.why__card { padding: 40px clamp(20px, 2vw, 30px) 8px; border-block-end: 1px solid transparent; }
.why__card + .why__card { border-inline-start: 1px solid var(--line); }
.why__icon { display: inline-flex; color: var(--bronze); margin-block-end: 24px; }
.why__icon .ico { width: 34px; height: 34px; }
.why__title { font-size: 1.3rem; margin-block-end: 12px; }
.why__text { color: var(--stone); font-size: .98rem; margin: 0; }

/* =========================================================
   11. Leadership — espresso band
   ========================================================= */
.leadership { background: var(--espresso); position: relative; isolation: isolate; }
.leadership .kicker { color: var(--brass); }
.leadership .kicker__rule { background: var(--brass); }
.lead__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(28px, 4vw, 56px); max-width: 1000px; margin-inline: auto; }
.lead__card { text-align: center; margin: 0; }
.lead__photo {
	width: 138px; height: 138px; margin: 0 auto 22px; overflow: hidden;
	border-radius: 50%; background: var(--bistre); border: 1px solid var(--line-dark);
}
.lead__photo img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); transition: filter var(--t); }
.lead__card:hover .lead__photo img { filter: grayscale(0); }
.lead__initials { display: flex; align-items: center; justify-content: center; height: 100%; font-family: var(--font-mark); font-size: 3rem; font-weight: 600; color: var(--brass); }
.lead__name { display: block; font-family: var(--font-display); font-size: 1.3rem; color: var(--bone); }
.lead__role { display: block; font-family: var(--font-mark); font-size: .74rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--brass); margin-block-start: 8px; }

/* =========================================================
   12. Partners
   ========================================================= */
.partners { background: var(--paper); }
.partners__row { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: clamp(28px, 5vw, 72px); }
.partner { display: flex; align-items: center; justify-content: center; min-height: 64px; min-width: 130px; filter: grayscale(1); opacity: .55; transition: opacity var(--t), filter var(--t); }
.partner:hover { filter: grayscale(0); opacity: 1; }
.partner img { max-height: 56px; width: auto; object-fit: contain; }
.partner__name { font-family: var(--font-display); font-size: 1.3rem; color: var(--stone); }

/* =========================================================
   13. CTA band
   ========================================================= */
.cta-band { background: var(--espresso); color: var(--bone-text); position: relative; overflow: hidden; isolation: isolate; }
.cta-band::before { content: ""; position: absolute; inset-block: 0; inset-inline-start: clamp(24px,8vw,120px); width: 1px; background: linear-gradient(var(--espresso), var(--line-dark) 30%, var(--brass) 50%, var(--line-dark) 70%, var(--espresso)); }
.cta-band__inner { display: flex; align-items: center; justify-content: space-between; gap: 36px; flex-wrap: wrap; padding-block: clamp(56px, 8vw, 96px); }
.cta-band__text { max-width: 620px; }
.cta-band__text h2 { color: #fff; font-size: clamp(1.8rem, 3.6vw, 2.8rem); margin-block-end: 12px; }
.cta-band__text p { color: var(--stone-dark); margin: 0; font-size: 1.1rem; }
.cta-band__actions { display: flex; flex-wrap: wrap; gap: 14px; }

/* =========================================================
   14. Footer
   ========================================================= */
.site-footer { background: var(--espresso); color: var(--stone-dark); padding-block-start: clamp(56px, 8vw, 92px); }
.footer-grid { display: grid; grid-template-columns: 1.7fr 1fr 1.3fr; gap: clamp(32px, 5vw, 72px); padding-block-end: 52px; border-block-end: 1px solid var(--line-dark); }
.footer-col .custom-logo { max-height: 50px; }
.brand-text--footer { display: inline-flex; align-items: baseline; gap: 11px; margin-block-end: 6px; }
.footer-col--brand .brand-text__name { color: var(--bone); }
.footer-about { margin-block: 18px 24px; font-size: .96rem; line-height: 1.85; max-width: 38ch; }
.footer-title { font-family: var(--font-mark); font-size: .78rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--bone); margin-block-end: 22px; }
.footer-menu { list-style: none; margin: 0; padding: 0; }
.footer-menu li { margin-block-end: 12px; }
.footer-menu a { color: var(--stone-dark); }
.footer-menu a:hover { color: var(--brass); }
.footer-contact { list-style: none; margin: 0; padding: 0; }
.footer-contact li { display: flex; align-items: flex-start; gap: 12px; margin-block-end: 15px; font-size: .96rem; }
.footer-contact a { color: var(--stone-dark); }
.footer-contact a:hover { color: var(--brass); }
.footer-contact .ico { color: var(--bronze); margin-block-start: 3px; width: 1.05em; height: 1.05em; }

.social-links { display: flex; gap: 10px; flex-wrap: wrap; }
.soc { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border: 1px solid var(--line-dark); color: var(--bone-text); border-radius: var(--radius); transition: background var(--t), color var(--t), border-color var(--t); }
.soc:hover { background: var(--bronze); color: var(--espresso); border-color: var(--bronze); }
.soc .ico { width: 18px; height: 18px; }

.footer-widgets { padding-block: 32px; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); gap: 28px; }
.widget-title { color: var(--bone); font-family: var(--font-mark); font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; margin-block-end: 14px; }
.widget ul { list-style: none; margin: 0; padding: 0; }
.widget li { margin-block-end: 9px; }

.footer-credit { border-block-start: 1px solid var(--line-dark); }
.footer-credit__inner { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding-block: 24px; font-family: var(--font-mark); font-size: .78rem; letter-spacing: .04em; }
.footer-credit__by a { color: var(--brass); font-weight: 600; }

.float-wa {
	position: fixed; inset-block-end: 24px; inset-inline-end: 24px; z-index: 800;
	width: 54px; height: 54px; display: flex; align-items: center; justify-content: center;
	border-radius: 50%; background: #25D366; color: #fff;
	box-shadow: 0 14px 30px -10px rgba(37,211,102,.55); transition: transform var(--t);
}
.float-wa:hover { transform: translateY(-3px); color: #fff; }
.float-wa .ico { width: 27px; height: 27px; }

/* =========================================================
   15. Page banner
   ========================================================= */
.page-banner { position: relative; background: var(--espresso); color: var(--bone-text); padding-block: clamp(80px, 12vw, 150px) clamp(48px, 6vw, 80px); overflow: hidden; isolation: isolate; }
.page-banner::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(90% 120% at 88% 0%, rgba(154,123,74,.14), transparent 55%); }
.page-banner__spine { position: absolute; inset-block-end: clamp(48px,6vw,80px); inset-inline-start: var(--gutter); inset-inline-end: var(--gutter); height: 1px; background: var(--line-dark); }
.page-banner__inner { position: relative; }
.page-banner__kicker { display: inline-block; font-family: var(--font-mark); font-size: .74rem; font-weight: 600; letter-spacing: .26em; text-transform: uppercase; color: var(--brass); margin-block-end: 20px; }
.page-banner__title { font-size: clamp(2.1rem, 5vw, 3.6rem); color: #fff; margin: 0; }
.page-banner__sub { color: var(--stone-dark); max-width: 56ch; margin-block-start: 16px; font-size: 1.12rem; }

.crumb { display: flex; align-items: center; gap: 9px; margin-block-start: 24px; font-family: var(--font-mark); font-size: .76rem; letter-spacing: .08em; text-transform: uppercase; color: var(--stone); }
.crumb a:hover { color: var(--bronze); }
.crumb__sep { opacity: .5; }
.crumb__current { color: var(--espresso); }
.crumb--light { color: var(--stone-dark); }
.crumb--light a { color: var(--stone-dark); }
.crumb--light a:hover { color: var(--brass); }
.crumb--light .crumb__current { color: var(--brass); }

/* =========================================================
   16. Page body + entry content
   ========================================================= */
.page-body { background: var(--bone); }
.entry-content { font-size: 1.08rem; line-height: 1.9; color: var(--ink-soft); }
.entry-content > *:first-child { margin-block-start: 0; }
.entry-content h2 { font-size: 1.9rem; margin-block: 1.5em .6em; }
.entry-content h3 { font-size: 1.45rem; margin-block: 1.3em .5em; }
.entry-content a { color: var(--bronze); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.entry-content a:hover { color: var(--espresso); }
.entry-content img { border-radius: var(--radius); margin-block: 1.2em; }
.entry-content blockquote { margin: 1.5em 0; padding: 4px 26px; border-inline-start: 2px solid var(--bronze); font-family: var(--font-display); font-size: 1.3rem; color: var(--espresso); }
.entry-content ul { list-style: none; padding-inline-start: 0; }
.entry-content ul li { position: relative; padding-inline-start: 24px; margin-block-end: .5em; }
.entry-content ul li::before { content: ""; position: absolute; inset-inline-start: 0; inset-block-start: .8em; width: 8px; height: 1px; background: var(--bronze); }
.entry-content ol { padding-inline-start: 1.3em; }
.page-links { margin-block-start: 1.5em; font-family: var(--font-mark); font-weight: 600; letter-spacing: .06em; }
.page-links a { color: var(--bronze); margin-inline: 6px; }

/* =========================================================
   17. Single project
   ========================================================= */
.project-hero { position: relative; min-height: clamp(440px, 72vh, 660px); display: flex; align-items: flex-end; color: var(--bone-text); background: var(--espresso); overflow: hidden; isolation: isolate; }
.project-hero__bg { position: absolute; inset: 0; z-index: -1; }
.project-hero__bg img { width: 100%; height: 100%; object-fit: cover; }
.project-hero__veil { position: absolute; inset: 0; background: linear-gradient(to top, var(--espresso) 6%, rgba(30,26,21,.5) 45%, rgba(30,26,21,.18) 100%); }
.project-hero__inner { position: relative; width: 100%; padding-block: 56px clamp(40px, 6vw, 64px); }
.project-hero__meta { display: flex; flex-wrap: wrap; gap: 10px; margin-block: 20px 16px; }
.chip { display: inline-flex; align-items: center; gap: 7px; padding: 7px 14px; border-radius: 2px; font-family: var(--font-mark); font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; background: rgba(233,226,213,.1); border: 1px solid var(--line-dark); }
.chip .ico { color: var(--brass); width: 1em; height: 1em; }
.chip--type { background: transparent; }
.chip--status { background: var(--brass); color: var(--espresso); border-color: transparent; }
.project-hero__title { font-size: clamp(2.2rem, 5vw, 3.8rem); color: #fff; margin: 0; }
.project-hero__sub { color: var(--stone-dark); font-size: 1.18rem; margin-block: 14px 26px; max-width: 60ch; }
.project-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; }

.project-facts { background: var(--espresso); padding-block: 0; }
.project-facts__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); border-block: 1px solid var(--line-dark); }
.fact { padding: 30px 20px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.fact + .fact { border-inline-start: 1px solid var(--line-dark); }
.fact__icon { color: var(--bronze); }
.fact__icon .ico { width: 26px; height: 26px; }
.fact__val { font-family: var(--font-mark); font-size: 1.3rem; font-weight: 600; color: var(--bone); }
.fact__label { font-size: .82rem; color: var(--stone-dark); }

.project-body { background: var(--bone); }
.project-body__grid { display: grid; grid-template-columns: 1fr 340px; gap: clamp(36px, 5vw, 72px); align-items: start; }
.project-sub-title { font-size: 1.6rem; margin-block: 1.6em .8em; padding-block-end: 14px; border-block-end: 1px solid var(--line); }
.feature-list { list-style: none; padding: 0; margin: 0 0 1.6em; display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px 28px; }
.feature-list li { display: flex; align-items: flex-start; gap: 11px; }
.feature-list .ico { color: var(--bronze); margin-block-start: 4px; width: 1.05em; height: 1.05em; }
.project-map { border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); }
.project-map iframe { width: 100%; min-height: 360px; border: 0; display: block; }

.project-body__aside { position: sticky; inset-block-start: calc(var(--header-h) + 20px); }
.enquiry-card { background: var(--espresso); color: var(--bone-text); padding: 34px 30px; border-radius: var(--radius-lg); }
.enquiry-card h3 { color: #fff; font-size: 1.45rem; margin-block-end: 12px; }
.enquiry-card p { color: var(--stone-dark); font-size: .96rem; margin-block-end: 24px; }
.enquiry-card .btn { margin-block-end: 12px; }
.enquiry-card .btn:last-child { margin-block-end: 0; }
.enquiry-card .btn--gold { background: var(--brass); color: var(--espresso); }
.enquiry-card .btn--gold:hover { background: var(--bone); }
.enquiry-card .btn--dark { background: transparent; color: var(--bone); border-color: var(--line-dark); }
.enquiry-card .btn--dark:hover { border-color: var(--brass); color: var(--brass); }
.projects--related { background: var(--paper); }

/* =========================================================
   18. Archive / filters / pagination / empty
   ========================================================= */
.archive-projects { background: var(--bone); padding-block: clamp(48px, 6vw, 80px); }
.filter-bar { display: flex; flex-wrap: wrap; gap: 8px; margin-block-end: 40px; }
.filter-chip { padding: 9px 20px; border: 1px solid var(--line); border-radius: 2px; font-family: var(--font-mark); font-size: .76rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--espresso); transition: background var(--t), color var(--t), border-color var(--t); }
.filter-chip:hover { border-color: var(--espresso); }
.filter-chip.is-active { background: var(--espresso); color: var(--bone); border-color: var(--espresso); }

.pagination { display: flex; justify-content: center; margin-block-start: 56px; }
.pagination .nav-links { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 46px; height: 46px; padding: 0 12px; border: 1px solid var(--line); font-family: var(--font-mark); font-weight: 600; color: var(--espresso); }
.pagination .page-numbers:hover { border-color: var(--espresso); }
.pagination .page-numbers.current { background: var(--espresso); color: var(--bone); border-color: var(--espresso); }
.pagination .page-numbers.dots { border-color: transparent; }

.empty-state { text-align: center; padding: 80px 20px; color: var(--stone); font-size: 1.1rem; }

/* =========================================================
   19. Blog + posts
   ========================================================= */
.blog { background: var(--bone); }
.blog__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(24px, 3vw, 44px); }
.post-card { display: flex; flex-direction: column; }
.post-card__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--espresso); display: block; border-radius: var(--radius); }
.post-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); }
.post-card:hover .post-card__media img { transform: scale(1.04); }
.post-card__noimg { display: flex; align-items: center; justify-content: center; height: 100%; color: rgba(198,165,107,.4); }
.post-card__noimg .ico { width: 46px; height: 46px; }
.post-card__body { padding: 20px 2px 0; display: flex; flex-direction: column; flex: 1; }
.post-card__date { font-family: var(--font-mark); font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--bronze); margin-block-end: 10px; }
.post-card__title { font-size: 1.3rem; margin-block-end: 10px; }
.post-card__title a:hover { color: var(--bronze); }
.post-card__excerpt { color: var(--stone); font-size: .96rem; margin-block-end: 16px; }
.post-card__more { display: inline-flex; align-items: center; gap: 7px; font-family: var(--font-mark); font-size: .76rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--bronze); margin-block-start: auto; }
.post-card__more .ico { width: 1em; height: 1em; }

.single-post__thumb { margin: 0 0 36px; border-radius: var(--radius-lg); overflow: hidden; }
.single-post__thumb img { width: 100%; object-fit: cover; }
.single-post__terms { margin-block-start: 36px; padding-block-start: 24px; border-block-start: 1px solid var(--line); }
.tags a { display: inline-block; margin: 0 0 8px; margin-inline-end: 8px; padding: 5px 13px; border: 1px solid var(--line); border-radius: 2px; font-family: var(--font-mark); font-size: .74rem; font-weight: 600; letter-spacing: .06em; color: var(--bronze); }
.tags a:hover { border-color: var(--bronze); }
.post-nav { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-block-start: 44px; padding-block-start: 28px; border-block-start: 1px solid var(--line); }
.post-nav a { display: inline-flex; padding: 13px 20px; border: 1px solid var(--line); font-family: var(--font-mark); font-size: .82rem; font-weight: 600; letter-spacing: .06em; color: var(--espresso); transition: border-color var(--t); }
.post-nav a:hover { border-color: var(--espresso); }

.comments-area { margin-block-start: 56px; }
.comment-list { list-style: none; padding: 0; }
.comment-respond input[type="text"], .comment-respond input[type="email"], .comment-respond input[type="url"], .comment-respond textarea {
	width: 100%; padding: 13px 15px; border: 1px solid var(--line); border-radius: var(--radius); font-family: inherit; margin-block-end: 14px; background: var(--paper);
}

/* =========================================================
   20. 404
   ========================================================= */
.error-404 { position: relative; background: var(--espresso); color: var(--bone-text); text-align: center; padding-block: clamp(90px, 13vw, 160px); overflow: hidden; isolation: isolate; }
.error-404__spine { position: absolute; inset-block: 0; inset-inline-start: 50%; width: 1px; transform: translateX(-50%); background: linear-gradient(var(--espresso), var(--line-dark) 40%, var(--brass) 50%, var(--line-dark) 60%, var(--espresso)); z-index: -1; }
.error-404__code { font-family: var(--font-mark); font-size: clamp(5rem, 18vw, 11rem); font-weight: 700; line-height: 1; color: var(--brass); }
.error-404__title { color: #fff; font-size: clamp(1.6rem, 4vw, 2.4rem); margin-block: 12px; }
.error-404__text { color: var(--stone-dark); max-width: 480px; margin: 0 auto 30px; }
.error-404__actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; margin-block-end: 32px; }
.error-404__search { max-width: 420px; margin-inline: auto; }

/* =========================================================
   21. Search form
   ========================================================= */
.search-form { display: flex; gap: 8px; }
.search-field { flex: 1; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius); font-family: inherit; font-size: 1rem; background: var(--paper); color: var(--espresso); }
.error-404 .search-field { background: rgba(233,226,213,.08); color: var(--bone); border-color: var(--line-dark); }
.error-404 .search-field::placeholder { color: var(--stone-dark); }
.search-submit { padding: 14px 24px; border: 0; border-radius: var(--radius); background: var(--bronze); color: var(--espresso); font-family: var(--font-mark); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.search-submit:hover { background: var(--espresso); color: var(--bone); }

/* =========================================================
   22. Contact
   ========================================================= */
.contact { background: var(--bone); }
.contact__grid { display: grid; grid-template-columns: 1fr 1.05fr; gap: clamp(36px, 5vw, 72px); align-items: start; }
.contact__cards { list-style: none; padding: 0; margin: 28px 0; display: grid; gap: 0; border-block-start: 1px solid var(--line); }
.contact-card { display: flex; align-items: flex-start; gap: 18px; padding: 22px 4px; border-block-end: 1px solid var(--line); }
.contact-card__icon { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; flex: none; border: 1px solid var(--line); color: var(--bronze); border-radius: var(--radius); }
.contact-card__icon .ico { width: 21px; height: 21px; }
.contact-card__label { display: block; font-family: var(--font-mark); font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: var(--stone); margin-block-end: 4px; }
.contact-card__val { display: block; font-weight: 600; color: var(--espresso); }
.contact__info .social-links { margin-block-start: 26px; }
.contact__info .soc { border-color: var(--line); color: var(--espresso); }
.contact__info .soc:hover { background: var(--espresso); color: var(--bone); border-color: var(--espresso); }

.contact__form-wrap { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: clamp(28px, 4vw, 44px); }
.contact__form-title { font-size: 1.7rem; margin-block-end: 8px; }
.contact__form-note { color: var(--stone); margin-block-end: 26px; font-size: .96rem; }
.lead-form .field { margin-block-end: 18px; }
.lead-form label { display: block; font-family: var(--font-mark); font-size: .74rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; margin-block-end: 8px; color: var(--ink-soft); }
.lead-form input, .lead-form select, .lead-form textarea { width: 100%; padding: 14px 15px; border: 1px solid var(--line); border-radius: var(--radius); font-family: inherit; font-size: 1rem; background: var(--bone); color: var(--espresso); transition: border-color var(--t), box-shadow var(--t); }
.lead-form input:focus, .lead-form select:focus, .lead-form textarea:focus { outline: none; border-color: var(--bronze); box-shadow: 0 0 0 3px rgba(154,123,74,.14); }
.lead-form textarea { resize: vertical; }
.contact__map { margin-block-start: 44px; border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--line); }
.contact__map iframe { width: 100%; min-height: 400px; border: 0; display: block; }

/* =========================================================
   23. Reveal animation
   ========================================================= */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .8s var(--ease), transform .8s var(--ease); will-change: opacity, transform; }
.reveal.is-visible { opacity: 1; transform: none; }

/* =========================================================
   24. Responsive
   ========================================================= */
@media (max-width: 1024px) {
	.p-grid, .blog__grid { grid-template-columns: repeat(2, 1fr); }
	.why__grid { grid-template-columns: repeat(2, 1fr); }
	.why__card:nth-child(-n+2) { border-block-end: 1px solid var(--line); }
	.why__card:nth-child(odd) { border-inline-start: 0; }
	.project-body__grid { grid-template-columns: 1fr; }
	.project-body__aside { position: static; max-width: 480px; }
	.about__grid, .contact__grid { grid-template-columns: 1fr; }
	.about__media { max-width: 460px; }
}
@media (max-width: 900px) {
	.main-nav { display: none; }
	.nav-toggle { display: flex; }
	.header-cta span { display: none; }
	.header-cta { padding: 14px; }
	.stats__inner { grid-template-columns: repeat(2, 1fr); }
	.stat:nth-child(3) { border-inline-start: 0; }
	.stat:nth-child(n+3) { margin-block-start: 32px; }
	.footer-grid { grid-template-columns: 1fr 1fr; }
	.footer-col--brand { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
	body { font-size: 16px; }
	.topbar__text { display: none; }
	.topbar__inner { justify-content: center; }
	.hero__rail { display: none; }
	.p-grid, .blog__grid, .why__grid, .feature-list, .lead__grid { grid-template-columns: 1fr; }
	.why__card { border-inline-start: 0 !important; }
	.lead__grid { max-width: 260px; }
	.stats__inner { grid-template-columns: 1fr 1fr; }
	.cta-band__inner { flex-direction: column; align-items: flex-start; }
	.cta-band__actions, .hero__actions, .project-hero__actions { width: 100%; }
	.cta-band__actions .btn, .hero__actions .btn { flex: 1; }
	.footer-grid { grid-template-columns: 1fr; }
	.footer-credit__inner { flex-direction: column; text-align: center; }
	.section-head { flex-direction: column; align-items: flex-start; }
}

/* =========================================================
   25. Motion / a11y
   ========================================================= */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
	.reveal { opacity: 1; transform: none; }
	.hero--has-image .hero__media { transform: none; animation: none; }
}

/* WordPress core helpers in content */
.entry-content .alignleft { float: inline-start; margin-inline-end: 1.5em; margin-block-end: 1em; }
.entry-content .alignright { float: inline-end; margin-inline-start: 1.5em; margin-block-end: 1em; }
.entry-content .aligncenter { display: block; margin-inline: auto; }
.entry-content .wp-caption-text { font-size: .85rem; color: var(--stone); text-align: center; }
.sticky, .bypostauthor { display: block; }
