/* ============================================================
   GADSBY GROUP V2 — main stylesheet
   Every selector is prefixed gg- so nothing leaks into the
   WordPress admin or future plugins.

   SAFE TO EDIT: the colour variables and font sizes below.
   Avoid renaming classes — the JavaScript targets them.
   ============================================================ */

:root {
	/* Palette */
	--gg-ink: #161410;            /* deep charcoal / near black */
	--gg-ink-2: #201d17;
	--gg-paper: #f6f2ea;          /* warm off-white */
	--gg-paper-alt: #efe9dd;      /* deeper warm tone */
	--gg-stone: #c8bca9;          /* stone */
	--gg-taupe: #9d927e;          /* taupe */
	--gg-bronze: #a8854b;         /* bronze / muted gold */
	--gg-green: #5d6b5b;          /* muted green */
	--gg-clay: #9c6b4f;           /* optional clay accent */
	--gg-text: #2b2823;
	--gg-text-muted: #6f685c;
	--gg-line: rgba(22, 20, 16, 0.14);
	--gg-line-light: rgba(246, 242, 234, 0.16);

	/* Type */
	--gg-serif: "Cormorant Garamond", Georgia, serif;
	--gg-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

	/* Rhythm */
	--gg-max: 1280px;
	--gg-pad: clamp(20px, 5vw, 72px);
	--gg-space: clamp(90px, 13vw, 180px);
	--gg-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

/* ---------- Base (scoped to theme wrappers) ---------- */
.gg-body {
	margin: 0;
	background: var(--gg-paper);
	color: var(--gg-text);
	font-family: var(--gg-sans);
	font-size: 16.5px;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

.gg-main { display: block; }

.gg-body h1, .gg-body h2, .gg-body h3 {
	font-family: var(--gg-serif);
	font-weight: 500;
	color: var(--gg-ink);
	margin: 0;
}
.gg-body p { margin: 0 0 1em; }
.gg-body a { color: inherit; }
.gg-body img { max-width: 100%; height: auto; display: block; }

html { scroll-behavior: smooth; scroll-padding-top: 96px; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
}

/* Skip link — visible on keyboard focus only */
.gg-skip-link {
	position: absolute;
	left: -9999px; top: 0;
	z-index: 1100;
	background: var(--gg-ink);
	color: var(--gg-paper);
	padding: 10px 18px;
	text-decoration: none;
}
.gg-skip-link:focus { left: 12px; top: 12px; }

/* Layout shell */
.gg-inner {
	position: relative;
	max-width: var(--gg-max);
	margin: 0 auto;
	padding: 0 var(--gg-pad);
}

/* ---------- Header / sticky nav ---------- */
.gg-header {
	position: fixed;
	top: 0; left: 0; right: 0;
	z-index: 900;
	background: transparent;
	transition: background 0.45s var(--gg-ease), box-shadow 0.45s var(--gg-ease);
}
.gg-header-inner {
	max-width: var(--gg-max);
	margin: 0 auto;
	padding: 24px var(--gg-pad);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	transition: padding 0.45s var(--gg-ease);
}
.gg-header-scrolled {
	background: rgba(246, 242, 234, 0.94);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	box-shadow: 0 1px 0 var(--gg-line);
}
.gg-header-scrolled .gg-header-inner { padding-top: 14px; padding-bottom: 14px; }

/* Wordmark */
.gg-logo {
	display: inline-flex;
	align-items: baseline;
	gap: 12px;
	text-decoration: none;
	color: var(--gg-paper);
	transition: color 0.45s var(--gg-ease);
}
.gg-header-scrolled .gg-logo { color: var(--gg-ink); }
.gg-logo-rule {
	align-self: center;
	width: 26px; height: 1px;
	background: var(--gg-bronze);
}
.gg-logo-text {
	font-family: var(--gg-serif);
	font-size: 24px;
	letter-spacing: 0.01em;
}
.gg-logo-text em { font-style: italic; color: var(--gg-bronze); }
.gg-logo-est {
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--gg-taupe);
}
.gg-logo-img img { max-height: 52px; width: auto; }

/* Nav */
.gg-nav-list {
	display: flex;
	gap: clamp(14px, 2.2vw, 32px);
	list-style: none;
	margin: 0;
	padding: 0;
}
.gg-nav-list a {
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--gg-paper);
	position: relative;
	padding: 6px 0;
	transition: color 0.45s var(--gg-ease);
}
.gg-header-scrolled .gg-nav-list a { color: var(--gg-ink); }
.gg-nav-list a::after {
	content: "";
	position: absolute;
	left: 0; bottom: 0;
	width: 100%; height: 1px;
	background: var(--gg-bronze);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.35s var(--gg-ease);
}
.gg-nav-list a:hover::after,
.gg-nav-list a:focus-visible::after { transform: scaleX(1); }

/* Hamburger */
.gg-menu-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 7px;
	width: 44px; height: 44px;
	padding: 10px;
	background: transparent;
	border: 0;
	cursor: pointer;
	z-index: 1010;
}
.gg-menu-toggle-line {
	display: block;
	height: 2px; width: 100%;
	background: var(--gg-paper);
	transition: transform 0.35s var(--gg-ease), background 0.35s var(--gg-ease);
}
.gg-header-scrolled .gg-menu-toggle-line { background: var(--gg-ink); }
.gg-menu-open .gg-menu-toggle-line { background: var(--gg-paper); }
.gg-menu-open .gg-menu-toggle-line:nth-child(1) { transform: translateY(4.5px) rotate(45deg); }
.gg-menu-open .gg-menu-toggle-line:nth-child(2) { transform: translateY(-4.5px) rotate(-45deg); }

/* Full-screen mobile menu */
.gg-mobile-menu {
	position: fixed;
	inset: 0;
	z-index: 1000;
	background: var(--gg-ink);
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 44px;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.45s var(--gg-ease), visibility 0.45s;
}
.gg-mobile-menu.gg-open { opacity: 1; visibility: visible; }
.gg-mobile-nav-list { flex-direction: column; align-items: center; gap: 6px; }
.gg-mobile-nav-list a {
	font-family: var(--gg-serif);
	font-size: clamp(30px, 7.5vw, 46px);
	font-weight: 500;
	text-transform: none;
	letter-spacing: 0;
	color: var(--gg-paper);
	opacity: 0;
	transform: translateY(18px);
	transition: opacity 0.5s var(--gg-ease), transform 0.5s var(--gg-ease);
}
.gg-mobile-menu.gg-open .gg-mobile-nav-list a { opacity: 1; transform: translateY(0); }
.gg-mobile-menu.gg-open .gg-mobile-nav-list li:nth-child(1) a { transition-delay: 0.08s; }
.gg-mobile-menu.gg-open .gg-mobile-nav-list li:nth-child(2) a { transition-delay: 0.14s; }
.gg-mobile-menu.gg-open .gg-mobile-nav-list li:nth-child(3) a { transition-delay: 0.20s; }
.gg-mobile-menu.gg-open .gg-mobile-nav-list li:nth-child(4) a { transition-delay: 0.26s; }
.gg-mobile-menu.gg-open .gg-mobile-nav-list li:nth-child(5) a { transition-delay: 0.32s; }
.gg-mobile-menu.gg-open .gg-mobile-nav-list li:nth-child(6) a { transition-delay: 0.38s; }
.gg-mobile-menu.gg-open .gg-mobile-nav-list li:nth-child(7) a { transition-delay: 0.44s; }
.gg-mobile-menu.gg-open .gg-mobile-nav-list li:nth-child(8) a { transition-delay: 0.50s; }
.gg-mobile-menu-foot {
	color: var(--gg-stone);
	font-size: 12px;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

/* ---------- Buttons ---------- */
.gg-btn {
	display: inline-block;
	padding: 16px 36px;
	font-family: var(--gg-sans);
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	text-decoration: none;
	border: 1px solid var(--gg-bronze);
	cursor: pointer;
	transition: background 0.35s var(--gg-ease), color 0.35s var(--gg-ease), transform 0.35s var(--gg-ease);
}
.gg-btn:hover { transform: translateY(-2px); }
.gg-btn-solid { background: var(--gg-bronze); color: var(--gg-ink); }
.gg-btn-solid:hover { background: #b9945a; }
.gg-btn-ghost { background: transparent; color: var(--gg-paper); }
.gg-btn-ghost:hover { background: rgba(168, 133, 75, 0.16); }

/* ---------- Hero ---------- */
.gg-hero {
	position: relative;
	min-height: 100vh;
	min-height: 100svh;
	display: flex;
	align-items: flex-end;
	background: var(--gg-ink);
	color: var(--gg-paper);
	overflow: hidden;
}

.gg-hero-media {
	position: absolute;
	inset: 0;
	/* Same frame as the video poster (bundled with the theme) — guarantees
	   a backdrop even if the video is hidden by prefers-reduced-motion. */
	background: var(--gg-ink) url("../media/hero-poster.jpg") center / cover no-repeat;
}
.gg-hero-img,
.gg-hero-video {
	position: absolute;
	inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
	/* Slow cinematic zoom is driven by GSAP; this is the resting state */
	transform: scale(1.02);
}

/* Ambient looping video frames */
.gg-videoframe {
	position: relative;
	overflow: hidden;
	background: var(--gg-ink-2);
	margin: 0;
}
.gg-videoframe video {
	width: 100%; height: 100%;
	object-fit: cover;
	display: block;
}
/* Small inset video box (residential section) — sits below the copy,
   never overlaps the text */
.gg-video-small {
	max-width: 420px;
	aspect-ratio: 16 / 9;
	margin-top: clamp(28px, 4vw, 44px);
	border: 1px solid var(--gg-line);
}
.gg-hero-shade {
	position: absolute;
	inset: 0;
	background:
		linear-gradient(to top, rgba(22, 20, 16, 0.92) 0%, rgba(22, 20, 16, 0.45) 45%, rgba(22, 20, 16, 0.55) 100%);
}
.gg-hero-lines {
	position: absolute;
	inset: 0;
	width: 100%; height: 100%;
	color: var(--gg-stone);
	pointer-events: none;
}
.gg-hero-contour { color: var(--gg-bronze); }

.gg-hero-content {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: var(--gg-max);
	margin: 0 auto;
	padding: 160px var(--gg-pad) 130px;
	box-sizing: border-box;
}
.gg-hero-kicker {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--gg-bronze);
	margin-bottom: 26px;
}
.gg-hero-title {
	font-size: clamp(42px, 7.2vw, 96px);
	line-height: 1.04;
	font-weight: 500;
	color: var(--gg-paper);
	margin-bottom: 30px;
	max-width: 18ch;
}
.gg-hero-line { display: block; overflow: hidden; padding-bottom: 0.08em; }
.gg-hero-line-inner { display: inline-block; will-change: transform; }
.gg-hero-accent { font-style: italic; color: var(--gg-bronze); }

.gg-hero-sub {
	max-width: 54ch;
	font-size: clamp(16px, 1.5vw, 18.5px);
	color: var(--gg-stone);
	margin-bottom: 38px;
}
.gg-hero-actions { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 44px; }
.gg-hero-meta {
	font-size: 12px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(200, 188, 169, 0.7);
	margin: 0;
}

/* Scroll indicator */
.gg-scroll-hint {
	position: absolute;
	right: var(--gg-pad);
	bottom: 40px;
	z-index: 2;
	display: flex;
	align-items: center;
	gap: 14px;
	color: var(--gg-stone);
}
.gg-scroll-hint-label {
	font-size: 10.5px;
	letter-spacing: 0.3em;
	text-transform: uppercase;
}
.gg-scroll-hint-line {
	display: block;
	width: 56px; height: 1px;
	background: var(--gg-bronze);
	transform-origin: left;
	animation: gg-hint 2.4s var(--gg-ease) infinite;
}
@keyframes gg-hint {
	0%   { transform: scaleX(0); opacity: 0; }
	40%  { transform: scaleX(1); opacity: 1; }
	100% { transform: scaleX(1) translateX(18px); opacity: 0; }
}

/* ---------- Sections ---------- */
.gg-section { position: relative; padding: var(--gg-space) 0; background: var(--gg-paper); }
.gg-section-alt { background: var(--gg-paper-alt); }
.gg-section-dark { background: var(--gg-ink); color: var(--gg-paper); }

.gg-section-head { max-width: 820px; margin-bottom: clamp(48px, 7vw, 88px); }

.gg-label {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.26em;
	text-transform: uppercase;
	color: var(--gg-green);
	margin: 0 0 22px;
	display: flex;
	align-items: center;
	gap: 10px;
}
.gg-label::before {
	content: "";
	width: 34px; height: 1px;
	background: var(--gg-bronze);
}
.gg-label-num {
	font-family: var(--gg-serif);
	font-size: 19px;
	font-weight: 500;
	letter-spacing: 0.05em;
	color: var(--gg-bronze);
}
.gg-label-light { color: var(--gg-stone); }

.gg-title {
	font-size: clamp(32px, 4.6vw, 60px);
	line-height: 1.12;
	margin-bottom: 26px;
	max-width: 22ch;
}
.gg-title em { font-style: italic; color: var(--gg-bronze); }
.gg-title-light { color: var(--gg-paper); }
/* Dark sections + approach: these headings carry deliberate <br> line
   breaks, so let them use the full column width and never re-wrap. */
.gg-section-dark .gg-title,
.gg-approach-head .gg-title { max-width: none; }

.gg-copy {
	font-size: clamp(16px, 1.45vw, 18px);
	color: var(--gg-text-muted);
	max-width: 58ch;
	margin-bottom: 0;
}
.gg-copy-light { color: var(--gg-stone); }

/* Image mask reveal wrapper (GSAP animates the clip) */
.gg-mask {
	display: block;
	overflow: hidden;
	background: linear-gradient(135deg, var(--gg-ink-2), #3a3328); /* premium fallback if an image fails */
}
.gg-mask img {
	width: 100%; height: 100%;
	object-fit: cover;
}

/* ---------- 01 Heritage ---------- */
.gg-heritage { overflow: hidden; }
/* Subtle old land-plan texture drawn with CSS only */
.gg-plan-texture {
	position: absolute;
	inset: 0;
	pointer-events: none;
	opacity: 0.5;
	background-image:
		linear-gradient(rgba(168, 133, 75, 0.05) 1px, transparent 1px),
		linear-gradient(90deg, rgba(168, 133, 75, 0.05) 1px, transparent 1px);
	background-size: 90px 90px;
	-webkit-mask-image: radial-gradient(ellipse at 80% 20%, black 0%, transparent 65%);
	mask-image: radial-gradient(ellipse at 80% 20%, black 0%, transparent 65%);
}

.gg-timeline { position: relative; padding-left: 42px; max-width: 760px; }
.gg-timeline-svg {
	position: absolute;
	left: 9px; top: 8px;
	width: 4px; height: calc(100% - 16px);
	color: var(--gg-bronze);
	overflow: visible;
}
.gg-timeline-items { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(40px, 6vw, 72px); }
.gg-tl-item { position: relative; }
.gg-tl-dot {
	position: absolute;
	left: -39px; top: 9px;
	width: 11px; height: 11px;
	border-radius: 50%;
	background: var(--gg-paper);
	border: 2px solid var(--gg-bronze);
}
.gg-tl-date {
	display: inline-block;
	font-family: var(--gg-serif);
	font-size: 22px;
	font-style: italic;
	color: var(--gg-bronze);
	margin-bottom: 6px;
}
.gg-tl-title { font-size: clamp(22px, 2.4vw, 30px); margin-bottom: 10px; }
.gg-tl-copy { color: var(--gg-text-muted); margin: 0; max-width: 56ch; }

/* ---------- 02 What we do ---------- */
.gg-do-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
	gap: 24px;
}
.gg-do-card {
	display: flex;
	flex-direction: column;
	text-decoration: none;
	background: var(--gg-paper);
	border: 1px solid var(--gg-line);
	transition: transform 0.5s var(--gg-ease), box-shadow 0.5s var(--gg-ease), border-color 0.5s var(--gg-ease);
}
.gg-do-card:hover {
	transform: translateY(-8px);
	border-color: var(--gg-bronze);
	box-shadow: 0 28px 52px -26px rgba(22, 20, 16, 0.35);
}
.gg-do-media { aspect-ratio: 4 / 3; }
.gg-do-media img { transition: transform 0.9s var(--gg-ease); }
.gg-do-card:hover .gg-do-media img { transform: scale(1.06); }
.gg-do-body { position: relative; padding: 26px 26px 30px; }
.gg-do-index {
	position: absolute;
	top: -16px; right: 26px;
	font-family: var(--gg-serif);
	font-style: italic;
	font-size: 20px;
	color: var(--gg-bronze);
	background: var(--gg-paper);
	padding: 2px 10px;
	border: 1px solid var(--gg-line);
}
.gg-do-title { font-size: 23px; margin-bottom: 8px; }
.gg-do-copy { font-size: 14.5px; color: var(--gg-text-muted); margin-bottom: 16px; }
.gg-do-arrow {
	font-size: 18px;
	color: var(--gg-bronze);
	display: inline-block;
	transition: transform 0.4s var(--gg-ease);
}
.gg-do-card:hover .gg-do-arrow { transform: translateX(8px); }

/* ---------- Editorial split blocks (03 / 04 / 05) ---------- */
.gg-editorial {
	display: grid;
	grid-template-columns: 1fr 1.1fr;
	gap: clamp(40px, 6vw, 96px);
	align-items: center;
}
.gg-editorial-rev .gg-editorial-text { order: 2; }
.gg-editorial-rev .gg-editorial-media { order: 1; }
.gg-editorial-media { margin: 0; aspect-ratio: 4 / 3; }

/* Sector list — editorial numbered rows */
.gg-sector-list {
	list-style: none;
	margin: clamp(48px, 7vw, 88px) 0 0;
	padding: 0;
	border-top: 1px solid var(--gg-line);
}
.gg-sector {
	display: grid;
	grid-template-columns: 70px 240px 1fr;
	gap: 24px;
	align-items: baseline;
	padding: 26px 8px;
	border-bottom: 1px solid var(--gg-line);
	transition: background 0.4s var(--gg-ease), padding-left 0.4s var(--gg-ease);
}
.gg-sector:hover { background: rgba(168, 133, 75, 0.06); padding-left: 20px; }
.gg-sector-num {
	font-family: var(--gg-serif);
	font-style: italic;
	font-size: 19px;
	color: var(--gg-bronze);
}
.gg-sector-name {
	font-family: var(--gg-serif);
	font-size: clamp(21px, 2.2vw, 27px);
	color: var(--gg-ink);
}
.gg-sector-note { font-size: 15px; color: var(--gg-text-muted); }

/* ---------- 05 land map + features ---------- */
.gg-mapwrap {
	background: var(--gg-ink);
	padding: clamp(20px, 3vw, 40px);
	aspect-ratio: auto;
}
.gg-landmap { display: block; width: 100%; height: auto; }
.gg-map-contours path { stroke: rgba(200, 188, 169, 0.35); }
.gg-parcel { stroke: var(--gg-bronze); stroke-dasharray: 6 5; }
.gg-map-road { stroke: rgba(93, 107, 91, 0.9); }
.gg-map-marker circle { stroke: var(--gg-bronze); }

.gg-feature-list {
	list-style: none;
	margin: 38px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px 28px;
}
.gg-feature {
	position: relative;
	padding: 12px 0 12px 26px;
	border-bottom: 1px solid var(--gg-line);
	font-weight: 600;
	font-size: 15px;
}
.gg-feature::before {
	content: "";
	position: absolute;
	left: 0; top: 50%;
	width: 12px; height: 1.5px;
	background: var(--gg-bronze);
	transition: width 0.35s var(--gg-ease);
}
.gg-feature:hover::before { width: 18px; }

/* ---------- 06 Scale / numbers — clean dark panel ---------- */
.gg-scale { overflow: hidden; }
.gg-scale-head { margin-bottom: clamp(56px, 8vw, 110px); }

/* One hairline above the row; numbers and heading share the same
   left edge so everything lines up exactly. */
.gg-stats {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
	gap: clamp(36px, 5vw, 56px) clamp(36px, 5vw, 72px);
	margin: 0;
	padding-top: clamp(36px, 5vw, 56px);
	border-top: 1px solid var(--gg-line-light);
}
/* dt comes before dd in the DOM for accessibility; visually number-first */
.gg-stat {
	display: flex;
	flex-direction: column-reverse;
	justify-content: flex-end;
}
.gg-stat-num, .gg-stat-word {
	font-family: var(--gg-serif);
	font-size: clamp(52px, 5.5vw, 88px);
	font-weight: 500;
	line-height: 1;
	color: var(--gg-paper);
	margin: 0 0 16px;
	display: block;
	font-variant-numeric: lining-nums;
}
.gg-stat-word { font-size: clamp(30px, 3vw, 44px); font-style: italic; color: var(--gg-bronze); }
.gg-stat-label {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--gg-taupe);
	line-height: 1.5;
	max-width: 24ch;
}

/* ---------- 07 Approach — clean editorial list ---------- */
.gg-approach {
	display: grid;
	grid-template-columns: 1fr 1.05fr;
	gap: clamp(40px, 6vw, 96px);
	align-items: start;
}
/* Restrained pinned effect — pure CSS sticky, robust on shared hosting */
.gg-approach-head { position: sticky; top: 130px; }
.gg-approach-media {
	margin: clamp(28px, 4vw, 44px) 0 0;
	aspect-ratio: 4 / 3;
	max-width: 460px;
}

.gg-pillars {
	list-style: none;
	margin: 0;
	padding: 0;
}
.gg-pillar {
	display: grid;
	grid-template-columns: 64px 1fr;
	gap: 18px;
	align-items: baseline;
	padding: clamp(22px, 3vw, 30px) 0;
	border-top: 1px solid var(--gg-line);
}
.gg-pillar:last-child { border-bottom: 1px solid var(--gg-line); }
.gg-pillar-index {
	font-family: var(--gg-serif);
	font-style: italic;
	font-size: 19px;
	color: var(--gg-bronze);
}
.gg-pillar-title {
	font-size: clamp(20px, 2vw, 24px);
	color: var(--gg-ink);
	margin-bottom: 6px;
	transition: color 0.35s var(--gg-ease);
}
.gg-pillar:hover .gg-pillar-title { color: var(--gg-bronze); }
.gg-pillar-copy { font-size: 14.5px; color: var(--gg-text-muted); margin: 0; }

/* ---------- 08 Contact ---------- */
.gg-contact {
	display: grid;
	grid-template-columns: 1fr 1.1fr;
	gap: clamp(40px, 6vw, 96px);
	align-items: start;
}
.gg-address {
	font-style: normal;
	margin-top: 36px;
	padding-top: 28px;
	border-top: 1px solid var(--gg-line);
	color: var(--gg-text-muted);
}
.gg-address a {
	color: var(--gg-ink);
	font-weight: 600;
	text-decoration: none;
	border-bottom: 1px solid var(--gg-bronze);
	transition: color 0.3s var(--gg-ease);
}
.gg-address a:hover { color: var(--gg-bronze); }

.gg-form {
	background: var(--gg-paper);
	border: 1px solid var(--gg-line);
	padding: clamp(28px, 4vw, 52px);
}
.gg-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.gg-field { margin-bottom: 20px; }
.gg-field label {
	display: block;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--gg-green);
	margin-bottom: 8px;
}
.gg-form input,
.gg-form select,
.gg-form textarea {
	width: 100%;
	box-sizing: border-box;
	background: transparent;
	border: 1px solid var(--gg-line);
	border-radius: 0;
	padding: 14px;
	font-family: var(--gg-sans);
	font-size: 15.5px;
	color: var(--gg-text);
	transition: border-color 0.3s var(--gg-ease), box-shadow 0.3s var(--gg-ease);
}
.gg-form input:focus,
.gg-form select:focus,
.gg-form textarea:focus {
	outline: none;
	border-color: var(--gg-bronze);
	box-shadow: 0 0 0 3px rgba(168, 133, 75, 0.15);
}
.gg-form textarea { resize: vertical; }
.gg-form-submit { width: 100%; }
.gg-form-status {
	margin: 14px 0 0;
	font-size: 14px;
	color: var(--gg-green);
	min-height: 1.4em;
}

/* ---------- Footer ---------- */
.gg-footer { background: var(--gg-ink); color: var(--gg-stone); }
.gg-footer-inner {
	max-width: var(--gg-max);
	margin: 0 auto;
	padding: clamp(56px, 8vw, 100px) var(--gg-pad) 44px;
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr;
	gap: 48px;
}
.gg-footer-logo {
	font-family: var(--gg-serif);
	font-size: 28px;
	color: var(--gg-paper);
	margin-bottom: 12px;
}
.gg-footer-logo em { font-style: italic; color: var(--gg-bronze); }
.gg-footer-heritage {
	font-size: 12.5px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--gg-bronze);
}
.gg-footer-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.gg-footer-list a,
.gg-footer-contact a {
	color: var(--gg-stone);
	text-decoration: none;
	transition: color 0.3s var(--gg-ease);
}
.gg-footer-list a:hover,
.gg-footer-contact a:hover { color: var(--gg-bronze); }
.gg-footer-contact { font-size: 15px; line-height: 1.7; }
.gg-footer-bottom { border-top: 1px solid var(--gg-line-light); }
.gg-footer-bottom p {
	max-width: var(--gg-max);
	margin: 0 auto;
	padding: 22px var(--gg-pad);
	font-size: 13px;
	color: rgba(200, 188, 169, 0.6);
}

/* ---------- Inner pages ---------- */
.gg-inner-page { padding: 170px 0 100px; }


/* ---------- 02 The Group — structure chart ---------- */
.gg-group { text-align: left; }
.gg-group-parent {
	display: table;
	margin: 0 auto;
	font-family: var(--gg-serif);
	font-size: 22px;
	color: var(--gg-ink);
	border: 1px solid var(--gg-bronze);
	padding: 10px 28px;
}
.gg-group-lines {
	display: block;
	width: 100%;
	height: 80px;
	color: var(--gg-bronze);
}
.gg-group-lines path { stroke: currentColor; }
.gg-group-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 22px;
}
.gg-company {
	background: var(--gg-paper);
	border: 1px solid var(--gg-line);
	padding: 28px 26px 30px;
	transition: transform 0.45s var(--gg-ease), border-color 0.45s var(--gg-ease), box-shadow 0.45s var(--gg-ease);
}
.gg-company:hover {
	transform: translateY(-6px);
	border-color: var(--gg-bronze);
	box-shadow: 0 24px 44px -24px rgba(22, 20, 16, 0.3);
}
.gg-company-est {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--gg-green);
	margin-bottom: 14px;
}
.gg-company-name {
	font-size: 21px;
	margin-bottom: 10px;
	color: var(--gg-ink);
}
.gg-company-role { font-size: 14px; color: var(--gg-text-muted); margin: 0; }

/* ---------- 08 Projects ---------- */
.gg-project-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(28px, 4vw, 56px);
}
.gg-project { position: relative; }
.gg-project-media {
	margin: 0 0 22px;
	aspect-ratio: 16 / 10;
	position: relative;
}
.gg-project-media img { transition: transform 0.9s var(--gg-ease); }
.gg-project:hover .gg-project-media img { transform: scale(1.05); }
.gg-project-media::after {
	content: "";
	position: absolute;
	inset: 0;
	border: 1px solid rgba(168, 133, 75, 0);
	transition: border-color 0.5s var(--gg-ease), inset 0.5s var(--gg-ease);
	pointer-events: none;
}
.gg-project:hover .gg-project-media::after {
	border-color: rgba(168, 133, 75, 0.8);
	inset: 12px;
}
.gg-project-loc {
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--gg-green);
	margin-bottom: 8px;
}
.gg-project-title { font-size: clamp(23px, 2.4vw, 30px); margin-bottom: 8px; }
.gg-project-copy { font-size: 15px; color: var(--gg-text-muted); margin-bottom: 12px; }
.gg-project-link {
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--gg-bronze);
	opacity: 0;
	transform: translateY(6px);
	display: inline-block;
	transition: opacity 0.4s var(--gg-ease), transform 0.4s var(--gg-ease);
}
.gg-project:hover .gg-project-link,
.gg-project:focus-within .gg-project-link { opacity: 1; transform: translateY(0); }
@media (hover: none) {
	.gg-project-link { opacity: 1; transform: none; }
}

/* ---------- 10 Contact — dark variant ---------- */
.gg-section-dark .gg-address { border-top-color: var(--gg-line-light); color: var(--gg-stone); }
.gg-section-dark .gg-address a { color: var(--gg-paper); }
.gg-section-dark .gg-address a:hover { color: var(--gg-bronze); }
.gg-contact-map {
	display: block;
	width: 100%;
	max-width: 360px;
	height: auto;
	margin-top: clamp(28px, 4vw, 44px);
	color: var(--gg-stone);
}
.gg-contact-map path { stroke: currentColor; }
.gg-contact-parcel { color: var(--gg-bronze); stroke-dasharray: 6 5; }
.gg-contact-marker circle { stroke: var(--gg-bronze); }
.gg-section-dark .gg-form {
	background: rgba(246, 242, 234, 0.03);
	border-color: var(--gg-line-light);
}
.gg-section-dark .gg-field label { color: var(--gg-stone); }
.gg-section-dark .gg-form input,
.gg-section-dark .gg-form select,
.gg-section-dark .gg-form textarea {
	border-color: var(--gg-line-light);
	color: var(--gg-paper);
}
.gg-section-dark .gg-form select option { color: var(--gg-text); }
.gg-section-dark .gg-form-status { color: var(--gg-stone); }

/* ---------- Responsive ---------- */
@media (max-width: 1020px) {
	.gg-editorial,
	.gg-approach,
	.gg-contact { grid-template-columns: 1fr; }
	.gg-editorial-rev .gg-editorial-text { order: 1; }
	.gg-editorial-rev .gg-editorial-media { order: 2; }
	.gg-approach-head { position: static; }
	.gg-project-grid { grid-template-columns: 1fr; }
	.gg-group-grid { grid-template-columns: 1fr 1fr; }
	.gg-group-lines { display: none; }
	.gg-footer-inner { grid-template-columns: 1fr 1fr; }
	.gg-sector { grid-template-columns: 50px 1fr; }
	.gg-sector-note { grid-column: 2; }
}

@media (max-width: 767px) {
	.gg-nav { display: none; }
	.gg-menu-toggle { display: flex; }
	.gg-form-row { grid-template-columns: 1fr; gap: 0; }
	.gg-feature-list { grid-template-columns: 1fr; }
	.gg-group-grid { grid-template-columns: 1fr; }
	.gg-footer-inner { grid-template-columns: 1fr; gap: 36px; }
	.gg-scroll-hint { display: none; }
	.gg-hero-title { max-width: none; }
	.gg-stats { border-left: 0; }
	.gg-stat { border-right: 0; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.gg-body *,
	.gg-body *::before,
	.gg-body *::after {
		animation-duration: 0.001s !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001s !important;
	}
	.gg-scroll-hint-line { animation: none; }
	.gg-hero-video,
	.gg-ambient-video { display: none; } /* poster/background image shows instead */
}
